From f9e15f2159928974af1a2ec539e20f17f94aab4d Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 17 Oct 2022 09:28:48 -0700 Subject: [PATCH] feat(all): auto-regenerate discovery clients (#1712) Co-authored-by: Cody Oss <6331106+codyoss@users.noreply.github.com --- alertcenter/v1beta1/alertcenter-api.json | 76 +- alertcenter/v1beta1/alertcenter-gen.go | 119 + .../v1alpha/analyticsadmin-api.json | 368 +- analyticsadmin/v1alpha/analyticsadmin-gen.go | 1166 + api-list.json | 21 +- apigee/v1/apigee-api.json | 4 +- apigee/v1/apigee-gen.go | 9 +- apigeeregistry/v1/apigeeregistry-api.json | 6 +- apigeeregistry/v1/apigeeregistry-gen.go | 6 +- artifactregistry/v1/artifactregistry-api.json | 4 +- artifactregistry/v1/artifactregistry-gen.go | 4 +- .../v1beta2/artifactregistry-api.json | 4 +- .../v1beta2/artifactregistry-gen.go | 4 +- assuredworkloads/v1/assuredworkloads-api.json | 11 +- assuredworkloads/v1/assuredworkloads-gen.go | 12 +- .../v1beta1/assuredworkloads-api.json | 11 +- .../v1beta1/assuredworkloads-gen.go | 12 +- beyondcorp/v1/beyondcorp-api.json | 46 +- beyondcorp/v1/beyondcorp-gen.go | 52 + beyondcorp/v1alpha/beyondcorp-api.json | 439 +- beyondcorp/v1alpha/beyondcorp-gen.go | 1607 + bigquery/v2/bigquery-api.json | 11 +- bigquery/v2/bigquery-gen.go | 16 +- .../v1/bigquerydatatransfer-api.json | 18 +- .../v1/bigquerydatatransfer-gen.go | 92 +- .../v1/certificatemanager-api.json | 248 +- .../v1/certificatemanager-gen.go | 865 + chat/v1/chat-api.json | 85 +- chat/v1/chat-gen.go | 286 +- chromemanagement/v1/chromemanagement-api.json | 60 +- chromemanagement/v1/chromemanagement-gen.go | 64 + chromepolicy/v1/chromepolicy-api.json | 478 +- chromepolicy/v1/chromepolicy-gen.go | 1456 +- civicinfo/v2/civicinfo-api.json | 4 +- civicinfo/v2/civicinfo-gen.go | 4 +- cloudasset/v1/cloudasset-api.json | 10 +- cloudasset/v1/cloudasset-gen.go | 32 +- cloudbuild/v1/cloudbuild-api.json | 115 +- cloudbuild/v1/cloudbuild-gen.go | 182 + cloudbuild/v1alpha1/cloudbuild-api.json | 115 +- cloudbuild/v1alpha1/cloudbuild-gen.go | 182 + cloudbuild/v1alpha2/cloudbuild-api.json | 115 +- cloudbuild/v1alpha2/cloudbuild-gen.go | 182 + cloudbuild/v1beta1/cloudbuild-api.json | 115 +- cloudbuild/v1beta1/cloudbuild-gen.go | 182 + cloudidentity/v1beta1/cloudidentity-api.json | 714 +- cloudidentity/v1beta1/cloudidentity-gen.go | 2888 +- cloudiot/v1/cloudiot-api.json | 4 +- cloudiot/v1/cloudiot-gen.go | 11 +- .../v3/cloudresourcemanager-api.json | 6 +- .../v3/cloudresourcemanager-gen.go | 10 +- cloudsearch/v1/cloudsearch-api.json | 54 +- cloudsearch/v1/cloudsearch-gen.go | 99 +- cloudtasks/v2beta2/cloudtasks-api.json | 36 +- cloudtasks/v2beta2/cloudtasks-gen.go | 170 +- compute/v0.alpha/compute-api.json | 31 +- compute/v0.alpha/compute-gen.go | 56 +- compute/v0.beta/compute-api.json | 41 +- compute/v0.beta/compute-gen.go | 40 + compute/v1/compute-api.json | 27 +- compute/v1/compute-gen.go | 31 + container/v1/container-api.json | 66 +- container/v1/container-gen.go | 93 +- container/v1beta1/container-api.json | 18 +- container/v1beta1/container-gen.go | 14 +- .../v1/containeranalysis-api.json | 153 +- containeranalysis/v1/containeranalysis-gen.go | 222 +- .../v1alpha1/containeranalysis-api.json | 123 +- .../v1alpha1/containeranalysis-gen.go | 203 +- .../v1beta1/containeranalysis-api.json | 151 +- .../v1beta1/containeranalysis-gen.go | 220 +- contentwarehouse/v1/contentwarehouse-api.json | 124512 ++++++++++++ contentwarehouse/v1/contentwarehouse-gen.go | 157421 +++++++++++++++ datacatalog/v1/datacatalog-api.json | 4 +- datacatalog/v1/datacatalog-gen.go | 6 +- dataproc/v1/dataproc-api.json | 130 +- dataproc/v1/dataproc-gen.go | 689 +- dlp/v2/dlp-api.json | 7 +- dlp/v2/dlp-gen.go | 20 +- docs/v1/docs-api.json | 202 +- docs/v1/docs-gen.go | 349 +- .../v2/doubleclicksearch-api.json | 113 +- doubleclicksearch/v2/doubleclicksearch-gen.go | 279 +- drive/v2/drive-api.json | 6 +- drive/v2/drive-gen.go | 2 - drive/v3/drive-api.json | 6 +- drive/v3/drive-gen.go | 1 + firebase/v1beta1/firebase-api.json | 18 +- firebase/v1beta1/firebase-gen.go | 33 +- .../v1beta/firebasestorage-api.json | 12 +- firebasestorage/v1beta/firebasestorage-gen.go | 13 +- gkehub/v1alpha/gkehub-api.json | 10 +- gkehub/v1alpha/gkehub-gen.go | 10 +- gkehub/v1beta/gkehub-api.json | 10 +- gkehub/v1beta/gkehub-gen.go | 10 +- healthcare/v1/healthcare-api.json | 30 +- healthcare/v1/healthcare-gen.go | 67 +- healthcare/v1beta1/healthcare-api.json | 49 +- healthcare/v1beta1/healthcare-gen.go | 110 +- logging/v2/logging-api.json | 12 +- logging/v2/logging-gen.go | 40 +- metastore/v1alpha/metastore-api.json | 10 +- metastore/v1alpha/metastore-gen.go | 20 +- metastore/v1beta/metastore-api.json | 10 +- metastore/v1beta/metastore-gen.go | 20 +- monitoring/v1/monitoring-api.json | 6 +- monitoring/v1/monitoring-gen.go | 7 +- monitoring/v3/monitoring-api.json | 38 +- monitoring/v3/monitoring-gen.go | 92 +- .../v1/mybusinessplaceactions-api.json | 14 +- .../v1/mybusinessplaceactions-gen.go | 4 + notebooks/v1/notebooks-api.json | 146 +- notebooks/v1/notebooks-gen.go | 581 + .../v1/paymentsresellersubscription-api.json | 15 +- .../v1/paymentsresellersubscription-gen.go | 13 +- playintegrity/v1/playintegrity-api.json | 33 +- playintegrity/v1/playintegrity-gen.go | 59 +- .../v1alpha1/prod_tt_sasportal-api.json | 236 +- .../v1alpha1/prod_tt_sasportal-gen.go | 239 +- retail/v2/retail-api.json | 38 +- retail/v2/retail-gen.go | 42 +- retail/v2alpha/retail-api.json | 46 +- retail/v2alpha/retail-gen.go | 54 +- retail/v2beta/retail-api.json | 46 +- retail/v2beta/retail-gen.go | 54 +- run/v1/run-api.json | 4 +- run/v1/run-gen.go | 4 +- run/v2/run-api.json | 4 +- run/v2/run-gen.go | 5 +- sasportal/v1alpha1/sasportal-api.json | 236 +- sasportal/v1alpha1/sasportal-gen.go | 239 +- sheets/v4/sheets-api.json | 4 +- sheets/v4/sheets-gen.go | 10 +- .../v1/smartdevicemanagement-api.json | 26 +- .../v1/smartdevicemanagement-gen.go | 29 +- spanner/v1/spanner-api.json | 32 +- spanner/v1/spanner-gen.go | 51 +- sqladmin/v1/sqladmin-api.json | 54 +- sqladmin/v1/sqladmin-gen.go | 46 +- sqladmin/v1beta4/sqladmin-api.json | 54 +- sqladmin/v1beta4/sqladmin-gen.go | 46 +- tagmanager/v2/tagmanager-api.json | 612 +- tagmanager/v2/tagmanager-gen.go | 8425 +- testing/v1/testing-api.json | 8 +- testing/v1/testing-gen.go | 2 + verifiedaccess/v2/verifiedaccess-api.json | 16 +- verifiedaccess/v2/verifiedaccess-gen.go | 32 +- vmmigration/v1/vmmigration-api.json | 4 +- vmmigration/v1/vmmigration-gen.go | 2 +- vmmigration/v1alpha1/vmmigration-api.json | 4 +- vmmigration/v1alpha1/vmmigration-gen.go | 2 +- 151 files changed, 304618 insertions(+), 5706 deletions(-) create mode 100644 contentwarehouse/v1/contentwarehouse-api.json create mode 100644 contentwarehouse/v1/contentwarehouse-gen.go diff --git a/alertcenter/v1beta1/alertcenter-api.json b/alertcenter/v1beta1/alertcenter-api.json index 51b9a5c89dd..0ae1b2b8046 100644 --- a/alertcenter/v1beta1/alertcenter-api.json +++ b/alertcenter/v1beta1/alertcenter-api.json @@ -423,9 +423,36 @@ } } }, - "revision": "20220718", + "revision": "20221010", "rootUrl": "https://alertcenter.googleapis.com/", "schemas": { + "AbuseDetected": { + "description": "A generic alert for abusive user activity occurring with a customer.", + "id": "AbuseDetected", + "properties": { + "additionalDetails": { + "$ref": "EntityList", + "description": "List of abusive users/entities to be displayed in a table in the alert." + }, + "alertDescriptor": { + "description": "Displayed after Customer abuse detected - {alert_descriptor}. If missing, alert name will be displayed as Customer abuse detected.", + "type": "string" + }, + "product": { + "description": "Product that the abuse is originating from.", + "type": "string" + }, + "subAlertId": { + "description": "Unique identifier of each alert that is onboarded.", + "type": "string" + }, + "summary": { + "description": "Customizable text to display in the summary section of the alert. Will be parsed as HTML to allow new paragraphs and hyperlinks.", + "type": "string" + } + }, + "type": "object" + }, "AccountSuspensionDetails": { "description": "Details about why an account is receiving an account suspension warning.", "id": "AccountSuspensionDetails", @@ -1111,6 +1138,53 @@ "properties": {}, "type": "object" }, + "Entity": { + "description": "Individual entity affected by, or related to, an alert.", + "id": "Entity", + "properties": { + "link": { + "description": "Link to a Security Investigation Tool search based on this entity, if available.", + "type": "string" + }, + "name": { + "description": "Human-readable name of this entity, such as an email address, file ID, or device name.", + "type": "string" + }, + "values": { + "description": "Extra values beyond name. The order of values should align with headers in EntityList.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "EntityList": { + "description": "EntityList stores entities in a format that can be translated to a table in the Alert Center UI.", + "id": "EntityList", + "properties": { + "entities": { + "description": "List of entities affected by the alert.", + "items": { + "$ref": "Entity" + }, + "type": "array" + }, + "headers": { + "description": "Headers of the values in entities. If no value is defined in Entity, this field should be empty.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name of the key detail used to display this entity list.", + "type": "string" + } + }, + "type": "object" + }, "GmailMessageInfo": { "description": "Details of a message in phishing spike alert.", "id": "GmailMessageInfo", diff --git a/alertcenter/v1beta1/alertcenter-gen.go b/alertcenter/v1beta1/alertcenter-gen.go index b10a5952e31..c673a0b5115 100644 --- a/alertcenter/v1beta1/alertcenter-gen.go +++ b/alertcenter/v1beta1/alertcenter-gen.go @@ -169,6 +169,52 @@ type V1beta1Service struct { s *Service } +// AbuseDetected: A generic alert for abusive user activity occurring +// with a customer. +type AbuseDetected struct { + // AdditionalDetails: List of abusive users/entities to be displayed in + // a table in the alert. + AdditionalDetails *EntityList `json:"additionalDetails,omitempty"` + + // AlertDescriptor: Displayed after Customer abuse detected - + // {alert_descriptor}. If missing, alert name will be displayed as + // Customer abuse detected. + AlertDescriptor string `json:"alertDescriptor,omitempty"` + + // Product: Product that the abuse is originating from. + Product string `json:"product,omitempty"` + + // SubAlertId: Unique identifier of each alert that is onboarded. + SubAlertId string `json:"subAlertId,omitempty"` + + // Summary: Customizable text to display in the summary section of the + // alert. Will be parsed as HTML to allow new paragraphs and hyperlinks. + Summary string `json:"summary,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AdditionalDetails") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AdditionalDetails") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AbuseDetected) MarshalJSON() ([]byte, error) { + type NoMethod AbuseDetected + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // AccountSuspensionDetails: Details about why an account is receiving // an account suspension warning. type AccountSuspensionDetails struct { @@ -1251,6 +1297,79 @@ type Empty struct { googleapi.ServerResponse `json:"-"` } +// Entity: Individual entity affected by, or related to, an alert. +type Entity struct { + // Link: Link to a Security Investigation Tool search based on this + // entity, if available. + Link string `json:"link,omitempty"` + + // Name: Human-readable name of this entity, such as an email address, + // file ID, or device name. + Name string `json:"name,omitempty"` + + // Values: Extra values beyond name. The order of values should align + // with headers in EntityList. + Values []string `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Link") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Link") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Entity) MarshalJSON() ([]byte, error) { + type NoMethod Entity + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// EntityList: EntityList stores entities in a format that can be +// translated to a table in the Alert Center UI. +type EntityList struct { + // Entities: List of entities affected by the alert. + Entities []*Entity `json:"entities,omitempty"` + + // Headers: Headers of the values in entities. If no value is defined in + // Entity, this field should be empty. + Headers []string `json:"headers,omitempty"` + + // Name: Name of the key detail used to display this entity list. + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Entities") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Entities") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *EntityList) MarshalJSON() ([]byte, error) { + type NoMethod EntityList + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // GmailMessageInfo: Details of a message in phishing spike alert. type GmailMessageInfo struct { // AttachmentsSha256Hash: The `SHA256` hash of email's attachment and diff --git a/analyticsadmin/v1alpha/analyticsadmin-api.json b/analyticsadmin/v1alpha/analyticsadmin-api.json index 0e1528bb6c4..d295e2eb830 100644 --- a/analyticsadmin/v1alpha/analyticsadmin-api.json +++ b/analyticsadmin/v1alpha/analyticsadmin-api.json @@ -2501,6 +2501,160 @@ } } }, + "searchAds360Links": { + "methods": { + "create": { + "description": "Creates a SearchAds360Link.", + "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links", + "httpMethod": "POST", + "id": "analyticsadmin.properties.searchAds360Links.create", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. Example format: properties/1234", + "location": "path", + "pattern": "^properties/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+parent}/searchAds360Links", + "request": { + "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + }, + "response": { + "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + }, + "scopes": [ + "https://www.googleapis.com/auth/analytics.edit" + ] + }, + "delete": { + "description": "Deletes a SearchAds360Link on a property.", + "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links/{searchAds360LinksId}", + "httpMethod": "DELETE", + "id": "analyticsadmin.properties.searchAds360Links.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the SearchAds360Link to delete. Example format: properties/1234/SearchAds360Links/5678", + "location": "path", + "pattern": "^properties/[^/]+/searchAds360Links/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+name}", + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "scopes": [ + "https://www.googleapis.com/auth/analytics.edit" + ] + }, + "get": { + "description": "Look up a single SearchAds360Link", + "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links/{searchAds360LinksId}", + "httpMethod": "GET", + "id": "analyticsadmin.properties.searchAds360Links.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the SearchAds360Link to get. Example format: properties/1234/SearchAds360Link/5678", + "location": "path", + "pattern": "^properties/[^/]+/searchAds360Links/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+name}", + "response": { + "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + }, + "scopes": [ + "https://www.googleapis.com/auth/analytics.edit", + "https://www.googleapis.com/auth/analytics.readonly" + ] + }, + "list": { + "description": "Lists all SearchAds360Links on a property.", + "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links", + "httpMethod": "GET", + "id": "analyticsadmin.properties.searchAds360Links.list", + "parameterOrder": [ + "parent" + ], + "parameters": { + "pageSize": { + "description": "The maximum number of resources to return. If unspecified, at most 50 resources will be returned. The maximum value is 200 (higher values will be coerced to the maximum).", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "A page token, received from a previous `ListSearchAds360Links` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSearchAds360Links` must match the call that provided the page token.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. Example format: properties/1234", + "location": "path", + "pattern": "^properties/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+parent}/searchAds360Links", + "response": { + "$ref": "GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/analytics.edit", + "https://www.googleapis.com/auth/analytics.readonly" + ] + }, + "patch": { + "description": "Updates a SearchAds360Link on a property.", + "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links/{searchAds360LinksId}", + "httpMethod": "PATCH", + "id": "analyticsadmin.properties.searchAds360Links.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Output only. The resource name for this SearchAds360Link resource. Format: properties/{propertyId}/searchAds360Links/{linkId} Note: linkId is not the Search Ads 360 advertiser ID", + "location": "path", + "pattern": "^properties/[^/]+/searchAds360Links/[^/]+$", + "required": true, + "type": "string" + }, + "updateMask": { + "description": "Required. The list of fields to be updated. Omitted fields will not be updated. To replace the entire entity, use one path with the string \"*\" to match all fields.", + "format": "google-fieldmask", + "location": "query", + "type": "string" + } + }, + "path": "v1alpha/{+name}", + "request": { + "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + }, + "response": { + "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + }, + "scopes": [ + "https://www.googleapis.com/auth/analytics.edit" + ] + } + } + }, "userLinks": { "methods": { "audit": { @@ -2802,7 +2956,7 @@ } } }, - "revision": "20220904", + "revision": "20221013", "rootUrl": "https://analyticsadmin.googleapis.com/", "schemas": { "GoogleAnalyticsAdminV1alphaAccessBetweenFilter": { @@ -3997,6 +4151,10 @@ "$ref": "GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal", "description": "A snapshot of a DisplayVideo360AdvertiserLinkProposal resource in change history." }, + "expandedDataSet": { + "$ref": "GoogleAnalyticsAdminV1alphaExpandedDataSet", + "description": "A snapshot of an ExpandedDataSet resource in change history." + }, "firebaseLink": { "$ref": "GoogleAnalyticsAdminV1alphaFirebaseLink", "description": "A snapshot of a FirebaseLink resource in change history." @@ -4016,6 +4174,10 @@ "property": { "$ref": "GoogleAnalyticsAdminV1alphaProperty", "description": "A snapshot of a Property resource in change history." + }, + "searchAds360Link": { + "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link", + "description": "A snapshot of a SearchAds360Link resource in change history." } }, "type": "object" @@ -4506,6 +4668,149 @@ }, "type": "object" }, + "GoogleAnalyticsAdminV1alphaExpandedDataSet": { + "description": "A resource message representing a GA4 ExpandedDataSet.", + "id": "GoogleAnalyticsAdminV1alphaExpandedDataSet", + "properties": { + "dataCollectionStartTime": { + "description": "Output only. Time when expanded data set began (or will begin) collecing data.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "description": { + "description": "Optional. The description of the ExpandedDataSet. Max 50 chars.", + "type": "string" + }, + "dimensionFilterExpression": { + "$ref": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression", + "description": "Immutable. A logical expression of ExpandedDataSet filters applied to dimension included in the ExpandedDataSet. This filter is used to reduce the number of rows and thus the change of encountering `other row`." + }, + "dimensionNames": { + "description": "Immutable. The list of dimensions included in the ExpandedDataSet. See the [API Dimensions](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) for the list of dimension names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "displayName": { + "description": "Required. The display name of the ExpandedDataSet. Max 200 chars.", + "type": "string" + }, + "metricNames": { + "description": "Immutable. The list of metrics included in the ExpandedDataSet. See the [API Metrics](https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) for the list of dimension names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Output only. The resource name for this ExpandedDataSet resource. Format: properties/{property_id}/expandedDataSets/{expanded_data_set}", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "GoogleAnalyticsAdminV1alphaExpandedDataSetFilter": { + "description": "A specific filter for a single dimension", + "id": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilter", + "properties": { + "fieldName": { + "description": "Required. The dimension name to filter.", + "type": "string" + }, + "inListFilter": { + "$ref": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter", + "description": "A filter for a string dimension that matches a particular list of options." + }, + "stringFilter": { + "$ref": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter", + "description": "A filter for a string-type dimension that matches a particular pattern." + } + }, + "type": "object" + }, + "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression": { + "description": "A logical expression of EnhancedDataSet dimension filters.", + "id": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression", + "properties": { + "andGroup": { + "$ref": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList", + "description": "A list of expressions to be AND’ed together. It must contain a ExpandedDataSetFilterExpression with either not_expression or dimension_filter. This must be set for the top level ExpandedDataSetFilterExpression." + }, + "filter": { + "$ref": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilter", + "description": "A filter on a single dimension. This cannot be set on the top level ExpandedDataSetFilterExpression." + }, + "notExpression": { + "$ref": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression", + "description": "A filter expression to be NOT'ed (i.e., inverted, complemented). It must include a dimension_filter. This cannot be set on the top level ExpandedDataSetFilterExpression." + } + }, + "type": "object" + }, + "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList": { + "description": "A list of ExpandedDataSet filter expressions.", + "id": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList", + "properties": { + "filterExpressions": { + "description": "A list of ExpandedDataSet filter expressions.", + "items": { + "$ref": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter": { + "description": "A filter for a string dimension that matches a particular list of options.", + "id": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter", + "properties": { + "caseSensitive": { + "description": "Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true.", + "type": "boolean" + }, + "values": { + "description": "Required. The list of possible string values to match against. Must be non-empty.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter": { + "description": "A filter for a string-type dimension that matches a particular pattern.", + "id": "GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter", + "properties": { + "caseSensitive": { + "description": "Optional. If true, the match is case-sensitive. If false, the match is case-insensitive. Must be true when match_type is EXACT. Must be false when match_type is CONTAINS.", + "type": "boolean" + }, + "matchType": { + "description": "Required. The match type for the string filter.", + "enum": [ + "MATCH_TYPE_UNSPECIFIED", + "EXACT", + "CONTAINS" + ], + "enumDescriptions": [ + "Unspecified", + "Exact match of the string value.", + "Contains the string value." + ], + "type": "string" + }, + "value": { + "description": "Required. The string value to be matched against.", + "type": "string" + } + }, + "type": "object" + }, "GoogleAnalyticsAdminV1alphaFirebaseLink": { "description": "A link between a GA4 property and a Firebase project.", "id": "GoogleAnalyticsAdminV1alphaFirebaseLink", @@ -4911,6 +5216,24 @@ }, "type": "object" }, + "GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse": { + "description": "Response message for ListSearchAds360Links RPC.", + "id": "GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse", + "properties": { + "nextPageToken": { + "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", + "type": "string" + }, + "searchAds360Links": { + "description": "List of SearchAds360Links.", + "items": { + "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + }, + "type": "array" + } + }, + "type": "object" + }, "GoogleAnalyticsAdminV1alphaListUserLinksResponse": { "description": "Response message for ListUserLinks RPC.", "id": "GoogleAnalyticsAdminV1alphaListUserLinksResponse", @@ -5275,6 +5598,43 @@ }, "type": "object" }, + "GoogleAnalyticsAdminV1alphaSearchAds360Link": { + "description": "A link between a GA4 property and a Search Ads 360 entity.", + "id": "GoogleAnalyticsAdminV1alphaSearchAds360Link", + "properties": { + "adsPersonalizationEnabled": { + "description": "Enables personalized advertising features with this integration. If this field is not set on create, it will be defaulted to true.", + "type": "boolean" + }, + "advertiserDisplayName": { + "description": "Output only. The display name of the Search Ads 360 Advertiser. Allows users to easily identify the linked resource.", + "readOnly": true, + "type": "string" + }, + "advertiserId": { + "description": "Immutable. This field represents the Advertiser ID of the Search Ads 360 Advertiser. that has been linked.", + "type": "string" + }, + "campaignDataSharingEnabled": { + "description": "Immutable. Enables the import of campaign data from Search Ads 360 into the GA4 property. After link creation, this can only be updated from the Search Ads 360 product. If this field is not set on create, it will be defaulted to true.", + "type": "boolean" + }, + "costDataSharingEnabled": { + "description": "Immutable. Enables the import of cost data from Search Ads 360 to the GA4 property. This can only be enabled if campaign_data_sharing_enabled is enabled. After link creation, this can only be updated from the Search Ads 360 product. If this field is not set on create, it will be defaulted to true.", + "type": "boolean" + }, + "name": { + "description": "Output only. The resource name for this SearchAds360Link resource. Format: properties/{propertyId}/searchAds360Links/{linkId} Note: linkId is not the Search Ads 360 advertiser ID", + "readOnly": true, + "type": "string" + }, + "siteStatsSharingEnabled": { + "description": "Enables export of site stats with this integration. If this field is not set on create, it will be defaulted to true.", + "type": "boolean" + } + }, + "type": "object" + }, "GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest": { "description": "Request message for SearchChangeHistoryEvents RPC.", "id": "GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest", @@ -5347,7 +5707,8 @@ "DISPLAY_VIDEO_360_ADVERTISER_LINK_PROPOSAL", "SEARCH_ADS_360_LINK", "DATA_STREAM", - "ATTRIBUTION_SETTINGS" + "ATTRIBUTION_SETTINGS", + "EXPANDED_DATA_SET" ], "enumDescriptions": [ "Resource type unknown or not specified.", @@ -5365,7 +5726,8 @@ "DisplayVideo360AdvertiserLinkProposal resource", "SearchAds360Link resource", "DataStream resource", - "AttributionSettings resource" + "AttributionSettings resource", + "ExpandedDataSet resource" ], "type": "string" }, diff --git a/analyticsadmin/v1alpha/analyticsadmin-gen.go b/analyticsadmin/v1alpha/analyticsadmin-gen.go index 80fd3c271fd..57a215f6d99 100644 --- a/analyticsadmin/v1alpha/analyticsadmin-gen.go +++ b/analyticsadmin/v1alpha/analyticsadmin-gen.go @@ -199,6 +199,7 @@ func NewPropertiesService(s *Service) *PropertiesService { rs.DisplayVideo360AdvertiserLinks = NewPropertiesDisplayVideo360AdvertiserLinksService(s) rs.FirebaseLinks = NewPropertiesFirebaseLinksService(s) rs.GoogleAdsLinks = NewPropertiesGoogleAdsLinksService(s) + rs.SearchAds360Links = NewPropertiesSearchAds360LinksService(s) rs.UserLinks = NewPropertiesUserLinksService(s) return rs } @@ -224,6 +225,8 @@ type PropertiesService struct { GoogleAdsLinks *PropertiesGoogleAdsLinksService + SearchAds360Links *PropertiesSearchAds360LinksService + UserLinks *PropertiesUserLinksService } @@ -320,6 +323,15 @@ type PropertiesGoogleAdsLinksService struct { s *Service } +func NewPropertiesSearchAds360LinksService(s *Service) *PropertiesSearchAds360LinksService { + rs := &PropertiesSearchAds360LinksService{s: s} + return rs +} + +type PropertiesSearchAds360LinksService struct { + s *Service +} + func NewPropertiesUserLinksService(s *Service) *PropertiesUserLinksService { rs := &PropertiesUserLinksService{s: s} return rs @@ -2455,6 +2467,10 @@ type GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource struct // DisplayVideo360AdvertiserLinkProposal resource in change history. DisplayVideo360AdvertiserLinkProposal *GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal `json:"displayVideo360AdvertiserLinkProposal,omitempty"` + // ExpandedDataSet: A snapshot of an ExpandedDataSet resource in change + // history. + ExpandedDataSet *GoogleAnalyticsAdminV1alphaExpandedDataSet `json:"expandedDataSet,omitempty"` + // FirebaseLink: A snapshot of a FirebaseLink resource in change // history. FirebaseLink *GoogleAnalyticsAdminV1alphaFirebaseLink `json:"firebaseLink,omitempty"` @@ -2474,6 +2490,10 @@ type GoogleAnalyticsAdminV1alphaChangeHistoryChangeChangeHistoryResource struct // Property: A snapshot of a Property resource in change history. Property *GoogleAnalyticsAdminV1alphaProperty `json:"property,omitempty"` + // SearchAds360Link: A snapshot of a SearchAds360Link resource in change + // history. + SearchAds360Link *GoogleAnalyticsAdminV1alphaSearchAds360Link `json:"searchAds360Link,omitempty"` + // ForceSendFields is a list of field names (e.g. "Account") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -3275,6 +3295,254 @@ func (s *GoogleAnalyticsAdminV1alphaDisplayVideo360AdvertiserLinkProposal) Marsh return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// GoogleAnalyticsAdminV1alphaExpandedDataSet: A resource message +// representing a GA4 ExpandedDataSet. +type GoogleAnalyticsAdminV1alphaExpandedDataSet struct { + // DataCollectionStartTime: Output only. Time when expanded data set + // began (or will begin) collecing data. + DataCollectionStartTime string `json:"dataCollectionStartTime,omitempty"` + + // Description: Optional. The description of the ExpandedDataSet. Max 50 + // chars. + Description string `json:"description,omitempty"` + + // DimensionFilterExpression: Immutable. A logical expression of + // ExpandedDataSet filters applied to dimension included in the + // ExpandedDataSet. This filter is used to reduce the number of rows and + // thus the change of encountering `other row`. + DimensionFilterExpression *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression `json:"dimensionFilterExpression,omitempty"` + + // DimensionNames: Immutable. The list of dimensions included in the + // ExpandedDataSet. See the API Dimensions + // (https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#dimensions) + // for the list of dimension names. + DimensionNames []string `json:"dimensionNames,omitempty"` + + // DisplayName: Required. The display name of the ExpandedDataSet. Max + // 200 chars. + DisplayName string `json:"displayName,omitempty"` + + // MetricNames: Immutable. The list of metrics included in the + // ExpandedDataSet. See the API Metrics + // (https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema#metrics) + // for the list of dimension names. + MetricNames []string `json:"metricNames,omitempty"` + + // Name: Output only. The resource name for this ExpandedDataSet + // resource. Format: + // properties/{property_id}/expandedDataSets/{expanded_data_set} + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DataCollectionStartTime") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DataCollectionStartTime") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAnalyticsAdminV1alphaExpandedDataSet) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAnalyticsAdminV1alphaExpandedDataSet + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAnalyticsAdminV1alphaExpandedDataSetFilter: A specific filter +// for a single dimension +type GoogleAnalyticsAdminV1alphaExpandedDataSetFilter struct { + // FieldName: Required. The dimension name to filter. + FieldName string `json:"fieldName,omitempty"` + + // InListFilter: A filter for a string dimension that matches a + // particular list of options. + InListFilter *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter `json:"inListFilter,omitempty"` + + // StringFilter: A filter for a string-type dimension that matches a + // particular pattern. + StringFilter *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter `json:"stringFilter,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FieldName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FieldName") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAnalyticsAdminV1alphaExpandedDataSetFilter) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAnalyticsAdminV1alphaExpandedDataSetFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression: A logical +// expression of EnhancedDataSet dimension filters. +type GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression struct { + // AndGroup: A list of expressions to be AND’ed together. It must + // contain a ExpandedDataSetFilterExpression with either not_expression + // or dimension_filter. This must be set for the top level + // ExpandedDataSetFilterExpression. + AndGroup *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList `json:"andGroup,omitempty"` + + // Filter: A filter on a single dimension. This cannot be set on the top + // level ExpandedDataSetFilterExpression. + Filter *GoogleAnalyticsAdminV1alphaExpandedDataSetFilter `json:"filter,omitempty"` + + // NotExpression: A filter expression to be NOT'ed (i.e., inverted, + // complemented). It must include a dimension_filter. This cannot be set + // on the top level ExpandedDataSetFilterExpression. + NotExpression *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression `json:"notExpression,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AndGroup") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AndGroup") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList: A +// list of ExpandedDataSet filter expressions. +type GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList struct { + // FilterExpressions: A list of ExpandedDataSet filter expressions. + FilterExpressions []*GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpression `json:"filterExpressions,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FilterExpressions") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FilterExpressions") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAnalyticsAdminV1alphaExpandedDataSetFilterExpressionList + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter: A +// filter for a string dimension that matches a particular list of +// options. +type GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter struct { + // CaseSensitive: Optional. If true, the match is case-sensitive. If + // false, the match is case-insensitive. Must be true. + CaseSensitive bool `json:"caseSensitive,omitempty"` + + // Values: Required. The list of possible string values to match + // against. Must be non-empty. + Values []string `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CaseSensitive") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CaseSensitive") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAnalyticsAdminV1alphaExpandedDataSetFilterInListFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter: A +// filter for a string-type dimension that matches a particular pattern. +type GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter struct { + // CaseSensitive: Optional. If true, the match is case-sensitive. If + // false, the match is case-insensitive. Must be true when match_type is + // EXACT. Must be false when match_type is CONTAINS. + CaseSensitive bool `json:"caseSensitive,omitempty"` + + // MatchType: Required. The match type for the string filter. + // + // Possible values: + // "MATCH_TYPE_UNSPECIFIED" - Unspecified + // "EXACT" - Exact match of the string value. + // "CONTAINS" - Contains the string value. + MatchType string `json:"matchType,omitempty"` + + // Value: Required. The string value to be matched against. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CaseSensitive") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CaseSensitive") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAnalyticsAdminV1alphaExpandedDataSetFilterStringFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // GoogleAnalyticsAdminV1alphaFirebaseLink: A link between a GA4 // property and a Firebase project. type GoogleAnalyticsAdminV1alphaFirebaseLink struct { @@ -4062,6 +4330,44 @@ func (s *GoogleAnalyticsAdminV1alphaListPropertiesResponse) MarshalJSON() ([]byt return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse: Response +// message for ListSearchAds360Links RPC. +type GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse struct { + // NextPageToken: A token, which can be sent as `page_token` to retrieve + // the next page. If this field is omitted, there are no subsequent + // pages. + NextPageToken string `json:"nextPageToken,omitempty"` + + // SearchAds360Links: List of SearchAds360Links. + SearchAds360Links []*GoogleAnalyticsAdminV1alphaSearchAds360Link `json:"searchAds360Links,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // GoogleAnalyticsAdminV1alphaListUserLinksResponse: Response message // for ListUserLinks RPC. type GoogleAnalyticsAdminV1alphaListUserLinksResponse struct { @@ -4592,6 +4898,75 @@ func (s *GoogleAnalyticsAdminV1alphaRunAccessReportResponse) MarshalJSON() ([]by return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// GoogleAnalyticsAdminV1alphaSearchAds360Link: A link between a GA4 +// property and a Search Ads 360 entity. +type GoogleAnalyticsAdminV1alphaSearchAds360Link struct { + // AdsPersonalizationEnabled: Enables personalized advertising features + // with this integration. If this field is not set on create, it will be + // defaulted to true. + AdsPersonalizationEnabled bool `json:"adsPersonalizationEnabled,omitempty"` + + // AdvertiserDisplayName: Output only. The display name of the Search + // Ads 360 Advertiser. Allows users to easily identify the linked + // resource. + AdvertiserDisplayName string `json:"advertiserDisplayName,omitempty"` + + // AdvertiserId: Immutable. This field represents the Advertiser ID of + // the Search Ads 360 Advertiser. that has been linked. + AdvertiserId string `json:"advertiserId,omitempty"` + + // CampaignDataSharingEnabled: Immutable. Enables the import of campaign + // data from Search Ads 360 into the GA4 property. After link creation, + // this can only be updated from the Search Ads 360 product. If this + // field is not set on create, it will be defaulted to true. + CampaignDataSharingEnabled bool `json:"campaignDataSharingEnabled,omitempty"` + + // CostDataSharingEnabled: Immutable. Enables the import of cost data + // from Search Ads 360 to the GA4 property. This can only be enabled if + // campaign_data_sharing_enabled is enabled. After link creation, this + // can only be updated from the Search Ads 360 product. If this field is + // not set on create, it will be defaulted to true. + CostDataSharingEnabled bool `json:"costDataSharingEnabled,omitempty"` + + // Name: Output only. The resource name for this SearchAds360Link + // resource. Format: properties/{propertyId}/searchAds360Links/{linkId} + // Note: linkId is not the Search Ads 360 advertiser ID + Name string `json:"name,omitempty"` + + // SiteStatsSharingEnabled: Enables export of site stats with this + // integration. If this field is not set on create, it will be defaulted + // to true. + SiteStatsSharingEnabled bool `json:"siteStatsSharingEnabled,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. + // "AdsPersonalizationEnabled") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AdsPersonalizationEnabled") to include in API requests with the JSON + // null value. By default, fields with empty values are omitted from API + // requests. However, any field with an empty value appearing in + // NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAnalyticsAdminV1alphaSearchAds360Link) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAnalyticsAdminV1alphaSearchAds360Link + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest: Request // message for SearchChangeHistoryEvents RPC. type GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest struct { @@ -4658,6 +5033,7 @@ type GoogleAnalyticsAdminV1alphaSearchChangeHistoryEventsRequest struct { // "SEARCH_ADS_360_LINK" - SearchAds360Link resource // "DATA_STREAM" - DataStream resource // "ATTRIBUTION_SETTINGS" - AttributionSettings resource + // "EXPANDED_DATA_SET" - ExpandedDataSet resource ResourceType []string `json:"resourceType,omitempty"` // ForceSendFields is a list of field names (e.g. "Action") to @@ -17316,6 +17692,796 @@ func (c *PropertiesGoogleAdsLinksPatchCall) Do(opts ...googleapi.CallOption) (*G } +// method id "analyticsadmin.properties.searchAds360Links.create": + +type PropertiesSearchAds360LinksCreateCall struct { + s *Service + parent string + googleanalyticsadminv1alphasearchads360link *GoogleAnalyticsAdminV1alphaSearchAds360Link + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a SearchAds360Link. +// +// - parent: Example format: properties/1234. +func (r *PropertiesSearchAds360LinksService) Create(parent string, googleanalyticsadminv1alphasearchads360link *GoogleAnalyticsAdminV1alphaSearchAds360Link) *PropertiesSearchAds360LinksCreateCall { + c := &PropertiesSearchAds360LinksCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + c.googleanalyticsadminv1alphasearchads360link = googleanalyticsadminv1alphasearchads360link + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PropertiesSearchAds360LinksCreateCall) Fields(s ...googleapi.Field) *PropertiesSearchAds360LinksCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PropertiesSearchAds360LinksCreateCall) Context(ctx context.Context) *PropertiesSearchAds360LinksCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PropertiesSearchAds360LinksCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PropertiesSearchAds360LinksCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googleanalyticsadminv1alphasearchads360link) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+parent}/searchAds360Links") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "analyticsadmin.properties.searchAds360Links.create" call. +// Exactly one of *GoogleAnalyticsAdminV1alphaSearchAds360Link or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleAnalyticsAdminV1alphaSearchAds360Link.ServerResponse.Header or +// (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *PropertiesSearchAds360LinksCreateCall) Do(opts ...googleapi.CallOption) (*GoogleAnalyticsAdminV1alphaSearchAds360Link, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleAnalyticsAdminV1alphaSearchAds360Link{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a SearchAds360Link.", + // "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links", + // "httpMethod": "POST", + // "id": "analyticsadmin.properties.searchAds360Links.create", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "parent": { + // "description": "Required. Example format: properties/1234", + // "location": "path", + // "pattern": "^properties/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+parent}/searchAds360Links", + // "request": { + // "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + // }, + // "response": { + // "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/analytics.edit" + // ] + // } + +} + +// method id "analyticsadmin.properties.searchAds360Links.delete": + +type PropertiesSearchAds360LinksDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a SearchAds360Link on a property. +// +// - name: The name of the SearchAds360Link to delete. Example format: +// properties/1234/SearchAds360Links/5678. +func (r *PropertiesSearchAds360LinksService) Delete(name string) *PropertiesSearchAds360LinksDeleteCall { + c := &PropertiesSearchAds360LinksDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PropertiesSearchAds360LinksDeleteCall) Fields(s ...googleapi.Field) *PropertiesSearchAds360LinksDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PropertiesSearchAds360LinksDeleteCall) Context(ctx context.Context) *PropertiesSearchAds360LinksDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PropertiesSearchAds360LinksDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PropertiesSearchAds360LinksDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("DELETE", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "analyticsadmin.properties.searchAds360Links.delete" call. +// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *GoogleProtobufEmpty.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *PropertiesSearchAds360LinksDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleProtobufEmpty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a SearchAds360Link on a property.", + // "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links/{searchAds360LinksId}", + // "httpMethod": "DELETE", + // "id": "analyticsadmin.properties.searchAds360Links.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. The name of the SearchAds360Link to delete. Example format: properties/1234/SearchAds360Links/5678", + // "location": "path", + // "pattern": "^properties/[^/]+/searchAds360Links/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+name}", + // "response": { + // "$ref": "GoogleProtobufEmpty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/analytics.edit" + // ] + // } + +} + +// method id "analyticsadmin.properties.searchAds360Links.get": + +type PropertiesSearchAds360LinksGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Look up a single SearchAds360Link +// +// - name: The name of the SearchAds360Link to get. Example format: +// properties/1234/SearchAds360Link/5678. +func (r *PropertiesSearchAds360LinksService) Get(name string) *PropertiesSearchAds360LinksGetCall { + c := &PropertiesSearchAds360LinksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PropertiesSearchAds360LinksGetCall) Fields(s ...googleapi.Field) *PropertiesSearchAds360LinksGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *PropertiesSearchAds360LinksGetCall) IfNoneMatch(entityTag string) *PropertiesSearchAds360LinksGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PropertiesSearchAds360LinksGetCall) Context(ctx context.Context) *PropertiesSearchAds360LinksGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PropertiesSearchAds360LinksGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PropertiesSearchAds360LinksGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "analyticsadmin.properties.searchAds360Links.get" call. +// Exactly one of *GoogleAnalyticsAdminV1alphaSearchAds360Link or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleAnalyticsAdminV1alphaSearchAds360Link.ServerResponse.Header or +// (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *PropertiesSearchAds360LinksGetCall) Do(opts ...googleapi.CallOption) (*GoogleAnalyticsAdminV1alphaSearchAds360Link, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleAnalyticsAdminV1alphaSearchAds360Link{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Look up a single SearchAds360Link", + // "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links/{searchAds360LinksId}", + // "httpMethod": "GET", + // "id": "analyticsadmin.properties.searchAds360Links.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. The name of the SearchAds360Link to get. Example format: properties/1234/SearchAds360Link/5678", + // "location": "path", + // "pattern": "^properties/[^/]+/searchAds360Links/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+name}", + // "response": { + // "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/analytics.edit", + // "https://www.googleapis.com/auth/analytics.readonly" + // ] + // } + +} + +// method id "analyticsadmin.properties.searchAds360Links.list": + +type PropertiesSearchAds360LinksListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists all SearchAds360Links on a property. +// +// - parent: Example format: properties/1234. +func (r *PropertiesSearchAds360LinksService) List(parent string) *PropertiesSearchAds360LinksListCall { + c := &PropertiesSearchAds360LinksListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// PageSize sets the optional parameter "pageSize": The maximum number +// of resources to return. If unspecified, at most 50 resources will be +// returned. The maximum value is 200 (higher values will be coerced to +// the maximum). +func (c *PropertiesSearchAds360LinksListCall) PageSize(pageSize int64) *PropertiesSearchAds360LinksListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": A page token, +// received from a previous `ListSearchAds360Links` call. Provide this +// to retrieve the subsequent page. When paginating, all other +// parameters provided to `ListSearchAds360Links` must match the call +// that provided the page token. +func (c *PropertiesSearchAds360LinksListCall) PageToken(pageToken string) *PropertiesSearchAds360LinksListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PropertiesSearchAds360LinksListCall) Fields(s ...googleapi.Field) *PropertiesSearchAds360LinksListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *PropertiesSearchAds360LinksListCall) IfNoneMatch(entityTag string) *PropertiesSearchAds360LinksListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PropertiesSearchAds360LinksListCall) Context(ctx context.Context) *PropertiesSearchAds360LinksListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PropertiesSearchAds360LinksListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PropertiesSearchAds360LinksListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+parent}/searchAds360Links") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "analyticsadmin.properties.searchAds360Links.list" call. +// Exactly one of +// *GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse.ServerRespon +// se.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *PropertiesSearchAds360LinksListCall) Do(opts ...googleapi.CallOption) (*GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists all SearchAds360Links on a property.", + // "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links", + // "httpMethod": "GET", + // "id": "analyticsadmin.properties.searchAds360Links.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "pageSize": { + // "description": "The maximum number of resources to return. If unspecified, at most 50 resources will be returned. The maximum value is 200 (higher values will be coerced to the maximum).", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "A page token, received from a previous `ListSearchAds360Links` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSearchAds360Links` must match the call that provided the page token.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "Required. Example format: properties/1234", + // "location": "path", + // "pattern": "^properties/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+parent}/searchAds360Links", + // "response": { + // "$ref": "GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/analytics.edit", + // "https://www.googleapis.com/auth/analytics.readonly" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *PropertiesSearchAds360LinksListCall) Pages(ctx context.Context, f func(*GoogleAnalyticsAdminV1alphaListSearchAds360LinksResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "analyticsadmin.properties.searchAds360Links.patch": + +type PropertiesSearchAds360LinksPatchCall struct { + s *Service + name string + googleanalyticsadminv1alphasearchads360link *GoogleAnalyticsAdminV1alphaSearchAds360Link + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates a SearchAds360Link on a property. +// +// - name: Output only. The resource name for this SearchAds360Link +// resource. Format: +// properties/{propertyId}/searchAds360Links/{linkId} Note: linkId is +// not the Search Ads 360 advertiser ID. +func (r *PropertiesSearchAds360LinksService) Patch(name string, googleanalyticsadminv1alphasearchads360link *GoogleAnalyticsAdminV1alphaSearchAds360Link) *PropertiesSearchAds360LinksPatchCall { + c := &PropertiesSearchAds360LinksPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.googleanalyticsadminv1alphasearchads360link = googleanalyticsadminv1alphasearchads360link + return c +} + +// UpdateMask sets the optional parameter "updateMask": Required. The +// list of fields to be updated. Omitted fields will not be updated. To +// replace the entire entity, use one path with the string "*" to match +// all fields. +func (c *PropertiesSearchAds360LinksPatchCall) UpdateMask(updateMask string) *PropertiesSearchAds360LinksPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *PropertiesSearchAds360LinksPatchCall) Fields(s ...googleapi.Field) *PropertiesSearchAds360LinksPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *PropertiesSearchAds360LinksPatchCall) Context(ctx context.Context) *PropertiesSearchAds360LinksPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *PropertiesSearchAds360LinksPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *PropertiesSearchAds360LinksPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googleanalyticsadminv1alphasearchads360link) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("PATCH", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "analyticsadmin.properties.searchAds360Links.patch" call. +// Exactly one of *GoogleAnalyticsAdminV1alphaSearchAds360Link or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleAnalyticsAdminV1alphaSearchAds360Link.ServerResponse.Header or +// (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *PropertiesSearchAds360LinksPatchCall) Do(opts ...googleapi.CallOption) (*GoogleAnalyticsAdminV1alphaSearchAds360Link, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleAnalyticsAdminV1alphaSearchAds360Link{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates a SearchAds360Link on a property.", + // "flatPath": "v1alpha/properties/{propertiesId}/searchAds360Links/{searchAds360LinksId}", + // "httpMethod": "PATCH", + // "id": "analyticsadmin.properties.searchAds360Links.patch", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Output only. The resource name for this SearchAds360Link resource. Format: properties/{propertyId}/searchAds360Links/{linkId} Note: linkId is not the Search Ads 360 advertiser ID", + // "location": "path", + // "pattern": "^properties/[^/]+/searchAds360Links/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "Required. The list of fields to be updated. Omitted fields will not be updated. To replace the entire entity, use one path with the string \"*\" to match all fields.", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1alpha/{+name}", + // "request": { + // "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + // }, + // "response": { + // "$ref": "GoogleAnalyticsAdminV1alphaSearchAds360Link" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/analytics.edit" + // ] + // } + +} + // method id "analyticsadmin.properties.userLinks.audit": type PropertiesUserLinksAuditCall struct { diff --git a/api-list.json b/api-list.json index 89ed0013c2d..147c3459d90 100644 --- a/api-list.json +++ b/api-list.json @@ -1819,6 +1819,21 @@ "documentationLink": "https://developers.google.com/shopping-content/v2/", "preferred": true }, + { + "kind": "discovery#directoryItem", + "id": "contentwarehouse:v1", + "name": "contentwarehouse", + "version": "v1", + "title": "contentwarehouse API", + "description": "", + "discoveryRestUrl": "https://contentwarehouse.googleapis.com/$discovery/rest?version=v1", + "icons": { + "x16": "https://www.gstatic.com/images/branding/product/1x/googleg_16dp.png", + "x32": "https://www.gstatic.com/images/branding/product/1x/googleg_32dp.png" + }, + "documentationLink": "https://cloud.google.com/document-warehouse", + "preferred": true + }, { "kind": "discovery#directoryItem", "id": "customsearch:v1", @@ -5577,7 +5592,7 @@ "id": "versionhistory:v1", "name": "versionhistory", "version": "v1", - "title": "Version History API", + "title": "versionhistory.googleapis.com API", "description": "Version History API - Prod", "discoveryRestUrl": "https://versionhistory.googleapis.com/$discovery/rest?version=v1", "icons": { @@ -5712,7 +5727,7 @@ "id": "vmmigration:v1alpha1", "name": "vmmigration", "version": "v1alpha1", - "title": "VM Migration API", + "title": "Migrate to Virtual Machines API", "description": "Use the Migrate to Virtual Machines API to programmatically migrate workloads.", "discoveryRestUrl": "https://vmmigration.googleapis.com/$discovery/rest?version=v1alpha1", "icons": { @@ -5727,7 +5742,7 @@ "id": "vmmigration:v1", "name": "vmmigration", "version": "v1", - "title": "VM Migration API", + "title": "Migrate to Virtual Machines API", "description": "Use the Migrate to Virtual Machines API to programmatically migrate workloads.", "discoveryRestUrl": "https://vmmigration.googleapis.com/$discovery/rest?version=v1", "icons": { diff --git a/apigee/v1/apigee-api.json b/apigee/v1/apigee-api.json index 9ad5520b8a6..a678f6820ea 100644 --- a/apigee/v1/apigee-api.json +++ b/apigee/v1/apigee-api.json @@ -3066,7 +3066,7 @@ ], "parameters": { "endpointAttachmentId": { - "description": "ID to use for the endpoint attachment. The ID can contain lowercase letters and numbers, must start with a letter, and must be 1-20 characters in length.", + "description": "ID to use for the endpoint attachment. ID must start with a lowercase letter followed by up to 31 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. The minimum length is 2.", "location": "query", "type": "string" }, @@ -8609,7 +8609,7 @@ } } }, - "revision": "20220922", + "revision": "20220930", "rootUrl": "https://apigee.googleapis.com/", "schemas": { "EdgeConfigstoreBundleBadBundle": { diff --git a/apigee/v1/apigee-gen.go b/apigee/v1/apigee-gen.go index 9dfbd64b835..6f308045090 100644 --- a/apigee/v1/apigee-gen.go +++ b/apigee/v1/apigee-gen.go @@ -26915,9 +26915,10 @@ func (r *OrganizationsEndpointAttachmentsService) Create(parent string, googlecl } // EndpointAttachmentId sets the optional parameter -// "endpointAttachmentId": ID to use for the endpoint attachment. The ID -// can contain lowercase letters and numbers, must start with a letter, -// and must be 1-20 characters in length. +// "endpointAttachmentId": ID to use for the endpoint attachment. ID +// must start with a lowercase letter followed by up to 31 lowercase +// letters, numbers, or hyphens, and cannot end with a hyphen. The +// minimum length is 2. func (c *OrganizationsEndpointAttachmentsCreateCall) EndpointAttachmentId(endpointAttachmentId string) *OrganizationsEndpointAttachmentsCreateCall { c.urlParams_.Set("endpointAttachmentId", endpointAttachmentId) return c @@ -27023,7 +27024,7 @@ func (c *OrganizationsEndpointAttachmentsCreateCall) Do(opts ...googleapi.CallOp // ], // "parameters": { // "endpointAttachmentId": { - // "description": "ID to use for the endpoint attachment. The ID can contain lowercase letters and numbers, must start with a letter, and must be 1-20 characters in length.", + // "description": "ID to use for the endpoint attachment. ID must start with a lowercase letter followed by up to 31 lowercase letters, numbers, or hyphens, and cannot end with a hyphen. The minimum length is 2.", // "location": "query", // "type": "string" // }, diff --git a/apigeeregistry/v1/apigeeregistry-api.json b/apigeeregistry/v1/apigeeregistry-api.json index e89cd4ed4ef..6324a2ac60f 100644 --- a/apigeeregistry/v1/apigeeregistry-api.json +++ b/apigeeregistry/v1/apigeeregistry-api.json @@ -3171,7 +3171,7 @@ } } }, - "revision": "20220831", + "revision": "20220929", "rootUrl": "https://apigeeregistry.googleapis.com/", "schemas": { "Api": { @@ -3215,11 +3215,11 @@ "type": "string" }, "recommendedDeployment": { - "description": "The recommended deployment of the API. Format: `apis/{api}/deployments/{deployment}`", + "description": "The recommended deployment of the API. Format: `projects/{project}/locations/{location}/apis/{api}/deployments/{deployment}`", "type": "string" }, "recommendedVersion": { - "description": "The recommended version of the API. Format: `apis/{api}/versions/{version}`", + "description": "The recommended version of the API. Format: `projects/{project}/locations/{location}/apis/{api}/versions/{version}`", "type": "string" }, "updateTime": { diff --git a/apigeeregistry/v1/apigeeregistry-gen.go b/apigeeregistry/v1/apigeeregistry-gen.go index 6b47432c838..7ceb57730f4 100644 --- a/apigeeregistry/v1/apigeeregistry-gen.go +++ b/apigeeregistry/v1/apigeeregistry-gen.go @@ -342,11 +342,13 @@ type Api struct { Name string `json:"name,omitempty"` // RecommendedDeployment: The recommended deployment of the API. Format: - // `apis/{api}/deployments/{deployment}` + // `projects/{project}/locations/{location}/apis/{api}/deployments/{deplo + // yment}` RecommendedDeployment string `json:"recommendedDeployment,omitempty"` // RecommendedVersion: The recommended version of the API. Format: - // `apis/{api}/versions/{version}` + // `projects/{project}/locations/{location}/apis/{api}/versions/{version} + // ` RecommendedVersion string `json:"recommendedVersion,omitempty"` // UpdateTime: Output only. Last update timestamp. diff --git a/artifactregistry/v1/artifactregistry-api.json b/artifactregistry/v1/artifactregistry-api.json index 5acf34d43d6..fa9384cfacd 100644 --- a/artifactregistry/v1/artifactregistry-api.json +++ b/artifactregistry/v1/artifactregistry-api.json @@ -1457,7 +1457,7 @@ } } }, - "revision": "20220910", + "revision": "20221003", "rootUrl": "https://artifactregistry.googleapis.com/", "schemas": { "AptArtifact": { @@ -2587,7 +2587,7 @@ "description": "Properties of the object.", "type": "any" }, - "description": "Output only. Repository-specific Metadata stored against this version. The fields returned are defined by the underlying repository-specific resource. Currently, the only resource in use is DockerImage", + "description": "Output only. Repository-specific Metadata stored against this version. The fields returned are defined by the underlying repository-specific resource. Currently, the resources could be: DockerImage MavenArtifact", "readOnly": true, "type": "object" }, diff --git a/artifactregistry/v1/artifactregistry-gen.go b/artifactregistry/v1/artifactregistry-gen.go index 8bea5271502..1fe53bd82ae 100644 --- a/artifactregistry/v1/artifactregistry-gen.go +++ b/artifactregistry/v1/artifactregistry-gen.go @@ -2392,8 +2392,8 @@ type Version struct { // Metadata: Output only. Repository-specific Metadata stored against // this version. The fields returned are defined by the underlying - // repository-specific resource. Currently, the only resource in use is - // DockerImage + // repository-specific resource. Currently, the resources could be: + // DockerImage MavenArtifact Metadata googleapi.RawMessage `json:"metadata,omitempty"` // Name: The name of the version, for example: diff --git a/artifactregistry/v1beta2/artifactregistry-api.json b/artifactregistry/v1beta2/artifactregistry-api.json index 95203ef95f5..66a1671dd03 100644 --- a/artifactregistry/v1beta2/artifactregistry-api.json +++ b/artifactregistry/v1beta2/artifactregistry-api.json @@ -1135,7 +1135,7 @@ } } }, - "revision": "20220829", + "revision": "20221003", "rootUrl": "https://artifactregistry.googleapis.com/", "schemas": { "AptArtifact": { @@ -1967,7 +1967,7 @@ "description": "Properties of the object.", "type": "any" }, - "description": "Output only. Repository-specific Metadata stored against this version. The fields returned are defined by the underlying repository-specific resource. Currently, the only resource in use is DockerImage", + "description": "Output only. Repository-specific Metadata stored against this version. The fields returned are defined by the underlying repository-specific resource. Currently, the resources could be: DockerImage MavenArtifact", "readOnly": true, "type": "object" }, diff --git a/artifactregistry/v1beta2/artifactregistry-gen.go b/artifactregistry/v1beta2/artifactregistry-gen.go index 516dc5126e7..0a022242a4c 100644 --- a/artifactregistry/v1beta2/artifactregistry-gen.go +++ b/artifactregistry/v1beta2/artifactregistry-gen.go @@ -1810,8 +1810,8 @@ type Version struct { // Metadata: Output only. Repository-specific Metadata stored against // this version. The fields returned are defined by the underlying - // repository-specific resource. Currently, the only resource in use is - // DockerImage + // repository-specific resource. Currently, the resources could be: + // DockerImage MavenArtifact Metadata googleapi.RawMessage `json:"metadata,omitempty"` // Name: The name of the version, for example: diff --git a/assuredworkloads/v1/assuredworkloads-api.json b/assuredworkloads/v1/assuredworkloads-api.json index 2fb93c126d4..ee900268e18 100644 --- a/assuredworkloads/v1/assuredworkloads-api.json +++ b/assuredworkloads/v1/assuredworkloads-api.json @@ -491,7 +491,7 @@ } } }, - "revision": "20220926", + "revision": "20221007", "rootUrl": "https://assuredworkloads.googleapis.com/", "schemas": { "GoogleCloudAssuredworkloadsV1AcknowledgeViolationRequest": { @@ -501,10 +501,6 @@ "comment": { "description": "Required. Business justification explaining the need for violation acknowledgement", "type": "string" - }, - "nonCompliantOrgPolicy": { - "description": "Optional. Name of the OrgPolicy which was modified with non-compliant change and resulted in this violation. Format: projects/{project_number}/policies/{constraint_name} folders/{folder_id}/policies/{constraint_name} organizations/{organization_id}/policies/{constraint_name}", - "type": "string" } }, "type": "object" @@ -664,6 +660,11 @@ "readOnly": true, "type": "string" }, + "exceptionAuditLogLink": { + "description": "Output only. Immutable. Audit Log link to find business justification provided for violation exception. Format: https://console.cloud.google.com/logs/query;query={logName}{protoPayload.resourceName}{protoPayload.methodName}{timeRange}{organization}", + "readOnly": true, + "type": "string" + }, "name": { "description": "Output only. Immutable. Name of the Violation. Format: organizations/{organization}/locations/{location}/workloads/{workload_id}/violations/{violations_id}", "readOnly": true, diff --git a/assuredworkloads/v1/assuredworkloads-gen.go b/assuredworkloads/v1/assuredworkloads-gen.go index d2a94f3f9d8..1c8077c5cc8 100644 --- a/assuredworkloads/v1/assuredworkloads-gen.go +++ b/assuredworkloads/v1/assuredworkloads-gen.go @@ -201,13 +201,6 @@ type GoogleCloudAssuredworkloadsV1AcknowledgeViolationRequest struct { // violation acknowledgement Comment string `json:"comment,omitempty"` - // NonCompliantOrgPolicy: Optional. Name of the OrgPolicy which was - // modified with non-compliant change and resulted in this violation. - // Format: projects/{project_number}/policies/{constraint_name} - // folders/{folder_id}/policies/{constraint_name} - // organizations/{organization_id}/policies/{constraint_name} - NonCompliantOrgPolicy string `json:"nonCompliantOrgPolicy,omitempty"` - // ForceSendFields is a list of field names (e.g. "Comment") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -450,6 +443,11 @@ type GoogleCloudAssuredworkloadsV1Violation struct { // OrgPolicy gcp.resourceLocations has non compliant value. Description string `json:"description,omitempty"` + // ExceptionAuditLogLink: Output only. Immutable. Audit Log link to find + // business justification provided for violation exception. Format: + // https://console.cloud.google.com/logs/query;query={logName}{protoPayload.resourceName}{protoPayload.methodName}{timeRange}{organization} + ExceptionAuditLogLink string `json:"exceptionAuditLogLink,omitempty"` + // Name: Output only. Immutable. Name of the Violation. Format: // organizations/{organization}/locations/{location}/workloads/{workload_ // id}/violations/{violations_id} diff --git a/assuredworkloads/v1beta1/assuredworkloads-api.json b/assuredworkloads/v1beta1/assuredworkloads-api.json index 5560aa2d648..657598bf022 100644 --- a/assuredworkloads/v1beta1/assuredworkloads-api.json +++ b/assuredworkloads/v1beta1/assuredworkloads-api.json @@ -595,7 +595,7 @@ } } }, - "revision": "20220926", + "revision": "20221007", "rootUrl": "https://assuredworkloads.googleapis.com/", "schemas": { "GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationRequest": { @@ -605,10 +605,6 @@ "comment": { "description": "Required. Business justification explaining the need for violation acknowledgement", "type": "string" - }, - "nonCompliantOrgPolicy": { - "description": "Optional. Name of the OrgPolicy which was modified with non-compliant change and resulted in this violation. Format: projects/{project_number}/policies/{constraint_name} folders/{folder_id}/policies/{constraint_name} organizations/{organization_id}/policies/{constraint_name}", - "type": "string" } }, "type": "object" @@ -730,6 +726,11 @@ "readOnly": true, "type": "string" }, + "exceptionAuditLogLink": { + "description": "Output only. Immutable. Audit Log link to find business justification provided for violation exception. Format: https://console.cloud.google.com/logs/query;query={logName}{protoPayload.resourceName}{protoPayload.methodName}{timeRange}{organization}", + "readOnly": true, + "type": "string" + }, "name": { "description": "Output only. Immutable. Name of the Violation. Format: organizations/{organization}/locations/{location}/workloads/{workload_id}/violations/{violations_id}", "readOnly": true, diff --git a/assuredworkloads/v1beta1/assuredworkloads-gen.go b/assuredworkloads/v1beta1/assuredworkloads-gen.go index af2b0d2f6ff..49d630fdae6 100644 --- a/assuredworkloads/v1beta1/assuredworkloads-gen.go +++ b/assuredworkloads/v1beta1/assuredworkloads-gen.go @@ -285,13 +285,6 @@ type GoogleCloudAssuredworkloadsV1beta1AcknowledgeViolationRequest struct { // violation acknowledgement Comment string `json:"comment,omitempty"` - // NonCompliantOrgPolicy: Optional. Name of the OrgPolicy which was - // modified with non-compliant change and resulted in this violation. - // Format: projects/{project_number}/policies/{constraint_name} - // folders/{folder_id}/policies/{constraint_name} - // organizations/{organization_id}/policies/{constraint_name} - NonCompliantOrgPolicy string `json:"nonCompliantOrgPolicy,omitempty"` - // ForceSendFields is a list of field names (e.g. "Comment") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -512,6 +505,11 @@ type GoogleCloudAssuredworkloadsV1beta1Violation struct { // OrgPolicy gcp.resourceLocations has non compliant value. Description string `json:"description,omitempty"` + // ExceptionAuditLogLink: Output only. Immutable. Audit Log link to find + // business justification provided for violation exception. Format: + // https://console.cloud.google.com/logs/query;query={logName}{protoPayload.resourceName}{protoPayload.methodName}{timeRange}{organization} + ExceptionAuditLogLink string `json:"exceptionAuditLogLink,omitempty"` + // Name: Output only. Immutable. Name of the Violation. Format: // organizations/{organization}/locations/{location}/workloads/{workload_ // id}/violations/{violations_id} diff --git a/beyondcorp/v1/beyondcorp-api.json b/beyondcorp/v1/beyondcorp-api.json index eaf16fb8acf..6ebfddeda7f 100644 --- a/beyondcorp/v1/beyondcorp-api.json +++ b/beyondcorp/v1/beyondcorp-api.json @@ -1741,7 +1741,7 @@ } } }, - "revision": "20220908", + "revision": "20220929", "rootUrl": "https://beyondcorp.googleapis.com/", "schemas": { "AllocatedConnection": { @@ -3245,6 +3245,50 @@ "properties": {}, "type": "object" }, + "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata": { + "description": "Represents the metadata of the long-running operation.", + "id": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata", + "properties": { + "apiVersion": { + "description": "Output only. API version used to start the operation.", + "readOnly": true, + "type": "string" + }, + "createTime": { + "description": "Output only. The time the operation was created.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "endTime": { + "description": "Output only. The time the operation finished running.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "requestedCancellation": { + "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.", + "readOnly": true, + "type": "boolean" + }, + "statusMessage": { + "description": "Output only. Human-readable status of the operation, if any.", + "readOnly": true, + "type": "string" + }, + "target": { + "description": "Output only. Server-defined resource path for the target of the operation.", + "readOnly": true, + "type": "string" + }, + "verb": { + "description": "Output only. Name of the verb executed by the operation.", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, "GoogleCloudLocationListLocationsResponse": { "description": "The response message for Locations.ListLocations.", "id": "GoogleCloudLocationListLocationsResponse", diff --git a/beyondcorp/v1/beyondcorp-gen.go b/beyondcorp/v1/beyondcorp-gen.go index 247c5fb299d..869f16214b3 100644 --- a/beyondcorp/v1/beyondcorp-gen.go +++ b/beyondcorp/v1/beyondcorp-gen.go @@ -2289,6 +2289,58 @@ func (s *GoogleCloudBeyondcorpConnectorsV1alphaContainerHealthDetails) MarshalJS type GoogleCloudBeyondcorpConnectorsV1alphaRemoteAgentDetails struct { } +// GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetada +// ta: Represents the metadata of the long-running operation. +type GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata struct { + // ApiVersion: Output only. API version used to start the operation. + ApiVersion string `json:"apiVersion,omitempty"` + + // CreateTime: Output only. The time the operation was created. + CreateTime string `json:"createTime,omitempty"` + + // EndTime: Output only. The time the operation finished running. + EndTime string `json:"endTime,omitempty"` + + // RequestedCancellation: Output only. Identifies whether the user has + // requested cancellation of the operation. Operations that have + // successfully been cancelled have Operation.error value with a + // google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`. + RequestedCancellation bool `json:"requestedCancellation,omitempty"` + + // StatusMessage: Output only. Human-readable status of the operation, + // if any. + StatusMessage string `json:"statusMessage,omitempty"` + + // Target: Output only. Server-defined resource path for the target of + // the operation. + Target string `json:"target,omitempty"` + + // Verb: Output only. Name of the verb executed by the operation. + Verb string `json:"verb,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ApiVersion") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ApiVersion") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // GoogleCloudLocationListLocationsResponse: The response message for // Locations.ListLocations. type GoogleCloudLocationListLocationsResponse struct { diff --git a/beyondcorp/v1alpha/beyondcorp-api.json b/beyondcorp/v1alpha/beyondcorp-api.json index 0a1424dd84e..d5c48b99808 100644 --- a/beyondcorp/v1alpha/beyondcorp-api.json +++ b/beyondcorp/v1alpha/beyondcorp-api.json @@ -2769,6 +2769,295 @@ } } }, + "netConnections": { + "methods": { + "create": { + "description": "Creates a new NetConnection in a given project and location.", + "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections", + "httpMethod": "POST", + "id": "beyondcorp.projects.locations.netConnections.create", + "parameterOrder": [ + "parent" + ], + "parameters": { + "netConnectionId": { + "description": "Optional. User-settable NetConnection resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. The resource project name of the NetConnection location using the form: `projects/{project_id}/locations/{location_id}`", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + }, + "requestId": { + "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + }, + "validateOnly": { + "description": "Optional. If set, validates request by executing a dry-run which would not alter the resource in any way.", + "location": "query", + "type": "boolean" + } + }, + "path": "v1alpha/{+parent}/netConnections", + "request": { + "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection" + }, + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes a single NetConnection.", + "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}", + "httpMethod": "DELETE", + "id": "beyondcorp.projects.locations.netConnections.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. BeyondCorp Connector name using the form: `projects/{project_id}/locations/{location_id}/netConnections/{net_connection_id}`", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + "required": true, + "type": "string" + }, + "requestId": { + "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + }, + "validateOnly": { + "description": "Optional. If set, validates request by executing a dry-run which would not alter the resource in any way.", + "location": "query", + "type": "boolean" + } + }, + "path": "v1alpha/{+name}", + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets details of a single NetConnection.", + "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}", + "httpMethod": "GET", + "id": "beyondcorp.projects.locations.netConnections.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. BeyondCorp NetConnection name using the form: `projects/{project_id}/locations/{location_id}/netConnections/{net_connection_id}`", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+name}", + "response": { + "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "getIamPolicy": { + "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.", + "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}:getIamPolicy", + "httpMethod": "GET", + "id": "beyondcorp.projects.locations.netConnections.getIamPolicy", + "parameterOrder": [ + "resource" + ], + "parameters": { + "options.requestedPolicyVersion": { + "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).", + "format": "int32", + "location": "query", + "type": "integer" + }, + "resource": { + "description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+resource}:getIamPolicy", + "response": { + "$ref": "GoogleIamV1Policy" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists NetConnections in a given project and location.", + "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections", + "httpMethod": "GET", + "id": "beyondcorp.projects.locations.netConnections.list", + "parameterOrder": [ + "parent" + ], + "parameters": { + "filter": { + "description": "Optional. A filter specifying constraints of a list operation.", + "location": "query", + "type": "string" + }, + "orderBy": { + "description": "Optional. Specifies the ordering of results. See [Sorting order](https://cloud.google.com/apis/design/design_patterns#sorting_order) for more information.", + "location": "query", + "type": "string" + }, + "pageSize": { + "description": "Optional. The maximum number of items to return. If not specified, a default value of 50 will be used by the service. Regardless of the page_size value, the response may include a partial list and a caller should only rely on response's next_page_token to determine if there are more instances left to be queried.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "Optional. The next_page_token value returned from a previous ListNetConnectionsRequest, if any.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. The resource name of the NetConnection location using the form: `projects/{project_id}/locations/{location_id}`", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+parent}/netConnections", + "response": { + "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Updates the parameters of a single NetConnection.", + "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}", + "httpMethod": "PATCH", + "id": "beyondcorp.projects.locations.netConnections.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "allowMissing": { + "description": "Optional. If set as true, will create the resource if it is not found.", + "location": "query", + "type": "boolean" + }, + "name": { + "description": "Required. Unique resource name of the NetConnection. The name is ignored when creating a NetConnection.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + "required": true, + "type": "string" + }, + "requestId": { + "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + "location": "query", + "type": "string" + }, + "updateMask": { + "description": "Required. Mask of fields to update. At least one path must be supplied in this field. The elements of the repeated paths field may only include these fields from [BeyondCorp.NetConnection]: * `labels` * `display_name`", + "format": "google-fieldmask", + "location": "query", + "type": "string" + }, + "validateOnly": { + "description": "Optional. If set, validates request by executing a dry-run which would not alter the resource in any way.", + "location": "query", + "type": "boolean" + } + }, + "path": "v1alpha/{+name}", + "request": { + "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection" + }, + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "setIamPolicy": { + "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.", + "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}:setIamPolicy", + "httpMethod": "POST", + "id": "beyondcorp.projects.locations.netConnections.setIamPolicy", + "parameterOrder": [ + "resource" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+resource}:setIamPolicy", + "request": { + "$ref": "GoogleIamV1SetIamPolicyRequest" + }, + "response": { + "$ref": "GoogleIamV1Policy" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "testIamPermissions": { + "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.", + "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}:testIamPermissions", + "httpMethod": "POST", + "id": "beyondcorp.projects.locations.netConnections.testIamPermissions", + "parameterOrder": [ + "resource" + ], + "parameters": { + "resource": { + "description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1alpha/{+resource}:testIamPermissions", + "request": { + "$ref": "GoogleIamV1TestIamPermissionsRequest" + }, + "response": { + "$ref": "GoogleIamV1TestIamPermissionsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + }, "operations": { "methods": { "cancel": { @@ -2897,7 +3186,7 @@ } } }, - "revision": "20220908", + "revision": "20220929", "rootUrl": "https://beyondcorp.googleapis.com/", "schemas": { "AllocatedConnection": { @@ -4653,6 +4942,154 @@ }, "type": "object" }, + "GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse": { + "description": "Response message for BeyondCorp.ListNetConnections.", + "id": "GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse", + "properties": { + "netConnections": { + "description": "A list of BeyondCorp NetConnections in the project.", + "items": { + "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A token to retrieve the next page of results, or empty if there are no more results in the list.", + "type": "string" + }, + "unreachable": { + "description": "A list of locations that could not be reached.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection": { + "description": "A BeyondCorp NetConnection resource represents a BeyondCorp protected connection from BeyondCorp Client Connector to a remote application through a BeyondCorp AppConnector gateway.", + "id": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection", + "properties": { + "connectors": { + "description": "Optional. List of [google.cloud.beyondcorp.v1main.AppConnector.name] that are authorized to be associated with this NetConnection. e.g. projects/{project}/locations/{location}/appConnectors/{app_connector}", + "items": { + "type": "string" + }, + "type": "array" + }, + "createTime": { + "description": "Output only. Timestamp when the resource was created.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "destinationCidrs": { + "description": "Required. CIDRs for the remote networks to connect to. e.g. IPv4: 198.51.100.14/24 IPv6: 2001:db8::/48", + "items": { + "type": "string" + }, + "type": "array" + }, + "displayName": { + "description": "Optional. An arbitrary user-provided name for the NetConnection. Cannot exceed 64 characters.", + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Optional. Resource labels to represent user provided metadata.", + "type": "object" + }, + "name": { + "description": "Required. Unique resource name of the NetConnection. The name is ignored when creating a NetConnection.", + "type": "string" + }, + "networkVpc": { + "description": "Output only. The full name of the VPC network connected to the applications. Client Connector will send traffic here.", + "readOnly": true, + "type": "string" + }, + "state": { + "description": "Output only. The current state of the NetConnection.", + "enum": [ + "STATE_UNSPECIFIED", + "CREATING", + "CREATED", + "UPDATING", + "DELETING", + "DOWN" + ], + "enumDescriptions": [ + "Default value. This value is unused.", + "NetConnection is being created.", + "NetConnection has been created.", + "NetConnection's configuration is being updated.", + "NetConnection is being deleted.", + "NetConnection is down and may be restored in the future. This happens when CCFE sends ProjectState = OFF." + ], + "readOnly": true, + "type": "string" + }, + "uid": { + "description": "Output only. A unique identifier for the instance generated by the system.", + "readOnly": true, + "type": "string" + }, + "updateTime": { + "description": "Output only. Timestamp when the resource was last modified.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata": { + "description": "Represents the metadata of the long-running operation.", + "id": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata", + "properties": { + "apiVersion": { + "description": "Output only. API version used to start the operation.", + "readOnly": true, + "type": "string" + }, + "createTime": { + "description": "Output only. The time the operation was created.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "endTime": { + "description": "Output only. The time the operation finished running.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "requestedCancellation": { + "description": "Output only. Identifies whether the user has requested cancellation of the operation. Operations that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`.", + "readOnly": true, + "type": "boolean" + }, + "statusMessage": { + "description": "Output only. Human-readable status of the operation, if any.", + "readOnly": true, + "type": "string" + }, + "target": { + "description": "Output only. Server-defined resource path for the target of the operation.", + "readOnly": true, + "type": "string" + }, + "verb": { + "description": "Output only. Name of the verb executed by the operation.", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, "GoogleCloudBeyondcorpSaasplatformInsightsV1alphaAppliedConfig": { "description": "The configuration that was applied to generate the result.", "id": "GoogleCloudBeyondcorpSaasplatformInsightsV1alphaAppliedConfig", diff --git a/beyondcorp/v1alpha/beyondcorp-gen.go b/beyondcorp/v1alpha/beyondcorp-gen.go index 400cbcab5e2..1bd8b378745 100644 --- a/beyondcorp/v1alpha/beyondcorp-gen.go +++ b/beyondcorp/v1alpha/beyondcorp-gen.go @@ -196,6 +196,7 @@ func NewProjectsLocationsService(s *Service) *ProjectsLocationsService { rs.Connections = NewProjectsLocationsConnectionsService(s) rs.Connectors = NewProjectsLocationsConnectorsService(s) rs.Insights = NewProjectsLocationsInsightsService(s) + rs.NetConnections = NewProjectsLocationsNetConnectionsService(s) rs.Operations = NewProjectsLocationsOperationsService(s) return rs } @@ -221,6 +222,8 @@ type ProjectsLocationsService struct { Insights *ProjectsLocationsInsightsService + NetConnections *ProjectsLocationsNetConnectionsService + Operations *ProjectsLocationsOperationsService } @@ -305,6 +308,15 @@ type ProjectsLocationsInsightsService struct { s *Service } +func NewProjectsLocationsNetConnectionsService(s *Service) *ProjectsLocationsNetConnectionsService { + rs := &ProjectsLocationsNetConnectionsService{s: s} + return rs +} + +type ProjectsLocationsNetConnectionsService struct { + s *Service +} + func NewProjectsLocationsOperationsService(s *Service) *ProjectsLocationsOperationsService { rs := &ProjectsLocationsOperationsService{s: s} return rs @@ -2716,6 +2728,180 @@ func (s *GoogleCloudBeyondcorpClientgatewaysV1ClientGatewayOperationMetadata) Ma return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse: +// Response message for BeyondCorp.ListNetConnections. +type GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse struct { + // NetConnections: A list of BeyondCorp NetConnections in the project. + NetConnections []*GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection `json:"netConnections,omitempty"` + + // NextPageToken: A token to retrieve the next page of results, or empty + // if there are no more results in the list. + NextPageToken string `json:"nextPageToken,omitempty"` + + // Unreachable: A list of locations that could not be reached. + Unreachable []string `json:"unreachable,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NetConnections") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NetConnections") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection: A BeyondCorp +// NetConnection resource represents a BeyondCorp protected connection +// from BeyondCorp Client Connector to a remote application through a +// BeyondCorp AppConnector gateway. +type GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection struct { + // Connectors: Optional. List of + // [google.cloud.beyondcorp.v1main.AppConnector.name] that are + // authorized to be associated with this NetConnection. e.g. + // projects/{project}/locations/{location}/appConnectors/{app_connector} + Connectors []string `json:"connectors,omitempty"` + + // CreateTime: Output only. Timestamp when the resource was created. + CreateTime string `json:"createTime,omitempty"` + + // DestinationCidrs: Required. CIDRs for the remote networks to connect + // to. e.g. IPv4: 198.51.100.14/24 IPv6: 2001:db8::/48 + DestinationCidrs []string `json:"destinationCidrs,omitempty"` + + // DisplayName: Optional. An arbitrary user-provided name for the + // NetConnection. Cannot exceed 64 characters. + DisplayName string `json:"displayName,omitempty"` + + // Labels: Optional. Resource labels to represent user provided + // metadata. + Labels map[string]string `json:"labels,omitempty"` + + // Name: Required. Unique resource name of the NetConnection. The name + // is ignored when creating a NetConnection. + Name string `json:"name,omitempty"` + + // NetworkVpc: Output only. The full name of the VPC network connected + // to the applications. Client Connector will send traffic here. + NetworkVpc string `json:"networkVpc,omitempty"` + + // State: Output only. The current state of the NetConnection. + // + // Possible values: + // "STATE_UNSPECIFIED" - Default value. This value is unused. + // "CREATING" - NetConnection is being created. + // "CREATED" - NetConnection has been created. + // "UPDATING" - NetConnection's configuration is being updated. + // "DELETING" - NetConnection is being deleted. + // "DOWN" - NetConnection is down and may be restored in the future. + // This happens when CCFE sends ProjectState = OFF. + State string `json:"state,omitempty"` + + // Uid: Output only. A unique identifier for the instance generated by + // the system. + Uid string `json:"uid,omitempty"` + + // UpdateTime: Output only. Timestamp when the resource was last + // modified. + UpdateTime string `json:"updateTime,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Connectors") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Connectors") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetada +// ta: Represents the metadata of the long-running operation. +type GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata struct { + // ApiVersion: Output only. API version used to start the operation. + ApiVersion string `json:"apiVersion,omitempty"` + + // CreateTime: Output only. The time the operation was created. + CreateTime string `json:"createTime,omitempty"` + + // EndTime: Output only. The time the operation finished running. + EndTime string `json:"endTime,omitempty"` + + // RequestedCancellation: Output only. Identifies whether the user has + // requested cancellation of the operation. Operations that have + // successfully been cancelled have Operation.error value with a + // google.rpc.Status.code of 1, corresponding to `Code.CANCELLED`. + RequestedCancellation bool `json:"requestedCancellation,omitempty"` + + // StatusMessage: Output only. Human-readable status of the operation, + // if any. + StatusMessage string `json:"statusMessage,omitempty"` + + // Target: Output only. Server-defined resource path for the target of + // the operation. + Target string `json:"target,omitempty"` + + // Verb: Output only. Name of the verb executed by the operation. + Verb string `json:"verb,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ApiVersion") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ApiVersion") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnectionOperationMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // GoogleCloudBeyondcorpSaasplatformInsightsV1alphaAppliedConfig: The // configuration that was applied to generate the result. type GoogleCloudBeyondcorpSaasplatformInsightsV1alphaAppliedConfig struct { @@ -17361,6 +17547,1427 @@ func (c *ProjectsLocationsInsightsListCall) Pages(ctx context.Context, f func(*G } } +// method id "beyondcorp.projects.locations.netConnections.create": + +type ProjectsLocationsNetConnectionsCreateCall struct { + s *Service + parent string + googlecloudbeyondcorpnetconnectionsv1alphanetconnection *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a new NetConnection in a given project and location. +// +// - parent: The resource project name of the NetConnection location +// using the form: `projects/{project_id}/locations/{location_id}`. +func (r *ProjectsLocationsNetConnectionsService) Create(parent string, googlecloudbeyondcorpnetconnectionsv1alphanetconnection *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection) *ProjectsLocationsNetConnectionsCreateCall { + c := &ProjectsLocationsNetConnectionsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + c.googlecloudbeyondcorpnetconnectionsv1alphanetconnection = googlecloudbeyondcorpnetconnectionsv1alphanetconnection + return c +} + +// NetConnectionId sets the optional parameter "netConnectionId": +// User-settable NetConnection resource ID. * Must start with a letter. +// * Must contain between 4-63 characters from `/a-z-/`. * Must end with +// a number or a letter. +func (c *ProjectsLocationsNetConnectionsCreateCall) NetConnectionId(netConnectionId string) *ProjectsLocationsNetConnectionsCreateCall { + c.urlParams_.Set("netConnectionId", netConnectionId) + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. The server will guarantee +// that for at least 60 minutes since the first request. For example, +// consider a situation where you make an initial request and t he +// request times out. If you make the request again with the same +// request ID, the server can check if original operation with the same +// request ID was received, and if so, will ignore the second request. +// This prevents clients from accidentally creating duplicate +// commitments. The request ID must be a valid UUID with the exception +// that zero UUID is not supported +// (00000000-0000-0000-0000-000000000000). +func (c *ProjectsLocationsNetConnectionsCreateCall) RequestId(requestId string) *ProjectsLocationsNetConnectionsCreateCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// ValidateOnly sets the optional parameter "validateOnly": If set, +// validates request by executing a dry-run which would not alter the +// resource in any way. +func (c *ProjectsLocationsNetConnectionsCreateCall) ValidateOnly(validateOnly bool) *ProjectsLocationsNetConnectionsCreateCall { + c.urlParams_.Set("validateOnly", fmt.Sprint(validateOnly)) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsNetConnectionsCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsNetConnectionsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsNetConnectionsCreateCall) Context(ctx context.Context) *ProjectsLocationsNetConnectionsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsNetConnectionsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsNetConnectionsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudbeyondcorpnetconnectionsv1alphanetconnection) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+parent}/netConnections") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.projects.locations.netConnections.create" call. +// Exactly one of *GoogleLongrunningOperation or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *GoogleLongrunningOperation.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsNetConnectionsCreateCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleLongrunningOperation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a new NetConnection in a given project and location.", + // "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections", + // "httpMethod": "POST", + // "id": "beyondcorp.projects.locations.netConnections.create", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "netConnectionId": { + // "description": "Optional. User-settable NetConnection resource ID. * Must start with a letter. * Must contain between 4-63 characters from `/a-z-/`. * Must end with a number or a letter.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "Required. The resource project name of the NetConnection location using the form: `projects/{project_id}/locations/{location_id}`", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // }, + // "validateOnly": { + // "description": "Optional. If set, validates request by executing a dry-run which would not alter the resource in any way.", + // "location": "query", + // "type": "boolean" + // } + // }, + // "path": "v1alpha/{+parent}/netConnections", + // "request": { + // "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection" + // }, + // "response": { + // "$ref": "GoogleLongrunningOperation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "beyondcorp.projects.locations.netConnections.delete": + +type ProjectsLocationsNetConnectionsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a single NetConnection. +// +// - name: BeyondCorp Connector name using the form: +// `projects/{project_id}/locations/{location_id}/netConnections/{net_c +// onnection_id}`. +func (r *ProjectsLocationsNetConnectionsService) Delete(name string) *ProjectsLocationsNetConnectionsDeleteCall { + c := &ProjectsLocationsNetConnectionsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. The server will guarantee +// that for at least 60 minutes after the first request. For example, +// consider a situation where you make an initial request and t he +// request times out. If you make the request again with the same +// request ID, the server can check if original operation with the same +// request ID was received, and if so, will ignore the second request. +// This prevents clients from accidentally creating duplicate +// commitments. The request ID must be a valid UUID with the exception +// that zero UUID is not supported +// (00000000-0000-0000-0000-000000000000). +func (c *ProjectsLocationsNetConnectionsDeleteCall) RequestId(requestId string) *ProjectsLocationsNetConnectionsDeleteCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// ValidateOnly sets the optional parameter "validateOnly": If set, +// validates request by executing a dry-run which would not alter the +// resource in any way. +func (c *ProjectsLocationsNetConnectionsDeleteCall) ValidateOnly(validateOnly bool) *ProjectsLocationsNetConnectionsDeleteCall { + c.urlParams_.Set("validateOnly", fmt.Sprint(validateOnly)) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsNetConnectionsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsNetConnectionsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsNetConnectionsDeleteCall) Context(ctx context.Context) *ProjectsLocationsNetConnectionsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsNetConnectionsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsNetConnectionsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("DELETE", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.projects.locations.netConnections.delete" call. +// Exactly one of *GoogleLongrunningOperation or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *GoogleLongrunningOperation.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsNetConnectionsDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleLongrunningOperation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a single NetConnection.", + // "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}", + // "httpMethod": "DELETE", + // "id": "beyondcorp.projects.locations.netConnections.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. BeyondCorp Connector name using the form: `projects/{project_id}/locations/{location_id}/netConnections/{net_connection_id}`", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes after the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // }, + // "validateOnly": { + // "description": "Optional. If set, validates request by executing a dry-run which would not alter the resource in any way.", + // "location": "query", + // "type": "boolean" + // } + // }, + // "path": "v1alpha/{+name}", + // "response": { + // "$ref": "GoogleLongrunningOperation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "beyondcorp.projects.locations.netConnections.get": + +type ProjectsLocationsNetConnectionsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets details of a single NetConnection. +// +// - name: BeyondCorp NetConnection name using the form: +// `projects/{project_id}/locations/{location_id}/netConnections/{net_c +// onnection_id}`. +func (r *ProjectsLocationsNetConnectionsService) Get(name string) *ProjectsLocationsNetConnectionsGetCall { + c := &ProjectsLocationsNetConnectionsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsNetConnectionsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsNetConnectionsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsNetConnectionsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsNetConnectionsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsNetConnectionsGetCall) Context(ctx context.Context) *ProjectsLocationsNetConnectionsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsNetConnectionsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsNetConnectionsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.projects.locations.netConnections.get" call. +// Exactly one of +// *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection.ServerRespons +// e.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *ProjectsLocationsNetConnectionsGetCall) Do(opts ...googleapi.CallOption) (*GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets details of a single NetConnection.", + // "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}", + // "httpMethod": "GET", + // "id": "beyondcorp.projects.locations.netConnections.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. BeyondCorp NetConnection name using the form: `projects/{project_id}/locations/{location_id}/netConnections/{net_connection_id}`", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+name}", + // "response": { + // "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "beyondcorp.projects.locations.netConnections.getIamPolicy": + +type ProjectsLocationsNetConnectionsGetIamPolicyCall struct { + s *Service + resource string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// GetIamPolicy: Gets the access control policy for a resource. Returns +// an empty policy if the resource exists and does not have a policy +// set. +// +// - resource: REQUIRED: The resource for which the policy is being +// requested. See Resource names +// (https://cloud.google.com/apis/design/resource_names) for the +// appropriate value for this field. +func (r *ProjectsLocationsNetConnectionsService) GetIamPolicy(resource string) *ProjectsLocationsNetConnectionsGetIamPolicyCall { + c := &ProjectsLocationsNetConnectionsGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.resource = resource + return c +} + +// OptionsRequestedPolicyVersion sets the optional parameter +// "options.requestedPolicyVersion": The maximum policy version that +// will be used to format the policy. Valid values are 0, 1, and 3. +// Requests specifying an invalid value will be rejected. Requests for +// policies with any conditional role bindings must specify version 3. +// Policies with no conditional role bindings may specify any valid +// value or leave the field unset. The policy in the response might use +// the policy version that you specified, or it might use a lower policy +// version. For example, if you specify version 3, but the policy has no +// conditional role bindings, the response uses version 1. To learn +// which resources support conditions in their IAM policies, see the IAM +// documentation +// (https://cloud.google.com/iam/help/conditions/resource-policies). +func (c *ProjectsLocationsNetConnectionsGetIamPolicyCall) OptionsRequestedPolicyVersion(optionsRequestedPolicyVersion int64) *ProjectsLocationsNetConnectionsGetIamPolicyCall { + c.urlParams_.Set("options.requestedPolicyVersion", fmt.Sprint(optionsRequestedPolicyVersion)) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsNetConnectionsGetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsLocationsNetConnectionsGetIamPolicyCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsNetConnectionsGetIamPolicyCall) IfNoneMatch(entityTag string) *ProjectsLocationsNetConnectionsGetIamPolicyCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsNetConnectionsGetIamPolicyCall) Context(ctx context.Context) *ProjectsLocationsNetConnectionsGetIamPolicyCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsNetConnectionsGetIamPolicyCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsNetConnectionsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+resource}:getIamPolicy") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "resource": c.resource, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.projects.locations.netConnections.getIamPolicy" call. +// Exactly one of *GoogleIamV1Policy or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *GoogleIamV1Policy.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsNetConnectionsGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*GoogleIamV1Policy, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleIamV1Policy{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.", + // "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}:getIamPolicy", + // "httpMethod": "GET", + // "id": "beyondcorp.projects.locations.netConnections.getIamPolicy", + // "parameterOrder": [ + // "resource" + // ], + // "parameters": { + // "options.requestedPolicyVersion": { + // "description": "Optional. The maximum policy version that will be used to format the policy. Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected. Requests for policies with any conditional role bindings must specify version 3. Policies with no conditional role bindings may specify any valid value or leave the field unset. The policy in the response might use the policy version that you specified, or it might use a lower policy version. For example, if you specify version 3, but the policy has no conditional role bindings, the response uses version 1. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "resource": { + // "description": "REQUIRED: The resource for which the policy is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+resource}:getIamPolicy", + // "response": { + // "$ref": "GoogleIamV1Policy" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "beyondcorp.projects.locations.netConnections.list": + +type ProjectsLocationsNetConnectionsListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists NetConnections in a given project and location. +// +// - parent: The resource name of the NetConnection location using the +// form: `projects/{project_id}/locations/{location_id}`. +func (r *ProjectsLocationsNetConnectionsService) List(parent string) *ProjectsLocationsNetConnectionsListCall { + c := &ProjectsLocationsNetConnectionsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// Filter sets the optional parameter "filter": A filter specifying +// constraints of a list operation. +func (c *ProjectsLocationsNetConnectionsListCall) Filter(filter string) *ProjectsLocationsNetConnectionsListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// OrderBy sets the optional parameter "orderBy": Specifies the ordering +// of results. See Sorting order +// (https://cloud.google.com/apis/design/design_patterns#sorting_order) +// for more information. +func (c *ProjectsLocationsNetConnectionsListCall) OrderBy(orderBy string) *ProjectsLocationsNetConnectionsListCall { + c.urlParams_.Set("orderBy", orderBy) + return c +} + +// PageSize sets the optional parameter "pageSize": The maximum number +// of items to return. If not specified, a default value of 50 will be +// used by the service. Regardless of the page_size value, the response +// may include a partial list and a caller should only rely on +// response's next_page_token to determine if there are more instances +// left to be queried. +func (c *ProjectsLocationsNetConnectionsListCall) PageSize(pageSize int64) *ProjectsLocationsNetConnectionsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The +// next_page_token value returned from a previous +// ListNetConnectionsRequest, if any. +func (c *ProjectsLocationsNetConnectionsListCall) PageToken(pageToken string) *ProjectsLocationsNetConnectionsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsNetConnectionsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsNetConnectionsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsNetConnectionsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsNetConnectionsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsNetConnectionsListCall) Context(ctx context.Context) *ProjectsLocationsNetConnectionsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsNetConnectionsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsNetConnectionsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+parent}/netConnections") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.projects.locations.netConnections.list" call. +// Exactly one of +// *GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse +// or error will be non-nil. Any non-2xx status code is an error. +// Response headers are in either +// *GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse. +// ServerResponse.Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *ProjectsLocationsNetConnectionsListCall) Do(opts ...googleapi.CallOption) (*GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists NetConnections in a given project and location.", + // "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections", + // "httpMethod": "GET", + // "id": "beyondcorp.projects.locations.netConnections.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "filter": { + // "description": "Optional. A filter specifying constraints of a list operation.", + // "location": "query", + // "type": "string" + // }, + // "orderBy": { + // "description": "Optional. Specifies the ordering of results. See [Sorting order](https://cloud.google.com/apis/design/design_patterns#sorting_order) for more information.", + // "location": "query", + // "type": "string" + // }, + // "pageSize": { + // "description": "Optional. The maximum number of items to return. If not specified, a default value of 50 will be used by the service. Regardless of the page_size value, the response may include a partial list and a caller should only rely on response's next_page_token to determine if there are more instances left to be queried.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "Optional. The next_page_token value returned from a previous ListNetConnectionsRequest, if any.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "Required. The resource name of the NetConnection location using the form: `projects/{project_id}/locations/{location_id}`", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+parent}/netConnections", + // "response": { + // "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *ProjectsLocationsNetConnectionsListCall) Pages(ctx context.Context, f func(*GoogleCloudBeyondcorpNetconnectionsV1alphaListNetConnectionsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "beyondcorp.projects.locations.netConnections.patch": + +type ProjectsLocationsNetConnectionsPatchCall struct { + s *Service + name string + googlecloudbeyondcorpnetconnectionsv1alphanetconnection *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates the parameters of a single NetConnection. +// +// - name: Unique resource name of the NetConnection. The name is +// ignored when creating a NetConnection. +func (r *ProjectsLocationsNetConnectionsService) Patch(name string, googlecloudbeyondcorpnetconnectionsv1alphanetconnection *GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection) *ProjectsLocationsNetConnectionsPatchCall { + c := &ProjectsLocationsNetConnectionsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.googlecloudbeyondcorpnetconnectionsv1alphanetconnection = googlecloudbeyondcorpnetconnectionsv1alphanetconnection + return c +} + +// AllowMissing sets the optional parameter "allowMissing": If set as +// true, will create the resource if it is not found. +func (c *ProjectsLocationsNetConnectionsPatchCall) AllowMissing(allowMissing bool) *ProjectsLocationsNetConnectionsPatchCall { + c.urlParams_.Set("allowMissing", fmt.Sprint(allowMissing)) + return c +} + +// RequestId sets the optional parameter "requestId": An optional +// request ID to identify requests. Specify a unique request ID so that +// if you must retry your request, the server will know to ignore the +// request if it has already been completed. The server will guarantee +// that for at least 60 minutes since the first request. For example, +// consider a situation where you make an initial request and t he +// request times out. If you make the request again with the same +// request ID, the server can check if original operation with the same +// request ID was received, and if so, will ignore the second request. +// This prevents clients from accidentally creating duplicate +// commitments. The request ID must be a valid UUID with the exception +// that zero UUID is not supported +// (00000000-0000-0000-0000-000000000000). +func (c *ProjectsLocationsNetConnectionsPatchCall) RequestId(requestId string) *ProjectsLocationsNetConnectionsPatchCall { + c.urlParams_.Set("requestId", requestId) + return c +} + +// UpdateMask sets the optional parameter "updateMask": Required. Mask +// of fields to update. At least one path must be supplied in this +// field. The elements of the repeated paths field may only include +// these fields from [BeyondCorp.NetConnection]: * `labels` * +// `display_name` +func (c *ProjectsLocationsNetConnectionsPatchCall) UpdateMask(updateMask string) *ProjectsLocationsNetConnectionsPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// ValidateOnly sets the optional parameter "validateOnly": If set, +// validates request by executing a dry-run which would not alter the +// resource in any way. +func (c *ProjectsLocationsNetConnectionsPatchCall) ValidateOnly(validateOnly bool) *ProjectsLocationsNetConnectionsPatchCall { + c.urlParams_.Set("validateOnly", fmt.Sprint(validateOnly)) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsNetConnectionsPatchCall) Fields(s ...googleapi.Field) *ProjectsLocationsNetConnectionsPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsNetConnectionsPatchCall) Context(ctx context.Context) *ProjectsLocationsNetConnectionsPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsNetConnectionsPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsNetConnectionsPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudbeyondcorpnetconnectionsv1alphanetconnection) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("PATCH", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.projects.locations.netConnections.patch" call. +// Exactly one of *GoogleLongrunningOperation or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *GoogleLongrunningOperation.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsNetConnectionsPatchCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleLongrunningOperation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates the parameters of a single NetConnection.", + // "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}", + // "httpMethod": "PATCH", + // "id": "beyondcorp.projects.locations.netConnections.patch", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "allowMissing": { + // "description": "Optional. If set as true, will create the resource if it is not found.", + // "location": "query", + // "type": "boolean" + // }, + // "name": { + // "description": "Required. Unique resource name of the NetConnection. The name is ignored when creating a NetConnection.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "requestId": { + // "description": "Optional. An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed. The server will guarantee that for at least 60 minutes since the first request. For example, consider a situation where you make an initial request and t he request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments. The request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).", + // "location": "query", + // "type": "string" + // }, + // "updateMask": { + // "description": "Required. Mask of fields to update. At least one path must be supplied in this field. The elements of the repeated paths field may only include these fields from [BeyondCorp.NetConnection]: * `labels` * `display_name`", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // }, + // "validateOnly": { + // "description": "Optional. If set, validates request by executing a dry-run which would not alter the resource in any way.", + // "location": "query", + // "type": "boolean" + // } + // }, + // "path": "v1alpha/{+name}", + // "request": { + // "$ref": "GoogleCloudBeyondcorpNetconnectionsV1alphaNetConnection" + // }, + // "response": { + // "$ref": "GoogleLongrunningOperation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "beyondcorp.projects.locations.netConnections.setIamPolicy": + +type ProjectsLocationsNetConnectionsSetIamPolicyCall struct { + s *Service + resource string + googleiamv1setiampolicyrequest *GoogleIamV1SetIamPolicyRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// SetIamPolicy: Sets the access control policy on the specified +// resource. Replaces any existing policy. Can return `NOT_FOUND`, +// `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors. +// +// - resource: REQUIRED: The resource for which the policy is being +// specified. See Resource names +// (https://cloud.google.com/apis/design/resource_names) for the +// appropriate value for this field. +func (r *ProjectsLocationsNetConnectionsService) SetIamPolicy(resource string, googleiamv1setiampolicyrequest *GoogleIamV1SetIamPolicyRequest) *ProjectsLocationsNetConnectionsSetIamPolicyCall { + c := &ProjectsLocationsNetConnectionsSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.resource = resource + c.googleiamv1setiampolicyrequest = googleiamv1setiampolicyrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsNetConnectionsSetIamPolicyCall) Fields(s ...googleapi.Field) *ProjectsLocationsNetConnectionsSetIamPolicyCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsNetConnectionsSetIamPolicyCall) Context(ctx context.Context) *ProjectsLocationsNetConnectionsSetIamPolicyCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsNetConnectionsSetIamPolicyCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsNetConnectionsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googleiamv1setiampolicyrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+resource}:setIamPolicy") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "resource": c.resource, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.projects.locations.netConnections.setIamPolicy" call. +// Exactly one of *GoogleIamV1Policy or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *GoogleIamV1Policy.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsNetConnectionsSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*GoogleIamV1Policy, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleIamV1Policy{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Sets the access control policy on the specified resource. Replaces any existing policy. Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` errors.", + // "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}:setIamPolicy", + // "httpMethod": "POST", + // "id": "beyondcorp.projects.locations.netConnections.setIamPolicy", + // "parameterOrder": [ + // "resource" + // ], + // "parameters": { + // "resource": { + // "description": "REQUIRED: The resource for which the policy is being specified. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+resource}:setIamPolicy", + // "request": { + // "$ref": "GoogleIamV1SetIamPolicyRequest" + // }, + // "response": { + // "$ref": "GoogleIamV1Policy" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "beyondcorp.projects.locations.netConnections.testIamPermissions": + +type ProjectsLocationsNetConnectionsTestIamPermissionsCall struct { + s *Service + resource string + googleiamv1testiampermissionsrequest *GoogleIamV1TestIamPermissionsRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// TestIamPermissions: Returns permissions that a caller has on the +// specified resource. If the resource does not exist, this will return +// an empty set of permissions, not a `NOT_FOUND` error. Note: This +// operation is designed to be used for building permission-aware UIs +// and command-line tools, not for authorization checking. This +// operation may "fail open" without warning. +// +// - resource: REQUIRED: The resource for which the policy detail is +// being requested. See Resource names +// (https://cloud.google.com/apis/design/resource_names) for the +// appropriate value for this field. +func (r *ProjectsLocationsNetConnectionsService) TestIamPermissions(resource string, googleiamv1testiampermissionsrequest *GoogleIamV1TestIamPermissionsRequest) *ProjectsLocationsNetConnectionsTestIamPermissionsCall { + c := &ProjectsLocationsNetConnectionsTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.resource = resource + c.googleiamv1testiampermissionsrequest = googleiamv1testiampermissionsrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsNetConnectionsTestIamPermissionsCall) Fields(s ...googleapi.Field) *ProjectsLocationsNetConnectionsTestIamPermissionsCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsNetConnectionsTestIamPermissionsCall) Context(ctx context.Context) *ProjectsLocationsNetConnectionsTestIamPermissionsCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsNetConnectionsTestIamPermissionsCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsNetConnectionsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googleiamv1testiampermissionsrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1alpha/{+resource}:testIamPermissions") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "resource": c.resource, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "beyondcorp.projects.locations.netConnections.testIamPermissions" call. +// Exactly one of *GoogleIamV1TestIamPermissionsResponse or error will +// be non-nil. Any non-2xx status code is an error. Response headers are +// in either +// *GoogleIamV1TestIamPermissionsResponse.ServerResponse.Header or (if a +// response was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsNetConnectionsTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*GoogleIamV1TestIamPermissionsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleIamV1TestIamPermissionsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a `NOT_FOUND` error. Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may \"fail open\" without warning.", + // "flatPath": "v1alpha/projects/{projectsId}/locations/{locationsId}/netConnections/{netConnectionsId}:testIamPermissions", + // "httpMethod": "POST", + // "id": "beyondcorp.projects.locations.netConnections.testIamPermissions", + // "parameterOrder": [ + // "resource" + // ], + // "parameters": { + // "resource": { + // "description": "REQUIRED: The resource for which the policy detail is being requested. See [Resource names](https://cloud.google.com/apis/design/resource_names) for the appropriate value for this field.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/netConnections/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1alpha/{+resource}:testIamPermissions", + // "request": { + // "$ref": "GoogleIamV1TestIamPermissionsRequest" + // }, + // "response": { + // "$ref": "GoogleIamV1TestIamPermissionsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + // method id "beyondcorp.projects.locations.operations.cancel": type ProjectsLocationsOperationsCancelCall struct { diff --git a/bigquery/v2/bigquery-api.json b/bigquery/v2/bigquery-api.json index 8c3de93aaed..89139000ebd 100644 --- a/bigquery/v2/bigquery-api.json +++ b/bigquery/v2/bigquery-api.json @@ -1710,7 +1710,7 @@ } } }, - "revision": "20220913", + "revision": "20220924", "rootUrl": "https://bigquery.googleapis.com/", "schemas": { "AggregateClassificationMetrics": { @@ -4769,6 +4769,11 @@ "format": "int64", "type": "string" }, + "transferredBytes": { + "description": "[Output-only] Total bytes transferred for cross-cloud queries such as Cross Cloud Transfer and CREATE TABLE AS SELECT (CTAS).", + "format": "int64", + "type": "string" + }, "undeclaredQueryParameters": { "description": "Standard SQL only: list of undeclared query parameters detected during a dry run validation.", "items": { @@ -7579,11 +7584,11 @@ "type": "string" }, "vertexAiModelId": { - "description": "The model id in Vertex AI Model Registry for this training run", + "description": "The model id in the [Vertex AI Model Registry](https://cloud.google.com/vertex-ai/docs/model-registry/introduction) for this training run.", "type": "string" }, "vertexAiModelVersion": { - "description": "Output only. The model version in Vertex AI Model Registry for this training run", + "description": "Output only. The model version in the [Vertex AI Model Registry](https://cloud.google.com/vertex-ai/docs/model-registry/introduction) for this training run.", "readOnly": true, "type": "string" } diff --git a/bigquery/v2/bigquery-gen.go b/bigquery/v2/bigquery-gen.go index ea70af8d849..5dcae556e7d 100644 --- a/bigquery/v2/bigquery-gen.go +++ b/bigquery/v2/bigquery-gen.go @@ -5263,6 +5263,11 @@ type JobStatistics2 struct { // TotalSlotMs: [Output only] Slot-milliseconds for the job. TotalSlotMs int64 `json:"totalSlotMs,omitempty,string"` + // TransferredBytes: [Output-only] Total bytes transferred for + // cross-cloud queries such as Cross Cloud Transfer and CREATE TABLE AS + // SELECT (CTAS). + TransferredBytes int64 `json:"transferredBytes,omitempty,string"` + // UndeclaredQueryParameters: Standard SQL only: list of undeclared // query parameters detected during a dry run validation. UndeclaredQueryParameters []*QueryParameter `json:"undeclaredQueryParameters,omitempty"` @@ -9353,12 +9358,15 @@ type TrainingRun struct { // in milliseconds since epoch. TrainingStartTime int64 `json:"trainingStartTime,omitempty,string"` - // VertexAiModelId: The model id in Vertex AI Model Registry for this - // training run + // VertexAiModelId: The model id in the Vertex AI Model Registry + // (https://cloud.google.com/vertex-ai/docs/model-registry/introduction) + // for this training run. VertexAiModelId string `json:"vertexAiModelId,omitempty"` - // VertexAiModelVersion: Output only. The model version in Vertex AI - // Model Registry for this training run + // VertexAiModelVersion: Output only. The model version in the Vertex AI + // Model Registry + // (https://cloud.google.com/vertex-ai/docs/model-registry/introduction) + // for this training run. VertexAiModelVersion string `json:"vertexAiModelVersion,omitempty"` // ForceSendFields is a list of field names (e.g. diff --git a/bigquerydatatransfer/v1/bigquerydatatransfer-api.json b/bigquerydatatransfer/v1/bigquerydatatransfer-api.json index 137a6e5aeea..d02e2fb6114 100644 --- a/bigquerydatatransfer/v1/bigquerydatatransfer-api.json +++ b/bigquerydatatransfer/v1/bigquerydatatransfer-api.json @@ -457,7 +457,7 @@ ], "parameters": { "authorizationCode": { - "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", + "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", "location": "query", "type": "string" }, @@ -474,7 +474,7 @@ "type": "string" }, "versionInfo": { - "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", + "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", "location": "query", "type": "string" } @@ -597,7 +597,7 @@ ], "parameters": { "authorizationCode": { - "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", + "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", "location": "query", "type": "string" }, @@ -620,7 +620,7 @@ "type": "string" }, "versionInfo": { - "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", + "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", "location": "query", "type": "string" } @@ -904,7 +904,7 @@ ], "parameters": { "authorizationCode": { - "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", + "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", "location": "query", "type": "string" }, @@ -921,7 +921,7 @@ "type": "string" }, "versionInfo": { - "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", + "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", "location": "query", "type": "string" } @@ -1044,7 +1044,7 @@ ], "parameters": { "authorizationCode": { - "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", + "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", "location": "query", "type": "string" }, @@ -1067,7 +1067,7 @@ "type": "string" }, "versionInfo": { - "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", + "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", "location": "query", "type": "string" } @@ -1340,7 +1340,7 @@ } } }, - "revision": "20220716", + "revision": "20221001", "rootUrl": "https://bigquerydatatransfer.googleapis.com/", "schemas": { "CheckValidCredsRequest": { diff --git a/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go b/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go index 523a19ccf7e..c1484b49042 100644 --- a/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go +++ b/bigquerydatatransfer/v1/bigquerydatatransfer-gen.go @@ -3120,10 +3120,8 @@ func (r *ProjectsLocationsTransferConfigsService) Create(parent string, transfer // is 'youtube_channel' and new credentials are needed, as indicated by // `CheckValidCreds`. In order to obtain authorization_code, make a // request to the following URL: -// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? -// client_id=client_id&scope=data_source_scopes -// &redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_co -// de * The client_id is the OAuth client_id of the a data source as +// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_code&client_id=client_id&scope=data_source_scopes +// * The client_id is the OAuth client_id of the a data source as // returned by ListDataSources method. * data_source_scopes are the // scopes returned by ListDataSources method. Note that this should not // be set when `service_account_name` is used to create the transfer @@ -3151,13 +3149,12 @@ func (c *ProjectsLocationsTransferConfigsCreateCall) ServiceAccountName(serviceA // is not 'youtube_channel' and new credentials are needed, as indicated // by `CheckValidCreds`. In order to obtain version info, make a request // to the following URL: -// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? -// client_id=client_id&scope=data_source_scopes -// &redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info * -// The client_id is the OAuth client_id of the a data source as returned -// by ListDataSources method. * data_source_scopes are the scopes -// returned by ListDataSources method. Note that this should not be set -// when `service_account_name` is used to create the transfer config. +// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info&client_id=client_id&scope=data_source_scopes +// * The client_id is the OAuth client_id of the a data source as +// returned by ListDataSources method. * data_source_scopes are the +// scopes returned by ListDataSources method. Note that this should not +// be set when `service_account_name` is used to create the transfer +// config. func (c *ProjectsLocationsTransferConfigsCreateCall) VersionInfo(versionInfo string) *ProjectsLocationsTransferConfigsCreateCall { c.urlParams_.Set("versionInfo", versionInfo) return c @@ -3263,7 +3260,7 @@ func (c *ProjectsLocationsTransferConfigsCreateCall) Do(opts ...googleapi.CallOp // ], // "parameters": { // "authorizationCode": { - // "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", + // "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", // "location": "query", // "type": "string" // }, @@ -3280,7 +3277,7 @@ func (c *ProjectsLocationsTransferConfigsCreateCall) Do(opts ...googleapi.CallOp // "type": "string" // }, // "versionInfo": { - // "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", + // "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", // "location": "query", // "type": "string" // } @@ -3835,10 +3832,8 @@ func (r *ProjectsLocationsTransferConfigsService) Patch(name string, transfercon // is 'youtube_channel' and new credentials are needed, as indicated by // `CheckValidCreds`. In order to obtain authorization_code, make a // request to the following URL: -// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? -// client_id=client_id&scope=data_source_scopes -// &redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_co -// de * The client_id is the OAuth client_id of the a data source as +// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_code&client_id=client_id&scope=data_source_scopes +// * The client_id is the OAuth client_id of the a data source as // returned by ListDataSources method. * data_source_scopes are the // scopes returned by ListDataSources method. Note that this should not // be set when `service_account_name` is used to update the transfer @@ -3873,13 +3868,12 @@ func (c *ProjectsLocationsTransferConfigsPatchCall) UpdateMask(updateMask string // is not 'youtube_channel' and new credentials are needed, as indicated // by `CheckValidCreds`. In order to obtain version info, make a request // to the following URL: -// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? -// client_id=client_id&scope=data_source_scopes -// &redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info * -// The client_id is the OAuth client_id of the a data source as returned -// by ListDataSources method. * data_source_scopes are the scopes -// returned by ListDataSources method. Note that this should not be set -// when `service_account_name` is used to update the transfer config. +// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info&client_id=client_id&scope=data_source_scopes +// * The client_id is the OAuth client_id of the a data source as +// returned by ListDataSources method. * data_source_scopes are the +// scopes returned by ListDataSources method. Note that this should not +// be set when `service_account_name` is used to update the transfer +// config. func (c *ProjectsLocationsTransferConfigsPatchCall) VersionInfo(versionInfo string) *ProjectsLocationsTransferConfigsPatchCall { c.urlParams_.Set("versionInfo", versionInfo) return c @@ -3985,7 +3979,7 @@ func (c *ProjectsLocationsTransferConfigsPatchCall) Do(opts ...googleapi.CallOpt // ], // "parameters": { // "authorizationCode": { - // "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", + // "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", // "location": "query", // "type": "string" // }, @@ -4008,7 +4002,7 @@ func (c *ProjectsLocationsTransferConfigsPatchCall) Do(opts ...googleapi.CallOpt // "type": "string" // }, // "versionInfo": { - // "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", + // "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", // "location": "query", // "type": "string" // } @@ -5151,10 +5145,8 @@ func (r *ProjectsTransferConfigsService) Create(parent string, transferconfig *T // is 'youtube_channel' and new credentials are needed, as indicated by // `CheckValidCreds`. In order to obtain authorization_code, make a // request to the following URL: -// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? -// client_id=client_id&scope=data_source_scopes -// &redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_co -// de * The client_id is the OAuth client_id of the a data source as +// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_code&client_id=client_id&scope=data_source_scopes +// * The client_id is the OAuth client_id of the a data source as // returned by ListDataSources method. * data_source_scopes are the // scopes returned by ListDataSources method. Note that this should not // be set when `service_account_name` is used to create the transfer @@ -5182,13 +5174,12 @@ func (c *ProjectsTransferConfigsCreateCall) ServiceAccountName(serviceAccountNam // is not 'youtube_channel' and new credentials are needed, as indicated // by `CheckValidCreds`. In order to obtain version info, make a request // to the following URL: -// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? -// client_id=client_id&scope=data_source_scopes -// &redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info * -// The client_id is the OAuth client_id of the a data source as returned -// by ListDataSources method. * data_source_scopes are the scopes -// returned by ListDataSources method. Note that this should not be set -// when `service_account_name` is used to create the transfer config. +// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info&client_id=client_id&scope=data_source_scopes +// * The client_id is the OAuth client_id of the a data source as +// returned by ListDataSources method. * data_source_scopes are the +// scopes returned by ListDataSources method. Note that this should not +// be set when `service_account_name` is used to create the transfer +// config. func (c *ProjectsTransferConfigsCreateCall) VersionInfo(versionInfo string) *ProjectsTransferConfigsCreateCall { c.urlParams_.Set("versionInfo", versionInfo) return c @@ -5294,7 +5285,7 @@ func (c *ProjectsTransferConfigsCreateCall) Do(opts ...googleapi.CallOption) (*T // ], // "parameters": { // "authorizationCode": { - // "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", + // "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", // "location": "query", // "type": "string" // }, @@ -5311,7 +5302,7 @@ func (c *ProjectsTransferConfigsCreateCall) Do(opts ...googleapi.CallOption) (*T // "type": "string" // }, // "versionInfo": { - // "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", + // "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to create the transfer config.", // "location": "query", // "type": "string" // } @@ -5866,10 +5857,8 @@ func (r *ProjectsTransferConfigsService) Patch(name string, transferconfig *Tran // is 'youtube_channel' and new credentials are needed, as indicated by // `CheckValidCreds`. In order to obtain authorization_code, make a // request to the following URL: -// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? -// client_id=client_id&scope=data_source_scopes -// &redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_co -// de * The client_id is the OAuth client_id of the a data source as +// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=authorization_code&client_id=client_id&scope=data_source_scopes +// * The client_id is the OAuth client_id of the a data source as // returned by ListDataSources method. * data_source_scopes are the // scopes returned by ListDataSources method. Note that this should not // be set when `service_account_name` is used to update the transfer @@ -5904,13 +5893,12 @@ func (c *ProjectsTransferConfigsPatchCall) UpdateMask(updateMask string) *Projec // is not 'youtube_channel' and new credentials are needed, as indicated // by `CheckValidCreds`. In order to obtain version info, make a request // to the following URL: -// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? -// client_id=client_id&scope=data_source_scopes -// &redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info * -// The client_id is the OAuth client_id of the a data source as returned -// by ListDataSources method. * data_source_scopes are the scopes -// returned by ListDataSources method. Note that this should not be set -// when `service_account_name` is used to update the transfer config. +// https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=version_info&client_id=client_id&scope=data_source_scopes +// * The client_id is the OAuth client_id of the a data source as +// returned by ListDataSources method. * data_source_scopes are the +// scopes returned by ListDataSources method. Note that this should not +// be set when `service_account_name` is used to update the transfer +// config. func (c *ProjectsTransferConfigsPatchCall) VersionInfo(versionInfo string) *ProjectsTransferConfigsPatchCall { c.urlParams_.Set("versionInfo", versionInfo) return c @@ -6016,7 +6004,7 @@ func (c *ProjectsTransferConfigsPatchCall) Do(opts ...googleapi.CallOption) (*Tr // ], // "parameters": { // "authorizationCode": { - // "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", + // "description": "Optional OAuth2 authorization code to use with this transfer configuration. This is required only if `transferConfig.dataSourceId` is 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain authorization_code, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=authorization_code\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", // "location": "query", // "type": "string" // }, @@ -6039,7 +6027,7 @@ func (c *ProjectsTransferConfigsPatchCall) Do(opts ...googleapi.CallOption) (*Tr // "type": "string" // }, // "versionInfo": { - // "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth? client_id=client_id\u0026scope=data_source_scopes \u0026redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", + // "description": "Optional version info. This is required only if `transferConfig.dataSourceId` is not 'youtube_channel' and new credentials are needed, as indicated by `CheckValidCreds`. In order to obtain version info, make a request to the following URL: https://www.gstatic.com/bigquerydatatransfer/oauthz/auth?redirect_uri=urn:ietf:wg:oauth:2.0:oob\u0026response_type=version_info\u0026client_id=client_id\u0026scope=data_source_scopes * The client_id is the OAuth client_id of the a data source as returned by ListDataSources method. * data_source_scopes are the scopes returned by ListDataSources method. Note that this should not be set when `service_account_name` is used to update the transfer config.", // "location": "query", // "type": "string" // } diff --git a/certificatemanager/v1/certificatemanager-api.json b/certificatemanager/v1/certificatemanager-api.json index b86fee43e1a..7afbf4af8de 100644 --- a/certificatemanager/v1/certificatemanager-api.json +++ b/certificatemanager/v1/certificatemanager-api.json @@ -177,6 +177,139 @@ } }, "resources": { + "certificateIssuanceConfigs": { + "methods": { + "create": { + "description": "Creates a new CertificateIssuanceConfig in a given project and location.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateIssuanceConfigs", + "httpMethod": "POST", + "id": "certificatemanager.projects.locations.certificateIssuanceConfigs.create", + "parameterOrder": [ + "parent" + ], + "parameters": { + "certificateIssuanceConfigId": { + "description": "Required. A user-provided name of the certificate config.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. The parent resource of the certificate issuance config. Must be in the format `projects/*/locations/*`.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/certificateIssuanceConfigs", + "request": { + "$ref": "CertificateIssuanceConfig" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes a single CertificateIssuanceConfig.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateIssuanceConfigs/{certificateIssuanceConfigsId}", + "httpMethod": "DELETE", + "id": "certificatemanager.projects.locations.certificateIssuanceConfigs.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. A name of the certificate issuance config to delete. Must be in the format `projects/*/locations/*/certificateIssuanceConfigs/*`.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/certificateIssuanceConfigs/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets details of a single CertificateIssuanceConfig.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateIssuanceConfigs/{certificateIssuanceConfigsId}", + "httpMethod": "GET", + "id": "certificatemanager.projects.locations.certificateIssuanceConfigs.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. A name of the certificate issuance config to describe. Must be in the format `projects/*/locations/*/certificateIssuanceConfigs/*`.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/certificateIssuanceConfigs/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "response": { + "$ref": "CertificateIssuanceConfig" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists CertificateIssuanceConfigs in a given project and location.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateIssuanceConfigs", + "httpMethod": "GET", + "id": "certificatemanager.projects.locations.certificateIssuanceConfigs.list", + "parameterOrder": [ + "parent" + ], + "parameters": { + "filter": { + "description": "Filter expression to restrict the Certificates Configs returned.", + "location": "query", + "type": "string" + }, + "orderBy": { + "description": "A list of Certificate Config field names used to specify the order of the returned results. The default sorting order is ascending. To specify descending order for a field, add a suffix \" desc\".", + "location": "query", + "type": "string" + }, + "pageSize": { + "description": "Maximum number of certificate configs to return per call.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "The value returned by the last `ListCertificateIssuanceConfigsResponse`. Indicates that this is a continuation of a prior `ListCertificateIssuanceConfigs` call, and that the system should return the next page of data.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. The project and location from which the certificate should be listed, specified in the format `projects/*/locations/*`.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/certificateIssuanceConfigs", + "response": { + "$ref": "ListCertificateIssuanceConfigsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + }, "certificateMaps": { "methods": { "create": { @@ -975,7 +1108,7 @@ } } }, - "revision": "20220914", + "revision": "20220927", "rootUrl": "https://certificatemanager.googleapis.com/", "schemas": { "AuthorizationAttemptInfo": { @@ -1107,6 +1240,90 @@ }, "type": "object" }, + "CertificateAuthorityConfig": { + "description": "The CA that issues the workload certificate. It includes CA address, type, authentication to CA service, etc.", + "id": "CertificateAuthorityConfig", + "properties": { + "certificateAuthorityServiceConfig": { + "$ref": "CertificateAuthorityServiceConfig", + "description": "Defines a CertificateAuthorityServiceConfig." + } + }, + "type": "object" + }, + "CertificateAuthorityServiceConfig": { + "description": "Contains information required to contact CA service.", + "id": "CertificateAuthorityServiceConfig", + "properties": { + "caPool": { + "description": "Required. A CA pool resource used to issue a certificate. The CA pool string has a relative resource path following the form \"projects/{project}/locations/{location}/caPools/{ca_pool}\".", + "type": "string" + } + }, + "type": "object" + }, + "CertificateIssuanceConfig": { + "description": "CertificateIssuanceConfig specifies how to issue and manage a certificate.", + "id": "CertificateIssuanceConfig", + "properties": { + "certificateAuthorityConfig": { + "$ref": "CertificateAuthorityConfig", + "description": "Required. The CA that issues the workload certificate. It includes the CA address, type, authentication to CA service, etc." + }, + "createTime": { + "description": "Output only. The creation timestamp of a CertificateIssuanceConfig.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "description": { + "description": "One or more paragraphs of text description of a CertificateIssuanceConfig.", + "type": "string" + }, + "keyAlgorithm": { + "description": "Required. The key algorithm to use when generating the private key.", + "enum": [ + "KEY_ALGORITHM_UNSPECIFIED", + "RSA_2048", + "ECDSA_P256" + ], + "enumDescriptions": [ + "Unspecified key algorithm.", + "Specifies RSA with a 2048-bit modulus.", + "Specifies ECDSA with curve P256." + ], + "type": "string" + }, + "labels": { + "additionalProperties": { + "type": "string" + }, + "description": "Set of labels associated with a CertificateIssuanceConfig.", + "type": "object" + }, + "lifetime": { + "description": "Required. Workload certificate lifetime requested.", + "format": "google-duration", + "type": "string" + }, + "name": { + "description": "A user-defined name of the certificate issuance config. CertificateIssuanceConfig names must be unique globally and match pattern `projects/*/locations/*/certificateIssuanceConfigs/*`.", + "type": "string" + }, + "rotationWindowPercentage": { + "description": "Required. Specifies the percentage of elapsed time of the certificate lifetime to wait before renewing the certificate. Must be a number between 1-99, inclusive.", + "format": "int32", + "type": "integer" + }, + "updateTime": { + "description": "Output only. The last update timestamp of a CertificateIssuanceConfig.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, "CertificateMap": { "description": "Defines a collection of certificate configurations.", "id": "CertificateMap", @@ -1338,6 +1555,31 @@ }, "type": "object" }, + "ListCertificateIssuanceConfigsResponse": { + "description": "Response for the `ListCertificateIssuanceConfigs` method.", + "id": "ListCertificateIssuanceConfigsResponse", + "properties": { + "certificateIssuanceConfigs": { + "description": "A list of certificate configs for the parent resource.", + "items": { + "$ref": "CertificateIssuanceConfig" + }, + "type": "array" + }, + "nextPageToken": { + "description": "If there might be more results than those appearing in this response, then `next_page_token` is included. To get the next set of results, call this method again using the value of `next_page_token` as `page_token`.", + "type": "string" + }, + "unreachable": { + "description": "Locations that could not be reached.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "ListCertificateMapEntriesResponse": { "description": "Response for the `ListCertificateMapEntries` method.", "id": "ListCertificateMapEntriesResponse", @@ -1534,6 +1776,10 @@ }, "type": "array" }, + "issuanceConfig": { + "description": "Immutable. The resource name for a CertificateIssuanceConfig used to configure private PKI certificates in the format `projects/*/locations/*/certificateIssuanceConfigs/*`. If this field is not set, the certificates will instead be publicly signed as documented at https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs#caa.", + "type": "string" + }, "provisioningIssue": { "$ref": "ProvisioningIssue", "description": "Output only. Information about issues with provisioning a Managed Certificate.", diff --git a/certificatemanager/v1/certificatemanager-gen.go b/certificatemanager/v1/certificatemanager-gen.go index 621135c1544..8f66a9a40ea 100644 --- a/certificatemanager/v1/certificatemanager-gen.go +++ b/certificatemanager/v1/certificatemanager-gen.go @@ -151,6 +151,7 @@ type ProjectsService struct { func NewProjectsLocationsService(s *Service) *ProjectsLocationsService { rs := &ProjectsLocationsService{s: s} + rs.CertificateIssuanceConfigs = NewProjectsLocationsCertificateIssuanceConfigsService(s) rs.CertificateMaps = NewProjectsLocationsCertificateMapsService(s) rs.Certificates = NewProjectsLocationsCertificatesService(s) rs.DnsAuthorizations = NewProjectsLocationsDnsAuthorizationsService(s) @@ -161,6 +162,8 @@ func NewProjectsLocationsService(s *Service) *ProjectsLocationsService { type ProjectsLocationsService struct { s *Service + CertificateIssuanceConfigs *ProjectsLocationsCertificateIssuanceConfigsService + CertificateMaps *ProjectsLocationsCertificateMapsService Certificates *ProjectsLocationsCertificatesService @@ -170,6 +173,15 @@ type ProjectsLocationsService struct { Operations *ProjectsLocationsOperationsService } +func NewProjectsLocationsCertificateIssuanceConfigsService(s *Service) *ProjectsLocationsCertificateIssuanceConfigsService { + rs := &ProjectsLocationsCertificateIssuanceConfigsService{s: s} + return rs +} + +type ProjectsLocationsCertificateIssuanceConfigsService struct { + s *Service +} + func NewProjectsLocationsCertificateMapsService(s *Service) *ProjectsLocationsCertificateMapsService { rs := &ProjectsLocationsCertificateMapsService{s: s} rs.CertificateMapEntries = NewProjectsLocationsCertificateMapsCertificateMapEntriesService(s) @@ -361,6 +373,144 @@ func (s *Certificate) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// CertificateAuthorityConfig: The CA that issues the workload +// certificate. It includes CA address, type, authentication to CA +// service, etc. +type CertificateAuthorityConfig struct { + // CertificateAuthorityServiceConfig: Defines a + // CertificateAuthorityServiceConfig. + CertificateAuthorityServiceConfig *CertificateAuthorityServiceConfig `json:"certificateAuthorityServiceConfig,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CertificateAuthorityServiceConfig") to unconditionally include in + // API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "CertificateAuthorityServiceConfig") to include in API requests with + // the JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CertificateAuthorityConfig) MarshalJSON() ([]byte, error) { + type NoMethod CertificateAuthorityConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CertificateAuthorityServiceConfig: Contains information required to +// contact CA service. +type CertificateAuthorityServiceConfig struct { + // CaPool: Required. A CA pool resource used to issue a certificate. The + // CA pool string has a relative resource path following the form + // "projects/{project}/locations/{location}/caPools/{ca_pool}". + CaPool string `json:"caPool,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CaPool") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CaPool") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CertificateAuthorityServiceConfig) MarshalJSON() ([]byte, error) { + type NoMethod CertificateAuthorityServiceConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CertificateIssuanceConfig: CertificateIssuanceConfig specifies how to +// issue and manage a certificate. +type CertificateIssuanceConfig struct { + // CertificateAuthorityConfig: Required. The CA that issues the workload + // certificate. It includes the CA address, type, authentication to CA + // service, etc. + CertificateAuthorityConfig *CertificateAuthorityConfig `json:"certificateAuthorityConfig,omitempty"` + + // CreateTime: Output only. The creation timestamp of a + // CertificateIssuanceConfig. + CreateTime string `json:"createTime,omitempty"` + + // Description: One or more paragraphs of text description of a + // CertificateIssuanceConfig. + Description string `json:"description,omitempty"` + + // KeyAlgorithm: Required. The key algorithm to use when generating the + // private key. + // + // Possible values: + // "KEY_ALGORITHM_UNSPECIFIED" - Unspecified key algorithm. + // "RSA_2048" - Specifies RSA with a 2048-bit modulus. + // "ECDSA_P256" - Specifies ECDSA with curve P256. + KeyAlgorithm string `json:"keyAlgorithm,omitempty"` + + // Labels: Set of labels associated with a CertificateIssuanceConfig. + Labels map[string]string `json:"labels,omitempty"` + + // Lifetime: Required. Workload certificate lifetime requested. + Lifetime string `json:"lifetime,omitempty"` + + // Name: A user-defined name of the certificate issuance config. + // CertificateIssuanceConfig names must be unique globally and match + // pattern `projects/*/locations/*/certificateIssuanceConfigs/*`. + Name string `json:"name,omitempty"` + + // RotationWindowPercentage: Required. Specifies the percentage of + // elapsed time of the certificate lifetime to wait before renewing the + // certificate. Must be a number between 1-99, inclusive. + RotationWindowPercentage int64 `json:"rotationWindowPercentage,omitempty"` + + // UpdateTime: Output only. The last update timestamp of a + // CertificateIssuanceConfig. + UpdateTime string `json:"updateTime,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. + // "CertificateAuthorityConfig") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "CertificateAuthorityConfig") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CertificateIssuanceConfig) MarshalJSON() ([]byte, error) { + type NoMethod CertificateIssuanceConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // CertificateMap: Defines a collection of certificate configurations. type CertificateMap struct { // CreateTime: Output only. The creation timestamp of a Certificate Map. @@ -672,6 +822,51 @@ func (s *IpConfig) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ListCertificateIssuanceConfigsResponse: Response for the +// `ListCertificateIssuanceConfigs` method. +type ListCertificateIssuanceConfigsResponse struct { + // CertificateIssuanceConfigs: A list of certificate configs for the + // parent resource. + CertificateIssuanceConfigs []*CertificateIssuanceConfig `json:"certificateIssuanceConfigs,omitempty"` + + // NextPageToken: If there might be more results than those appearing in + // this response, then `next_page_token` is included. To get the next + // set of results, call this method again using the value of + // `next_page_token` as `page_token`. + NextPageToken string `json:"nextPageToken,omitempty"` + + // Unreachable: Locations that could not be reached. + Unreachable []string `json:"unreachable,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. + // "CertificateIssuanceConfigs") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "CertificateIssuanceConfigs") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListCertificateIssuanceConfigsResponse) MarshalJSON() ([]byte, error) { + type NoMethod ListCertificateIssuanceConfigsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ListCertificateMapEntriesResponse: Response for the // `ListCertificateMapEntries` method. type ListCertificateMapEntriesResponse struct { @@ -987,6 +1182,14 @@ type ManagedCertificate struct { // challenge resolution. Domains []string `json:"domains,omitempty"` + // IssuanceConfig: Immutable. The resource name for a + // CertificateIssuanceConfig used to configure private PKI certificates + // in the format `projects/*/locations/*/certificateIssuanceConfigs/*`. + // If this field is not set, the certificates will instead be publicly + // signed as documented at + // https://cloud.google.com/load-balancing/docs/ssl-certificates/google-managed-certs#caa. + IssuanceConfig string `json:"issuanceConfig,omitempty"` + // ProvisioningIssue: Output only. Information about issues with // provisioning a Managed Certificate. ProvisioningIssue *ProvisioningIssue `json:"provisioningIssue,omitempty"` @@ -1622,6 +1825,668 @@ func (c *ProjectsLocationsListCall) Pages(ctx context.Context, f func(*ListLocat } } +// method id "certificatemanager.projects.locations.certificateIssuanceConfigs.create": + +type ProjectsLocationsCertificateIssuanceConfigsCreateCall struct { + s *Service + parent string + certificateissuanceconfig *CertificateIssuanceConfig + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates a new CertificateIssuanceConfig in a given project +// and location. +// +// - parent: The parent resource of the certificate issuance config. +// Must be in the format `projects/*/locations/*`. +func (r *ProjectsLocationsCertificateIssuanceConfigsService) Create(parent string, certificateissuanceconfig *CertificateIssuanceConfig) *ProjectsLocationsCertificateIssuanceConfigsCreateCall { + c := &ProjectsLocationsCertificateIssuanceConfigsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + c.certificateissuanceconfig = certificateissuanceconfig + return c +} + +// CertificateIssuanceConfigId sets the optional parameter +// "certificateIssuanceConfigId": Required. A user-provided name of the +// certificate config. +func (c *ProjectsLocationsCertificateIssuanceConfigsCreateCall) CertificateIssuanceConfigId(certificateIssuanceConfigId string) *ProjectsLocationsCertificateIssuanceConfigsCreateCall { + c.urlParams_.Set("certificateIssuanceConfigId", certificateIssuanceConfigId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsCertificateIssuanceConfigsCreateCall) Fields(s ...googleapi.Field) *ProjectsLocationsCertificateIssuanceConfigsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsCertificateIssuanceConfigsCreateCall) Context(ctx context.Context) *ProjectsLocationsCertificateIssuanceConfigsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsCertificateIssuanceConfigsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsCertificateIssuanceConfigsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.certificateissuanceconfig) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/certificateIssuanceConfigs") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "certificatemanager.projects.locations.certificateIssuanceConfigs.create" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsCertificateIssuanceConfigsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a new CertificateIssuanceConfig in a given project and location.", + // "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateIssuanceConfigs", + // "httpMethod": "POST", + // "id": "certificatemanager.projects.locations.certificateIssuanceConfigs.create", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "certificateIssuanceConfigId": { + // "description": "Required. A user-provided name of the certificate config.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "Required. The parent resource of the certificate issuance config. Must be in the format `projects/*/locations/*`.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+parent}/certificateIssuanceConfigs", + // "request": { + // "$ref": "CertificateIssuanceConfig" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "certificatemanager.projects.locations.certificateIssuanceConfigs.delete": + +type ProjectsLocationsCertificateIssuanceConfigsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes a single CertificateIssuanceConfig. +// +// - name: A name of the certificate issuance config to delete. Must be +// in the format +// `projects/*/locations/*/certificateIssuanceConfigs/*`. +func (r *ProjectsLocationsCertificateIssuanceConfigsService) Delete(name string) *ProjectsLocationsCertificateIssuanceConfigsDeleteCall { + c := &ProjectsLocationsCertificateIssuanceConfigsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsCertificateIssuanceConfigsDeleteCall) Fields(s ...googleapi.Field) *ProjectsLocationsCertificateIssuanceConfigsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsCertificateIssuanceConfigsDeleteCall) Context(ctx context.Context) *ProjectsLocationsCertificateIssuanceConfigsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsCertificateIssuanceConfigsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsCertificateIssuanceConfigsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("DELETE", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "certificatemanager.projects.locations.certificateIssuanceConfigs.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *ProjectsLocationsCertificateIssuanceConfigsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes a single CertificateIssuanceConfig.", + // "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateIssuanceConfigs/{certificateIssuanceConfigsId}", + // "httpMethod": "DELETE", + // "id": "certificatemanager.projects.locations.certificateIssuanceConfigs.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. A name of the certificate issuance config to delete. Must be in the format `projects/*/locations/*/certificateIssuanceConfigs/*`.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/certificateIssuanceConfigs/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "certificatemanager.projects.locations.certificateIssuanceConfigs.get": + +type ProjectsLocationsCertificateIssuanceConfigsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets details of a single CertificateIssuanceConfig. +// +// - name: A name of the certificate issuance config to describe. Must +// be in the format +// `projects/*/locations/*/certificateIssuanceConfigs/*`. +func (r *ProjectsLocationsCertificateIssuanceConfigsService) Get(name string) *ProjectsLocationsCertificateIssuanceConfigsGetCall { + c := &ProjectsLocationsCertificateIssuanceConfigsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsCertificateIssuanceConfigsGetCall) Fields(s ...googleapi.Field) *ProjectsLocationsCertificateIssuanceConfigsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsCertificateIssuanceConfigsGetCall) IfNoneMatch(entityTag string) *ProjectsLocationsCertificateIssuanceConfigsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsCertificateIssuanceConfigsGetCall) Context(ctx context.Context) *ProjectsLocationsCertificateIssuanceConfigsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsCertificateIssuanceConfigsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsCertificateIssuanceConfigsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "certificatemanager.projects.locations.certificateIssuanceConfigs.get" call. +// Exactly one of *CertificateIssuanceConfig or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *CertificateIssuanceConfig.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsCertificateIssuanceConfigsGetCall) Do(opts ...googleapi.CallOption) (*CertificateIssuanceConfig, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &CertificateIssuanceConfig{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets details of a single CertificateIssuanceConfig.", + // "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateIssuanceConfigs/{certificateIssuanceConfigsId}", + // "httpMethod": "GET", + // "id": "certificatemanager.projects.locations.certificateIssuanceConfigs.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. A name of the certificate issuance config to describe. Must be in the format `projects/*/locations/*/certificateIssuanceConfigs/*`.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+/certificateIssuanceConfigs/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+name}", + // "response": { + // "$ref": "CertificateIssuanceConfig" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "certificatemanager.projects.locations.certificateIssuanceConfigs.list": + +type ProjectsLocationsCertificateIssuanceConfigsListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists CertificateIssuanceConfigs in a given project and +// location. +// +// - parent: The project and location from which the certificate should +// be listed, specified in the format `projects/*/locations/*`. +func (r *ProjectsLocationsCertificateIssuanceConfigsService) List(parent string) *ProjectsLocationsCertificateIssuanceConfigsListCall { + c := &ProjectsLocationsCertificateIssuanceConfigsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// Filter sets the optional parameter "filter": Filter expression to +// restrict the Certificates Configs returned. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) Filter(filter string) *ProjectsLocationsCertificateIssuanceConfigsListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// OrderBy sets the optional parameter "orderBy": A list of Certificate +// Config field names used to specify the order of the returned results. +// The default sorting order is ascending. To specify descending order +// for a field, add a suffix " desc". +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) OrderBy(orderBy string) *ProjectsLocationsCertificateIssuanceConfigsListCall { + c.urlParams_.Set("orderBy", orderBy) + return c +} + +// PageSize sets the optional parameter "pageSize": Maximum number of +// certificate configs to return per call. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) PageSize(pageSize int64) *ProjectsLocationsCertificateIssuanceConfigsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": The value returned +// by the last `ListCertificateIssuanceConfigsResponse`. Indicates that +// this is a continuation of a prior `ListCertificateIssuanceConfigs` +// call, and that the system should return the next page of data. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) PageToken(pageToken string) *ProjectsLocationsCertificateIssuanceConfigsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) Fields(s ...googleapi.Field) *ProjectsLocationsCertificateIssuanceConfigsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) IfNoneMatch(entityTag string) *ProjectsLocationsCertificateIssuanceConfigsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) Context(ctx context.Context) *ProjectsLocationsCertificateIssuanceConfigsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/certificateIssuanceConfigs") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "certificatemanager.projects.locations.certificateIssuanceConfigs.list" call. +// Exactly one of *ListCertificateIssuanceConfigsResponse or error will +// be non-nil. Any non-2xx status code is an error. Response headers are +// in either +// *ListCertificateIssuanceConfigsResponse.ServerResponse.Header or (if +// a response was returned at all) in error.(*googleapi.Error).Header. +// Use googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) Do(opts ...googleapi.CallOption) (*ListCertificateIssuanceConfigsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListCertificateIssuanceConfigsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists CertificateIssuanceConfigs in a given project and location.", + // "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/certificateIssuanceConfigs", + // "httpMethod": "GET", + // "id": "certificatemanager.projects.locations.certificateIssuanceConfigs.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "filter": { + // "description": "Filter expression to restrict the Certificates Configs returned.", + // "location": "query", + // "type": "string" + // }, + // "orderBy": { + // "description": "A list of Certificate Config field names used to specify the order of the returned results. The default sorting order is ascending. To specify descending order for a field, add a suffix \" desc\".", + // "location": "query", + // "type": "string" + // }, + // "pageSize": { + // "description": "Maximum number of certificate configs to return per call.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "The value returned by the last `ListCertificateIssuanceConfigsResponse`. Indicates that this is a continuation of a prior `ListCertificateIssuanceConfigs` call, and that the system should return the next page of data.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "Required. The project and location from which the certificate should be listed, specified in the format `projects/*/locations/*`.", + // "location": "path", + // "pattern": "^projects/[^/]+/locations/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+parent}/certificateIssuanceConfigs", + // "response": { + // "$ref": "ListCertificateIssuanceConfigsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *ProjectsLocationsCertificateIssuanceConfigsListCall) Pages(ctx context.Context, f func(*ListCertificateIssuanceConfigsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + // method id "certificatemanager.projects.locations.certificateMaps.create": type ProjectsLocationsCertificateMapsCreateCall struct { diff --git a/chat/v1/chat-api.json b/chat/v1/chat-api.json index d9500afc6b5..7657c8443b9 100644 --- a/chat/v1/chat-api.json +++ b/chat/v1/chat-api.json @@ -1,4 +1,13 @@ { + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/chat.memberships": { + "description": "View, add, and remove members from conversations in Google Chat" + } + } + } + }, "basePath": "", "baseUrl": "https://chat.googleapis.com/", "batchPath": "batch", @@ -107,6 +116,11 @@ "parent" ], "parameters": { + "messageId": { + "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", "location": "path", @@ -142,6 +156,11 @@ "parent" ], "parameters": { + "messageId": { + "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", "location": "path", @@ -181,6 +200,11 @@ "parent" ], "parameters": { + "messageId": { + "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", "location": "path", @@ -249,6 +273,11 @@ "parent" ], "parameters": { + "messageId": { + "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", "location": "path", @@ -284,6 +313,11 @@ "parent" ], "parameters": { + "messageId": { + "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", "location": "path", @@ -323,6 +357,11 @@ "parent" ], "parameters": { + "messageId": { + "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", "location": "path", @@ -378,7 +417,7 @@ } }, "list": { - "description": "Lists spaces the caller is a member of. Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).", + "description": "Lists spaces the caller is a member of. Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). ", "flatPath": "v1/spaces", "httpMethod": "GET", "id": "chat.spaces.list", @@ -410,6 +449,11 @@ "parent" ], "parameters": { + "messageId": { + "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", "location": "path", @@ -463,7 +507,7 @@ } }, "list": { - "description": "Lists human memberships in a space. Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).", + "description": "Lists human memberships in a space for joined members. Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).", "flatPath": "v1/spaces/{spacesId}/members", "httpMethod": "GET", "id": "chat.spaces.members.list", @@ -493,7 +537,10 @@ "path": "v1/{+parent}/members", "response": { "$ref": "ListMembershipsResponse" - } + }, + "scopes": [ + "https://www.googleapis.com/auth/chat.memberships" + ] } } }, @@ -508,6 +555,11 @@ "parent" ], "parameters": { + "messageId": { + "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "location": "query", + "type": "string" + }, "parent": { "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", "location": "path", @@ -566,7 +618,7 @@ ], "parameters": { "name": { - "description": "Required. Resource name of the message to be retrieved, in the form \"spaces/*/messages/*\". Example: spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB", + "description": "Required. Resource name of the message to retrieve. Format: spaces/{space}/messages/{message} If the message begins with `client-`, then it has a custom name assigned by a Chat app that created it with the Chat REST API. That Chat app (but not others) can pass the custom name to get, update, or delete the message. To learn more, see [create and name a message] (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", "location": "path", "pattern": "^spaces/[^/]+/messages/[^/]+$", "required": true, @@ -587,6 +639,11 @@ "name" ], "parameters": { + "allowMissing": { + "description": "Optional. If `true` and the message is not found, a new message is created and `updateMask` is ignored. The specified message ID must be [client-assigned](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message) or the request fails.", + "location": "query", + "type": "boolean" + }, "name": { "description": "Resource name in the form `spaces/*/messages/*`. Example: `spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB`", "location": "path", @@ -642,7 +699,7 @@ } } }, - "revision": "20220914", + "revision": "20221011", "rootUrl": "https://chat.googleapis.com/", "schemas": { "ActionParameter": { @@ -894,7 +951,7 @@ "type": "object" }, "CardAction": { - "description": "A card action is the action associated with the card. For an invoice card, a typical action would be: delete invoice, email invoice or open the invoice in browser.", + "description": "A card action is the action associated with the card. For an invoice card, a typical action would be: delete invoice, email invoice or open the invoice in browser. Not supported by Google Chat apps.", "id": "CardAction", "properties": { "actionLabel": { @@ -1380,11 +1437,11 @@ "type": "object" }, "GoogleAppsCardV1Card": { - "description": "A card is a UI element that can contain UI widgets such as text and images. For more information, see Cards . For example, the following JSON creates a card that has a header with the name, position, icons, and link for a contact, followed by a section with contact information like email and phone number. ``` { \"header\": { \"title\": \"Sasha\", \"subtitle\": \"Software Engineer\", \"imageStyle\": \"ImageStyle.AVATAR\", \"imageUrl\": \"https://example.com/sasha.png\", \"imageAltText\": \"Avatar for Sasha\" }, \"sections\" : [ { \"header\": \"Contact Info\", \"widgets\": [ { \"decorated_text\": { \"icon\": { \"knownIcon\": \"EMAIL\" }, \"content\": \"sasha@example.com\" } }, { \"decoratedText\": { \"icon\": { \"knownIcon\": \"PERSON\" }, \"content\": \"Online\" } }, { \"decoratedText\": { \"icon\": { \"knownIcon\": \"PHONE\" }, \"content\": \"+1 (555) 555-1234\" } }, { \"buttons\": [ { \"textButton\": { \"text\": \"Share\", }, \"onClick\": { \"openLink\": { \"url\": \"https://example.com/share\" } } }, { \"textButton\": { \"text\": \"Edit\", }, \"onClick\": { \"action\": { \"function\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"EDIT\" } ], \"loadIndicator\": \"LoadIndicator.SPINNER\" } } } ] } ], \"collapsible\": true, \"uncollapsibleWidgetsCount\": 3 } ], \"cardActions\": [ { \"actionLabel\": \"Send Feedback\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/feedback\" } } } ], \"name\": \"contact-card-K3wB6arF2H9L\" } ```", + "description": "Cards support a defined layout, interactive UI elements like buttons, and rich media like images. Use cards to present detailed information, gather information from users, and guide users to take a next step. In Google Chat, cards appear in several places: - As stand-alone messages. - Accompanying a text message, just beneath the text message. - As a [dialog](https://developers.google.com/chat/how-tos/dialogs). The following example JSON creates a \"contact card\" that features: - A header with the contact's name, job title, avatar picture. - A section with the contact information, including formatted text. - Buttons that users can click to share the contact or see more or less info. ![Example contact card](/chat/images/card_api_reference.png) ``` { \"cardsV2\": [ { \"cardId\": \"unique-card-id\", \"card\": { \"header\": { \"title\": \"Sasha\", \"subtitle\": \"Software Engineer\", \"imageUrl\": \"https://developers.google.com/chat/images/quickstart-app-avatar.png\", \"imageType\": \"CIRCLE\", \"imageAltText\": \"Avatar for Sasha\", }, \"sections\": [ { \"header\": \"Contact Info\", \"collapsible\": true, \"uncollapsibleWidgetsCount\": 1, \"widgets\": [ { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"EMAIL\", }, \"text\": \"sasha@example.com\", } }, { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"PERSON\", }, \"text\": \"Online\", }, }, { \"decoratedText\": { \"startIcon\": { \"knownIcon\": \"PHONE\", }, \"text\": \"+1 (555) 555-1234\", } }, { \"buttonList\": { \"buttons\": [ { \"text\": \"Share\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/share\", } } }, { \"text\": \"Edit\", \"onClick\": { \"action\": { \"function\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"EDIT\", } ], } } }, ], } }, ], }, ], }, } ], } ```", "id": "GoogleAppsCardV1Card", "properties": { "cardActions": { - "description": "The card's actions. Actions are added to the card's generated toolbar menu. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` \"card_actions\": [ { \"actionLabel\": \"Settings\", \"onClick\": { \"action\": { \"functionName\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"SETTING\" } ], \"loadIndicator\": \"LoadIndicator.SPINNER\" } } }, { \"actionLabel\": \"Send Feedback\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/feedback\" } } } ] ```", + "description": "The card's actions. Actions are added to the card's generated toolbar menu. Not supported by Google Chat apps. For example, the following JSON constructs a card action menu with Settings and Send Feedback options: ``` \"card_actions\": [ { \"actionLabel\": \"Settings\", \"onClick\": { \"action\": { \"functionName\": \"goToView\", \"parameters\": [ { \"key\": \"viewType\", \"value\": \"SETTING\" } ], \"loadIndicator\": \"LoadIndicator.SPINNER\" } } }, { \"actionLabel\": \"Send Feedback\", \"onClick\": { \"openLink\": { \"url\": \"https://example.com/feedback\" } } } ] ```", "items": { "$ref": "GoogleAppsCardV1CardAction" }, @@ -1431,7 +1488,7 @@ "type": "object" }, "GoogleAppsCardV1CardAction": { - "description": "A card action is the action associated with the card. For example, an invoice card might include actions such as delete invoice, email invoice, or open the invoice in a browser.", + "description": "A card action is the action associated with the card. For example, an invoice card might include actions such as delete invoice, email invoice, or open the invoice in a browser. Not supported by Google Chat apps.", "id": "GoogleAppsCardV1CardAction", "properties": { "actionLabel": { @@ -2477,19 +2534,23 @@ "type": "array" }, "cards": { - "description": "Rich, formatted and interactive cards that can be used to display UI elements such as: formatted texts, buttons, clickable images. Cards are normally displayed below the plain-text body of the message.", + "description": "Deprecated: Use `cards_v2` instead. Rich, formatted and interactive cards that can be used to display UI elements such as: formatted texts, buttons, clickable images. Cards are normally displayed below the plain-text body of the message.", "items": { "$ref": "Card" }, "type": "array" }, "cardsV2": { - "description": "Richly formatted and interactive cards that display UI elements and editable widgets, such as: - Formatted text - Buttons - Clickable images - Checkboxes - Radio buttons - Input widgets. Cards are usually displayed below the text-body of a Chat message, but can situationally appear other places, such as [dialogs](https://developers.google.com/chat/how-tos/dialogs). The `cardId` is a unique identifier among cards in the same message and for identifying user input values. Currently supported widgets include: - `TextParagraph` - `DecoratedText` - `Image` - `ButtonList`", + "description": "Richly formatted and interactive cards that display UI elements and editable widgets, such as: - Formatted text - Buttons - Clickable images - Checkboxes - Radio buttons - Input widgets. Cards are usually displayed below the text-body of a Chat message, but can situationally appear other places, such as [dialogs](https://developers.google.com/chat/how-tos/dialogs). The `cardId` is a unique identifier among cards in the same message and for identifying user input values. Currently supported widgets include: - `TextParagraph` - `DecoratedText` - `Image` - `ButtonList` - `Divider`", "items": { "$ref": "CardWithId" }, "type": "array" }, + "clientAssignedMessageId": { + "description": "A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + "type": "string" + }, "createTime": { "description": "Output only. The time at which the message was created in Google Chat server.", "format": "google-datetime", @@ -2821,7 +2882,7 @@ "type": "boolean" }, "name": { - "description": "Resource name for a Google Chat user. Represents a [person](https://developers.google.com/people/api/rest/v1/people#Person) in the People API or a [user](https://developers.google.com/admin-sdk/directory/reference/rest/v1/users) in the Admin SDK Directory API. Formatted as: `users/{user}`", + "description": "Resource name for a Google Chat user. For human users, represents a person in the People API or a user in the Admin SDK Directory API. Format: `users/{user}`", "type": "string" }, "type": { diff --git a/chat/v1/chat-gen.go b/chat/v1/chat-gen.go index e06e9e70bab..21b49e0f767 100644 --- a/chat/v1/chat-gen.go +++ b/chat/v1/chat-gen.go @@ -78,8 +78,19 @@ const apiVersion = "v1" const basePath = "https://chat.googleapis.com/" const mtlsBasePath = "https://chat.mtls.googleapis.com/" +// OAuth2 scopes used by this API. +const ( + // View, add, and remove members from conversations in Google Chat + ChatMembershipsScope = "https://www.googleapis.com/auth/chat.memberships" +) + // NewService creates a new Service. func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) { + scopesOption := internaloption.WithDefaultScopes( + "https://www.googleapis.com/auth/chat.memberships", + ) + // NOTE: prepend, so we don't override user-specified scopes. + opts = append([]option.ClientOption{scopesOption}, opts...) opts = append(opts, internaloption.WithDefaultEndpoint(basePath)) opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath)) client, endpoint, err := htransport.NewClient(ctx, opts...) @@ -663,7 +674,8 @@ func (s *Card) MarshalJSON() ([]byte, error) { // CardAction: A card action is the action associated with the card. For // an invoice card, a typical action would be: delete invoice, email -// invoice or open the invoice in browser. +// invoice or open the invoice in browser. Not supported by Google Chat +// apps. type CardAction struct { // ActionLabel: The label used to be displayed in the action menu item. ActionLabel string `json:"actionLabel,omitempty"` @@ -1529,37 +1541,45 @@ func (s *GoogleAppsCardV1ButtonList) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleAppsCardV1Card: A card is a UI element that can contain UI -// widgets such as text and images. For more information, see Cards . -// For example, the following JSON creates a card that has a header with -// the name, position, icons, and link for a contact, followed by a -// section with contact information like email and phone number. ``` { -// "header": { "title": "Sasha", "subtitle": "Software Engineer", -// "imageStyle": "ImageStyle.AVATAR", "imageUrl": -// "https://example.com/sasha.png", "imageAltText": "Avatar for Sasha" -// }, "sections" : [ { "header": "Contact Info", "widgets": [ { -// "decorated_text": { "icon": { "knownIcon": "EMAIL" }, "content": -// "sasha@example.com" } }, { "decoratedText": { "icon": { "knownIcon": -// "PERSON" }, "content": "Online" } }, { "decoratedText": { "icon": { -// "knownIcon": "PHONE" }, "content": "+1 (555) 555-1234" } }, { -// "buttons": [ { "textButton": { "text": "Share", }, "onClick": { -// "openLink": { "url": "https://example.com/share" } } }, { -// "textButton": { "text": "Edit", }, "onClick": { "action": { -// "function": "goToView", "parameters": [ { "key": "viewType", "value": -// "EDIT" } ], "loadIndicator": "LoadIndicator.SPINNER" } } } ] } ], -// "collapsible": true, "uncollapsibleWidgetsCount": 3 } ], -// "cardActions": [ { "actionLabel": "Send Feedback", "onClick": { -// "openLink": { "url": "https://example.com/feedback" } } } ], "name": -// "contact-card-K3wB6arF2H9L" } ``` +// GoogleAppsCardV1Card: Cards support a defined layout, interactive UI +// elements like buttons, and rich media like images. Use cards to +// present detailed information, gather information from users, and +// guide users to take a next step. In Google Chat, cards appear in +// several places: - As stand-alone messages. - Accompanying a text +// message, just beneath the text message. - As a dialog +// (https://developers.google.com/chat/how-tos/dialogs). The following +// example JSON creates a "contact card" that features: - A header with +// the contact's name, job title, avatar picture. - A section with the +// contact information, including formatted text. - Buttons that users +// can click to share the contact or see more or less info. !Example +// contact card (/chat/images/card_api_reference.png) ``` { "cardsV2": [ +// { "cardId": "unique-card-id", "card": { "header": { "title": "Sasha", +// "subtitle": "Software Engineer", "imageUrl": +// "https://developers.google.com/chat/images/quickstart-app-avatar.png", +// +// "imageType": "CIRCLE", "imageAltText": "Avatar for Sasha", }, +// +// "sections": [ { "header": "Contact Info", "collapsible": true, +// "uncollapsibleWidgetsCount": 1, "widgets": [ { "decoratedText": { +// "startIcon": { "knownIcon": "EMAIL", }, "text": "sasha@example.com", +// } }, { "decoratedText": { "startIcon": { "knownIcon": "PERSON", }, +// "text": "Online", }, }, { "decoratedText": { "startIcon": { +// "knownIcon": "PHONE", }, "text": "+1 (555) 555-1234", } }, { +// "buttonList": { "buttons": [ { "text": "Share", "onClick": { +// "openLink": { "url": "https://example.com/share", } } }, { "text": +// "Edit", "onClick": { "action": { "function": "goToView", +// "parameters": [ { "key": "viewType", "value": "EDIT", } ], } } }, ], +// } }, ], }, ], }, } ], } ``` type GoogleAppsCardV1Card struct { // CardActions: The card's actions. Actions are added to the card's - // generated toolbar menu. For example, the following JSON constructs a - // card action menu with Settings and Send Feedback options: ``` - // "card_actions": [ { "actionLabel": "Settings", "onClick": { "action": - // { "functionName": "goToView", "parameters": [ { "key": "viewType", - // "value": "SETTING" } ], "loadIndicator": "LoadIndicator.SPINNER" } } - // }, { "actionLabel": "Send Feedback", "onClick": { "openLink": { - // "url": "https://example.com/feedback" } } } ] ``` + // generated toolbar menu. Not supported by Google Chat apps. For + // example, the following JSON constructs a card action menu with + // Settings and Send Feedback options: ``` "card_actions": [ { + // "actionLabel": "Settings", "onClick": { "action": { "functionName": + // "goToView", "parameters": [ { "key": "viewType", "value": "SETTING" } + // ], "loadIndicator": "LoadIndicator.SPINNER" } } }, { "actionLabel": + // "Send Feedback", "onClick": { "openLink": { "url": + // "https://example.com/feedback" } } } ] ``` CardActions []*GoogleAppsCardV1CardAction `json:"cardActions,omitempty"` // DisplayStyle: The `peekCardHeader` display style for. Not supported @@ -1620,7 +1640,7 @@ func (s *GoogleAppsCardV1Card) MarshalJSON() ([]byte, error) { // GoogleAppsCardV1CardAction: A card action is the action associated // with the card. For example, an invoice card might include actions // such as delete invoice, email invoice, or open the invoice in a -// browser. +// browser. Not supported by Google Chat apps. type GoogleAppsCardV1CardAction struct { // ActionLabel: The label that displays as the action menu item. ActionLabel string `json:"actionLabel,omitempty"` @@ -3140,10 +3160,10 @@ type Message struct { // Attachment: User uploaded attachment. Attachment []*Attachment `json:"attachment,omitempty"` - // Cards: Rich, formatted and interactive cards that can be used to - // display UI elements such as: formatted texts, buttons, clickable - // images. Cards are normally displayed below the plain-text body of the - // message. + // Cards: Deprecated: Use `cards_v2` instead. Rich, formatted and + // interactive cards that can be used to display UI elements such as: + // formatted texts, buttons, clickable images. Cards are normally + // displayed below the plain-text body of the message. Cards []*Card `json:"cards,omitempty"` // CardsV2: Richly formatted and interactive cards that display UI @@ -3154,9 +3174,18 @@ type Message struct { // (https://developers.google.com/chat/how-tos/dialogs). The `cardId` is // a unique identifier among cards in the same message and for // identifying user input values. Currently supported widgets include: - - // `TextParagraph` - `DecoratedText` - `Image` - `ButtonList` + // `TextParagraph` - `DecoratedText` - `Image` - `ButtonList` - + // `Divider` CardsV2 []*CardWithId `json:"cardsV2,omitempty"` + // ClientAssignedMessageId: A custom name for a Chat message assigned at + // creation. Must start with `client-` and contain only lowercase + // letters, numbers, and hyphens up to 63 characters in length. Specify + // this field to get, update, or delete the message with the specified + // value. For example usage, see Name a created message + // (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). + ClientAssignedMessageId string `json:"clientAssignedMessageId,omitempty"` + // CreateTime: Output only. The time at which the message was created in // Google Chat server. CreateTime string `json:"createTime,omitempty"` @@ -3723,11 +3752,9 @@ type User struct { // profile is not visible. IsAnonymous bool `json:"isAnonymous,omitempty"` - // Name: Resource name for a Google Chat user. Represents a person - // (https://developers.google.com/people/api/rest/v1/people#Person) in - // the People API or a user - // (https://developers.google.com/admin-sdk/directory/reference/rest/v1/users) - // in the Admin SDK Directory API. Formatted as: `users/{user}` + // Name: Resource name for a Google Chat user. For human users, + // represents a person in the People API or a user in the Admin SDK + // Directory API. Format: `users/{user}` Name string `json:"name,omitempty"` // Type: User type. @@ -3859,6 +3886,18 @@ func (r *DmsService) Messages(parent string, message *Message) *DmsMessagesCall return c } +// MessageId sets the optional parameter "messageId": A custom name for +// a Chat message assigned at creation. Must start with `client-` and +// contain only lowercase letters, numbers, and hyphens up to 63 +// characters in length. Specify this field to get, update, or delete +// the message with the specified value. For example usage, see Name a +// created message +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). +func (c *DmsMessagesCall) MessageId(messageId string) *DmsMessagesCall { + c.urlParams_.Set("messageId", messageId) + return c +} + // RequestId sets the optional parameter "requestId": A unique request // ID for this message. Specifying an existing request ID returns the // message created with that ID instead of creating a new message. @@ -3977,6 +4016,11 @@ func (c *DmsMessagesCall) Do(opts ...googleapi.CallOption) (*Message, error) { // "parent" // ], // "parameters": { + // "messageId": { + // "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", // "location": "path", @@ -4029,6 +4073,18 @@ func (r *DmsService) Webhooks(parent string, message *Message) *DmsWebhooksCall return c } +// MessageId sets the optional parameter "messageId": A custom name for +// a Chat message assigned at creation. Must start with `client-` and +// contain only lowercase letters, numbers, and hyphens up to 63 +// characters in length. Specify this field to get, update, or delete +// the message with the specified value. For example usage, see Name a +// created message +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). +func (c *DmsWebhooksCall) MessageId(messageId string) *DmsWebhooksCall { + c.urlParams_.Set("messageId", messageId) + return c +} + // RequestId sets the optional parameter "requestId": A unique request // ID for this message. Specifying an existing request ID returns the // message created with that ID instead of creating a new message. @@ -4147,6 +4203,11 @@ func (c *DmsWebhooksCall) Do(opts ...googleapi.CallOption) (*Message, error) { // "parent" // ], // "parameters": { + // "messageId": { + // "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", // "location": "path", @@ -4199,6 +4260,18 @@ func (r *DmsConversationsService) Messages(parent string, message *Message) *Dms return c } +// MessageId sets the optional parameter "messageId": A custom name for +// a Chat message assigned at creation. Must start with `client-` and +// contain only lowercase letters, numbers, and hyphens up to 63 +// characters in length. Specify this field to get, update, or delete +// the message with the specified value. For example usage, see Name a +// created message +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). +func (c *DmsConversationsMessagesCall) MessageId(messageId string) *DmsConversationsMessagesCall { + c.urlParams_.Set("messageId", messageId) + return c +} + // RequestId sets the optional parameter "requestId": A unique request // ID for this message. Specifying an existing request ID returns the // message created with that ID instead of creating a new message. @@ -4317,6 +4390,11 @@ func (c *DmsConversationsMessagesCall) Do(opts ...googleapi.CallOption) (*Messag // "parent" // ], // "parameters": { + // "messageId": { + // "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", // "location": "path", @@ -4531,6 +4609,18 @@ func (r *RoomsService) Messages(parent string, message *Message) *RoomsMessagesC return c } +// MessageId sets the optional parameter "messageId": A custom name for +// a Chat message assigned at creation. Must start with `client-` and +// contain only lowercase letters, numbers, and hyphens up to 63 +// characters in length. Specify this field to get, update, or delete +// the message with the specified value. For example usage, see Name a +// created message +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). +func (c *RoomsMessagesCall) MessageId(messageId string) *RoomsMessagesCall { + c.urlParams_.Set("messageId", messageId) + return c +} + // RequestId sets the optional parameter "requestId": A unique request // ID for this message. Specifying an existing request ID returns the // message created with that ID instead of creating a new message. @@ -4649,6 +4739,11 @@ func (c *RoomsMessagesCall) Do(opts ...googleapi.CallOption) (*Message, error) { // "parent" // ], // "parameters": { + // "messageId": { + // "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", // "location": "path", @@ -4701,6 +4796,18 @@ func (r *RoomsService) Webhooks(parent string, message *Message) *RoomsWebhooksC return c } +// MessageId sets the optional parameter "messageId": A custom name for +// a Chat message assigned at creation. Must start with `client-` and +// contain only lowercase letters, numbers, and hyphens up to 63 +// characters in length. Specify this field to get, update, or delete +// the message with the specified value. For example usage, see Name a +// created message +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). +func (c *RoomsWebhooksCall) MessageId(messageId string) *RoomsWebhooksCall { + c.urlParams_.Set("messageId", messageId) + return c +} + // RequestId sets the optional parameter "requestId": A unique request // ID for this message. Specifying an existing request ID returns the // message created with that ID instead of creating a new message. @@ -4819,6 +4926,11 @@ func (c *RoomsWebhooksCall) Do(opts ...googleapi.CallOption) (*Message, error) { // "parent" // ], // "parameters": { + // "messageId": { + // "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", // "location": "path", @@ -4871,6 +4983,18 @@ func (r *RoomsConversationsService) Messages(parent string, message *Message) *R return c } +// MessageId sets the optional parameter "messageId": A custom name for +// a Chat message assigned at creation. Must start with `client-` and +// contain only lowercase letters, numbers, and hyphens up to 63 +// characters in length. Specify this field to get, update, or delete +// the message with the specified value. For example usage, see Name a +// created message +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). +func (c *RoomsConversationsMessagesCall) MessageId(messageId string) *RoomsConversationsMessagesCall { + c.urlParams_.Set("messageId", messageId) + return c +} + // RequestId sets the optional parameter "requestId": A unique request // ID for this message. Specifying an existing request ID returns the // message created with that ID instead of creating a new message. @@ -4989,6 +5113,11 @@ func (c *RoomsConversationsMessagesCall) Do(opts ...googleapi.CallOption) (*Mess // "parent" // ], // "parameters": { + // "messageId": { + // "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", // "location": "path", @@ -5292,7 +5421,7 @@ func (c *SpacesListCall) Do(opts ...googleapi.CallOption) (*ListSpacesResponse, } return ret, nil // { - // "description": "Lists spaces the caller is a member of. Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).", + // "description": "Lists spaces the caller is a member of. Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts). ", // "flatPath": "v1/spaces", // "httpMethod": "GET", // "id": "chat.spaces.list", @@ -5362,6 +5491,18 @@ func (r *SpacesService) Webhooks(parent string, message *Message) *SpacesWebhook return c } +// MessageId sets the optional parameter "messageId": A custom name for +// a Chat message assigned at creation. Must start with `client-` and +// contain only lowercase letters, numbers, and hyphens up to 63 +// characters in length. Specify this field to get, update, or delete +// the message with the specified value. For example usage, see Name a +// created message +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). +func (c *SpacesWebhooksCall) MessageId(messageId string) *SpacesWebhooksCall { + c.urlParams_.Set("messageId", messageId) + return c +} + // RequestId sets the optional parameter "requestId": A unique request // ID for this message. Specifying an existing request ID returns the // message created with that ID instead of creating a new message. @@ -5480,6 +5621,11 @@ func (c *SpacesWebhooksCall) Do(opts ...googleapi.CallOption) (*Message, error) // "parent" // ], // "parameters": { + // "messageId": { + // "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", // "location": "path", @@ -5665,8 +5811,8 @@ type SpacesMembersListCall struct { header_ http.Header } -// List: Lists human memberships in a space. Requires service account -// authentication +// List: Lists human memberships in a space for joined members. Requires +// service account authentication // (https://developers.google.com/chat/api/guides/auth/service-accounts). // // - parent: The resource name of the space for which to fetch a @@ -5791,7 +5937,7 @@ func (c *SpacesMembersListCall) Do(opts ...googleapi.CallOption) (*ListMembershi } return ret, nil // { - // "description": "Lists human memberships in a space. Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).", + // "description": "Lists human memberships in a space for joined members. Requires [service account authentication](https://developers.google.com/chat/api/guides/auth/service-accounts).", // "flatPath": "v1/spaces/{spacesId}/members", // "httpMethod": "GET", // "id": "chat.spaces.members.list", @@ -5821,7 +5967,10 @@ func (c *SpacesMembersListCall) Do(opts ...googleapi.CallOption) (*ListMembershi // "path": "v1/{+parent}/members", // "response": { // "$ref": "ListMembershipsResponse" - // } + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/chat.memberships" + // ] // } } @@ -5870,6 +6019,18 @@ func (r *SpacesMessagesService) Create(parent string, message *Message) *SpacesM return c } +// MessageId sets the optional parameter "messageId": A custom name for +// a Chat message assigned at creation. Must start with `client-` and +// contain only lowercase letters, numbers, and hyphens up to 63 +// characters in length. Specify this field to get, update, or delete +// the message with the specified value. For example usage, see Name a +// created message +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). +func (c *SpacesMessagesCreateCall) MessageId(messageId string) *SpacesMessagesCreateCall { + c.urlParams_.Set("messageId", messageId) + return c +} + // RequestId sets the optional parameter "requestId": A unique request // ID for this message. Specifying an existing request ID returns the // message created with that ID instead of creating a new message. @@ -5988,6 +6149,11 @@ func (c *SpacesMessagesCreateCall) Do(opts ...googleapi.CallOption) (*Message, e // "parent" // ], // "parameters": { + // "messageId": { + // "description": "Optional. A custom name for a Chat message assigned at creation. Must start with `client-` and contain only lowercase letters, numbers, and hyphens up to 63 characters in length. Specify this field to get, update, or delete the message with the specified value. For example usage, see [Name a created message](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", + // "location": "query", + // "type": "string" + // }, // "parent": { // "description": "Required. Space resource name, in the form \"spaces/*\". Example: spaces/AAAAAAAAAAA", // "location": "path", @@ -6163,9 +6329,13 @@ type SpacesMessagesGetCall struct { // Get: Returns a message. Requires service account authentication // (https://developers.google.com/chat/api/guides/auth/service-accounts). // -// - name: Resource name of the message to be retrieved, in the form -// "spaces/*/messages/*". Example: -// spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB. +// - name: Resource name of the message to retrieve. Format: +// spaces/{space}/messages/{message} If the message begins with +// `client-`, then it has a custom name assigned by a Chat app that +// created it with the Chat REST API. That Chat app (but not others) +// can pass the custom name to get, update, or delete the message. To +// learn more, see [create and name a message] +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message). func (r *SpacesMessagesService) Get(name string) *SpacesMessagesGetCall { c := &SpacesMessagesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.name = name @@ -6280,7 +6450,7 @@ func (c *SpacesMessagesGetCall) Do(opts ...googleapi.CallOption) (*Message, erro // ], // "parameters": { // "name": { - // "description": "Required. Resource name of the message to be retrieved, in the form \"spaces/*/messages/*\". Example: spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB", + // "description": "Required. Resource name of the message to retrieve. Format: spaces/{space}/messages/{message} If the message begins with `client-`, then it has a custom name assigned by a Chat app that created it with the Chat REST API. That Chat app (but not others) can pass the custom name to get, update, or delete the message. To learn more, see [create and name a message] (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message).", // "location": "path", // "pattern": "^spaces/[^/]+/messages/[^/]+$", // "required": true, @@ -6318,6 +6488,17 @@ func (r *SpacesMessagesService) Update(name string, message *Message) *SpacesMes return c } +// AllowMissing sets the optional parameter "allowMissing": If `true` +// and the message is not found, a new message is created and +// `updateMask` is ignored. The specified message ID must be +// client-assigned +// (https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message) +// or the request fails. +func (c *SpacesMessagesUpdateCall) AllowMissing(allowMissing bool) *SpacesMessagesUpdateCall { + c.urlParams_.Set("allowMissing", fmt.Sprint(allowMissing)) + return c +} + // UpdateMask sets the optional parameter "updateMask": Required. The // field paths to update. Separate multiple values with commas. // Currently supported field paths: - text - cards (Requires service @@ -6427,6 +6608,11 @@ func (c *SpacesMessagesUpdateCall) Do(opts ...googleapi.CallOption) (*Message, e // "name" // ], // "parameters": { + // "allowMissing": { + // "description": "Optional. If `true` and the message is not found, a new message is created and `updateMask` is ignored. The specified message ID must be [client-assigned](https://developers.google.com/chat/api/guides/crudl/messages#name_a_created_message) or the request fails.", + // "location": "query", + // "type": "boolean" + // }, // "name": { // "description": "Resource name in the form `spaces/*/messages/*`. Example: `spaces/AAAAAAAAAAA/messages/BBBBBBBBBBB.BBBBBBBBBBB`", // "location": "path", diff --git a/chromemanagement/v1/chromemanagement-api.json b/chromemanagement/v1/chromemanagement-api.json index a7cf446b7ca..7a38cee79eb 100644 --- a/chromemanagement/v1/chromemanagement-api.json +++ b/chromemanagement/v1/chromemanagement-api.json @@ -631,7 +631,7 @@ } } }, - "revision": "20220926", + "revision": "20221014", "rootUrl": "https://chromemanagement.googleapis.com/", "schemas": { "GoogleChromeManagementV1AndroidAppInfo": { @@ -972,6 +972,56 @@ }, "type": "object" }, + "GoogleChromeManagementV1BootPerformanceReport": { + "description": "Boot performance report of a device. * This field is telemetry information and this will change over time as the device is utilized. * Data for this field is controlled via policy: [ReportDeviceBootMode](https://chromeenterprise.google/policies/#ReportDeviceBootMode) * Data Collection Frequency: On every boot up event * Default Data Reporting Frequency: 3 hours - Policy Controlled: Yes * Cache: If the device is offline, the collected data is stored locally, and will be reported when the device is next online: Yes * Reported for affiliated users only: N/A", + "id": "GoogleChromeManagementV1BootPerformanceReport", + "properties": { + "bootUpDuration": { + "description": "Total time to boot up.", + "format": "google-duration", + "type": "string" + }, + "bootUpTime": { + "description": "The timestamp when power came on.", + "format": "google-datetime", + "type": "string" + }, + "reportTime": { + "description": "Timestamp when the report was collected.", + "format": "google-datetime", + "type": "string" + }, + "shutdownDuration": { + "description": "Total time since shutdown start to power off.", + "format": "google-duration", + "type": "string" + }, + "shutdownReason": { + "description": "The shutdown reason.", + "enum": [ + "SHUTDOWN_REASON_UNSPECIFIED", + "USER_REQUEST", + "SYSTEM_UPDATE", + "LOW_BATTERY", + "OTHER" + ], + "enumDescriptions": [ + "Shutdown reason is not specified.", + "User initiated.", + "System update initiated.", + "Shutdown due to low battery.", + "Shutdown due to other reasons." + ], + "type": "string" + }, + "shutdownTime": { + "description": "The timestamp when shutdown.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, "GoogleChromeManagementV1BrowserVersion": { "description": "Describes a browser version and its install count.", "id": "GoogleChromeManagementV1BrowserVersion", @@ -2271,6 +2321,14 @@ "readOnly": true, "type": "array" }, + "bootPerformanceReport": { + "description": "Output only. Boot performance reports of the device.", + "items": { + "$ref": "GoogleChromeManagementV1BootPerformanceReport" + }, + "readOnly": true, + "type": "array" + }, "cpuInfo": { "description": "Output only. Information regarding CPU specs for the device.", "items": { diff --git a/chromemanagement/v1/chromemanagement-gen.go b/chromemanagement/v1/chromemanagement-gen.go index 4f4ac5c7e5b..0dc312bcbbf 100644 --- a/chromemanagement/v1/chromemanagement-gen.go +++ b/chromemanagement/v1/chromemanagement-gen.go @@ -659,6 +659,66 @@ func (s *GoogleChromeManagementV1BatteryStatusReport) MarshalJSON() ([]byte, err return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// GoogleChromeManagementV1BootPerformanceReport: Boot performance +// report of a device. * This field is telemetry information and this +// will change over time as the device is utilized. * Data for this +// field is controlled via policy: ReportDeviceBootMode +// (https://chromeenterprise.google/policies/#ReportDeviceBootMode) * +// Data Collection Frequency: On every boot up event * Default Data +// Reporting Frequency: 3 hours - Policy Controlled: Yes * Cache: If the +// device is offline, the collected data is stored locally, and will be +// reported when the device is next online: Yes * Reported for +// affiliated users only: N/A +type GoogleChromeManagementV1BootPerformanceReport struct { + // BootUpDuration: Total time to boot up. + BootUpDuration string `json:"bootUpDuration,omitempty"` + + // BootUpTime: The timestamp when power came on. + BootUpTime string `json:"bootUpTime,omitempty"` + + // ReportTime: Timestamp when the report was collected. + ReportTime string `json:"reportTime,omitempty"` + + // ShutdownDuration: Total time since shutdown start to power off. + ShutdownDuration string `json:"shutdownDuration,omitempty"` + + // ShutdownReason: The shutdown reason. + // + // Possible values: + // "SHUTDOWN_REASON_UNSPECIFIED" - Shutdown reason is not specified. + // "USER_REQUEST" - User initiated. + // "SYSTEM_UPDATE" - System update initiated. + // "LOW_BATTERY" - Shutdown due to low battery. + // "OTHER" - Shutdown due to other reasons. + ShutdownReason string `json:"shutdownReason,omitempty"` + + // ShutdownTime: The timestamp when shutdown. + ShutdownTime string `json:"shutdownTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BootUpDuration") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BootUpDuration") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromeManagementV1BootPerformanceReport) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromeManagementV1BootPerformanceReport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // GoogleChromeManagementV1BrowserVersion: Describes a browser version // and its install count. type GoogleChromeManagementV1BrowserVersion struct { @@ -2430,6 +2490,10 @@ type GoogleChromeManagementV1TelemetryDevice struct { // periodically. BatteryStatusReport []*GoogleChromeManagementV1BatteryStatusReport `json:"batteryStatusReport,omitempty"` + // BootPerformanceReport: Output only. Boot performance reports of the + // device. + BootPerformanceReport []*GoogleChromeManagementV1BootPerformanceReport `json:"bootPerformanceReport,omitempty"` + // CpuInfo: Output only. Information regarding CPU specs for the device. CpuInfo []*GoogleChromeManagementV1CpuInfo `json:"cpuInfo,omitempty"` diff --git a/chromepolicy/v1/chromepolicy-api.json b/chromepolicy/v1/chromepolicy-api.json index 0264eb93d93..6b13d609446 100644 --- a/chromepolicy/v1/chromepolicy-api.json +++ b/chromepolicy/v1/chromepolicy-api.json @@ -131,10 +131,10 @@ }, "path": "v1/{+customer}/policies:resolve", "request": { - "$ref": "GoogleChromePolicyV1ResolveRequest" + "$ref": "GoogleChromePolicyVersionsV1ResolveRequest" }, "response": { - "$ref": "GoogleChromePolicyV1ResolveResponse" + "$ref": "GoogleChromePolicyVersionsV1ResolveResponse" }, "scopes": [ "https://www.googleapis.com/auth/chrome.management.policy", @@ -164,7 +164,7 @@ }, "path": "v1/{+customer}/policies/groups:batchDelete", "request": { - "$ref": "GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest" + "$ref": "GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest" }, "response": { "$ref": "GoogleProtobufEmpty" @@ -192,7 +192,7 @@ }, "path": "v1/{+customer}/policies/groups:batchModify", "request": { - "$ref": "GoogleChromePolicyV1BatchModifyGroupPoliciesRequest" + "$ref": "GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest" }, "response": { "$ref": "GoogleProtobufEmpty" @@ -220,10 +220,10 @@ }, "path": "v1/{+customer}/policies/groups:listGroupPriorityOrdering", "request": { - "$ref": "GoogleChromePolicyV1ListGroupPriorityOrderingRequest" + "$ref": "GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest" }, "response": { - "$ref": "GoogleChromePolicyV1ListGroupPriorityOrderingResponse" + "$ref": "GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse" }, "scopes": [ "https://www.googleapis.com/auth/chrome.management.policy", @@ -249,7 +249,7 @@ }, "path": "v1/{+customer}/policies/groups:updateGroupPriorityOrdering", "request": { - "$ref": "GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest" + "$ref": "GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest" }, "response": { "$ref": "GoogleProtobufEmpty" @@ -260,6 +260,122 @@ } } }, + "networks": { + "methods": { + "defineCertificate": { + "description": "Creates a certificate at a specified OU for a customer.", + "flatPath": "v1/customers/{customersId}/policies/networks:defineCertificate", + "httpMethod": "POST", + "id": "chromepolicy.customers.policies.networks.defineCertificate", + "parameterOrder": [ + "customer" + ], + "parameters": { + "customer": { + "description": "Required. The customer for which the certificate will apply.", + "location": "path", + "pattern": "^customers/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+customer}/policies/networks:defineCertificate", + "request": { + "$ref": "GoogleChromePolicyVersionsV1DefineCertificateRequest" + }, + "response": { + "$ref": "GoogleChromePolicyVersionsV1DefineCertificateResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/chrome.management.policy" + ] + }, + "defineNetwork": { + "description": "Define a new network.", + "flatPath": "v1/customers/{customersId}/policies/networks:defineNetwork", + "httpMethod": "POST", + "id": "chromepolicy.customers.policies.networks.defineNetwork", + "parameterOrder": [ + "customer" + ], + "parameters": { + "customer": { + "description": "Required. The customer who will own this new network.", + "location": "path", + "pattern": "^customers/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+customer}/policies/networks:defineNetwork", + "request": { + "$ref": "GoogleChromePolicyVersionsV1DefineNetworkRequest" + }, + "response": { + "$ref": "GoogleChromePolicyVersionsV1DefineNetworkResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/chrome.management.policy" + ] + }, + "removeCertificate": { + "description": "Remove an existing certificate by guid.", + "flatPath": "v1/customers/{customersId}/policies/networks:removeCertificate", + "httpMethod": "POST", + "id": "chromepolicy.customers.policies.networks.removeCertificate", + "parameterOrder": [ + "customer" + ], + "parameters": { + "customer": { + "description": "Required. The customer whose certificate will be removed.", + "location": "path", + "pattern": "^customers/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+customer}/policies/networks:removeCertificate", + "request": { + "$ref": "GoogleChromePolicyVersionsV1RemoveCertificateRequest" + }, + "response": { + "$ref": "GoogleChromePolicyVersionsV1RemoveCertificateResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/chrome.management.policy" + ] + }, + "removeNetwork": { + "description": "Remove an existing network by guid.", + "flatPath": "v1/customers/{customersId}/policies/networks:removeNetwork", + "httpMethod": "POST", + "id": "chromepolicy.customers.policies.networks.removeNetwork", + "parameterOrder": [ + "customer" + ], + "parameters": { + "customer": { + "description": "Required. The customer whose network will be removed.", + "location": "path", + "pattern": "^customers/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+customer}/policies/networks:removeNetwork", + "request": { + "$ref": "GoogleChromePolicyVersionsV1RemoveNetworkRequest" + }, + "response": { + "$ref": "GoogleChromePolicyVersionsV1RemoveNetworkResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/chrome.management.policy" + ] + } + } + }, "orgunits": { "methods": { "batchInherit": { @@ -281,7 +397,7 @@ }, "path": "v1/{+customer}/policies/orgunits:batchInherit", "request": { - "$ref": "GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest" + "$ref": "GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest" }, "response": { "$ref": "GoogleProtobufEmpty" @@ -309,7 +425,7 @@ }, "path": "v1/{+customer}/policies/orgunits:batchModify", "request": { - "$ref": "GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest" + "$ref": "GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest" }, "response": { "$ref": "GoogleProtobufEmpty" @@ -343,7 +459,7 @@ }, "path": "v1/{+name}", "response": { - "$ref": "GoogleChromePolicyV1PolicySchema" + "$ref": "GoogleChromePolicyVersionsV1PolicySchema" }, "scopes": [ "https://www.googleapis.com/auth/chrome.management.policy", @@ -365,7 +481,7 @@ "type": "string" }, "pageSize": { - "description": "The maximum number of policy schemas to return.", + "description": "The maximum number of policy schemas to return, defaults to 100 and has a maximum of 1000.", "format": "int32", "location": "query", "type": "integer" @@ -385,7 +501,7 @@ }, "path": "v1/{+parent}/policySchemas", "response": { - "$ref": "GoogleChromePolicyV1ListPolicySchemasResponse" + "$ref": "GoogleChromePolicyVersionsV1ListPolicySchemasResponse" }, "scopes": [ "https://www.googleapis.com/auth/chrome.management.policy", @@ -441,7 +557,7 @@ } } }, - "revision": "20220914", + "revision": "20221014", "rootUrl": "https://chromepolicy.googleapis.com/", "schemas": { "ChromeCrosDpanelAutosettingsProtoPolicyApiLifecycle": { @@ -476,9 +592,9 @@ }, "type": "object" }, - "GoogleChromePolicyV1AdditionalTargetKeyName": { + "GoogleChromePolicyVersionsV1AdditionalTargetKeyName": { "description": "Additional key names that will be used to identify the target of the policy value.", - "id": "GoogleChromePolicyV1AdditionalTargetKeyName", + "id": "GoogleChromePolicyVersionsV1AdditionalTargetKeyName", "properties": { "key": { "description": "Key name.", @@ -491,110 +607,202 @@ }, "type": "object" }, - "GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest": { + "GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest": { "description": "Request message for specifying that multiple policy values will be deleted.", - "id": "GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest", + "id": "GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest", "properties": { "requests": { "description": "List of policies that will be deleted as defined by the `requests`. All requests in the list must follow these restrictions: 1. All schemas in the list must have the same root namespace. 2. All `policyTargetKey.targetResource` values must point to a group resource. 3. All `policyTargetKey` values must have the same `app_id` key name in the `additionalTargetKeys`. 4. No two modification requests can reference the same `policySchema` + ` policyTargetKey` pair. ", "items": { - "$ref": "GoogleChromePolicyV1DeleteGroupPolicyRequest" + "$ref": "GoogleChromePolicyVersionsV1DeleteGroupPolicyRequest" }, "type": "array" } }, "type": "object" }, - "GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest": { + "GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest": { "description": "Request message for specifying that multiple policy values inherit their value from their parents.", - "id": "GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest", + "id": "GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest", "properties": { "requests": { "description": "List of policies that have to inherit their values as defined by the `requests`. All requests in the list must follow these restrictions: 1. All schemas in the list must have the same root namespace. 2. All `policyTargetKey.targetResource` values must point to an org unit resource. 3. All `policyTargetKey` values must have the same key names in the ` additionalTargetKeys`. This also means if one of the targets has an empty `additionalTargetKeys` map, all of the targets must have an empty `additionalTargetKeys` map. 4. No two modification requests can reference the same `policySchema` + ` policyTargetKey` pair. ", "items": { - "$ref": "GoogleChromePolicyV1InheritOrgUnitPolicyRequest" + "$ref": "GoogleChromePolicyVersionsV1InheritOrgUnitPolicyRequest" }, "type": "array" } }, "type": "object" }, - "GoogleChromePolicyV1BatchModifyGroupPoliciesRequest": { + "GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest": { "description": "Request message for modifying multiple policy values for a specific group-based target.", - "id": "GoogleChromePolicyV1BatchModifyGroupPoliciesRequest", + "id": "GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest", "properties": { "requests": { "description": "List of policies to modify as defined by the `requests`. All requests in the list must follow these restrictions: 1. All schemas in the list must have the same root namespace. 2. All `policyTargetKey.targetResource` values must point to a group resource. 3. All `policyTargetKey` values must have the same `app_id` key name in the `additionalTargetKeys`. 4. No two modification requests can reference the same `policySchema` + ` policyTargetKey` pair. ", "items": { - "$ref": "GoogleChromePolicyV1ModifyGroupPolicyRequest" + "$ref": "GoogleChromePolicyVersionsV1ModifyGroupPolicyRequest" }, "type": "array" } }, "type": "object" }, - "GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest": { + "GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest": { "description": "Request message for modifying multiple policy values for a specific target.", - "id": "GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest", + "id": "GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest", "properties": { "requests": { "description": "List of policies to modify as defined by the `requests`. All requests in the list must follow these restrictions: 1. All schemas in the list must have the same root namespace. 2. All `policyTargetKey.targetResource` values must point to an org unit resource. 3. All `policyTargetKey` values must have the same key names in the ` additionalTargetKeys`. This also means if one of the targets has an empty `additionalTargetKeys` map, all of the targets must have an empty `additionalTargetKeys` map. 4. No two modification requests can reference the same `policySchema` + ` policyTargetKey` pair. ", "items": { - "$ref": "GoogleChromePolicyV1ModifyOrgUnitPolicyRequest" + "$ref": "GoogleChromePolicyVersionsV1ModifyOrgUnitPolicyRequest" }, "type": "array" } }, "type": "object" }, - "GoogleChromePolicyV1DeleteGroupPolicyRequest": { + "GoogleChromePolicyVersionsV1DefineCertificateRequest": { + "description": "Request object for creating a certificate.", + "id": "GoogleChromePolicyVersionsV1DefineCertificateRequest", + "properties": { + "ceritificateName": { + "description": "Optional. The optional name of the certificate. If not specified, the certificate issuer will be used as the name.", + "type": "string" + }, + "certificate": { + "description": "Required. The raw contents of the .PEM, .CRT, or .CER file.", + "type": "string" + }, + "settings": { + "description": "Optional. Certificate settings within the chrome.networks.certificates namespace.", + "items": { + "$ref": "GoogleChromePolicyVersionsV1NetworkSetting" + }, + "type": "array" + }, + "targetResource": { + "description": "Required. The target resource on which this certificate is applied. The following resources are supported: * Organizational Unit (\"orgunits/{orgunit_id}\")", + "type": "string" + } + }, + "type": "object" + }, + "GoogleChromePolicyVersionsV1DefineCertificateResponse": { + "description": "Response object for creating a certificate.", + "id": "GoogleChromePolicyVersionsV1DefineCertificateResponse", + "properties": { + "networkId": { + "description": "The guid of the certificate created by the action.", + "type": "string" + }, + "settings": { + "description": "the affiliated settings of the certificate (NOT IMPLEMENTED)", + "items": { + "$ref": "GoogleChromePolicyVersionsV1NetworkSetting" + }, + "type": "array" + }, + "targetResource": { + "description": "the resource at which the certificate is defined.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleChromePolicyVersionsV1DefineNetworkRequest": { + "description": "Request object for creating a new network.", + "id": "GoogleChromePolicyVersionsV1DefineNetworkRequest", + "properties": { + "name": { + "description": "Required. Name of the new created network.", + "type": "string" + }, + "settings": { + "description": "Required. Detailed network settings.", + "items": { + "$ref": "GoogleChromePolicyVersionsV1NetworkSetting" + }, + "type": "array" + }, + "targetResource": { + "description": "Required. The target resource on which this new network will be defined. The following resources are supported: * Organizational Unit (\"orgunits/{orgunit_id}\")", + "type": "string" + } + }, + "type": "object" + }, + "GoogleChromePolicyVersionsV1DefineNetworkResponse": { + "description": "Response object for creating a network.", + "id": "GoogleChromePolicyVersionsV1DefineNetworkResponse", + "properties": { + "networkId": { + "description": "Network ID of the new created network.", + "type": "string" + }, + "settings": { + "description": "Detailed network settings of the new created network", + "items": { + "$ref": "GoogleChromePolicyVersionsV1NetworkSetting" + }, + "type": "array" + }, + "targetResource": { + "description": "The target resource on which this new network will be defined. The following resources are supported: * Organizational Unit (\"orgunits/{orgunit_id}\")", + "type": "string" + } + }, + "type": "object" + }, + "GoogleChromePolicyVersionsV1DeleteGroupPolicyRequest": { "description": "Request parameters for deleting the policy value of a specific group target.", - "id": "GoogleChromePolicyV1DeleteGroupPolicyRequest", + "id": "GoogleChromePolicyVersionsV1DeleteGroupPolicyRequest", "properties": { "policySchema": { "description": "The fully qualified name of the policy schema that is being inherited.", "type": "string" }, "policyTargetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Required. The key of the target for which we want to modify a policy. The target resource must point to a Group." } }, "type": "object" }, - "GoogleChromePolicyV1InheritOrgUnitPolicyRequest": { + "GoogleChromePolicyVersionsV1InheritOrgUnitPolicyRequest": { "description": "Request parameters for inheriting policy value of a specific org unit target from the policy value of its parent org unit.", - "id": "GoogleChromePolicyV1InheritOrgUnitPolicyRequest", + "id": "GoogleChromePolicyVersionsV1InheritOrgUnitPolicyRequest", "properties": { "policySchema": { "description": "The fully qualified name of the policy schema that is being inherited.", "type": "string" }, "policyTargetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Required. The key of the target for which we want to modify a policy. The target resource must point to an Org Unit." } }, "type": "object" }, - "GoogleChromePolicyV1ListGroupPriorityOrderingRequest": { + "GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest": { "description": "Request message for listing the group priority ordering of an app.", - "id": "GoogleChromePolicyV1ListGroupPriorityOrderingRequest", + "id": "GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest", "properties": { "policyNamespace": { "description": "Required. The namespace of the policy type for the request.", "type": "string" }, "policyTargetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Required. The key of the target for which we want to retrieve the group priority ordering. The target resource must point to an app." } }, "type": "object" }, - "GoogleChromePolicyV1ListGroupPriorityOrderingResponse": { + "GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse": { "description": "Response message for listing the group priority ordering of an app.", - "id": "GoogleChromePolicyV1ListGroupPriorityOrderingResponse", + "id": "GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse", "properties": { "groupIds": { "description": "Output only. The group IDs, in priority ordering.", @@ -610,16 +818,16 @@ "type": "string" }, "policyTargetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Output only. The target resource for which the group priority ordering has been retrieved.", "readOnly": true } }, "type": "object" }, - "GoogleChromePolicyV1ListPolicySchemasResponse": { + "GoogleChromePolicyVersionsV1ListPolicySchemasResponse": { "description": "Response message for listing policy schemas that match a filter.", - "id": "GoogleChromePolicyV1ListPolicySchemasResponse", + "id": "GoogleChromePolicyVersionsV1ListPolicySchemasResponse", "properties": { "nextPageToken": { "description": "The page token used to get the next page of policy schemas.", @@ -628,23 +836,23 @@ "policySchemas": { "description": "The list of policy schemas that match the query.", "items": { - "$ref": "GoogleChromePolicyV1PolicySchema" + "$ref": "GoogleChromePolicyVersionsV1PolicySchema" }, "type": "array" } }, "type": "object" }, - "GoogleChromePolicyV1ModifyGroupPolicyRequest": { + "GoogleChromePolicyVersionsV1ModifyGroupPolicyRequest": { "description": "Request parameters for modifying a policy value for a specific group target.", - "id": "GoogleChromePolicyV1ModifyGroupPolicyRequest", + "id": "GoogleChromePolicyVersionsV1ModifyGroupPolicyRequest", "properties": { "policyTargetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Required. The key of the target for which we want to modify a policy. The target resource must point to a Group." }, "policyValue": { - "$ref": "GoogleChromePolicyV1PolicyValue", + "$ref": "GoogleChromePolicyVersionsV1PolicyValue", "description": "The new value for the policy." }, "updateMask": { @@ -655,16 +863,16 @@ }, "type": "object" }, - "GoogleChromePolicyV1ModifyOrgUnitPolicyRequest": { + "GoogleChromePolicyVersionsV1ModifyOrgUnitPolicyRequest": { "description": "Request parameters for modifying a policy value for a specific org unit target.", - "id": "GoogleChromePolicyV1ModifyOrgUnitPolicyRequest", + "id": "GoogleChromePolicyVersionsV1ModifyOrgUnitPolicyRequest", "properties": { "policyTargetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Required. The key of the target for which we want to modify a policy. The target resource must point to an Org Unit." }, "policyValue": { - "$ref": "GoogleChromePolicyV1PolicyValue", + "$ref": "GoogleChromePolicyVersionsV1PolicyValue", "description": "The new value for the policy." }, "updateMask": { @@ -675,9 +883,45 @@ }, "type": "object" }, - "GoogleChromePolicyV1PolicySchema": { - "description": "Resource representing a policy schema. Next ID: 14", - "id": "GoogleChromePolicyV1PolicySchema", + "GoogleChromePolicyVersionsV1NetworkSetting": { + "description": "A network setting contains network configurations.", + "id": "GoogleChromePolicyVersionsV1NetworkSetting", + "properties": { + "policySchema": { + "description": "The fully qualified name of the network setting.", + "type": "string" + }, + "value": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "The value of the network setting.", + "type": "object" + } + }, + "type": "object" + }, + "GoogleChromePolicyVersionsV1PolicyModificationFieldError": { + "description": "Error information for a modification request of a specific field on a specific policy.", + "id": "GoogleChromePolicyVersionsV1PolicyModificationFieldError", + "properties": { + "error": { + "description": "Output only. The error message related to the field.", + "readOnly": true, + "type": "string" + }, + "field": { + "description": "Output only. The name of the field with the error.", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "GoogleChromePolicyVersionsV1PolicySchema": { + "description": "Resource representing a policy schema.", + "id": "GoogleChromePolicyVersionsV1PolicySchema", "properties": { "accessRestrictions": { "description": "Output only. Specific access restrictions related to this policy.", @@ -690,14 +934,13 @@ "additionalTargetKeyNames": { "description": "Output only. Additional key names that will be used to identify the target of the policy value. When specifying a `policyTargetKey`, each of the additional keys specified here will have to be included in the `additionalTargetKeys` map.", "items": { - "$ref": "GoogleChromePolicyV1AdditionalTargetKeyName" + "$ref": "GoogleChromePolicyVersionsV1AdditionalTargetKeyName" }, "readOnly": true, "type": "array" }, "categoryTitle": { - "description": "Output only. Title of the category in which a setting belongs.", - "readOnly": true, + "description": "Title of the category in which a setting belongs.", "type": "string" }, "definition": { @@ -707,7 +950,7 @@ "fieldDescriptions": { "description": "Output only. Detailed description of each field that is part of the schema.", "items": { - "$ref": "GoogleChromePolicyV1PolicySchemaFieldDescription" + "$ref": "GoogleChromePolicyVersionsV1PolicySchemaFieldDescription" }, "readOnly": true, "type": "array" @@ -719,7 +962,7 @@ "notices": { "description": "Output only. Special notice messages related to setting certain values in certain fields in the schema.", "items": { - "$ref": "GoogleChromePolicyV1PolicySchemaNoticeDescription" + "$ref": "GoogleChromePolicyVersionsV1PolicySchemaNoticeDescription" }, "readOnly": true, "type": "array" @@ -769,9 +1012,9 @@ }, "type": "object" }, - "GoogleChromePolicyV1PolicySchemaFieldDependencies": { + "GoogleChromePolicyVersionsV1PolicySchemaFieldDependencies": { "description": "The field and the value it must have for another field to be allowed to be set.", - "id": "GoogleChromePolicyV1PolicySchemaFieldDependencies", + "id": "GoogleChromePolicyVersionsV1PolicySchemaFieldDependencies", "properties": { "sourceField": { "description": "The source field which this field depends on.", @@ -784,10 +1027,15 @@ }, "type": "object" }, - "GoogleChromePolicyV1PolicySchemaFieldDescription": { + "GoogleChromePolicyVersionsV1PolicySchemaFieldDescription": { "description": "Provides detailed information for a particular field that is part of a PolicySchema.", - "id": "GoogleChromePolicyV1PolicySchemaFieldDescription", + "id": "GoogleChromePolicyVersionsV1PolicySchemaFieldDescription", "properties": { + "defaultValue": { + "description": "Output only. Client default if the policy is unset.", + "readOnly": true, + "type": "any" + }, "description": { "description": "Deprecated. Use name and field_description instead. The description for the field.", "type": "string" @@ -800,7 +1048,7 @@ "fieldDependencies": { "description": "Output only. Provides a list of fields and values. At least one of the fields must have the corresponding value in order for this field to be allowed to be set.", "items": { - "$ref": "GoogleChromePolicyV1PolicySchemaFieldDependencies" + "$ref": "GoogleChromePolicyVersionsV1PolicySchemaFieldDependencies" }, "readOnly": true, "type": "array" @@ -818,7 +1066,7 @@ "knownValueDescriptions": { "description": "Output only. If the field has a set of known values, this field will provide a description for these values.", "items": { - "$ref": "GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription" + "$ref": "GoogleChromePolicyVersionsV1PolicySchemaFieldKnownValueDescription" }, "readOnly": true, "type": "array" @@ -831,7 +1079,7 @@ "nestedFieldDescriptions": { "description": "Output only. Provides the description of the fields nested in this field, if the field is a message type that defines multiple fields.", "items": { - "$ref": "GoogleChromePolicyV1PolicySchemaFieldDescription" + "$ref": "GoogleChromePolicyVersionsV1PolicySchemaFieldDescription" }, "readOnly": true, "type": "array" @@ -839,7 +1087,7 @@ "requiredItems": { "description": "Output only. Provides a list of fields that are required to be set if this field has a certain value.", "items": { - "$ref": "GoogleChromePolicyV1PolicySchemaRequiredItems" + "$ref": "GoogleChromePolicyVersionsV1PolicySchemaRequiredItems" }, "readOnly": true, "type": "array" @@ -847,9 +1095,9 @@ }, "type": "object" }, - "GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription": { + "GoogleChromePolicyVersionsV1PolicySchemaFieldKnownValueDescription": { "description": "Provides detailed information about a known value that is allowed for a particular field in a PolicySchema.", - "id": "GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription", + "id": "GoogleChromePolicyVersionsV1PolicySchemaFieldKnownValueDescription", "properties": { "description": { "description": "Output only. Additional description for this value.", @@ -864,9 +1112,9 @@ }, "type": "object" }, - "GoogleChromePolicyV1PolicySchemaNoticeDescription": { + "GoogleChromePolicyVersionsV1PolicySchemaNoticeDescription": { "description": "Provides special notice messages related to a particular value in a field that is part of a PolicySchema.", - "id": "GoogleChromePolicyV1PolicySchemaNoticeDescription", + "id": "GoogleChromePolicyVersionsV1PolicySchemaNoticeDescription", "properties": { "acknowledgementRequired": { "description": "Output only. Whether the user needs to acknowledge the notice message before the value can be set.", @@ -891,9 +1139,9 @@ }, "type": "object" }, - "GoogleChromePolicyV1PolicySchemaRequiredItems": { + "GoogleChromePolicyVersionsV1PolicySchemaRequiredItems": { "description": "The fields that will become required based on the value of this field.", - "id": "GoogleChromePolicyV1PolicySchemaRequiredItems", + "id": "GoogleChromePolicyVersionsV1PolicySchemaRequiredItems", "properties": { "fieldConditions": { "description": "The value(s) of the field that provoke required field enforcement. An empty field_conditions implies that any value assigned to this field will provoke required field enforcement.", @@ -912,9 +1160,9 @@ }, "type": "object" }, - "GoogleChromePolicyV1PolicyTargetKey": { + "GoogleChromePolicyVersionsV1PolicyTargetKey": { "description": "The key used to identify the target on which the policy will be applied.", - "id": "GoogleChromePolicyV1PolicyTargetKey", + "id": "GoogleChromePolicyVersionsV1PolicyTargetKey", "properties": { "additionalTargetKeys": { "additionalProperties": { @@ -930,9 +1178,9 @@ }, "type": "object" }, - "GoogleChromePolicyV1PolicyValue": { + "GoogleChromePolicyVersionsV1PolicyValue": { "description": "A particular value for a policy managed by the service.", - "id": "GoogleChromePolicyV1PolicyValue", + "id": "GoogleChromePolicyVersionsV1PolicyValue", "properties": { "policySchema": { "description": "The fully qualified name of the policy schema associated with this policy.", @@ -949,9 +1197,51 @@ }, "type": "object" }, - "GoogleChromePolicyV1ResolveRequest": { + "GoogleChromePolicyVersionsV1RemoveCertificateRequest": { + "description": "Request object for removing a certificate.", + "id": "GoogleChromePolicyVersionsV1RemoveCertificateRequest", + "properties": { + "networkId": { + "description": "Required. The GUID of the certificate to remove.", + "type": "string" + }, + "targetResource": { + "description": "Required. The target resource on which this certificate will be removed. The following resources are supported: * Organizational Unit (\"orgunits/{orgunit_id}\")", + "type": "string" + } + }, + "type": "object" + }, + "GoogleChromePolicyVersionsV1RemoveCertificateResponse": { + "description": "Response object for removing a certificate.", + "id": "GoogleChromePolicyVersionsV1RemoveCertificateResponse", + "properties": {}, + "type": "object" + }, + "GoogleChromePolicyVersionsV1RemoveNetworkRequest": { + "description": "Request object for removing a network", + "id": "GoogleChromePolicyVersionsV1RemoveNetworkRequest", + "properties": { + "networkId": { + "description": "Required. The GUID of the network to remove.", + "type": "string" + }, + "targetResource": { + "description": "Required. The target resource on which this network will be removed. The following resources are supported: * Organizational Unit (\"orgunits/{orgunit_id}\")", + "type": "string" + } + }, + "type": "object" + }, + "GoogleChromePolicyVersionsV1RemoveNetworkResponse": { + "description": "Response object for removing a network.", + "id": "GoogleChromePolicyVersionsV1RemoveNetworkResponse", + "properties": {}, + "type": "object" + }, + "GoogleChromePolicyVersionsV1ResolveRequest": { "description": "Request message for getting the resolved policy value for a specific target.", - "id": "GoogleChromePolicyV1ResolveRequest", + "id": "GoogleChromePolicyVersionsV1ResolveRequest", "properties": { "pageSize": { "description": "The maximum number of policies to return, defaults to 100 and has a maximum of 1000.", @@ -963,19 +1253,19 @@ "type": "string" }, "policySchemaFilter": { - "description": "The schema filter to apply to the resolve request. Specify a schema name to view a particular schema, for example: chrome.users.ShowLogoutButton Wildcards are supported, but only in the leaf portion of the schema name. Wildcards cannot be used in namespace directly. Please read https://developers.google.com/chrome/policy/guides/policy-schemas for details on schema namepsaces. For example: Valid: \"chrome.users.*\", \"chrome.users.apps.*\", \"chrome.printers.*\" Invalid: \"*\", \"*.users\", \"chrome.*\", \"chrome.*.apps.*\"", + "description": "The schema filter to apply to the resolve request. Specify a schema name to view a particular schema, for example: chrome.users.ShowLogoutButton Wildcards are supported, but only in the leaf portion of the schema name. Wildcards cannot be used in namespace directly. Please read https://developers.google.com/chrome/policy/guides/policy-schemas for details on schema namespaces. For example: Valid: \"chrome.users.*\", \"chrome.users.apps.*\", \"chrome.printers.*\" Invalid: \"*\", \"*.users\", \"chrome.*\", \"chrome.*.apps.*\"", "type": "string" }, "policyTargetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Required. The key of the target resource on which the policies should be resolved. The target resource must point to an Org Unit." } }, "type": "object" }, - "GoogleChromePolicyV1ResolveResponse": { + "GoogleChromePolicyVersionsV1ResolveResponse": { "description": "Response message for getting the resolved policy value for a specific target.", - "id": "GoogleChromePolicyV1ResolveResponse", + "id": "GoogleChromePolicyVersionsV1ResolveResponse", "properties": { "nextPageToken": { "description": "The page token used to get the next set of resolved policies found by the request.", @@ -984,43 +1274,43 @@ "resolvedPolicies": { "description": "The list of resolved policies found by the resolve request.", "items": { - "$ref": "GoogleChromePolicyV1ResolvedPolicy" + "$ref": "GoogleChromePolicyVersionsV1ResolvedPolicy" }, "type": "array" } }, "type": "object" }, - "GoogleChromePolicyV1ResolvedPolicy": { + "GoogleChromePolicyVersionsV1ResolvedPolicy": { "description": "The resolved value of a policy for a given target.", - "id": "GoogleChromePolicyV1ResolvedPolicy", + "id": "GoogleChromePolicyVersionsV1ResolvedPolicy", "properties": { "addedSourceKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Output only. The added source key establishes at which level an entity was explicitly added for management. This is useful for certain type of policies that are only applied if they are explicitly added for management. For example: apps and networks. An entity can only be deleted from management in an Organizational Unit that it was explicitly added to. If this is not present it means that the policy is managed without the need to explicitly add an entity, for example: standard user or device policies.", "readOnly": true }, "sourceKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Output only. The source resource from which this policy value is obtained. May be the same as `targetKey` if the policy is directly modified on the target, otherwise it would be another resource from which the policy gets its value (if applicable). If not present, the source is the default value for the customer.", "readOnly": true }, "targetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Output only. The target resource for which the resolved policy value applies.", "readOnly": true }, "value": { - "$ref": "GoogleChromePolicyV1PolicyValue", + "$ref": "GoogleChromePolicyVersionsV1PolicyValue", "description": "Output only. The resolved value of the policy.", "readOnly": true } }, "type": "object" }, - "GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest": { + "GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest": { "description": "Request message for updating the group priority ordering of an app.", - "id": "GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest", + "id": "GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest", "properties": { "groupIds": { "description": "Required. The group IDs, in desired priority ordering.", @@ -1034,14 +1324,14 @@ "type": "string" }, "policyTargetKey": { - "$ref": "GoogleChromePolicyV1PolicyTargetKey", + "$ref": "GoogleChromePolicyVersionsV1PolicyTargetKey", "description": "Required. The key of the target for which we want to update the group priority ordering. The target resource must point to an app." } }, "type": "object" }, "GoogleChromePolicyVersionsV1UploadPolicyFileRequest": { - "description": "Request message for uploading a file for a policy. Next ID: 5", + "description": "Request message for uploading a file for a policy.", "id": "GoogleChromePolicyVersionsV1UploadPolicyFileRequest", "properties": { "policyField": { @@ -1052,7 +1342,7 @@ "type": "object" }, "GoogleChromePolicyVersionsV1UploadPolicyFileResponse": { - "description": "Response message for downloading an uploaded file. Next ID: 2", + "description": "Response message for downloading an uploaded file.", "id": "GoogleChromePolicyVersionsV1UploadPolicyFileResponse", "properties": { "downloadUri": { diff --git a/chromepolicy/v1/chromepolicy-gen.go b/chromepolicy/v1/chromepolicy-gen.go index 3322d4b87ea..3856830703e 100644 --- a/chromepolicy/v1/chromepolicy-gen.go +++ b/chromepolicy/v1/chromepolicy-gen.go @@ -167,6 +167,7 @@ type CustomersService struct { func NewCustomersPoliciesService(s *Service) *CustomersPoliciesService { rs := &CustomersPoliciesService{s: s} rs.Groups = NewCustomersPoliciesGroupsService(s) + rs.Networks = NewCustomersPoliciesNetworksService(s) rs.Orgunits = NewCustomersPoliciesOrgunitsService(s) return rs } @@ -176,6 +177,8 @@ type CustomersPoliciesService struct { Groups *CustomersPoliciesGroupsService + Networks *CustomersPoliciesNetworksService + Orgunits *CustomersPoliciesOrgunitsService } @@ -188,6 +191,15 @@ type CustomersPoliciesGroupsService struct { s *Service } +func NewCustomersPoliciesNetworksService(s *Service) *CustomersPoliciesNetworksService { + rs := &CustomersPoliciesNetworksService{s: s} + return rs +} + +type CustomersPoliciesNetworksService struct { + s *Service +} + func NewCustomersPoliciesOrgunitsService(s *Service) *CustomersPoliciesOrgunitsService { rs := &CustomersPoliciesOrgunitsService{s: s} return rs @@ -268,9 +280,9 @@ func (s *ChromeCrosDpanelAutosettingsProtoPolicyApiLifecycle) MarshalJSON() ([]b return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1AdditionalTargetKeyName: Additional key names -// that will be used to identify the target of the policy value. -type GoogleChromePolicyV1AdditionalTargetKeyName struct { +// GoogleChromePolicyVersionsV1AdditionalTargetKeyName: Additional key +// names that will be used to identify the target of the policy value. +type GoogleChromePolicyVersionsV1AdditionalTargetKeyName struct { // Key: Key name. Key string `json:"key,omitempty"` @@ -294,15 +306,15 @@ type GoogleChromePolicyV1AdditionalTargetKeyName struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1AdditionalTargetKeyName) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1AdditionalTargetKeyName +func (s *GoogleChromePolicyVersionsV1AdditionalTargetKeyName) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1AdditionalTargetKeyName raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest: Request message -// for specifying that multiple policy values will be deleted. -type GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest struct { +// GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest: Request +// message for specifying that multiple policy values will be deleted. +type GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest struct { // Requests: List of policies that will be deleted as defined by the // `requests`. All requests in the list must follow these restrictions: // 1. All schemas in the list must have the same root namespace. 2. All @@ -311,7 +323,7 @@ type GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest struct { // key name in the `additionalTargetKeys`. 4. No two modification // requests can reference the same `policySchema` + ` policyTargetKey` // pair. - Requests []*GoogleChromePolicyV1DeleteGroupPolicyRequest `json:"requests,omitempty"` + Requests []*GoogleChromePolicyVersionsV1DeleteGroupPolicyRequest `json:"requests,omitempty"` // ForceSendFields is a list of field names (e.g. "Requests") to // unconditionally include in API requests. By default, fields with @@ -330,16 +342,16 @@ type GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest +func (s *GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest: Request -// message for specifying that multiple policy values inherit their -// value from their parents. -type GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest struct { +// GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest: +// Request message for specifying that multiple policy values inherit +// their value from their parents. +type GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest struct { // Requests: List of policies that have to inherit their values as // defined by the `requests`. All requests in the list must follow these // restrictions: 1. All schemas in the list must have the same root @@ -350,7 +362,7 @@ type GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest struct { // the targets must have an empty `additionalTargetKeys` map. 4. No two // modification requests can reference the same `policySchema` + ` // policyTargetKey` pair. - Requests []*GoogleChromePolicyV1InheritOrgUnitPolicyRequest `json:"requests,omitempty"` + Requests []*GoogleChromePolicyVersionsV1InheritOrgUnitPolicyRequest `json:"requests,omitempty"` // ForceSendFields is a list of field names (e.g. "Requests") to // unconditionally include in API requests. By default, fields with @@ -369,16 +381,16 @@ type GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest +func (s *GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1BatchModifyGroupPoliciesRequest: Request message -// for modifying multiple policy values for a specific group-based -// target. -type GoogleChromePolicyV1BatchModifyGroupPoliciesRequest struct { +// GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest: Request +// message for modifying multiple policy values for a specific +// group-based target. +type GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest struct { // Requests: List of policies to modify as defined by the `requests`. // All requests in the list must follow these restrictions: 1. All // schemas in the list must have the same root namespace. 2. All @@ -387,7 +399,7 @@ type GoogleChromePolicyV1BatchModifyGroupPoliciesRequest struct { // key name in the `additionalTargetKeys`. 4. No two modification // requests can reference the same `policySchema` + ` policyTargetKey` // pair. - Requests []*GoogleChromePolicyV1ModifyGroupPolicyRequest `json:"requests,omitempty"` + Requests []*GoogleChromePolicyVersionsV1ModifyGroupPolicyRequest `json:"requests,omitempty"` // ForceSendFields is a list of field names (e.g. "Requests") to // unconditionally include in API requests. By default, fields with @@ -406,15 +418,16 @@ type GoogleChromePolicyV1BatchModifyGroupPoliciesRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1BatchModifyGroupPoliciesRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1BatchModifyGroupPoliciesRequest +func (s *GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest: Request -// message for modifying multiple policy values for a specific target. -type GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest struct { +// GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest: +// Request message for modifying multiple policy values for a specific +// target. +type GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest struct { // Requests: List of policies to modify as defined by the `requests`. // All requests in the list must follow these restrictions: 1. All // schemas in the list must have the same root namespace. 2. All @@ -425,7 +438,7 @@ type GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest struct { // must have an empty `additionalTargetKeys` map. 4. No two modification // requests can reference the same `policySchema` + ` policyTargetKey` // pair. - Requests []*GoogleChromePolicyV1ModifyOrgUnitPolicyRequest `json:"requests,omitempty"` + Requests []*GoogleChromePolicyVersionsV1ModifyOrgUnitPolicyRequest `json:"requests,omitempty"` // ForceSendFields is a list of field names (e.g. "Requests") to // unconditionally include in API requests. By default, fields with @@ -444,22 +457,184 @@ type GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest +func (s *GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleChromePolicyVersionsV1DefineCertificateRequest: Request object +// for creating a certificate. +type GoogleChromePolicyVersionsV1DefineCertificateRequest struct { + // CeritificateName: Optional. The optional name of the certificate. If + // not specified, the certificate issuer will be used as the name. + CeritificateName string `json:"ceritificateName,omitempty"` + + // Certificate: Required. The raw contents of the .PEM, .CRT, or .CER + // file. + Certificate string `json:"certificate,omitempty"` + + // Settings: Optional. Certificate settings within the + // chrome.networks.certificates namespace. + Settings []*GoogleChromePolicyVersionsV1NetworkSetting `json:"settings,omitempty"` + + // TargetResource: Required. The target resource on which this + // certificate is applied. The following resources are supported: * + // Organizational Unit ("orgunits/{orgunit_id}") + TargetResource string `json:"targetResource,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CeritificateName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CeritificateName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromePolicyVersionsV1DefineCertificateRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1DefineCertificateRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleChromePolicyVersionsV1DefineCertificateResponse: Response +// object for creating a certificate. +type GoogleChromePolicyVersionsV1DefineCertificateResponse struct { + // NetworkId: The guid of the certificate created by the action. + NetworkId string `json:"networkId,omitempty"` + + // Settings: the affiliated settings of the certificate (NOT + // IMPLEMENTED) + Settings []*GoogleChromePolicyVersionsV1NetworkSetting `json:"settings,omitempty"` + + // TargetResource: the resource at which the certificate is defined. + TargetResource string `json:"targetResource,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NetworkId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NetworkId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromePolicyVersionsV1DefineCertificateResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1DefineCertificateResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleChromePolicyVersionsV1DefineNetworkRequest: Request object for +// creating a new network. +type GoogleChromePolicyVersionsV1DefineNetworkRequest struct { + // Name: Required. Name of the new created network. + Name string `json:"name,omitempty"` + + // Settings: Required. Detailed network settings. + Settings []*GoogleChromePolicyVersionsV1NetworkSetting `json:"settings,omitempty"` + + // TargetResource: Required. The target resource on which this new + // network will be defined. The following resources are supported: * + // Organizational Unit ("orgunits/{orgunit_id}") + TargetResource string `json:"targetResource,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromePolicyVersionsV1DefineNetworkRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1DefineNetworkRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleChromePolicyVersionsV1DefineNetworkResponse: Response object +// for creating a network. +type GoogleChromePolicyVersionsV1DefineNetworkResponse struct { + // NetworkId: Network ID of the new created network. + NetworkId string `json:"networkId,omitempty"` + + // Settings: Detailed network settings of the new created network + Settings []*GoogleChromePolicyVersionsV1NetworkSetting `json:"settings,omitempty"` + + // TargetResource: The target resource on which this new network will be + // defined. The following resources are supported: * Organizational Unit + // ("orgunits/{orgunit_id}") + TargetResource string `json:"targetResource,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NetworkId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NetworkId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromePolicyVersionsV1DefineNetworkResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1DefineNetworkResponse raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1DeleteGroupPolicyRequest: Request parameters for -// deleting the policy value of a specific group target. -type GoogleChromePolicyV1DeleteGroupPolicyRequest struct { +// GoogleChromePolicyVersionsV1DeleteGroupPolicyRequest: Request +// parameters for deleting the policy value of a specific group target. +type GoogleChromePolicyVersionsV1DeleteGroupPolicyRequest struct { // PolicySchema: The fully qualified name of the policy schema that is // being inherited. PolicySchema string `json:"policySchema,omitempty"` // PolicyTargetKey: Required. The key of the target for which we want to // modify a policy. The target resource must point to a Group. - PolicyTargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"policyTargetKey,omitempty"` + PolicyTargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"policyTargetKey,omitempty"` // ForceSendFields is a list of field names (e.g. "PolicySchema") to // unconditionally include in API requests. By default, fields with @@ -478,23 +653,23 @@ type GoogleChromePolicyV1DeleteGroupPolicyRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1DeleteGroupPolicyRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1DeleteGroupPolicyRequest +func (s *GoogleChromePolicyVersionsV1DeleteGroupPolicyRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1DeleteGroupPolicyRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1InheritOrgUnitPolicyRequest: Request parameters -// for inheriting policy value of a specific org unit target from the -// policy value of its parent org unit. -type GoogleChromePolicyV1InheritOrgUnitPolicyRequest struct { +// GoogleChromePolicyVersionsV1InheritOrgUnitPolicyRequest: Request +// parameters for inheriting policy value of a specific org unit target +// from the policy value of its parent org unit. +type GoogleChromePolicyVersionsV1InheritOrgUnitPolicyRequest struct { // PolicySchema: The fully qualified name of the policy schema that is // being inherited. PolicySchema string `json:"policySchema,omitempty"` // PolicyTargetKey: Required. The key of the target for which we want to // modify a policy. The target resource must point to an Org Unit. - PolicyTargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"policyTargetKey,omitempty"` + PolicyTargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"policyTargetKey,omitempty"` // ForceSendFields is a list of field names (e.g. "PolicySchema") to // unconditionally include in API requests. By default, fields with @@ -513,15 +688,15 @@ type GoogleChromePolicyV1InheritOrgUnitPolicyRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1InheritOrgUnitPolicyRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1InheritOrgUnitPolicyRequest +func (s *GoogleChromePolicyVersionsV1InheritOrgUnitPolicyRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1InheritOrgUnitPolicyRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1ListGroupPriorityOrderingRequest: Request message -// for listing the group priority ordering of an app. -type GoogleChromePolicyV1ListGroupPriorityOrderingRequest struct { +// GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest: Request +// message for listing the group priority ordering of an app. +type GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest struct { // PolicyNamespace: Required. The namespace of the policy type for the // request. PolicyNamespace string `json:"policyNamespace,omitempty"` @@ -529,7 +704,7 @@ type GoogleChromePolicyV1ListGroupPriorityOrderingRequest struct { // PolicyTargetKey: Required. The key of the target for which we want to // retrieve the group priority ordering. The target resource must point // to an app. - PolicyTargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"policyTargetKey,omitempty"` + PolicyTargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"policyTargetKey,omitempty"` // ForceSendFields is a list of field names (e.g. "PolicyNamespace") to // unconditionally include in API requests. By default, fields with @@ -549,15 +724,15 @@ type GoogleChromePolicyV1ListGroupPriorityOrderingRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1ListGroupPriorityOrderingRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1ListGroupPriorityOrderingRequest +func (s *GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1ListGroupPriorityOrderingResponse: Response -// message for listing the group priority ordering of an app. -type GoogleChromePolicyV1ListGroupPriorityOrderingResponse struct { +// GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse: +// Response message for listing the group priority ordering of an app. +type GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse struct { // GroupIds: Output only. The group IDs, in priority ordering. GroupIds []string `json:"groupIds,omitempty"` @@ -567,7 +742,7 @@ type GoogleChromePolicyV1ListGroupPriorityOrderingResponse struct { // PolicyTargetKey: Output only. The target resource for which the group // priority ordering has been retrieved. - PolicyTargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"policyTargetKey,omitempty"` + PolicyTargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"policyTargetKey,omitempty"` // ServerResponse contains the HTTP response code and headers from the // server. @@ -590,21 +765,21 @@ type GoogleChromePolicyV1ListGroupPriorityOrderingResponse struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1ListGroupPriorityOrderingResponse) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1ListGroupPriorityOrderingResponse +func (s *GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1ListPolicySchemasResponse: Response message for -// listing policy schemas that match a filter. -type GoogleChromePolicyV1ListPolicySchemasResponse struct { +// GoogleChromePolicyVersionsV1ListPolicySchemasResponse: Response +// message for listing policy schemas that match a filter. +type GoogleChromePolicyVersionsV1ListPolicySchemasResponse struct { // NextPageToken: The page token used to get the next page of policy // schemas. NextPageToken string `json:"nextPageToken,omitempty"` // PolicySchemas: The list of policy schemas that match the query. - PolicySchemas []*GoogleChromePolicyV1PolicySchema `json:"policySchemas,omitempty"` + PolicySchemas []*GoogleChromePolicyVersionsV1PolicySchema `json:"policySchemas,omitempty"` // ServerResponse contains the HTTP response code and headers from the // server. @@ -627,21 +802,21 @@ type GoogleChromePolicyV1ListPolicySchemasResponse struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1ListPolicySchemasResponse) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1ListPolicySchemasResponse +func (s *GoogleChromePolicyVersionsV1ListPolicySchemasResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1ListPolicySchemasResponse raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1ModifyGroupPolicyRequest: Request parameters for -// modifying a policy value for a specific group target. -type GoogleChromePolicyV1ModifyGroupPolicyRequest struct { +// GoogleChromePolicyVersionsV1ModifyGroupPolicyRequest: Request +// parameters for modifying a policy value for a specific group target. +type GoogleChromePolicyVersionsV1ModifyGroupPolicyRequest struct { // PolicyTargetKey: Required. The key of the target for which we want to // modify a policy. The target resource must point to a Group. - PolicyTargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"policyTargetKey,omitempty"` + PolicyTargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"policyTargetKey,omitempty"` // PolicyValue: The new value for the policy. - PolicyValue *GoogleChromePolicyV1PolicyValue `json:"policyValue,omitempty"` + PolicyValue *GoogleChromePolicyVersionsV1PolicyValue `json:"policyValue,omitempty"` // UpdateMask: Required. Policy fields to update. Only fields in this // mask will be updated; other fields in `policy_value` will be ignored @@ -667,21 +842,22 @@ type GoogleChromePolicyV1ModifyGroupPolicyRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1ModifyGroupPolicyRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1ModifyGroupPolicyRequest +func (s *GoogleChromePolicyVersionsV1ModifyGroupPolicyRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1ModifyGroupPolicyRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1ModifyOrgUnitPolicyRequest: Request parameters -// for modifying a policy value for a specific org unit target. -type GoogleChromePolicyV1ModifyOrgUnitPolicyRequest struct { +// GoogleChromePolicyVersionsV1ModifyOrgUnitPolicyRequest: Request +// parameters for modifying a policy value for a specific org unit +// target. +type GoogleChromePolicyVersionsV1ModifyOrgUnitPolicyRequest struct { // PolicyTargetKey: Required. The key of the target for which we want to // modify a policy. The target resource must point to an Org Unit. - PolicyTargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"policyTargetKey,omitempty"` + PolicyTargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"policyTargetKey,omitempty"` // PolicyValue: The new value for the policy. - PolicyValue *GoogleChromePolicyV1PolicyValue `json:"policyValue,omitempty"` + PolicyValue *GoogleChromePolicyVersionsV1PolicyValue `json:"policyValue,omitempty"` // UpdateMask: Required. Policy fields to update. Only fields in this // mask will be updated; other fields in `policy_value` will be ignored @@ -707,15 +883,80 @@ type GoogleChromePolicyV1ModifyOrgUnitPolicyRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1ModifyOrgUnitPolicyRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1ModifyOrgUnitPolicyRequest +func (s *GoogleChromePolicyVersionsV1ModifyOrgUnitPolicyRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1ModifyOrgUnitPolicyRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleChromePolicyVersionsV1NetworkSetting: A network setting +// contains network configurations. +type GoogleChromePolicyVersionsV1NetworkSetting struct { + // PolicySchema: The fully qualified name of the network setting. + PolicySchema string `json:"policySchema,omitempty"` + + // Value: The value of the network setting. + Value googleapi.RawMessage `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PolicySchema") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PolicySchema") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromePolicyVersionsV1NetworkSetting) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1NetworkSetting + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleChromePolicyVersionsV1PolicyModificationFieldError: Error +// information for a modification request of a specific field on a +// specific policy. +type GoogleChromePolicyVersionsV1PolicyModificationFieldError struct { + // Error: Output only. The error message related to the field. + Error string `json:"error,omitempty"` + + // Field: Output only. The name of the field with the error. + Field string `json:"field,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Error") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Error") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromePolicyVersionsV1PolicyModificationFieldError) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicyModificationFieldError raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1PolicySchema: Resource representing a policy -// schema. Next ID: 14 -type GoogleChromePolicyV1PolicySchema struct { +// GoogleChromePolicyVersionsV1PolicySchema: Resource representing a +// policy schema. +type GoogleChromePolicyVersionsV1PolicySchema struct { // AccessRestrictions: Output only. Specific access restrictions related // to this policy. AccessRestrictions []string `json:"accessRestrictions,omitempty"` @@ -724,10 +965,9 @@ type GoogleChromePolicyV1PolicySchema struct { // be used to identify the target of the policy value. When specifying a // `policyTargetKey`, each of the additional keys specified here will // have to be included in the `additionalTargetKeys` map. - AdditionalTargetKeyNames []*GoogleChromePolicyV1AdditionalTargetKeyName `json:"additionalTargetKeyNames,omitempty"` + AdditionalTargetKeyNames []*GoogleChromePolicyVersionsV1AdditionalTargetKeyName `json:"additionalTargetKeyNames,omitempty"` - // CategoryTitle: Output only. Title of the category in which a setting - // belongs. + // CategoryTitle: Title of the category in which a setting belongs. CategoryTitle string `json:"categoryTitle,omitempty"` // Definition: Schema definition using proto descriptor. @@ -735,7 +975,7 @@ type GoogleChromePolicyV1PolicySchema struct { // FieldDescriptions: Output only. Detailed description of each field // that is part of the schema. - FieldDescriptions []*GoogleChromePolicyV1PolicySchemaFieldDescription `json:"fieldDescriptions,omitempty"` + FieldDescriptions []*GoogleChromePolicyVersionsV1PolicySchemaFieldDescription `json:"fieldDescriptions,omitempty"` // Name: Format: // name=customers/{customer}/policySchemas/{schema_namespace} @@ -743,7 +983,7 @@ type GoogleChromePolicyV1PolicySchema struct { // Notices: Output only. Special notice messages related to setting // certain values in certain fields in the schema. - Notices []*GoogleChromePolicyV1PolicySchemaNoticeDescription `json:"notices,omitempty"` + Notices []*GoogleChromePolicyVersionsV1PolicySchemaNoticeDescription `json:"notices,omitempty"` // PolicyApiLifecycle: Output only. Current lifecycle information. PolicyApiLifecycle *ChromeCrosDpanelAutosettingsProtoPolicyApiLifecycle `json:"policyApiLifecycle,omitempty"` @@ -797,15 +1037,15 @@ type GoogleChromePolicyV1PolicySchema struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1PolicySchema) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1PolicySchema +func (s *GoogleChromePolicyVersionsV1PolicySchema) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicySchema raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1PolicySchemaFieldDependencies: The field and the -// value it must have for another field to be allowed to be set. -type GoogleChromePolicyV1PolicySchemaFieldDependencies struct { +// GoogleChromePolicyVersionsV1PolicySchemaFieldDependencies: The field +// and the value it must have for another field to be allowed to be set. +type GoogleChromePolicyVersionsV1PolicySchemaFieldDependencies struct { // SourceField: The source field which this field depends on. SourceField string `json:"sourceField,omitempty"` @@ -830,15 +1070,19 @@ type GoogleChromePolicyV1PolicySchemaFieldDependencies struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1PolicySchemaFieldDependencies) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1PolicySchemaFieldDependencies +func (s *GoogleChromePolicyVersionsV1PolicySchemaFieldDependencies) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicySchemaFieldDependencies raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1PolicySchemaFieldDescription: Provides detailed -// information for a particular field that is part of a PolicySchema. -type GoogleChromePolicyV1PolicySchemaFieldDescription struct { +// GoogleChromePolicyVersionsV1PolicySchemaFieldDescription: Provides +// detailed information for a particular field that is part of a +// PolicySchema. +type GoogleChromePolicyVersionsV1PolicySchemaFieldDescription struct { + // DefaultValue: Output only. Client default if the policy is unset. + DefaultValue interface{} `json:"defaultValue,omitempty"` + // Description: Deprecated. Use name and field_description instead. The // description for the field. Description string `json:"description,omitempty"` @@ -850,7 +1094,7 @@ type GoogleChromePolicyV1PolicySchemaFieldDescription struct { // FieldDependencies: Output only. Provides a list of fields and values. // At least one of the fields must have the corresponding value in order // for this field to be allowed to be set. - FieldDependencies []*GoogleChromePolicyV1PolicySchemaFieldDependencies `json:"fieldDependencies,omitempty"` + FieldDependencies []*GoogleChromePolicyVersionsV1PolicySchemaFieldDependencies `json:"fieldDependencies,omitempty"` // FieldDescription: Output only. The description of the field. FieldDescription string `json:"fieldDescription,omitempty"` @@ -861,7 +1105,7 @@ type GoogleChromePolicyV1PolicySchemaFieldDescription struct { // KnownValueDescriptions: Output only. If the field has a set of known // values, this field will provide a description for these values. - KnownValueDescriptions []*GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription `json:"knownValueDescriptions,omitempty"` + KnownValueDescriptions []*GoogleChromePolicyVersionsV1PolicySchemaFieldKnownValueDescription `json:"knownValueDescriptions,omitempty"` // Name: Output only. The name of the field. Name string `json:"name,omitempty"` @@ -869,13 +1113,13 @@ type GoogleChromePolicyV1PolicySchemaFieldDescription struct { // NestedFieldDescriptions: Output only. Provides the description of the // fields nested in this field, if the field is a message type that // defines multiple fields. - NestedFieldDescriptions []*GoogleChromePolicyV1PolicySchemaFieldDescription `json:"nestedFieldDescriptions,omitempty"` + NestedFieldDescriptions []*GoogleChromePolicyVersionsV1PolicySchemaFieldDescription `json:"nestedFieldDescriptions,omitempty"` // RequiredItems: Output only. Provides a list of fields that are // required to be set if this field has a certain value. - RequiredItems []*GoogleChromePolicyV1PolicySchemaRequiredItems `json:"requiredItems,omitempty"` + RequiredItems []*GoogleChromePolicyVersionsV1PolicySchemaRequiredItems `json:"requiredItems,omitempty"` - // ForceSendFields is a list of field names (e.g. "Description") to + // ForceSendFields is a list of field names (e.g. "DefaultValue") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any // non-pointer, non-interface field appearing in ForceSendFields will be @@ -883,7 +1127,7 @@ type GoogleChromePolicyV1PolicySchemaFieldDescription struct { // This may be used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "Description") to include + // NullFields is a list of field names (e.g. "DefaultValue") to include // in API requests with the JSON null value. By default, fields with // empty values are omitted from API requests. However, any field with // an empty value appearing in NullFields will be sent to the server as @@ -892,16 +1136,16 @@ type GoogleChromePolicyV1PolicySchemaFieldDescription struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1PolicySchemaFieldDescription) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1PolicySchemaFieldDescription +func (s *GoogleChromePolicyVersionsV1PolicySchemaFieldDescription) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicySchemaFieldDescription raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription: Provides -// detailed information about a known value that is allowed for a -// particular field in a PolicySchema. -type GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription struct { +// GoogleChromePolicyVersionsV1PolicySchemaFieldKnownValueDescription: +// Provides detailed information about a known value that is allowed for +// a particular field in a PolicySchema. +type GoogleChromePolicyVersionsV1PolicySchemaFieldKnownValueDescription struct { // Description: Output only. Additional description for this value. Description string `json:"description,omitempty"` @@ -926,16 +1170,16 @@ type GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1PolicySchemaFieldKnownValueDescription +func (s *GoogleChromePolicyVersionsV1PolicySchemaFieldKnownValueDescription) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicySchemaFieldKnownValueDescription raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1PolicySchemaNoticeDescription: Provides special -// notice messages related to a particular value in a field that is part -// of a PolicySchema. -type GoogleChromePolicyV1PolicySchemaNoticeDescription struct { +// GoogleChromePolicyVersionsV1PolicySchemaNoticeDescription: Provides +// special notice messages related to a particular value in a field that +// is part of a PolicySchema. +type GoogleChromePolicyVersionsV1PolicySchemaNoticeDescription struct { // AcknowledgementRequired: Output only. Whether the user needs to // acknowledge the notice message before the value can be set. AcknowledgementRequired bool `json:"acknowledgementRequired,omitempty"` @@ -971,15 +1215,15 @@ type GoogleChromePolicyV1PolicySchemaNoticeDescription struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1PolicySchemaNoticeDescription) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1PolicySchemaNoticeDescription +func (s *GoogleChromePolicyVersionsV1PolicySchemaNoticeDescription) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicySchemaNoticeDescription raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1PolicySchemaRequiredItems: The fields that will -// become required based on the value of this field. -type GoogleChromePolicyV1PolicySchemaRequiredItems struct { +// GoogleChromePolicyVersionsV1PolicySchemaRequiredItems: The fields +// that will become required based on the value of this field. +type GoogleChromePolicyVersionsV1PolicySchemaRequiredItems struct { // FieldConditions: The value(s) of the field that provoke required // field enforcement. An empty field_conditions implies that any value // assigned to this field will provoke required field enforcement. @@ -1007,15 +1251,15 @@ type GoogleChromePolicyV1PolicySchemaRequiredItems struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1PolicySchemaRequiredItems) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1PolicySchemaRequiredItems +func (s *GoogleChromePolicyVersionsV1PolicySchemaRequiredItems) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicySchemaRequiredItems raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1PolicyTargetKey: The key used to identify the -// target on which the policy will be applied. -type GoogleChromePolicyV1PolicyTargetKey struct { +// GoogleChromePolicyVersionsV1PolicyTargetKey: The key used to identify +// the target on which the policy will be applied. +type GoogleChromePolicyVersionsV1PolicyTargetKey struct { // AdditionalTargetKeys: Map containing the additional target key name // and value pairs used to further identify the target of the policy. AdditionalTargetKeys map[string]string `json:"additionalTargetKeys,omitempty"` @@ -1044,15 +1288,15 @@ type GoogleChromePolicyV1PolicyTargetKey struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1PolicyTargetKey) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1PolicyTargetKey +func (s *GoogleChromePolicyVersionsV1PolicyTargetKey) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicyTargetKey raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1PolicyValue: A particular value for a policy -// managed by the service. -type GoogleChromePolicyV1PolicyValue struct { +// GoogleChromePolicyVersionsV1PolicyValue: A particular value for a +// policy managed by the service. +type GoogleChromePolicyVersionsV1PolicyValue struct { // PolicySchema: The fully qualified name of the policy schema // associated with this policy. PolicySchema string `json:"policySchema,omitempty"` @@ -1078,15 +1322,99 @@ type GoogleChromePolicyV1PolicyValue struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1PolicyValue) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1PolicyValue +func (s *GoogleChromePolicyVersionsV1PolicyValue) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1PolicyValue + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleChromePolicyVersionsV1RemoveCertificateRequest: Request object +// for removing a certificate. +type GoogleChromePolicyVersionsV1RemoveCertificateRequest struct { + // NetworkId: Required. The GUID of the certificate to remove. + NetworkId string `json:"networkId,omitempty"` + + // TargetResource: Required. The target resource on which this + // certificate will be removed. The following resources are supported: * + // Organizational Unit ("orgunits/{orgunit_id}") + TargetResource string `json:"targetResource,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NetworkId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NetworkId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromePolicyVersionsV1RemoveCertificateRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1RemoveCertificateRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleChromePolicyVersionsV1RemoveCertificateResponse: Response +// object for removing a certificate. +type GoogleChromePolicyVersionsV1RemoveCertificateResponse struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// GoogleChromePolicyVersionsV1RemoveNetworkRequest: Request object for +// removing a network +type GoogleChromePolicyVersionsV1RemoveNetworkRequest struct { + // NetworkId: Required. The GUID of the network to remove. + NetworkId string `json:"networkId,omitempty"` + + // TargetResource: Required. The target resource on which this network + // will be removed. The following resources are supported: * + // Organizational Unit ("orgunits/{orgunit_id}") + TargetResource string `json:"targetResource,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NetworkId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NetworkId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleChromePolicyVersionsV1RemoveNetworkRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1RemoveNetworkRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1ResolveRequest: Request message for getting the -// resolved policy value for a specific target. -type GoogleChromePolicyV1ResolveRequest struct { +// GoogleChromePolicyVersionsV1RemoveNetworkResponse: Response object +// for removing a network. +type GoogleChromePolicyVersionsV1RemoveNetworkResponse struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// GoogleChromePolicyVersionsV1ResolveRequest: Request message for +// getting the resolved policy value for a specific target. +type GoogleChromePolicyVersionsV1ResolveRequest struct { // PageSize: The maximum number of policies to return, defaults to 100 // and has a maximum of 1000. PageSize int64 `json:"pageSize,omitempty"` @@ -1101,7 +1429,7 @@ type GoogleChromePolicyV1ResolveRequest struct { // only in the leaf portion of the schema name. Wildcards cannot be used // in namespace directly. Please read // https://developers.google.com/chrome/policy/guides/policy-schemas for - // details on schema namepsaces. For example: Valid: "chrome.users.*", + // details on schema namespaces. For example: Valid: "chrome.users.*", // "chrome.users.apps.*", "chrome.printers.*" Invalid: "*", "*.users", // "chrome.*", "chrome.*.apps.*" PolicySchemaFilter string `json:"policySchemaFilter,omitempty"` @@ -1109,7 +1437,7 @@ type GoogleChromePolicyV1ResolveRequest struct { // PolicyTargetKey: Required. The key of the target resource on which // the policies should be resolved. The target resource must point to an // Org Unit. - PolicyTargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"policyTargetKey,omitempty"` + PolicyTargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"policyTargetKey,omitempty"` // ForceSendFields is a list of field names (e.g. "PageSize") to // unconditionally include in API requests. By default, fields with @@ -1128,22 +1456,22 @@ type GoogleChromePolicyV1ResolveRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1ResolveRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1ResolveRequest +func (s *GoogleChromePolicyVersionsV1ResolveRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1ResolveRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1ResolveResponse: Response message for getting the -// resolved policy value for a specific target. -type GoogleChromePolicyV1ResolveResponse struct { +// GoogleChromePolicyVersionsV1ResolveResponse: Response message for +// getting the resolved policy value for a specific target. +type GoogleChromePolicyVersionsV1ResolveResponse struct { // NextPageToken: The page token used to get the next set of resolved // policies found by the request. NextPageToken string `json:"nextPageToken,omitempty"` // ResolvedPolicies: The list of resolved policies found by the resolve // request. - ResolvedPolicies []*GoogleChromePolicyV1ResolvedPolicy `json:"resolvedPolicies,omitempty"` + ResolvedPolicies []*GoogleChromePolicyVersionsV1ResolvedPolicy `json:"resolvedPolicies,omitempty"` // ServerResponse contains the HTTP response code and headers from the // server. @@ -1166,15 +1494,15 @@ type GoogleChromePolicyV1ResolveResponse struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1ResolveResponse) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1ResolveResponse +func (s *GoogleChromePolicyVersionsV1ResolveResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1ResolveResponse raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1ResolvedPolicy: The resolved value of a policy -// for a given target. -type GoogleChromePolicyV1ResolvedPolicy struct { +// GoogleChromePolicyVersionsV1ResolvedPolicy: The resolved value of a +// policy for a given target. +type GoogleChromePolicyVersionsV1ResolvedPolicy struct { // AddedSourceKey: Output only. The added source key establishes at // which level an entity was explicitly added for management. This is // useful for certain type of policies that are only applied if they are @@ -1183,21 +1511,21 @@ type GoogleChromePolicyV1ResolvedPolicy struct { // that it was explicitly added to. If this is not present it means that // the policy is managed without the need to explicitly add an entity, // for example: standard user or device policies. - AddedSourceKey *GoogleChromePolicyV1PolicyTargetKey `json:"addedSourceKey,omitempty"` + AddedSourceKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"addedSourceKey,omitempty"` // SourceKey: Output only. The source resource from which this policy // value is obtained. May be the same as `targetKey` if the policy is // directly modified on the target, otherwise it would be another // resource from which the policy gets its value (if applicable). If not // present, the source is the default value for the customer. - SourceKey *GoogleChromePolicyV1PolicyTargetKey `json:"sourceKey,omitempty"` + SourceKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"sourceKey,omitempty"` // TargetKey: Output only. The target resource for which the resolved // policy value applies. - TargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"targetKey,omitempty"` + TargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"targetKey,omitempty"` // Value: Output only. The resolved value of the policy. - Value *GoogleChromePolicyV1PolicyValue `json:"value,omitempty"` + Value *GoogleChromePolicyVersionsV1PolicyValue `json:"value,omitempty"` // ForceSendFields is a list of field names (e.g. "AddedSourceKey") to // unconditionally include in API requests. By default, fields with @@ -1217,15 +1545,15 @@ type GoogleChromePolicyV1ResolvedPolicy struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1ResolvedPolicy) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1ResolvedPolicy +func (s *GoogleChromePolicyVersionsV1ResolvedPolicy) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1ResolvedPolicy raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest: Request -// message for updating the group priority ordering of an app. -type GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest struct { +// GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest: +// Request message for updating the group priority ordering of an app. +type GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest struct { // GroupIds: Required. The group IDs, in desired priority ordering. GroupIds []string `json:"groupIds,omitempty"` @@ -1236,7 +1564,7 @@ type GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest struct { // PolicyTargetKey: Required. The key of the target for which we want to // update the group priority ordering. The target resource must point to // an app. - PolicyTargetKey *GoogleChromePolicyV1PolicyTargetKey `json:"policyTargetKey,omitempty"` + PolicyTargetKey *GoogleChromePolicyVersionsV1PolicyTargetKey `json:"policyTargetKey,omitempty"` // ForceSendFields is a list of field names (e.g. "GroupIds") to // unconditionally include in API requests. By default, fields with @@ -1255,14 +1583,14 @@ type GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest struct { NullFields []string `json:"-"` } -func (s *GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest) MarshalJSON() ([]byte, error) { - type NoMethod GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest +func (s *GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } // GoogleChromePolicyVersionsV1UploadPolicyFileRequest: Request message -// for uploading a file for a policy. Next ID: 5 +// for uploading a file for a policy. type GoogleChromePolicyVersionsV1UploadPolicyFileRequest struct { // PolicyField: Required. The fully qualified policy schema and field // name this file is uploaded for. This information will be used to @@ -1293,7 +1621,7 @@ func (s *GoogleChromePolicyVersionsV1UploadPolicyFileRequest) MarshalJSON() ([]b } // GoogleChromePolicyVersionsV1UploadPolicyFileResponse: Response -// message for downloading an uploaded file. Next ID: 2 +// message for downloading an uploaded file. type GoogleChromePolicyVersionsV1UploadPolicyFileResponse struct { // DownloadUri: The uri for end user to download the file. DownloadUri string `json:"downloadUri,omitempty"` @@ -1657,12 +1985,12 @@ func (s *Proto2OneofDescriptorProto) MarshalJSON() ([]byte, error) { // method id "chromepolicy.customers.policies.resolve": type CustomersPoliciesResolveCall struct { - s *Service - customer string - googlechromepolicyv1resolverequest *GoogleChromePolicyV1ResolveRequest - urlParams_ gensupport.URLParams - ctx_ context.Context - header_ http.Header + s *Service + customer string + googlechromepolicyversionsv1resolverequest *GoogleChromePolicyVersionsV1ResolveRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header } // Resolve: Gets the resolved policy values for a list of policies that @@ -1670,10 +1998,10 @@ type CustomersPoliciesResolveCall struct { // // - customer: ID of the G Suite account or literal "my_customer" for // the customer associated to the request. -func (r *CustomersPoliciesService) Resolve(customer string, googlechromepolicyv1resolverequest *GoogleChromePolicyV1ResolveRequest) *CustomersPoliciesResolveCall { +func (r *CustomersPoliciesService) Resolve(customer string, googlechromepolicyversionsv1resolverequest *GoogleChromePolicyVersionsV1ResolveRequest) *CustomersPoliciesResolveCall { c := &CustomersPoliciesResolveCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.customer = customer - c.googlechromepolicyv1resolverequest = googlechromepolicyv1resolverequest + c.googlechromepolicyversionsv1resolverequest = googlechromepolicyversionsv1resolverequest return c } @@ -1710,7 +2038,7 @@ func (c *CustomersPoliciesResolveCall) doRequest(alt string) (*http.Response, er } reqHeaders.Set("User-Agent", c.s.userAgent()) var body io.Reader = nil - body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyv1resolverequest) + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1resolverequest) if err != nil { return nil, err } @@ -1731,14 +2059,15 @@ func (c *CustomersPoliciesResolveCall) doRequest(alt string) (*http.Response, er } // Do executes the "chromepolicy.customers.policies.resolve" call. -// Exactly one of *GoogleChromePolicyV1ResolveResponse or error will be -// non-nil. Any non-2xx status code is an error. Response headers are in -// either *GoogleChromePolicyV1ResolveResponse.ServerResponse.Header or +// Exactly one of *GoogleChromePolicyVersionsV1ResolveResponse or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleChromePolicyVersionsV1ResolveResponse.ServerResponse.Header or // (if a response was returned at all) in // error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check // whether the returned error was because http.StatusNotModified was // returned. -func (c *CustomersPoliciesResolveCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyV1ResolveResponse, error) { +func (c *CustomersPoliciesResolveCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyVersionsV1ResolveResponse, error) { gensupport.SetOptions(c.urlParams_, opts...) res, err := c.doRequest("json") if res != nil && res.StatusCode == http.StatusNotModified { @@ -1757,7 +2086,7 @@ func (c *CustomersPoliciesResolveCall) Do(opts ...googleapi.CallOption) (*Google if err := googleapi.CheckResponse(res); err != nil { return nil, err } - ret := &GoogleChromePolicyV1ResolveResponse{ + ret := &GoogleChromePolicyVersionsV1ResolveResponse{ ServerResponse: googleapi.ServerResponse{ Header: res.Header, HTTPStatusCode: res.StatusCode, @@ -1787,10 +2116,10 @@ func (c *CustomersPoliciesResolveCall) Do(opts ...googleapi.CallOption) (*Google // }, // "path": "v1/{+customer}/policies:resolve", // "request": { - // "$ref": "GoogleChromePolicyV1ResolveRequest" + // "$ref": "GoogleChromePolicyVersionsV1ResolveRequest" // }, // "response": { - // "$ref": "GoogleChromePolicyV1ResolveResponse" + // "$ref": "GoogleChromePolicyVersionsV1ResolveResponse" // }, // "scopes": [ // "https://www.googleapis.com/auth/chrome.management.policy", @@ -1803,9 +2132,9 @@ func (c *CustomersPoliciesResolveCall) Do(opts ...googleapi.CallOption) (*Google // Pages invokes f for each page of results. // A non-nil error returned from f will halt the iteration. // The provided context supersedes any context provided to the Context method. -func (c *CustomersPoliciesResolveCall) Pages(ctx context.Context, f func(*GoogleChromePolicyV1ResolveResponse) error) error { +func (c *CustomersPoliciesResolveCall) Pages(ctx context.Context, f func(*GoogleChromePolicyVersionsV1ResolveResponse) error) error { c.ctx_ = ctx - defer func(pt string) { c.googlechromepolicyv1resolverequest.PageToken = pt }(c.googlechromepolicyv1resolverequest.PageToken) // reset paging to original point + defer func(pt string) { c.googlechromepolicyversionsv1resolverequest.PageToken = pt }(c.googlechromepolicyversionsv1resolverequest.PageToken) // reset paging to original point for { x, err := c.Do() if err != nil { @@ -1817,19 +2146,19 @@ func (c *CustomersPoliciesResolveCall) Pages(ctx context.Context, f func(*Google if x.NextPageToken == "" { return nil } - c.googlechromepolicyv1resolverequest.PageToken = x.NextPageToken + c.googlechromepolicyversionsv1resolverequest.PageToken = x.NextPageToken } } // method id "chromepolicy.customers.policies.groups.batchDelete": type CustomersPoliciesGroupsBatchDeleteCall struct { - s *Service - customer string - googlechromepolicyv1batchdeletegrouppoliciesrequest *GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest - urlParams_ gensupport.URLParams - ctx_ context.Context - header_ http.Header + s *Service + customer string + googlechromepolicyversionsv1batchdeletegrouppoliciesrequest *GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header } // BatchDelete: Delete multiple policy values that are applied to a @@ -1841,10 +2170,10 @@ type CustomersPoliciesGroupsBatchDeleteCall struct { // // - customer: ID of the Google Workspace account or literal // "my_customer" for the customer associated to the request. -func (r *CustomersPoliciesGroupsService) BatchDelete(customer string, googlechromepolicyv1batchdeletegrouppoliciesrequest *GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest) *CustomersPoliciesGroupsBatchDeleteCall { +func (r *CustomersPoliciesGroupsService) BatchDelete(customer string, googlechromepolicyversionsv1batchdeletegrouppoliciesrequest *GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest) *CustomersPoliciesGroupsBatchDeleteCall { c := &CustomersPoliciesGroupsBatchDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.customer = customer - c.googlechromepolicyv1batchdeletegrouppoliciesrequest = googlechromepolicyv1batchdeletegrouppoliciesrequest + c.googlechromepolicyversionsv1batchdeletegrouppoliciesrequest = googlechromepolicyversionsv1batchdeletegrouppoliciesrequest return c } @@ -1881,7 +2210,7 @@ func (c *CustomersPoliciesGroupsBatchDeleteCall) doRequest(alt string) (*http.Re } reqHeaders.Set("User-Agent", c.s.userAgent()) var body io.Reader = nil - body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyv1batchdeletegrouppoliciesrequest) + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1batchdeletegrouppoliciesrequest) if err != nil { return nil, err } @@ -1957,7 +2286,7 @@ func (c *CustomersPoliciesGroupsBatchDeleteCall) Do(opts ...googleapi.CallOption // }, // "path": "v1/{+customer}/policies/groups:batchDelete", // "request": { - // "$ref": "GoogleChromePolicyV1BatchDeleteGroupPoliciesRequest" + // "$ref": "GoogleChromePolicyVersionsV1BatchDeleteGroupPoliciesRequest" // }, // "response": { // "$ref": "GoogleProtobufEmpty" @@ -1972,12 +2301,12 @@ func (c *CustomersPoliciesGroupsBatchDeleteCall) Do(opts ...googleapi.CallOption // method id "chromepolicy.customers.policies.groups.batchModify": type CustomersPoliciesGroupsBatchModifyCall struct { - s *Service - customer string - googlechromepolicyv1batchmodifygrouppoliciesrequest *GoogleChromePolicyV1BatchModifyGroupPoliciesRequest - urlParams_ gensupport.URLParams - ctx_ context.Context - header_ http.Header + s *Service + customer string + googlechromepolicyversionsv1batchmodifygrouppoliciesrequest *GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header } // BatchModify: Modify multiple policy values that are applied to a @@ -1989,10 +2318,10 @@ type CustomersPoliciesGroupsBatchModifyCall struct { // // - customer: ID of the Google Workspace account or literal // "my_customer" for the customer associated to the request. -func (r *CustomersPoliciesGroupsService) BatchModify(customer string, googlechromepolicyv1batchmodifygrouppoliciesrequest *GoogleChromePolicyV1BatchModifyGroupPoliciesRequest) *CustomersPoliciesGroupsBatchModifyCall { +func (r *CustomersPoliciesGroupsService) BatchModify(customer string, googlechromepolicyversionsv1batchmodifygrouppoliciesrequest *GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest) *CustomersPoliciesGroupsBatchModifyCall { c := &CustomersPoliciesGroupsBatchModifyCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.customer = customer - c.googlechromepolicyv1batchmodifygrouppoliciesrequest = googlechromepolicyv1batchmodifygrouppoliciesrequest + c.googlechromepolicyversionsv1batchmodifygrouppoliciesrequest = googlechromepolicyversionsv1batchmodifygrouppoliciesrequest return c } @@ -2029,7 +2358,7 @@ func (c *CustomersPoliciesGroupsBatchModifyCall) doRequest(alt string) (*http.Re } reqHeaders.Set("User-Agent", c.s.userAgent()) var body io.Reader = nil - body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyv1batchmodifygrouppoliciesrequest) + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1batchmodifygrouppoliciesrequest) if err != nil { return nil, err } @@ -2105,7 +2434,7 @@ func (c *CustomersPoliciesGroupsBatchModifyCall) Do(opts ...googleapi.CallOption // }, // "path": "v1/{+customer}/policies/groups:batchModify", // "request": { - // "$ref": "GoogleChromePolicyV1BatchModifyGroupPoliciesRequest" + // "$ref": "GoogleChromePolicyVersionsV1BatchModifyGroupPoliciesRequest" // }, // "response": { // "$ref": "GoogleProtobufEmpty" @@ -2120,12 +2449,12 @@ func (c *CustomersPoliciesGroupsBatchModifyCall) Do(opts ...googleapi.CallOption // method id "chromepolicy.customers.policies.groups.listGroupPriorityOrdering": type CustomersPoliciesGroupsListGroupPriorityOrderingCall struct { - s *Service - customer string - googlechromepolicyv1listgrouppriorityorderingrequest *GoogleChromePolicyV1ListGroupPriorityOrderingRequest - urlParams_ gensupport.URLParams - ctx_ context.Context - header_ http.Header + s *Service + customer string + googlechromepolicyversionsv1listgrouppriorityorderingrequest *GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header } // ListGroupPriorityOrdering: Retrieve a group priority ordering for an @@ -2135,10 +2464,10 @@ type CustomersPoliciesGroupsListGroupPriorityOrderingCall struct { // // - customer: ID of the Google Workspace account or literal // "my_customer" for the customer associated to the request. -func (r *CustomersPoliciesGroupsService) ListGroupPriorityOrdering(customer string, googlechromepolicyv1listgrouppriorityorderingrequest *GoogleChromePolicyV1ListGroupPriorityOrderingRequest) *CustomersPoliciesGroupsListGroupPriorityOrderingCall { +func (r *CustomersPoliciesGroupsService) ListGroupPriorityOrdering(customer string, googlechromepolicyversionsv1listgrouppriorityorderingrequest *GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest) *CustomersPoliciesGroupsListGroupPriorityOrderingCall { c := &CustomersPoliciesGroupsListGroupPriorityOrderingCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.customer = customer - c.googlechromepolicyv1listgrouppriorityorderingrequest = googlechromepolicyv1listgrouppriorityorderingrequest + c.googlechromepolicyversionsv1listgrouppriorityorderingrequest = googlechromepolicyversionsv1listgrouppriorityorderingrequest return c } @@ -2175,7 +2504,7 @@ func (c *CustomersPoliciesGroupsListGroupPriorityOrderingCall) doRequest(alt str } reqHeaders.Set("User-Agent", c.s.userAgent()) var body io.Reader = nil - body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyv1listgrouppriorityorderingrequest) + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1listgrouppriorityorderingrequest) if err != nil { return nil, err } @@ -2196,15 +2525,16 @@ func (c *CustomersPoliciesGroupsListGroupPriorityOrderingCall) doRequest(alt str } // Do executes the "chromepolicy.customers.policies.groups.listGroupPriorityOrdering" call. -// Exactly one of *GoogleChromePolicyV1ListGroupPriorityOrderingResponse -// or error will be non-nil. Any non-2xx status code is an error. -// Response headers are in either -// *GoogleChromePolicyV1ListGroupPriorityOrderingResponse.ServerResponse. -// Header or (if a response was returned at all) in +// Exactly one of +// *GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse or +// error will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse.ServerR +// esponse.Header or (if a response was returned at all) in // error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check // whether the returned error was because http.StatusNotModified was // returned. -func (c *CustomersPoliciesGroupsListGroupPriorityOrderingCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyV1ListGroupPriorityOrderingResponse, error) { +func (c *CustomersPoliciesGroupsListGroupPriorityOrderingCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse, error) { gensupport.SetOptions(c.urlParams_, opts...) res, err := c.doRequest("json") if res != nil && res.StatusCode == http.StatusNotModified { @@ -2223,7 +2553,7 @@ func (c *CustomersPoliciesGroupsListGroupPriorityOrderingCall) Do(opts ...google if err := googleapi.CheckResponse(res); err != nil { return nil, err } - ret := &GoogleChromePolicyV1ListGroupPriorityOrderingResponse{ + ret := &GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse{ ServerResponse: googleapi.ServerResponse{ Header: res.Header, HTTPStatusCode: res.StatusCode, @@ -2253,10 +2583,10 @@ func (c *CustomersPoliciesGroupsListGroupPriorityOrderingCall) Do(opts ...google // }, // "path": "v1/{+customer}/policies/groups:listGroupPriorityOrdering", // "request": { - // "$ref": "GoogleChromePolicyV1ListGroupPriorityOrderingRequest" + // "$ref": "GoogleChromePolicyVersionsV1ListGroupPriorityOrderingRequest" // }, // "response": { - // "$ref": "GoogleChromePolicyV1ListGroupPriorityOrderingResponse" + // "$ref": "GoogleChromePolicyVersionsV1ListGroupPriorityOrderingResponse" // }, // "scopes": [ // "https://www.googleapis.com/auth/chrome.management.policy", @@ -2269,12 +2599,12 @@ func (c *CustomersPoliciesGroupsListGroupPriorityOrderingCall) Do(opts ...google // method id "chromepolicy.customers.policies.groups.updateGroupPriorityOrdering": type CustomersPoliciesGroupsUpdateGroupPriorityOrderingCall struct { - s *Service - customer string - googlechromepolicyv1updategrouppriorityorderingrequest *GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest - urlParams_ gensupport.URLParams - ctx_ context.Context - header_ http.Header + s *Service + customer string + googlechromepolicyversionsv1updategrouppriorityorderingrequest *GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header } // UpdateGroupPriorityOrdering: Update a group priority ordering for an @@ -2284,10 +2614,10 @@ type CustomersPoliciesGroupsUpdateGroupPriorityOrderingCall struct { // // - customer: ID of the Google Workspace account or literal // "my_customer" for the customer associated to the request. -func (r *CustomersPoliciesGroupsService) UpdateGroupPriorityOrdering(customer string, googlechromepolicyv1updategrouppriorityorderingrequest *GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest) *CustomersPoliciesGroupsUpdateGroupPriorityOrderingCall { +func (r *CustomersPoliciesGroupsService) UpdateGroupPriorityOrdering(customer string, googlechromepolicyversionsv1updategrouppriorityorderingrequest *GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest) *CustomersPoliciesGroupsUpdateGroupPriorityOrderingCall { c := &CustomersPoliciesGroupsUpdateGroupPriorityOrderingCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.customer = customer - c.googlechromepolicyv1updategrouppriorityorderingrequest = googlechromepolicyv1updategrouppriorityorderingrequest + c.googlechromepolicyversionsv1updategrouppriorityorderingrequest = googlechromepolicyversionsv1updategrouppriorityorderingrequest return c } @@ -2324,7 +2654,7 @@ func (c *CustomersPoliciesGroupsUpdateGroupPriorityOrderingCall) doRequest(alt s } reqHeaders.Set("User-Agent", c.s.userAgent()) var body io.Reader = nil - body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyv1updategrouppriorityorderingrequest) + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1updategrouppriorityorderingrequest) if err != nil { return nil, err } @@ -2400,7 +2730,7 @@ func (c *CustomersPoliciesGroupsUpdateGroupPriorityOrderingCall) Do(opts ...goog // }, // "path": "v1/{+customer}/policies/groups:updateGroupPriorityOrdering", // "request": { - // "$ref": "GoogleChromePolicyV1UpdateGroupPriorityOrderingRequest" + // "$ref": "GoogleChromePolicyVersionsV1UpdateGroupPriorityOrderingRequest" // }, // "response": { // "$ref": "GoogleProtobufEmpty" @@ -2412,31 +2742,608 @@ func (c *CustomersPoliciesGroupsUpdateGroupPriorityOrderingCall) Do(opts ...goog } -// method id "chromepolicy.customers.policies.orgunits.batchInherit": +// method id "chromepolicy.customers.policies.networks.defineCertificate": -type CustomersPoliciesOrgunitsBatchInheritCall struct { - s *Service - customer string - googlechromepolicyv1batchinheritorgunitpoliciesrequest *GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest - urlParams_ gensupport.URLParams - ctx_ context.Context - header_ http.Header +type CustomersPoliciesNetworksDefineCertificateCall struct { + s *Service + customer string + googlechromepolicyversionsv1definecertificaterequest *GoogleChromePolicyVersionsV1DefineCertificateRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header } -// BatchInherit: Modify multiple policy values that are applied to a -// specific org unit so that they now inherit the value from a parent -// (if applicable). All targets must have the same target format. That -// is to say that they must point to the same target resource and must -// have the same keys specified in `additionalTargetKeyNames`, though +// DefineCertificate: Creates a certificate at a specified OU for a +// customer. +// +// - customer: The customer for which the certificate will apply. +func (r *CustomersPoliciesNetworksService) DefineCertificate(customer string, googlechromepolicyversionsv1definecertificaterequest *GoogleChromePolicyVersionsV1DefineCertificateRequest) *CustomersPoliciesNetworksDefineCertificateCall { + c := &CustomersPoliciesNetworksDefineCertificateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.customer = customer + c.googlechromepolicyversionsv1definecertificaterequest = googlechromepolicyversionsv1definecertificaterequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *CustomersPoliciesNetworksDefineCertificateCall) Fields(s ...googleapi.Field) *CustomersPoliciesNetworksDefineCertificateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *CustomersPoliciesNetworksDefineCertificateCall) Context(ctx context.Context) *CustomersPoliciesNetworksDefineCertificateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *CustomersPoliciesNetworksDefineCertificateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *CustomersPoliciesNetworksDefineCertificateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1definecertificaterequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+customer}/policies/networks:defineCertificate") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "customer": c.customer, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "chromepolicy.customers.policies.networks.defineCertificate" call. +// Exactly one of *GoogleChromePolicyVersionsV1DefineCertificateResponse +// or error will be non-nil. Any non-2xx status code is an error. +// Response headers are in either +// *GoogleChromePolicyVersionsV1DefineCertificateResponse.ServerResponse. +// Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *CustomersPoliciesNetworksDefineCertificateCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyVersionsV1DefineCertificateResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleChromePolicyVersionsV1DefineCertificateResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates a certificate at a specified OU for a customer.", + // "flatPath": "v1/customers/{customersId}/policies/networks:defineCertificate", + // "httpMethod": "POST", + // "id": "chromepolicy.customers.policies.networks.defineCertificate", + // "parameterOrder": [ + // "customer" + // ], + // "parameters": { + // "customer": { + // "description": "Required. The customer for which the certificate will apply.", + // "location": "path", + // "pattern": "^customers/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+customer}/policies/networks:defineCertificate", + // "request": { + // "$ref": "GoogleChromePolicyVersionsV1DefineCertificateRequest" + // }, + // "response": { + // "$ref": "GoogleChromePolicyVersionsV1DefineCertificateResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/chrome.management.policy" + // ] + // } + +} + +// method id "chromepolicy.customers.policies.networks.defineNetwork": + +type CustomersPoliciesNetworksDefineNetworkCall struct { + s *Service + customer string + googlechromepolicyversionsv1definenetworkrequest *GoogleChromePolicyVersionsV1DefineNetworkRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// DefineNetwork: Define a new network. +// +// - customer: The customer who will own this new network. +func (r *CustomersPoliciesNetworksService) DefineNetwork(customer string, googlechromepolicyversionsv1definenetworkrequest *GoogleChromePolicyVersionsV1DefineNetworkRequest) *CustomersPoliciesNetworksDefineNetworkCall { + c := &CustomersPoliciesNetworksDefineNetworkCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.customer = customer + c.googlechromepolicyversionsv1definenetworkrequest = googlechromepolicyversionsv1definenetworkrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *CustomersPoliciesNetworksDefineNetworkCall) Fields(s ...googleapi.Field) *CustomersPoliciesNetworksDefineNetworkCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *CustomersPoliciesNetworksDefineNetworkCall) Context(ctx context.Context) *CustomersPoliciesNetworksDefineNetworkCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *CustomersPoliciesNetworksDefineNetworkCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *CustomersPoliciesNetworksDefineNetworkCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1definenetworkrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+customer}/policies/networks:defineNetwork") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "customer": c.customer, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "chromepolicy.customers.policies.networks.defineNetwork" call. +// Exactly one of *GoogleChromePolicyVersionsV1DefineNetworkResponse or +// error will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleChromePolicyVersionsV1DefineNetworkResponse.ServerResponse.Head +// er or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *CustomersPoliciesNetworksDefineNetworkCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyVersionsV1DefineNetworkResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleChromePolicyVersionsV1DefineNetworkResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Define a new network.", + // "flatPath": "v1/customers/{customersId}/policies/networks:defineNetwork", + // "httpMethod": "POST", + // "id": "chromepolicy.customers.policies.networks.defineNetwork", + // "parameterOrder": [ + // "customer" + // ], + // "parameters": { + // "customer": { + // "description": "Required. The customer who will own this new network.", + // "location": "path", + // "pattern": "^customers/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+customer}/policies/networks:defineNetwork", + // "request": { + // "$ref": "GoogleChromePolicyVersionsV1DefineNetworkRequest" + // }, + // "response": { + // "$ref": "GoogleChromePolicyVersionsV1DefineNetworkResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/chrome.management.policy" + // ] + // } + +} + +// method id "chromepolicy.customers.policies.networks.removeCertificate": + +type CustomersPoliciesNetworksRemoveCertificateCall struct { + s *Service + customer string + googlechromepolicyversionsv1removecertificaterequest *GoogleChromePolicyVersionsV1RemoveCertificateRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// RemoveCertificate: Remove an existing certificate by guid. +// +// - customer: The customer whose certificate will be removed. +func (r *CustomersPoliciesNetworksService) RemoveCertificate(customer string, googlechromepolicyversionsv1removecertificaterequest *GoogleChromePolicyVersionsV1RemoveCertificateRequest) *CustomersPoliciesNetworksRemoveCertificateCall { + c := &CustomersPoliciesNetworksRemoveCertificateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.customer = customer + c.googlechromepolicyversionsv1removecertificaterequest = googlechromepolicyversionsv1removecertificaterequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *CustomersPoliciesNetworksRemoveCertificateCall) Fields(s ...googleapi.Field) *CustomersPoliciesNetworksRemoveCertificateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *CustomersPoliciesNetworksRemoveCertificateCall) Context(ctx context.Context) *CustomersPoliciesNetworksRemoveCertificateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *CustomersPoliciesNetworksRemoveCertificateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *CustomersPoliciesNetworksRemoveCertificateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1removecertificaterequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+customer}/policies/networks:removeCertificate") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "customer": c.customer, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "chromepolicy.customers.policies.networks.removeCertificate" call. +// Exactly one of *GoogleChromePolicyVersionsV1RemoveCertificateResponse +// or error will be non-nil. Any non-2xx status code is an error. +// Response headers are in either +// *GoogleChromePolicyVersionsV1RemoveCertificateResponse.ServerResponse. +// Header or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *CustomersPoliciesNetworksRemoveCertificateCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyVersionsV1RemoveCertificateResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleChromePolicyVersionsV1RemoveCertificateResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Remove an existing certificate by guid.", + // "flatPath": "v1/customers/{customersId}/policies/networks:removeCertificate", + // "httpMethod": "POST", + // "id": "chromepolicy.customers.policies.networks.removeCertificate", + // "parameterOrder": [ + // "customer" + // ], + // "parameters": { + // "customer": { + // "description": "Required. The customer whose certificate will be removed.", + // "location": "path", + // "pattern": "^customers/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+customer}/policies/networks:removeCertificate", + // "request": { + // "$ref": "GoogleChromePolicyVersionsV1RemoveCertificateRequest" + // }, + // "response": { + // "$ref": "GoogleChromePolicyVersionsV1RemoveCertificateResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/chrome.management.policy" + // ] + // } + +} + +// method id "chromepolicy.customers.policies.networks.removeNetwork": + +type CustomersPoliciesNetworksRemoveNetworkCall struct { + s *Service + customer string + googlechromepolicyversionsv1removenetworkrequest *GoogleChromePolicyVersionsV1RemoveNetworkRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// RemoveNetwork: Remove an existing network by guid. +// +// - customer: The customer whose network will be removed. +func (r *CustomersPoliciesNetworksService) RemoveNetwork(customer string, googlechromepolicyversionsv1removenetworkrequest *GoogleChromePolicyVersionsV1RemoveNetworkRequest) *CustomersPoliciesNetworksRemoveNetworkCall { + c := &CustomersPoliciesNetworksRemoveNetworkCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.customer = customer + c.googlechromepolicyversionsv1removenetworkrequest = googlechromepolicyversionsv1removenetworkrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *CustomersPoliciesNetworksRemoveNetworkCall) Fields(s ...googleapi.Field) *CustomersPoliciesNetworksRemoveNetworkCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *CustomersPoliciesNetworksRemoveNetworkCall) Context(ctx context.Context) *CustomersPoliciesNetworksRemoveNetworkCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *CustomersPoliciesNetworksRemoveNetworkCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *CustomersPoliciesNetworksRemoveNetworkCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1removenetworkrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+customer}/policies/networks:removeNetwork") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "customer": c.customer, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "chromepolicy.customers.policies.networks.removeNetwork" call. +// Exactly one of *GoogleChromePolicyVersionsV1RemoveNetworkResponse or +// error will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleChromePolicyVersionsV1RemoveNetworkResponse.ServerResponse.Head +// er or (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *CustomersPoliciesNetworksRemoveNetworkCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyVersionsV1RemoveNetworkResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &GoogleChromePolicyVersionsV1RemoveNetworkResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Remove an existing network by guid.", + // "flatPath": "v1/customers/{customersId}/policies/networks:removeNetwork", + // "httpMethod": "POST", + // "id": "chromepolicy.customers.policies.networks.removeNetwork", + // "parameterOrder": [ + // "customer" + // ], + // "parameters": { + // "customer": { + // "description": "Required. The customer whose network will be removed.", + // "location": "path", + // "pattern": "^customers/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1/{+customer}/policies/networks:removeNetwork", + // "request": { + // "$ref": "GoogleChromePolicyVersionsV1RemoveNetworkRequest" + // }, + // "response": { + // "$ref": "GoogleChromePolicyVersionsV1RemoveNetworkResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/chrome.management.policy" + // ] + // } + +} + +// method id "chromepolicy.customers.policies.orgunits.batchInherit": + +type CustomersPoliciesOrgunitsBatchInheritCall struct { + s *Service + customer string + googlechromepolicyversionsv1batchinheritorgunitpoliciesrequest *GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// BatchInherit: Modify multiple policy values that are applied to a +// specific org unit so that they now inherit the value from a parent +// (if applicable). All targets must have the same target format. That +// is to say that they must point to the same target resource and must +// have the same keys specified in `additionalTargetKeyNames`, though // the values for those keys may be different. On failure the request // will return the error details as part of the google.rpc.Status. // // - customer: ID of the G Suite account or literal "my_customer" for // the customer associated to the request. -func (r *CustomersPoliciesOrgunitsService) BatchInherit(customer string, googlechromepolicyv1batchinheritorgunitpoliciesrequest *GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest) *CustomersPoliciesOrgunitsBatchInheritCall { +func (r *CustomersPoliciesOrgunitsService) BatchInherit(customer string, googlechromepolicyversionsv1batchinheritorgunitpoliciesrequest *GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest) *CustomersPoliciesOrgunitsBatchInheritCall { c := &CustomersPoliciesOrgunitsBatchInheritCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.customer = customer - c.googlechromepolicyv1batchinheritorgunitpoliciesrequest = googlechromepolicyv1batchinheritorgunitpoliciesrequest + c.googlechromepolicyversionsv1batchinheritorgunitpoliciesrequest = googlechromepolicyversionsv1batchinheritorgunitpoliciesrequest return c } @@ -2473,7 +3380,7 @@ func (c *CustomersPoliciesOrgunitsBatchInheritCall) doRequest(alt string) (*http } reqHeaders.Set("User-Agent", c.s.userAgent()) var body io.Reader = nil - body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyv1batchinheritorgunitpoliciesrequest) + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1batchinheritorgunitpoliciesrequest) if err != nil { return nil, err } @@ -2549,7 +3456,7 @@ func (c *CustomersPoliciesOrgunitsBatchInheritCall) Do(opts ...googleapi.CallOpt // }, // "path": "v1/{+customer}/policies/orgunits:batchInherit", // "request": { - // "$ref": "GoogleChromePolicyV1BatchInheritOrgUnitPoliciesRequest" + // "$ref": "GoogleChromePolicyVersionsV1BatchInheritOrgUnitPoliciesRequest" // }, // "response": { // "$ref": "GoogleProtobufEmpty" @@ -2564,12 +3471,12 @@ func (c *CustomersPoliciesOrgunitsBatchInheritCall) Do(opts ...googleapi.CallOpt // method id "chromepolicy.customers.policies.orgunits.batchModify": type CustomersPoliciesOrgunitsBatchModifyCall struct { - s *Service - customer string - googlechromepolicyv1batchmodifyorgunitpoliciesrequest *GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest - urlParams_ gensupport.URLParams - ctx_ context.Context - header_ http.Header + s *Service + customer string + googlechromepolicyversionsv1batchmodifyorgunitpoliciesrequest *GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header } // BatchModify: Modify multiple policy values that are applied to a @@ -2581,10 +3488,10 @@ type CustomersPoliciesOrgunitsBatchModifyCall struct { // // - customer: ID of the G Suite account or literal "my_customer" for // the customer associated to the request. -func (r *CustomersPoliciesOrgunitsService) BatchModify(customer string, googlechromepolicyv1batchmodifyorgunitpoliciesrequest *GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest) *CustomersPoliciesOrgunitsBatchModifyCall { +func (r *CustomersPoliciesOrgunitsService) BatchModify(customer string, googlechromepolicyversionsv1batchmodifyorgunitpoliciesrequest *GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest) *CustomersPoliciesOrgunitsBatchModifyCall { c := &CustomersPoliciesOrgunitsBatchModifyCall{s: r.s, urlParams_: make(gensupport.URLParams)} c.customer = customer - c.googlechromepolicyv1batchmodifyorgunitpoliciesrequest = googlechromepolicyv1batchmodifyorgunitpoliciesrequest + c.googlechromepolicyversionsv1batchmodifyorgunitpoliciesrequest = googlechromepolicyversionsv1batchmodifyorgunitpoliciesrequest return c } @@ -2621,7 +3528,7 @@ func (c *CustomersPoliciesOrgunitsBatchModifyCall) doRequest(alt string) (*http. } reqHeaders.Set("User-Agent", c.s.userAgent()) var body io.Reader = nil - body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyv1batchmodifyorgunitpoliciesrequest) + body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlechromepolicyversionsv1batchmodifyorgunitpoliciesrequest) if err != nil { return nil, err } @@ -2697,7 +3604,7 @@ func (c *CustomersPoliciesOrgunitsBatchModifyCall) Do(opts ...googleapi.CallOpti // }, // "path": "v1/{+customer}/policies/orgunits:batchModify", // "request": { - // "$ref": "GoogleChromePolicyV1BatchModifyOrgUnitPoliciesRequest" + // "$ref": "GoogleChromePolicyVersionsV1BatchModifyOrgUnitPoliciesRequest" // }, // "response": { // "$ref": "GoogleProtobufEmpty" @@ -2792,13 +3699,15 @@ func (c *CustomersPolicySchemasGetCall) doRequest(alt string) (*http.Response, e } // Do executes the "chromepolicy.customers.policySchemas.get" call. -// Exactly one of *GoogleChromePolicyV1PolicySchema or error will be -// non-nil. Any non-2xx status code is an error. Response headers are in -// either *GoogleChromePolicyV1PolicySchema.ServerResponse.Header or (if -// a response was returned at all) in error.(*googleapi.Error).Header. -// Use googleapi.IsNotModified to check whether the returned error was -// because http.StatusNotModified was returned. -func (c *CustomersPolicySchemasGetCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyV1PolicySchema, error) { +// Exactly one of *GoogleChromePolicyVersionsV1PolicySchema or error +// will be non-nil. Any non-2xx status code is an error. Response +// headers are in either +// *GoogleChromePolicyVersionsV1PolicySchema.ServerResponse.Header or +// (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *CustomersPolicySchemasGetCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyVersionsV1PolicySchema, error) { gensupport.SetOptions(c.urlParams_, opts...) res, err := c.doRequest("json") if res != nil && res.StatusCode == http.StatusNotModified { @@ -2817,7 +3726,7 @@ func (c *CustomersPolicySchemasGetCall) Do(opts ...googleapi.CallOption) (*Googl if err := googleapi.CheckResponse(res); err != nil { return nil, err } - ret := &GoogleChromePolicyV1PolicySchema{ + ret := &GoogleChromePolicyVersionsV1PolicySchema{ ServerResponse: googleapi.ServerResponse{ Header: res.Header, HTTPStatusCode: res.StatusCode, @@ -2847,7 +3756,7 @@ func (c *CustomersPolicySchemasGetCall) Do(opts ...googleapi.CallOption) (*Googl // }, // "path": "v1/{+name}", // "response": { - // "$ref": "GoogleChromePolicyV1PolicySchema" + // "$ref": "GoogleChromePolicyVersionsV1PolicySchema" // }, // "scopes": [ // "https://www.googleapis.com/auth/chrome.management.policy", @@ -2887,7 +3796,8 @@ func (c *CustomersPolicySchemasListCall) Filter(filter string) *CustomersPolicyS } // PageSize sets the optional parameter "pageSize": The maximum number -// of policy schemas to return. +// of policy schemas to return, defaults to 100 and has a maximum of +// 1000. func (c *CustomersPolicySchemasListCall) PageSize(pageSize int64) *CustomersPolicySchemasListCall { c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) return c @@ -2962,15 +3872,15 @@ func (c *CustomersPolicySchemasListCall) doRequest(alt string) (*http.Response, } // Do executes the "chromepolicy.customers.policySchemas.list" call. -// Exactly one of *GoogleChromePolicyV1ListPolicySchemasResponse or -// error will be non-nil. Any non-2xx status code is an error. Response -// headers are in either -// *GoogleChromePolicyV1ListPolicySchemasResponse.ServerResponse.Header -// or (if a response was returned at all) in +// Exactly one of *GoogleChromePolicyVersionsV1ListPolicySchemasResponse +// or error will be non-nil. Any non-2xx status code is an error. +// Response headers are in either +// *GoogleChromePolicyVersionsV1ListPolicySchemasResponse.ServerResponse. +// Header or (if a response was returned at all) in // error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check // whether the returned error was because http.StatusNotModified was // returned. -func (c *CustomersPolicySchemasListCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyV1ListPolicySchemasResponse, error) { +func (c *CustomersPolicySchemasListCall) Do(opts ...googleapi.CallOption) (*GoogleChromePolicyVersionsV1ListPolicySchemasResponse, error) { gensupport.SetOptions(c.urlParams_, opts...) res, err := c.doRequest("json") if res != nil && res.StatusCode == http.StatusNotModified { @@ -2989,7 +3899,7 @@ func (c *CustomersPolicySchemasListCall) Do(opts ...googleapi.CallOption) (*Goog if err := googleapi.CheckResponse(res); err != nil { return nil, err } - ret := &GoogleChromePolicyV1ListPolicySchemasResponse{ + ret := &GoogleChromePolicyVersionsV1ListPolicySchemasResponse{ ServerResponse: googleapi.ServerResponse{ Header: res.Header, HTTPStatusCode: res.StatusCode, @@ -3015,7 +3925,7 @@ func (c *CustomersPolicySchemasListCall) Do(opts ...googleapi.CallOption) (*Goog // "type": "string" // }, // "pageSize": { - // "description": "The maximum number of policy schemas to return.", + // "description": "The maximum number of policy schemas to return, defaults to 100 and has a maximum of 1000.", // "format": "int32", // "location": "query", // "type": "integer" @@ -3035,7 +3945,7 @@ func (c *CustomersPolicySchemasListCall) Do(opts ...googleapi.CallOption) (*Goog // }, // "path": "v1/{+parent}/policySchemas", // "response": { - // "$ref": "GoogleChromePolicyV1ListPolicySchemasResponse" + // "$ref": "GoogleChromePolicyVersionsV1ListPolicySchemasResponse" // }, // "scopes": [ // "https://www.googleapis.com/auth/chrome.management.policy", @@ -3048,7 +3958,7 @@ func (c *CustomersPolicySchemasListCall) Do(opts ...googleapi.CallOption) (*Goog // Pages invokes f for each page of results. // A non-nil error returned from f will halt the iteration. // The provided context supersedes any context provided to the Context method. -func (c *CustomersPolicySchemasListCall) Pages(ctx context.Context, f func(*GoogleChromePolicyV1ListPolicySchemasResponse) error) error { +func (c *CustomersPolicySchemasListCall) Pages(ctx context.Context, f func(*GoogleChromePolicyVersionsV1ListPolicySchemasResponse) error) error { c.ctx_ = ctx defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point for { diff --git a/civicinfo/v2/civicinfo-api.json b/civicinfo/v2/civicinfo-api.json index 9be42775a7e..3f43bd4d4f6 100644 --- a/civicinfo/v2/civicinfo-api.json +++ b/civicinfo/v2/civicinfo-api.json @@ -352,7 +352,7 @@ } } }, - "revision": "20220823", + "revision": "20221011", "rootUrl": "https://civicinfo.googleapis.com/", "schemas": { "AdministrationRegion": { @@ -1639,7 +1639,7 @@ "e.g. suite, room, hallway, cubicle.", "A terminal point represents a good location for a user to meet a taxi, ridesharing vehicle, or general driver.", "An area controlled in some way by an authoritative source, such as a government-designated COVID containment zone. Features of this type should have one or more gcids corresponding to their specific regulation.", - "RESERVED", + "A grouping of TYPE_BORDER features (\"border segments\"), which together represent a border between two features of the same type.", "DEPRECATED", "A feature of completely unknown type. This should only be used when absolutely necessary. One example in which this type is useful is in the Chinese importer, which must heuristically segment addresses into components - it often does not know what types to make those components. Please note that the Oyster address formatter does not currently support address components of TYPE_UNKNOWN well." ], diff --git a/civicinfo/v2/civicinfo-gen.go b/civicinfo/v2/civicinfo-gen.go index 22e07777435..ce23ee5e166 100644 --- a/civicinfo/v2/civicinfo-gen.go +++ b/civicinfo/v2/civicinfo-gen.go @@ -1478,7 +1478,9 @@ type GeocodingSummary struct { // authoritative source, such as a government-designated COVID // containment zone. Features of this type should have one or more gcids // corresponding to their specific regulation. - // "typeLogicalBorder" - RESERVED + // "typeLogicalBorder" - A grouping of TYPE_BORDER features ("border + // segments"), which together represent a border between two features of + // the same type. // "typeDoNotUseReservedToCatchGeneratedFiles" - DEPRECATED // "typeUnknown" - A feature of completely unknown type. This should // only be used when absolutely necessary. One example in which this diff --git a/cloudasset/v1/cloudasset-api.json b/cloudasset/v1/cloudasset-api.json index 5529b7c72cf..bb2b184dbba 100644 --- a/cloudasset/v1/cloudasset-api.json +++ b/cloudasset/v1/cloudasset-api.json @@ -884,7 +884,7 @@ "type": "string" }, "orderBy": { - "description": "Optional. A comma-separated list of fields specifying the sorting order of the results. The default order is ascending. Add \" DESC\" after the field name to indicate descending order. Redundant space characters are ignored. Example: \"location DESC, name\". Only singular primitive fields in the response are sortable: * name * assetType * project * displayName * description * location * kmsKey * createTime * updateTime * state * parentFullResourceName * parentAssetType All the other fields such as repeated fields (e.g., `networkTags`), map fields (e.g., `labels`) and struct fields (e.g., `additionalAttributes`) are not supported.", + "description": "Optional. A comma-separated list of fields specifying the sorting order of the results. The default order is ascending. Add \" DESC\" after the field name to indicate descending order. Redundant space characters are ignored. Example: \"location DESC, name\". Only singular primitive fields in the response are sortable: * name * assetType * project * displayName * description * location * createTime * updateTime * state * parentFullResourceName * parentAssetType All the other fields such as repeated fields (e.g., `networkTags`, 'kmsKeys'), map fields (e.g., `labels`) and struct fields (e.g., `additionalAttributes`) are not supported.", "location": "query", "type": "string" }, @@ -900,12 +900,12 @@ "type": "string" }, "query": { - "description": "Optional. The query statement. See [how to construct a query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query) for more information. If not specified or empty, it will search all the resources within the specified `scope`. Examples: * `name:Important` to find Cloud resources whose name contains \"Important\" as a word. * `name=Important` to find the Cloud resource whose name is exactly \"Important\". * `displayName:Impor*` to find Cloud resources whose display name contains \"Impor\" as a prefix of any word in the field. * `location:us-west*` to find Cloud resources whose location contains both \"us\" and \"west\" as prefixes. * `labels:prod` to find Cloud resources whose labels contain \"prod\" as a key or value. * `labels.env:prod` to find Cloud resources that have a label \"env\" and its value is \"prod\". * `labels.env:*` to find Cloud resources that have a label \"env\". * `kmsKey:key` to find Cloud resources encrypted with a customer-managed encryption key whose name contains the word \"key\". * `relationships:instance-group-1` to find Cloud resources that have relationships with \"instance-group-1\" in the related resource name. * `relationships:INSTANCE_TO_INSTANCEGROUP` to find compute instances that have relationships of type \"INSTANCE_TO_INSTANCEGROUP\". * `relationships.INSTANCE_TO_INSTANCEGROUP:instance-group-1` to find compute instances that have relationships with \"instance-group-1\" in the compute instance group resource name, for relationship type \"INSTANCE_TO_INSTANCEGROUP\". * `state:ACTIVE` to find Cloud resources whose state contains \"ACTIVE\" as a word. * `NOT state:ACTIVE` to find Cloud resources whose state doesn't contain \"ACTIVE\" as a word. * `createTime\u003c1609459200` to find Cloud resources that were created before \"2021-01-01 00:00:00 UTC\". 1609459200 is the epoch timestamp of \"2021-01-01 00:00:00 UTC\" in seconds. * `updateTime\u003e1609459200` to find Cloud resources that were updated after \"2021-01-01 00:00:00 UTC\". 1609459200 is the epoch timestamp of \"2021-01-01 00:00:00 UTC\" in seconds. * `Important` to find Cloud resources that contain \"Important\" as a word in any of the searchable fields. * `Impor*` to find Cloud resources that contain \"Impor\" as a prefix of any word in any of the searchable fields. * `Important location:(us-west1 OR global)` to find Cloud resources that contain \"Important\" as a word in any of the searchable fields and are also located in the \"us-west1\" region or the \"global\" location.", + "description": "Optional. The query statement. See [how to construct a query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query) for more information. If not specified or empty, it will search all the resources within the specified `scope`. Examples: * `name:Important` to find Cloud resources whose name contains \"Important\" as a word. * `name=Important` to find the Cloud resource whose name is exactly \"Important\". * `displayName:Impor*` to find Cloud resources whose display name contains \"Impor\" as a prefix of any word in the field. * `location:us-west*` to find Cloud resources whose location contains both \"us\" and \"west\" as prefixes. * `labels:prod` to find Cloud resources whose labels contain \"prod\" as a key or value. * `labels.env:prod` to find Cloud resources that have a label \"env\" and its value is \"prod\". * `labels.env:*` to find Cloud resources that have a label \"env\". * `kmsKey:key` to find Cloud resources encrypted with a customer-managed encryption key whose name contains \"key\" as a word. This field is deprecated. Please use the `\"kmsKeys\"` field to retrieve KMS key information. * `kmsKeys:key` to find Cloud resources encrypted with customer-managed encryption keys whose name contains the word \"key\". * `relationships:instance-group-1` to find Cloud resources that have relationships with \"instance-group-1\" in the related resource name. * `relationships:INSTANCE_TO_INSTANCEGROUP` to find compute instances that have relationships of type \"INSTANCE_TO_INSTANCEGROUP\". * `relationships.INSTANCE_TO_INSTANCEGROUP:instance-group-1` to find compute instances that have relationships with \"instance-group-1\" in the compute instance group resource name, for relationship type \"INSTANCE_TO_INSTANCEGROUP\". * `state:ACTIVE` to find Cloud resources whose state contains \"ACTIVE\" as a word. * `NOT state:ACTIVE` to find Cloud resources whose state doesn't contain \"ACTIVE\" as a word. * `createTime\u003c1609459200` to find Cloud resources that were created before \"2021-01-01 00:00:00 UTC\". 1609459200 is the epoch timestamp of \"2021-01-01 00:00:00 UTC\" in seconds. * `updateTime\u003e1609459200` to find Cloud resources that were updated after \"2021-01-01 00:00:00 UTC\". 1609459200 is the epoch timestamp of \"2021-01-01 00:00:00 UTC\" in seconds. * `Important` to find Cloud resources that contain \"Important\" as a word in any of the searchable fields. * `Impor*` to find Cloud resources that contain \"Impor\" as a prefix of any word in any of the searchable fields. * `Important location:(us-west1 OR global)` to find Cloud resources that contain \"Important\" as a word in any of the searchable fields and are also located in the \"us-west1\" region or the \"global\" location.", "location": "query", "type": "string" }, "readMask": { - "description": "Optional. A comma-separated list of fields specifying which fields to be returned in ResourceSearchResult. Only '*' or combination of top level fields can be specified. Field names of both snake_case and camelCase are supported. Examples: `\"*\"`, `\"name,location\"`, `\"name,versionedResources\"`. The read_mask paths must be valid field paths listed but not limited to (both snake_case and camelCase are supported): * name * assetType * project * displayName * description * location * tagKeys * tagValues * tagValueIds * labels * networkTags * kmsKey * createTime * updateTime * state * additionalAttributes * versionedResources If read_mask is not specified, all fields except versionedResources will be returned. If only '*' is specified, all fields including versionedResources will be returned. Any invalid field path will trigger INVALID_ARGUMENT error.", + "description": "Optional. A comma-separated list of fields specifying which fields to be returned in ResourceSearchResult. Only '*' or combination of top level fields can be specified. Field names of both snake_case and camelCase are supported. Examples: `\"*\"`, `\"name,location\"`, `\"name,versionedResources\"`. The read_mask paths must be valid field paths listed but not limited to (both snake_case and camelCase are supported): * name * assetType * project * displayName * description * location * tagKeys * tagValues * tagValueIds * labels * networkTags * kmsKeys * createTime * updateTime * state * additionalAttributes * versionedResources If read_mask is not specified, all fields except versionedResources will be returned. If only '*' is specified, all fields including versionedResources will be returned. Any invalid field path will trigger INVALID_ARGUMENT error.", "format": "google-fieldmask", "location": "query", "type": "string" @@ -929,7 +929,7 @@ } } }, - "revision": "20220923", + "revision": "20221001", "rootUrl": "https://cloudasset.googleapis.com/", "schemas": { "AccessSelector": { @@ -3263,7 +3263,7 @@ "type": "array" }, "kmsKey": { - "description": "This field only presents for the purpose of backward-compatibility. Please use `kms_keys` field to retrieve KMS key information. This field will only be populated for the resource types included in this list for backward compatible purpose. To search against the `kms_key`: * Use a field query. Example: `kmsKey:key` * Use a free text query. Example: `key`", + "description": "This field only presents for the purpose of backward-compatibility. Please use `kms_keys` field to retrieve KMS key information. This field will only be populated for the resource types included in this [list](https://cloud.google.com/asset-inventory/docs/legacy-fields#resource_types_with_the_to_be_deprecated_kmskey_field) for backward compatible purpose. To search against the `kms_key`: * Use a field query. Example: `kmsKey:key` * Use a free text query. Example: `key`", "type": "string" }, "kmsKeys": { diff --git a/cloudasset/v1/cloudasset-gen.go b/cloudasset/v1/cloudasset-gen.go index 8ed8d6ea06e..e29cfc23e1e 100644 --- a/cloudasset/v1/cloudasset-gen.go +++ b/cloudasset/v1/cloudasset-gen.go @@ -4916,9 +4916,11 @@ type ResourceSearchResult struct { // KmsKey: This field only presents for the purpose of // backward-compatibility. Please use `kms_keys` field to retrieve KMS // key information. This field will only be populated for the resource - // types included in this list for backward compatible purpose. To - // search against the `kms_key`: * Use a field query. Example: - // `kmsKey:key` * Use a free text query. Example: `key` + // types included in this list + // (https://cloud.google.com/asset-inventory/docs/legacy-fields#resource_types_with_the_to_be_deprecated_kmskey_field) + // for backward compatible purpose. To search against the `kms_key`: * + // Use a field query. Example: `kmsKey:key` * Use a free text query. + // Example: `key` KmsKey string `json:"kmsKey,omitempty"` // KmsKeys: The Cloud KMS CryptoKey @@ -9525,10 +9527,11 @@ func (c *V1SearchAllResourcesCall) AssetTypes(assetTypes ...string) *V1SearchAll // descending order. Redundant space characters are ignored. Example: // "location DESC, name". Only singular primitive fields in the response // are sortable: * name * assetType * project * displayName * -// description * location * kmsKey * createTime * updateTime * state * +// description * location * createTime * updateTime * state * // parentFullResourceName * parentAssetType All the other fields such as -// repeated fields (e.g., `networkTags`), map fields (e.g., `labels`) -// and struct fields (e.g., `additionalAttributes`) are not supported. +// repeated fields (e.g., `networkTags`, 'kmsKeys'), map fields (e.g., +// `labels`) and struct fields (e.g., `additionalAttributes`) are not +// supported. func (c *V1SearchAllResourcesCall) OrderBy(orderBy string) *V1SearchAllResourcesCall { c.urlParams_.Set("orderBy", orderBy) return c @@ -9571,9 +9574,12 @@ func (c *V1SearchAllResourcesCall) PageToken(pageToken string) *V1SearchAllResou // a label "env" and its value is "prod". * `labels.env:*` to find Cloud // resources that have a label "env". * `kmsKey:key` to find Cloud // resources encrypted with a customer-managed encryption key whose name -// contains the word "key". * `relationships:instance-group-1` to find -// Cloud resources that have relationships with "instance-group-1" in -// the related resource name. * +// contains "key" as a word. This field is deprecated. Please use the +// "kmsKeys" field to retrieve KMS key information. * `kmsKeys:key` to +// find Cloud resources encrypted with customer-managed encryption keys +// whose name contains the word "key". * +// `relationships:instance-group-1` to find Cloud resources that have +// relationships with "instance-group-1" in the related resource name. * // `relationships:INSTANCE_TO_INSTANCEGROUP` to find compute instances // that have relationships of type "INSTANCE_TO_INSTANCEGROUP". * // `relationships.INSTANCE_TO_INSTANCEGROUP:instance-group-1` to find @@ -9608,7 +9614,7 @@ func (c *V1SearchAllResourcesCall) Query(query string) *V1SearchAllResourcesCall // paths listed but not limited to (both snake_case and camelCase are // supported): * name * assetType * project * displayName * description // * location * tagKeys * tagValues * tagValueIds * labels * networkTags -// * kmsKey * createTime * updateTime * state * additionalAttributes * +// * kmsKeys * createTime * updateTime * state * additionalAttributes * // versionedResources If read_mask is not specified, all fields except // versionedResources will be returned. If only '*' is specified, all // fields including versionedResources will be returned. Any invalid @@ -9732,7 +9738,7 @@ func (c *V1SearchAllResourcesCall) Do(opts ...googleapi.CallOption) (*SearchAllR // "type": "string" // }, // "orderBy": { - // "description": "Optional. A comma-separated list of fields specifying the sorting order of the results. The default order is ascending. Add \" DESC\" after the field name to indicate descending order. Redundant space characters are ignored. Example: \"location DESC, name\". Only singular primitive fields in the response are sortable: * name * assetType * project * displayName * description * location * kmsKey * createTime * updateTime * state * parentFullResourceName * parentAssetType All the other fields such as repeated fields (e.g., `networkTags`), map fields (e.g., `labels`) and struct fields (e.g., `additionalAttributes`) are not supported.", + // "description": "Optional. A comma-separated list of fields specifying the sorting order of the results. The default order is ascending. Add \" DESC\" after the field name to indicate descending order. Redundant space characters are ignored. Example: \"location DESC, name\". Only singular primitive fields in the response are sortable: * name * assetType * project * displayName * description * location * createTime * updateTime * state * parentFullResourceName * parentAssetType All the other fields such as repeated fields (e.g., `networkTags`, 'kmsKeys'), map fields (e.g., `labels`) and struct fields (e.g., `additionalAttributes`) are not supported.", // "location": "query", // "type": "string" // }, @@ -9748,12 +9754,12 @@ func (c *V1SearchAllResourcesCall) Do(opts ...googleapi.CallOption) (*SearchAllR // "type": "string" // }, // "query": { - // "description": "Optional. The query statement. See [how to construct a query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query) for more information. If not specified or empty, it will search all the resources within the specified `scope`. Examples: * `name:Important` to find Cloud resources whose name contains \"Important\" as a word. * `name=Important` to find the Cloud resource whose name is exactly \"Important\". * `displayName:Impor*` to find Cloud resources whose display name contains \"Impor\" as a prefix of any word in the field. * `location:us-west*` to find Cloud resources whose location contains both \"us\" and \"west\" as prefixes. * `labels:prod` to find Cloud resources whose labels contain \"prod\" as a key or value. * `labels.env:prod` to find Cloud resources that have a label \"env\" and its value is \"prod\". * `labels.env:*` to find Cloud resources that have a label \"env\". * `kmsKey:key` to find Cloud resources encrypted with a customer-managed encryption key whose name contains the word \"key\". * `relationships:instance-group-1` to find Cloud resources that have relationships with \"instance-group-1\" in the related resource name. * `relationships:INSTANCE_TO_INSTANCEGROUP` to find compute instances that have relationships of type \"INSTANCE_TO_INSTANCEGROUP\". * `relationships.INSTANCE_TO_INSTANCEGROUP:instance-group-1` to find compute instances that have relationships with \"instance-group-1\" in the compute instance group resource name, for relationship type \"INSTANCE_TO_INSTANCEGROUP\". * `state:ACTIVE` to find Cloud resources whose state contains \"ACTIVE\" as a word. * `NOT state:ACTIVE` to find Cloud resources whose state doesn't contain \"ACTIVE\" as a word. * `createTime\u003c1609459200` to find Cloud resources that were created before \"2021-01-01 00:00:00 UTC\". 1609459200 is the epoch timestamp of \"2021-01-01 00:00:00 UTC\" in seconds. * `updateTime\u003e1609459200` to find Cloud resources that were updated after \"2021-01-01 00:00:00 UTC\". 1609459200 is the epoch timestamp of \"2021-01-01 00:00:00 UTC\" in seconds. * `Important` to find Cloud resources that contain \"Important\" as a word in any of the searchable fields. * `Impor*` to find Cloud resources that contain \"Impor\" as a prefix of any word in any of the searchable fields. * `Important location:(us-west1 OR global)` to find Cloud resources that contain \"Important\" as a word in any of the searchable fields and are also located in the \"us-west1\" region or the \"global\" location.", + // "description": "Optional. The query statement. See [how to construct a query](https://cloud.google.com/asset-inventory/docs/searching-resources#how_to_construct_a_query) for more information. If not specified or empty, it will search all the resources within the specified `scope`. Examples: * `name:Important` to find Cloud resources whose name contains \"Important\" as a word. * `name=Important` to find the Cloud resource whose name is exactly \"Important\". * `displayName:Impor*` to find Cloud resources whose display name contains \"Impor\" as a prefix of any word in the field. * `location:us-west*` to find Cloud resources whose location contains both \"us\" and \"west\" as prefixes. * `labels:prod` to find Cloud resources whose labels contain \"prod\" as a key or value. * `labels.env:prod` to find Cloud resources that have a label \"env\" and its value is \"prod\". * `labels.env:*` to find Cloud resources that have a label \"env\". * `kmsKey:key` to find Cloud resources encrypted with a customer-managed encryption key whose name contains \"key\" as a word. This field is deprecated. Please use the `\"kmsKeys\"` field to retrieve KMS key information. * `kmsKeys:key` to find Cloud resources encrypted with customer-managed encryption keys whose name contains the word \"key\". * `relationships:instance-group-1` to find Cloud resources that have relationships with \"instance-group-1\" in the related resource name. * `relationships:INSTANCE_TO_INSTANCEGROUP` to find compute instances that have relationships of type \"INSTANCE_TO_INSTANCEGROUP\". * `relationships.INSTANCE_TO_INSTANCEGROUP:instance-group-1` to find compute instances that have relationships with \"instance-group-1\" in the compute instance group resource name, for relationship type \"INSTANCE_TO_INSTANCEGROUP\". * `state:ACTIVE` to find Cloud resources whose state contains \"ACTIVE\" as a word. * `NOT state:ACTIVE` to find Cloud resources whose state doesn't contain \"ACTIVE\" as a word. * `createTime\u003c1609459200` to find Cloud resources that were created before \"2021-01-01 00:00:00 UTC\". 1609459200 is the epoch timestamp of \"2021-01-01 00:00:00 UTC\" in seconds. * `updateTime\u003e1609459200` to find Cloud resources that were updated after \"2021-01-01 00:00:00 UTC\". 1609459200 is the epoch timestamp of \"2021-01-01 00:00:00 UTC\" in seconds. * `Important` to find Cloud resources that contain \"Important\" as a word in any of the searchable fields. * `Impor*` to find Cloud resources that contain \"Impor\" as a prefix of any word in any of the searchable fields. * `Important location:(us-west1 OR global)` to find Cloud resources that contain \"Important\" as a word in any of the searchable fields and are also located in the \"us-west1\" region or the \"global\" location.", // "location": "query", // "type": "string" // }, // "readMask": { - // "description": "Optional. A comma-separated list of fields specifying which fields to be returned in ResourceSearchResult. Only '*' or combination of top level fields can be specified. Field names of both snake_case and camelCase are supported. Examples: `\"*\"`, `\"name,location\"`, `\"name,versionedResources\"`. The read_mask paths must be valid field paths listed but not limited to (both snake_case and camelCase are supported): * name * assetType * project * displayName * description * location * tagKeys * tagValues * tagValueIds * labels * networkTags * kmsKey * createTime * updateTime * state * additionalAttributes * versionedResources If read_mask is not specified, all fields except versionedResources will be returned. If only '*' is specified, all fields including versionedResources will be returned. Any invalid field path will trigger INVALID_ARGUMENT error.", + // "description": "Optional. A comma-separated list of fields specifying which fields to be returned in ResourceSearchResult. Only '*' or combination of top level fields can be specified. Field names of both snake_case and camelCase are supported. Examples: `\"*\"`, `\"name,location\"`, `\"name,versionedResources\"`. The read_mask paths must be valid field paths listed but not limited to (both snake_case and camelCase are supported): * name * assetType * project * displayName * description * location * tagKeys * tagValues * tagValueIds * labels * networkTags * kmsKeys * createTime * updateTime * state * additionalAttributes * versionedResources If read_mask is not specified, all fields except versionedResources will be returned. If only '*' is specified, all fields including versionedResources will be returned. Any invalid field path will trigger INVALID_ARGUMENT error.", // "format": "google-fieldmask", // "location": "query", // "type": "string" diff --git a/cloudbuild/v1/cloudbuild-api.json b/cloudbuild/v1/cloudbuild-api.json index cdea78323ad..dbc31c4928e 100644 --- a/cloudbuild/v1/cloudbuild-api.json +++ b/cloudbuild/v1/cloudbuild-api.json @@ -2295,7 +2295,7 @@ } } }, - "revision": "20220916", + "revision": "20220928", "rootUrl": "https://cloudbuild.googleapis.com/", "schemas": { "ApprovalConfig": { @@ -2412,9 +2412,23 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "MavenArtifact" + }, + "type": "array" + }, "objects": { "$ref": "ArtifactObjects", "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE." + }, + "pythonPackages": { + "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "PythonPackage" + }, + "type": "array" } }, "type": "object" @@ -4272,6 +4286,33 @@ }, "type": "object" }, + "MavenArtifact": { + "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.", + "id": "MavenArtifact", + "properties": { + "artifactId": { + "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "groupId": { + "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "path": { + "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.", + "type": "string" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + }, + "version": { + "description": "Maven `version` value used when uploading the artifact to Artifact Registry.", + "type": "string" + } + }, + "type": "object" + }, "NetworkConfig": { "description": "Defines the network configuration for the pool.", "id": "NetworkConfig", @@ -4622,6 +4663,24 @@ }, "type": "object" }, + "PythonPackage": { + "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.", + "id": "PythonPackage", + "properties": { + "paths": { + "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and sometimes additionally an `.asc` file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + } + }, + "type": "object" + }, "ReceiveTriggerWebhookResponse": { "description": "ReceiveTriggerWebhookResponse [Experimental] is the response object for the ReceiveTriggerWebhook method.", "id": "ReceiveTriggerWebhookResponse", @@ -4726,10 +4785,24 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "Maven artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "UploadedMavenArtifact" + }, + "type": "array" + }, "numArtifacts": { "description": "Number of artifacts uploaded. Only populated when artifacts are uploaded.", "format": "int64", "type": "string" + }, + "pythonPackages": { + "description": "Python artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "UploadedPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -5141,6 +5214,46 @@ }, "type": "object" }, + "UploadedMavenArtifact": { + "description": "A Maven artifact uploaded using the MavenArtifact directive.", + "id": "UploadedMavenArtifact", + "properties": { + "fileHashes": { + "$ref": "FileHashes", + "description": "Hash types and values of the Maven Artifact." + }, + "pushTiming": { + "$ref": "TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, + "UploadedPythonPackage": { + "description": "Artifact uploaded using the PythonPackage directive.", + "id": "UploadedPythonPackage", + "properties": { + "fileHashes": { + "$ref": "FileHashes", + "description": "Hash types and values of the Python Artifact." + }, + "pushTiming": { + "$ref": "TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, "Volume": { "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", "id": "Volume", diff --git a/cloudbuild/v1/cloudbuild-gen.go b/cloudbuild/v1/cloudbuild-gen.go index a75a5615a88..5c407660e3d 100644 --- a/cloudbuild/v1/cloudbuild-gen.go +++ b/cloudbuild/v1/cloudbuild-gen.go @@ -573,6 +573,14 @@ type Artifacts struct { // fail to be pushed, the build is marked FAILURE. Images []string `json:"images,omitempty"` + // MavenArtifacts: A list of Maven artifacts to be uploaded to Artifact + // Registry upon successful completion of all build steps. Artifacts in + // the workspace matching specified paths globs will be uploaded to the + // specified Artifact Registry repository using the builder service + // account's credentials. If any artifacts fail to be pushed, the build + // is marked FAILURE. + MavenArtifacts []*MavenArtifact `json:"mavenArtifacts,omitempty"` + // Objects: A list of objects to be uploaded to Cloud Storage upon // successful completion of all build steps. Files in the workspace // matching specified paths globs will be uploaded to the specified @@ -582,6 +590,12 @@ type Artifacts struct { // to be pushed, the build is marked FAILURE. Objects *ArtifactObjects `json:"objects,omitempty"` + // PythonPackages: A list of Python packages to be uploaded to Artifact + // Registry upon successful completion of all build steps. The build + // service account credentials will be used to perform the upload. If + // any objects fail to be pushed, the build is marked FAILURE. + PythonPackages []*PythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "Images") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -3454,6 +3468,56 @@ func (s *ListWorkerPoolsResponse) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// MavenArtifact: A Maven artifact to upload to Artifact Registry upon +// successful completion of all build steps. +type MavenArtifact struct { + // ArtifactId: Maven `artifactId` value used when uploading the artifact + // to Artifact Registry. + ArtifactId string `json:"artifactId,omitempty"` + + // GroupId: Maven `groupId` value used when uploading the artifact to + // Artifact Registry. + GroupId string `json:"groupId,omitempty"` + + // Path: Path to an artifact in the build's workspace to be uploaded to + // Artifact Registry. This can be either an absolute path, e.g. + // /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path + // from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar. + Path string `json:"path,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" Artifact in the + // workspace specified by path will be uploaded to Artifact Registry + // with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // Version: Maven `version` value used when uploading the artifact to + // Artifact Registry. + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArtifactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArtifactId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *MavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod MavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // NetworkConfig: Defines the network configuration for the pool. type NetworkConfig struct { // EgressOption: Option to configure network egress for the workers. @@ -4074,6 +4138,44 @@ func (s *PushFilter) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// PythonPackage: Python package to upload to Artifact Registry upon +// successful completion of all build steps. A package can encapsulate +// multiple objects to be uploaded to a single repository. +type PythonPackage struct { + // Paths: Path globs used to match files in the build's workspace. For + // Python/ Twine, this is usually `dist/*`, and sometimes additionally + // an `.asc` file. + Paths []string `json:"paths,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" Files in the + // workspace matching any path pattern will be uploaded to Artifact + // Registry with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Paths") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Paths") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod PythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ReceiveTriggerWebhookResponse: ReceiveTriggerWebhookResponse // [Experimental] is the response object for the ReceiveTriggerWebhook // method. @@ -4226,10 +4328,18 @@ type Results struct { // Images: Container images that were built as a part of the build. Images []*BuiltImage `json:"images,omitempty"` + // MavenArtifacts: Maven artifacts uploaded to Artifact Registry at the + // end of the build. + MavenArtifacts []*UploadedMavenArtifact `json:"mavenArtifacts,omitempty"` + // NumArtifacts: Number of artifacts uploaded. Only populated when // artifacts are uploaded. NumArtifacts int64 `json:"numArtifacts,omitempty,string"` + // PythonPackages: Python artifacts uploaded to Artifact Registry at the + // end of the build. + PythonPackages []*UploadedPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "ArtifactManifest") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -4986,6 +5096,78 @@ func (s *UpdateWorkerPoolOperationMetadata) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// UploadedMavenArtifact: A Maven artifact uploaded using the +// MavenArtifact directive. +type UploadedMavenArtifact struct { + // FileHashes: Hash types and values of the Maven Artifact. + FileHashes *FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadedMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod UploadedMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UploadedPythonPackage: Artifact uploaded using the PythonPackage +// directive. +type UploadedPythonPackage struct { + // FileHashes: Hash types and values of the Python Artifact. + FileHashes *FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadedPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod UploadedPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // Volume: Volume describes a Docker container volume which is mounted // into build steps in order to persist files across build step // execution. diff --git a/cloudbuild/v1alpha1/cloudbuild-api.json b/cloudbuild/v1alpha1/cloudbuild-api.json index f1600e7c8f7..3c4e60e3d32 100644 --- a/cloudbuild/v1alpha1/cloudbuild-api.json +++ b/cloudbuild/v1alpha1/cloudbuild-api.json @@ -306,7 +306,7 @@ } } }, - "revision": "20220916", + "revision": "20220928", "rootUrl": "https://cloudbuild.googleapis.com/", "schemas": { "ApprovalConfig": { @@ -412,9 +412,23 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "MavenArtifact" + }, + "type": "array" + }, "objects": { "$ref": "ArtifactObjects", "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE." + }, + "pythonPackages": { + "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "PythonPackage" + }, + "type": "array" } }, "type": "object" @@ -1426,6 +1440,33 @@ }, "type": "object" }, + "MavenArtifact": { + "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.", + "id": "MavenArtifact", + "properties": { + "artifactId": { + "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "groupId": { + "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "path": { + "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.", + "type": "string" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + }, + "version": { + "description": "Maven `version` value used when uploading the artifact to Artifact Registry.", + "type": "string" + } + }, + "type": "object" + }, "Network": { "description": "Network describes the GCP network used to create workers in.", "id": "Network", @@ -1669,6 +1710,24 @@ }, "type": "object" }, + "PythonPackage": { + "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.", + "id": "PythonPackage", + "properties": { + "paths": { + "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and sometimes additionally an `.asc` file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + } + }, + "type": "object" + }, "RepoSource": { "description": "Location of the source in a Google Cloud Source Repository.", "id": "RepoSource", @@ -1745,10 +1804,24 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "Maven artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "UploadedMavenArtifact" + }, + "type": "array" + }, "numArtifacts": { "description": "Number of artifacts uploaded. Only populated when artifacts are uploaded.", "format": "int64", "type": "string" + }, + "pythonPackages": { + "description": "Python artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "UploadedPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -2111,6 +2184,46 @@ }, "type": "object" }, + "UploadedMavenArtifact": { + "description": "A Maven artifact uploaded using the MavenArtifact directive.", + "id": "UploadedMavenArtifact", + "properties": { + "fileHashes": { + "$ref": "FileHashes", + "description": "Hash types and values of the Maven Artifact." + }, + "pushTiming": { + "$ref": "TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, + "UploadedPythonPackage": { + "description": "Artifact uploaded using the PythonPackage directive.", + "id": "UploadedPythonPackage", + "properties": { + "fileHashes": { + "$ref": "FileHashes", + "description": "Hash types and values of the Python Artifact." + }, + "pushTiming": { + "$ref": "TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, "Volume": { "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", "id": "Volume", diff --git a/cloudbuild/v1alpha1/cloudbuild-gen.go b/cloudbuild/v1alpha1/cloudbuild-gen.go index 260f6b64ff3..c6adf40fdd1 100644 --- a/cloudbuild/v1alpha1/cloudbuild-gen.go +++ b/cloudbuild/v1alpha1/cloudbuild-gen.go @@ -352,6 +352,14 @@ type Artifacts struct { // fail to be pushed, the build is marked FAILURE. Images []string `json:"images,omitempty"` + // MavenArtifacts: A list of Maven artifacts to be uploaded to Artifact + // Registry upon successful completion of all build steps. Artifacts in + // the workspace matching specified paths globs will be uploaded to the + // specified Artifact Registry repository using the builder service + // account's credentials. If any artifacts fail to be pushed, the build + // is marked FAILURE. + MavenArtifacts []*MavenArtifact `json:"mavenArtifacts,omitempty"` + // Objects: A list of objects to be uploaded to Cloud Storage upon // successful completion of all build steps. Files in the workspace // matching specified paths globs will be uploaded to the specified @@ -361,6 +369,12 @@ type Artifacts struct { // to be pushed, the build is marked FAILURE. Objects *ArtifactObjects `json:"objects,omitempty"` + // PythonPackages: A list of Python packages to be uploaded to Artifact + // Registry upon successful completion of all build steps. The build + // service account credentials will be used to perform the upload. If + // any objects fail to be pushed, the build is marked FAILURE. + PythonPackages []*PythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "Images") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1813,6 +1827,56 @@ func (s *ListWorkerPoolsResponse) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// MavenArtifact: A Maven artifact to upload to Artifact Registry upon +// successful completion of all build steps. +type MavenArtifact struct { + // ArtifactId: Maven `artifactId` value used when uploading the artifact + // to Artifact Registry. + ArtifactId string `json:"artifactId,omitempty"` + + // GroupId: Maven `groupId` value used when uploading the artifact to + // Artifact Registry. + GroupId string `json:"groupId,omitempty"` + + // Path: Path to an artifact in the build's workspace to be uploaded to + // Artifact Registry. This can be either an absolute path, e.g. + // /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path + // from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar. + Path string `json:"path,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" Artifact in the + // workspace specified by path will be uploaded to Artifact Registry + // with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // Version: Maven `version` value used when uploading the artifact to + // Artifact Registry. + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArtifactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArtifactId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *MavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod MavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // Network: Network describes the GCP network used to create workers in. type Network struct { // Network: Network on which the workers are created. "default" network @@ -2256,6 +2320,44 @@ func (s *ProcessAppManifestCallbackOperationMetadata) MarshalJSON() ([]byte, err return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// PythonPackage: Python package to upload to Artifact Registry upon +// successful completion of all build steps. A package can encapsulate +// multiple objects to be uploaded to a single repository. +type PythonPackage struct { + // Paths: Path globs used to match files in the build's workspace. For + // Python/ Twine, this is usually `dist/*`, and sometimes additionally + // an `.asc` file. + Paths []string `json:"paths,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" Files in the + // workspace matching any path pattern will be uploaded to Artifact + // Registry with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Paths") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Paths") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod PythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // RepoSource: Location of the source in a Google Cloud Source // Repository. type RepoSource struct { @@ -2339,10 +2441,18 @@ type Results struct { // Images: Container images that were built as a part of the build. Images []*BuiltImage `json:"images,omitempty"` + // MavenArtifacts: Maven artifacts uploaded to Artifact Registry at the + // end of the build. + MavenArtifacts []*UploadedMavenArtifact `json:"mavenArtifacts,omitempty"` + // NumArtifacts: Number of artifacts uploaded. Only populated when // artifacts are uploaded. NumArtifacts int64 `json:"numArtifacts,omitempty,string"` + // PythonPackages: Python artifacts uploaded to Artifact Registry at the + // end of the build. + PythonPackages []*UploadedPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "ArtifactManifest") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -2997,6 +3107,78 @@ func (s *UpdateWorkerPoolOperationMetadata) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// UploadedMavenArtifact: A Maven artifact uploaded using the +// MavenArtifact directive. +type UploadedMavenArtifact struct { + // FileHashes: Hash types and values of the Maven Artifact. + FileHashes *FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadedMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod UploadedMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UploadedPythonPackage: Artifact uploaded using the PythonPackage +// directive. +type UploadedPythonPackage struct { + // FileHashes: Hash types and values of the Python Artifact. + FileHashes *FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadedPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod UploadedPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // Volume: Volume describes a Docker container volume which is mounted // into build steps in order to persist files across build step // execution. diff --git a/cloudbuild/v1alpha2/cloudbuild-api.json b/cloudbuild/v1alpha2/cloudbuild-api.json index 71d054ac6e9..638cbffd7db 100644 --- a/cloudbuild/v1alpha2/cloudbuild-api.json +++ b/cloudbuild/v1alpha2/cloudbuild-api.json @@ -317,7 +317,7 @@ } } }, - "revision": "20220916", + "revision": "20220928", "rootUrl": "https://cloudbuild.googleapis.com/", "schemas": { "ApprovalConfig": { @@ -423,9 +423,23 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "MavenArtifact" + }, + "type": "array" + }, "objects": { "$ref": "ArtifactObjects", "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE." + }, + "pythonPackages": { + "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "PythonPackage" + }, + "type": "array" } }, "type": "object" @@ -1437,6 +1451,33 @@ }, "type": "object" }, + "MavenArtifact": { + "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.", + "id": "MavenArtifact", + "properties": { + "artifactId": { + "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "groupId": { + "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "path": { + "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.", + "type": "string" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + }, + "version": { + "description": "Maven `version` value used when uploading the artifact to Artifact Registry.", + "type": "string" + } + }, + "type": "object" + }, "NetworkConfig": { "description": "Network describes the network configuration for a `WorkerPool`.", "id": "NetworkConfig", @@ -1672,6 +1713,24 @@ }, "type": "object" }, + "PythonPackage": { + "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.", + "id": "PythonPackage", + "properties": { + "paths": { + "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and sometimes additionally an `.asc` file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + } + }, + "type": "object" + }, "RepoSource": { "description": "Location of the source in a Google Cloud Source Repository.", "id": "RepoSource", @@ -1748,10 +1807,24 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "Maven artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "UploadedMavenArtifact" + }, + "type": "array" + }, "numArtifacts": { "description": "Number of artifacts uploaded. Only populated when artifacts are uploaded.", "format": "int64", "type": "string" + }, + "pythonPackages": { + "description": "Python artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "UploadedPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -2114,6 +2187,46 @@ }, "type": "object" }, + "UploadedMavenArtifact": { + "description": "A Maven artifact uploaded using the MavenArtifact directive.", + "id": "UploadedMavenArtifact", + "properties": { + "fileHashes": { + "$ref": "FileHashes", + "description": "Hash types and values of the Maven Artifact." + }, + "pushTiming": { + "$ref": "TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, + "UploadedPythonPackage": { + "description": "Artifact uploaded using the PythonPackage directive.", + "id": "UploadedPythonPackage", + "properties": { + "fileHashes": { + "$ref": "FileHashes", + "description": "Hash types and values of the Python Artifact." + }, + "pushTiming": { + "$ref": "TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, "Volume": { "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", "id": "Volume", diff --git a/cloudbuild/v1alpha2/cloudbuild-gen.go b/cloudbuild/v1alpha2/cloudbuild-gen.go index 0b409a723eb..e99c04b20f3 100644 --- a/cloudbuild/v1alpha2/cloudbuild-gen.go +++ b/cloudbuild/v1alpha2/cloudbuild-gen.go @@ -352,6 +352,14 @@ type Artifacts struct { // fail to be pushed, the build is marked FAILURE. Images []string `json:"images,omitempty"` + // MavenArtifacts: A list of Maven artifacts to be uploaded to Artifact + // Registry upon successful completion of all build steps. Artifacts in + // the workspace matching specified paths globs will be uploaded to the + // specified Artifact Registry repository using the builder service + // account's credentials. If any artifacts fail to be pushed, the build + // is marked FAILURE. + MavenArtifacts []*MavenArtifact `json:"mavenArtifacts,omitempty"` + // Objects: A list of objects to be uploaded to Cloud Storage upon // successful completion of all build steps. Files in the workspace // matching specified paths globs will be uploaded to the specified @@ -361,6 +369,12 @@ type Artifacts struct { // to be pushed, the build is marked FAILURE. Objects *ArtifactObjects `json:"objects,omitempty"` + // PythonPackages: A list of Python packages to be uploaded to Artifact + // Registry upon successful completion of all build steps. The build + // service account credentials will be used to perform the upload. If + // any objects fail to be pushed, the build is marked FAILURE. + PythonPackages []*PythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "Images") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1813,6 +1827,56 @@ func (s *ListWorkerPoolsResponse) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// MavenArtifact: A Maven artifact to upload to Artifact Registry upon +// successful completion of all build steps. +type MavenArtifact struct { + // ArtifactId: Maven `artifactId` value used when uploading the artifact + // to Artifact Registry. + ArtifactId string `json:"artifactId,omitempty"` + + // GroupId: Maven `groupId` value used when uploading the artifact to + // Artifact Registry. + GroupId string `json:"groupId,omitempty"` + + // Path: Path to an artifact in the build's workspace to be uploaded to + // Artifact Registry. This can be either an absolute path, e.g. + // /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path + // from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar. + Path string `json:"path,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" Artifact in the + // workspace specified by path will be uploaded to Artifact Registry + // with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // Version: Maven `version` value used when uploading the artifact to + // Artifact Registry. + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArtifactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArtifactId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *MavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod MavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // NetworkConfig: Network describes the network configuration for a // `WorkerPool`. type NetworkConfig struct { @@ -2249,6 +2313,44 @@ func (s *ProcessAppManifestCallbackOperationMetadata) MarshalJSON() ([]byte, err return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// PythonPackage: Python package to upload to Artifact Registry upon +// successful completion of all build steps. A package can encapsulate +// multiple objects to be uploaded to a single repository. +type PythonPackage struct { + // Paths: Path globs used to match files in the build's workspace. For + // Python/ Twine, this is usually `dist/*`, and sometimes additionally + // an `.asc` file. + Paths []string `json:"paths,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" Files in the + // workspace matching any path pattern will be uploaded to Artifact + // Registry with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Paths") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Paths") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod PythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // RepoSource: Location of the source in a Google Cloud Source // Repository. type RepoSource struct { @@ -2332,10 +2434,18 @@ type Results struct { // Images: Container images that were built as a part of the build. Images []*BuiltImage `json:"images,omitempty"` + // MavenArtifacts: Maven artifacts uploaded to Artifact Registry at the + // end of the build. + MavenArtifacts []*UploadedMavenArtifact `json:"mavenArtifacts,omitempty"` + // NumArtifacts: Number of artifacts uploaded. Only populated when // artifacts are uploaded. NumArtifacts int64 `json:"numArtifacts,omitempty,string"` + // PythonPackages: Python artifacts uploaded to Artifact Registry at the + // end of the build. + PythonPackages []*UploadedPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "ArtifactManifest") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -2990,6 +3100,78 @@ func (s *UpdateWorkerPoolOperationMetadata) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// UploadedMavenArtifact: A Maven artifact uploaded using the +// MavenArtifact directive. +type UploadedMavenArtifact struct { + // FileHashes: Hash types and values of the Maven Artifact. + FileHashes *FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadedMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod UploadedMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UploadedPythonPackage: Artifact uploaded using the PythonPackage +// directive. +type UploadedPythonPackage struct { + // FileHashes: Hash types and values of the Python Artifact. + FileHashes *FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadedPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod UploadedPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // Volume: Volume describes a Docker container volume which is mounted // into build steps in order to persist files across build step // execution. diff --git a/cloudbuild/v1beta1/cloudbuild-api.json b/cloudbuild/v1beta1/cloudbuild-api.json index 0c0d10eb9d3..b020006bae7 100644 --- a/cloudbuild/v1beta1/cloudbuild-api.json +++ b/cloudbuild/v1beta1/cloudbuild-api.json @@ -322,7 +322,7 @@ } } }, - "revision": "20220916", + "revision": "20220928", "rootUrl": "https://cloudbuild.googleapis.com/", "schemas": { "ApprovalConfig": { @@ -428,9 +428,23 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "MavenArtifact" + }, + "type": "array" + }, "objects": { "$ref": "ArtifactObjects", "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE." + }, + "pythonPackages": { + "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "PythonPackage" + }, + "type": "array" } }, "type": "object" @@ -1442,6 +1456,33 @@ }, "type": "object" }, + "MavenArtifact": { + "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.", + "id": "MavenArtifact", + "properties": { + "artifactId": { + "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "groupId": { + "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "path": { + "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.", + "type": "string" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + }, + "version": { + "description": "Maven `version` value used when uploading the artifact to Artifact Registry.", + "type": "string" + } + }, + "type": "object" + }, "NetworkConfig": { "description": "Network describes the network configuration for a `WorkerPool`.", "id": "NetworkConfig", @@ -1677,6 +1718,24 @@ }, "type": "object" }, + "PythonPackage": { + "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.", + "id": "PythonPackage", + "properties": { + "paths": { + "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and sometimes additionally an `.asc` file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + } + }, + "type": "object" + }, "RepoSource": { "description": "Location of the source in a Google Cloud Source Repository.", "id": "RepoSource", @@ -1753,10 +1812,24 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "Maven artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "UploadedMavenArtifact" + }, + "type": "array" + }, "numArtifacts": { "description": "Number of artifacts uploaded. Only populated when artifacts are uploaded.", "format": "int64", "type": "string" + }, + "pythonPackages": { + "description": "Python artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "UploadedPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -2119,6 +2192,46 @@ }, "type": "object" }, + "UploadedMavenArtifact": { + "description": "A Maven artifact uploaded using the MavenArtifact directive.", + "id": "UploadedMavenArtifact", + "properties": { + "fileHashes": { + "$ref": "FileHashes", + "description": "Hash types and values of the Maven Artifact." + }, + "pushTiming": { + "$ref": "TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, + "UploadedPythonPackage": { + "description": "Artifact uploaded using the PythonPackage directive.", + "id": "UploadedPythonPackage", + "properties": { + "fileHashes": { + "$ref": "FileHashes", + "description": "Hash types and values of the Python Artifact." + }, + "pushTiming": { + "$ref": "TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, "Volume": { "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", "id": "Volume", diff --git a/cloudbuild/v1beta1/cloudbuild-gen.go b/cloudbuild/v1beta1/cloudbuild-gen.go index c2e2d8516f8..6aa5b9a0b73 100644 --- a/cloudbuild/v1beta1/cloudbuild-gen.go +++ b/cloudbuild/v1beta1/cloudbuild-gen.go @@ -352,6 +352,14 @@ type Artifacts struct { // fail to be pushed, the build is marked FAILURE. Images []string `json:"images,omitempty"` + // MavenArtifacts: A list of Maven artifacts to be uploaded to Artifact + // Registry upon successful completion of all build steps. Artifacts in + // the workspace matching specified paths globs will be uploaded to the + // specified Artifact Registry repository using the builder service + // account's credentials. If any artifacts fail to be pushed, the build + // is marked FAILURE. + MavenArtifacts []*MavenArtifact `json:"mavenArtifacts,omitempty"` + // Objects: A list of objects to be uploaded to Cloud Storage upon // successful completion of all build steps. Files in the workspace // matching specified paths globs will be uploaded to the specified @@ -361,6 +369,12 @@ type Artifacts struct { // to be pushed, the build is marked FAILURE. Objects *ArtifactObjects `json:"objects,omitempty"` + // PythonPackages: A list of Python packages to be uploaded to Artifact + // Registry upon successful completion of all build steps. The build + // service account credentials will be used to perform the upload. If + // any objects fail to be pushed, the build is marked FAILURE. + PythonPackages []*PythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "Images") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1813,6 +1827,56 @@ func (s *ListWorkerPoolsResponse) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// MavenArtifact: A Maven artifact to upload to Artifact Registry upon +// successful completion of all build steps. +type MavenArtifact struct { + // ArtifactId: Maven `artifactId` value used when uploading the artifact + // to Artifact Registry. + ArtifactId string `json:"artifactId,omitempty"` + + // GroupId: Maven `groupId` value used when uploading the artifact to + // Artifact Registry. + GroupId string `json:"groupId,omitempty"` + + // Path: Path to an artifact in the build's workspace to be uploaded to + // Artifact Registry. This can be either an absolute path, e.g. + // /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path + // from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar. + Path string `json:"path,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" Artifact in the + // workspace specified by path will be uploaded to Artifact Registry + // with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // Version: Maven `version` value used when uploading the artifact to + // Artifact Registry. + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArtifactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArtifactId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *MavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod MavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // NetworkConfig: Network describes the network configuration for a // `WorkerPool`. type NetworkConfig struct { @@ -2252,6 +2316,44 @@ func (s *ProcessAppManifestCallbackOperationMetadata) MarshalJSON() ([]byte, err return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// PythonPackage: Python package to upload to Artifact Registry upon +// successful completion of all build steps. A package can encapsulate +// multiple objects to be uploaded to a single repository. +type PythonPackage struct { + // Paths: Path globs used to match files in the build's workspace. For + // Python/ Twine, this is usually `dist/*`, and sometimes additionally + // an `.asc` file. + Paths []string `json:"paths,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" Files in the + // workspace matching any path pattern will be uploaded to Artifact + // Registry with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Paths") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Paths") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *PythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod PythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // RepoSource: Location of the source in a Google Cloud Source // Repository. type RepoSource struct { @@ -2335,10 +2437,18 @@ type Results struct { // Images: Container images that were built as a part of the build. Images []*BuiltImage `json:"images,omitempty"` + // MavenArtifacts: Maven artifacts uploaded to Artifact Registry at the + // end of the build. + MavenArtifacts []*UploadedMavenArtifact `json:"mavenArtifacts,omitempty"` + // NumArtifacts: Number of artifacts uploaded. Only populated when // artifacts are uploaded. NumArtifacts int64 `json:"numArtifacts,omitempty,string"` + // PythonPackages: Python artifacts uploaded to Artifact Registry at the + // end of the build. + PythonPackages []*UploadedPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "ArtifactManifest") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -2993,6 +3103,78 @@ func (s *UpdateWorkerPoolOperationMetadata) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// UploadedMavenArtifact: A Maven artifact uploaded using the +// MavenArtifact directive. +type UploadedMavenArtifact struct { + // FileHashes: Hash types and values of the Maven Artifact. + FileHashes *FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadedMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod UploadedMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// UploadedPythonPackage: Artifact uploaded using the PythonPackage +// directive. +type UploadedPythonPackage struct { + // FileHashes: Hash types and values of the Python Artifact. + FileHashes *FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *UploadedPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod UploadedPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // Volume: Volume describes a Docker container volume which is mounted // into build steps in order to persist files across build step // execution. diff --git a/cloudidentity/v1beta1/cloudidentity-api.json b/cloudidentity/v1beta1/cloudidentity-api.json index 8053f295572..80f5a2ca830 100644 --- a/cloudidentity/v1beta1/cloudidentity-api.json +++ b/cloudidentity/v1beta1/cloudidentity-api.json @@ -1459,6 +1459,402 @@ } } }, + "inboundSamlSsoProfiles": { + "methods": { + "create": { + "description": "Creates an InboundSamlSsoProfile for a customer.", + "flatPath": "v1beta1/inboundSamlSsoProfiles", + "httpMethod": "POST", + "id": "cloudidentity.inboundSamlSsoProfiles.create", + "parameterOrder": [], + "parameters": {}, + "path": "v1beta1/inboundSamlSsoProfiles", + "request": { + "$ref": "InboundSamlSsoProfile" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes an InboundSamlSsoProfile.", + "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}", + "httpMethod": "DELETE", + "id": "cloudidentity.inboundSamlSsoProfiles.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}`", + "location": "path", + "pattern": "^inboundSamlSsoProfiles/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1beta1/{+name}", + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets an InboundSamlSsoProfile.", + "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}", + "httpMethod": "GET", + "id": "cloudidentity.inboundSamlSsoProfiles.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to get. Format: `inboundSamlSsoProfiles/{sso_profile_id}`", + "location": "path", + "pattern": "^inboundSamlSsoProfiles/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1beta1/{+name}", + "response": { + "$ref": "InboundSamlSsoProfile" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists InboundSamlSsoProfiles for a customer.", + "flatPath": "v1beta1/inboundSamlSsoProfiles", + "httpMethod": "GET", + "id": "cloudidentity.inboundSamlSsoProfiles.list", + "parameterOrder": [], + "parameters": { + "filter": { + "description": "A CEL expression to filter the results. The only currently-supported filter is filtering by customer. For example: `customer==customers/C0123abc`. Omitting the filter or specifying a filter of `customer==customers/my_customer` will return the profiles for the customer that the caller (authenticated user) belongs to.", + "location": "query", + "type": "string" + }, + "pageSize": { + "description": "The maximum number of InboundSamlSsoProfiles to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100, though requests with page_size greater than that will be silently interpreted as having this maximum value. This may increase in the futue.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "A page token, received from a previous `ListInboundSamlSsoProfiles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSamlSsoProfiles` must match the call that provided the page token.", + "location": "query", + "type": "string" + } + }, + "path": "v1beta1/inboundSamlSsoProfiles", + "response": { + "$ref": "ListInboundSamlSsoProfilesResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Updates an InboundSamlSsoProfile.", + "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}", + "httpMethod": "PATCH", + "id": "cloudidentity.inboundSamlSsoProfiles.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.", + "location": "path", + "pattern": "^inboundSamlSsoProfiles/[^/]+$", + "required": true, + "type": "string" + }, + "updateMask": { + "description": "Required. The list of fields to be updated.", + "format": "google-fieldmask", + "location": "query", + "type": "string" + } + }, + "path": "v1beta1/{+name}", + "request": { + "$ref": "InboundSamlSsoProfile" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + }, + "resources": { + "idpCredentials": { + "methods": { + "add": { + "description": "Adds an IdpCredential. Up to 2 credentials are allowed.", + "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials:add", + "httpMethod": "POST", + "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.add", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The InboundSamlSsoProfile that owns the IdpCredential. Format: `inboundSamlSsoProfiles/{sso_profile_id}`", + "location": "path", + "pattern": "^inboundSamlSsoProfiles/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1beta1/{+parent}/idpCredentials:add", + "request": { + "$ref": "AddIdpCredentialRequest" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes an IdpCredential.", + "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}", + "httpMethod": "DELETE", + "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`", + "location": "path", + "pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1beta1/{+name}", + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets an IdpCredential.", + "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}", + "httpMethod": "GET", + "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to retrieve. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`", + "location": "path", + "pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1beta1/{+name}", + "response": { + "$ref": "IdpCredential" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Returns a list of IdpCredentials in an InboundSamlSsoProfile.", + "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials", + "httpMethod": "GET", + "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.list", + "parameterOrder": [ + "parent" + ], + "parameters": { + "pageSize": { + "description": "The maximum number of `IdpCredential`s to return. The service may return fewer than this value.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "A page token, received from a previous `ListIdpCredentials` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListIdpCredentials` must match the call that provided the page token.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. The parent, which owns this collection of `IdpCredential`s. Format: `inboundSamlSsoProfiles/{sso_profile_id}`", + "location": "path", + "pattern": "^inboundSamlSsoProfiles/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1beta1/{+parent}/idpCredentials", + "response": { + "$ref": "ListIdpCredentialsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + } + } + }, + "inboundSsoAssignments": { + "methods": { + "create": { + "description": "Creates an InboundSsoAssignment for users and devices in a `Customer` under a given `Group` or `OrgUnit`.", + "flatPath": "v1beta1/inboundSsoAssignments", + "httpMethod": "POST", + "id": "cloudidentity.inboundSsoAssignments.create", + "parameterOrder": [], + "parameters": {}, + "path": "v1beta1/inboundSsoAssignments", + "request": { + "$ref": "InboundSsoAssignment" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes an InboundSsoAssignment. To disable SSO, Create (or Update) an assignment that has `sso_mode` == `SSO_OFF`.", + "flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}", + "httpMethod": "DELETE", + "id": "cloudidentity.inboundSsoAssignments.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to delete. Format: `inboundSsoAssignments/{assignment}`", + "location": "path", + "pattern": "^inboundSsoAssignments/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1beta1/{+name}", + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets an InboundSsoAssignment.", + "flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}", + "httpMethod": "GET", + "id": "cloudidentity.inboundSsoAssignments.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to fetch. Format: `inboundSsoAssignments/{assignment}`", + "location": "path", + "pattern": "^inboundSsoAssignments/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1beta1/{+name}", + "response": { + "$ref": "InboundSsoAssignment" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists the InboundSsoAssignments for a `Customer`.", + "flatPath": "v1beta1/inboundSsoAssignments", + "httpMethod": "GET", + "id": "cloudidentity.inboundSsoAssignments.list", + "parameterOrder": [], + "parameters": { + "filter": { + "description": "A CEL expression to filter the results. The only currently-supported filter is filtering by customer. For example: `customer==customers/C0123abc`. Omitting the filter or specifying a filter of `customer==customers/my_customer` will return the assignments for the customer that the caller (authenticated user) belongs to.", + "location": "query", + "type": "string" + }, + "pageSize": { + "description": "The maximum number of assignments to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100, though requests with page_size greater than that will be silently interpreted as having this maximum value. This may increase in the futue.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "A page token, received from a previous `ListInboundSsoAssignments` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSsoAssignments` must match the call that provided the page token.", + "location": "query", + "type": "string" + } + }, + "path": "v1beta1/inboundSsoAssignments", + "response": { + "$ref": "ListInboundSsoAssignmentsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Updates an InboundSsoAssignment. The body of this request is the `inbound_sso_assignment` field and the `update_mask` is relative to that. For example: a PATCH to `/v1beta1/inboundSsoAssignments/0abcdefg1234567\u0026update_mask=rank` with a body of `{ \"rank\": 1 }` moves that (presumably group-targeted) SSO assignment to the highest priority and shifts any other group-targeted assignments down in priority.", + "flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}", + "httpMethod": "PATCH", + "id": "cloudidentity.inboundSsoAssignments.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.", + "location": "path", + "pattern": "^inboundSsoAssignments/[^/]+$", + "required": true, + "type": "string" + }, + "updateMask": { + "description": "Required. The list of fields to be updated.", + "format": "google-fieldmask", + "location": "query", + "type": "string" + } + }, + "path": "v1beta1/{+name}", + "request": { + "$ref": "InboundSsoAssignment" + }, + "response": { + "$ref": "Operation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + }, "orgUnits": { "resources": { "memberships": { @@ -1536,9 +1932,26 @@ } } }, - "revision": "20220831", + "revision": "20221011", "rootUrl": "https://cloudidentity.googleapis.com/", "schemas": { + "AddIdpCredentialOperationMetadata": { + "description": "LRO response metadata for InboundSamlSsoProfilesService.AddIdpCredential.", + "id": "AddIdpCredentialOperationMetadata", + "properties": {}, + "type": "object" + }, + "AddIdpCredentialRequest": { + "description": "The request for creating an IdpCredential with its associated payload. An InboundSamlSsoProfile can own up to 2 credentials.", + "id": "AddIdpCredentialRequest", + "properties": { + "pemData": { + "description": "PEM encoded x509 certificate containing the public signing key.", + "type": "string" + } + }, + "type": "object" + }, "AndroidAttributes": { "description": "Resource representing the Android specific attributes of a Device.", "id": "AndroidAttributes", @@ -1859,6 +2272,18 @@ }, "type": "object" }, + "CreateInboundSamlSsoProfileOperationMetadata": { + "description": "LRO response metadata for InboundSamlSsoProfilesService.CreateInboundSamlSsoProfile.", + "id": "CreateInboundSamlSsoProfileOperationMetadata", + "properties": {}, + "type": "object" + }, + "CreateInboundSsoAssignmentOperationMetadata": { + "description": "LRO response metadata for InboundSsoAssignmentsService.CreateInboundSsoAssignment.", + "id": "CreateInboundSsoAssignmentOperationMetadata", + "properties": {}, + "type": "object" + }, "CustomAttributeValue": { "description": "Additional custom attribute values may be one of these types", "id": "CustomAttributeValue", @@ -1879,6 +2304,24 @@ }, "type": "object" }, + "DeleteIdpCredentialOperationMetadata": { + "description": "LRO response metadata for InboundSamlSsoProfilesService.DeleteIdpCredential.", + "id": "DeleteIdpCredentialOperationMetadata", + "properties": {}, + "type": "object" + }, + "DeleteInboundSamlSsoProfileOperationMetadata": { + "description": "LRO response metadata for InboundSamlSsoProfilesService.DeleteInboundSamlSsoProfile.", + "id": "DeleteInboundSamlSsoProfileOperationMetadata", + "properties": {}, + "type": "object" + }, + "DeleteInboundSsoAssignmentOperationMetadata": { + "description": "LRO response metadata for InboundSsoAssignmentsService.DeleteInboundSsoAssignment.", + "id": "DeleteInboundSsoAssignmentOperationMetadata", + "properties": {}, + "type": "object" + }, "Device": { "description": "A Device within the Cloud Identity Devices API. Represents a Device known to Google Cloud, independent of the device ownership, type, and whether it is assigned or in use by a user.", "id": "Device", @@ -2204,6 +2647,18 @@ }, "type": "object" }, + "DsaPublicKeyInfo": { + "description": "Information of a DSA public key.", + "id": "DsaPublicKeyInfo", + "properties": { + "keySize": { + "description": "Key size in bits (size of parameter P).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, "DynamicGroupMetadata": { "description": "Dynamic group metadata like queries and status.", "id": "DynamicGroupMetadata", @@ -3074,6 +3529,115 @@ }, "type": "object" }, + "IdpCredential": { + "description": "The identity provider's credentials (for signing assertions, etc).", + "id": "IdpCredential", + "properties": { + "dsaKeyInfo": { + "$ref": "DsaPublicKeyInfo", + "description": "Output only. Information of a DSA public key.", + "readOnly": true + }, + "name": { + "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the credential.", + "readOnly": true, + "type": "string" + }, + "rsaKeyInfo": { + "$ref": "RsaPublicKeyInfo", + "description": "Output only. Information of a RSA public key.", + "readOnly": true + }, + "updateTime": { + "description": "Output only. Time when the `IdpCredential` was last updated.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "InboundSamlSsoProfile": { + "description": "A [SAML 2.0](https://www.oasis-open.org/standards#samlv2.0) federation between a Google enterprise customer and a SAML identity provider.", + "id": "InboundSamlSsoProfile", + "properties": { + "customer": { + "description": "Immutable. The customer. For example: `customers/C0123abc`.", + "type": "string" + }, + "displayName": { + "description": "Human-readable name of the SAML SSO profile.", + "type": "string" + }, + "idpConfig": { + "$ref": "SamlIdpConfig", + "description": "SAML identity provider configuration." + }, + "name": { + "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.", + "readOnly": true, + "type": "string" + }, + "spConfig": { + "$ref": "SamlSpConfig", + "description": "SAML service provider configuration for this SAML SSO profile. These are the service provider details provided by Google that should be configured on the corresponding identity provider." + } + }, + "type": "object" + }, + "InboundSsoAssignment": { + "description": "Targets with \"set\" SSO assignments and their respective assignments.", + "id": "InboundSsoAssignment", + "properties": { + "customer": { + "description": "Immutable. The customer. For example: `customers/C0123abc`.", + "type": "string" + }, + "name": { + "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.", + "readOnly": true, + "type": "string" + }, + "rank": { + "description": "Must be zero (which is the default value so it can be omitted) for assignments with `target_org_unit` set and must be greater-than-or-equal-to one for assignments with `target_group` set.", + "format": "int32", + "type": "integer" + }, + "samlSsoInfo": { + "$ref": "SamlSsoInfo", + "description": "SAML SSO details. Must be set if and only if `sso_mode` is set to `SAML_SSO`." + }, + "signInBehavior": { + "$ref": "SignInBehavior", + "description": "Assertions about users assigned to an IdP will always be accepted from that IdP. This controls whether/when Google should redirect a user to the IdP. Unset (defaults) is the recommended configuration." + }, + "ssoMode": { + "description": "Inbound SSO behavior.", + "enum": [ + "SSO_MODE_UNSPECIFIED", + "SSO_OFF", + "SAML_SSO", + "DOMAIN_WIDE_SAML_IF_ENABLED" + ], + "enumDescriptions": [ + "Not allowed.", + "Disable SSO for the targeted users.", + "Use an external SAML Identity Provider for SSO for the targeted users.", + "Use the domain-wide SAML Identity Provider for the targeted users if one is configured; otherwise, this is equivalent to `SSO_OFF`. Note that this will also be equivalent to `SSO_OFF` if/when support for domain-wide SAML is removed. Google may disallow this mode at that point and existing assignments with this mode may be automatically changed to `SSO_OFF`." + ], + "type": "string" + }, + "targetGroup": { + "description": "Immutable. Must be of the form `groups/{group}`.", + "type": "string" + }, + "targetOrgUnit": { + "description": "Immutable. Must be of the form `orgUnits/{org_unit}`.", + "type": "string" + } + }, + "type": "object" + }, "IsInvitableUserResponse": { "description": "Response for IsInvitableUser RPC.", "id": "IsInvitableUserResponse", @@ -3157,6 +3721,60 @@ }, "type": "object" }, + "ListIdpCredentialsResponse": { + "description": "Response of the InboundSamlSsoProfilesService.ListIdpCredentials method.", + "id": "ListIdpCredentialsResponse", + "properties": { + "idpCredentials": { + "description": "The IdpCredentials from the specified InboundSamlSsoProfile.", + "items": { + "$ref": "IdpCredential" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", + "type": "string" + } + }, + "type": "object" + }, + "ListInboundSamlSsoProfilesResponse": { + "description": "Response of the InboundSamlSsoProfilesService.ListInboundSamlSsoProfiles method.", + "id": "ListInboundSamlSsoProfilesResponse", + "properties": { + "inboundSamlSsoProfiles": { + "description": "List of InboundSamlSsoProfiles.", + "items": { + "$ref": "InboundSamlSsoProfile" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", + "type": "string" + } + }, + "type": "object" + }, + "ListInboundSsoAssignmentsResponse": { + "description": "Response of the InboundSsoAssignmentsService.ListInboundSsoAssignments method.", + "id": "ListInboundSsoAssignmentsResponse", + "properties": { + "inboundSsoAssignments": { + "description": "The assignments.", + "items": { + "$ref": "InboundSsoAssignment" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", + "type": "string" + } + }, + "type": "object" + }, "ListMembershipsResponse": { "description": "The response message for MembershipsService.ListMemberships.", "id": "ListMembershipsResponse", @@ -3612,6 +4230,69 @@ }, "type": "object" }, + "RsaPublicKeyInfo": { + "description": "Information of a RSA public key.", + "id": "RsaPublicKeyInfo", + "properties": { + "keySize": { + "description": "Key size in bits (size of the modulus).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SamlIdpConfig": { + "description": "SAML IDP (identity provider) configuration.", + "id": "SamlIdpConfig", + "properties": { + "changePasswordUri": { + "description": "The **Change Password URL** of the identity provider. Users will be sent to this URL when changing their passwords at `myaccount.google.com`. This takes precedence over the change password URL configured at customer-level. Must use `HTTPS`.", + "type": "string" + }, + "entityId": { + "description": "Required. The SAML **Entity ID** of the identity provider.", + "type": "string" + }, + "logoutRedirectUri": { + "description": "The **Logout Redirect URL** (sign-out page URL) of the identity provider. When a user clicks the sign-out link on a Google page, they will be redirected to this URL. This is a pure redirect with no attached SAML `LogoutRequest` i.e. SAML single logout is currently not supported. Must use `HTTPS`.", + "type": "string" + }, + "singleSignOnServiceUri": { + "description": "Required. The `SingleSignOnService` endpoint location (sign-in page URL) of the identity provider. This is the URL where the `AuthnRequest` will be sent. Must use `HTTPS`. Currently assumed to accept the `HTTP-Redirect` binding.", + "type": "string" + } + }, + "type": "object" + }, + "SamlSpConfig": { + "description": "SAML SP (service provider) configuration.", + "id": "SamlSpConfig", + "properties": { + "assertionConsumerServiceUri": { + "description": "Output only. The SAML **Assertion Consumer Service (ACS) URL** to be used for the IDP-initiated login. Currently assumed to accept response messages via the `HTTP-POST` binding.", + "readOnly": true, + "type": "string" + }, + "entityId": { + "description": "Output only. The SAML **Entity ID** for this service provider.", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "SamlSsoInfo": { + "description": "Details that are applicable when `sso_mode` == `SAML_SSO`.", + "id": "SamlSsoInfo", + "properties": { + "inboundSamlSsoProfile": { + "description": "Required. Name of the `InboundSamlSsoProfile` to use. Must be of the form `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. ", + "type": "string" + } + }, + "type": "object" + }, "SearchGroupsResponse": { "description": "The response message for GroupsService.SearchGroups.", "id": "SearchGroupsResponse", @@ -3688,6 +4369,25 @@ "properties": {}, "type": "object" }, + "SignInBehavior": { + "description": "Controls sign-in behavior.", + "id": "SignInBehavior", + "properties": { + "redirectCondition": { + "description": "When to redirect sign-ins to the IdP.", + "enum": [ + "REDIRECT_CONDITION_UNSPECIFIED", + "NEVER" + ], + "enumDescriptions": [ + "Default and means \"always\"", + "Sign-in flows where the user is prompted for their identity will not redirect to the IdP (so the user will most likely be prompted by Google for a password), but special flows like IdP-initiated SAML and sign-in following automatic redirection to the IdP by domain-specific service URLs will accept the IdP's assertion of the user's identity." + ], + "type": "string" + } + }, + "type": "object" + }, "Status": { "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).", "id": "Status", @@ -3726,6 +4426,18 @@ }, "type": "object" }, + "UpdateInboundSamlSsoProfileOperationMetadata": { + "description": "LRO response metadata for InboundSamlSsoProfilesService.UpdateInboundSamlSsoProfile.", + "id": "UpdateInboundSamlSsoProfileOperationMetadata", + "properties": {}, + "type": "object" + }, + "UpdateInboundSsoAssignmentOperationMetadata": { + "description": "LRO response metadata for InboundSsoAssignmentsService.UpdateInboundSsoAssignment.", + "id": "UpdateInboundSsoAssignmentOperationMetadata", + "properties": {}, + "type": "object" + }, "UpdateMembershipRolesParams": { "description": "The details of an update to a `MembershipRole`.", "id": "UpdateMembershipRolesParams", diff --git a/cloudidentity/v1beta1/cloudidentity-gen.go b/cloudidentity/v1beta1/cloudidentity-gen.go index 96f5b594bb6..9b097721510 100644 --- a/cloudidentity/v1beta1/cloudidentity-gen.go +++ b/cloudidentity/v1beta1/cloudidentity-gen.go @@ -149,6 +149,8 @@ func New(client *http.Client) (*Service, error) { s.Customers = NewCustomersService(s) s.Devices = NewDevicesService(s) s.Groups = NewGroupsService(s) + s.InboundSamlSsoProfiles = NewInboundSamlSsoProfilesService(s) + s.InboundSsoAssignments = NewInboundSsoAssignmentsService(s) s.OrgUnits = NewOrgUnitsService(s) return s, nil } @@ -164,6 +166,10 @@ type Service struct { Groups *GroupsService + InboundSamlSsoProfiles *InboundSamlSsoProfilesService + + InboundSsoAssignments *InboundSsoAssignmentsService + OrgUnits *OrgUnitsService } @@ -249,6 +255,36 @@ type GroupsMembershipsService struct { s *Service } +func NewInboundSamlSsoProfilesService(s *Service) *InboundSamlSsoProfilesService { + rs := &InboundSamlSsoProfilesService{s: s} + rs.IdpCredentials = NewInboundSamlSsoProfilesIdpCredentialsService(s) + return rs +} + +type InboundSamlSsoProfilesService struct { + s *Service + + IdpCredentials *InboundSamlSsoProfilesIdpCredentialsService +} + +func NewInboundSamlSsoProfilesIdpCredentialsService(s *Service) *InboundSamlSsoProfilesIdpCredentialsService { + rs := &InboundSamlSsoProfilesIdpCredentialsService{s: s} + return rs +} + +type InboundSamlSsoProfilesIdpCredentialsService struct { + s *Service +} + +func NewInboundSsoAssignmentsService(s *Service) *InboundSsoAssignmentsService { + rs := &InboundSsoAssignmentsService{s: s} + return rs +} + +type InboundSsoAssignmentsService struct { + s *Service +} + func NewOrgUnitsService(s *Service) *OrgUnitsService { rs := &OrgUnitsService{s: s} rs.Memberships = NewOrgUnitsMembershipsService(s) @@ -270,6 +306,42 @@ type OrgUnitsMembershipsService struct { s *Service } +// AddIdpCredentialOperationMetadata: LRO response metadata for +// InboundSamlSsoProfilesService.AddIdpCredential. +type AddIdpCredentialOperationMetadata struct { +} + +// AddIdpCredentialRequest: The request for creating an IdpCredential +// with its associated payload. An InboundSamlSsoProfile can own up to 2 +// credentials. +type AddIdpCredentialRequest struct { + // PemData: PEM encoded x509 certificate containing the public signing + // key. + PemData string `json:"pemData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PemData") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PemData") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AddIdpCredentialRequest) MarshalJSON() ([]byte, error) { + type NoMethod AddIdpCredentialRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // AndroidAttributes: Resource representing the Android specific // attributes of a Device. type AndroidAttributes struct { @@ -737,6 +809,16 @@ func (s *CreateDeviceRequest) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// CreateInboundSamlSsoProfileOperationMetadata: LRO response metadata +// for InboundSamlSsoProfilesService.CreateInboundSamlSsoProfile. +type CreateInboundSamlSsoProfileOperationMetadata struct { +} + +// CreateInboundSsoAssignmentOperationMetadata: LRO response metadata +// for InboundSsoAssignmentsService.CreateInboundSsoAssignment. +type CreateInboundSsoAssignmentOperationMetadata struct { +} + // CustomAttributeValue: Additional custom attribute values may be one // of these types type CustomAttributeValue struct { @@ -786,6 +868,21 @@ func (s *CustomAttributeValue) UnmarshalJSON(data []byte) error { return nil } +// DeleteIdpCredentialOperationMetadata: LRO response metadata for +// InboundSamlSsoProfilesService.DeleteIdpCredential. +type DeleteIdpCredentialOperationMetadata struct { +} + +// DeleteInboundSamlSsoProfileOperationMetadata: LRO response metadata +// for InboundSamlSsoProfilesService.DeleteInboundSamlSsoProfile. +type DeleteInboundSamlSsoProfileOperationMetadata struct { +} + +// DeleteInboundSsoAssignmentOperationMetadata: LRO response metadata +// for InboundSsoAssignmentsService.DeleteInboundSsoAssignment. +type DeleteInboundSsoAssignmentOperationMetadata struct { +} + // Device: A Device within the Cloud Identity Devices API. Represents a // Device known to Google Cloud, independent of the device ownership, // type, and whether it is assigned or in use by a user. @@ -1064,6 +1161,34 @@ func (s *DeviceUser) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// DsaPublicKeyInfo: Information of a DSA public key. +type DsaPublicKeyInfo struct { + // KeySize: Key size in bits (size of parameter P). + KeySize int64 `json:"keySize,omitempty"` + + // ForceSendFields is a list of field names (e.g. "KeySize") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "KeySize") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DsaPublicKeyInfo) MarshalJSON() ([]byte, error) { + type NoMethod DsaPublicKeyInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // DynamicGroupMetadata: Dynamic group metadata like queries and status. type DynamicGroupMetadata struct { // Queries: Memberships will be the union of all queries. Only one entry @@ -2184,6 +2309,175 @@ func (s *GroupRelation) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// IdpCredential: The identity provider's credentials (for signing +// assertions, etc). +type IdpCredential struct { + // DsaKeyInfo: Output only. Information of a DSA public key. + DsaKeyInfo *DsaPublicKeyInfo `json:"dsaKeyInfo,omitempty"` + + // Name: Output only. Resource name + // (https://cloud.google.com/apis/design/resource_names) of the + // credential. + Name string `json:"name,omitempty"` + + // RsaKeyInfo: Output only. Information of a RSA public key. + RsaKeyInfo *RsaPublicKeyInfo `json:"rsaKeyInfo,omitempty"` + + // UpdateTime: Output only. Time when the `IdpCredential` was last + // updated. + UpdateTime string `json:"updateTime,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "DsaKeyInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DsaKeyInfo") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *IdpCredential) MarshalJSON() ([]byte, error) { + type NoMethod IdpCredential + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// InboundSamlSsoProfile: A SAML 2.0 +// (https://www.oasis-open.org/standards#samlv2.0) federation between a +// Google enterprise customer and a SAML identity provider. +type InboundSamlSsoProfile struct { + // Customer: Immutable. The customer. For example: `customers/C0123abc`. + Customer string `json:"customer,omitempty"` + + // DisplayName: Human-readable name of the SAML SSO profile. + DisplayName string `json:"displayName,omitempty"` + + // IdpConfig: SAML identity provider configuration. + IdpConfig *SamlIdpConfig `json:"idpConfig,omitempty"` + + // Name: Output only. Resource name + // (https://cloud.google.com/apis/design/resource_names) of the SAML SSO + // profile. + Name string `json:"name,omitempty"` + + // SpConfig: SAML service provider configuration for this SAML SSO + // profile. These are the service provider details provided by Google + // that should be configured on the corresponding identity provider. + SpConfig *SamlSpConfig `json:"spConfig,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Customer") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Customer") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *InboundSamlSsoProfile) MarshalJSON() ([]byte, error) { + type NoMethod InboundSamlSsoProfile + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// InboundSsoAssignment: Targets with "set" SSO assignments and their +// respective assignments. +type InboundSsoAssignment struct { + // Customer: Immutable. The customer. For example: `customers/C0123abc`. + Customer string `json:"customer,omitempty"` + + // Name: Output only. Resource name + // (https://cloud.google.com/apis/design/resource_names) of the Inbound + // SSO Assignment. + Name string `json:"name,omitempty"` + + // Rank: Must be zero (which is the default value so it can be omitted) + // for assignments with `target_org_unit` set and must be + // greater-than-or-equal-to one for assignments with `target_group` set. + Rank int64 `json:"rank,omitempty"` + + // SamlSsoInfo: SAML SSO details. Must be set if and only if `sso_mode` + // is set to `SAML_SSO`. + SamlSsoInfo *SamlSsoInfo `json:"samlSsoInfo,omitempty"` + + // SignInBehavior: Assertions about users assigned to an IdP will always + // be accepted from that IdP. This controls whether/when Google should + // redirect a user to the IdP. Unset (defaults) is the recommended + // configuration. + SignInBehavior *SignInBehavior `json:"signInBehavior,omitempty"` + + // SsoMode: Inbound SSO behavior. + // + // Possible values: + // "SSO_MODE_UNSPECIFIED" - Not allowed. + // "SSO_OFF" - Disable SSO for the targeted users. + // "SAML_SSO" - Use an external SAML Identity Provider for SSO for the + // targeted users. + // "DOMAIN_WIDE_SAML_IF_ENABLED" - Use the domain-wide SAML Identity + // Provider for the targeted users if one is configured; otherwise, this + // is equivalent to `SSO_OFF`. Note that this will also be equivalent to + // `SSO_OFF` if/when support for domain-wide SAML is removed. Google may + // disallow this mode at that point and existing assignments with this + // mode may be automatically changed to `SSO_OFF`. + SsoMode string `json:"ssoMode,omitempty"` + + // TargetGroup: Immutable. Must be of the form `groups/{group}`. + TargetGroup string `json:"targetGroup,omitempty"` + + // TargetOrgUnit: Immutable. Must be of the form `orgUnits/{org_unit}`. + TargetOrgUnit string `json:"targetOrgUnit,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Customer") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Customer") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *InboundSsoAssignment) MarshalJSON() ([]byte, error) { + type NoMethod InboundSsoAssignment + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // IsInvitableUserResponse: Response for IsInvitableUser RPC. type IsInvitableUserResponse struct { // IsInvitableUser: Returns true if the email address is invitable. @@ -2361,21 +2655,23 @@ func (s *ListGroupsResponse) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// ListMembershipsResponse: The response message for -// MembershipsService.ListMemberships. -type ListMembershipsResponse struct { - // Memberships: The `Membership`s under the specified `parent`. - Memberships []*Membership `json:"memberships,omitempty"` +// ListIdpCredentialsResponse: Response of the +// InboundSamlSsoProfilesService.ListIdpCredentials method. +type ListIdpCredentialsResponse struct { + // IdpCredentials: The IdpCredentials from the specified + // InboundSamlSsoProfile. + IdpCredentials []*IdpCredential `json:"idpCredentials,omitempty"` - // NextPageToken: A continuation token to retrieve the next page of - // results, or empty if there are no more results available. + // NextPageToken: A token, which can be sent as `page_token` to retrieve + // the next page. If this field is omitted, there are no subsequent + // pages. NextPageToken string `json:"nextPageToken,omitempty"` // ServerResponse contains the HTTP response code and headers from the // server. googleapi.ServerResponse `json:"-"` - // ForceSendFields is a list of field names (e.g. "Memberships") to + // ForceSendFields is a list of field names (e.g. "IdpCredentials") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any // non-pointer, non-interface field appearing in ForceSendFields will be @@ -2383,85 +2679,203 @@ type ListMembershipsResponse struct { // This may be used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "Memberships") to include - // in API requests with the JSON null value. By default, fields with - // empty values are omitted from API requests. However, any field with - // an empty value appearing in NullFields will be sent to the server as - // null. It is an error if a field in this list has a non-empty value. - // This may be used to include null fields in Patch requests. + // NullFields is a list of field names (e.g. "IdpCredentials") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. NullFields []string `json:"-"` } -func (s *ListMembershipsResponse) MarshalJSON() ([]byte, error) { - type NoMethod ListMembershipsResponse +func (s *ListIdpCredentialsResponse) MarshalJSON() ([]byte, error) { + type NoMethod ListIdpCredentialsResponse raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// ListOrgMembershipsResponse: The response message for -// OrgMembershipsService.ListOrgMemberships. -type ListOrgMembershipsResponse struct { +// ListInboundSamlSsoProfilesResponse: Response of the +// InboundSamlSsoProfilesService.ListInboundSamlSsoProfiles method. +type ListInboundSamlSsoProfilesResponse struct { + // InboundSamlSsoProfiles: List of InboundSamlSsoProfiles. + InboundSamlSsoProfiles []*InboundSamlSsoProfile `json:"inboundSamlSsoProfiles,omitempty"` + // NextPageToken: A token, which can be sent as `page_token` to retrieve - // the next page. If this field is empty, there are no subsequent pages. + // the next page. If this field is omitted, there are no subsequent + // pages. NextPageToken string `json:"nextPageToken,omitempty"` - // OrgMemberships: The non-vacuous membership in an orgUnit. - OrgMemberships []*OrgMembership `json:"orgMemberships,omitempty"` - // ServerResponse contains the HTTP response code and headers from the // server. googleapi.ServerResponse `json:"-"` - // ForceSendFields is a list of field names (e.g. "NextPageToken") to - // unconditionally include in API requests. By default, fields with - // empty or default values are omitted from API requests. However, any - // non-pointer, non-interface field appearing in ForceSendFields will be - // sent to the server regardless of whether the field is empty or not. - // This may be used to include empty fields in Patch requests. + // ForceSendFields is a list of field names (e.g. + // "InboundSamlSsoProfiles") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "NextPageToken") to include - // in API requests with the JSON null value. By default, fields with - // empty values are omitted from API requests. However, any field with - // an empty value appearing in NullFields will be sent to the server as - // null. It is an error if a field in this list has a non-empty value. - // This may be used to include null fields in Patch requests. + // NullFields is a list of field names (e.g. "InboundSamlSsoProfiles") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. NullFields []string `json:"-"` } -func (s *ListOrgMembershipsResponse) MarshalJSON() ([]byte, error) { - type NoMethod ListOrgMembershipsResponse +func (s *ListInboundSamlSsoProfilesResponse) MarshalJSON() ([]byte, error) { + type NoMethod ListInboundSamlSsoProfilesResponse raw := NoMethod(*s) return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// ListUserInvitationsResponse: Response message for UserInvitation -// listing request. -type ListUserInvitationsResponse struct { - // NextPageToken: The token for the next page. If not empty, indicates - // that there may be more `UserInvitation` resources that match the - // listing request; this value can be used in a subsequent - // ListUserInvitationsRequest to get continued results with the current - // list call. - NextPageToken string `json:"nextPageToken,omitempty"` +// ListInboundSsoAssignmentsResponse: Response of the +// InboundSsoAssignmentsService.ListInboundSsoAssignments method. +type ListInboundSsoAssignmentsResponse struct { + // InboundSsoAssignments: The assignments. + InboundSsoAssignments []*InboundSsoAssignment `json:"inboundSsoAssignments,omitempty"` - // UserInvitations: The list of UserInvitation resources. - UserInvitations []*UserInvitation `json:"userInvitations,omitempty"` + // NextPageToken: A token, which can be sent as `page_token` to retrieve + // the next page. If this field is omitted, there are no subsequent + // pages. + NextPageToken string `json:"nextPageToken,omitempty"` // ServerResponse contains the HTTP response code and headers from the // server. googleapi.ServerResponse `json:"-"` - // ForceSendFields is a list of field names (e.g. "NextPageToken") to - // unconditionally include in API requests. By default, fields with - // empty or default values are omitted from API requests. However, any - // non-pointer, non-interface field appearing in ForceSendFields will be - // sent to the server regardless of whether the field is empty or not. - // This may be used to include empty fields in Patch requests. + // ForceSendFields is a list of field names (e.g. + // "InboundSsoAssignments") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "NextPageToken") to include - // in API requests with the JSON null value. By default, fields with + // NullFields is a list of field names (e.g. "InboundSsoAssignments") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ListInboundSsoAssignmentsResponse) MarshalJSON() ([]byte, error) { + type NoMethod ListInboundSsoAssignmentsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListMembershipsResponse: The response message for +// MembershipsService.ListMemberships. +type ListMembershipsResponse struct { + // Memberships: The `Membership`s under the specified `parent`. + Memberships []*Membership `json:"memberships,omitempty"` + + // NextPageToken: A continuation token to retrieve the next page of + // results, or empty if there are no more results available. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Memberships") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Memberships") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListMembershipsResponse) MarshalJSON() ([]byte, error) { + type NoMethod ListMembershipsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListOrgMembershipsResponse: The response message for +// OrgMembershipsService.ListOrgMemberships. +type ListOrgMembershipsResponse struct { + // NextPageToken: A token, which can be sent as `page_token` to retrieve + // the next page. If this field is empty, there are no subsequent pages. + NextPageToken string `json:"nextPageToken,omitempty"` + + // OrgMemberships: The non-vacuous membership in an orgUnit. + OrgMemberships []*OrgMembership `json:"orgMemberships,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ListOrgMembershipsResponse) MarshalJSON() ([]byte, error) { + type NoMethod ListOrgMembershipsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ListUserInvitationsResponse: Response message for UserInvitation +// listing request. +type ListUserInvitationsResponse struct { + // NextPageToken: The token for the next page. If not empty, indicates + // that there may be more `UserInvitation` resources that match the + // listing request; this value can be used in a subsequent + // ListUserInvitationsRequest to get continued results with the current + // list call. + NextPageToken string `json:"nextPageToken,omitempty"` + + // UserInvitations: The list of UserInvitation resources. + UserInvitations []*UserInvitation `json:"userInvitations,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with // empty values are omitted from API requests. However, any field with // an empty value appearing in NullFields will be sent to the server as // null. It is an error if a field in this list has a non-empty value. @@ -3224,6 +3638,152 @@ func (s *RestrictionEvaluations) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// RsaPublicKeyInfo: Information of a RSA public key. +type RsaPublicKeyInfo struct { + // KeySize: Key size in bits (size of the modulus). + KeySize int64 `json:"keySize,omitempty"` + + // ForceSendFields is a list of field names (e.g. "KeySize") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "KeySize") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *RsaPublicKeyInfo) MarshalJSON() ([]byte, error) { + type NoMethod RsaPublicKeyInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SamlIdpConfig: SAML IDP (identity provider) configuration. +type SamlIdpConfig struct { + // ChangePasswordUri: The **Change Password URL** of the identity + // provider. Users will be sent to this URL when changing their + // passwords at `myaccount.google.com`. This takes precedence over the + // change password URL configured at customer-level. Must use `HTTPS`. + ChangePasswordUri string `json:"changePasswordUri,omitempty"` + + // EntityId: Required. The SAML **Entity ID** of the identity provider. + EntityId string `json:"entityId,omitempty"` + + // LogoutRedirectUri: The **Logout Redirect URL** (sign-out page URL) of + // the identity provider. When a user clicks the sign-out link on a + // Google page, they will be redirected to this URL. This is a pure + // redirect with no attached SAML `LogoutRequest` i.e. SAML single + // logout is currently not supported. Must use `HTTPS`. + LogoutRedirectUri string `json:"logoutRedirectUri,omitempty"` + + // SingleSignOnServiceUri: Required. The `SingleSignOnService` endpoint + // location (sign-in page URL) of the identity provider. This is the URL + // where the `AuthnRequest` will be sent. Must use `HTTPS`. Currently + // assumed to accept the `HTTP-Redirect` binding. + SingleSignOnServiceUri string `json:"singleSignOnServiceUri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChangePasswordUri") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChangePasswordUri") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *SamlIdpConfig) MarshalJSON() ([]byte, error) { + type NoMethod SamlIdpConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SamlSpConfig: SAML SP (service provider) configuration. +type SamlSpConfig struct { + // AssertionConsumerServiceUri: Output only. The SAML **Assertion + // Consumer Service (ACS) URL** to be used for the IDP-initiated login. + // Currently assumed to accept response messages via the `HTTP-POST` + // binding. + AssertionConsumerServiceUri string `json:"assertionConsumerServiceUri,omitempty"` + + // EntityId: Output only. The SAML **Entity ID** for this service + // provider. + EntityId string `json:"entityId,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AssertionConsumerServiceUri") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AssertionConsumerServiceUri") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *SamlSpConfig) MarshalJSON() ([]byte, error) { + type NoMethod SamlSpConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// SamlSsoInfo: Details that are applicable when `sso_mode` == +// `SAML_SSO`. +type SamlSsoInfo struct { + // InboundSamlSsoProfile: Required. Name of the `InboundSamlSsoProfile` + // to use. Must be of the form + // `inboundSamlSsoProfiles/{inbound_saml_sso_profile}`. + InboundSamlSsoProfile string `json:"inboundSamlSsoProfile,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "InboundSamlSsoProfile") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "InboundSamlSsoProfile") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *SamlSsoInfo) MarshalJSON() ([]byte, error) { + type NoMethod SamlSsoInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // SearchGroupsResponse: The response message for // GroupsService.SearchGroups. type SearchGroupsResponse struct { @@ -3377,6 +3937,44 @@ func (s *SecuritySettings) MarshalJSON() ([]byte, error) { type SendUserInvitationRequest struct { } +// SignInBehavior: Controls sign-in behavior. +type SignInBehavior struct { + // RedirectCondition: When to redirect sign-ins to the IdP. + // + // Possible values: + // "REDIRECT_CONDITION_UNSPECIFIED" - Default and means "always" + // "NEVER" - Sign-in flows where the user is prompted for their + // identity will not redirect to the IdP (so the user will most likely + // be prompted by Google for a password), but special flows like + // IdP-initiated SAML and sign-in following automatic redirection to the + // IdP by domain-specific service URLs will accept the IdP's assertion + // of the user's identity. + RedirectCondition string `json:"redirectCondition,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RedirectCondition") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RedirectCondition") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *SignInBehavior) MarshalJSON() ([]byte, error) { + type NoMethod SignInBehavior + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // Status: The `Status` type defines a logical error model that is // suitable for different programming environments, including REST APIs // and RPC APIs. It is used by gRPC (https://github.com/grpc). Each @@ -3451,6 +4049,16 @@ func (s *TransitiveMembershipRole) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// UpdateInboundSamlSsoProfileOperationMetadata: LRO response metadata +// for InboundSamlSsoProfilesService.UpdateInboundSamlSsoProfile. +type UpdateInboundSamlSsoProfileOperationMetadata struct { +} + +// UpdateInboundSsoAssignmentOperationMetadata: LRO response metadata +// for InboundSsoAssignmentsService.UpdateInboundSsoAssignment. +type UpdateInboundSsoAssignmentOperationMetadata struct { +} + // UpdateMembershipRolesParams: The details of an update to a // `MembershipRole`. type UpdateMembershipRolesParams struct { @@ -10437,6 +11045,2174 @@ func (c *GroupsMembershipsSearchTransitiveMembershipsCall) Pages(ctx context.Con } } +// method id "cloudidentity.inboundSamlSsoProfiles.create": + +type InboundSamlSsoProfilesCreateCall struct { + s *Service + inboundsamlssoprofile *InboundSamlSsoProfile + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates an InboundSamlSsoProfile for a customer. +func (r *InboundSamlSsoProfilesService) Create(inboundsamlssoprofile *InboundSamlSsoProfile) *InboundSamlSsoProfilesCreateCall { + c := &InboundSamlSsoProfilesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.inboundsamlssoprofile = inboundsamlssoprofile + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesCreateCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesCreateCall) Context(ctx context.Context) *InboundSamlSsoProfilesCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.inboundsamlssoprofile) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/inboundSamlSsoProfiles") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.create" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *InboundSamlSsoProfilesCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates an InboundSamlSsoProfile for a customer.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles", + // "httpMethod": "POST", + // "id": "cloudidentity.inboundSamlSsoProfiles.create", + // "parameterOrder": [], + // "parameters": {}, + // "path": "v1beta1/inboundSamlSsoProfiles", + // "request": { + // "$ref": "InboundSamlSsoProfile" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSamlSsoProfiles.delete": + +type InboundSamlSsoProfilesDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes an InboundSamlSsoProfile. +// +// - name: The resource name +// (https://cloud.google.com/apis/design/resource_names) of the +// InboundSamlSsoProfile to delete. Format: +// `inboundSamlSsoProfiles/{sso_profile_id}`. +func (r *InboundSamlSsoProfilesService) Delete(name string) *InboundSamlSsoProfilesDeleteCall { + c := &InboundSamlSsoProfilesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesDeleteCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesDeleteCall) Context(ctx context.Context) *InboundSamlSsoProfilesDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("DELETE", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *InboundSamlSsoProfilesDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes an InboundSamlSsoProfile.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}", + // "httpMethod": "DELETE", + // "id": "cloudidentity.inboundSamlSsoProfiles.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}`", + // "location": "path", + // "pattern": "^inboundSamlSsoProfiles/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSamlSsoProfiles.get": + +type InboundSamlSsoProfilesGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets an InboundSamlSsoProfile. +// +// - name: The resource name +// (https://cloud.google.com/apis/design/resource_names) of the +// InboundSamlSsoProfile to get. Format: +// `inboundSamlSsoProfiles/{sso_profile_id}`. +func (r *InboundSamlSsoProfilesService) Get(name string) *InboundSamlSsoProfilesGetCall { + c := &InboundSamlSsoProfilesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesGetCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *InboundSamlSsoProfilesGetCall) IfNoneMatch(entityTag string) *InboundSamlSsoProfilesGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesGetCall) Context(ctx context.Context) *InboundSamlSsoProfilesGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.get" call. +// Exactly one of *InboundSamlSsoProfile or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *InboundSamlSsoProfile.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *InboundSamlSsoProfilesGetCall) Do(opts ...googleapi.CallOption) (*InboundSamlSsoProfile, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &InboundSamlSsoProfile{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets an InboundSamlSsoProfile.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}", + // "httpMethod": "GET", + // "id": "cloudidentity.inboundSamlSsoProfiles.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSamlSsoProfile to get. Format: `inboundSamlSsoProfiles/{sso_profile_id}`", + // "location": "path", + // "pattern": "^inboundSamlSsoProfiles/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "InboundSamlSsoProfile" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSamlSsoProfiles.list": + +type InboundSamlSsoProfilesListCall struct { + s *Service + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists InboundSamlSsoProfiles for a customer. +func (r *InboundSamlSsoProfilesService) List() *InboundSamlSsoProfilesListCall { + c := &InboundSamlSsoProfilesListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + return c +} + +// Filter sets the optional parameter "filter": A CEL expression to +// filter the results. The only currently-supported filter is filtering +// by customer. For example: `customer==customers/C0123abc`. Omitting +// the filter or specifying a filter of +// `customer==customers/my_customer` will return the profiles for the +// customer that the caller (authenticated user) belongs to. +func (c *InboundSamlSsoProfilesListCall) Filter(filter string) *InboundSamlSsoProfilesListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// PageSize sets the optional parameter "pageSize": The maximum number +// of InboundSamlSsoProfiles to return. The service may return fewer +// than this value. If omitted (or defaulted to zero) the server will +// use a sensible default. This default may change over time. The +// maximum allowed value is 100, though requests with page_size greater +// than that will be silently interpreted as having this maximum value. +// This may increase in the futue. +func (c *InboundSamlSsoProfilesListCall) PageSize(pageSize int64) *InboundSamlSsoProfilesListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": A page token, +// received from a previous `ListInboundSamlSsoProfiles` call. Provide +// this to retrieve the subsequent page. When paginating, all other +// parameters provided to `ListInboundSamlSsoProfiles` must match the +// call that provided the page token. +func (c *InboundSamlSsoProfilesListCall) PageToken(pageToken string) *InboundSamlSsoProfilesListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesListCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *InboundSamlSsoProfilesListCall) IfNoneMatch(entityTag string) *InboundSamlSsoProfilesListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesListCall) Context(ctx context.Context) *InboundSamlSsoProfilesListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/inboundSamlSsoProfiles") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.list" call. +// Exactly one of *ListInboundSamlSsoProfilesResponse or error will be +// non-nil. Any non-2xx status code is an error. Response headers are in +// either *ListInboundSamlSsoProfilesResponse.ServerResponse.Header or +// (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *InboundSamlSsoProfilesListCall) Do(opts ...googleapi.CallOption) (*ListInboundSamlSsoProfilesResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListInboundSamlSsoProfilesResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists InboundSamlSsoProfiles for a customer.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles", + // "httpMethod": "GET", + // "id": "cloudidentity.inboundSamlSsoProfiles.list", + // "parameterOrder": [], + // "parameters": { + // "filter": { + // "description": "A CEL expression to filter the results. The only currently-supported filter is filtering by customer. For example: `customer==customers/C0123abc`. Omitting the filter or specifying a filter of `customer==customers/my_customer` will return the profiles for the customer that the caller (authenticated user) belongs to.", + // "location": "query", + // "type": "string" + // }, + // "pageSize": { + // "description": "The maximum number of InboundSamlSsoProfiles to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100, though requests with page_size greater than that will be silently interpreted as having this maximum value. This may increase in the futue.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "A page token, received from a previous `ListInboundSamlSsoProfiles` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSamlSsoProfiles` must match the call that provided the page token.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/inboundSamlSsoProfiles", + // "response": { + // "$ref": "ListInboundSamlSsoProfilesResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *InboundSamlSsoProfilesListCall) Pages(ctx context.Context, f func(*ListInboundSamlSsoProfilesResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "cloudidentity.inboundSamlSsoProfiles.patch": + +type InboundSamlSsoProfilesPatchCall struct { + s *Service + name string + inboundsamlssoprofile *InboundSamlSsoProfile + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates an InboundSamlSsoProfile. +// +// - name: Output only. Resource name +// (https://cloud.google.com/apis/design/resource_names) of the SAML +// SSO profile. +func (r *InboundSamlSsoProfilesService) Patch(name string, inboundsamlssoprofile *InboundSamlSsoProfile) *InboundSamlSsoProfilesPatchCall { + c := &InboundSamlSsoProfilesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.inboundsamlssoprofile = inboundsamlssoprofile + return c +} + +// UpdateMask sets the optional parameter "updateMask": Required. The +// list of fields to be updated. +func (c *InboundSamlSsoProfilesPatchCall) UpdateMask(updateMask string) *InboundSamlSsoProfilesPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesPatchCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesPatchCall) Context(ctx context.Context) *InboundSamlSsoProfilesPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.inboundsamlssoprofile) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("PATCH", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.patch" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *InboundSamlSsoProfilesPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates an InboundSamlSsoProfile.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}", + // "httpMethod": "PATCH", + // "id": "cloudidentity.inboundSamlSsoProfiles.patch", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the SAML SSO profile.", + // "location": "path", + // "pattern": "^inboundSamlSsoProfiles/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "Required. The list of fields to be updated.", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "request": { + // "$ref": "InboundSamlSsoProfile" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSamlSsoProfiles.idpCredentials.add": + +type InboundSamlSsoProfilesIdpCredentialsAddCall struct { + s *Service + parent string + addidpcredentialrequest *AddIdpCredentialRequest + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Add: Adds an IdpCredential. Up to 2 credentials are allowed. +// +// - parent: The InboundSamlSsoProfile that owns the IdpCredential. +// Format: `inboundSamlSsoProfiles/{sso_profile_id}`. +func (r *InboundSamlSsoProfilesIdpCredentialsService) Add(parent string, addidpcredentialrequest *AddIdpCredentialRequest) *InboundSamlSsoProfilesIdpCredentialsAddCall { + c := &InboundSamlSsoProfilesIdpCredentialsAddCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + c.addidpcredentialrequest = addidpcredentialrequest + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesIdpCredentialsAddCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesIdpCredentialsAddCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesIdpCredentialsAddCall) Context(ctx context.Context) *InboundSamlSsoProfilesIdpCredentialsAddCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesIdpCredentialsAddCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesIdpCredentialsAddCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.addidpcredentialrequest) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/idpCredentials:add") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.idpCredentials.add" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *InboundSamlSsoProfilesIdpCredentialsAddCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Adds an IdpCredential. Up to 2 credentials are allowed.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials:add", + // "httpMethod": "POST", + // "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.add", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "parent": { + // "description": "Required. The InboundSamlSsoProfile that owns the IdpCredential. Format: `inboundSamlSsoProfiles/{sso_profile_id}`", + // "location": "path", + // "pattern": "^inboundSamlSsoProfiles/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+parent}/idpCredentials:add", + // "request": { + // "$ref": "AddIdpCredentialRequest" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSamlSsoProfiles.idpCredentials.delete": + +type InboundSamlSsoProfilesIdpCredentialsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes an IdpCredential. +// +// - name: The resource name +// (https://cloud.google.com/apis/design/resource_names) of the +// IdpCredential to delete. Format: +// `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credent +// ial_id}`. +func (r *InboundSamlSsoProfilesIdpCredentialsService) Delete(name string) *InboundSamlSsoProfilesIdpCredentialsDeleteCall { + c := &InboundSamlSsoProfilesIdpCredentialsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesIdpCredentialsDeleteCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesIdpCredentialsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesIdpCredentialsDeleteCall) Context(ctx context.Context) *InboundSamlSsoProfilesIdpCredentialsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesIdpCredentialsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesIdpCredentialsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("DELETE", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.idpCredentials.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *InboundSamlSsoProfilesIdpCredentialsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes an IdpCredential.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}", + // "httpMethod": "DELETE", + // "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to delete. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`", + // "location": "path", + // "pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSamlSsoProfiles.idpCredentials.get": + +type InboundSamlSsoProfilesIdpCredentialsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets an IdpCredential. +// +// - name: The resource name +// (https://cloud.google.com/apis/design/resource_names) of the +// IdpCredential to retrieve. Format: +// `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credent +// ial_id}`. +func (r *InboundSamlSsoProfilesIdpCredentialsService) Get(name string) *InboundSamlSsoProfilesIdpCredentialsGetCall { + c := &InboundSamlSsoProfilesIdpCredentialsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesIdpCredentialsGetCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesIdpCredentialsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *InboundSamlSsoProfilesIdpCredentialsGetCall) IfNoneMatch(entityTag string) *InboundSamlSsoProfilesIdpCredentialsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesIdpCredentialsGetCall) Context(ctx context.Context) *InboundSamlSsoProfilesIdpCredentialsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesIdpCredentialsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesIdpCredentialsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.idpCredentials.get" call. +// Exactly one of *IdpCredential or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *IdpCredential.ServerResponse.Header or (if a response was returned +// at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *InboundSamlSsoProfilesIdpCredentialsGetCall) Do(opts ...googleapi.CallOption) (*IdpCredential, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &IdpCredential{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets an IdpCredential.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials/{idpCredentialsId}", + // "httpMethod": "GET", + // "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the IdpCredential to retrieve. Format: `inboundSamlSsoProfiles/{sso_profile_id}/idpCredentials/{idp_credential_id}`", + // "location": "path", + // "pattern": "^inboundSamlSsoProfiles/[^/]+/idpCredentials/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "IdpCredential" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSamlSsoProfiles.idpCredentials.list": + +type InboundSamlSsoProfilesIdpCredentialsListCall struct { + s *Service + parent string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Returns a list of IdpCredentials in an InboundSamlSsoProfile. +// +// - parent: The parent, which owns this collection of `IdpCredential`s. +// Format: `inboundSamlSsoProfiles/{sso_profile_id}`. +func (r *InboundSamlSsoProfilesIdpCredentialsService) List(parent string) *InboundSamlSsoProfilesIdpCredentialsListCall { + c := &InboundSamlSsoProfilesIdpCredentialsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.parent = parent + return c +} + +// PageSize sets the optional parameter "pageSize": The maximum number +// of `IdpCredential`s to return. The service may return fewer than this +// value. +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) PageSize(pageSize int64) *InboundSamlSsoProfilesIdpCredentialsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": A page token, +// received from a previous `ListIdpCredentials` call. Provide this to +// retrieve the subsequent page. When paginating, all other parameters +// provided to `ListIdpCredentials` must match the call that provided +// the page token. +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) PageToken(pageToken string) *InboundSamlSsoProfilesIdpCredentialsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) Fields(s ...googleapi.Field) *InboundSamlSsoProfilesIdpCredentialsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) IfNoneMatch(entityTag string) *InboundSamlSsoProfilesIdpCredentialsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) Context(ctx context.Context) *InboundSamlSsoProfilesIdpCredentialsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+parent}/idpCredentials") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "parent": c.parent, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSamlSsoProfiles.idpCredentials.list" call. +// Exactly one of *ListIdpCredentialsResponse or error will be non-nil. +// Any non-2xx status code is an error. Response headers are in either +// *ListIdpCredentialsResponse.ServerResponse.Header or (if a response +// was returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) Do(opts ...googleapi.CallOption) (*ListIdpCredentialsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListIdpCredentialsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Returns a list of IdpCredentials in an InboundSamlSsoProfile.", + // "flatPath": "v1beta1/inboundSamlSsoProfiles/{inboundSamlSsoProfilesId}/idpCredentials", + // "httpMethod": "GET", + // "id": "cloudidentity.inboundSamlSsoProfiles.idpCredentials.list", + // "parameterOrder": [ + // "parent" + // ], + // "parameters": { + // "pageSize": { + // "description": "The maximum number of `IdpCredential`s to return. The service may return fewer than this value.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "A page token, received from a previous `ListIdpCredentials` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListIdpCredentials` must match the call that provided the page token.", + // "location": "query", + // "type": "string" + // }, + // "parent": { + // "description": "Required. The parent, which owns this collection of `IdpCredential`s. Format: `inboundSamlSsoProfiles/{sso_profile_id}`", + // "location": "path", + // "pattern": "^inboundSamlSsoProfiles/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+parent}/idpCredentials", + // "response": { + // "$ref": "ListIdpCredentialsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *InboundSamlSsoProfilesIdpCredentialsListCall) Pages(ctx context.Context, f func(*ListIdpCredentialsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "cloudidentity.inboundSsoAssignments.create": + +type InboundSsoAssignmentsCreateCall struct { + s *Service + inboundssoassignment *InboundSsoAssignment + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Create: Creates an InboundSsoAssignment for users and devices in a +// `Customer` under a given `Group` or `OrgUnit`. +func (r *InboundSsoAssignmentsService) Create(inboundssoassignment *InboundSsoAssignment) *InboundSsoAssignmentsCreateCall { + c := &InboundSsoAssignmentsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.inboundssoassignment = inboundssoassignment + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSsoAssignmentsCreateCall) Fields(s ...googleapi.Field) *InboundSsoAssignmentsCreateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSsoAssignmentsCreateCall) Context(ctx context.Context) *InboundSsoAssignmentsCreateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSsoAssignmentsCreateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSsoAssignmentsCreateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.inboundssoassignment) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/inboundSsoAssignments") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSsoAssignments.create" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *InboundSsoAssignmentsCreateCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Creates an InboundSsoAssignment for users and devices in a `Customer` under a given `Group` or `OrgUnit`.", + // "flatPath": "v1beta1/inboundSsoAssignments", + // "httpMethod": "POST", + // "id": "cloudidentity.inboundSsoAssignments.create", + // "parameterOrder": [], + // "parameters": {}, + // "path": "v1beta1/inboundSsoAssignments", + // "request": { + // "$ref": "InboundSsoAssignment" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSsoAssignments.delete": + +type InboundSsoAssignmentsDeleteCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Delete: Deletes an InboundSsoAssignment. To disable SSO, Create (or +// Update) an assignment that has `sso_mode` == `SSO_OFF`. +// +// - name: The resource name +// (https://cloud.google.com/apis/design/resource_names) of the +// InboundSsoAssignment to delete. Format: +// `inboundSsoAssignments/{assignment}`. +func (r *InboundSsoAssignmentsService) Delete(name string) *InboundSsoAssignmentsDeleteCall { + c := &InboundSsoAssignmentsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSsoAssignmentsDeleteCall) Fields(s ...googleapi.Field) *InboundSsoAssignmentsDeleteCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSsoAssignmentsDeleteCall) Context(ctx context.Context) *InboundSsoAssignmentsDeleteCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSsoAssignmentsDeleteCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSsoAssignmentsDeleteCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("DELETE", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSsoAssignments.delete" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *InboundSsoAssignmentsDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Deletes an InboundSsoAssignment. To disable SSO, Create (or Update) an assignment that has `sso_mode` == `SSO_OFF`.", + // "flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}", + // "httpMethod": "DELETE", + // "id": "cloudidentity.inboundSsoAssignments.delete", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to delete. Format: `inboundSsoAssignments/{assignment}`", + // "location": "path", + // "pattern": "^inboundSsoAssignments/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSsoAssignments.get": + +type InboundSsoAssignmentsGetCall struct { + s *Service + name string + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// Get: Gets an InboundSsoAssignment. +// +// - name: The resource name +// (https://cloud.google.com/apis/design/resource_names) of the +// InboundSsoAssignment to fetch. Format: +// `inboundSsoAssignments/{assignment}`. +func (r *InboundSsoAssignmentsService) Get(name string) *InboundSsoAssignmentsGetCall { + c := &InboundSsoAssignmentsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSsoAssignmentsGetCall) Fields(s ...googleapi.Field) *InboundSsoAssignmentsGetCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *InboundSsoAssignmentsGetCall) IfNoneMatch(entityTag string) *InboundSsoAssignmentsGetCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSsoAssignmentsGetCall) Context(ctx context.Context) *InboundSsoAssignmentsGetCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSsoAssignmentsGetCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSsoAssignmentsGetCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSsoAssignments.get" call. +// Exactly one of *InboundSsoAssignment or error will be non-nil. Any +// non-2xx status code is an error. Response headers are in either +// *InboundSsoAssignment.ServerResponse.Header or (if a response was +// returned at all) in error.(*googleapi.Error).Header. Use +// googleapi.IsNotModified to check whether the returned error was +// because http.StatusNotModified was returned. +func (c *InboundSsoAssignmentsGetCall) Do(opts ...googleapi.CallOption) (*InboundSsoAssignment, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &InboundSsoAssignment{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Gets an InboundSsoAssignment.", + // "flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}", + // "httpMethod": "GET", + // "id": "cloudidentity.inboundSsoAssignments.get", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Required. The [resource name](https://cloud.google.com/apis/design/resource_names) of the InboundSsoAssignment to fetch. Format: `inboundSsoAssignments/{assignment}`", + // "location": "path", + // "pattern": "^inboundSsoAssignments/[^/]+$", + // "required": true, + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "response": { + // "$ref": "InboundSsoAssignment" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// method id "cloudidentity.inboundSsoAssignments.list": + +type InboundSsoAssignmentsListCall struct { + s *Service + urlParams_ gensupport.URLParams + ifNoneMatch_ string + ctx_ context.Context + header_ http.Header +} + +// List: Lists the InboundSsoAssignments for a `Customer`. +func (r *InboundSsoAssignmentsService) List() *InboundSsoAssignmentsListCall { + c := &InboundSsoAssignmentsListCall{s: r.s, urlParams_: make(gensupport.URLParams)} + return c +} + +// Filter sets the optional parameter "filter": A CEL expression to +// filter the results. The only currently-supported filter is filtering +// by customer. For example: `customer==customers/C0123abc`. Omitting +// the filter or specifying a filter of +// `customer==customers/my_customer` will return the assignments for the +// customer that the caller (authenticated user) belongs to. +func (c *InboundSsoAssignmentsListCall) Filter(filter string) *InboundSsoAssignmentsListCall { + c.urlParams_.Set("filter", filter) + return c +} + +// PageSize sets the optional parameter "pageSize": The maximum number +// of assignments to return. The service may return fewer than this +// value. If omitted (or defaulted to zero) the server will use a +// sensible default. This default may change over time. The maximum +// allowed value is 100, though requests with page_size greater than +// that will be silently interpreted as having this maximum value. This +// may increase in the futue. +func (c *InboundSsoAssignmentsListCall) PageSize(pageSize int64) *InboundSsoAssignmentsListCall { + c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) + return c +} + +// PageToken sets the optional parameter "pageToken": A page token, +// received from a previous `ListInboundSsoAssignments` call. Provide +// this to retrieve the subsequent page. When paginating, all other +// parameters provided to `ListInboundSsoAssignments` must match the +// call that provided the page token. +func (c *InboundSsoAssignmentsListCall) PageToken(pageToken string) *InboundSsoAssignmentsListCall { + c.urlParams_.Set("pageToken", pageToken) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSsoAssignmentsListCall) Fields(s ...googleapi.Field) *InboundSsoAssignmentsListCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// IfNoneMatch sets the optional parameter which makes the operation +// fail if the object's ETag matches the given value. This is useful for +// getting updates only after the object has changed since the last +// request. Use googleapi.IsNotModified to check whether the response +// error from Do is the result of In-None-Match. +func (c *InboundSsoAssignmentsListCall) IfNoneMatch(entityTag string) *InboundSsoAssignmentsListCall { + c.ifNoneMatch_ = entityTag + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSsoAssignmentsListCall) Context(ctx context.Context) *InboundSsoAssignmentsListCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSsoAssignmentsListCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSsoAssignmentsListCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + if c.ifNoneMatch_ != "" { + reqHeaders.Set("If-None-Match", c.ifNoneMatch_) + } + var body io.Reader = nil + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/inboundSsoAssignments") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("GET", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSsoAssignments.list" call. +// Exactly one of *ListInboundSsoAssignmentsResponse or error will be +// non-nil. Any non-2xx status code is an error. Response headers are in +// either *ListInboundSsoAssignmentsResponse.ServerResponse.Header or +// (if a response was returned at all) in +// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check +// whether the returned error was because http.StatusNotModified was +// returned. +func (c *InboundSsoAssignmentsListCall) Do(opts ...googleapi.CallOption) (*ListInboundSsoAssignmentsResponse, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &ListInboundSsoAssignmentsResponse{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Lists the InboundSsoAssignments for a `Customer`.", + // "flatPath": "v1beta1/inboundSsoAssignments", + // "httpMethod": "GET", + // "id": "cloudidentity.inboundSsoAssignments.list", + // "parameterOrder": [], + // "parameters": { + // "filter": { + // "description": "A CEL expression to filter the results. The only currently-supported filter is filtering by customer. For example: `customer==customers/C0123abc`. Omitting the filter or specifying a filter of `customer==customers/my_customer` will return the assignments for the customer that the caller (authenticated user) belongs to.", + // "location": "query", + // "type": "string" + // }, + // "pageSize": { + // "description": "The maximum number of assignments to return. The service may return fewer than this value. If omitted (or defaulted to zero) the server will use a sensible default. This default may change over time. The maximum allowed value is 100, though requests with page_size greater than that will be silently interpreted as having this maximum value. This may increase in the futue.", + // "format": "int32", + // "location": "query", + // "type": "integer" + // }, + // "pageToken": { + // "description": "A page token, received from a previous `ListInboundSsoAssignments` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListInboundSsoAssignments` must match the call that provided the page token.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/inboundSsoAssignments", + // "response": { + // "$ref": "ListInboundSsoAssignmentsResponse" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + +// Pages invokes f for each page of results. +// A non-nil error returned from f will halt the iteration. +// The provided context supersedes any context provided to the Context method. +func (c *InboundSsoAssignmentsListCall) Pages(ctx context.Context, f func(*ListInboundSsoAssignmentsResponse) error) error { + c.ctx_ = ctx + defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point + for { + x, err := c.Do() + if err != nil { + return err + } + if err := f(x); err != nil { + return err + } + if x.NextPageToken == "" { + return nil + } + c.PageToken(x.NextPageToken) + } +} + +// method id "cloudidentity.inboundSsoAssignments.patch": + +type InboundSsoAssignmentsPatchCall struct { + s *Service + name string + inboundssoassignment *InboundSsoAssignment + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Patch: Updates an InboundSsoAssignment. The body of this request is +// the `inbound_sso_assignment` field and the `update_mask` is relative +// to that. For example: a PATCH to +// `/v1beta1/inboundSsoAssignments/0abcdefg1234567&update_mask=rank` +// with a body of `{ "rank": 1 }` moves that (presumably group-targeted) +// SSO assignment to the highest priority and shifts any other +// group-targeted assignments down in priority. +// +// - name: Output only. Resource name +// (https://cloud.google.com/apis/design/resource_names) of the +// Inbound SSO Assignment. +func (r *InboundSsoAssignmentsService) Patch(name string, inboundssoassignment *InboundSsoAssignment) *InboundSsoAssignmentsPatchCall { + c := &InboundSsoAssignmentsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.name = name + c.inboundssoassignment = inboundssoassignment + return c +} + +// UpdateMask sets the optional parameter "updateMask": Required. The +// list of fields to be updated. +func (c *InboundSsoAssignmentsPatchCall) UpdateMask(updateMask string) *InboundSsoAssignmentsPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *InboundSsoAssignmentsPatchCall) Fields(s ...googleapi.Field) *InboundSsoAssignmentsPatchCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *InboundSsoAssignmentsPatchCall) Context(ctx context.Context) *InboundSsoAssignmentsPatchCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *InboundSsoAssignmentsPatchCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *InboundSsoAssignmentsPatchCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.inboundssoassignment) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "v1beta1/{+name}") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("PATCH", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + googleapi.Expand(req.URL, map[string]string{ + "name": c.name, + }) + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudidentity.inboundSsoAssignments.patch" call. +// Exactly one of *Operation or error will be non-nil. Any non-2xx +// status code is an error. Response headers are in either +// *Operation.ServerResponse.Header or (if a response was returned at +// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified +// to check whether the returned error was because +// http.StatusNotModified was returned. +func (c *InboundSsoAssignmentsPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Operation{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Updates an InboundSsoAssignment. The body of this request is the `inbound_sso_assignment` field and the `update_mask` is relative to that. For example: a PATCH to `/v1beta1/inboundSsoAssignments/0abcdefg1234567\u0026update_mask=rank` with a body of `{ \"rank\": 1 }` moves that (presumably group-targeted) SSO assignment to the highest priority and shifts any other group-targeted assignments down in priority.", + // "flatPath": "v1beta1/inboundSsoAssignments/{inboundSsoAssignmentsId}", + // "httpMethod": "PATCH", + // "id": "cloudidentity.inboundSsoAssignments.patch", + // "parameterOrder": [ + // "name" + // ], + // "parameters": { + // "name": { + // "description": "Output only. [Resource name](https://cloud.google.com/apis/design/resource_names) of the Inbound SSO Assignment.", + // "location": "path", + // "pattern": "^inboundSsoAssignments/[^/]+$", + // "required": true, + // "type": "string" + // }, + // "updateMask": { + // "description": "Required. The list of fields to be updated.", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "v1beta1/{+name}", + // "request": { + // "$ref": "InboundSsoAssignment" + // }, + // "response": { + // "$ref": "Operation" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + // method id "cloudidentity.orgUnits.memberships.list": type OrgUnitsMembershipsListCall struct { diff --git a/cloudiot/v1/cloudiot-api.json b/cloudiot/v1/cloudiot-api.json index bdc7195afed..f20396b7cad 100644 --- a/cloudiot/v1/cloudiot-api.json +++ b/cloudiot/v1/cloudiot-api.json @@ -938,7 +938,7 @@ } } }, - "revision": "20220822", + "revision": "20220920", "rootUrl": "https://cloudiot.googleapis.com/", "schemas": { "BindDeviceToGatewayRequest": { @@ -971,7 +971,7 @@ "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)." }, "members": { - "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. ", + "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. ", "items": { "type": "string" }, diff --git a/cloudiot/v1/cloudiot-gen.go b/cloudiot/v1/cloudiot-gen.go index 673a5c94999..d65c2306d04 100644 --- a/cloudiot/v1/cloudiot-gen.go +++ b/cloudiot/v1/cloudiot-gen.go @@ -296,11 +296,12 @@ type Binding struct { // `allUsers`: A special identifier that represents anyone who is on the // internet; with or without a Google account. * // `allAuthenticatedUsers`: A special identifier that represents anyone - // who is authenticated with a Google account or a service account. * - // `user:{emailid}`: An email address that represents a specific Google - // account. For example, `alice@example.com` . * - // `serviceAccount:{emailid}`: An email address that represents a Google - // service account. For example, + // who is authenticated with a Google account or a service account. Does + // not include identities that come from external identity providers + // (IdPs) through identity federation. * `user:{emailid}`: An email + // address that represents a specific Google account. For example, + // `alice@example.com` . * `serviceAccount:{emailid}`: An email address + // that represents a Google service account. For example, // `my-other-app@appspot.gserviceaccount.com`. * // `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: // An identifier for a Kubernetes service account diff --git a/cloudresourcemanager/v3/cloudresourcemanager-api.json b/cloudresourcemanager/v3/cloudresourcemanager-api.json index 84b6cb857ab..a94ee1d66c7 100644 --- a/cloudresourcemanager/v3/cloudresourcemanager-api.json +++ b/cloudresourcemanager/v3/cloudresourcemanager-api.json @@ -1129,13 +1129,13 @@ "parameterOrder": [], "parameters": { "pageSize": { - "description": "Optional. The maximum number of TagBindings to return in the response. The server allows a maximum of 300 TagBindings to return. If unspecified, the server will use 100 as the default. Currently this api returns unpaginated response and `page_size` is ignored.", + "description": "Optional. The maximum number of TagBindings to return in the response. The server allows a maximum of 300 TagBindings to return. If unspecified, the server will use 100 as the default.", "format": "int32", "location": "query", "type": "integer" }, "pageToken": { - "description": "Optional. A pagination token returned from a previous call to `ListTagBindings` that indicates where this listing should continue from. Currently this api returns unpaginated response and `page_token` is ignored.", + "description": "Optional. A pagination token returned from a previous call to `ListTagBindings` that indicates where this listing should continue from.", "location": "query", "type": "string" }, @@ -1760,7 +1760,7 @@ } } }, - "revision": "20220911", + "revision": "20220925", "rootUrl": "https://cloudresourcemanager.googleapis.com/", "schemas": { "AuditConfig": { diff --git a/cloudresourcemanager/v3/cloudresourcemanager-gen.go b/cloudresourcemanager/v3/cloudresourcemanager-gen.go index f13686cbb9c..f0feae773d4 100644 --- a/cloudresourcemanager/v3/cloudresourcemanager-gen.go +++ b/cloudresourcemanager/v3/cloudresourcemanager-gen.go @@ -8072,8 +8072,7 @@ func (r *TagBindingsService) List() *TagBindingsListCall { // PageSize sets the optional parameter "pageSize": The maximum number // of TagBindings to return in the response. The server allows a maximum // of 300 TagBindings to return. If unspecified, the server will use 100 -// as the default. Currently this api returns unpaginated response and -// `page_size` is ignored. +// as the default. func (c *TagBindingsListCall) PageSize(pageSize int64) *TagBindingsListCall { c.urlParams_.Set("pageSize", fmt.Sprint(pageSize)) return c @@ -8081,8 +8080,7 @@ func (c *TagBindingsListCall) PageSize(pageSize int64) *TagBindingsListCall { // PageToken sets the optional parameter "pageToken": A pagination token // returned from a previous call to `ListTagBindings` that indicates -// where this listing should continue from. Currently this api returns -// unpaginated response and `page_token` is ignored. +// where this listing should continue from. func (c *TagBindingsListCall) PageToken(pageToken string) *TagBindingsListCall { c.urlParams_.Set("pageToken", pageToken) return c @@ -8200,13 +8198,13 @@ func (c *TagBindingsListCall) Do(opts ...googleapi.CallOption) (*ListTagBindings // "parameterOrder": [], // "parameters": { // "pageSize": { - // "description": "Optional. The maximum number of TagBindings to return in the response. The server allows a maximum of 300 TagBindings to return. If unspecified, the server will use 100 as the default. Currently this api returns unpaginated response and `page_size` is ignored.", + // "description": "Optional. The maximum number of TagBindings to return in the response. The server allows a maximum of 300 TagBindings to return. If unspecified, the server will use 100 as the default.", // "format": "int32", // "location": "query", // "type": "integer" // }, // "pageToken": { - // "description": "Optional. A pagination token returned from a previous call to `ListTagBindings` that indicates where this listing should continue from. Currently this api returns unpaginated response and `page_token` is ignored.", + // "description": "Optional. A pagination token returned from a previous call to `ListTagBindings` that indicates where this listing should continue from.", // "location": "query", // "type": "string" // }, diff --git a/cloudsearch/v1/cloudsearch-api.json b/cloudsearch/v1/cloudsearch-api.json index a4fc608160c..f6c23f93ac0 100644 --- a/cloudsearch/v1/cloudsearch-api.json +++ b/cloudsearch/v1/cloudsearch-api.json @@ -1213,6 +1213,12 @@ "pattern": "^datasources/[^/]+$", "required": true, "type": "string" + }, + "updateMask": { + "description": "Update mask to control which fields to update. If update_mask is non-empty then only the fields specified in the update_mask are updated. If you specify a field in the update_mask, but don't specify its value in the source that field will be cleared. If the update_mask is not present or empty or has the value * then all fields will be updated. Some example field paths: name, display_name", + "format": "google-fieldmask", + "location": "query", + "type": "string" } }, "path": "v1/settings/{+name}", @@ -1395,6 +1401,12 @@ "pattern": "^searchapplications/[^/]+$", "required": true, "type": "string" + }, + "updateMask": { + "description": "Update mask to control which fields to update. If update_mask is non-empty then only the fields specified in the update_mask are updated. If you specify a field in the update_mask, but don't specify its value in the search_application then that field will be cleared. If the update_mask is not present or empty or has the value * then all fields will be updated. Some example field paths: search_application.name, search_application.display_name", + "format": "google-fieldmask", + "location": "query", + "type": "string" } }, "path": "v1/settings/{+name}", @@ -1455,6 +1467,12 @@ "pattern": "^searchapplications/[^/]+$", "required": true, "type": "string" + }, + "updateMask": { + "description": "Update mask to control which fields to update. If update_mask is non-empty then only the fields specified in the update_mask are updated. If you specify a field in the update_mask, but don't specify its value in the search_application then that field will be cleared. If the update_mask is not present or empty or has the value * then all fields will be updated. Some example field paths: search_application.name, search_application.display_name", + "format": "google-fieldmask", + "location": "query", + "type": "string" } }, "path": "v1/settings/{+name}", @@ -2059,7 +2077,7 @@ } } }, - "revision": "20220920", + "revision": "20220927", "rootUrl": "https://cloudsearch.googleapis.com/", "schemas": { "AbuseReportingConfig": { @@ -5606,10 +5624,6 @@ "description": "Indicates whether the present lock is currently on or off.", "type": "boolean" }, - "projectDinoEnabled": { - "description": "Indicates whether project Dino is currently on or off. WARNING: This is currently an experimental field. It should not be used without getting an explicit review and approval from the Meet team.", - "type": "boolean" - }, "reactionsLock": { "description": "Indicates whether the reactions lock is currently on or off.", "type": "boolean" @@ -11439,7 +11453,7 @@ ], "enumDescriptions": [ "Unspecified state for QuotedByState.", - "State to indicate that this message is quoted by another message (excluding soft-deleted message and purged ones).", + "State to indicate that this message is quoted by another message (excluding purged message).", "State to indicate that this message are not quoted by another message." ], "readOnly": true, @@ -12926,11 +12940,23 @@ "readOnly": true, "type": "string" }, + "createTimeMicros": { + "description": "Output only. Time when the quoted message was posted in microseconds.", + "format": "int64", + "readOnly": true, + "type": "string" + }, "creatorId": { "$ref": "UserId", "description": "Output only. ID of the User who posted the quoted message. This includes information to identify if the quoted message was posted by an App on behalf of a user.", "readOnly": true }, + "lastEditTimeMicros": { + "description": "Output only. Time when the quoted message was last edited by a user at the time when quoting action happens. Time is in microseconds.", + "format": "int64", + "readOnly": true, + "type": "string" + }, "lastUpdateTimeWhenQuotedMicros": { "description": "The `last_update_time` of the original message when the client initiated the quote creation. This is derived from the request payload passed from clients. Used to fetch the quoted message contents at a specific time on the read path. This field is populated from storage directly.", "format": "int64", @@ -12967,8 +12993,13 @@ "readOnly": true, "type": "string" }, + "updaterId": { + "$ref": "UserId", + "description": "Output only. ID of the User who last updated (created/edited/deleted) the quoted message at the time when quoting action happens. This includes information to identify if the quoted message was posted by an App on behalf of a user.", + "readOnly": true + }, "uploadMetadata": { - "description": "Output only. Upload metadata of the quoted message. NEXT TAG: 11", + "description": "Output only. Upload metadata of the quoted message.", "items": { "$ref": "UploadMetadata" }, @@ -15206,6 +15237,11 @@ }, "source": { "$ref": "DataSource" + }, + "updateMask": { + "description": "Update mask to control which fields to update. If update_mask is non-empty then only the fields specified in the update_mask are updated. If you specify a field in the update_mask, but don't specify its value in the source that field will be cleared. If the update_mask is not present or empty or has the value * then all fields will be updated. Some example field paths: name, display_name", + "format": "google-fieldmask", + "type": "string" } }, "type": "object" @@ -15555,7 +15591,7 @@ "id": "UserInfo", "properties": { "driveNotificationAvatarUrl": { - "description": "Avatar url of the user who triggered the Drive Notification email. This field will be populated if we can extract such information from the Drive Notification email. This should only be used to fetch user avatars when updater_to_show_email is not populated. This field is not set for non-Drive Notification items. This is not the actual sender of the email, as the sender is always comments-noreply@docs.google.com.", + "description": "Avatar url of the user who triggered the Drive Notification email. This field will be populated if we can extract such information from the Drive Notification email. This should only be used to fetch user avatars when updater_to_show_email is not populated. This field is not set for non-Drive Notification items.", "type": "string" }, "updaterCountDisplayType": { @@ -15589,7 +15625,7 @@ "type": "string" }, "updaterToShowName": { - "description": "The display name of the updater for clients to show used for Gmail items. For non-Drive Notification items, this field will always be populated. If the display name cannot be found for the user, the fallback string will be the email address. For Drive Notification items, this is the email of the user who triggered the Drive notification email. This field will be populated if we can extract such information from the Drive Notification email. This is not the actual sender of the email, as the sender is always comments-noreply@docs.google.com.", + "description": "The display name of the updater for clients to show used for Gmail items. For non-Drive Notification items, this field will always be populated. If the display name cannot be found for the user, the fallback string will be the email address. For Drive Notification items, this is the name of the user who triggered the Drive notification email. This field will be populated if we can extract such information from the Drive Notification email. If the name cannot be extracted, then the email will be the fallback string, which is used as the display name text in the UI when needed. This is not the actual sender of the email, as the sender is always comments-noreply@docs.google.com.", "type": "string" }, "updaterToShowUserId": { diff --git a/cloudsearch/v1/cloudsearch-gen.go b/cloudsearch/v1/cloudsearch-gen.go index b3640d6f617..29bba901e30 100644 --- a/cloudsearch/v1/cloudsearch-gen.go +++ b/cloudsearch/v1/cloudsearch-gen.go @@ -5821,12 +5821,6 @@ type CallSettings struct { // off. PresentLock bool `json:"presentLock,omitempty"` - // ProjectDinoEnabled: Indicates whether project Dino is currently on or - // off. WARNING: This is currently an experimental field. It should not - // be used without getting an explicit review and approval from the Meet - // team. - ProjectDinoEnabled bool `json:"projectDinoEnabled,omitempty"` - // ReactionsLock: Indicates whether the reactions lock is currently on // or off. ReactionsLock bool `json:"reactionsLock,omitempty"` @@ -14380,8 +14374,7 @@ type Message struct { // "QUOTED_BY_STATE_UNSPECIFIED" - Unspecified state for // QuotedByState. // "QUOTED_BY_STATE_HAS_BEEN_QUOTED" - State to indicate that this - // message is quoted by another message (excluding soft-deleted message - // and purged ones). + // message is quoted by another message (excluding purged message). // "QUOTED_BY_STATE_HAS_NOT_BEEN_QUOTED" - State to indicate that this // message are not quoted by another message. QuotedByState string `json:"quotedByState,omitempty"` @@ -16666,11 +16659,20 @@ type QuotedMessageMetadata struct { // "BOT_ATTACHMENT_STATE_NO_BOT_ATTACHMENT" BotAttachmentState string `json:"botAttachmentState,omitempty"` + // CreateTimeMicros: Output only. Time when the quoted message was + // posted in microseconds. + CreateTimeMicros int64 `json:"createTimeMicros,omitempty,string"` + // CreatorId: Output only. ID of the User who posted the quoted message. // This includes information to identify if the quoted message was // posted by an App on behalf of a user. CreatorId *UserId `json:"creatorId,omitempty"` + // LastEditTimeMicros: Output only. Time when the quoted message was + // last edited by a user at the time when quoting action happens. Time + // is in microseconds. + LastEditTimeMicros int64 `json:"lastEditTimeMicros,omitempty,string"` + // LastUpdateTimeWhenQuotedMicros: The `last_update_time` of the // original message when the client initiated the quote creation. This // is derived from the request payload passed from clients. Used to @@ -16707,8 +16709,13 @@ type QuotedMessageMetadata struct { // message. TextBody string `json:"textBody,omitempty"` + // UpdaterId: Output only. ID of the User who last updated + // (created/edited/deleted) the quoted message at the time when quoting + // action happens. This includes information to identify if the quoted + // message was posted by an App on behalf of a user. + UpdaterId *UserId `json:"updaterId,omitempty"` + // UploadMetadata: Output only. Upload metadata of the quoted message. - // NEXT TAG: 11 UploadMetadata []*UploadMetadata `json:"uploadMetadata,omitempty"` // ForceSendFields is a list of field names (e.g. "Annotations") to @@ -20593,6 +20600,15 @@ type UpdateDataSourceRequest struct { Source *DataSource `json:"source,omitempty"` + // UpdateMask: Update mask to control which fields to update. If + // update_mask is non-empty then only the fields specified in the + // update_mask are updated. If you specify a field in the update_mask, + // but don't specify its value in the source that field will be cleared. + // If the update_mask is not present or empty or has the value * then + // all fields will be updated. Some example field paths: name, + // display_name + UpdateMask string `json:"updateMask,omitempty"` + // ForceSendFields is a list of field names (e.g. "DebugOptions") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -21080,8 +21096,7 @@ type UserInfo struct { // extract such information from the Drive Notification email. This // should only be used to fetch user avatars when updater_to_show_email // is not populated. This field is not set for non-Drive Notification - // items. This is not the actual sender of the email, as the sender is - // always comments-noreply@docs.google.com. + // items. DriveNotificationAvatarUrl string `json:"driveNotificationAvatarUrl,omitempty"` // UpdaterCountDisplayType: Describes how updater_count_to_show should @@ -21123,9 +21138,11 @@ type UserInfo struct { // show used for Gmail items. For non-Drive Notification items, this // field will always be populated. If the display name cannot be found // for the user, the fallback string will be the email address. For - // Drive Notification items, this is the email of the user who triggered + // Drive Notification items, this is the name of the user who triggered // the Drive notification email. This field will be populated if we can - // extract such information from the Drive Notification email. This is + // extract such information from the Drive Notification email. If the + // name cannot be extracted, then the email will be the fallback string, + // which is used as the display name text in the UI when needed. This is // not the actual sender of the email, as the sender is always // comments-noreply@docs.google.com. UpdaterToShowName string `json:"updaterToShowName,omitempty"` @@ -26945,6 +26962,18 @@ func (c *SettingsDatasourcesPatchCall) DebugOptionsEnableDebugging(debugOptionsE return c } +// UpdateMask sets the optional parameter "updateMask": Update mask to +// control which fields to update. If update_mask is non-empty then only +// the fields specified in the update_mask are updated. If you specify a +// field in the update_mask, but don't specify its value in the source +// that field will be cleared. If the update_mask is not present or +// empty or has the value * then all fields will be updated. Some +// example field paths: name, display_name +func (c *SettingsDatasourcesPatchCall) UpdateMask(updateMask string) *SettingsDatasourcesPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + // Fields allows partial responses to be retrieved. See // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse // for more information. @@ -27055,6 +27084,12 @@ func (c *SettingsDatasourcesPatchCall) Do(opts ...googleapi.CallOption) (*Operat // "pattern": "^datasources/[^/]+$", // "required": true, // "type": "string" + // }, + // "updateMask": { + // "description": "Update mask to control which fields to update. If update_mask is non-empty then only the fields specified in the update_mask are updated. If you specify a field in the update_mask, but don't specify its value in the source that field will be cleared. If the update_mask is not present or empty or has the value * then all fields will be updated. Some example field paths: name, display_name", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" // } // }, // "path": "v1/settings/{+name}", @@ -27876,6 +27911,19 @@ func (r *SettingsSearchapplicationsService) Patch(name string, searchapplication return c } +// UpdateMask sets the optional parameter "updateMask": Update mask to +// control which fields to update. If update_mask is non-empty then only +// the fields specified in the update_mask are updated. If you specify a +// field in the update_mask, but don't specify its value in the +// search_application then that field will be cleared. If the +// update_mask is not present or empty or has the value * then all +// fields will be updated. Some example field paths: +// search_application.name, search_application.display_name +func (c *SettingsSearchapplicationsPatchCall) UpdateMask(updateMask string) *SettingsSearchapplicationsPatchCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + // Fields allows partial responses to be retrieved. See // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse // for more information. @@ -27981,6 +28029,12 @@ func (c *SettingsSearchapplicationsPatchCall) Do(opts ...googleapi.CallOption) ( // "pattern": "^searchapplications/[^/]+$", // "required": true, // "type": "string" + // }, + // "updateMask": { + // "description": "Update mask to control which fields to update. If update_mask is non-empty then only the fields specified in the update_mask are updated. If you specify a field in the update_mask, but don't specify its value in the search_application then that field will be cleared. If the update_mask is not present or empty or has the value * then all fields will be updated. Some example field paths: search_application.name, search_application.display_name", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" // } // }, // "path": "v1/settings/{+name}", @@ -28169,6 +28223,19 @@ func (r *SettingsSearchapplicationsService) Update(name string, searchapplicatio return c } +// UpdateMask sets the optional parameter "updateMask": Update mask to +// control which fields to update. If update_mask is non-empty then only +// the fields specified in the update_mask are updated. If you specify a +// field in the update_mask, but don't specify its value in the +// search_application then that field will be cleared. If the +// update_mask is not present or empty or has the value * then all +// fields will be updated. Some example field paths: +// search_application.name, search_application.display_name +func (c *SettingsSearchapplicationsUpdateCall) UpdateMask(updateMask string) *SettingsSearchapplicationsUpdateCall { + c.urlParams_.Set("updateMask", updateMask) + return c +} + // Fields allows partial responses to be retrieved. See // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse // for more information. @@ -28274,6 +28341,12 @@ func (c *SettingsSearchapplicationsUpdateCall) Do(opts ...googleapi.CallOption) // "pattern": "^searchapplications/[^/]+$", // "required": true, // "type": "string" + // }, + // "updateMask": { + // "description": "Update mask to control which fields to update. If update_mask is non-empty then only the fields specified in the update_mask are updated. If you specify a field in the update_mask, but don't specify its value in the search_application then that field will be cleared. If the update_mask is not present or empty or has the value * then all fields will be updated. Some example field paths: search_application.name, search_application.display_name", + // "format": "google-fieldmask", + // "location": "query", + // "type": "string" // } // }, // "path": "v1/settings/{+name}", diff --git a/cloudtasks/v2beta2/cloudtasks-api.json b/cloudtasks/v2beta2/cloudtasks-api.json index dc1907348c1..8a3a60257f9 100644 --- a/cloudtasks/v2beta2/cloudtasks-api.json +++ b/cloudtasks/v2beta2/cloudtasks-api.json @@ -105,6 +105,38 @@ }, "protocol": "rest", "resources": { + "api": { + "resources": { + "queue": { + "methods": { + "update": { + "description": "Update queue list by uploading a queue.yaml file. The queue.yaml file is supplied in the request body as a YAML encoded string. This method was added to support gcloud clients versions before 322.0.0. New clients should use CreateQueue instead of this method.", + "flatPath": "api/queue/update", + "httpMethod": "POST", + "id": "cloudtasks.api.queue.update", + "parameterOrder": [], + "parameters": { + "appId": { + "description": "Required. The App ID is supplied as an HTTP parameter. Unlike internal usage of App ID, it does not include a region prefix. Rather, the App ID represents the Project ID against which to make the request.", + "location": "query", + "type": "string" + } + }, + "path": "api/queue/update", + "request": { + "$ref": "HttpBody" + }, + "response": { + "$ref": "Empty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + } + } + }, "projects": { "resources": { "locations": { @@ -844,7 +876,7 @@ } } }, - "revision": "20220914", + "revision": "20220923", "rootUrl": "https://cloudtasks.googleapis.com/", "schemas": { "AcknowledgeTaskRequest": { @@ -993,7 +1025,7 @@ "type": "object" }, "BufferTaskRequest": { - "description": "Request message for BufferTask.", + "description": "LINT.IfChange Request message for BufferTask.", "id": "BufferTaskRequest", "properties": { "body": { diff --git a/cloudtasks/v2beta2/cloudtasks-gen.go b/cloudtasks/v2beta2/cloudtasks-gen.go index 7b2b54af578..5f0f15923f3 100644 --- a/cloudtasks/v2beta2/cloudtasks-gen.go +++ b/cloudtasks/v2beta2/cloudtasks-gen.go @@ -120,6 +120,7 @@ func New(client *http.Client) (*Service, error) { return nil, errors.New("client is nil") } s := &Service{client: client, BasePath: basePath} + s.Api = NewApiService(s) s.Projects = NewProjectsService(s) return s, nil } @@ -129,6 +130,8 @@ type Service struct { BasePath string // API endpoint base URL UserAgent string // optional additional User-Agent fragment + Api *ApiService + Projects *ProjectsService } @@ -139,6 +142,27 @@ func (s *Service) userAgent() string { return googleapi.UserAgent + " " + s.UserAgent } +func NewApiService(s *Service) *ApiService { + rs := &ApiService{s: s} + rs.Queue = NewApiQueueService(s) + return rs +} + +type ApiService struct { + s *Service + + Queue *ApiQueueService +} + +func NewApiQueueService(s *Service) *ApiQueueService { + rs := &ApiQueueService{s: s} + return rs +} + +type ApiQueueService struct { + s *Service +} + func NewProjectsService(s *Service) *ProjectsService { rs := &ProjectsService{s: s} rs.Locations = NewProjectsLocationsService(s) @@ -603,7 +627,7 @@ func (s *Binding) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } -// BufferTaskRequest: Request message for BufferTask. +// BufferTaskRequest: LINT.IfChange Request message for BufferTask. type BufferTaskRequest struct { // Body: Optional. Body of the HTTP request. The body can take any // generic value. The value is written to the HttpRequest of the [Task]. @@ -2575,6 +2599,150 @@ func (s *UriOverride) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// method id "cloudtasks.api.queue.update": + +type ApiQueueUpdateCall struct { + s *Service + httpbody *HttpBody + urlParams_ gensupport.URLParams + ctx_ context.Context + header_ http.Header +} + +// Update: Update queue list by uploading a queue.yaml file. The +// queue.yaml file is supplied in the request body as a YAML encoded +// string. This method was added to support gcloud clients versions +// before 322.0.0. New clients should use CreateQueue instead of this +// method. +func (r *ApiQueueService) Update(httpbody *HttpBody) *ApiQueueUpdateCall { + c := &ApiQueueUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)} + c.httpbody = httpbody + return c +} + +// AppId sets the optional parameter "appId": Required. The App ID is +// supplied as an HTTP parameter. Unlike internal usage of App ID, it +// does not include a region prefix. Rather, the App ID represents the +// Project ID against which to make the request. +func (c *ApiQueueUpdateCall) AppId(appId string) *ApiQueueUpdateCall { + c.urlParams_.Set("appId", appId) + return c +} + +// Fields allows partial responses to be retrieved. See +// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse +// for more information. +func (c *ApiQueueUpdateCall) Fields(s ...googleapi.Field) *ApiQueueUpdateCall { + c.urlParams_.Set("fields", googleapi.CombineFields(s)) + return c +} + +// Context sets the context to be used in this call's Do method. Any +// pending HTTP request will be aborted if the provided context is +// canceled. +func (c *ApiQueueUpdateCall) Context(ctx context.Context) *ApiQueueUpdateCall { + c.ctx_ = ctx + return c +} + +// Header returns an http.Header that can be modified by the caller to +// add HTTP headers to the request. +func (c *ApiQueueUpdateCall) Header() http.Header { + if c.header_ == nil { + c.header_ = make(http.Header) + } + return c.header_ +} + +func (c *ApiQueueUpdateCall) doRequest(alt string) (*http.Response, error) { + reqHeaders := make(http.Header) + reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version) + for k, v := range c.header_ { + reqHeaders[k] = v + } + reqHeaders.Set("User-Agent", c.s.userAgent()) + var body io.Reader = nil + body, err := googleapi.WithoutDataWrapper.JSONReader(c.httpbody) + if err != nil { + return nil, err + } + reqHeaders.Set("Content-Type", "application/json") + c.urlParams_.Set("alt", alt) + c.urlParams_.Set("prettyPrint", "false") + urls := googleapi.ResolveRelative(c.s.BasePath, "api/queue/update") + urls += "?" + c.urlParams_.Encode() + req, err := http.NewRequest("POST", urls, body) + if err != nil { + return nil, err + } + req.Header = reqHeaders + return gensupport.SendRequest(c.ctx_, c.s.client, req) +} + +// Do executes the "cloudtasks.api.queue.update" call. +// Exactly one of *Empty or error will be non-nil. Any non-2xx status +// code is an error. Response headers are in either +// *Empty.ServerResponse.Header or (if a response was returned at all) +// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to +// check whether the returned error was because http.StatusNotModified +// was returned. +func (c *ApiQueueUpdateCall) Do(opts ...googleapi.CallOption) (*Empty, error) { + gensupport.SetOptions(c.urlParams_, opts...) + res, err := c.doRequest("json") + if res != nil && res.StatusCode == http.StatusNotModified { + if res.Body != nil { + res.Body.Close() + } + return nil, &googleapi.Error{ + Code: res.StatusCode, + Header: res.Header, + } + } + if err != nil { + return nil, err + } + defer googleapi.CloseBody(res) + if err := googleapi.CheckResponse(res); err != nil { + return nil, err + } + ret := &Empty{ + ServerResponse: googleapi.ServerResponse{ + Header: res.Header, + HTTPStatusCode: res.StatusCode, + }, + } + target := &ret + if err := gensupport.DecodeResponse(target, res); err != nil { + return nil, err + } + return ret, nil + // { + // "description": "Update queue list by uploading a queue.yaml file. The queue.yaml file is supplied in the request body as a YAML encoded string. This method was added to support gcloud clients versions before 322.0.0. New clients should use CreateQueue instead of this method.", + // "flatPath": "api/queue/update", + // "httpMethod": "POST", + // "id": "cloudtasks.api.queue.update", + // "parameterOrder": [], + // "parameters": { + // "appId": { + // "description": "Required. The App ID is supplied as an HTTP parameter. Unlike internal usage of App ID, it does not include a region prefix. Rather, the App ID represents the Project ID against which to make the request.", + // "location": "query", + // "type": "string" + // } + // }, + // "path": "api/queue/update", + // "request": { + // "$ref": "HttpBody" + // }, + // "response": { + // "$ref": "Empty" + // }, + // "scopes": [ + // "https://www.googleapis.com/auth/cloud-platform" + // ] + // } + +} + // method id "cloudtasks.projects.locations.get": type ProjectsLocationsGetCall struct { diff --git a/compute/v0.alpha/compute-api.json b/compute/v0.alpha/compute-api.json index edf2d344834..e4af81021c4 100644 --- a/compute/v0.alpha/compute-api.json +++ b/compute/v0.alpha/compute-api.json @@ -39992,7 +39992,7 @@ } } }, - "revision": "20220913", + "revision": "20220918", "rootUrl": "https://compute.googleapis.com/", "schemas": { "AcceleratorConfig": { @@ -40543,12 +40543,14 @@ "type": "string" }, "ipv6EndpointType": { - "description": "The endpoint type of this address, which should be VM. This is used for deciding which endpoint this address will be assigned to during the IPv6 external IP address reservation.", + "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.", "enum": [ + "NETLB", "VM" ], "enumDescriptions": [ - "Reserved IPv6 address will be assigned to VM." + "Reserved IPv6 address can be used on network load balancer.", + "Reserved IPv6 address can be used on VM." ], "type": "string" }, @@ -47524,7 +47526,7 @@ "type": "array" }, "destFqdns": { - "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 1000.", + "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.", "items": { "type": "string" }, @@ -47566,7 +47568,7 @@ "type": "array" }, "srcFqdns": { - "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 1000.", + "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.", "items": { "type": "string" }, @@ -47899,6 +47901,7 @@ "type": "string" }, "target": { + "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. For more information, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. ", "type": "string" } }, @@ -71356,6 +71359,24 @@ "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.", "id": "RouterNat", "properties": { + "autoNetworkTier": { + "description": "The network tier to use when automatically reserving IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, PREMIUM tier will be used.", + "enum": [ + "FIXED_STANDARD", + "PREMIUM", + "SELECT", + "STANDARD", + "STANDARD_OVERRIDES_FIXED_STANDARD" + ], + "enumDescriptions": [ + "Public internet quality with fixed bandwidth.", + "High quality, Google-grade network tier, support for all networking products.", + "Price competitive network tier, support for all networking products.", + "Public internet quality, only limited support for other networking products.", + "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured." + ], + "type": "string" + }, "drainNatIps": { "description": "A list of URLs of the IP resources to be drained. These IPs must be valid static external IPs that have been assigned to the NAT. These IPs should be used for updating/patching a NAT only.", "items": { diff --git a/compute/v0.alpha/compute-gen.go b/compute/v0.alpha/compute-gen.go index bca3f6240f1..c4e1f3d08f5 100644 --- a/compute/v0.alpha/compute-gen.go +++ b/compute/v0.alpha/compute-gen.go @@ -2154,11 +2154,13 @@ type Address struct { IpVersion string `json:"ipVersion,omitempty"` // Ipv6EndpointType: The endpoint type of this address, which should be - // VM. This is used for deciding which endpoint this address will be - // assigned to during the IPv6 external IP address reservation. + // VM or NETLB. This is used for deciding which type of endpoint this + // address can be used after the external IPv6 address reservation. // // Possible values: - // "VM" - Reserved IPv6 address will be assigned to VM. + // "NETLB" - Reserved IPv6 address can be used on network load + // balancer. + // "VM" - Reserved IPv6 address can be used on VM. Ipv6EndpointType string `json:"ipv6EndpointType,omitempty"` // Kind: [Output Only] Type of the resource. Always compute#address for @@ -13435,7 +13437,7 @@ type FirewallPolicyRuleMatcher struct { // DestFqdns: Fully Qualified Domain Name (FQDN) which should be matched // against traffic destination. Maximum number of destination fqdn - // allowed is 1000. + // allowed is 100. DestFqdns []string `json:"destFqdns,omitempty"` // DestIpRanges: CIDR IP address range. Maximum number of destination @@ -13461,8 +13463,7 @@ type FirewallPolicyRuleMatcher struct { SrcAddressGroups []string `json:"srcAddressGroups,omitempty"` // SrcFqdns: Fully Qualified Domain Name (FQDN) which should be matched - // against traffic source. Maximum number of source fqdn allowed is - // 1000. + // against traffic source. Maximum number of source fqdn allowed is 100. SrcFqdns []string `json:"srcFqdns,omitempty"` // SrcIpRanges: CIDR IP address range. Maximum number of source CIDR IP @@ -13932,6 +13933,17 @@ type ForwardingRule struct { // subnet mode or when creating external forwarding rule with IPv6. Subnetwork string `json:"subnetwork,omitempty"` + // Target: The URL of the target resource to receive the matched + // traffic. For regional forwarding rules, this target must be in the + // same region as the forwarding rule. For global forwarding rules, this + // target must be a global load balancing resource. The forwarded + // traffic must be of a type appropriate to the target object. For more + // information, see the "Target" column in Port specifications + // (https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). + // For Private Service Connect forwarding rules that forward traffic to + // Google APIs, provide the name of a supported Google API bundle: - + // vpc-sc - APIs that support VPC Service Controls. - all-apis - All + // supported Google APIs. Target string `json:"target,omitempty"` // ServerResponse contains the HTTP response code and headers from the @@ -50882,6 +50894,23 @@ func (s *RouterMd5AuthenticationKey) MarshalJSON() ([]byte, error) { // that would be used for NAT. GCP would auto-allocate ephemeral IPs if // no external IPs are provided. type RouterNat struct { + // AutoNetworkTier: The network tier to use when automatically reserving + // IP addresses. Must be one of: PREMIUM, STANDARD. If not specified, + // PREMIUM tier will be used. + // + // Possible values: + // "FIXED_STANDARD" - Public internet quality with fixed bandwidth. + // "PREMIUM" - High quality, Google-grade network tier, support for + // all networking products. + // "SELECT" - Price competitive network tier, support for all + // networking products. + // "STANDARD" - Public internet quality, only limited support for + // other networking products. + // "STANDARD_OVERRIDES_FIXED_STANDARD" - (Output only) Temporary tier + // for FIXED_STANDARD when fixed standard tier is expired or not + // configured. + AutoNetworkTier string `json:"autoNetworkTier,omitempty"` + // DrainNatIps: A list of URLs of the IP resources to be drained. These // IPs must be valid static external IPs that have been assigned to the // NAT. These IPs should be used for updating/patching a NAT only. @@ -51008,7 +51037,7 @@ type RouterNat struct { // to 30s if not set. UdpIdleTimeoutSec int64 `json:"udpIdleTimeoutSec,omitempty"` - // ForceSendFields is a list of field names (e.g. "DrainNatIps") to + // ForceSendFields is a list of field names (e.g. "AutoNetworkTier") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any // non-pointer, non-interface field appearing in ForceSendFields will be @@ -51016,12 +51045,13 @@ type RouterNat struct { // This may be used to include empty fields in Patch requests. ForceSendFields []string `json:"-"` - // NullFields is a list of field names (e.g. "DrainNatIps") to include - // in API requests with the JSON null value. By default, fields with - // empty values are omitted from API requests. However, any field with - // an empty value appearing in NullFields will be sent to the server as - // null. It is an error if a field in this list has a non-empty value. - // This may be used to include null fields in Patch requests. + // NullFields is a list of field names (e.g. "AutoNetworkTier") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. NullFields []string `json:"-"` } diff --git a/compute/v0.beta/compute-api.json b/compute/v0.beta/compute-api.json index c0e227e09bc..b92c8d43e5e 100644 --- a/compute/v0.beta/compute-api.json +++ b/compute/v0.beta/compute-api.json @@ -35512,7 +35512,7 @@ } } }, - "revision": "20220913", + "revision": "20220918", "rootUrl": "https://compute.googleapis.com/", "schemas": { "AcceleratorConfig": { @@ -36042,6 +36042,18 @@ ], "type": "string" }, + "ipv6EndpointType": { + "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.", + "enum": [ + "NETLB", + "VM" + ], + "enumDescriptions": [ + "Reserved IPv6 address can be used on network load balancer.", + "Reserved IPv6 address can be used on VM." + ], + "type": "string" + }, "kind": { "default": "compute#address", "description": "[Output Only] Type of the resource. Always compute#address for addresses.", @@ -42460,6 +42472,13 @@ }, "type": "array" }, + "destFqdns": { + "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic destination. Maximum number of destination fqdn allowed is 100.", + "items": { + "type": "string" + }, + "type": "array" + }, "destIpRanges": { "description": "CIDR IP address range. Maximum number of destination CIDR IP ranges allowed is 5000.", "items": { @@ -42495,6 +42514,13 @@ }, "type": "array" }, + "srcFqdns": { + "description": "Fully Qualified Domain Name (FQDN) which should be matched against traffic source. Maximum number of source fqdn allowed is 100.", + "items": { + "type": "string" + }, + "type": "array" + }, "srcIpRanges": { "description": "CIDR IP address range. Maximum number of source CIDR IP ranges allowed is 5000.", "items": { @@ -42810,6 +42836,7 @@ "type": "string" }, "target": { + "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. For more information, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. ", "type": "string" } }, @@ -61858,10 +61885,18 @@ "bfdStatus": { "$ref": "BfdStatus" }, + "enableIpv6": { + "description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default.", + "type": "boolean" + }, "ipAddress": { "description": "IP address of the local BGP interface.", "type": "string" }, + "ipv6NexthopAddress": { + "description": "IPv6 address of the local BGP interface.", + "type": "string" + }, "linkedVpnTunnel": { "description": "URL of the VPN tunnel that this BGP peer controls.", "type": "string" @@ -61883,6 +61918,10 @@ "description": "IP address of the remote BGP interface.", "type": "string" }, + "peerIpv6NexthopAddress": { + "description": "IPv6 address of the remote BGP interface.", + "type": "string" + }, "routerApplianceInstance": { "description": "[Output only] URI of the VM instance that is used as third-party router appliances such as Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance is the peer side of the BGP session.", "type": "string" diff --git a/compute/v0.beta/compute-gen.go b/compute/v0.beta/compute-gen.go index f2357f866d4..d683fb892f3 100644 --- a/compute/v0.beta/compute-gen.go +++ b/compute/v0.beta/compute-gen.go @@ -2038,6 +2038,16 @@ type Address struct { // "UNSPECIFIED_VERSION" IpVersion string `json:"ipVersion,omitempty"` + // Ipv6EndpointType: The endpoint type of this address, which should be + // VM or NETLB. This is used for deciding which type of endpoint this + // address can be used after the external IPv6 address reservation. + // + // Possible values: + // "NETLB" - Reserved IPv6 address can be used on network load + // balancer. + // "VM" - Reserved IPv6 address can be used on VM. + Ipv6EndpointType string `json:"ipv6EndpointType,omitempty"` + // Kind: [Output Only] Type of the resource. Always compute#address for // addresses. Kind string `json:"kind,omitempty"` @@ -12383,6 +12393,11 @@ type FirewallPolicyRuleMatcher struct { // 10. DestAddressGroups []string `json:"destAddressGroups,omitempty"` + // DestFqdns: Fully Qualified Domain Name (FQDN) which should be matched + // against traffic destination. Maximum number of destination fqdn + // allowed is 100. + DestFqdns []string `json:"destFqdns,omitempty"` + // DestIpRanges: CIDR IP address range. Maximum number of destination // CIDR IP ranges allowed is 5000. DestIpRanges []string `json:"destIpRanges,omitempty"` @@ -12405,6 +12420,10 @@ type FirewallPolicyRuleMatcher struct { // traffic source. Maximum number of source address groups is 10. SrcAddressGroups []string `json:"srcAddressGroups,omitempty"` + // SrcFqdns: Fully Qualified Domain Name (FQDN) which should be matched + // against traffic source. Maximum number of source fqdn allowed is 100. + SrcFqdns []string `json:"srcFqdns,omitempty"` + // SrcIpRanges: CIDR IP address range. Maximum number of source CIDR IP // ranges allowed is 5000. SrcIpRanges []string `json:"srcIpRanges,omitempty"` @@ -12861,6 +12880,17 @@ type ForwardingRule struct { // subnet mode or when creating external forwarding rule with IPv6. Subnetwork string `json:"subnetwork,omitempty"` + // Target: The URL of the target resource to receive the matched + // traffic. For regional forwarding rules, this target must be in the + // same region as the forwarding rule. For global forwarding rules, this + // target must be a global load balancing resource. The forwarded + // traffic must be of a type appropriate to the target object. For more + // information, see the "Target" column in Port specifications + // (https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). + // For Private Service Connect forwarding rules that forward traffic to + // Google APIs, provide the name of a supported Google API bundle: - + // vpc-sc - APIs that support VPC Service Controls. - all-apis - All + // supported Google APIs. Target string `json:"target,omitempty"` // ServerResponse contains the HTTP response code and headers from the @@ -42854,9 +42884,16 @@ type RouterStatusBgpPeerStatus struct { BfdStatus *BfdStatus `json:"bfdStatus,omitempty"` + // EnableIpv6: Enable IPv6 traffic over BGP Peer. If not specified, it + // is disabled by default. + EnableIpv6 bool `json:"enableIpv6,omitempty"` + // IpAddress: IP address of the local BGP interface. IpAddress string `json:"ipAddress,omitempty"` + // Ipv6NexthopAddress: IPv6 address of the local BGP interface. + Ipv6NexthopAddress string `json:"ipv6NexthopAddress,omitempty"` + // LinkedVpnTunnel: URL of the VPN tunnel that this BGP peer controls. LinkedVpnTunnel string `json:"linkedVpnTunnel,omitempty"` @@ -42873,6 +42910,9 @@ type RouterStatusBgpPeerStatus struct { // PeerIpAddress: IP address of the remote BGP interface. PeerIpAddress string `json:"peerIpAddress,omitempty"` + // PeerIpv6NexthopAddress: IPv6 address of the remote BGP interface. + PeerIpv6NexthopAddress string `json:"peerIpv6NexthopAddress,omitempty"` + // RouterApplianceInstance: [Output only] URI of the VM instance that is // used as third-party router appliances such as Next Gen Firewalls, // Virtual Routers, or Router Appliances. The VM instance is the peer diff --git a/compute/v1/compute-api.json b/compute/v1/compute-api.json index 3d5d578154c..eb794323a49 100644 --- a/compute/v1/compute-api.json +++ b/compute/v1/compute-api.json @@ -32223,7 +32223,7 @@ } } }, - "revision": "20220911", + "revision": "20220918", "rootUrl": "https://compute.googleapis.com/", "schemas": { "AcceleratorConfig": { @@ -32753,6 +32753,18 @@ ], "type": "string" }, + "ipv6EndpointType": { + "description": "The endpoint type of this address, which should be VM or NETLB. This is used for deciding which type of endpoint this address can be used after the external IPv6 address reservation.", + "enum": [ + "NETLB", + "VM" + ], + "enumDescriptions": [ + "Reserved IPv6 address can be used on network load balancer.", + "Reserved IPv6 address can be used on VM." + ], + "type": "string" + }, "kind": { "default": "compute#address", "description": "[Output Only] Type of the resource. Always compute#address for addresses.", @@ -39325,6 +39337,7 @@ "type": "string" }, "target": { + "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must be in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object. For more information, see the \"Target\" column in [Port specifications](https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). For Private Service Connect forwarding rules that forward traffic to Google APIs, provide the name of a supported Google API bundle: - vpc-sc - APIs that support VPC Service Controls. - all-apis - All supported Google APIs. ", "type": "string" } }, @@ -57830,10 +57843,18 @@ "bfdStatus": { "$ref": "BfdStatus" }, + "enableIpv6": { + "description": "Enable IPv6 traffic over BGP Peer. If not specified, it is disabled by default.", + "type": "boolean" + }, "ipAddress": { "description": "IP address of the local BGP interface.", "type": "string" }, + "ipv6NexthopAddress": { + "description": "IPv6 address of the local BGP interface.", + "type": "string" + }, "linkedVpnTunnel": { "description": "URL of the VPN tunnel that this BGP peer controls.", "type": "string" @@ -57855,6 +57876,10 @@ "description": "IP address of the remote BGP interface.", "type": "string" }, + "peerIpv6NexthopAddress": { + "description": "IPv6 address of the remote BGP interface.", + "type": "string" + }, "routerApplianceInstance": { "description": "[Output only] URI of the VM instance that is used as third-party router appliances such as Next Gen Firewalls, Virtual Routers, or Router Appliances. The VM instance is the peer side of the BGP session.", "type": "string" diff --git a/compute/v1/compute-gen.go b/compute/v1/compute-gen.go index 5cbb60c89bc..b009e68051f 100644 --- a/compute/v1/compute-gen.go +++ b/compute/v1/compute-gen.go @@ -2026,6 +2026,16 @@ type Address struct { // "UNSPECIFIED_VERSION" IpVersion string `json:"ipVersion,omitempty"` + // Ipv6EndpointType: The endpoint type of this address, which should be + // VM or NETLB. This is used for deciding which type of endpoint this + // address can be used after the external IPv6 address reservation. + // + // Possible values: + // "NETLB" - Reserved IPv6 address can be used on network load + // balancer. + // "VM" - Reserved IPv6 address can be used on VM. + Ipv6EndpointType string `json:"ipv6EndpointType,omitempty"` + // Kind: [Output Only] Type of the resource. Always compute#address for // addresses. Kind string `json:"kind,omitempty"` @@ -12590,6 +12600,17 @@ type ForwardingRule struct { // subnet mode or when creating external forwarding rule with IPv6. Subnetwork string `json:"subnetwork,omitempty"` + // Target: The URL of the target resource to receive the matched + // traffic. For regional forwarding rules, this target must be in the + // same region as the forwarding rule. For global forwarding rules, this + // target must be a global load balancing resource. The forwarded + // traffic must be of a type appropriate to the target object. For more + // information, see the "Target" column in Port specifications + // (https://cloud.google.com/load-balancing/docs/forwarding-rule-concepts#ip_address_specifications). + // For Private Service Connect forwarding rules that forward traffic to + // Google APIs, provide the name of a supported Google API bundle: - + // vpc-sc - APIs that support VPC Service Controls. - all-apis - All + // supported Google APIs. Target string `json:"target,omitempty"` // ServerResponse contains the HTTP response code and headers from the @@ -41603,9 +41624,16 @@ type RouterStatusBgpPeerStatus struct { BfdStatus *BfdStatus `json:"bfdStatus,omitempty"` + // EnableIpv6: Enable IPv6 traffic over BGP Peer. If not specified, it + // is disabled by default. + EnableIpv6 bool `json:"enableIpv6,omitempty"` + // IpAddress: IP address of the local BGP interface. IpAddress string `json:"ipAddress,omitempty"` + // Ipv6NexthopAddress: IPv6 address of the local BGP interface. + Ipv6NexthopAddress string `json:"ipv6NexthopAddress,omitempty"` + // LinkedVpnTunnel: URL of the VPN tunnel that this BGP peer controls. LinkedVpnTunnel string `json:"linkedVpnTunnel,omitempty"` @@ -41622,6 +41650,9 @@ type RouterStatusBgpPeerStatus struct { // PeerIpAddress: IP address of the remote BGP interface. PeerIpAddress string `json:"peerIpAddress,omitempty"` + // PeerIpv6NexthopAddress: IPv6 address of the remote BGP interface. + PeerIpv6NexthopAddress string `json:"peerIpv6NexthopAddress,omitempty"` + // RouterApplianceInstance: [Output only] URI of the VM instance that is // used as third-party router appliances such as Next Gen Firewalls, // Virtual Routers, or Router Appliances. The VM instance is the peer diff --git a/container/v1/container-api.json b/container/v1/container-api.json index 5d56de6dae0..9b6a3feda9b 100644 --- a/container/v1/container-api.json +++ b/container/v1/container-api.json @@ -2487,7 +2487,7 @@ } } }, - "revision": "20220826", + "revision": "20220923", "rootUrl": "https://container.googleapis.com/", "schemas": { "AcceleratorConfig": { @@ -2538,6 +2538,10 @@ "$ref": "GcpFilestoreCsiDriverConfig", "description": "Configuration for the GCP Filestore CSI driver." }, + "gkeBackupAgentConfig": { + "$ref": "GkeBackupAgentConfig", + "description": "Configuration for the Backup for GKE agent addon." + }, "horizontalPodAutoscaling": { "$ref": "HorizontalPodAutoscaling", "description": "Configuration for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods." @@ -2879,6 +2883,10 @@ "$ref": "ConfidentialNodes", "description": "Configuration of Confidential Nodes. All the nodes in the cluster will be Confidential VM once enabled." }, + "costManagementConfig": { + "$ref": "CostManagementConfig", + "description": "Configuration for the fine-grained cost management feature." + }, "createTime": { "description": "[Output only] The time the cluster was created, in [RFC3339](https://www.ietf.org/rfc/rfc3339.txt) text format.", "type": "string" @@ -3191,6 +3199,10 @@ "$ref": "ClusterAutoscaling", "description": "Cluster-level autoscaling configuration." }, + "desiredCostManagementConfig": { + "$ref": "CostManagementConfig", + "description": "The desired configuration for the fine-grained cost management feature." + }, "desiredDatabaseEncryption": { "$ref": "DatabaseEncryption", "description": "Configuration of etcd encryption." @@ -3405,6 +3417,17 @@ }, "type": "object" }, + "CostManagementConfig": { + "description": "Configuration for fine-grained cost management feature.", + "id": "CostManagementConfig", + "properties": { + "enabled": { + "description": "Whether the feature is enabled or not.", + "type": "boolean" + } + }, + "type": "object" + }, "CreateClusterRequest": { "description": "CreateClusterRequest creates a cluster.", "id": "CreateClusterRequest", @@ -3715,6 +3738,17 @@ }, "type": "object" }, + "GkeBackupAgentConfig": { + "description": "Configuration for the Backup for GKE Agent.", + "id": "GkeBackupAgentConfig", + "properties": { + "enabled": { + "description": "Whether the Backup for GKE agent is enabled for this cluster.", + "type": "boolean" + } + }, + "type": "object" + }, "HorizontalPodAutoscaling": { "description": "Configuration options for the horizontal pod autoscaling feature, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods.", "id": "HorizontalPodAutoscaling", @@ -3788,6 +3822,20 @@ "description": "Whether a new subnetwork will be created automatically for the cluster. This field is only applicable when `use_ip_aliases` is true.", "type": "boolean" }, + "ipv6AccessType": { + "description": "The ipv6 access type (internal or external) when create_subnetwork is true", + "enum": [ + "IPV6_ACCESS_TYPE_UNSPECIFIED", + "INTERNAL", + "EXTERNAL" + ], + "enumDescriptions": [ + "Default value, will be defaulted as type external.", + "Access type internal (all v6 addresses are internal IPs)", + "Access type external (all v6 addresses are external IPs)" + ], + "type": "string" + }, "nodeIpv4Cidr": { "description": "This field is deprecated, use node_ipv4_cidr_block.", "type": "string" @@ -3808,6 +3856,20 @@ "description": "The name of the secondary range to be used as for the services CIDR block. The secondary range will be used for service ClusterIPs. This must be an existing secondary range associated with the cluster subnetwork. This field is only applicable with use_ip_aliases is true and create_subnetwork is false.", "type": "string" }, + "stackType": { + "description": "The IP stack type of the cluster", + "enum": [ + "STACK_TYPE_UNSPECIFIED", + "IPV4", + "IPV4_IPV6" + ], + "enumDescriptions": [ + "Default value, will be defaulted as IPV4 only", + "Cluster is IPV4 only", + "Cluster can use both IPv4 and IPv6" + ], + "type": "string" + }, "subnetworkName": { "description": "A custom subnetwork name to be used if `create_subnetwork` is true. If this field is empty, then an automatic name will be chosen for the new subnetwork.", "type": "string" @@ -5908,7 +5970,7 @@ "DATA_LOSS" ], "enumDescriptions": [ - "Not an error; returned on success HTTP Mapping: 200 OK", + "Not an error; returned on success. HTTP Mapping: 200 OK", "The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request", "Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error", "The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request", diff --git a/container/v1/container-gen.go b/container/v1/container-gen.go index 62a52528d0e..06051281c02 100644 --- a/container/v1/container-gen.go +++ b/container/v1/container-gen.go @@ -346,6 +346,10 @@ type AddonsConfig struct { // driver. GcpFilestoreCsiDriverConfig *GcpFilestoreCsiDriverConfig `json:"gcpFilestoreCsiDriverConfig,omitempty"` + // GkeBackupAgentConfig: Configuration for the Backup for GKE agent + // addon. + GkeBackupAgentConfig *GkeBackupAgentConfig `json:"gkeBackupAgentConfig,omitempty"` + // HorizontalPodAutoscaling: Configuration for the horizontal pod // autoscaling feature, which increases or decreases the number of // replica pods a replication controller has based on the resource usage @@ -957,6 +961,10 @@ type Cluster struct { // in the cluster will be Confidential VM once enabled. ConfidentialNodes *ConfidentialNodes `json:"confidentialNodes,omitempty"` + // CostManagementConfig: Configuration for the fine-grained cost + // management feature. + CostManagementConfig *CostManagementConfig `json:"costManagementConfig,omitempty"` + // CreateTime: [Output only] The time the cluster was created, in // RFC3339 (https://www.ietf.org/rfc/rfc3339.txt) text format. CreateTime string `json:"createTime,omitempty"` @@ -1353,6 +1361,10 @@ type ClusterUpdate struct { // DesiredClusterAutoscaling: Cluster-level autoscaling configuration. DesiredClusterAutoscaling *ClusterAutoscaling `json:"desiredClusterAutoscaling,omitempty"` + // DesiredCostManagementConfig: The desired configuration for the + // fine-grained cost management feature. + DesiredCostManagementConfig *CostManagementConfig `json:"desiredCostManagementConfig,omitempty"` + // DesiredDatabaseEncryption: Configuration of etcd encryption. DesiredDatabaseEncryption *DatabaseEncryption `json:"desiredDatabaseEncryption,omitempty"` @@ -1688,6 +1700,35 @@ func (s *ConsumptionMeteringConfig) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// CostManagementConfig: Configuration for fine-grained cost management +// feature. +type CostManagementConfig struct { + // Enabled: Whether the feature is enabled or not. + Enabled bool `json:"enabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CostManagementConfig) MarshalJSON() ([]byte, error) { + type NoMethod CostManagementConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // CreateClusterRequest: CreateClusterRequest creates a cluster. type CreateClusterRequest struct { // Cluster: Required. A cluster resource @@ -2240,6 +2281,35 @@ func (s *GetOpenIDConfigResponse) MarshalJSON() ([]byte, error) { return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// GkeBackupAgentConfig: Configuration for the Backup for GKE Agent. +type GkeBackupAgentConfig struct { + // Enabled: Whether the Backup for GKE agent is enabled for this + // cluster. + Enabled bool `json:"enabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GkeBackupAgentConfig) MarshalJSON() ([]byte, error) { + type NoMethod GkeBackupAgentConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // HorizontalPodAutoscaling: Configuration options for the horizontal // pod autoscaling feature, which increases or decreases the number of // replica pods a replication controller has based on the resource usage @@ -2400,6 +2470,18 @@ type IPAllocationPolicy struct { // `use_ip_aliases` is true. CreateSubnetwork bool `json:"createSubnetwork,omitempty"` + // Ipv6AccessType: The ipv6 access type (internal or external) when + // create_subnetwork is true + // + // Possible values: + // "IPV6_ACCESS_TYPE_UNSPECIFIED" - Default value, will be defaulted + // as type external. + // "INTERNAL" - Access type internal (all v6 addresses are internal + // IPs) + // "EXTERNAL" - Access type external (all v6 addresses are external + // IPs) + Ipv6AccessType string `json:"ipv6AccessType,omitempty"` + // NodeIpv4Cidr: This field is deprecated, use node_ipv4_cidr_block. NodeIpv4Cidr string `json:"nodeIpv4Cidr,omitempty"` @@ -2437,6 +2519,15 @@ type IPAllocationPolicy struct { // with use_ip_aliases is true and create_subnetwork is false. ServicesSecondaryRangeName string `json:"servicesSecondaryRangeName,omitempty"` + // StackType: The IP stack type of the cluster + // + // Possible values: + // "STACK_TYPE_UNSPECIFIED" - Default value, will be defaulted as IPV4 + // only + // "IPV4" - Cluster is IPV4 only + // "IPV4_IPV6" - Cluster can use both IPv4 and IPv6 + StackType string `json:"stackType,omitempty"` + // SubnetworkName: A custom subnetwork name to be used if // `create_subnetwork` is true. If this field is empty, then an // automatic name will be chosen for the new subnetwork. @@ -6061,7 +6152,7 @@ type StatusCondition struct { // CanonicalCode: Canonical code of the condition. // // Possible values: - // "OK" - Not an error; returned on success HTTP Mapping: 200 OK + // "OK" - Not an error; returned on success. HTTP Mapping: 200 OK // "CANCELLED" - The operation was cancelled, typically by the caller. // HTTP Mapping: 499 Client Closed Request // "UNKNOWN" - Unknown error. For example, this error may be returned diff --git a/container/v1beta1/container-api.json b/container/v1beta1/container-api.json index 4f235ae30d1..40c0aff12e4 100644 --- a/container/v1beta1/container-api.json +++ b/container/v1beta1/container-api.json @@ -2512,7 +2512,7 @@ } } }, - "revision": "20220913", + "revision": "20220923", "rootUrl": "https://container.googleapis.com/", "schemas": { "AcceleratorConfig": { @@ -5503,6 +5503,20 @@ "workloadConfig": { "$ref": "WorkloadConfig", "description": "WorkloadConfig defines which actions are enabled for a cluster's workload configurations." + }, + "workloadVulnerabilityMode": { + "description": "Sets which mode to use for Protect workload vulnerability scanning feature.", + "enum": [ + "WORKLOAD_VULNERABILITY_MODE_UNSPECIFIED", + "DISABLED", + "BASIC" + ], + "enumDescriptions": [ + "Default value not specified.", + "Disables Workload Vulnerability Scanning feature on the cluster.", + "Applies basic vulnerability scanning settings for cluster workloads." + ], + "type": "string" } }, "type": "object" @@ -6341,7 +6355,7 @@ "DATA_LOSS" ], "enumDescriptions": [ - "Not an error; returned on success HTTP Mapping: 200 OK", + "Not an error; returned on success. HTTP Mapping: 200 OK", "The operation was cancelled, typically by the caller. HTTP Mapping: 499 Client Closed Request", "Unknown error. For example, this error may be returned when a `Status` value received from another address space belongs to an error space that is not known in this address space. Also errors raised by APIs that do not return enough error information may be converted to this error. HTTP Mapping: 500 Internal Server Error", "The client specified an invalid argument. Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT` indicates arguments that are problematic regardless of the state of the system (e.g., a malformed file name). HTTP Mapping: 400 Bad Request", diff --git a/container/v1beta1/container-gen.go b/container/v1beta1/container-gen.go index cbbbd668c39..5bbcc8abecc 100644 --- a/container/v1beta1/container-gen.go +++ b/container/v1beta1/container-gen.go @@ -5250,6 +5250,18 @@ type ProtectConfig struct { // a cluster's workload configurations. WorkloadConfig *WorkloadConfig `json:"workloadConfig,omitempty"` + // WorkloadVulnerabilityMode: Sets which mode to use for Protect + // workload vulnerability scanning feature. + // + // Possible values: + // "WORKLOAD_VULNERABILITY_MODE_UNSPECIFIED" - Default value not + // specified. + // "DISABLED" - Disables Workload Vulnerability Scanning feature on + // the cluster. + // "BASIC" - Applies basic vulnerability scanning settings for cluster + // workloads. + WorkloadVulnerabilityMode string `json:"workloadVulnerabilityMode,omitempty"` + // ForceSendFields is a list of field names (e.g. "WorkloadConfig") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -6711,7 +6723,7 @@ type StatusCondition struct { // CanonicalCode: Canonical code of the condition. // // Possible values: - // "OK" - Not an error; returned on success HTTP Mapping: 200 OK + // "OK" - Not an error; returned on success. HTTP Mapping: 200 OK // "CANCELLED" - The operation was cancelled, typically by the caller. // HTTP Mapping: 499 Client Closed Request // "UNKNOWN" - Unknown error. For example, this error may be returned diff --git a/containeranalysis/v1/containeranalysis-api.json b/containeranalysis/v1/containeranalysis-api.json index 5fc04368be7..bcaebfa69bc 100644 --- a/containeranalysis/v1/containeranalysis-api.json +++ b/containeranalysis/v1/containeranalysis-api.json @@ -755,7 +755,7 @@ } } }, - "revision": "20220902", + "revision": "20221001", "rootUrl": "https://containeranalysis.googleapis.com/", "schemas": { "AliasContext": { @@ -1595,9 +1595,23 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact" + }, + "type": "array" + }, "objects": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects", "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE." + }, + "pythonPackages": { + "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -1625,6 +1639,51 @@ }, "type": "object" }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact": { + "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact", + "properties": { + "artifactId": { + "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "groupId": { + "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "path": { + "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.", + "type": "string" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + }, + "version": { + "description": "Maven `version` value used when uploading the artifact to Artifact Registry.", + "type": "string" + } + }, + "type": "object" + }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage": { + "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage", + "properties": { + "paths": { + "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and sometimes additionally an `.asc` file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + } + }, + "type": "object" + }, "ContaineranalysisGoogleDevtoolsCloudbuildV1Build": { "description": "A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $PROJECT_NUMBER: the project number of the build. - $LOCATION: the location/region of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.", "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Build", @@ -1799,7 +1858,7 @@ "additionalProperties": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan" }, - "description": "Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all specified images. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included.", + "description": "Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all artifacts including docker images and non docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included.", "readOnly": true, "type": "object" }, @@ -2309,12 +2368,12 @@ "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Results", "properties": { "artifactManifest": { - "description": "Path to the artifact manifest. Only populated when artifacts are uploaded.", + "description": "Path to the artifact manifest for non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage.", "type": "string" }, "artifactTiming": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", - "description": "Time to push all non-container artifacts." + "description": "Time to push all non-container artifacts to Cloud Storage." }, "buildStepImages": { "description": "List of build step digests, in the order corresponding to build step indices.", @@ -2338,10 +2397,24 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "Maven artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact" + }, + "type": "array" + }, "numArtifacts": { - "description": "Number of artifacts uploaded. Only populated when artifacts are uploaded.", + "description": "Number of non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage.", "format": "int64", "type": "string" + }, + "pythonPackages": { + "description": "Python artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -2504,6 +2577,46 @@ }, "type": "object" }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact": { + "description": "A Maven artifact uploaded using the MavenArtifact directive.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact", + "properties": { + "fileHashes": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes", + "description": "Hash types and values of the Maven Artifact." + }, + "pushTiming": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage": { + "description": "Artifact uploaded using the PythonPackage directive.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage", + "properties": { + "fileHashes": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes", + "description": "Hash types and values of the Python Artifact." + }, + "pushTiming": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume": { "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume", @@ -2767,7 +2880,7 @@ "Resource is known but no action has been taken yet.", "Resource is being analyzed.", "Analysis has finished successfully.", - "Analysis has completed", + "Analysis has completed.", "Analysis has finished unsuccessfully, the analysis itself is in a bad state.", "The resource is known not to be supported." ], @@ -4473,6 +4586,20 @@ "$ref": "CVSSv3", "description": "The full description of the CVSSv3 for this vulnerability." }, + "cvssVersion": { + "description": "CVSS version used to populate cvss_score and severity.", + "enum": [ + "CVSS_VERSION_UNSPECIFIED", + "CVSS_VERSION_2", + "CVSS_VERSION_3" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, "details": { "description": "Details of all known distros and packages affected by this vulnerability.", "items": { @@ -4524,6 +4651,20 @@ "format": "float", "type": "number" }, + "cvssVersion": { + "description": "Output only. CVSS version used to populate cvss_score and severity.", + "enum": [ + "CVSS_VERSION_UNSPECIFIED", + "CVSS_VERSION_2", + "CVSS_VERSION_3" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, "cvssv3": { "$ref": "CVSS", "description": "The cvss v3 score for the vulnerability." diff --git a/containeranalysis/v1/containeranalysis-gen.go b/containeranalysis/v1/containeranalysis-gen.go index 64c374df526..a3ab17f795d 100644 --- a/containeranalysis/v1/containeranalysis-gen.go +++ b/containeranalysis/v1/containeranalysis-gen.go @@ -1395,6 +1395,14 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts struct { // fail to be pushed, the build is marked FAILURE. Images []string `json:"images,omitempty"` + // MavenArtifacts: A list of Maven artifacts to be uploaded to Artifact + // Registry upon successful completion of all build steps. Artifacts in + // the workspace matching specified paths globs will be uploaded to the + // specified Artifact Registry repository using the builder service + // account's credentials. If any artifacts fail to be pushed, the build + // is marked FAILURE. + MavenArtifacts []*ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact `json:"mavenArtifacts,omitempty"` + // Objects: A list of objects to be uploaded to Cloud Storage upon // successful completion of all build steps. Files in the workspace // matching specified paths globs will be uploaded to the specified @@ -1404,6 +1412,12 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts struct { // to be pushed, the build is marked FAILURE. Objects *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects `json:"objects,omitempty"` + // PythonPackages: A list of Python packages to be uploaded to Artifact + // Registry upon successful completion of all build steps. The build + // service account credentials will be used to perform the upload. If + // any objects fail to be pushed, the build is marked FAILURE. + PythonPackages []*ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "Images") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1468,6 +1482,96 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects) Ma return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact: A +// Maven artifact to upload to Artifact Registry upon successful +// completion of all build steps. +type ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact struct { + // ArtifactId: Maven `artifactId` value used when uploading the artifact + // to Artifact Registry. + ArtifactId string `json:"artifactId,omitempty"` + + // GroupId: Maven `groupId` value used when uploading the artifact to + // Artifact Registry. + GroupId string `json:"groupId,omitempty"` + + // Path: Path to an artifact in the build's workspace to be uploaded to + // Artifact Registry. This can be either an absolute path, e.g. + // /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path + // from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar. + Path string `json:"path,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" Artifact in the + // workspace specified by path will be uploaded to Artifact Registry + // with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // Version: Maven `version` value used when uploading the artifact to + // Artifact Registry. + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArtifactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArtifactId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage: +// Python package to upload to Artifact Registry upon successful +// completion of all build steps. A package can encapsulate multiple +// objects to be uploaded to a single repository. +type ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage struct { + // Paths: Path globs used to match files in the build's workspace. For + // Python/ Twine, this is usually `dist/*`, and sometimes additionally + // an `.asc` file. + Paths []string `json:"paths,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" Files in the + // workspace matching any path pattern will be uploaded to Artifact + // Registry with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Paths") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Paths") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ContaineranalysisGoogleDevtoolsCloudbuildV1Build: A build resource in // the Cloud Build API. At a high level, a `Build` describes where to // find source code, how to build it (for example, the builder image to @@ -1613,9 +1717,10 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Build struct { // Timing: Output only. Stores timing information for phases of the // build. Valid keys are: * BUILD: time to execute all build steps. * - // PUSH: time to push all specified images. * FETCHSOURCE: time to fetch - // source. * SETUPBUILD: time to set up build. If the build does not - // specify source or images, these keys will not be included. + // PUSH: time to push all artifacts including docker images and non + // docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: + // time to set up build. If the build does not specify source or images, + // these keys will not be included. Timing map[string]ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"timing,omitempty"` // Warnings: Output only. Non-fatal problems encountered during the @@ -2294,11 +2399,13 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource) MarshalJSON() ([ // ContaineranalysisGoogleDevtoolsCloudbuildV1Results: Artifacts created // by the build pipeline. type ContaineranalysisGoogleDevtoolsCloudbuildV1Results struct { - // ArtifactManifest: Path to the artifact manifest. Only populated when - // artifacts are uploaded. + // ArtifactManifest: Path to the artifact manifest for non-container + // artifacts uploaded to Cloud Storage. Only populated when artifacts + // are uploaded to Cloud Storage. ArtifactManifest string `json:"artifactManifest,omitempty"` - // ArtifactTiming: Time to push all non-container artifacts. + // ArtifactTiming: Time to push all non-container artifacts to Cloud + // Storage. ArtifactTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"artifactTiming,omitempty"` // BuildStepImages: List of build step digests, in the order @@ -2315,10 +2422,18 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Results struct { // Images: Container images that were built as a part of the build. Images []*ContaineranalysisGoogleDevtoolsCloudbuildV1BuiltImage `json:"images,omitempty"` - // NumArtifacts: Number of artifacts uploaded. Only populated when - // artifacts are uploaded. + // MavenArtifacts: Maven artifacts uploaded to Artifact Registry at the + // end of the build. + MavenArtifacts []*ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact `json:"mavenArtifacts,omitempty"` + + // NumArtifacts: Number of non-container artifacts uploaded to Cloud + // Storage. Only populated when artifacts are uploaded to Cloud Storage. NumArtifacts int64 `json:"numArtifacts,omitempty,string"` + // PythonPackages: Python artifacts uploaded to Artifact Registry at the + // end of the build. + PythonPackages []*ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "ArtifactManifest") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -2655,6 +2770,78 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan) MarshalJSON() ([]b return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact: A +// Maven artifact uploaded using the MavenArtifact directive. +type ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact struct { + // FileHashes: Hash types and values of the Maven Artifact. + FileHashes *ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage: +// Artifact uploaded using the PythonPackage directive. +type ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage struct { + // FileHashes: Hash types and values of the Python Artifact. + FileHashes *ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ContaineranalysisGoogleDevtoolsCloudbuildV1Volume: Volume describes a // Docker container volume which is mounted into build steps in order to // persist files across build step execution. @@ -3061,7 +3248,7 @@ type DiscoveryOccurrence struct { // "PENDING" - Resource is known but no action has been taken yet. // "SCANNING" - Resource is being analyzed. // "FINISHED_SUCCESS" - Analysis has finished successfully. - // "COMPLETE" - Analysis has completed + // "COMPLETE" - Analysis has completed. // "FINISHED_FAILED" - Analysis has finished unsuccessfully, the // analysis itself is in a bad state. // "FINISHED_UNSUPPORTED" - The resource is known not to be supported. @@ -5947,6 +6134,14 @@ type VulnerabilityNote struct { // CvssV3: The full description of the CVSSv3 for this vulnerability. CvssV3 *CVSSv3 `json:"cvssV3,omitempty"` + // CvssVersion: CVSS version used to populate cvss_score and severity. + // + // Possible values: + // "CVSS_VERSION_UNSPECIFIED" + // "CVSS_VERSION_2" + // "CVSS_VERSION_3" + CvssVersion string `json:"cvssVersion,omitempty"` + // Details: Details of all known distros and packages affected by this // vulnerability. Details []*Detail `json:"details,omitempty"` @@ -6019,6 +6214,15 @@ type VulnerabilityOccurrence struct { // indicates high severity. CvssScore float64 `json:"cvssScore,omitempty"` + // CvssVersion: Output only. CVSS version used to populate cvss_score + // and severity. + // + // Possible values: + // "CVSS_VERSION_UNSPECIFIED" + // "CVSS_VERSION_2" + // "CVSS_VERSION_3" + CvssVersion string `json:"cvssVersion,omitempty"` + // Cvssv3: The cvss v3 score for the vulnerability. Cvssv3 *CVSS `json:"cvssv3,omitempty"` diff --git a/containeranalysis/v1alpha1/containeranalysis-api.json b/containeranalysis/v1alpha1/containeranalysis-api.json index ee81b9ab9bb..8dc03360574 100644 --- a/containeranalysis/v1alpha1/containeranalysis-api.json +++ b/containeranalysis/v1alpha1/containeranalysis-api.json @@ -1229,7 +1229,7 @@ } } }, - "revision": "20220902", + "revision": "20221001", "rootUrl": "https://containeranalysis.googleapis.com/", "schemas": { "AnalysisCompleted": { @@ -1894,9 +1894,23 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact" + }, + "type": "array" + }, "objects": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects", "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE." + }, + "pythonPackages": { + "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -1924,6 +1938,51 @@ }, "type": "object" }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact": { + "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact", + "properties": { + "artifactId": { + "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "groupId": { + "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "path": { + "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.", + "type": "string" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + }, + "version": { + "description": "Maven `version` value used when uploading the artifact to Artifact Registry.", + "type": "string" + } + }, + "type": "object" + }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage": { + "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage", + "properties": { + "paths": { + "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and sometimes additionally an `.asc` file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + } + }, + "type": "object" + }, "ContaineranalysisGoogleDevtoolsCloudbuildV1Build": { "description": "A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $PROJECT_NUMBER: the project number of the build. - $LOCATION: the location/region of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.", "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Build", @@ -2098,7 +2157,7 @@ "additionalProperties": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan" }, - "description": "Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all specified images. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included.", + "description": "Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all artifacts including docker images and non docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included.", "readOnly": true, "type": "object" }, @@ -2608,12 +2667,12 @@ "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Results", "properties": { "artifactManifest": { - "description": "Path to the artifact manifest. Only populated when artifacts are uploaded.", + "description": "Path to the artifact manifest for non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage.", "type": "string" }, "artifactTiming": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", - "description": "Time to push all non-container artifacts." + "description": "Time to push all non-container artifacts to Cloud Storage." }, "buildStepImages": { "description": "List of build step digests, in the order corresponding to build step indices.", @@ -2637,10 +2696,24 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "Maven artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact" + }, + "type": "array" + }, "numArtifacts": { - "description": "Number of artifacts uploaded. Only populated when artifacts are uploaded.", + "description": "Number of non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage.", "format": "int64", "type": "string" + }, + "pythonPackages": { + "description": "Python artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -2803,6 +2876,46 @@ }, "type": "object" }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact": { + "description": "A Maven artifact uploaded using the MavenArtifact directive.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact", + "properties": { + "fileHashes": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes", + "description": "Hash types and values of the Maven Artifact." + }, + "pushTiming": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage": { + "description": "Artifact uploaded using the PythonPackage directive.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage", + "properties": { + "fileHashes": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes", + "description": "Hash types and values of the Python Artifact." + }, + "pushTiming": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume": { "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume", diff --git a/containeranalysis/v1alpha1/containeranalysis-gen.go b/containeranalysis/v1alpha1/containeranalysis-gen.go index 0ad4ca6763f..56da5c9359f 100644 --- a/containeranalysis/v1alpha1/containeranalysis-gen.go +++ b/containeranalysis/v1alpha1/containeranalysis-gen.go @@ -1278,6 +1278,14 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts struct { // fail to be pushed, the build is marked FAILURE. Images []string `json:"images,omitempty"` + // MavenArtifacts: A list of Maven artifacts to be uploaded to Artifact + // Registry upon successful completion of all build steps. Artifacts in + // the workspace matching specified paths globs will be uploaded to the + // specified Artifact Registry repository using the builder service + // account's credentials. If any artifacts fail to be pushed, the build + // is marked FAILURE. + MavenArtifacts []*ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact `json:"mavenArtifacts,omitempty"` + // Objects: A list of objects to be uploaded to Cloud Storage upon // successful completion of all build steps. Files in the workspace // matching specified paths globs will be uploaded to the specified @@ -1287,6 +1295,12 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts struct { // to be pushed, the build is marked FAILURE. Objects *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects `json:"objects,omitempty"` + // PythonPackages: A list of Python packages to be uploaded to Artifact + // Registry upon successful completion of all build steps. The build + // service account credentials will be used to perform the upload. If + // any objects fail to be pushed, the build is marked FAILURE. + PythonPackages []*ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "Images") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1351,6 +1365,96 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects) Ma return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact: A +// Maven artifact to upload to Artifact Registry upon successful +// completion of all build steps. +type ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact struct { + // ArtifactId: Maven `artifactId` value used when uploading the artifact + // to Artifact Registry. + ArtifactId string `json:"artifactId,omitempty"` + + // GroupId: Maven `groupId` value used when uploading the artifact to + // Artifact Registry. + GroupId string `json:"groupId,omitempty"` + + // Path: Path to an artifact in the build's workspace to be uploaded to + // Artifact Registry. This can be either an absolute path, e.g. + // /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path + // from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar. + Path string `json:"path,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" Artifact in the + // workspace specified by path will be uploaded to Artifact Registry + // with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // Version: Maven `version` value used when uploading the artifact to + // Artifact Registry. + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArtifactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArtifactId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage: +// Python package to upload to Artifact Registry upon successful +// completion of all build steps. A package can encapsulate multiple +// objects to be uploaded to a single repository. +type ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage struct { + // Paths: Path globs used to match files in the build's workspace. For + // Python/ Twine, this is usually `dist/*`, and sometimes additionally + // an `.asc` file. + Paths []string `json:"paths,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" Files in the + // workspace matching any path pattern will be uploaded to Artifact + // Registry with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Paths") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Paths") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ContaineranalysisGoogleDevtoolsCloudbuildV1Build: A build resource in // the Cloud Build API. At a high level, a `Build` describes where to // find source code, how to build it (for example, the builder image to @@ -1496,9 +1600,10 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Build struct { // Timing: Output only. Stores timing information for phases of the // build. Valid keys are: * BUILD: time to execute all build steps. * - // PUSH: time to push all specified images. * FETCHSOURCE: time to fetch - // source. * SETUPBUILD: time to set up build. If the build does not - // specify source or images, these keys will not be included. + // PUSH: time to push all artifacts including docker images and non + // docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: + // time to set up build. If the build does not specify source or images, + // these keys will not be included. Timing map[string]ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"timing,omitempty"` // Warnings: Output only. Non-fatal problems encountered during the @@ -2177,11 +2282,13 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource) MarshalJSON() ([ // ContaineranalysisGoogleDevtoolsCloudbuildV1Results: Artifacts created // by the build pipeline. type ContaineranalysisGoogleDevtoolsCloudbuildV1Results struct { - // ArtifactManifest: Path to the artifact manifest. Only populated when - // artifacts are uploaded. + // ArtifactManifest: Path to the artifact manifest for non-container + // artifacts uploaded to Cloud Storage. Only populated when artifacts + // are uploaded to Cloud Storage. ArtifactManifest string `json:"artifactManifest,omitempty"` - // ArtifactTiming: Time to push all non-container artifacts. + // ArtifactTiming: Time to push all non-container artifacts to Cloud + // Storage. ArtifactTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"artifactTiming,omitempty"` // BuildStepImages: List of build step digests, in the order @@ -2198,10 +2305,18 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Results struct { // Images: Container images that were built as a part of the build. Images []*ContaineranalysisGoogleDevtoolsCloudbuildV1BuiltImage `json:"images,omitempty"` - // NumArtifacts: Number of artifacts uploaded. Only populated when - // artifacts are uploaded. + // MavenArtifacts: Maven artifacts uploaded to Artifact Registry at the + // end of the build. + MavenArtifacts []*ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact `json:"mavenArtifacts,omitempty"` + + // NumArtifacts: Number of non-container artifacts uploaded to Cloud + // Storage. Only populated when artifacts are uploaded to Cloud Storage. NumArtifacts int64 `json:"numArtifacts,omitempty,string"` + // PythonPackages: Python artifacts uploaded to Artifact Registry at the + // end of the build. + PythonPackages []*ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "ArtifactManifest") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -2538,6 +2653,78 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan) MarshalJSON() ([]b return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact: A +// Maven artifact uploaded using the MavenArtifact directive. +type ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact struct { + // FileHashes: Hash types and values of the Maven Artifact. + FileHashes *ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage: +// Artifact uploaded using the PythonPackage directive. +type ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage struct { + // FileHashes: Hash types and values of the Python Artifact. + FileHashes *ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ContaineranalysisGoogleDevtoolsCloudbuildV1Volume: Volume describes a // Docker container volume which is mounted into build steps in order to // persist files across build step execution. diff --git a/containeranalysis/v1beta1/containeranalysis-api.json b/containeranalysis/v1beta1/containeranalysis-api.json index 1e70572f537..78bd0dc386c 100644 --- a/containeranalysis/v1beta1/containeranalysis-api.json +++ b/containeranalysis/v1beta1/containeranalysis-api.json @@ -853,7 +853,7 @@ } } }, - "revision": "20220902", + "revision": "20221001", "rootUrl": "https://containeranalysis.googleapis.com/", "schemas": { "AliasContext": { @@ -1624,9 +1624,23 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "A list of Maven artifacts to be uploaded to Artifact Registry upon successful completion of all build steps. Artifacts in the workspace matching specified paths globs will be uploaded to the specified Artifact Registry repository using the builder service account's credentials. If any artifacts fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact" + }, + "type": "array" + }, "objects": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects", "description": "A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps. Files in the workspace matching specified paths globs will be uploaded to the specified Cloud Storage location using the builder service account's credentials. The location and generation of the uploaded objects will be stored in the Build resource's results field. If any objects fail to be pushed, the build is marked FAILURE." + }, + "pythonPackages": { + "description": "A list of Python packages to be uploaded to Artifact Registry upon successful completion of all build steps. The build service account credentials will be used to perform the upload. If any objects fail to be pushed, the build is marked FAILURE.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -1654,6 +1668,51 @@ }, "type": "object" }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact": { + "description": "A Maven artifact to upload to Artifact Registry upon successful completion of all build steps.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact", + "properties": { + "artifactId": { + "description": "Maven `artifactId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "groupId": { + "description": "Maven `groupId` value used when uploading the artifact to Artifact Registry.", + "type": "string" + }, + "path": { + "description": "Path to an artifact in the build's workspace to be uploaded to Artifact Registry. This can be either an absolute path, e.g. /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar.", + "type": "string" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY\" Artifact in the workspace specified by path will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + }, + "version": { + "description": "Maven `version` value used when uploading the artifact to Artifact Registry.", + "type": "string" + } + }, + "type": "object" + }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage": { + "description": "Python package to upload to Artifact Registry upon successful completion of all build steps. A package can encapsulate multiple objects to be uploaded to a single repository.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage", + "properties": { + "paths": { + "description": "Path globs used to match files in the build's workspace. For Python/ Twine, this is usually `dist/*`, and sometimes additionally an `.asc` file.", + "items": { + "type": "string" + }, + "type": "array" + }, + "repository": { + "description": "Artifact Registry repository, in the form \"https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY\" Files in the workspace matching any path pattern will be uploaded to Artifact Registry with this location as a prefix.", + "type": "string" + } + }, + "type": "object" + }, "ContaineranalysisGoogleDevtoolsCloudbuildV1Build": { "description": "A build resource in the Cloud Build API. At a high level, a `Build` describes where to find source code, how to build it (for example, the builder image to run on the source), and where to store the built artifacts. Fields can include the following variables, which will be expanded when the build is created: - $PROJECT_ID: the project ID of the build. - $PROJECT_NUMBER: the project number of the build. - $LOCATION: the location/region of the build. - $BUILD_ID: the autogenerated ID of the build. - $REPO_NAME: the source repository name specified by RepoSource. - $BRANCH_NAME: the branch name specified by RepoSource. - $TAG_NAME: the tag name specified by RepoSource. - $REVISION_ID or $COMMIT_SHA: the commit SHA specified by RepoSource or resolved from the specified branch or tag. - $SHORT_SHA: first 7 characters of $REVISION_ID or $COMMIT_SHA.", "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Build", @@ -1828,7 +1887,7 @@ "additionalProperties": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan" }, - "description": "Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all specified images. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included.", + "description": "Output only. Stores timing information for phases of the build. Valid keys are: * BUILD: time to execute all build steps. * PUSH: time to push all artifacts including docker images and non docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: time to set up build. If the build does not specify source or images, these keys will not be included.", "readOnly": true, "type": "object" }, @@ -2338,12 +2397,12 @@ "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Results", "properties": { "artifactManifest": { - "description": "Path to the artifact manifest. Only populated when artifacts are uploaded.", + "description": "Path to the artifact manifest for non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage.", "type": "string" }, "artifactTiming": { "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", - "description": "Time to push all non-container artifacts." + "description": "Time to push all non-container artifacts to Cloud Storage." }, "buildStepImages": { "description": "List of build step digests, in the order corresponding to build step indices.", @@ -2367,10 +2426,24 @@ }, "type": "array" }, + "mavenArtifacts": { + "description": "Maven artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact" + }, + "type": "array" + }, "numArtifacts": { - "description": "Number of artifacts uploaded. Only populated when artifacts are uploaded.", + "description": "Number of non-container artifacts uploaded to Cloud Storage. Only populated when artifacts are uploaded to Cloud Storage.", "format": "int64", "type": "string" + }, + "pythonPackages": { + "description": "Python artifacts uploaded to Artifact Registry at the end of the build.", + "items": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage" + }, + "type": "array" } }, "type": "object" @@ -2533,6 +2606,46 @@ }, "type": "object" }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact": { + "description": "A Maven artifact uploaded using the MavenArtifact directive.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact", + "properties": { + "fileHashes": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes", + "description": "Hash types and values of the Maven Artifact." + }, + "pushTiming": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, + "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage": { + "description": "Artifact uploaded using the PythonPackage directive.", + "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage", + "properties": { + "fileHashes": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes", + "description": "Hash types and values of the Python Artifact." + }, + "pushTiming": { + "$ref": "ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan", + "description": "Output only. Stores timing information for pushing the specified artifact.", + "readOnly": true + }, + "uri": { + "description": "URI of the uploaded artifact.", + "type": "string" + } + }, + "type": "object" + }, "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume": { "description": "Volume describes a Docker container volume which is mounted into build steps in order to persist files across build step execution.", "id": "ContaineranalysisGoogleDevtoolsCloudbuildV1Volume", @@ -3438,6 +3551,20 @@ "format": "float", "type": "number" }, + "cvssVersion": { + "description": "Output only. CVSS version used to populate cvss_score and severity.", + "enum": [ + "CVSS_VERSION_UNSPECIFIED", + "CVSS_VERSION_2", + "CVSS_VERSION_3" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, "effectiveSeverity": { "description": "The distro assigned severity for this vulnerability when it is available, and note provider assigned severity when distro has not yet assigned a severity for this vulnerability. When there are multiple PackageIssues for this vulnerability, they can have different effective severities because some might be provided by the distro while others are provided by the language ecosystem for a language pack. For this reason, it is advised to use the effective severity on the PackageIssue level. In the case where multiple PackageIssues have differing effective severities, this field should be the highest severity for any of the PackageIssues.", "enum": [ @@ -4922,6 +5049,20 @@ "$ref": "CVSSv3", "description": "The full description of the CVSS for version 3." }, + "cvssVersion": { + "description": "CVSS version used to populate cvss_score and severity.", + "enum": [ + "CVSS_VERSION_UNSPECIFIED", + "CVSS_VERSION_2", + "CVSS_VERSION_3" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, "cwe": { "description": "A list of CWE for this vulnerability. For details, see: https://cwe.mitre.org/index.html", "items": { diff --git a/containeranalysis/v1beta1/containeranalysis-gen.go b/containeranalysis/v1beta1/containeranalysis-gen.go index 313508fb16c..6e8abbec0ee 100644 --- a/containeranalysis/v1beta1/containeranalysis-gen.go +++ b/containeranalysis/v1beta1/containeranalysis-gen.go @@ -1298,6 +1298,14 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts struct { // fail to be pushed, the build is marked FAILURE. Images []string `json:"images,omitempty"` + // MavenArtifacts: A list of Maven artifacts to be uploaded to Artifact + // Registry upon successful completion of all build steps. Artifacts in + // the workspace matching specified paths globs will be uploaded to the + // specified Artifact Registry repository using the builder service + // account's credentials. If any artifacts fail to be pushed, the build + // is marked FAILURE. + MavenArtifacts []*ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact `json:"mavenArtifacts,omitempty"` + // Objects: A list of objects to be uploaded to Cloud Storage upon // successful completion of all build steps. Files in the workspace // matching specified paths globs will be uploaded to the specified @@ -1307,6 +1315,12 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Artifacts struct { // to be pushed, the build is marked FAILURE. Objects *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects `json:"objects,omitempty"` + // PythonPackages: A list of Python packages to be uploaded to Artifact + // Registry upon successful completion of all build steps. The build + // service account credentials will be used to perform the upload. If + // any objects fail to be pushed, the build is marked FAILURE. + PythonPackages []*ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "Images") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -1371,6 +1385,96 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsArtifactObjects) Ma return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact: A +// Maven artifact to upload to Artifact Registry upon successful +// completion of all build steps. +type ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact struct { + // ArtifactId: Maven `artifactId` value used when uploading the artifact + // to Artifact Registry. + ArtifactId string `json:"artifactId,omitempty"` + + // GroupId: Maven `groupId` value used when uploading the artifact to + // Artifact Registry. + GroupId string `json:"groupId,omitempty"` + + // Path: Path to an artifact in the build's workspace to be uploaded to + // Artifact Registry. This can be either an absolute path, e.g. + // /workspace/my-app/target/my-app-1.0.SNAPSHOT.jar or a relative path + // from /workspace, e.g. my-app/target/my-app-1.0.SNAPSHOT.jar. + Path string `json:"path,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-maven.pkg.dev/$PROJECT/$REPOSITORY" Artifact in the + // workspace specified by path will be uploaded to Artifact Registry + // with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // Version: Maven `version` value used when uploading the artifact to + // Artifact Registry. + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArtifactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArtifactId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage: +// Python package to upload to Artifact Registry upon successful +// completion of all build steps. A package can encapsulate multiple +// objects to be uploaded to a single repository. +type ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage struct { + // Paths: Path globs used to match files in the build's workspace. For + // Python/ Twine, this is usually `dist/*`, and sometimes additionally + // an `.asc` file. + Paths []string `json:"paths,omitempty"` + + // Repository: Artifact Registry repository, in the form + // "https://$REGION-python.pkg.dev/$PROJECT/$REPOSITORY" Files in the + // workspace matching any path pattern will be uploaded to Artifact + // Registry with this location as a prefix. + Repository string `json:"repository,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Paths") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Paths") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1ArtifactsPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ContaineranalysisGoogleDevtoolsCloudbuildV1Build: A build resource in // the Cloud Build API. At a high level, a `Build` describes where to // find source code, how to build it (for example, the builder image to @@ -1516,9 +1620,10 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Build struct { // Timing: Output only. Stores timing information for phases of the // build. Valid keys are: * BUILD: time to execute all build steps. * - // PUSH: time to push all specified images. * FETCHSOURCE: time to fetch - // source. * SETUPBUILD: time to set up build. If the build does not - // specify source or images, these keys will not be included. + // PUSH: time to push all artifacts including docker images and non + // docker artifacts. * FETCHSOURCE: time to fetch source. * SETUPBUILD: + // time to set up build. If the build does not specify source or images, + // these keys will not be included. Timing map[string]ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"timing,omitempty"` // Warnings: Output only. Non-fatal problems encountered during the @@ -2197,11 +2302,13 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1RepoSource) MarshalJSON() ([ // ContaineranalysisGoogleDevtoolsCloudbuildV1Results: Artifacts created // by the build pipeline. type ContaineranalysisGoogleDevtoolsCloudbuildV1Results struct { - // ArtifactManifest: Path to the artifact manifest. Only populated when - // artifacts are uploaded. + // ArtifactManifest: Path to the artifact manifest for non-container + // artifacts uploaded to Cloud Storage. Only populated when artifacts + // are uploaded to Cloud Storage. ArtifactManifest string `json:"artifactManifest,omitempty"` - // ArtifactTiming: Time to push all non-container artifacts. + // ArtifactTiming: Time to push all non-container artifacts to Cloud + // Storage. ArtifactTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"artifactTiming,omitempty"` // BuildStepImages: List of build step digests, in the order @@ -2218,10 +2325,18 @@ type ContaineranalysisGoogleDevtoolsCloudbuildV1Results struct { // Images: Container images that were built as a part of the build. Images []*ContaineranalysisGoogleDevtoolsCloudbuildV1BuiltImage `json:"images,omitempty"` - // NumArtifacts: Number of artifacts uploaded. Only populated when - // artifacts are uploaded. + // MavenArtifacts: Maven artifacts uploaded to Artifact Registry at the + // end of the build. + MavenArtifacts []*ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact `json:"mavenArtifacts,omitempty"` + + // NumArtifacts: Number of non-container artifacts uploaded to Cloud + // Storage. Only populated when artifacts are uploaded to Cloud Storage. NumArtifacts int64 `json:"numArtifacts,omitempty,string"` + // PythonPackages: Python artifacts uploaded to Artifact Registry at the + // end of the build. + PythonPackages []*ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage `json:"pythonPackages,omitempty"` + // ForceSendFields is a list of field names (e.g. "ArtifactManifest") to // unconditionally include in API requests. By default, fields with // empty or default values are omitted from API requests. However, any @@ -2558,6 +2673,78 @@ func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan) MarshalJSON() ([]b return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) } +// ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact: A +// Maven artifact uploaded using the MavenArtifact directive. +type ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact struct { + // FileHashes: Hash types and values of the Maven Artifact. + FileHashes *ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedMavenArtifact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage: +// Artifact uploaded using the PythonPackage directive. +type ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage struct { + // FileHashes: Hash types and values of the Python Artifact. + FileHashes *ContaineranalysisGoogleDevtoolsCloudbuildV1FileHashes `json:"fileHashes,omitempty"` + + // PushTiming: Output only. Stores timing information for pushing the + // specified artifact. + PushTiming *ContaineranalysisGoogleDevtoolsCloudbuildV1TimeSpan `json:"pushTiming,omitempty"` + + // Uri: URI of the uploaded artifact. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileHashes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileHashes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage) MarshalJSON() ([]byte, error) { + type NoMethod ContaineranalysisGoogleDevtoolsCloudbuildV1UploadedPythonPackage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + // ContaineranalysisGoogleDevtoolsCloudbuildV1Volume: Volume describes a // Docker container volume which is mounted into build steps in order to // persist files across build step execution. @@ -4060,6 +4247,15 @@ type GrafeasV1beta1VulnerabilityDetails struct { // indicates high severity. CvssScore float64 `json:"cvssScore,omitempty"` + // CvssVersion: Output only. CVSS version used to populate cvss_score + // and severity. + // + // Possible values: + // "CVSS_VERSION_UNSPECIFIED" + // "CVSS_VERSION_2" + // "CVSS_VERSION_3" + CvssVersion string `json:"cvssVersion,omitempty"` + // EffectiveSeverity: The distro assigned severity for this // vulnerability when it is available, and note provider assigned // severity when distro has not yet assigned a severity for this @@ -6242,6 +6438,14 @@ type Vulnerability struct { // CvssV3: The full description of the CVSS for version 3. CvssV3 *CVSSv3 `json:"cvssV3,omitempty"` + // CvssVersion: CVSS version used to populate cvss_score and severity. + // + // Possible values: + // "CVSS_VERSION_UNSPECIFIED" + // "CVSS_VERSION_2" + // "CVSS_VERSION_3" + CvssVersion string `json:"cvssVersion,omitempty"` + // Cwe: A list of CWE for this vulnerability. For details, see: // https://cwe.mitre.org/index.html Cwe []string `json:"cwe,omitempty"` diff --git a/contentwarehouse/v1/contentwarehouse-api.json b/contentwarehouse/v1/contentwarehouse-api.json new file mode 100644 index 00000000000..f8047a7c771 --- /dev/null +++ b/contentwarehouse/v1/contentwarehouse-api.json @@ -0,0 +1,124512 @@ +{ + "auth": { + "oauth2": { + "scopes": { + "https://www.googleapis.com/auth/cloud-platform": { + "description": "See, edit, configure, and delete your Google Cloud data and see the email address for your Google Account." + } + } + } + }, + "basePath": "", + "baseUrl": "https://contentwarehouse.googleapis.com/", + "batchPath": "batch", + "canonicalName": "contentwarehouse", + "description": "", + "discoveryVersion": "v1", + "documentationLink": "https://cloud.google.com/document-warehouse", + "fullyEncodeReservedExpansion": true, + "icons": { + "x16": "http://www.google.com/images/icons/product/search-16.gif", + "x32": "http://www.google.com/images/icons/product/search-32.gif" + }, + "id": "contentwarehouse:v1", + "kind": "discovery#restDescription", + "mtlsRootUrl": "https://contentwarehouse.mtls.googleapis.com/", + "name": "contentwarehouse", + "ownerDomain": "google.com", + "ownerName": "Google", + "parameters": { + "$.xgafv": { + "description": "V1 error format.", + "enum": [ + "1", + "2" + ], + "enumDescriptions": [ + "v1 error format", + "v2 error format" + ], + "location": "query", + "type": "string" + }, + "access_token": { + "description": "OAuth access token.", + "location": "query", + "type": "string" + }, + "alt": { + "default": "json", + "description": "Data format for response.", + "enum": [ + "json", + "media", + "proto" + ], + "enumDescriptions": [ + "Responses with Content-Type of application/json", + "Media download with context-dependent Content-Type", + "Responses with Content-Type of application/x-protobuf" + ], + "location": "query", + "type": "string" + }, + "callback": { + "description": "JSONP", + "location": "query", + "type": "string" + }, + "fields": { + "description": "Selector specifying which fields to include in a partial response.", + "location": "query", + "type": "string" + }, + "key": { + "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.", + "location": "query", + "type": "string" + }, + "oauth_token": { + "description": "OAuth 2.0 token for the current user.", + "location": "query", + "type": "string" + }, + "prettyPrint": { + "default": "true", + "description": "Returns response with indentations and line breaks.", + "location": "query", + "type": "boolean" + }, + "quotaUser": { + "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.", + "location": "query", + "type": "string" + }, + "uploadType": { + "description": "Legacy upload protocol for media (e.g. \"media\", \"multipart\").", + "location": "query", + "type": "string" + }, + "upload_protocol": { + "description": "Upload protocol for media (e.g. \"raw\", \"multipart\").", + "location": "query", + "type": "string" + } + }, + "protocol": "rest", + "resources": { + "projects": { + "methods": { + "fetchAcl": { + "description": "Gets the access control policy for a resource. Returns NOT_FOUND error if the resource does not exist. Returns an empty policy if the resource exists but does not have a policy set.", + "flatPath": "v1/projects/{projectsId}:fetchAcl", + "httpMethod": "POST", + "id": "contentwarehouse.projects.fetchAcl", + "parameterOrder": [ + "resource" + ], + "parameters": { + "resource": { + "description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for project: projects/{project_number}.", + "location": "path", + "pattern": "^projects/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+resource}:fetchAcl", + "request": { + "$ref": "GoogleCloudContentwarehouseV1FetchAclRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1FetchAclResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "setAcl": { + "description": "Sets the access control policy for a resource. Replaces any existing policy.", + "flatPath": "v1/projects/{projectsId}:setAcl", + "httpMethod": "POST", + "id": "contentwarehouse.projects.setAcl", + "parameterOrder": [ + "resource" + ], + "parameters": { + "resource": { + "description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for project: projects/{project_number}.", + "location": "path", + "pattern": "^projects/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+resource}:setAcl", + "request": { + "$ref": "GoogleCloudContentwarehouseV1SetAclRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1SetAclResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + }, + "resources": { + "locations": { + "methods": { + "initialize": { + "description": "Provisions resources for given tenant project. Returns a long running operation.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}:initialize", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.initialize", + "parameterOrder": [ + "location" + ], + "parameters": { + "location": { + "description": "Required. The location to be initialized Format: projects/{project_number}/locations/{location}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+location}:initialize", + "request": { + "$ref": "GoogleCloudContentwarehouseV1InitializeProjectRequest" + }, + "response": { + "$ref": "GoogleLongrunningOperation" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + }, + "resources": { + "documentSchemas": { + "methods": { + "create": { + "description": "Creates a document schema.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documentSchemas.create", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The parent name.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/documentSchemas", + "request": { + "$ref": "GoogleCloudContentwarehouseV1DocumentSchema" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1DocumentSchema" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes a document schema. Returns NOT_FOUND if the document schema does not exist.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}", + "httpMethod": "DELETE", + "id": "contentwarehouse.projects.locations.documentSchemas.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document schema to delete.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets a document schema. Returns NOT_FOUND if the document schema does not exist.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}", + "httpMethod": "GET", + "id": "contentwarehouse.projects.locations.documentSchemas.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document schema to retrieve.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "response": { + "$ref": "GoogleCloudContentwarehouseV1DocumentSchema" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists document schemas.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas", + "httpMethod": "GET", + "id": "contentwarehouse.projects.locations.documentSchemas.list", + "parameterOrder": [ + "parent" + ], + "parameters": { + "pageSize": { + "description": "The maximum number of document schemas to return. The service may return fewer than this value. If unspecified, at most 50 document schemas will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "A page token, received from a previous `ListDocumentSchemas` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListDocumentSchemas` must match the call that provided the page token.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. The parent, which owns this collection of document schemas. Format: projects/{project_number}/locations/{location}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/documentSchemas", + "response": { + "$ref": "GoogleCloudContentwarehouseV1ListDocumentSchemasResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Updates a Document Schema. Returns INVALID_ARGUMENT if the name of the Document Schema is non-empty and does not equal the existing name. Supports only appending new properties and updating existing properties will result into INVALID_ARGUMENT.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documentSchemas/{documentSchemasId}", + "httpMethod": "PATCH", + "id": "contentwarehouse.projects.locations.documentSchemas.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document schema to update. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documentSchemas/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "request": { + "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1DocumentSchema" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + }, + "documents": { + "methods": { + "create": { + "description": "Creates a document.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.create", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/documents", + "request": { + "$ref": "GoogleCloudContentwarehouseV1CreateDocumentRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1CreateDocumentResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes a document. Returns NOT_FOUND if the document does not exist.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:delete", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document to delete. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}:delete", + "request": { + "$ref": "GoogleCloudContentwarehouseV1DeleteDocumentRequest" + }, + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "fetchAcl": { + "description": "Gets the access control policy for a resource. Returns NOT_FOUND error if the resource does not exist. Returns an empty policy if the resource exists but does not have a policy set.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:fetchAcl", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.fetchAcl", + "parameterOrder": [ + "resource" + ], + "parameters": { + "resource": { + "description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for project: projects/{project_number}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+resource}:fetchAcl", + "request": { + "$ref": "GoogleCloudContentwarehouseV1FetchAclRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1FetchAclResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets a document. Returns NOT_FOUND if the document does not exist.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:get", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document to retrieve. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}:get", + "request": { + "$ref": "GoogleCloudContentwarehouseV1GetDocumentRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1Document" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "linkedSources": { + "description": "Return all source document-links from the document.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/linkedSources", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.linkedSources", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The name of the document, for which all source links are returned. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/linkedSources", + "request": { + "$ref": "GoogleCloudContentwarehouseV1ListLinkedSourcesRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1ListLinkedSourcesResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "linkedTargets": { + "description": "Return all target document-links from the document.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/linkedTargets", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.linkedTargets", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The name of the document, for which all target links are returned. Format: projects/{project_number}/locations/{location}/documents/{target_document_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/linkedTargets", + "request": { + "$ref": "GoogleCloudContentwarehouseV1ListLinkedTargetsRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1ListLinkedTargetsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Updates a document. Returns INVALID_ARGUMENT if the name of the document is non-empty and does not equal the existing name.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}", + "httpMethod": "PATCH", + "id": "contentwarehouse.projects.locations.documents.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document to update. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "request": { + "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "search": { + "description": "Searches for documents using provided SearchDocumentsRequest. This call only returns documents that the caller has permission to search against.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents:search", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.search", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The parent, which owns this collection of documents. Format: projects/{project_number}/locations/{location}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/documents:search", + "request": { + "$ref": "GoogleCloudContentwarehouseV1SearchDocumentsRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1SearchDocumentsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "setAcl": { + "description": "Sets the access control policy for a resource. Replaces any existing policy.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}:setAcl", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.setAcl", + "parameterOrder": [ + "resource" + ], + "parameters": { + "resource": { + "description": "Required. REQUIRED: The resource for which the policy is being requested. Format for document: projects/{project_number}/locations/{location}/documents/{document_id}. Format for project: projects/{project_number}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+resource}:setAcl", + "request": { + "$ref": "GoogleCloudContentwarehouseV1SetAclRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1SetAclResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + }, + "resources": { + "documentLinks": { + "methods": { + "create": { + "description": "Create a link between a source document and a target document.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/documentLinks", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.documentLinks.create", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. Parent of the document-link to be created. parent of document-link should be a document. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/documentLinks", + "request": { + "$ref": "GoogleCloudContentwarehouseV1CreateDocumentLinkRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1DocumentLink" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Remove the link between the source and target documents.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/{documentsId}/documentLinks/{documentLinksId}:delete", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.documentLinks.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document-link to be deleted. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}/documentLinks/{document_link_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/[^/]+/documentLinks/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}:delete", + "request": { + "$ref": "GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest" + }, + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + }, + "referenceId": { + "methods": { + "delete": { + "description": "Deletes a document. Returns NOT_FOUND if the document does not exist.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}:delete", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.referenceId.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document to delete. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}:delete", + "request": { + "$ref": "GoogleCloudContentwarehouseV1DeleteDocumentRequest" + }, + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets a document. Returns NOT_FOUND if the document does not exist.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}:get", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.documents.referenceId.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document to retrieve. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}:get", + "request": { + "$ref": "GoogleCloudContentwarehouseV1GetDocumentRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1Document" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Updates a document. Returns INVALID_ARGUMENT if the name of the document is non-empty and does not equal the existing name.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/documents/referenceId/{referenceIdId}", + "httpMethod": "PATCH", + "id": "contentwarehouse.projects.locations.documents.referenceId.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the document to update. Format: projects/{project_number}/locations/{location}/documents/{document_id} or projects/{project_number}/locations/{location}/documents/referenceId/{reference_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/documents/referenceId/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "request": { + "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1UpdateDocumentResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + } + } + }, + "ruleSets": { + "methods": { + "create": { + "description": "Creates a ruleset.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.ruleSets.create", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/ruleSets", + "request": { + "$ref": "GoogleCloudContentwarehouseV1RuleSet" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1RuleSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes a ruleset. Returns NOT_FOUND if the document does not exist.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}", + "httpMethod": "DELETE", + "id": "contentwarehouse.projects.locations.ruleSets.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the rule set to delete. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets a ruleset. Returns NOT_FOUND if the ruleset does not exist.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}", + "httpMethod": "GET", + "id": "contentwarehouse.projects.locations.ruleSets.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the rule set to retrieve. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "response": { + "$ref": "GoogleCloudContentwarehouseV1RuleSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Lists rulesets.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets", + "httpMethod": "GET", + "id": "contentwarehouse.projects.locations.ruleSets.list", + "parameterOrder": [ + "parent" + ], + "parameters": { + "pageSize": { + "description": "The maximum number of rule sets to return. The service may return fewer than this value. If unspecified, at most 50 rule sets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "A page token, received from a previous `ListRuleSets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListRuleSets` must match the call that provided the page token.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. The parent, which owns this collection of document. Format: projects/{project_number}/locations/{location}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/ruleSets", + "response": { + "$ref": "GoogleCloudContentwarehouseV1ListRuleSetsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Updates a ruleset. Returns INVALID_ARGUMENT if the name of the ruleset is non-empty and does not equal the existing name.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/ruleSets/{ruleSetsId}", + "httpMethod": "PATCH", + "id": "contentwarehouse.projects.locations.ruleSets.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the rule set to update. Format: projects/{project_number}/locations/{location}/ruleSets/{rule_set_id}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/ruleSets/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "request": { + "$ref": "GoogleCloudContentwarehouseV1UpdateRuleSetRequest" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1RuleSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + }, + "synonymSets": { + "methods": { + "create": { + "description": "Creates a SynonymSet for a single context. Throws an ALREADY_EXISTS exception if a synonymset already exists for the context.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets", + "httpMethod": "POST", + "id": "contentwarehouse.projects.locations.synonymSets.create", + "parameterOrder": [ + "parent" + ], + "parameters": { + "parent": { + "description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/synonymSets", + "request": { + "$ref": "GoogleCloudContentwarehouseV1SynonymSet" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1SynonymSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "delete": { + "description": "Deletes a SynonymSet for a given context. Throws a NOT_FOUND exception if the SynonymSet is not found.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}", + "httpMethod": "DELETE", + "id": "contentwarehouse.projects.locations.synonymSets.delete", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the synonymSet to delete Format: projects/{project_number}/locations/{location}/synonymSets/{context}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "response": { + "$ref": "GoogleProtobufEmpty" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "get": { + "description": "Gets a SynonymSet for a particular context. Throws a NOT_FOUND exception if the Synonymset does not exist", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}", + "httpMethod": "GET", + "id": "contentwarehouse.projects.locations.synonymSets.get", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the synonymSet to retrieve Format: projects/{project_number}/locations/{location}/synonymSets/{context}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "response": { + "$ref": "GoogleCloudContentwarehouseV1SynonymSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "list": { + "description": "Returns all SynonymSets (for all contexts) for the specified location.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets", + "httpMethod": "GET", + "id": "contentwarehouse.projects.locations.synonymSets.list", + "parameterOrder": [ + "parent" + ], + "parameters": { + "pageSize": { + "description": "The maximum number of synonymSets to return. The service may return fewer than this value. If unspecified, at most 50 rule sets will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.", + "format": "int32", + "location": "query", + "type": "integer" + }, + "pageToken": { + "description": "A page token, received from a previous `ListSynonymSets` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListSynonymSets` must match the call that provided the page token.", + "location": "query", + "type": "string" + }, + "parent": { + "description": "Required. The parent name. Format: projects/{project_number}/locations/{location}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+parent}/synonymSets", + "response": { + "$ref": "GoogleCloudContentwarehouseV1ListSynonymSetsResponse" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + }, + "patch": { + "description": "Remove the existing SynonymSet for the context and replaces it with a new one. Throws a NOT_FOUND exception if the SynonymSet is not found.", + "flatPath": "v1/projects/{projectsId}/locations/{locationsId}/synonymSets/{synonymSetsId}", + "httpMethod": "PATCH", + "id": "contentwarehouse.projects.locations.synonymSets.patch", + "parameterOrder": [ + "name" + ], + "parameters": { + "name": { + "description": "Required. The name of the synonymSet to update Format: projects/{project_number}/locations/{location}/synonymSets/{context}.", + "location": "path", + "pattern": "^projects/[^/]+/locations/[^/]+/synonymSets/[^/]+$", + "required": true, + "type": "string" + } + }, + "path": "v1/{+name}", + "request": { + "$ref": "GoogleCloudContentwarehouseV1SynonymSet" + }, + "response": { + "$ref": "GoogleCloudContentwarehouseV1SynonymSet" + }, + "scopes": [ + "https://www.googleapis.com/auth/cloud-platform" + ] + } + } + } + } + } + } + } + }, + "revision": "20220920", + "rootUrl": "https://contentwarehouse.googleapis.com/", + "schemas": { + "AbuseiamAbuseType": { + "id": "AbuseiamAbuseType", + "properties": { + "id": { + "enum": [ + "NONE", + "OTHER_ABUSE", + "CHILD_PORN", + "PORNOGRAPHY", + "SPAM", + "PHISHING", + "HATE", + "TOS_OTHER", + "MALWARE", + "MALICIOUS_JAVASCRIPT", + "NOT_FAMILY_SAFE", + "IMPERSONATION", + "PEDOPHILIA", + "PERSONAL_INFO", + "COPYRIGHT", + "HIGH_RISK", + "VIOLENCE", + "UNSAFE_RACY", + "UNSAFE_OTHER", + "FAKE_USER", + "NAME_VIOLATION", + "PLUSONE_VIOLATION", + "DEFAMATION", + "TRADEMARK", + "COURT_ORDER", + "GOVERNMENT_ORDER", + "LOCAL_LAWS", + "PRIVACY", + "ES_BLACKLIST", + "ES_COMMENTS_BLACKLIST", + "HARASSMENT", + "COMPROMISED", + "LOW_QUALITY", + "API_VIOLATION", + "REGULATED", + "CAROUSEL_FRAME_BLACKLIST", + "QUOTA_EXCEEDED", + "FOUNTAIN_BLACKLIST", + "COPPA_REGULATED", + "DOXXING", + "SOFT_HATE", + "SOFT_HARASSMENT", + "OBNOXIOUS", + "UNWANTED", + "NOT_UNICORN_SAFE", + "FAKE_ENGAGEMENT", + "COUNTERFEIT", + "CTM" + ], + "enumDescriptions": [ + "no abuse", + "generic abuse that isn't enumerated here", + "illegal child porn images", + "", + "", + "", + "", + "To be only used for Multi-Image Review.", + "MALWARE includes viruses, worms, trojans, adware and even potentially unwanted software which may not necessarily be harmful.", + "", + "DEPRECATED - For safe searches, etc.", + "", + "Not illegal, but image or text content", + "promoting or related to young pornography Personally identifiable information", + "", + "High risk reviews for any client.", + "", + "Content that is unsafe because it is sexually", + "suggestive/racy Content that is unsafe for other reasons than", + "being sexually suggestive/racy. Category for users who are not real", + "User's name that violates policy.", + "Violates PLUSONE policy.", + "Defamation claims", + "Trademark violations where Google could be", + "liable Third-party court orders", + "Government request, regardless of reason", + "Other misc country-specific laws", + "Local privacy laws", + "Internal type to check es content against", + "the ocelot blacklist. Internal type.", + "Consistent harassing behaviour directed", + "towards a person. Hijacked or Compromised profile.", + "Low quality/Annoying content.", + "Violates APIARY policy.", + "Contains regulated products and services, such as pharmaceuticals, alcohol, tobacco, etc. For details, https://sites.google.com/a/google.com/crt-policy-site/regulated", + "Internal type.", + "Quota exceeded for the action.", + "Internal type.", + "Contains content regulated by COPPA.", + "Revealing personal/protected information.", + "Pattern of behavior verdicts. Used to aggregate verdicts that aren't typically bad enough for one of the above verdicts, but something we want to keep track of in cases of rotten behavior. Hate without incitement", + "Harassment that does meet the harm bar.", + "Obnoxious, Lousy behavior, not against TOS.", + "Content targeted at a person who considered", + "Not safe for kids.", + "Engagements that are not organic.", + "Promotion of counterfeit product claims.", + "Circumvention of Technological measures" + ], + "type": "string" + }, + "subtype": { + "description": "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.", + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamAgeRestriction": { + "id": "AbuseiamAgeRestriction", + "properties": { + "ageYears": { + "description": "This restriction applies if the user is between [min_age_years, age_years) years old.", + "format": "int32", + "type": "integer" + }, + "minAgeYears": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AbuseiamAndRestriction": { + "id": "AbuseiamAndRestriction", + "properties": { + "child": { + "description": "This restriction applies if all of the children apply.", + "items": { + "$ref": "AbuseiamUserRestriction" + }, + "type": "array" + } + }, + "type": "object" + }, + "AbuseiamClient": { + "description": "A client is be a Google product, or subproduct that provides content for AbuseIAm to classify.", + "id": "AbuseiamClient", + "properties": { + "id": { + "enum": [ + "ABUSE_TEAM", + "SQE", + "SEARCH", + "POSTINI", + "BLOGGER", + "ORKUT", + "ZIPIT", + "GROUPS", + "RIPTIDE", + "GADGETS", + "SITES", + "READER", + "DOCS", + "U2U", + "YOUTUBE", + "POPTART", + "COSMO", + "PROFILES", + "KNOL", + "SKETCHUP", + "CALENDAR", + "HOTSHOTS", + "TRIKI", + "MAPS", + "COMMUNITY_TRANSLATION", + "WRITELY", + "SPREADSHEET_FORM", + "SPREADSHEET", + "EXPLORER", + "FINANCE", + "GMR", + "LAIBA", + "CONFUCIUS", + "PRESENTATION", + "CHROME_EXTENSION", + "WENDA", + "TACOTOWN", + "KRAKEN", + "URL_SHORTENER", + "WAREHOUSE", + "ANDROID_VM", + "CODESITE", + "FRIEND_CONNECT", + "GEOWIKI", + "GOOGLE_LABS", + "HELP_CENTER", + "SEARCHWIKI", + "SIDEWIKI", + "TOPIC_SEARCH", + "VIDEO", + "GOOGLEBASE", + "FEEDBURNER", + "PUBLISHER_QUALITY", + "NOTEBOOK", + "SMARTLISTS", + "ENTERPRISE_MARKETPLACE", + "BOOKS", + "IGOOGLE", + "USENET", + "TRANSLATE", + "PERFECT_STREAM", + "PHOTOS", + "AFMA", + "LIKES", + "QUESTIONS", + "SKYJAM", + "MIC", + "ANDROID_MARKET", + "CHROME_WEBSTORE", + "FINSKY", + "BARNOWL", + "STREET_VIEW", + "ADCONNECT", + "ES", + "HELLO", + "TRADER", + "SCHEMER", + "ANDROID", + "MINE", + "GAIA", + "GOGGLES", + "SIGNUP", + "BABEL", + "CHECKOUT", + "TASTEMAKER", + "STRATUS", + "DRAGONFLY", + "APIARY", + "CAROUSEL", + "FOUNTAIN", + "GEOPIX", + "VILLAGE", + "KIX", + "AMARNA", + "GINKGO", + "TEE", + "SHOPPING", + "SLAM", + "APPENGINE", + "GUNS", + "CULTURAL", + "COMPUTEENGINE", + "BIGSTORE", + "COPACABANA", + "ANALYTICS", + "GRANDCENTRAL", + "GMAIL", + "GLASS", + "CRISIS_RESPONSE", + "GJOBS", + "HAZMAT", + "SAFE_BROWSING", + "CLOUD", + "PANTHEON", + "CLUSTER", + "KEEP", + "APP_HISTORY", + "COMMERCIAL_ENTITY", + "ARES_DATA_PROVIDER", + "ARES_DATA_WRITER", + "BIZBUILDER", + "RITZ", + "POLLS", + "APPINVITE" + ], + "enumDescriptions": [ + "", + "Search Quality Eval", + "Web Search.", + "", + "", + "", + "", + "", + "", + "OpenSocial", + "", + "", + "Obsolete. Use WRITELY.", + "Obsolete. Merged into Google Groups.", + "", + "Obsolete.", + "", + "", + "Obsolete.", + "", + "", + "", + "Obsolete.", + "", + "", + "Being superseded by KIX soon.", + "Freebird forms only.", + "Trix, and Bluebird forms.", + "Blobs stored by explorer.", + "Obsolete.", + "", + "Obsolete. Product has been shut down.", + "Obsolete. Product has been shut down.", + "", + "Obsolete. It will be replaced by CHROME_WEBSTORE", + "Obsolete. It has been merged into Confucius.", + "Obsolete. Has been replaced with ES.", + "Obsolete.", + "", + "", + "", + "", + "", + "", + "", + "Obsolete.", + "Obsolete.", + "Obsolete.", + "Obsolete.", + "", + "", + "", + "", + "Obsolete.", + "", + "", + "", + "", + "", + "", + "Obsolete.", + "", + "Obsolete.", + "", + "", + "", + "Obsolete.", + "", + "", + "", + "", + "", + "Obsolete.", + "Emerald Sea.", + "Obsolete. Project has been terminated.", + "", + "", + "Android and its clients/subservice.", + "Obsolete.", + "", + "Obsolete.", + "", + "", + "", + "", + "Stratus uses the corpus name as subservice.", + "Obsolete.", + "API integration with DevConsole.", + "ES FrameService traffic (initialy intended for Diary).", + "ES content from fountain widget.", + "Photo content in geo (e.g. Google+ Local).", + "UGC for knowledge graph", + "Replaces WRITELY.", + "Image search indexing pipeline team.", + "Social shopping.", + "Obsolete. Helpouts has been shut down.", + "Product reviews.", + "SLAM server", + "App Engine", + "Google Unified Notifications Service", + "Cultural Institute products.", + "Compute Engine.", + "Big Store.", + "Service that keeps a COPPA content list.", + "Google Analytics and its subservices.", + "Google Voice.", + "Gmail.", + "Project Glass.", + "OBSOLETE - Google.org Crisis Response UGC.", + "Garage, or G+ Jobs.", + "Hazmat, or Child Safety Server.", + "Safe browsing team (Mawler, Ictis, anti-phishing).", + "Common client for Cloud services.", + "Cloud main front end console.", + "Common client for Cluff pipelines.", + "Google Keep client.", + "App History.", + "For expanding commercial entity graph: go/daisy-design", + "Access data provided by Ares. go/project-ares for more details.", + "", + "Local businesses.", + "Google Sheets (this and SPREADSHEET_FORM replace SPREADSHEET)", + "Google Polls client.", + "Social Platform AppInvite (go/appinvite)." + ], + "type": "string" + }, + "subservice": { + "description": "The name of the subservice within a client. This subservice can be used to affect the flow of decision script, or selection of backend classifiers. For example, StreetView may want to specify a panel is insufficiently blurred (maybe there is a lisense plate or public sex, etc), which requires manual review then the subservice might be \"blurring\".", + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamClusterEvaluationContext": { + "description": "Extra information regarding evaluations received through cluster review.", + "id": "AbuseiamClusterEvaluationContext", + "properties": { + "clusterFamily": { + "description": "The family of the cluster where the case received the evaluation.", + "type": "string" + }, + "clusterRowkey": { + "description": "The AbuseIAm rowkey of the cluster where the case received an evaluation.", + "type": "string" + }, + "gaiaIdToEscalate": { + "description": "The gaia id of a mail box that ops can send inquiries to for appeals. Used only by user clusters to fill a required gatekeeper param. See gaia_disableserver.DisableSpec.escalate_to field.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamConstantRestriction": { + "id": "AbuseiamConstantRestriction", + "properties": { + "type": { + "description": "A constant of type TRUE always applies, and of type FALSE never applies.", + "enum": [ + "ALWAYS_TRUE", + "ALWAYS_FALSE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamContentRestriction": { + "description": "Pair of Verdicts used for ProjectR age/geo gating. See http://go/projectr for more information.", + "id": "AbuseiamContentRestriction", + "properties": { + "adminVerdict": { + "description": "Takedowns specified by admins via AbuseIAm", + "items": { + "$ref": "AbuseiamVerdict" + }, + "type": "array" + }, + "userVerdict": { + "description": "User-specified takedowns", + "items": { + "$ref": "AbuseiamVerdict" + }, + "type": "array" + } + }, + "type": "object" + }, + "AbuseiamEvaluation": { + "description": "Backends return Evaluations to AbuseIAm. One of the things Evaluations are used for is to explain Verdicts.", + "id": "AbuseiamEvaluation", + "properties": { + "abuseType": { + "$ref": "AbuseiamAbuseType" + }, + "backend": { + "description": "Who creates this Evaluation. This field is required.", + "enum": [ + "UNKNOWN", + "ADMIN", + "GRADS", + "OCELOT", + "SPAMIAM", + "MANUAL_REVIEW", + "MAWLER", + "SNEAKY_JS", + "DOWNLOADER", + "PORN_CLASSIFIER", + "GIBBERISH_DETECTOR", + "ANTIVIRUS", + "GAUSS", + "REALUSERS", + "USERRANK", + "GRADS_AGGRESSIVE", + "BULK_ACTION", + "BADWORD", + "GAIA", + "LINKS_COUNT", + "RE_RULE", + "SLAM", + "AUTHORRANK", + "USERRANK_BADNESS", + "GAUSS_EXPLICIT", + "GAUSS_IMPLICIT", + "RETRIEVE_MESSAGE", + "SPAM_REPORT", + "SQUEAL", + "BLOGGER_LOGS", + "TRUSTRANK_PHISHING", + "CATFOOD", + "IMAGE_PORN_CLASSIFIER", + "OCELOT_IMPORT", + "FIFE_IMAGE_FETCHER", + "FAST_RISING_FEATURES", + "BOTGUARD", + "NAME_CHECKER", + "CHEETAH", + "GALLIFREY", + "OCELOT_DELETE", + "RULE", + "FOCUS", + "VIDEO_THUMBNAILER", + "PATTERNLIST", + "METADATA", + "METADATA_IMPORT", + "NAME_DETECTOR", + "SHINGLE_COMPUTER", + "WIGGUM", + "BINARY_EXPLORATION", + "REVNET", + "FURS", + "YOUTUBE_CLASSIFIER", + "IDV", + "CLUSTERCAT", + "CHEETAH_IMPORT", + "CHEETAH_READ", + "BOTGUARD_DECODE", + "QUOTASERVER", + "YOUTUBE", + "BLOGGER", + "SOCIAL_GRAPH", + "WEB_SIGNALS", + "TRAWLER", + "NOTIFICATIONS", + "CASES", + "BADURLS", + "LINK_IMPORT", + "SHINGLE_DEDUPER", + "DEV_CONSOLE", + "METADATA_QUERY", + "PLUS_PAGE", + "YOUTUBE_VIDEO_INFO", + "GOOGLE_ADMIN", + "RESPAY", + "COOKBOOK", + "EASY_LEARN", + "QUALITY_SAMPLER", + "BLOBSTORE", + "OWNER", + "POLICY", + "EXTERNAL", + "ABUSEIAM_FEEDBACK", + "BIGSTORE", + "PHOTO_SERVICE", + "GRADS_RELATED", + "REAPER", + "GATEKEEPER", + "VIPER", + "MSISDN", + "VIDEO_REVIEW", + "CSAI_MATCH", + "REDQUEEN", + "STREAMER_INDEXER", + "DREMEL", + "VISUAL_SEARCH_SERVICE_PORN", + "VISUAL_SEARCH_SERVICE_OCR", + "IMPLICIT_SOCIAL_GRAPH", + "EASY_LEARN_BLEND", + "USER_AURA", + "GOOPS", + "ANDROID_CHECKIN", + "ARES_DATA_PROVIDER", + "DROIDGUARD_VERDICT", + "ARES_DATA_WRITER", + "ADAPTIVE_QUOTA", + "AIAPLX", + "INFAME", + "ARES", + "VISUAL_SEARCH_SERVICE_ICA", + "VISUAL_SEARCH_SERVICE_BUTTON_DETECTION", + "VISUAL_SEARCH_SERVICE_LOGO_DETECTION" + ], + "enumDescriptions": [ + "", + "Eval directly from the AbuseIAm server.", + "", + "", + "", + "", + "", + "Deprecated and code removed.", + "", + "Text-based porn classifier.", + "Language model-based gibberish detector.", + "", + "Gauss positive score.", + "", + "Gmail userrank goodness score.", + "", + "Intended for manually executed bulk actions.", + "Deprecated. Please use PATTERNLIST instead.", + "Gaia account maninuplation (disable, enable).", + "", + "The most common type of rule.", + "", + "Authorrank.percentile -\u003e score.", + "Gmail userrank badness score.", + "", + "", + "For message retrieving only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Special rule in decision scripts.", + "", + "Deprecated. Do not use. Use CHEETAH_IMPORT", + "", + "", + "For miscellaneous rules in decision scripts", + "that are not separate backends.", + "", + "Check texts against a list of regex patterns.", + "Reads data from metadata store (aka BadWolf).", + "Metadata import adapter.", + "Name detector adapter.", + "Computes shingles for text messages.", + "Does search-by-image using Wiggum Server.", + "Slow backend. See http://go/bineval.", + "Review graph analysis, stored in metadata.", + "", + "Classifies messages using the youtube models.", + "Reads UserProfile from the IDV server.", + "", + "Adapter that writes to Cheetah.", + "Adapter that reads from Cheetah.", + "Adapter that decodes BotGuard response.", + "Quota server adapter.", + "Video classification from youtube.", + "", + "Evaluation from SocialGraph adapter.", + "", + "", + "Adapter that sends notifications to users.", + "Adapter that interacts with Cases.", + "", + "Adatper that imports link signals.", + "Badwolf based shingle deduper.", + "Dev Console info for cloud projects.", + "Rich query facility for BadWolf.", + "Adapter for querying pluspage info.", + "Queries video info from YT.", + "Google Admin for manual operations.", + "Clould billing information and termination.", + "Matched to some Cookbook recipes.", + "Machine learning models evaluations.", + "Decides if a message is sampled for quality.", + "Blobstore adapter.", + "For evaluation initiated by content owner.", + "For evaluation generated according to policy.", + "For evaluations generated by services outside", + "AbuseIAm. Adapter that sends feedbacks between clients.", + "Adapters that access Bigstore files.", + "Adapter that queries Photo Service.", + "Fetch grads related accounts.", + "Site reputation service by safe browsing team", + "Gaia disableserver.", + "Adapters that run a Viper graph.", + "Phone metadata adapter.", + "The YouTube Video review service.", + "Video matching for CSAI.", + "RedQueen reputation adapter.", + "Streamer Indexer Service to get locations", + "of a video for various formats. Dremel service.", + "Visual search service for porn scores.", + "Visual search service for OCR.", + "implicit social graph for affinity scores", + "Blend Service for Easy Learn (ML models)", + "User aura service.", + "Goops adapter used for publishing messages.", + "Android checkin data including device info", + "Adapter that fetches data from Ares.", + "Retrieves droidguard verdict for the device.", + "Adapter that writes data into Ares.", + "Adapter to talk to Adaptive Quota system.", + "For evaluations derived from aia-plx queries.", + "For evaluations derived from infame.", + "For evaluations generated by Ares.", + "Visual search service for ICA.", + "", + "Visual search service for" + ], + "type": "string" + }, + "clusterEvaluationContext": { + "$ref": "AbuseiamClusterEvaluationContext", + "description": "Extra information regarding the cluster review context where the case received the evaluation." + }, + "comment": { + "description": "Backends can choose to put some debug info in addition to abuse_type, score, and status.", + "type": "string" + }, + "feature": { + "description": "A set of repeated features to allow adapters to return semi structured data. Please, prefer using feature instead of the old misc_data field since it supports richer and more structured data to be passed back.", + "items": { + "$ref": "AbuseiamFeature" + }, + "type": "array" + }, + "manualReviewInfo": { + "$ref": "AbuseiamManualReviewEvaluationInfo", + "description": "Information about the manual review, for manual review evaluations. Do NOT expect this field to be set if `backend != MANUAL_REVIEW`." + }, + "miscData": { + "description": "This field is used to store miscellaneous information that Backend might provide. If you find youself here considering to use this field, please prefer using the repeated feature field below instead. It supports a richer structure for passing complex data back from the backend.", + "items": { + "$ref": "AbuseiamNameValuePair" + }, + "type": "array" + }, + "processTimeMillisecs": { + "description": "Time in milliseconds when the Backend processed this Evaluation.", + "format": "int64", + "type": "string" + }, + "processedMicros": { + "description": "When the evaluation was processed by the decision script.", + "format": "int64", + "type": "string" + }, + "region": { + "description": "The list of regions where the evaluation applies.", + "items": { + "$ref": "AbuseiamRegion" + }, + "type": "array" + }, + "score": { + "format": "double", + "type": "number" + }, + "status": { + "enum": [ + "OK", + "ERROR" + ], + "enumDescriptions": [ + "", + "The Backend failed to process the target." + ], + "type": "string" + }, + "target": { + "$ref": "AbuseiamTarget" + }, + "timestampMicros": { + "description": "When the Evaluation was generated.", + "format": "int64", + "type": "string" + }, + "userRestriction": { + "$ref": "AbuseiamUserRestriction", + "description": "A boolean expression tree used to define the restrictions where the verdict applies. Please use java/com/google/ccc/abuse/abuseiam/client/TakedownManager.java to evaluate this proto." + }, + "version": { + "description": "Version of Backend. For rules, this string is the only way to differentiate between them.", + "type": "string" + }, + "videoReviewData": { + "$ref": "AbuseiamVideoReviewData", + "description": "Information about the video review, for video review evaluations. Do NOT expect this field to be set if `backend != VIDEO_REVIEW`." + } + }, + "type": "object" + }, + "AbuseiamFeature": { + "id": "AbuseiamFeature", + "properties": { + "booleanValue": { + "description": "Exactly one of the following should be filled in.", + "type": "boolean" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "featureCount": { + "description": "Useful for applications that need to know how many times a specific feature occurs", + "format": "int64", + "type": "string" + }, + "int64Value": { + "description": "Useful for timestamps, or for numerical features where it is helpful for decision scripts to have exact values.", + "format": "int64", + "type": "string" + }, + "integerValue": { + "description": "integer value field is deprecated and shall only be used for passing the following features hardcoded in spamiam::SpamIAmMessage: spamiam::OrkutSenderId spamiam::OrkutPostnumReports spamiam::BloggerNumComments spamiam::BloggerNumCommentsByOthers Another hard-coded spamiam feature is spamiam::BlogName, which can be specified via string value.", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "stringValue": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timestampSequence": { + "description": "This field should only be used to store a sequence of timestamps associated with the feature.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AbuseiamGeoRestriction": { + "description": "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.", + "id": "AbuseiamGeoRestriction", + "properties": { + "locale": { + "items": { + "$ref": "AbuseiamGeoRestrictionLocale" + }, + "type": "array" + } + }, + "type": "object" + }, + "AbuseiamGeoRestrictionLocale": { + "id": "AbuseiamGeoRestrictionLocale", + "properties": { + "location": { + "description": "The location where the restriction applies. Defaults to the \"The world\". See go/iii.", + "type": "string" + }, + "restriction": { + "$ref": "AbuseiamUserRestriction", + "description": "The UserRestriction that applies to this location. If not specified evaluates to true." + } + }, + "type": "object" + }, + "AbuseiamHash": { + "description": "Information about various hashes that can be computed on a message ex: simhash, attachment hash, etc", + "id": "AbuseiamHash", + "properties": { + "hash": { + "description": "64 bit hash in the hex form.", + "type": "string" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamManualReviewEvaluationInfo": { + "description": "Relevant information for manual review evaluations.", + "id": "AbuseiamManualReviewEvaluationInfo", + "properties": { + "reviewer": { + "$ref": "AbuseiamManualReviewerInfo", + "description": "Reviewer performing the manual review." + }, + "tool": { + "$ref": "AbuseiamManualReviewTool", + "description": "Tool used to perform the manual review." + } + }, + "type": "object" + }, + "AbuseiamManualReviewTool": { + "id": "AbuseiamManualReviewTool", + "properties": { + "experimentId": { + "type": "string" + }, + "name": { + "enum": [ + "UNKNOWN", + "NUFF", + "GOOGLE_ADMIN", + "YOUTUBE" + ], + "enumDescriptions": [ + "", + "content-review.corp.google.com", + "google-admin.corp.google.com", + "admin.youtube.com" + ], + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamManualReviewerInfo": { + "id": "AbuseiamManualReviewerInfo", + "properties": { + "credential": { + "items": { + "enum": [ + "UNKNOWN", + "LEGAL", + "POLICY", + "ANALYST", + "LEGAL_PANEL" + ], + "enumDescriptions": [ + "", + "Member of mdb/legal-removals-contentreview-abuseiam.", + "Member of mdb/user-policy.", + "Member of mdb/abuse-analysts.", + "A group of two or more members of mdb/legal-removals-contentreview-abuseiam who review content collectively. This credential will be set manually in decision scripts when reviews come from the appropriate queue and will not be automatically set by the manual review server." + ], + "type": "string" + }, + "type": "array" + }, + "username": { + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamNameValuePair": { + "id": "AbuseiamNameValuePair", + "properties": { + "name": { + "type": "string" + }, + "nonUtf8Value": { + "format": "byte", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamNotRestriction": { + "id": "AbuseiamNotRestriction", + "properties": { + "child": { + "description": "This restriction applies if the child does not apply. Only one is allowed. \"repeated\" is used to avoid breaking Sawzall (See b/6758277).", + "items": { + "$ref": "AbuseiamUserRestriction" + }, + "type": "array" + } + }, + "type": "object" + }, + "AbuseiamOrRestriction": { + "id": "AbuseiamOrRestriction", + "properties": { + "child": { + "description": "This restriction applies if any of the children apply.", + "items": { + "$ref": "AbuseiamUserRestriction" + }, + "type": "array" + } + }, + "type": "object" + }, + "AbuseiamRegion": { + "id": "AbuseiamRegion", + "properties": { + "region": { + "description": "This is a CLDR Region Code: http://wiki/Main/IIIHowTo#using_region It is used to denote the region affected by a verdict.", + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamSpecialRestriction": { + "description": "A SpecialRestriction is a standardized UserRestriction which lives in a table maintained via CDD.", + "id": "AbuseiamSpecialRestriction", + "properties": { + "type": { + "enum": [ + "ALCOHOL" + ], + "enumDescriptions": [ + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamTarget": { + "id": "AbuseiamTarget", + "properties": { + "id": { + "type": "string" + }, + "type": { + "enum": [ + "MESSAGE_ID", + "CHUNK_ID", + "IMAGE_URL", + "URL", + "USER_ID", + "IP", + "SITE", + "SITEDOMAIN", + "ENTITY_ID", + "PERFECT_STREAM_ID", + "ACTIVITY_ID", + "COMMENT_ID", + "AD_ID", + "TEXT", + "TEXT_FRAGMENT", + "CLUSTER_MEMBER_ID", + "EMBED_ID", + "ANDROID_ID" + ], + "enumDescriptions": [ + "verdict is issued on the whole message", + "verdict is issued on the specified chunk", + "target id is an image url inside chunk content", + "target id is a non-image url inside chunk content", + "abuse happens at gaia user level", + "target id is an IP address", + "target id is a sitechunk", + "target id is a domain", + "The 4 entries below are *only* for the +1 pipeline. Please do not use elsewhere. entity id is a generic Zipit ID", + "Obsolete.", + "activity id in ASBE for ES", + "comment id for ASBE comments in ES", + "ad id for ES", + "text target. Used in Ocelot name reputation.", + "text fragment. Ocelot for name reputation.", + "Targets for Cluster reviews. See http://go/cluff-design-doc. Message ID for the targetted cluster member", + "embed_id for ASBE embeds in ES", + "android_id of the device" + ], + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamUserNotification": { + "description": "A structure used to configure a notification to a user.", + "id": "AbuseiamUserNotification", + "properties": { + "channel": { + "enum": [ + "UNKNOWN", + "BUILT_IN", + "EMAIL", + "GAIA" + ], + "enumDescriptions": [ + "", + "Use product built-in notification, such as pop-ups.", + "Email user, e.g., through ANS(http://sites/cat/ans).", + "Show notifications at Gaia level, such as during login." + ], + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamUserRestriction": { + "description": "Describes restrictions on where the verdict applies. Please use {@code TakedownManager} to evaluate this proto.", + "id": "AbuseiamUserRestriction", + "properties": { + "ageRestriction": { + "$ref": "AbuseiamAgeRestriction" + }, + "andRestriction": { + "$ref": "AbuseiamAndRestriction", + "description": "Operators" + }, + "constantRestriction": { + "$ref": "AbuseiamConstantRestriction", + "description": "Constant" + }, + "geoRestriction": { + "$ref": "AbuseiamGeoRestriction", + "description": "Leaf Nodes" + }, + "notRestriction": { + "$ref": "AbuseiamNotRestriction" + }, + "orRestriction": { + "$ref": "AbuseiamOrRestriction" + }, + "specialRestriction": { + "$ref": "AbuseiamSpecialRestriction" + } + }, + "type": "object" + }, + "AbuseiamVerdict": { + "description": "Verdict against a target. AbuseIAm generates a verdict based on evaluations. AbuseIAm can send such verdicts to clients for enforcement.", + "id": "AbuseiamVerdict", + "properties": { + "client": { + "$ref": "AbuseiamClient", + "description": "Target client of the verdict. It can be used to differentiate verdicts from multiple clients when such verdicts are processed in one common place." + }, + "comment": { + "description": "Additional info regarding the verdict.", + "type": "string" + }, + "decision": { + "enum": [ + "ERROR", + "NO_ACTION", + "GOOD", + "DELETE", + "INTERSTITIAL", + "HIDE", + "BLACK_LIST", + "MARK_AS_SPAM", + "REWRITE_LINKS", + "HIDE_AND_NOTIFY", + "FREEZE_SERVICE", + "SUSPEND_SERVICE", + "SMS_DISABLE", + "NOTIFY" + ], + "enumDescriptions": [ + "", + "The content is okay and no action needs to be taken.", + "To mark content/user as good.", + "", + "Give a user an interstial message. E.g., via a pop-up or an email.", + "", + "The product should black list this content itself.", + "", + "There's something bad about the links, so we recommend that the links be 'scrubbed' to go through the GWS redirector to protect against malware and phishing: http://wiki.corp.google.com/twiki/bin/view/Main/SafeRedirector", + "HIDE_AND_NOTIFY is used when the target needs to be hidden, but the UI needs to show an appropriate error message.", + "Freeze a user on service level. E.g., a frozen user can not generate new content.", + "Suspend a user on service level.", + "SMS-disable a user on Gaia level.", + "Notify a user (e.g., warn a user)." + ], + "type": "string" + }, + "durationMins": { + "description": "Time duration (in minutes) of the verdict.", + "format": "int32", + "type": "integer" + }, + "evaluation": { + "description": "Evaluations relevant to this verdict. Every Verdict should contain at least one Evaluation.", + "items": { + "$ref": "AbuseiamEvaluation" + }, + "type": "array" + }, + "hashes": { + "description": "Details of all the hashes that can be computed on a message, such as simhash and attachment hash", + "items": { + "$ref": "AbuseiamHash" + }, + "type": "array" + }, + "isLegalIssued": { + "description": "Is this verdict issued by legal?", + "type": "boolean" + }, + "miscScores": { + "description": "This field is used to pass relevant / necessary scores to our clients. For eg: ASBE propogates these scores to moonshine.", + "items": { + "$ref": "AbuseiamNameValuePair" + }, + "type": "array" + }, + "reasonCode": { + "description": "A short description of the reason why the verdict decision is made.", + "type": "string" + }, + "region": { + "description": "The regions in which this verdict should be enforced. Absence of this field indicates that the verdict is applicable everywhere.", + "items": { + "$ref": "AbuseiamRegion" + }, + "type": "array" + }, + "restriction": { + "description": "Restrictions on where this verdict applies. If any restriction is met, the verdict is applied there. If no restrictions are present, the verdict is considered global.", + "items": { + "$ref": "AbuseiamVerdictRestriction" + }, + "type": "array" + }, + "strikeCategory": { + "description": "Category of the strike if this is a strike verdict.", + "enum": [ + "ES", + "CP", + "COPYRIGHT", + "BLOGGER", + "GRANDCENTRAL", + "DRIVE", + "CLOUD", + "SITES" + ], + "enumDescriptions": [ + "General Emerald Sea.", + "Child porn.", + "Copyright violations.", + "Blogger.", + "Google Voice.", + "Drive.", + "Cloud platform.", + "Google Sites." + ], + "type": "string" + }, + "target": { + "$ref": "AbuseiamTarget" + }, + "targetTimestampMicros": { + "description": "The timestamp of the target. E.g., the time when the target was updated.", + "format": "int64", + "type": "string" + }, + "timestampMicros": { + "description": "When the verdict is generated", + "format": "int64", + "type": "string" + }, + "userNotification": { + "description": "Extra notification(s) to be delivered to target user or message owner about the verdict.", + "items": { + "$ref": "AbuseiamUserNotification" + }, + "type": "array" + }, + "version": { + "description": "version of decision script", + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamVerdictRestriction": { + "description": "Describes restrictions on where the verdict applies.", + "id": "AbuseiamVerdictRestriction", + "properties": { + "context": { + "description": "For a restriction to apply, all contexts must be satisfied. For example, if context[0] is COUNTRY/'GERMANY' and context[1] is DESTINATION_STREAM/'gplus:SQUARE:knitting_discussion', then the verdict applies only when the 'knitting discussion' square is viewed from inside Germany. Please note that this is present for legacy reasons and users of this field would be migrated to use the user_restriction field defined below.", + "items": { + "$ref": "AbuseiamVerdictRestrictionContext" + }, + "type": "array" + }, + "userRestriction": { + "$ref": "AbuseiamUserRestriction", + "description": "A boolean expression tree used to define the restrictions where the verdict applies. Please use java/com/google/ccc/abuse/abuseiam/client/TakedownManager.java to evaluate this proto." + } + }, + "type": "object" + }, + "AbuseiamVerdictRestrictionContext": { + "description": "Describes a dimension of a context where a verdict applies.", + "id": "AbuseiamVerdictRestrictionContext", + "properties": { + "id": { + "description": "String identifying the context.", + "type": "string" + }, + "type": { + "enum": [ + "UNKNOWN", + "DESTINATION_STREAM" + ], + "enumDescriptions": [ + "Dummy default value. Avoid using it explicitly as a Type.", + "DESTINATION_STREAM is used when a verdict only applies to content in a particular indexed stream/channel. Examples include Squares, Blogs, and Youtube videos." + ], + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamVideoReviewData": { + "description": "Information about a video review.", + "id": "AbuseiamVideoReviewData", + "properties": { + "referenceFragment": { + "description": "Serialized repeated youtube_admin.adminmatch.csai.ReferenceFragment", + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "reviewer": { + "$ref": "AbuseiamVideoReviewer", + "description": "Information about the video reviewer." + }, + "videoId": { + "description": "The Viper id of the video.", + "type": "string" + } + }, + "type": "object" + }, + "AbuseiamVideoReviewer": { + "description": "Information about video reviewers.", + "id": "AbuseiamVideoReviewer", + "properties": { + "type": { + "enum": [ + "UNKNOWN", + "CRT", + "TIERED_CRT", + "POLICY", + "ANALYSTS", + "LEGAL", + "LEGAL_CSAI", + "LEGAL_REMOVALS", + "HIJACKING_TEAM", + "CRT_CSAI", + "LEGAL_CSAI_LOW_PRIORITY" + ], + "enumDescriptions": [ + "Default value, do not use explicitly.", + "Content review team. This team does general reviews.", + "Special high quality CRT which do more high confidence reviews.", + "Policy team.", + "Analysts from the abuse team.", + "The general legal team.", + "Queue for LEGAL_CSAI team for high priority items.", + "The legal team which handles content removals (e.g. copyright).", + "Team which deals with hijacking reviews.", + "CRT Team in Dublin, which handles CSAI-related reviews.", + "Queue for lower priority suspected CSAI items (e.g. content from disabled users)" + ], + "type": "string" + }, + "username": { + "description": "The username of the person doing the video review.", + "type": "string" + } + }, + "type": "object" + }, + "AdsShoppingReportingOffersSerializedSoriId": { + "description": "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.", + "id": "AdsShoppingReportingOffersSerializedSoriId", + "properties": { + "highId": { + "format": "uint64", + "type": "string" + }, + "lowId1": { + "format": "uint64", + "type": "string" + }, + "lowId2": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "Anchors": { + "id": "Anchors", + "properties": { + "anchor": { + "items": { + "$ref": "AnchorsAnchor" + }, + "type": "array" + }, + "homepageAnchorsDropped": { + "description": "The total # of local homepage anchors dropped in AnchorAccumulator.", + "format": "int64", + "type": "string" + }, + "indexTier": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "localAnchorsDropped": { + "description": "The total # of local non-homepage anchors dropped in AnchorAccumulator.", + "format": "int64", + "type": "string" + }, + "nonlocalAnchorsDropped": { + "description": "The total # of non-local anchors dropped in AnchorAccumulator.", + "format": "int64", + "type": "string" + }, + "redundantAnchorsDropped": { + "description": "The *_anchors_dropped fields below are not populated by Alexandria, which uses cdoc.anchor_stats instead. The total # of redundant anchors dropped in linkextractor.", + "format": "int64", + "type": "string" + }, + "redundantanchorinfo": { + "items": { + "$ref": "AnchorsRedundantAnchorInfo" + }, + "type": "array" + }, + "supplementalAnchorsDropped": { + "description": "The total # of supplemental anchors dropped in AnchorAccumulator. ## DEPRECATED.", + "format": "int64", + "type": "string" + }, + "targetDocid": { + "description": "may be implicit", + "format": "uint64", + "type": "string" + }, + "targetSite": { + "description": "HOST_LEVEL site chunking.", + "type": "string" + }, + "targetUrl": { + "description": "This is produced during link extraction but not written out in the linklogs in order to save space.", + "type": "string" + } + }, + "type": "object" + }, + "AnchorsAnchor": { + "id": "AnchorsAnchor", + "properties": { + "bucket": { + "format": "int32", + "type": "integer" + }, + "catfishTags": { + "description": "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", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "compressedImageUrls": { + "description": "If the anchor contained images, these image urls are stored here in compressed form.", + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "compressedOriginalTargetUrl": { + "description": "The anchor's original target url, compressed. Available only in Alexandria docjoins when the anchor is forwarded.", + "format": "byte", + "type": "string" + }, + "context": { + "format": "int32", + "type": "integer" + }, + "context2": { + "description": "This is a hash of terms near the anchor. (This is a second-generation hash replacing the value stored in the 'context' field.)", + "format": "int32", + "type": "integer" + }, + "creationDate": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "deleted": { + "type": "boolean" + }, + "deletionDate": { + "format": "int32", + "type": "integer" + }, + "demotionreason": { + "description": "DEPRECATED", + "format": "int32", + "type": "integer" + }, + "encodedNewsAnchorData": { + "description": "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.", + "format": "uint32", + "type": "integer" + }, + "experimental": { + "description": "If true, the anchor is for experimental purposes and should not be used in serving.", + "type": "boolean" + }, + "expired": { + "description": "true iff exp domain", + "type": "boolean" + }, + "firstseenDate": { + "description": "# 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", + "format": "int32", + "type": "integer" + }, + "firstseenNearCreation": { + "description": "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.", + "type": "boolean" + }, + "fontsize": { + "format": "int32", + "type": "integer" + }, + "forwardingTypes": { + "description": "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.", + "format": "uint32", + "type": "integer" + }, + "fragment": { + "description": "The URL fragment for this anchor (the foo in http://www.google.com#foo)", + "type": "string" + }, + "fullLeftContext": { + "description": "The full context. These are not written out in the linklogs.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "fullRightContext": { + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "isLocal": { + "description": "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).", + "type": "boolean" + }, + "lastUpdateTimestamp": { + "description": "Used for history and freshness tracking - the timestamp this anchor is updated in indexing.", + "format": "int32", + "type": "integer" + }, + "linkAdditionalInfo": { + "$ref": "Proto2BridgeMessageSet", + "description": "Additional information related to the anchor, such as additional anchor text or scores." + }, + "linkTags": { + "description": "Contains info on link type, source page, etc.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "locality": { + "description": "For ranking purposes, the quality of an anchor is measured by its \"locality\" and \"bucket\". See quality/anchors/definitions.h for more information.", + "format": "int32", + "type": "integer" + }, + "offset": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "origText": { + "description": "Original text, including capitalization and punctuation. Runs of whitespace are collapsed into a single space.", + "type": "string" + }, + "originalTargetDocid": { + "description": "The docid of the anchor's original target. This field is available if and only if the anchor is forwarded.", + "format": "uint64", + "type": "string" + }, + "pagerankWeight": { + "description": "Weight to be stored in linkmaps for pageranker", + "format": "float", + "type": "number" + }, + "parallelLinks": { + "description": "The number of additional links from the same source page to the same target domain. Not populated if is_local is true.", + "format": "int32", + "type": "integer" + }, + "possiblyOldFirstseenDate": { + "description": "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.", + "type": "boolean" + }, + "setiPagerankWeight": { + "description": "TEMPORARY", + "format": "float", + "type": "number" + }, + "source": { + "$ref": "AnchorsAnchorSource" + }, + "sourceType": { + "description": " 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 \u003c TYPE_MEDIUM_QUALITY \u003c 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.", + "format": "int32", + "type": "integer" + }, + "targetUrlEncoding": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "Space-delimited anchor words. Text that needs segmentation (like CJK or Thai) is unsegmented, since we set FLAGS_segment_during_lexing to false in mr-linkextractor.cc .", + "type": "string" + }, + "timestamp": { + "description": "This field is DEPRECATED and no longer filled. For source page crawl timestamp, use Source.crawl_timestamp. Next tag id should be 62.", + "format": "int64", + "type": "string" + }, + "type": { + "description": "DEPRECATED: Now in link_tags", + "format": "int32", + "type": "integer" + }, + "weight": { + "description": "weights are 0-127", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AnchorsAnchorSource": { + "description": "attributes of the source document for the link", + "id": "AnchorsAnchorSource", + "properties": { + "additionalInfo": { + "$ref": "Proto2BridgeMessageSet", + "description": "Additional information related to the source, such as news hub info." + }, + "cluster": { + "description": "anchor++ cluster id", + "format": "int32", + "type": "integer" + }, + "compressedUrl": { + "description": "compressed source url", + "format": "byte", + "type": "string" + }, + "crawlTimestamp": { + "description": "Source page crawl timestamp.", + "format": "int64", + "type": "string" + }, + "docid": { + "description": "The docid field used to be \"required\", but it is now \"optional\" because it is not present when anchors are stored in webtable. When anchors are stored as part of docjoin files in the segment indexer, however, docid should be considered required.", + "format": "uint64", + "type": "string" + }, + "doclength": { + "description": "necessary for anything?", + "format": "int32", + "type": "integer" + }, + "homePageInfo": { + "description": "Information about if the source page is a home page. It can be one of the enum values defined in PerDocData::HomePageInfo (NOT_HOMEPAGE, NOT_TRUSTED, PARTIALLY_TRUSTED, and FULLY_TRUSTED).", + "format": "int32", + "type": "integer" + }, + "indyrank": { + "description": "uint16 scale", + "format": "int32", + "type": "integer" + }, + "ipaddr": { + "description": "DEPRECATED, use packed_ipaddress", + "format": "int32", + "type": "integer" + }, + "language": { + "description": "default -\u003e English", + "format": "int32", + "type": "integer" + }, + "linkhash": { + "description": "0 -\u003e no hash", + "format": "uint64", + "type": "string" + }, + "localCountryCodes": { + "description": "Countries to which the source page is local/most relevant; stored as III identifiers for country/region codes (see http://go/iii).", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "nsr": { + "description": "This NSR value has range [0,1000] and is the original value [0.0,1.0] multiplied by 1000 rounded to an integer.", + "format": "uint32", + "type": "integer" + }, + "outdegree": { + "format": "int32", + "type": "integer" + }, + "outsites": { + "description": "approx num of pointed-to sites", + "format": "int32", + "type": "integer" + }, + "packedIpaddress": { + "description": "string in IPAddress::ToPackedString() format.", + "format": "byte", + "type": "string" + }, + "pageTags": { + "description": "Page tags are described by enum PageTag in PerDocData. Page tags are used in anchors to identify properties of the linking page. These are DEPRECATED: in the future, use link_tags instead. DEPRECATED", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "pagerank": { + "description": "uint16 scale", + "format": "int32", + "type": "integer" + }, + "pagerankNs": { + "description": "unit16 scale", + "format": "int32", + "type": "integer" + }, + "seglanguage": { + "description": "DEPRECATED", + "format": "int32", + "type": "integer" + }, + "site": { + "type": "string" + }, + "spamrank": { + "description": "uint16 scale", + "format": "int32", + "type": "integer" + }, + "spamscore1": { + "description": "deprecated, to be removed after October 20. 0-127 scale", + "format": "int32", + "type": "integer" + }, + "spamscore2": { + "description": "0-127 scale", + "format": "int32", + "type": "integer" + }, + "webtableKey": { + "description": "Webtable key of source", + "type": "string" + } + }, + "type": "object" + }, + "AnchorsRedundantAnchorInfo": { + "description": "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.", + "id": "AnchorsRedundantAnchorInfo", + "properties": { + "anchorsDropped": { + "format": "int64", + "type": "string" + }, + "domain": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "AppsDynamiteCustomerId": { + "description": "Represents a GSuite customer ID. Obfuscated with CustomerIdObfuscator.", + "id": "AppsDynamiteCustomerId", + "properties": { + "customerId": { + "type": "string" + } + }, + "type": "object" + }, + "AppsDynamiteSharedOrganizationInfo": { + "description": "Contains info about the entity that something is, or is owned by.", + "id": "AppsDynamiteSharedOrganizationInfo", + "properties": { + "consumerInfo": { + "$ref": "AppsDynamiteSharedOrganizationInfoConsumerInfo" + }, + "customerInfo": { + "$ref": "AppsDynamiteSharedOrganizationInfoCustomerInfo" + } + }, + "type": "object" + }, + "AppsDynamiteSharedOrganizationInfoConsumerInfo": { + "description": "Intentionally empty. Used to disambiguate consumer and customer use cases in oneof below.", + "id": "AppsDynamiteSharedOrganizationInfoConsumerInfo", + "properties": {}, + "type": "object" + }, + "AppsDynamiteSharedOrganizationInfoCustomerInfo": { + "id": "AppsDynamiteSharedOrganizationInfoCustomerInfo", + "properties": { + "customerId": { + "$ref": "AppsDynamiteCustomerId" + } + }, + "type": "object" + }, + "AppsPeopleActivityBackendDestinationStream": { + "description": "A DestinationStream is a /namespace/id[0]/id[1]/.../id[n] that represents a collection of Activities. Example destinations: -The Profile Stream on http://plus.google.com/+JohnDoe/posts -A Square Stream on http://plus.google.com/squares/123 -A \"comment Stream\" (Fountain) on http://www.youtube.com/watch?id=123 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", + "id": "AppsPeopleActivityBackendDestinationStream", + "properties": { + "id": { + "description": "The hierarchy of IDs. Each individual ID is \"flat\" and the repeated list defines the hierarchy. Namespaces define the \"validity\" of this hierachy (depth, naming convention, etc) and the server will reject invalid IDs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "namespace": { + "enum": [ + "UNKNOWN_DESTINATION_NAMESPACE", + "SQUARES", + "FOUNTAIN", + "PROFILE", + "COLLEXIONS", + "TEST", + "HIGHLIGHT", + "SOCIETY", + "MEMEGEN", + "PHOTOS", + "SUPPLY_CHAIN_CENTRAL", + "PAISA", + "SOCIETY_CHAT", + "PLUS_ENTERPRISE_LOG", + "SEARCH_UGC", + "LOUPE", + "MINDSEARCH", + "SOS_LIVE_COMMENTS", + "SBE_LOADTEST", + "SYSTEM1", + "G_PLUS", + "YOUTUBE", + "EVENTS", + "DEPRECATED_COLLECTIONS", + "REVIEWS", + "BACKSTAGE", + "SPACES" + ], + "enumDescriptions": [ + "To prevent issues with out-of-sync clients sending unexpected values.", + "Use for G+ community. The ID is the square gaia id. If this is a square substream, second ID is the substream stream ID. Write-time logic: -Verify that the AUTHOR is a member of this Square. Read-time logic: -Fetch the name of the Square and substream.", + "For Blogger Fountain, the ID is the canonical URL of the site. For Distiller, the ID is \"youtube\"/channel_id/video_id. For Distiller Discussion Page, the ID is \"youtube\"/channel_id/\"channel\". For Distiller Private Msg, the ID is \"youtube\"/channel_id/\"private\". For Backstage, the ID is \"youtube\"/channel_id/\"backstage\". For Live, the ID is \"youtube\"/channel_id/\"live\"/\"chat\" and \"youtube\"/channel_id/video_id/\"live\"/\"chat\".", + "Used for Profile Stream fetches. The ID is the (decimal) Gaia ID of the user whose profile is being fetched.", + "Used for Collexions feature (go/g+c) ID is the Collexion ID to which the post is assigned. These IDs are allocated from their own id space maintained via UniqueId. They are NOT gaia ids, nor do they need to be used in conjunction with a gaia id when identifying a collection. In general a post will be assigned to at most 1 collexion, however there do exist corner cases where multi-inclusion can occur.", + "Used for test data for clients to prototype with. This should only ever be used in the SBE_PLAYGROUND corpus (go/sbe-playground), or in tests.", + "Used for Search Highlight (go/seng-highlight). The ID is the account id to which a highlight belongs.", + "Used for Society (go/society) ID is an s2 cell id (go/s2), optionally with an additional ID of a \"topic\" string within that cell.", + "Used for Memegen integration with SBE (go/memegen-sbe-onboarding) The ID is \"meme\" followed by the meme id to which a comment belongs.", + "Used for Photos integration with SBE (go/envelope-comments-design-doc)", + "Used for Supply Chain Central commenting capability (go/scc-comment). ID format: - For purchase order app: resource/purchase_order//line_item/ - For data exchange app: application/data_exchange/report/", + "Used for Paisa integration with SBE (go/paisa-stanza-plan)", + "Use for Society Chat (http://go/society-chat). The ID format is /society/users/private/.", + "Use for G+ Enterprise Log API Event API (http://go/gplus_interaction_event_sync_queue) The ID format is /enterprise//", + "Used for UGC for knowledge (go/knowledge-ugc). The ID format is /livestream/sports/", + "Loupe go/sbe-loupe-requirements.", + "Mindsearch go/india-qa.", + "Used for SOS Live comments (go/live-comments-sos-alerts). The ID format is /livestream/sos/", + "Used for SBE loadtests.", + "Used for System 1 (go/sys1-sbe)", + "Use if you want the Activity to show in the regular G+ product, i.e. the main Stream, user's profile streams, the G+ search stream, etc. No ID should be used with this DestinationNamespace.", + "Used to serve consumption stream on Youtube homepage. The stream is essentially a user's consumption stream with restricts set during write-time indexing such that only activities with Youtube video are retrieved during read-time. Deprecated - Do not use.", + "DEPRECATED - once used for the G+ Events feature, but never launched.", + "It is deprecated and replaced by COLLEXIONS.", + "Used for Review Stream fetches. The ID is the canonical representation of the entity being reviewed (for place reviews, it is cluster_id).", + "Deprecated - do not use. Backstage uses FOUNTAIN DestinationNamespace.", + "Deprecated. Used for Spaces (go/spaces) ID is the space ID in which the post is made. Posts will reside in exactly one space." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleActivityStreamqualityDistillerEngagements": { + "description": "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.", + "id": "AppsPeopleActivityStreamqualityDistillerEngagements", + "properties": { + "reportCompromised": { + "description": "Corresponds on \"This account might be compromised or hacked\" reporting action.", + "format": "int64", + "type": "string" + }, + "reportHarassment": { + "description": "Corresponds on \"Harassment or bullying\" reporting action.", + "format": "int64", + "type": "string" + }, + "reportHate": { + "description": "Corresponds on \"Hate speach or graphic violence\" reporting action.", + "format": "int64", + "type": "string" + }, + "reportPorn": { + "description": "Corresponds on \"Pornography or sexually explicit material\" reporting action.", + "format": "int64", + "type": "string" + }, + "reportSpam": { + "description": "Corresponds on \"Unwanted commercial content or spam\" reporting action.", + "format": "int64", + "type": "string" + }, + "serveCount": { + "description": "Number of times this activity was served out of asbe/stanza.", + "format": "int64", + "type": "string" + }, + "timeSec": { + "description": "Timestamp in seconds for which time this record is valid.", + "format": "int64", + "type": "string" + }, + "ytThumbsDown": { + "description": "Corresponds on Distiller comment thumbs down action.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAbout": { + "id": "AppsPeopleOzExternalMergedpeopleapiAbout", + "properties": { + "contentType": { + "enum": [ + "TEXT_PLAIN", + "TEXT_HTML" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "safeHtmlValue": { + "$ref": "WebutilHtmlTypesSafeHtmlProto", + "description": "Sanitized HTML value that is only populated when the SANITIZE_ABOUT_HTML extension is requested." + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData": { + "description": "Extension data for use in AboutMe.", + "id": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData", + "properties": { + "nameDisplayOptions": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions" + }, + "photosCompareData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData" + }, + "profileEditability": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability" + }, + "profileNameModificationHistory": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions": { + "description": "See NameDisplayOptions in //depot/google3/focus/backend/proto/backend.proto. See also go/nickname-mess.", + "id": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions", + "properties": { + "nicknameOption": { + "enum": [ + "UNKNOWN_NICKNAME_OPTION", + "QUOTED_NICKNAME", + "PAREN_NICKNAME" + ], + "enumDescriptions": [ + "", + "Include the nickname, in quotes, in the display name. In English, the nickname appears between the given and family names. Example: Victor \"Pug\" Henry.", + "Include the nickname, in parentheses, in the display name. In English, the nickname appears after the given and family names. Example: Victor Henry (Pug)." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData": { + "id": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData", + "properties": { + "diffData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData" + }, + "highResUrl": { + "type": "string" + }, + "inconsistentPhoto": { + "description": "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", + "type": "boolean" + }, + "lowResData": { + "description": "Only present if the photo diff is greater than 0.01 on any color band.", + "format": "byte", + "type": "string" + }, + "lowResUrl": { + "type": "string" + }, + "monogramUrl": { + "type": "string" + }, + "privateLowResAcl": { + "description": "True if the low-res photo has a private ACL set.", + "type": "boolean" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData": { + "id": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData", + "properties": { + "blueDiff": { + "format": "float", + "type": "number" + }, + "greenDiff": { + "format": "float", + "type": "number" + }, + "redDiff": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability": { + "description": "See UserEditedLockedMask in //depot/google3/focus/backend/proto/backend.proto.", + "id": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability", + "properties": { + "lockedField": { + "description": "Read-only set of zero or more field paths that are locked for update on this person, such as \"person.name\", \"person.email\", etc. The set of fields is only populated for the requester's profile. Fields in the set cannot be edited, added, or deleted from the profile. Attempting to update any of these fields will result in an exception.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory": { + "description": "See ABUSE_NAME_LAST_MODIFIED in //depot/google3/focus/backend/proto/backend.proto which maps to //depot/google3/focus/proto/profileattribute.proto", + "id": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory", + "properties": { + "computedNameChangesRemaining": { + "description": "The number of name changes remaining at RPC request time. This can be more than name_changes_remaining, if user hasn't changed name for some time and accrued quota since last change.", + "format": "int32", + "type": "integer" + }, + "computedNicknameChangesRemaining": { + "description": "The number of nickname changes remaining at RPC request time. This can be more than nickname_changes_remaining, if user hasn't changed nickname for some time and accrued quota since last change.", + "format": "int32", + "type": "integer" + }, + "nameChangesRemaining": { + "description": "The number of name changes remaining at the time the name was last modified.", + "format": "int32", + "type": "integer" + }, + "nameLastModified": { + "description": "The last time the profile name was modified in milliseconds UTC.", + "format": "int64", + "type": "string" + }, + "nicknameChangesRemaining": { + "description": "The number of nickname changes remaining at the time the nickname was last modified.", + "format": "int32", + "type": "integer" + }, + "nicknameLastModified": { + "description": "The last time the profile nickname was modified in milliseconds UTC.", + "format": "int64", + "type": "string" + }, + "quotaEnforcementStatus": { + "enum": [ + "UNKNOWN_QUOTA_ENFORCEMENT_STATUS", + "ENFORCED", + "NOT_ENFORCED", + "NOT_APPLICABLE" + ], + "enumDescriptions": [ + "", + "Name change quota is enforced.", + "Name change quota exists but is not enforced. This is used for users suspended due to abusive names, where users are allowed to change their names back to non-abusive state without being charged against the quota.", + "Name change quota does not apply. This is used for premium dasher users." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAccountEmail": { + "id": "AppsPeopleOzExternalMergedpeopleapiAccountEmail", + "properties": { + "email": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo": { + "description": "Additional information about a container. TO BE DELETED: replaced by DeviceContactInfo.", + "id": "AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo", + "properties": { + "rawDeviceContactInfo": { + "description": "When the container is a DEVICE_CONTACT, this list provides account information from the raw contact which is the source of this field.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAddress": { + "id": "AppsPeopleOzExternalMergedpeopleapiAddress", + "properties": { + "country": { + "type": "string" + }, + "countryCode": { + "type": "string" + }, + "encodedPlaceId": { + "description": "FeatureId associated with the address. The format is the same as that used for ids in PLACE containers in SourceIdentity.", + "type": "string" + }, + "extendedAddress": { + "type": "string" + }, + "formatted": { + "type": "string" + }, + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "locality": { + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "poBox": { + "type": "string" + }, + "pointSpec": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPointSpec" + }, + "postalCode": { + "type": "string" + }, + "region": { + "type": "string" + }, + "streetAddress": { + "type": "string" + }, + "type": { + "description": "The type of the address. The type can be free form or one of these predefined values: * `home` * `work` * `other`", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAffinity": { + "description": "Similar to social.graph.storage.Affinity, but pared down to what the clients of the People API are interested in.", + "id": "AppsPeopleOzExternalMergedpeopleapiAffinity", + "properties": { + "affinityMetadata": { + "$ref": "SocialGraphWireProtoPeopleapiAffinityMetadata", + "description": "Contains extra ranking information returned by DAS." + }, + "affinityType": { + "enum": [ + "AFFINITY_TYPE_UNKNOWN", + "EMAIL_AUTOCOMPLETE", + "CONTACTS_PLUS_FREQUENTLY_CONTACTED", + "CHAT_AUTOCOMPLETE", + "GPLUS_AUTOCOMPLETE", + "GLASS_AFFINITY", + "PEOPLE_AUTOCOMPLETE_SOCIAL", + "FIELD_AUTOCOMPLETE_SOCIAL", + "CONTACTS_PLUS_EMAIL", + "PHOTOS_PEOPLE_TO_SHARE_WITH_SUGGESTIONS", + "PHOTOS_FIELDS_TO_SHARE_WITH_SUGGESTIONS", + "INBOX_AFFINITY", + "DYNAMITE_AFFINITY", + "PHOTOS_SUGGESTIONS_AFFINITY", + "PHOTOS_SUGGESTED_TARGETS", + "PHOTOS_ASSISTANT_SUGGESTIONS_AFFINITY", + "DRIVE_AUTOCOMPLETE", + "WALLET_PEOPLE_TO_PAY_SUGGESTIONS", + "CONTACTS_PLUS_CONTACT_CENTRIC", + "POMEROY_AFFINITY", + "CALENDAR_AFFINITY", + "SPACES_APP_PEOPLE_AFFINITY", + "HOMEROOM_AFFINITY", + "PEOPLE_PLAYGROUND_AFFINITY", + "FAMILY_AFFINITY", + "CONTACTS_ASSISTANT_SUGGESTED_CONTACTS", + "TRIPS_AFFINITY", + "GOOGLE_VOICE_AFFINITY", + "PHOTOS_FACE_AFFINITY", + "G3DOC_AUTOCOMPLETE", + "LOUPE_SUGGESTIONS_AFFINITY", + "MAPS_SHARING_AFFINITY", + "CLOUD_SEARCH_AFFINITY", + "YOUTUBE_UNPLUGGED", + "JAM_AFFINITY", + "ITEM_SUGGEST_AFFINITY", + "ISSUE_TRACKER_AFFINITY", + "APPS_ASSISTANT_AFFINITY", + "APDL_CONTACT_CENTRIC_DEFAULT_AFFINITY", + "APDL_PROFILE_CENTRIC_DEFAULT_AFFINITY", + "SOCIAL_RECOVERY", + "TEZ_AFFINITY", + "NEWS_AFFINITY", + "ALLO_AFFINITY", + "GPLUS_PEOPLE_RECOMMENDATIONS", + "GPLUS_PEOPLE_RECOMMENDATIONS_SAME_DOMAIN", + "DRIVE_AFFINITY", + "PODIUM_AFFINITY", + "ZOOM_SIGHTS_EMAIL_AFFINITY", + "AIRDROME_AFFINITY", + "HANGOUTS_MEET_AFFINITY", + "GALLERY_AFFINITY", + "AGSA_AFFINITY", + "PAY_AFFINITY", + "SAVES_AFFINITY", + "JASPER_AFFINITY", + "GOOGLE_HOME_APP_AFFINITY", + "TOPAZ_TEAMS_AFFINITY", + "DYNAMITE_OUT_OF_DOMAIN_AFFINITY", + "GOOGLE_VOICE_SIRI_EXTENSION_AFFINITY", + "COURSE_KIT_AFFINITY", + "FORMS_AFFINITY", + "NOVITAS_AFFINITY", + "GTI_PEER_INTERACTIONS_AFFINITY", + "ANDROID_EMERGENCY_AFFINITY", + "DATA_STUDIO_AFFINITY", + "SPUR_AFFINITY", + "PLAY_GAMES_SERVICES_AFFINITY", + "GROUPS_ADD_MEMBER_AFFINITY", + "DUO_AFFINITY", + "MY_BUSINESS_AFFINITY", + "GMAIL_COMPOSE", + "NON_GPLUS_AFFINITY", + "ABUSE_AFFINITY", + "ABUSE_AFFINITY_LITE", + "CALENDAR_PEEK_AFFINITY", + "HUB_CALL_AFFINITY", + "GSUITE_WORKFLOW_AFFINITY", + "VR_POLY_PRO_AFFINITY", + "TASKS_AFFINITY", + "GOOGLE_ONE_AFFINITY", + "TRAVEL_AFFINITY", + "GEO_DISCOVERY_FOLLOW_AFFINITY", + "GMAIL_WEB_AFFINITY", + "ASSISTANT_SETTINGS_WEB_UI_AFFINITY", + "ARTIFEX_AFFINITY", + "CONTACT_STORE_DEFAULT_AFFINITY", + "CONTACT_STORE_SELF_EXCLUSIVE", + "PHOTOS_FACE_STALE_AFFINITY", + "LANDSPEEDER_AFFINITY", + "GOOGLE_FI_AFFINITY", + "CONTACTS_PLUS_DOMAIN_ONLY", + "PHOTOS_SUGGESTED_TARGETS_IN_APP_ONLY", + "SOCIETY_AFFINITY", + "NANDHI_TEST_SCHEDULER_AFFINITY", + "HIJACKING_HIGH_RISK_AFFINITY", + "TRUECOLOURS_AFFINITY", + "ESPRESSO_AFFINITY", + "TAG_AFFINITY", + "CORPBOT_AFFINITY", + "SHOPPING_LIST_AFFINITY", + "INTEGRATION_PLATFORM_AFFINITY", + "HOT_ORDERS_UI_AFFINITY", + "TELLY_MOBILE_APP_AFFINITY", + "NGA_SUGGESTION_RESOLUTION_AFFINITY", + "DUC_COMPANION_AFFINITY", + "TOG_AFFINITY", + "ANDROID_SYSTEM_INTELLIGENCE_AFFINITY", + "EARTH_AFFINITY", + "SHORTCUT_AFFINITY", + "CHROME_OS_SCALING_AFFINITY", + "SHOWTIME_AFFINITY", + "PLAY_GAMES_SERVICES_EXPERIMENTAL", + "GUPPEEPS_AFFINITY", + "NEST_AFFINITY", + "BLOGGER_AFFINITY", + "INDIVIDUAL_OUTGOING_INTERACTIONS_RECENCY_RANK", + "ASSISTANT_TOOLCHAIN_AFFINITY", + "CHAT_CONSERVER_FAVORITE_CONTACTS_AFFINITY", + "CHAT_CONSERVER_INVITEE_AFFINITY", + "GANTRY_AFFINITY", + "KINTARO_AFFINITY", + "KEEP_AFFINITY", + "INCIDENTFLOW_AFFINITY", + "DRIVE_MENTION_AFFINITY", + "DRIVE_LOOKUP_AFFINITY", + "PODCASTS_MANAGER_AFFINITY", + "EMAIL_AUTOCOMPLETE_GG", + "ONE_REVIEWER_TOOL_AFFINITY", + "ASSISTANT_FAMILY_VERTICAL_AFFINITY", + "STADIA_AFFINITY", + "ATLAS_AFFINITY", + "CONSTELLATION_AFFINITY", + "CORONADO_AFFINITY", + "WALLET_GOLDEN_GATE_AFFINITY", + "PUMICE_AFFINITY", + "DEMO_AFFINITY_DEFAULT_ALGO", + "DEMO_AFFINITY_DEFAULT_ALGO_DOMAIN_ONLY", + "DEMO_AFFINITY_EMAIL_ALGO", + "DEMO_AFFINITY_EMAIL_ALGO_DOMAIN_ONLY", + "BACKLIGHT_AFFINITY", + "DYNAMITE_GROUPS_AFFINITY", + "DYNAMITE_OUT_OF_DOMAIN_GROUPS_AFFINITY", + "GLOSSARY_MANAGER_AFFINITY", + "ONEDEV_WORKFLOW_AFFINITY", + "GSUITE_HUB_CALL_AFFINITY", + "AVALANCHE_AFFINITY", + "SANDTROUT_DEVICE_CONTACTS_AFFINITY", + "DYNAMITE_ROOM_AFFINITY", + "DESKBOOKING_AFFINITY", + "TEZ_EXTENDED_AFFINITY", + "DRIVE_PROFILE_ONLY_AFFINITY", + "OFFSEC_AFFINITY", + "GOOGLE_HOME_FAMILY_AFFINITY", + "ONEMARKET_CALENDAR_AFFINITY", + "GPAY_MERCHANT_CONSOLE_AFFINITY", + "WORDFLOW_AFFINITY", + "YOUTUBE_CREATOR_STUDIO_AFFINITY", + "BRICKS_AFFINITY", + "BUG_OBSERVER_AFFINITY", + "ALPHASCHEDULE_AFFINITY", + "BURROW_AFFINITY", + "TEAMSPACES_AFFINITY", + "GMAIL_SMARTADDRESS_REPLACE_AFFINITY", + "GMAIL_SMARTADDRESS_EXPAND_AFFINITY", + "ASSISTANT_OPA_AFFINITY", + "POLYGLOT_AFFINITY", + "TRANSLATION_MEMORY_MANAGER_AFFINITY", + "THREADIT_AFFINITY", + "RESOURCE_SYMPHONY_AFFINITY", + "HOUSEHOLD_CONTACTS_PICKER_AFFINITY", + "L10N_INFRA_SHARED_AFFINITY", + "WORK_TRACKER_AFFINITY", + "ARIANE_AFFINITY", + "DRIVE_ROOM_AFFINITY", + "MOMA_SEARCH_AFFINITY", + "COLAB_INTERNAL_AFFINITY", + "COLAB_EXTERNAL_AFFINITY", + "TALENT_GROW_AFFINITY", + "SOCIAL_CONNECTION_CHECKER_AFFINITY", + "GMS_PEOPLE_AFFINITY", + "ROCKET_LABS_AFFINITY", + "DYNAMITE_ROOM_AND_INDIVIDUAL_ONLY_AFFINITY", + "TEZ_PHONE_SEARCH_AFFINITY", + "MY_GOOGLE_FAMILIES_AFFINITY", + "DYNAMITE_UNIFIED_AFFINITY", + "SHORTCUT_SERVER_AFFINITY", + "LEGAL_CONTRACTS_AFFINITY", + "CALENDAR_WEB_AFFINITY", + "DATA_CATALOG_AFFINITY", + "BRIEF_API_AFFINITY", + "HARDWARE_MFG_DATA_VENUS_AFFINITY", + "BETTERBUG_AFFINITY", + "DCMS_AFFINITY", + "PLAY_BOOKS_PUBENG_AFFINITY", + "YAQS_AFFINITY", + "RESPONSIBLE_FEATURE_ACCESS_AFFINITY", + "PROSPER_AFFINITY", + "PEOPLE_TO_ADD_BIRTHDAY_FOR_AFFINITY", + "FLOURISH_AFFINITY", + "CAMPAIGN_MANAGEMENT_TOOL_AFFINITY", + "RECORDER_AFFINITY", + "CLASSROOM_SEARCH_AFFINITY", + "HIRING_AFFINITY", + "DATACENTER_SOFTWARE_AFFINITY", + "PHOTOS_INVITE_AFFINITY", + "PHOTOS_PARTNER_SHARING_AFFINITY", + "MARKETING_WORKFLOWS_AFFINITY", + "INTROSPECT_AFFINITY", + "YOUTUBE_PARENT_TOOLS_AFFINITY", + "RELIABILITY_INSIGHTS_PST_AFFINITY", + "GMAIL_ANDROID_AFFINITY", + "CUSTOMER_CARE_PORTAL_AFFINITY", + "MOMAHOME_3C_AFFINITY", + "DIGITAL_CAR_KEY_AFFINITY", + "PLAY_BOOKS_DISTRIBUTION_AFFINITY", + "GOOGLE_ASSIGNMENTS_AFFINITY", + "TEST_FUSION_AFFINITY", + "PRODUCTION2020_UIE_AFFINITY", + "SPEAKEASY_AFFINITY", + "DOCS_TASKS_AFFINITY", + "DYNAMITE_SEARCH_AFFINITY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Will eventually be deprecated in favor of PHOTOS_SUGGESTED_TARGETS.", + "Will eventually be deprecated in favor of PHOTOS_SUGGESTED_TARGETS.", + "", + "", + "Will eventually be deprecated in favour of PHOTOS_SUGGESTED_TARGETS.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "containerId": { + "description": "The ID of the container", + "type": "string" + }, + "containerType": { + "description": "The type of container to which this affinity applies", + "enum": [ + "UNKNOWN_CONTAINER", + "PROFILE", + "CONTACT", + "CIRCLE", + "PLACE", + "ACCOUNT", + "EXTERNAL_ACCOUNT", + "DOMAIN_PROFILE", + "DOMAIN_CONTACT", + "DEVICE_CONTACT", + "GOOGLE_GROUP", + "NAMED_CHAT_ROOM", + "UNNAMED_CHAT_ROOM", + "AFFINITY", + "RAW_DEVICE_CONTACT", + "CONTACT_ANNOTATION", + "DELEGATED_CONTACT" + ], + "enumDescriptions": [ + "", + "Google Profile. PROFILE fields are editable by the profile owner, unless the field metadata includes writeable=false.", + "Google Contact", + "Deprecated. E-mail only circle membership should be dead. E-mail only circle membership of non-g+ user.", + "A maps place", + "The requester's own Gaia account. ACCOUNT fields are not editable by anyone. They only occur when the requester is \"me\". In the event an ACCOUNT field is ACLed non-private, it will be returned as a PROFILE field when viewed by a requester who is not \"me\".", + "LinkedExternalSites (go/PeopleApiConnectedSites)", + "Google-For-Work Profile. DOMAIN_PROFILE fields are editable by the Dasher administrator of the domain. They are not editable by the profile owner.", + "Domain shared contact. An entity that is owned by a domain and represents a person, but is not a user in the domain. For more details see https://support.google.com/a/answer/9281635.", + "To be deprecated in favor of RAW_DEVICE_CONTACT See go/mergedperson-for-device-contacts Aggregation is represented using person.metadata.device_contact_info", + "Google group. Examples: sales@zara.es.", + "Dynamite \"Named Flat Room\" (NFR). This is a Baggins Roster with label DYNAMITE_SPACE *and* label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Dynamite \"Unnamed Flat Room\" (UFR). This is a Baggins Roster with label DYNAMITE_SPACE but does *not* have label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Device contacts that are used in interaction ranking, but have not been uploaded to Google. These are synthesized people from interaction data. This container type is only used in ListRankedPeople and ListRankedTargets actions. See go/TopNWithClusteringPart1.", + "Data from a raw (non-aggregated) device contact. See go/mergedperson-for-device-contacts", + "Data from contact annotation. Contact annotations are currently generated and used by Google Assistant.", + "Data from delegated contacts. Delegated contacts are the contacts delegated to the current requester. The requester can then access those contacts. See go/ph-delegation." + ], + "type": "string" + }, + "loggingId": { + "description": "Used to log events for this affinity value, for disco diagnostic-purposes. See go/disco-diagnostics.", + "type": "string" + }, + "value": { + "description": "Affinity value. Frequently represented as an inverse ranking, sometimes with additional data encoded. If data_formats.affinity_formats.score_format is set to RAW_SCORE then the value will be the score returned by DAS.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAgeRangeType": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiAgeRangeType", + "properties": { + "ageInYears": { + "description": "Please read go/people-api-howto:age on how to get age data. Age of the user. The field is set based on profile storage fields such as account birthday. If the source fields are not present, `age_in_years` will be left unset.", + "format": "int32", + "type": "integer" + }, + "ageOfConsentStatus": { + "description": "Deprecated. Use go/supervised-accounts#capabilities-for-child-accounts instead. Denotes whether the user is under the region based Age of Consent. The user's region is based on ClientUserInfo.GlobalTos.AgreedLocation The age is inferred from Birthday field or CertifiedBornBefore field. The region based AoC is specified at go/aoc.", + "enum": [ + "AOC_STATUS_UNKNOWN", + "UNDER_AOC", + "AT_OR_ABOVE_AOC" + ], + "enumDescriptions": [ + "We do not have enough information to determine the user's age. e.g. user has no declared age or region is not known.", + "The user is under the Age of Consent of the region the user is in.", + "The user is at or older than the Age of Consent of the region the user is in." + ], + "type": "string" + }, + "ageRange": { + "description": "Deprecated. Please read go/people-api-howto:age on how to get age data. Age range is populated based on `account_birthday` and `certified_born_before`, which may not be set for dasher users.", + "enum": [ + "UNKNOWN", + "LESS_THAN_EIGHTEEN", + "TWENTY_ONE_OR_OLDER", + "EIGHTEEN_TO_TWENTY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo": { + "description": "Store all app unique info that are needed for app action fulfillment.", + "id": "AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo", + "properties": { + "appUniqueId": { + "description": "Store the app unique id endpoint. This will be passed over to app to fulfill the action. For example, app_unique_id for Whatsapp will be \"11234567890@s.whatsapp.net\"", + "type": "string" + }, + "displayAppUniqueId": { + "description": "Store third party endpoint that is displayed to users. For example, display_app_unique_id for Whatsapp will be \"Message +11234567890\".", + "type": "string" + }, + "label": { + "description": "Store third party endpoint label. For example, \"HOME\", \"WORK\"", + "type": "string" + }, + "mimetype": { + "description": "Store mimetype of this endpoint. We will use this as the differentiator for Assistant to know whether to use the RawContact for messaging, call or video call. For example, send message mimetype for whatsapp: \"vnd.android.cursor.item/vnd.com.whatsapp.profile\" voice call mimetype for whatsapp: \"vnd.android.cursor.item/vnd.com.whatsapp.voip.call\"", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiBestDisplayName": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiBestDisplayName", + "properties": { + "containerType": { + "description": "The container the suggested name was sourced from", + "enum": [ + "UNKNOWN_CONTAINER", + "PROFILE", + "CONTACT", + "CIRCLE", + "PLACE", + "ACCOUNT", + "EXTERNAL_ACCOUNT", + "DOMAIN_PROFILE", + "DOMAIN_CONTACT", + "DEVICE_CONTACT", + "GOOGLE_GROUP", + "NAMED_CHAT_ROOM", + "UNNAMED_CHAT_ROOM", + "AFFINITY", + "RAW_DEVICE_CONTACT", + "CONTACT_ANNOTATION", + "DELEGATED_CONTACT" + ], + "enumDescriptions": [ + "", + "Google Profile. PROFILE fields are editable by the profile owner, unless the field metadata includes writeable=false.", + "Google Contact", + "Deprecated. E-mail only circle membership should be dead. E-mail only circle membership of non-g+ user.", + "A maps place", + "The requester's own Gaia account. ACCOUNT fields are not editable by anyone. They only occur when the requester is \"me\". In the event an ACCOUNT field is ACLed non-private, it will be returned as a PROFILE field when viewed by a requester who is not \"me\".", + "LinkedExternalSites (go/PeopleApiConnectedSites)", + "Google-For-Work Profile. DOMAIN_PROFILE fields are editable by the Dasher administrator of the domain. They are not editable by the profile owner.", + "Domain shared contact. An entity that is owned by a domain and represents a person, but is not a user in the domain. For more details see https://support.google.com/a/answer/9281635.", + "To be deprecated in favor of RAW_DEVICE_CONTACT See go/mergedperson-for-device-contacts Aggregation is represented using person.metadata.device_contact_info", + "Google group. Examples: sales@zara.es.", + "Dynamite \"Named Flat Room\" (NFR). This is a Baggins Roster with label DYNAMITE_SPACE *and* label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Dynamite \"Unnamed Flat Room\" (UFR). This is a Baggins Roster with label DYNAMITE_SPACE but does *not* have label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Device contacts that are used in interaction ranking, but have not been uploaded to Google. These are synthesized people from interaction data. This container type is only used in ListRankedPeople and ListRankedTargets actions. See go/TopNWithClusteringPart1.", + "Data from a raw (non-aggregated) device contact. See go/mergedperson-for-device-contacts", + "Data from contact annotation. Contact annotations are currently generated and used by Google Assistant.", + "Data from delegated contacts. Delegated contacts are the contacts delegated to the current requester. The requester can then access those contacts. See go/ph-delegation." + ], + "type": "string" + }, + "displayName": { + "description": "The display name. This name is intended to be the best name to display for this Person. It may be built from a variety of fields, even if those fields are not explicitly requested in the request mask. Generally, the display name is formatted in 'first last' format. If the name appears to be a CJK name (as determined by a heuristic), the 'last first' format will be used. There may be other cases that the 'last first' format is used which are not documented here. See the code at: http://google3/java/com/google/focus/backend/client/DisplayNameFormatter.java?l=659\u0026rcl=351360938", + "type": "string" + }, + "displayNameLastFirst": { + "description": "The display name, always in 'last first' format. This field does not depend on the format of `display_name` and will always be in 'last first' format.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiBirthday": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiBirthday", + "properties": { + "ageDisableGracePeriod": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod" + }, + "birthdayDecoration": { + "$ref": "SocialGraphApiProtoBirthdayDecoration", + "description": "Whether the user has opted in to display their birthday via photo decorations." + }, + "birthdayResolution": { + "enum": [ + "FULL", + "MONTH_AND_APPROXIMATED_YEAR", + "APPROXIMATED_YEAR" + ], + "enumDescriptions": [ + "Birthday includes year, month, and day.", + "Birthday includes approximate year and month.", + "Birthday includes an approximate year." + ], + "type": "string" + }, + "calendarDay": { + "$ref": "GoogleTypeDate", + "description": "Birthdays 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. Currently this is always returned by PeopleApi on reads that include birthday fields. New clients should write using calendar_day. Clients that were already writing via date_ms are allowlisted such that writes use that field. Old callers should migrate to writing BOTH date_ms and calendar_day values. If those are consistent, they may be removed from the 'legacy_timestamp_event_write_behavior_enabled' capability." + }, + "dateMs": { + "description": "Birthdays are currently represented as timestamp values, although the interpretation of these timestamp values is a calendar date. Clients are recommended to read the calendar_day field, which is easier to work with than date_ms. New clients writing to PeopleApi must set calendar_day instead of date_ms. There are a few important details about how this value should be mapped to a calendar date that should be consistent among all clients. 1. Epoch - The epoch or calendar date equivalent to 0 ms is chosen to be 1970-01-01 UTC. 2. Timezone - All of the conversions to calendars should occur in the UTC timezone. We don't typically think of someones birthday changing when they travel, so clients should not use local times. 3. Calendar - The calendar used for the dates should be a Gregorian proleptic calendar. Proleptic means that the rules of the Gregorian calendar are retrofitted to before its adoption. It is easy to get this wrong, particularly with the java GregorianCalendar class, which by default is a mixed Gregorian/Julian calendar. Joda Time makes this easy, but if it's not an option, look into GregorianCalendar.setGregorianChange(). 4. Omitted years - Clients have chosen to represent birthdays or events without years as timestamps within the year zero. When the computed date has a year of 0, it means the client did not specify a year. Note that a year 0 does not exist in a chronology like the familiar Anno Domini (A.D. and B.C.); clients must agree on year numbering. 5. Year Numbering - The chronology used to map dates to the calendar should use Astronomical Year Numbering so that the year 0 is defined and dates before it have a negative year. If libraries only provide Anno Domini, then the year of 1 BC corresponds to year zero and an omitted user provided year. Other BC values are presumed rare, but clients should still not ignore the era and interpret the year as an A.D. value, especially if writing values back to PeopleApi.", + "format": "int64", + "type": "string" + }, + "dateMsAsNumber": { + "description": "date_ms_as_number contains the same data as date_ms, but has a different type in generated javascript bindings. Non javascript clients can ignore it.", + "format": "int64", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "description": "Actual value entered. Allows unstructured values.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod", + "properties": { + "calendarDay": { + "$ref": "GoogleTypeDate", + "description": "Provisional birthday \u003cAoC the user provided, which made them enter the grace period. The main birthday fields were not altered yet while in the grace period." + }, + "gracePeriodEnd": { + "description": "Timestamp which signifies the end of the grace period for this account.", + "format": "google-datetime", + "type": "string" + }, + "gracePeriodStart": { + "description": "Timestamp which signifies the start of the grace period for this account.", + "format": "google-datetime", + "type": "string" + }, + "gracePeriodType": { + "enum": [ + "UNKNOWN", + "USER_SPECIFIED_BIRTHDAY", + "UNDERAGE_SUSPECTED" + ], + "enumDescriptions": [ + "", + "When CalendarDay is populated by user specified birthday.", + "Account is marked as underage by other means. The CalendarDay field is not populated." + ], + "type": "string" + }, + "manualGracePeriodInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriodManualGracePeriodInfo" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriodManualGracePeriodInfo": { + "description": "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", + "id": "AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriodManualGracePeriodInfo", + "properties": { + "escalateTo": { + "description": "The Gaia ID of an email that ops can send inquiries to for appeals.", + "format": "int64", + "type": "string" + }, + "executedBy": { + "description": "The Gaia ID of a Googler who initiated this disable.", + "format": "int64", + "type": "string" + }, + "reason": { + "description": "When setting a user into age grace period manually, the requester can additionally supply a short human-readable reason of why the account is put into manual grace period. The description will be forwarded to Gaia when we disable the account when the grace period expires.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiBraggingRights": { + "id": "AppsPeopleOzExternalMergedpeopleapiBraggingRights", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCalendar": { + "description": "A url to the person's calendar. As of 03/2018 is not supported for user Profile.", + "id": "AppsPeopleOzExternalMergedpeopleapiCalendar", + "properties": { + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "description": "The type of the calendar URL. The type can be free form or one of these predefined values: * `home` * `freeBusy` * `work`", + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData": { + "id": "AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData", + "properties": { + "callerIdSource": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedDataCallerIdSource", + "description": "Indicates which data source was used to populate the caller ID result" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedDataCallerIdSource": { + "id": "AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedDataCallerIdSource", + "properties": { + "sourceType": { + "enum": [ + "UNKNOWN_SOURCE_TYPE", + "PLACE", + "SCOOBY_MANUAL", + "SCOOBY_GOOGLE_VOICE", + "SCOOBY_CSA", + "SCOOBY_KNOWLEDGE_GRAPH" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore": { + "description": "Information related to domain administrator (or authority) certification of a users age.", + "id": "AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore", + "properties": { + "bornBefore": { + "description": "Indicates that the user was born at or before this time.", + "format": "google-datetime", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiChannelData": { + "id": "AppsPeopleOzExternalMergedpeopleapiChannelData", + "properties": { + "channelId": { + "description": "Unique ID that corresponds to a Youtube channel.", + "type": "string" + }, + "commentCount": { + "description": "Number of comments for a given Youtube channel.", + "format": "int64", + "type": "string" + }, + "description": { + "description": "Description of the channel.", + "type": "string" + }, + "playlistCount": { + "format": "int64", + "type": "string" + }, + "profilePictureUrl": { + "description": "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.", + "type": "string" + }, + "profileUrl": { + "description": "URL of user's Youtube channel profile.", + "type": "string" + }, + "subscriberCount": { + "description": "Number of subscribers for a given Youtube channel.", + "format": "int64", + "type": "string" + }, + "title": { + "description": "Title of the YouTube channel", + "type": "string" + }, + "usesYoutubeNames": { + "description": "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.", + "type": "boolean" + }, + "videoCount": { + "description": "Number of videos uploaded in a given Youtube channel.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCircleMembership": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiCircleMembership", + "properties": { + "circleId": { + "description": "The circle that the person belongs to.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiClientData": { + "description": "Arbitrary client data that is populated based on the client", + "id": "AppsPeopleOzExternalMergedpeopleapiClientData", + "properties": { + "key": { + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "namespace": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCommunicationEmail": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiCommunicationEmail", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiContactGroupMembership": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiContactGroupMembership", + "properties": { + "contactGroupId": { + "description": "The contact-group that the person belong to. The id can be either a hex-formatted id or a camel-cased SystemContactGroup predefined group name. The id will be predefined group name iff the system_contact_group_id has a value.", + "type": "string" + }, + "delegatedGroupInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiDelegatedGroupInfo", + "description": "Information related to delegated group that this contact belongs to." + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "systemContactGroupId": { + "description": "This field will be populated when the membership is in a system-reserved contact-group.", + "enum": [ + "UNKNOWN", + "MY_CONTACTS", + "STARRED", + "FRIENDS", + "FAMILY", + "COWORKERS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiContactStateInfo": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiContactStateInfo", + "properties": { + "contactState": { + "$ref": "SocialGraphApiProtoContactState" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCoverPhoto": { + "description": "CoverPhoto is the long banner photo (also called full bleed photo) at the top of G+ profile page.", + "id": "AppsPeopleOzExternalMergedpeopleapiCoverPhoto", + "properties": { + "imageHeight": { + "format": "int32", + "type": "integer" + }, + "imageId": { + "type": "string" + }, + "imageUrl": { + "type": "string" + }, + "imageWidth": { + "format": "int32", + "type": "integer" + }, + "isAnimated": { + "type": "boolean" + }, + "isDefault": { + "type": "boolean" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCustomSchemaField": { + "description": "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).", + "id": "AppsPeopleOzExternalMergedpeopleapiCustomSchemaField", + "properties": { + "fieldDisplayName": { + "type": "string" + }, + "fieldId": { + "type": "string" + }, + "fieldType": { + "enum": [ + "CUSTOM_FIELD_TYPE_UNKNOWN", + "STRING", + "INT64", + "BOOL", + "DOUBLE", + "EMAIL", + "PHONE", + "DATE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "multiValued": { + "type": "boolean" + }, + "schemaDisplayName": { + "type": "string" + }, + "schemaId": { + "type": "string" + }, + "type": { + "description": "The type of the custom schema field. The type can be free form or one of these predefined values: * `home` * `other` * `work`", + "type": "string" + }, + "value": { + "description": "String representation of the value, based on FieldType", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiCustomerInfo": { + "description": "Contains customer data for profile owner proxied from D3.", + "id": "AppsPeopleOzExternalMergedpeopleapiCustomerInfo", + "properties": { + "customerId": { + "description": "DEPRECATED. Use obfuscated_customer_id instead. If result has a GSuite Customer ID, this field will continue to be populated with -1 to indicate the presence of a value for backwards compatibility with clients in the wild. See b/144596193.", + "format": "int64", + "type": "string" + }, + "customerName": { + "description": "Customer organization name for dasher user.", + "type": "string" + }, + "obfuscatedCustomerId": { + "description": "Obfuscated FlexOrgs customer ID for Dasher user. See cs/symbol:CustomerIdObfuscator.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo": { + "description": "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)", + "id": "AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo", + "properties": { + "containerType": { + "description": "See SourceIdentity.container_type", + "enum": [ + "UNKNOWN_CONTAINER", + "PROFILE", + "CONTACT", + "CIRCLE", + "PLACE", + "ACCOUNT", + "EXTERNAL_ACCOUNT", + "DOMAIN_PROFILE", + "DOMAIN_CONTACT", + "DEVICE_CONTACT", + "GOOGLE_GROUP", + "NAMED_CHAT_ROOM", + "UNNAMED_CHAT_ROOM", + "AFFINITY", + "RAW_DEVICE_CONTACT", + "CONTACT_ANNOTATION", + "DELEGATED_CONTACT" + ], + "enumDescriptions": [ + "", + "Google Profile. PROFILE fields are editable by the profile owner, unless the field metadata includes writeable=false.", + "Google Contact", + "Deprecated. E-mail only circle membership should be dead. E-mail only circle membership of non-g+ user.", + "A maps place", + "The requester's own Gaia account. ACCOUNT fields are not editable by anyone. They only occur when the requester is \"me\". In the event an ACCOUNT field is ACLed non-private, it will be returned as a PROFILE field when viewed by a requester who is not \"me\".", + "LinkedExternalSites (go/PeopleApiConnectedSites)", + "Google-For-Work Profile. DOMAIN_PROFILE fields are editable by the Dasher administrator of the domain. They are not editable by the profile owner.", + "Domain shared contact. An entity that is owned by a domain and represents a person, but is not a user in the domain. For more details see https://support.google.com/a/answer/9281635.", + "To be deprecated in favor of RAW_DEVICE_CONTACT See go/mergedperson-for-device-contacts Aggregation is represented using person.metadata.device_contact_info", + "Google group. Examples: sales@zara.es.", + "Dynamite \"Named Flat Room\" (NFR). This is a Baggins Roster with label DYNAMITE_SPACE *and* label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Dynamite \"Unnamed Flat Room\" (UFR). This is a Baggins Roster with label DYNAMITE_SPACE but does *not* have label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Device contacts that are used in interaction ranking, but have not been uploaded to Google. These are synthesized people from interaction data. This container type is only used in ListRankedPeople and ListRankedTargets actions. See go/TopNWithClusteringPart1.", + "Data from a raw (non-aggregated) device contact. See go/mergedperson-for-device-contacts", + "Data from contact annotation. Contact annotations are currently generated and used by Google Assistant.", + "Data from delegated contacts. Delegated contacts are the contacts delegated to the current requester. The requester can then access those contacts. See go/ph-delegation." + ], + "type": "string" + }, + "id": { + "description": "See SourceIdentity.id", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiDelegatedGroupInfo": { + "description": "Information related to delegated group that this contact belongs to.", + "id": "AppsPeopleOzExternalMergedpeopleapiDelegatedGroupInfo", + "properties": { + "delegatedGroupId": { + "$ref": "SocialGraphApiProtoDelegatedGroupId", + "description": "Required. The additional id specifically for a delegated group." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata": { + "description": "Extra metadata for an aggregated or raw device contact.", + "id": "AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata", + "properties": { + "attributes": { + "description": "Attributes for this device contact.", + "items": { + "enum": [ + "ATTRIBUTE_UNKNOWN", + "STARRED" + ], + "enumDescriptions": [ + "", + "This contact is starred." + ], + "type": "string" + }, + "type": "array" + }, + "usageInfo": { + "description": "Usage info for this device contact.", + "items": { + "$ref": "SocialGraphApiProtoUsageInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiDeviceContactId": { + "description": "Unique id for an aggregated device contact.", + "id": "AppsPeopleOzExternalMergedpeopleapiDeviceContactId", + "properties": { + "contactId": { + "description": "Aggregated device contact id on the source device.", + "format": "int64", + "type": "string" + }, + "deviceId": { + "description": "Source device id (go/client-instance-id) of this device contact.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo": { + "description": "Device contact information.", + "id": "AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo", + "properties": { + "deviceContactMetadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata", + "description": "Metadata for this device contact." + }, + "hasCrossDeviceData": { + "description": "Output only. True if any of the contact's phone, email or address fields can be used on devices other than the one it originated from. Note that there can be other fields, typically name, and metadata such as some of the raw_contact_infos that can be used on other devices. Assigned by the server.", + "type": "boolean" + }, + "id": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiDeviceContactId", + "description": "Id of the device contact." + }, + "lastClientUpdateTime": { + "description": "Last time a device contact was updated on device.", + "format": "google-datetime", + "type": "string" + }, + "lookupKey": { + "description": "An opaque value used by the device to look up this contact if its row id changed as a result of a sync or aggregation. See: https://developer.android.com/reference/android/provider/ContactsContract.ContactsColumns.html#LOOKUP_KEY", + "type": "string" + }, + "rawContactInfo": { + "description": "Info about the raw device contacts that make up this device contact.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfo": { + "id": "AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfo", + "properties": { + "containerId": { + "description": "The container ID of the entity this field creates a join to. See `SourceIdentity.id`.", + "type": "string" + }, + "containerType": { + "description": "The type of container that this edge points to. See `SourceIdentity.container_type`.", + "enum": [ + "UNKNOWN_CONTAINER", + "PROFILE", + "CONTACT", + "CIRCLE", + "PLACE", + "ACCOUNT", + "EXTERNAL_ACCOUNT", + "DOMAIN_PROFILE", + "DOMAIN_CONTACT", + "DEVICE_CONTACT", + "GOOGLE_GROUP", + "NAMED_CHAT_ROOM", + "UNNAMED_CHAT_ROOM", + "AFFINITY", + "RAW_DEVICE_CONTACT", + "CONTACT_ANNOTATION", + "DELEGATED_CONTACT" + ], + "enumDescriptions": [ + "", + "Google Profile. PROFILE fields are editable by the profile owner, unless the field metadata includes writeable=false.", + "Google Contact", + "Deprecated. E-mail only circle membership should be dead. E-mail only circle membership of non-g+ user.", + "A maps place", + "The requester's own Gaia account. ACCOUNT fields are not editable by anyone. They only occur when the requester is \"me\". In the event an ACCOUNT field is ACLed non-private, it will be returned as a PROFILE field when viewed by a requester who is not \"me\".", + "LinkedExternalSites (go/PeopleApiConnectedSites)", + "Google-For-Work Profile. DOMAIN_PROFILE fields are editable by the Dasher administrator of the domain. They are not editable by the profile owner.", + "Domain shared contact. An entity that is owned by a domain and represents a person, but is not a user in the domain. For more details see https://support.google.com/a/answer/9281635.", + "To be deprecated in favor of RAW_DEVICE_CONTACT See go/mergedperson-for-device-contacts Aggregation is represented using person.metadata.device_contact_info", + "Google group. Examples: sales@zara.es.", + "Dynamite \"Named Flat Room\" (NFR). This is a Baggins Roster with label DYNAMITE_SPACE *and* label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Dynamite \"Unnamed Flat Room\" (UFR). This is a Baggins Roster with label DYNAMITE_SPACE but does *not* have label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Device contacts that are used in interaction ranking, but have not been uploaded to Google. These are synthesized people from interaction data. This container type is only used in ListRankedPeople and ListRankedTargets actions. See go/TopNWithClusteringPart1.", + "Data from a raw (non-aggregated) device contact. See go/mergedperson-for-device-contacts", + "Data from contact annotation. Contact annotations are currently generated and used by Google Assistant.", + "Data from delegated contacts. Delegated contacts are the contacts delegated to the current requester. The requester can then access those contacts. See go/ph-delegation." + ], + "type": "string" + }, + "extendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfoExtensionData", + "description": "Data that is added to the proto by peopleapi read extensions." + }, + "materialized": { + "description": "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.", + "type": "boolean" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfoExtensionData": { + "id": "AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfoExtensionData", + "properties": { + "gdataCompatibilityExtensionId": { + "description": "The GDataCompatibilityExtension will (temporarily) return mobile_owner_id for profile containers.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEmail": { + "id": "AppsPeopleOzExternalMergedpeopleapiEmail", + "properties": { + "certificate": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEmailCertificate" + }, + "type": "array" + }, + "classification": { + "enum": [ + "EMAIL_CLASSIFICATION_UNKNOWN", + "SIGNUP_EMAIL" + ], + "enumDescriptions": [ + "", + "This is the email user provided when signing up with Google (ie. this email is stored in Gaia). There may be more than 1 signup email. This is set for an Email of container type PROFILE." + ], + "type": "string" + }, + "contactGroupPreference": { + "description": "To read or update, use the CONTACT_GROUP_PREFERENCE mask field.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference" + }, + "type": "array" + }, + "displayName": { + "type": "string" + }, + "extendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEmailExtendedData" + }, + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "signupEmailMetadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata" + }, + "type": { + "description": "The type of the email address. The type can be free form or one of these predefined values: * `home` * `work` * `other`", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEmailCertificate": { + "description": "Under development. Represents a hosted 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.", + "id": "AppsPeopleOzExternalMergedpeopleapiEmailCertificate", + "properties": { + "configurationName": { + "description": "The name of this certificate configuration. Examples could be \"High security level\" or \"For domain emails only\".", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata", + "description": "It is conceivable that certificates could be ACLed. We also need to indicate which certificate is the default. The PersonFieldMetadata can accomplish both of these." + }, + "status": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEmailCertificateCertificateStatus" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEmailCertificateCertificateStatus": { + "description": "Minimal S/MIME certificate status i.e. two fields per email address.", + "id": "AppsPeopleOzExternalMergedpeopleapiEmailCertificateCertificateStatus", + "properties": { + "notAfterSec": { + "description": "The certificate expiration timestamp in seconds.", + "format": "int64", + "type": "string" + }, + "statusCode": { + "description": "Current status of the email's certificate chain.", + "enum": [ + "UNKNOWN", + "CERTIFICATE_VALID", + "CERTIFICATE_MISSING", + "CERTIFICATE_EXPIRED", + "CERTIFICATE_REVOKED" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference": { + "description": "Preferred email addresses for contact groups.", + "id": "AppsPeopleOzExternalMergedpeopleapiEmailContactGroupPreference", + "properties": { + "contactGroupId": { + "type": "string" + }, + "isSynthetic": { + "description": "If the Preference was implicitly set by PeopleApi. A preference with this bit will not be saved. See go/contact-group-email-preference-papi-problem for more info.", + "type": "boolean" + }, + "type": { + "enum": [ + "UNKNOWN", + "GMAIL" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEmailExtendedData": { + "description": "Extension data for a person email.", + "id": "AppsPeopleOzExternalMergedpeopleapiEmailExtendedData", + "properties": { + "internalExternal": { + "$ref": "PeoplestackFlexorgsProtoInternalExternal", + "description": "For use with the CUSTOMER_INFO_ADDITIONAL_DATA extension. This includes information on whether the given email is internal to or external to the requesting user's domain." + }, + "isPlaceholder": { + "description": "For ListPeoplebyKnownId to indicate an email is sythesized from a lookup email.", + "type": "boolean" + }, + "smtpServerSupportsTls": { + "description": "For use with the TLS extension. Whether the SMTP server that handles delivery for this email address supports TLS encryption.", + "type": "boolean" + }, + "usesConfusingCharacters": { + "description": "For use with the Gmail Homograph Warning extension. Whether the email contains mixed character sets that could be used to decieve users. This field is populated by the GMAIL_SECURITY_DATA extension.", + "type": "boolean" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata": { + "description": "Additional metadata for a signup email. This will only be set if the email's classification is SIGNUP_EMAIL.", + "id": "AppsPeopleOzExternalMergedpeopleapiEmailSignupEmailMetadata", + "properties": { + "primary": { + "description": "This is considered to be the primary signup email. At most 1 signup email will have this set.", + "type": "boolean" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEmergencyInfo": { + "description": "Emergency info for Person. See go/emergency-trusted-contacts-papi.", + "id": "AppsPeopleOzExternalMergedpeopleapiEmergencyInfo", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "pomeroyId": { + "description": "Opaque id from Pomeroy (go/pomeroy). Non-empty pomeroy_id means that this contact has the potential to become trusted contact or it's already trusted contact. Trust is eventually gaia\u003c-\u003egaia link, but when the trust link is initiated gaia might not be known. Until gaia is discovered, pomeroy_id is used to identify the contact uniquely. If trust_level is missing or set to TRUST_LEVEL_UNSPECIFIED pomeroy_id must be empty.", + "type": "string" + }, + "trustLevel": { + "enum": [ + "TRUST_LEVEL_UNSPECIFIED", + "TRUST_LEVEL_EMERGENCY_CONTACT" + ], + "enumDescriptions": [ + "The person does not have a specified trust level.", + "The person is an Emergency Contact." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiEvent": { + "id": "AppsPeopleOzExternalMergedpeopleapiEvent", + "properties": { + "calendarDay": { + "$ref": "GoogleTypeDate", + "description": "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": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "timestampMillis": { + "description": "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.", + "format": "int64", + "type": "string" + }, + "type": { + "description": "The type of the event. The type can be free form or one of these predefined values: * `anniversary` * `other`", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiExternalId": { + "description": "External identifier associated with the person.", + "id": "AppsPeopleOzExternalMergedpeopleapiExternalId", + "properties": { + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "description": "The type of the external ID. The type can be free form or one of these predefined values: * `account` * `customer` * `loginId` * `network` * `organization`", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFieldAcl": { + "description": "The field ACL. Currently only populated on profile fields for the profile owner. A Person field ACL; see http://go/peopleapi-acl", + "id": "AppsPeopleOzExternalMergedpeopleapiFieldAcl", + "properties": { + "aclEntry": { + "description": "A custom type of field ACL entry. The set of all ACL entries includes those listed in acl_entry as well as predefined_acl_entry.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry" + }, + "type": "array" + }, + "authorizedViewers": { + "description": "Set of users that will be authorized to view the field by this field ACL. If the ACL is public, this will only contain ALL_USERS. This field is synthesized, read-only, and currently only used for profile photos. It's populated under \"person.photo.metadata.field_acl\" for the current photo ACL and \"person.photo.metadata.acl_choices\" for available photo ACL choices. Note: The set of authorized viewers for a given FieldAcl may depend on the user's account type and domain configuration. For example, a PRIVATE_READ FieldAcl could have any of the following authorized viewers: Consumer user: [IDENTITY_ACL_ESTABLISHED] Dasher user without domain contact sharing: [IDENTITY_ACL_ESTABLISHED] Unicorn user: [SAME_UNICORN_FAMILY] Hafez user: []", + "items": { + "enum": [ + "AUTHORIZED_VIEWER_UNSPECIFIED", + "IDENTITY_ACL_ESTABLISHED", + "SAME_ORGANIZATION", + "SAME_UNICORN_FAMILY", + "ALL_USERS" + ], + "enumDescriptions": [ + "", + "Users with an identity ACL established with the field owner through user-to-user interactions.", + "Users in the same enterprise organization as the field owner.", + "Users in the same Unicorn family as the field owner.", + "All users, including anonymous viewers." + ], + "type": "string" + }, + "type": "array" + }, + "predefinedAclEntry": { + "description": "A common type of field ACL entry. A predefined ACL entry is a shortcut for a commonly occurring case of role and scope. For example, PUBLIC_READ is the same as an AclEntry with role = READER and scope.all_users = true. The set of all ACL entries includes those listed in acl_entry as well as predefined_acl_entry.", + "items": { + "enum": [ + "UNKNOWN", + "OWNER", + "PUBLIC_READ", + "DOMAIN_READ", + "YOUR_CIRCLES_READ", + "EXTENDED_CIRCLES_READ", + "PRIVATE_READ" + ], + "enumDescriptions": [ + "", + "Equivalent to role = OWNER and scope.person.person_id = requester's person ID.", + "Equivalent to role = READER and scope.all_users = true.", + "Equivalent to role = READER and scope.domain_users = true.", + "Equivalent to role = READER and scope.membership.circle.circle_set = YOUR_CIRCLES.", + "Equivalent to role = READER and scope.membership.circle.circle_set = EXTENDED_CIRCLES.", + "This is under implementation and not populated in PeopleAPI yet. Equivalent to role = READER and scope.person.person_id = requester's person ID. Presence of this entry means the field is private and is not visible to others." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry": { + "id": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry", + "properties": { + "role": { + "enum": [ + "UNKNOWN", + "READER", + "WRITER", + "OWNER" + ], + "enumDescriptions": [ + "", + "", + "", + "owner can change ACL" + ], + "type": "string" + }, + "scope": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope": { + "id": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope", + "properties": { + "allUsers": { + "description": "Indicates that the field is accessible to all users including unauthenticated users. For some fields this means \"to everyone except blocked users\".", + "type": "boolean" + }, + "domainUsers": { + "description": "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.", + "type": "boolean" + }, + "membership": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl" + }, + "person": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl", + "description": "Indicates that the field is accessible to a person." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl": { + "description": "Used when the field is accessible to a membership that the person has.", + "id": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl", + "properties": { + "circle": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl" + }, + "contactGroup": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl": { + "description": "Used when a field is accessible to a circle.", + "id": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl", + "properties": { + "circleId": { + "type": "string" + }, + "circleSet": { + "enum": [ + "UNKNOWN", + "YOUR_CIRCLES", + "EXTENDED_CIRCLES" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "displayName": { + "description": "Equivalent to Circle.display_name for the circle_id. Included when FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This field is read-only and ignored on update.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl", + "properties": { + "contactGroupId": { + "description": "A contact group ID. This is either a user-defined contact group hex ID, or it is the string name of the enum constant in Group.PredefinedId in FBS backend.proto for predefined groups. Common values for the predefined name include, but are not limited to: all, myContacts, starred, chatBuddies, friends, family, coworkers, and blocked.", + "type": "string" + }, + "displayName": { + "description": "The localized display name for the predefined group, if known; or, the display name for the user-defined contact group. Included when FieldAclOption.FULL_ACL_WITH_DETAILS is requested.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl", + "properties": { + "displayName": { + "description": "DEPRECATED. This is not different than reading from person.name for a self-read; ACLs to a circle or to a non-self person are no longer supported. Equivalent to Name.display_name for the person_id profile. Included when the profile Name is ACLed to the requester and FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This field is read-only and ignored on update.", + "type": "string" + }, + "personId": { + "type": "string" + }, + "photoUrl": { + "description": "DEPRECATED. This is not different than reading from person.photo for a self-read; ACLs to a circle or to a non-self person are no longer supported. Equivalent to Photo.url for the person_id profile. Included when the profile Photo is ACLed to the requester and FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This field is read-only and ignored on update.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo": { + "description": "Emergency information for Person field, such as Phone or Email. See go/emergency-trusted-contacts-papi.", + "id": "AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo", + "properties": { + "emergencyLevel": { + "enum": [ + "EMERGENCY_LEVEL_UNSPECIFIED", + "EMERGENCY_LEVEL_PRIMARY" + ], + "enumDescriptions": [ + "The field (such as phone) is not designated for emergency communication.", + "The field (such as phone) is designated for emergency communication." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiFileAs": { + "description": "The FileAs field in Contacts is used to override the DisplayName of a Contact for that User. ", + "id": "AppsPeopleOzExternalMergedpeopleapiFileAs", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiGPayExtendedData": { + "description": "Extension data for use in GPay Product Profile. go/gpay-product-profile-1-pager Contact: profiles-eng-fe@google.com", + "id": "AppsPeopleOzExternalMergedpeopleapiGPayExtendedData", + "properties": { + "failure": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiProductProfileFailure", + "description": "Failure type if there is an error when fetching product profile data." + }, + "internationalNumber": { + "description": "A number in international format including the country code that is made user readable by including formatting such as spaces. Example: \"+41 44 668 1800\" DEPRECATED: A user's phone number should be masked and not in an international format", + "type": "string" + }, + "maskedNumber": { + "description": "The masked string of a user's phone number The number will be obfucsated with * except the last 4 digits. Refer to: //java/com/google/nbu/paisa/common/PhoneNumberMasker.java", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiGender": { + "description": "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. ", + "id": "AppsPeopleOzExternalMergedpeopleapiGender", + "properties": { + "addressMeAs": { + "description": "Preferred pronoun choice. It's unclear whether this value is constrained to a finite domain by UIs. `address_me_as` may be populated regardless of whether `type` is \"male\", \"female\", or \"other\", although most writers only set it if `type` is \"other\".", + "type": "string" + }, + "customType": { + "description": "A free-form string indicating what the user entered as their gender. `custom_type` may exist even if the type is \"male\" or \"female\", although most writers do not set it unless `type` is \"other\".", + "type": "string" + }, + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "description": "The gender. \"male\", \"female\", or \"other\". If \"other\", typically, additional fields will have additional information.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiGplusExtendedData": { + "id": "AppsPeopleOzExternalMergedpeopleapiGplusExtendedData", + "properties": { + "contentRestriction": { + "enum": [ + "UNKNOWN", + "PUBLIC", + "DISCOVERY", + "WALLED_GARDEN" + ], + "enumDescriptions": [ + "", + "Can send and consume public content", + "Restricted to only sending content internally, cannot mutate external content in any manner", + "Restricted to sending content internally, no public content naturally surfaces" + ], + "type": "string" + }, + "isEnterpriseUser": { + "description": "Equivalent to having the DASHER_POLICY bit in the REGISTERED state.", + "type": "boolean" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData": { + "description": "Extension data for use in Hangouts.", + "id": "AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData", + "properties": { + "hadPastHangoutState": { + "enum": [ + "UNKNOWN_PAST_HANGOUT_STATE", + "HAD_PAST_HANGOUT", + "NO_PAST_HANGOUT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "invitationStatus": { + "description": "Populated for all contacts. Only set if had_past_hangout_state == HAD_PAST_HANGOUT. INVITATION_NEEDED is not a valid value because there already is a past hangout, which means either the invitation is still pending or it’s been accepted.", + "enum": [ + "UNKNOWN_INVITATION_STATUS", + "PENDING_INVITATION", + "ACCEPTED_INVITATION", + "INVITATION_NEEDED" + ], + "enumDescriptions": [ + "", + "The invitation is still pending, or was declined", + "The other user accepted the invitation", + "An invitation is needed to chat with this user" + ], + "type": "string" + }, + "isBot": { + "description": "True if this is a Hangouts bot.", + "type": "boolean" + }, + "isDismissed": { + "type": "boolean" + }, + "isFavorite": { + "type": "boolean" + }, + "isPinned": { + "type": "boolean" + }, + "userType": { + "enum": [ + "UNKNOWN_USER_TYPE", + "INVALID", + "GAIA", + "OFF_NETWORK_PHONE", + "MALFORMED_PHONE_NUMBER", + "UNKNOWN_PHONE_NUMBER", + "ANONYMOUS_PHONE_NUMBER" + ], + "enumDescriptions": [ + "", + "No entity found.", + "Regular GAIA users.", + "Phone numbers represented as GAIA ids.", + "Malformed number. Those are numbers that don't comfirm to an E.164 format that we get with phone calls/voicemails (e.g. \"HELLO\").", + "Unknown number. This is a number that the caller has chosen not to broadcast.", + "Phone number that Google knows about, but the caller chose not to reveal to the recipient." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiIdentityInfo": { + "id": "AppsPeopleOzExternalMergedpeopleapiIdentityInfo", + "properties": { + "originalLookupToken": { + "description": "Original lookup token from the request that resulted in this person or one of its containers.", + "items": { + "type": "string" + }, + "type": "array" + }, + "previousPersonId": { + "description": "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "sourceIds": { + "description": "A list of sources contributing to the merged person, including profiles (with gaia-id), contacts and synthetic-contacts.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiSourceIdentity" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiIm": { + "id": "AppsPeopleOzExternalMergedpeopleapiIm", + "properties": { + "formattedProtocol": { + "description": "The `protocol` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "protocol": { + "description": "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": "string" + }, + "type": { + "description": "The type of the IM. The type can be free form or one of these predefined values: * `home` * `work` * `other`", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget": { + "description": "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 = bob@gmail.com 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 ]", + "id": "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget", + "properties": { + "app": { + "items": { + "enum": [ + "UNKNOWN", + "BABEL", + "YOUTUBE", + "WHOS_DOWN", + "YOUTUBE_MANGO", + "PHOTOS", + "GOOGLE_ASSISTANT", + "KABOO", + "COMMERCE_PLATFORM", + "SPACES", + "MAPS", + "LOUPE_UNUSED", + "POMEROY", + "LOUPE", + "PEOPLE_PLAYGROUND", + "NEWS_360", + "DUO" + ], + "enumDescriptions": [ + "Should never be stored in practice", + "Aka Hangouts", + "Aka Reactr", + "Aka Who's Down", + "Aka YouTube for Emerging Markets", + "Aka Google Photos", + "", + "Aka PAISA, aka Tez", + "Aka Naksha", + "Aka Google Spaces", + "Aka Google Map", + "This field is deprecated.", + "Aka Trusted Contacts", + "Aka Camera by Google Photos", + "See go/people-playground-design.", + "Also mdb/social-magazines", + "Aka Taychon" + ], + "type": "string" + }, + "type": "array" + }, + "clientData": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData" + }, + "type": "array" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "originatingField": { + "description": "There may be more than one field from which this IANT originates, as in the case of Bob's public profile.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField" + }, + "type": "array" + }, + "type": { + "enum": [ + "UNKNOWN_KEY_TYPE", + "PHONE", + "OBFUSCATED_GAIA_ID", + "EMAIL" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "value": { + "description": "The value of the target, used for delivery. E.g., the obfuscated gaia ID for a visible profile.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData": { + "description": "Client-specific data pertaining to app reachability. No PII data or user content should be stored in this blob.", + "id": "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData", + "properties": { + "app": { + "description": "The app to which this client data applies.", + "enum": [ + "UNKNOWN", + "BABEL", + "YOUTUBE", + "WHOS_DOWN", + "YOUTUBE_MANGO", + "PHOTOS", + "GOOGLE_ASSISTANT", + "KABOO", + "COMMERCE_PLATFORM", + "SPACES", + "MAPS", + "LOUPE_UNUSED", + "POMEROY", + "LOUPE", + "PEOPLE_PLAYGROUND", + "NEWS_360", + "DUO" + ], + "enumDescriptions": [ + "Should never be stored in practice", + "Aka Hangouts", + "Aka Reactr", + "Aka Who's Down", + "Aka YouTube for Emerging Markets", + "Aka Google Photos", + "", + "Aka PAISA, aka Tez", + "Aka Naksha", + "Aka Google Spaces", + "Aka Google Map", + "This field is deprecated.", + "Aka Trusted Contacts", + "Aka Camera by Google Photos", + "See go/people-playground-design.", + "Also mdb/social-magazines", + "Aka Taychon" + ], + "type": "string" + }, + "byteValue": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField", + "properties": { + "fieldIndex": { + "description": "The index of the relevant field in the merged person", + "format": "int32", + "type": "integer" + }, + "fieldType": { + "enum": [ + "UNKNOWN_FIELD_TYPE", + "PHONE", + "EMAIL" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "value": { + "description": "The value of the origin field", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiInAppReachability": { + "description": "This is deprecated in PEOPLE_API/SHARPEN, and should only be used for PROFILES. Which apps the person has indicated they are reachable at for the requester. See go/d13y and com.google.focus.proto.InAppReachability.", + "id": "AppsPeopleOzExternalMergedpeopleapiInAppReachability", + "properties": { + "appType": { + "enum": [ + "UNKNOWN", + "BABEL", + "YOUTUBE", + "WHOS_DOWN", + "YOUTUBE_MANGO", + "PHOTOS", + "KABOO", + "COMMERCE_PLATFORM", + "SPACES", + "GOOGLE_ASSISTANT", + "PEOPLE_PLAYGROUND", + "MAPS", + "LOUPE_UNUSED", + "POMEROY", + "LOUPE", + "NEWS_360", + "DUO" + ], + "enumDescriptions": [ + "should never be stored in practice", + "aka Hangouts", + "aka Reactr", + "aka Who's Down?", + "aka YouTube for Emerging Markets", + "aka Google Photos", + "aka PAISA", + "aka Naksha", + "", + "", + "See go/people-playground-design.", + "Aka Google Map", + "This field is deprecated.", + "aka Trusted Contacts", + "Aka Camera by Google Photos", + "Also mdb/social-magazines", + "aka Taychon" + ], + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "reachabilityKey": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey" + }, + "status": { + "enum": [ + "UNKNOWN_REACHABLE_STATUS", + "REACHABLE", + "NOT_REACHABLE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey": { + "description": "Information pertaining to how this reachable state was established.", + "id": "AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey", + "properties": { + "keyType": { + "enum": [ + "UNKNOWN_KEY_TYPE", + "PHONE", + "OBFUSCATED_GAIA_ID" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "keyValue": { + "description": "The value of the key by which the user said they may be reachable. E.g., the phone number.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiInteractionSettings": { + "description": "Defines interactions that are allowed or disallowed with this person.", + "id": "AppsPeopleOzExternalMergedpeopleapiInteractionSettings", + "properties": { + "allowed": { + "type": "boolean" + }, + "interaction": { + "enum": [ + "UNKNOWN", + "INCOMING_CIRCLE_MEMBERSHIP", + "INCOMING_SOCIAL_EDGE", + "INVITE_TO_EMAIL" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiInterest": { + "id": "AppsPeopleOzExternalMergedpeopleapiInterest", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiLanguage": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiLanguage", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiLatLng": { + "id": "AppsPeopleOzExternalMergedpeopleapiLatLng", + "properties": { + "lat": { + "format": "double", + "type": "number" + }, + "lng": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiLegacyFields": { + "description": "Fields used in legacy applications. Useful for joining legacy and new data streams. Most applications should not care about these fields.", + "id": "AppsPeopleOzExternalMergedpeopleapiLegacyFields", + "properties": { + "mobileOwnerId": { + "description": "Mobile obfuscated gaia id. This is the same gaia id in metadata.owner_id, but obfuscated with the legacy mobile obfuscator.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField": { + "id": "AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField", + "properties": { + "limitedProfileSettings": { + "$ref": "SocialGraphApiProtoLimitedProfileSettings" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiLocation": { + "id": "AppsPeopleOzExternalMergedpeopleapiLocation", + "properties": { + "buildingId": { + "type": "string" + }, + "buildingName": { + "description": "The building_name field is only filled if the DESK_LOCATION_ADDITIONAL_DATA extension is active.", + "type": "string" + }, + "current": { + "type": "boolean" + }, + "deskCode": { + "description": "Most specific textual description of individual desk location.", + "type": "string" + }, + "extendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiLocationExtendedData" + }, + "floorName": { + "type": "string" + }, + "floorSection": { + "type": "string" + }, + "lastUpdateTime": { + "description": "Indicates the time this location was added or last edited.", + "format": "google-datetime", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "source": { + "description": "Value indicates the origin of this location information.", + "enum": [ + "UNKNOWN", + "EXPLICIT", + "INFERRED" + ], + "enumDescriptions": [ + "", + "The location was directly set by the user or admin.", + "The location was inferred from available signals (e.g. past rooms usage)." + ], + "type": "string" + }, + "type": { + "description": "Describes the type of location. For e.g. Grew_up, Desk. Corresponds to FBS backend.proto Location.StandardTag", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiLocationExtendedData": { + "id": "AppsPeopleOzExternalMergedpeopleapiLocationExtendedData", + "properties": { + "corpDeskbookingExtendedData": { + "$ref": "SocialGraphWireProtoPeopleapiExtensionCorpDeskbookingLocationExtendedData", + "description": "Populated by CORP_DESKBOOKING_FLEXIBLE_DESK_LOCATIONS extension." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiManagementUpchain": { + "id": "AppsPeopleOzExternalMergedpeopleapiManagementUpchain", + "properties": { + "indirectManager": { + "description": "List of managers in the chain. If user has manager email \"abc@google.com\" and manager's manager has email \"xyz@google.com\" then the list will be: [0]: { email: \"abc@google.com\" } [1]: { email: \"xyz@google.com\" }", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager" + }, + "type": "array" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "status": { + "enum": [ + "UNKNOWN", + "OK", + "PARTIAL", + "LOOP" + ], + "enumDescriptions": [ + "", + "", + "An error occurred while retrieving next manager so resulting management upchain is partial up to manager that was not retrieved.", + "A loop was found in management upchain so resulting upchain contains all managers retrieved in first iteration of the loop." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager": { + "id": "AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager", + "properties": { + "email": { + "type": "string" + }, + "personId": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiMapsExtendedData": { + "description": "Extension data for use in Maps Product Profile.", + "id": "AppsPeopleOzExternalMergedpeopleapiMapsExtendedData", + "properties": { + "failure": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiProductProfileFailure", + "description": "Failure type if there is an error when fetching product profile data." + }, + "followeeCount": { + "description": "Number of people the user is following.", + "format": "int64", + "type": "string" + }, + "followerCount": { + "description": "Number of people who are following the user.", + "format": "int32", + "type": "integer" + }, + "numContributions": { + "description": "Sum of creators contributions i.e. reviews, rating, questions, etc.", + "format": "int64", + "type": "string" + }, + "profilePhotoUrl": { + "description": "The user's profile photo that might have a badge rendered at the corner if the user is eligible for a badge.", + "type": "string" + }, + "tagline": { + "description": "A user's bio, or tagline.", + "type": "string" + }, + "topicExpertise": { + "description": "A topic that creator has expertise in. This will be in the format: emoji associated with the topic, display name of the topic, topic score", + "items": { + "type": "string" + }, + "type": "array" + }, + "userCaption": { + "description": "A user's caption displayed under the user name on their profile page i.e. 'Local Guide Level 8'", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiMapsProfile": { + "description": "Maps Profile Data. See go/product-profiles-backend-api.", + "id": "AppsPeopleOzExternalMergedpeopleapiMapsProfile", + "properties": { + "fieldRestriction": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction" + }, + "type": "array" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "tagline": { + "type": "string" + }, + "websiteLink": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink", + "description": "A link to the profile owner's website to be displayed in profile." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction": { + "id": "AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction", + "properties": { + "clientData": { + "description": "Opaque data associated with this restriction e.g. abuse status.", + "format": "byte", + "type": "string" + }, + "type": { + "enum": [ + "TYPE_UNSPECIFIED", + "HIDE_TAGLINE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink": { + "id": "AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink", + "properties": { + "anchorText": { + "description": "Anchor text to be displayed as clickable link. If not present, the URL should be displayed directly.", + "type": "string" + }, + "url": { + "description": "The URL to be linked to.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiMatchInfo": { + "description": "Represents the matching information for a field when there is a query.", + "id": "AppsPeopleOzExternalMergedpeopleapiMatchInfo", + "properties": { + "match": { + "description": "The list of matches ordered by most relevant matching for autocomplete coming first.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch" + }, + "type": "array" + }, + "query": { + "description": "The query token we are matching against.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch": { + "description": "All the substring that were matched for the given query against the current field. Represents a substring of another string.", + "id": "AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch", + "properties": { + "endIndex": { + "description": "Index right after the last character that matches the query. length = end-start, we have substring = [start, end).", + "format": "int32", + "type": "integer" + }, + "startIndex": { + "description": "Index of the first unicode character that matches the query.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiMembership": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiMembership", + "properties": { + "circleId": { + "description": "A circle that the person belongs to.", + "type": "string" + }, + "contactGroupId": { + "description": "A contact-group that the person belong to. The id can be either a hex-formatted id or a camel-cased SystemContactGroup predefined group name. The id will be predefined group name iff the system_contact_group_id has a value.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata", + "description": "The metadata field can be used to determine which container generated the membership. For example, when the membership has a contact_group_id, the metadata.container will be CONTACT and the container_id will be the contact Id." + }, + "systemContactGroupId": { + "description": "The membership has a contact_group_id, this field will be populated when the membership is in a system-reserved contact-group.", + "enum": [ + "UNKNOWN", + "MY_CONTACTS", + "STARRED", + "FRIENDS", + "FAMILY", + "COWORKERS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiMission": { + "id": "AppsPeopleOzExternalMergedpeopleapiMission", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiName": { + "description": "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_name`, `middle_name`, `family_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_name`, `family_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.", + "id": "AppsPeopleOzExternalMergedpeopleapiName", + "properties": { + "displayName": { + "description": "Read-only. A name synthesized based on `unstructured_name` and the structured name fields. Example: \"John Smith\" If a language code is passed in the side channel using http://cs/symbol:framework.rpc.DeprecatedPropagatedLanguageCode.value or http://cs/symbol:google.rpc.context.OriginContext.accept_language and the name does not have `honorific_prefix`, `middle_name`, or `honorific_suffix` set, the language code will be used to format `display_name`. If `include_account_locale` is set on the `MergePersonSourceOptions` and a language code is not passed in the side channel. The language code from go/uls will be used as the language code for formatting `display_name`.", + "type": "string" + }, + "displayNameLastFirst": { + "description": "Read-only. A name synthesized based on `unstructured_name` and the structured name fields with the last name first. Example: \"Smith, John\"", + "type": "string" + }, + "displayNameSource": { + "$ref": "SocialGraphApiProtoDisplayNameSource", + "description": "Read-only. The source of the display name." + }, + "familyName": { + "type": "string" + }, + "formattedName": { + "description": "DEPRECATED(b/70571931). Use `unstructured_name` instead.", + "type": "string" + }, + "givenName": { + "type": "string" + }, + "honorificPrefix": { + "type": "string" + }, + "honorificSuffix": { + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "middleName": { + "type": "string" + }, + "pronunciations": { + "$ref": "SocialGraphApiProtoPronunciations", + "description": "This field is stored in contact annotations and merged at read-time. It is available with CONTACT_ANNOTATION container type at read time." + }, + "shortDisplayName": { + "description": "Read-only. A possibly shorter version of the user's name. - The purpose of this field is to address the needs of UIs where a full display name might be too large to fit. Instead of relying on `first_name`, which might not be present, `short_display_name` is preferred. - This is only available for PROFILE and DOMAIN_PROFILE container types. - About the actual content in this field: will be the first name when it's visible to the requester, or the same as `display_name`, otherwise. A sample scenario where the first name may not be visible is when the limited profile is returned. For more info, see: http://shortn/_9iV7TJ33la", + "type": "string" + }, + "unstructuredName": { + "description": "The free form name value. For contact mutates it is recommended for clients to set either the `unstructured_name` or the set of structured name fields, not both.", + "type": "string" + }, + "yomiFamilyName": { + "type": "string" + }, + "yomiFullName": { + "type": "string" + }, + "yomiGivenName": { + "type": "string" + }, + "yomiHonorificPrefix": { + "type": "string" + }, + "yomiHonorificSuffix": { + "type": "string" + }, + "yomiMiddleName": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiNickname": { + "id": "AppsPeopleOzExternalMergedpeopleapiNickname", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "enum": [ + "NICKNAME_UNKNOWN", + "DEFAULT", + "OTHER_NAME", + "MAIDEN_NAME", + "SHORT_NAME", + "INITIALS", + "ALTERNATE_NAME" + ], + "enumDescriptions": [ + "", + "", + "Used in Profiles UI", + "", + "", + "", + "The nickname or alternate name, incorporated into Display Name." + ], + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiOccupation": { + "id": "AppsPeopleOzExternalMergedpeopleapiOccupation", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiOpeningHours": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiOpeningHours", + "properties": { + "openNow": { + "description": "Is this place open right now? Always present unless we lack time-of-day or timezone data for these opening hours.", + "type": "boolean" + }, + "periods": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod" + }, + "type": "array" + }, + "weekdayTexts": { + "description": "Localized strings describing the opening hours of this place, one string for each day of the week. Will be empty if the hours are unknown or could not be converted to localized text. Example: \"Sun: 18:00-06:00\"", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint": { + "id": "AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint", + "properties": { + "day": { + "description": "A day of the week, as an integer in the range 0-6. 0 is Sunday, 1 is Monday, etc.", + "format": "uint32", + "type": "integer" + }, + "time": { + "description": "A time in 24-hour \"hhmm\" format (i.e. range is 0000 to 2359).", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod": { + "id": "AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod", + "properties": { + "close": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint" + }, + "open": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiOrganization": { + "id": "AppsPeopleOzExternalMergedpeopleapiOrganization", + "properties": { + "assignment": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment" + }, + "type": "array" + }, + "certification": { + "type": "string" + }, + "costCenter": { + "type": "string" + }, + "current": { + "type": "boolean" + }, + "department": { + "type": "string" + }, + "description": { + "type": "string" + }, + "domain": { + "type": "string" + }, + "endCalendarDay": { + "$ref": "GoogleTypeDate", + "description": "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": { + "description": "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.", + "format": "int64", + "type": "string" + }, + "endMsAsNumber": { + "format": "int64", + "type": "string" + }, + "formattedStringType": { + "description": "The `string_type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "fteMilliPercent": { + "format": "int32", + "type": "integer" + }, + "importance": { + "format": "float", + "type": "number" + }, + "location": { + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "name": { + "type": "string" + }, + "project": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOrganizationProject" + }, + "type": "array" + }, + "startCalendarDay": { + "$ref": "GoogleTypeDate", + "description": "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": { + "description": "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.", + "format": "int64", + "type": "string" + }, + "startMsAsNumber": { + "format": "int64", + "type": "string" + }, + "stringType": { + "description": "The type of the organization. The type can be free form or one of these predefined values: * `work` * `school`", + "type": "string" + }, + "symbol": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "enum": [ + "UNKNOWN", + "WORK", + "SCHOOL", + "DOMAIN_ONLY" + ], + "enumDescriptions": [ + "", + "", + "", + "Used for domains inferred from verified email addresses. May be deprecated when/if we start mapping SCHOOL and WORK Names to Domain." + ], + "type": "string" + }, + "yomiName": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment": { + "id": "AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiOrganizationProject": { + "id": "AppsPeopleOzExternalMergedpeopleapiOrganizationProject", + "properties": { + "description": { + "type": "string" + }, + "name": { + "type": "string" + }, + "role": { + "type": "string" + }, + "type": { + "description": "Mapped from StandardProjectTag / CustomProjectTag", + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiOtherKeyword": { + "id": "AppsPeopleOzExternalMergedpeopleapiOtherKeyword", + "properties": { + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "source": { + "enum": [ + "SOURCE_UNKNOWN", + "OUTLOOK", + "CUSTOM" + ], + "enumDescriptions": [ + "", + "Following field is added to support Outlook schema. This field is a general storage for Outlook string data that shall be encoded as: \"name:\" + value strings where name of the Outlook field cannot contain colons. Multiple Outlook fields shall be encoded as multiple Keywords.", + "" + ], + "type": "string" + }, + "type": { + "description": "The type of the event. The type depends on the `OtherKeyword.source`. `OUTLOOK` 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`", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPerson": { + "description": "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", + "id": "AppsPeopleOzExternalMergedpeopleapiPerson", + "properties": { + "about": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAbout" + }, + "type": "array" + }, + "address": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAddress" + }, + "type": "array" + }, + "ageRange": { + "description": "Deprecated. If age is needed use `person.age_range_repeated` instead. Please see go/people-api-howto:age on how to correctly get age data.", + "enum": [ + "UNKNOWN", + "LESS_THAN_EIGHTEEN", + "TWENTY_ONE_OR_OLDER", + "EIGHTEEN_TO_TWENTY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "ageRangeRepeated": { + "description": "Data on the person's age range, adult status, and age of consent. NOTE: Please read go/people-api-howto:age on how to correctly get age data.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAgeRangeType" + }, + "type": "array" + }, + "birthday": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiBirthday" + }, + "type": "array" + }, + "braggingRights": { + "description": "Used only by contacts, no data will be returned for profiles.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiBraggingRights" + }, + "type": "array" + }, + "calendar": { + "description": "b/145671020: Deprecated for Profiles, but not for Contacts.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCalendar" + }, + "type": "array" + }, + "certifiedBornBefore": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore" + }, + "type": "array" + }, + "circleMembership": { + "description": "Circles that this person is a member of.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCircleMembership" + }, + "type": "array" + }, + "clientData": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiClientData" + }, + "type": "array" + }, + "communicationEmail": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCommunicationEmail" + }, + "type": "array" + }, + "contactGroupMembership": { + "description": "Contact groups that this person is a member of.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiContactGroupMembership" + }, + "type": "array" + }, + "contactStateInfo": { + "description": "Contact state and related metadata. See go/fbs-contacts-trash. If this field was requested but is not set on the Person then the contact is in the DEFAULT contact state. This field is read-only, and should not be set on a mutate (e.g. UpdatePerson) call. Clients must call the explicit APIs (e.g. UntrashPerson) to change contact state.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiContactStateInfo" + }, + "type": "array" + }, + "coverPhoto": { + "description": "DEPRECATED. Now always returns a default cover photo. See go/sunset-cover-photo.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCoverPhoto" + }, + "type": "array" + }, + "customSchemaField": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCustomSchemaField" + }, + "type": "array" + }, + "email": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEmail" + }, + "type": "array" + }, + "emergencyInfo": { + "description": "Emergency information. See go/emergency-trusted-contacts-papi.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEmergencyInfo" + }, + "type": "array" + }, + "event": { + "description": "Event is currently in use by contacts.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEvent" + }, + "type": "array" + }, + "extendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonExtendedData", + "description": "Data added by extensions that are not specific to a particular field." + }, + "externalId": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiExternalId" + }, + "type": "array" + }, + "fileAs": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFileAs" + }, + "type": "array" + }, + "fingerprint": { + "description": "A fingerprint that can be used to reliably determine if a resource has changed. Externally it is used as part of the etag.", + "type": "string" + }, + "gender": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiGender" + }, + "type": "array" + }, + "im": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiIm" + }, + "type": "array" + }, + "inAppNotificationTarget": { + "description": "Ways to send in-app notifications to this person. See go/reachability. This field is read-only and ignored for mutates.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget" + }, + "type": "array" + }, + "inAppReachability": { + "description": "Used only by profile service, deprecated for PeopleAPI and Sharpen. If you aren't sure, contact people-api-users@ and profile-service-eng@.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiInAppReachability" + }, + "type": "array" + }, + "interactionSettings": { + "description": "DEPRECATED. This field isn't populated in people.list.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiInteractionSettings" + }, + "type": "array" + }, + "interest": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiInterest" + }, + "type": "array" + }, + "language": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiLanguage" + }, + "type": "array" + }, + "legacyFields": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiLegacyFields", + "description": "DEPRECATED. This field was only for backwards compatibility with legacy GData callers, and should not be used by new clients. Legacy fields used for mobile clients." + }, + "limitedProfileSettings": { + "description": "Settings for the limited profile. See go/limited-profiles-api.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField" + }, + "type": "array" + }, + "linkedPerson": { + "description": "Other person resources linked indirectly by an edge. The full person or just the IDs may be populated depending on request parameters. We consider linked people distinct people, but they share information. Example: A contact with two outgoing edges. The two edges are considered separate, but linked people.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPerson" + }, + "type": "array" + }, + "location": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiLocation" + }, + "type": "array" + }, + "managementUpchain": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiManagementUpchain" + }, + "type": "array" + }, + "mapsProfile": { + "description": "MapsProfile, see go/product-profiles-backend-api", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiMapsProfile" + }, + "type": "array" + }, + "membership": { + "description": "DEPRECATED. Please use `circle_membership` or `contact_group_membership` instead. Contact-groups and circles that this person is a member of.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiMembership" + }, + "type": "array" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonMetadata" + }, + "mission": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiMission" + }, + "type": "array" + }, + "name": { + "description": "See go/people-api-howto:names for details about names in PeopleAPI.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiName" + }, + "type": "array" + }, + "nickname": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiNickname" + }, + "type": "array" + }, + "occupation": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOccupation" + }, + "type": "array" + }, + "organization": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOrganization" + }, + "type": "array" + }, + "otherKeyword": { + "description": "Legacy arbitrary key value fields", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOtherKeyword" + }, + "type": "array" + }, + "peopleInCommon": { + "description": "DEPRECATED. This feature was stubbed, but never implemented. This field will not be populated with any results.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPerson" + }, + "type": "array" + }, + "personAttribute": { + "description": "In order to request this field, the client must set desired PersonAttributeKey in the dedicated RequestMask field `person_attribute`. Unlike other person fields, this field cannot be requested in the `include_field` field mask.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonAttribute" + }, + "type": "array" + }, + "personId": { + "description": "The ID of the person. This is determined by the backend, is unstable, and may not be the same as a user_id. Internally referred as 'personKey' to distinguish from the common PersonId pojo. See go/fwgau", + "type": "string" + }, + "phone": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPhone" + }, + "type": "array" + }, + "photo": { + "description": "See go/people-api-concepts/photos for usage details", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPhoto" + }, + "type": "array" + }, + "placeDetails": { + "description": "Data specific to places. Data which also applies to contacts and profiles such as name, phone, photo, etc. are returned in the corresponding Person fields.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPlaceDetails" + }, + "type": "array" + }, + "plusPageInfo": { + "description": "DEPRECATED. Info about plus pages in the person.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPlusPageInfo" + }, + "type": "array" + }, + "posixAccount": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPosixAccount" + }, + "type": "array" + }, + "profileUrl": { + "description": "DEPRECATED. (go/people-api-concepts#repeated): Use person.profile_url_repeated instead. Access to this field is restricted to a set of legacy clients. This is a Google+-only field. See go/fbs-g+-deprecation. NOTE: `Person.profile_url` is only populated for profile-centric person.", + "type": "string" + }, + "profileUrlRepeated": { + "description": "This is a Google+-only field. See go/fbs-g+-deprecation.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiProfileUrl" + }, + "type": "array" + }, + "pronoun": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPronoun" + }, + "type": "array" + }, + "readOnlyProfileInfo": { + "description": "Information about the profiles that are a part of this Person. This is only applicable to PROFILE and DOMAIN_PROFILE containers.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo" + }, + "type": "array" + }, + "relation": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRelation" + }, + "type": "array" + }, + "relationshipInterest": { + "description": "DEPRECATED. No data is returned for this field anymore.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRelationshipInterest" + }, + "type": "array" + }, + "relationshipStatus": { + "description": "DEPRECATED. No data is returned for this field anymore.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRelationshipStatus" + }, + "type": "array" + }, + "rightOfPublicityState": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState" + }, + "type": "array" + }, + "rosterDetails": { + "description": "Data specific to rosters (such as Google Groups and Chat Rooms). Data which also applies to contacts and profiles such as name, email, and photo, etc are returned in the corresponding Person fields.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRosterDetails" + }, + "type": "array" + }, + "searchProfile": { + "description": "Profile for Janata and Search. go/janata-profile-in-sgbe", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiSearchProfile" + }, + "type": "array" + }, + "sipAddress": { + "description": "SipAddress is currently in use by contacts.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiSipAddress" + }, + "type": "array" + }, + "skills": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiSkills" + }, + "type": "array" + }, + "socialConnection": { + "description": "NOTE: this is used by go/starlight, but not actually used or returned in PeopleAPI. See b/27281119 for context. Please reach out to people-api-eng@ if you have questions.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiSocialConnection" + }, + "type": "array" + }, + "sortKeys": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiSortKeys" + }, + "sshPublicKey": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiSshPublicKey" + }, + "type": "array" + }, + "tagline": { + "description": "Only supported for PLACE container results, no data will be returned for profiles.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiTagline" + }, + "type": "array" + }, + "teamsExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData", + "description": "DEPRECATED. *UNSUPPORTED*. This field is never populated." + }, + "userDefined": { + "description": "UserDefined is currently in use by contacts.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiUserDefined" + }, + "type": "array" + }, + "visibleToGuests": { + "description": "Add annotation_id and metadata (product_source) for visible to guests contacts go/visible-to-guests.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiVisibleToGuests" + }, + "type": "array" + }, + "website": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiWebsite" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPersonAttribute": { + "description": "Client-specific binary blob stored with Person data. This differs from ClientData, which stores structured, key-value pairs.", + "id": "AppsPeopleOzExternalMergedpeopleapiPersonAttribute", + "properties": { + "attributeKey": { + "enum": [ + "PERSON_ATTRIBUTE_UNKNOWN", + "REJECTED_CLEANUP_CARD_SUGGESTIONS" + ], + "enumDescriptions": [ + "", + "The value field of a PersonAttribute object with this key will contain a byte serialized RejectedCleanupCardSuggestions proto, see http://shortn/_3KyFdhbZfW" + ], + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPersonExtendedData": { + "description": "Extension data for the whole person entity.", + "id": "AppsPeopleOzExternalMergedpeopleapiPersonExtendedData", + "properties": { + "aboutMeExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData", + "description": "For use by AboutMe and SmartProfile clients." + }, + "appsWaldoExtendedData": { + "$ref": "SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData", + "description": "For use with Apps Waldo Availability Data extension" + }, + "callerIdExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData", + "description": "For use with caller ID extension" + }, + "contactsExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData", + "description": "For use with Contacts extension." + }, + "domainName": { + "description": "Hosted domain this person is a member of. The domain_name is also returned as part of the person's ReadOnlyProfileInfo, so requesting it via this extension is no longer necessary.", + "items": { + "type": "string" + }, + "type": "array" + }, + "dynamiteExtendedData": { + "$ref": "SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData", + "description": "For use with Dynamite extension." + }, + "gpayExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiGPayExtendedData", + "description": "For use with Google Pay extension." + }, + "gplusExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiGplusExtendedData", + "description": "For use with Google+ extension." + }, + "hangoutsExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData", + "description": "For use with Hangouts extension." + }, + "isPlaceholder": { + "description": "For use with gmail extensions and lookup by email. If true, no person was actually found using the specified email address, but we want to return TLS info about the email address regardless.", + "type": "boolean" + }, + "mapsExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiMapsExtendedData", + "description": "For use with Maps extension." + }, + "paisaExtendedData": { + "$ref": "SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData", + "description": "For use with Paisa extension" + }, + "peopleStackExtendedData": { + "$ref": "SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData", + "description": "DEPRECATED: Use people_stack_person_extended_data instead. For use with PeopleStack extension." + }, + "peopleStackPersonExtendedData": { + "$ref": "SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData", + "description": "For use with PeopleStack extension." + }, + "playGamesExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData", + "description": "For use with Play Games Product Profile extension. See go/jam-games-profile. The play games profile will be returned only for profile-centric requests." + }, + "tlsIsPlaceholder": { + "description": "For use with the TLS extension and lookup by email. If true, no person was actually found using the specified email address, but we want to return TLS info about the email address regardless. DEPRECATED: Use is_placeholder instead.", + "type": "boolean" + }, + "youtubeExtendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData", + "description": "For use with Youtube extension." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata": { + "description": "Metadata for a single Person field. See go/understanding-merged-person", + "id": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata", + "properties": { + "aclChoices": { + "description": "When the container is PROFILE/DOMAIN_PROFILE and the profile owner is the requester, this read-only, synthesized field indicates which ACLs the user is allowed to set on the profile field. This is distinct from field_acl, which is the field's currently set ACL. field_acl will always be a valid ACL choice, except for the case of default synthesized profile fields like monogram profile photos. For those, field_acl does not represent a user-set field ACL, so it may or may not be a valid choice. In all cases, default_acl_choice will always be a valid choice. This is currently only populated on the photo field when the \"person.photo.metadata.acl_choices\" mask is set.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAcl" + }, + "type": "array" + }, + "additionalContainerInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo", + "description": "Additional information about the container of this field." + }, + "affinity": { + "description": "For field-level affinity scores. The affinity between the requester and this particular field in the Person (e.g., frequency of calling a particular phone number).", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAffinity" + }, + "type": "array" + }, + "contactVisibility": { + "description": "Each field can have different visibility settings Only returned when explicitly requested.", + "items": { + "enum": [ + "CONTACT_VISIBILITY_UNSPECIFIED", + "VISIBLE_TO_GUEST" + ], + "enumDescriptions": [ + "", + "This can be set for annotation fields(e.g. nicknames, relationship) that the user wants to expose to other people in their household. Example use case: differentiate between speed dial nicknames, regular nicknames and relationships" + ], + "type": "string" + }, + "type": "array" + }, + "container": { + "description": "DEPRECATED. Use container_type instead. Having the Container be an enum at the PFM message level causes circular dependency when other types try to refer to it. It breaks javascript build targets.", + "enum": [ + "UNKNOWN", + "PROFILE", + "CONTACT", + "CIRCLE", + "PLACE", + "ACCOUNT", + "EXTERNAL_ACCOUNT", + "DOMAIN_PROFILE", + "DOMAIN_CONTACT", + "DEVICE_CONTACT", + "GOOGLE_GROUP", + "AFFINITY", + "RAW_DEVICE_CONTACT", + "CONTACT_ANNOTATION", + "DELEGATED_CONTACT" + ], + "enumDescriptions": [ + "", + "Google Profile. PROFILE fields are editable by the profile owner, unless the field metadata includes writeable=false.", + "Google Contact", + "Circle membership of non-g+ user.", + "A maps place", + "The requester's own Gaia account. ACCOUNT fields are not editable by anyone. They only occur when the requester is \"me\". In the event an ACCOUNT field is ACLed non-private, it will be returned as a PROFILE field when viewed by a requester who is not \"me\".", + "LinkedExternalSites (go/PeopleApiConnectedSites)", + "Google-For-Work Profile. DOMAIN_PROFILE fields are editable by the Dasher administrator of the domain. They are not editable by the profile owner.", + "Domain shared contact", + "To be deprecated in favor of RAW_DEVICE_CONTACT See go/mergedperson-for-device-contacts Aggregation is represented using person.metadata.device_contact_info", + "Google group. Examples: sales@zara.es.", + "Data from the user's frequent interactions.", + "Data from a raw (non-aggregated) device contact. See go/mergedperson-for-device-contacts", + "Data from contact annotation. Contact annotations are currently generated and used by Google Assistant.", + "Data from delegated contacts. Delegated contacts are the contacts delegated to the current requester. The requester can then access those contacts. See go/ph-delegation." + ], + "type": "string" + }, + "containerId": { + "description": "DEPRECATED. Use encoded_container_id instead. The numeric id of the data source. The id is only unique within a single container type. This is only set when the id of the container is numeric, e.g. contact id.", + "format": "int64", + "type": "string" + }, + "containerPrimary": { + "description": "Indicates if this field is the primary field for the container and container_id.", + "type": "boolean" + }, + "containerType": { + "description": "The source for the data in the field.", + "enum": [ + "UNKNOWN_CONTAINER", + "PROFILE", + "CONTACT", + "CIRCLE", + "PLACE", + "ACCOUNT", + "EXTERNAL_ACCOUNT", + "DOMAIN_PROFILE", + "DOMAIN_CONTACT", + "DEVICE_CONTACT", + "GOOGLE_GROUP", + "NAMED_CHAT_ROOM", + "UNNAMED_CHAT_ROOM", + "AFFINITY", + "RAW_DEVICE_CONTACT", + "CONTACT_ANNOTATION", + "DELEGATED_CONTACT" + ], + "enumDescriptions": [ + "", + "Google Profile. PROFILE fields are editable by the profile owner, unless the field metadata includes writeable=false.", + "Google Contact", + "Deprecated. E-mail only circle membership should be dead. E-mail only circle membership of non-g+ user.", + "A maps place", + "The requester's own Gaia account. ACCOUNT fields are not editable by anyone. They only occur when the requester is \"me\". In the event an ACCOUNT field is ACLed non-private, it will be returned as a PROFILE field when viewed by a requester who is not \"me\".", + "LinkedExternalSites (go/PeopleApiConnectedSites)", + "Google-For-Work Profile. DOMAIN_PROFILE fields are editable by the Dasher administrator of the domain. They are not editable by the profile owner.", + "Domain shared contact. An entity that is owned by a domain and represents a person, but is not a user in the domain. For more details see https://support.google.com/a/answer/9281635.", + "To be deprecated in favor of RAW_DEVICE_CONTACT See go/mergedperson-for-device-contacts Aggregation is represented using person.metadata.device_contact_info", + "Google group. Examples: sales@zara.es.", + "Dynamite \"Named Flat Room\" (NFR). This is a Baggins Roster with label DYNAMITE_SPACE *and* label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Dynamite \"Unnamed Flat Room\" (UFR). This is a Baggins Roster with label DYNAMITE_SPACE but does *not* have label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Device contacts that are used in interaction ranking, but have not been uploaded to Google. These are synthesized people from interaction data. This container type is only used in ListRankedPeople and ListRankedTargets actions. See go/TopNWithClusteringPart1.", + "Data from a raw (non-aggregated) device contact. See go/mergedperson-for-device-contacts", + "Data from contact annotation. Contact annotations are currently generated and used by Google Assistant.", + "Data from delegated contacts. Delegated contacts are the contacts delegated to the current requester. The requester can then access those contacts. See go/ph-delegation." + ], + "type": "string" + }, + "crossDeviceAllowed": { + "description": "True if this field can be used on other devices than the one it originated from. Assigned by the server. Currently only used for device contacts.", + "type": "boolean" + }, + "defaultAclChoice": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAcl", + "description": "When the container is PROFILE/DOMAIN_PROFILE and the profile owner is the requester, this read-only, synthesized field contains the default ACL choice. This can be used to select a preferred choice from acl_choices. Generally, default_acl_choice should only be preferred for default synthesized profile fields like monogram profile photos. Otherwise, the existing field_acl should be preferred. This is currently only populated on the photo field when the \"person.photo.metadata.acl_choices\" mask is set." + }, + "deprecatedContactContainerId": { + "description": "DEPRECATED. Use container_id. Not populated or used at all.", + "format": "int64", + "type": "string" + }, + "edgeKey": { + "description": "Field is an edge key for this person. Modifying it breaks the link between data sources. This is equivalent to edge_key_info having at least one entry with materialized = true.", + "type": "boolean" + }, + "edgeKeyInfo": { + "description": "Edges that this field creates. This includes all edges and not necessarily just the edge relevant to the joined entities.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfo" + }, + "type": "array" + }, + "encodedContainerId": { + "description": "The encoded id of the data source. The id is only unique within a single container type. This field correlates to person.metadata.identity_info.source_id.id. This field may not be populated in some special cases, where the id is not visible to the querying user. e.g. ListAutocompletions with full phone number query.", + "type": "string" + }, + "fieldAcl": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldAcl", + "description": "When the container is PROFILE and the profile owner is the requester, this field indicates how the profile field is accessible." + }, + "lastUpdateTime": { + "description": "Indicates the time that the field was added or last edited. Currently this is populated for: (1) person.birthday with ContainerType PROFILE, DOMAIN_PROFILE or ACCOUNT. (2) person.name, person.address, person.relation, person.email and person.phone with ContainerType CONTACT_ANNOTATION;", + "format": "google-datetime", + "type": "string" + }, + "matchingInfo": { + "description": "The matching informations if there was a query against this field.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiMatchInfo" + }, + "type": "array" + }, + "otherDedupedContainers": { + "description": "When deduping fields by value, list of containers of the fields that where deduped.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo" + }, + "type": "array" + }, + "primary": { + "description": "If true, indicates this field is the Person's primary field eg. Contact, and (Profile) Person could have different Name fields, and the Name represented by the Person is primary. For selecting a primary field from RepeatedFields within a Person, use container_primary.", + "type": "boolean" + }, + "productMetadata": { + "description": "The product(s) that generated the data in this field. Empty is equivalent to DEFAULT. ST_USER_METADATA", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiProductMetadata" + }, + "type": "array" + }, + "verified": { + "description": "Indicates whether this is a verified field. It is synthesized from verification and is read-only. If there is at least one verification with status PASSED, the field is considered verified. Currently this is applicable to address, email, name, and phone for PROFILE and DOMAIN_PROFILE. Use .metadata.verified in the request mask.", + "type": "boolean" + }, + "visibility": { + "description": "Currently, only people.get may set this value", + "enum": [ + "VISIBILITY_UNKNOWN", + "PUBLIC", + "USER" + ], + "enumDescriptions": [ + "", + "The field is visible to every user.", + "The field is visible to the requester. The server cannot provide additional indication beyond that. The field may or may not be also visible to users other than the requester." + ], + "type": "string" + }, + "writeable": { + "description": "Whether the field is writeable to the requester.", + "type": "boolean" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber": { + "description": "A person list with total number specified.", + "id": "AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber", + "properties": { + "people": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPerson" + }, + "type": "array" + }, + "totalNumber": { + "description": "The total number of people, which is aways no less than the size of the above list.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPersonMetadata": { + "description": "Metadata for the entire Person resource.", + "id": "AppsPeopleOzExternalMergedpeopleapiPersonMetadata", + "properties": { + "affinity": { + "description": "Affinities associated with the person, with respect to the requester.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAffinity" + }, + "type": "array" + }, + "attribution": { + "description": "Populated when the data for the MergedPerson comes from a 3rd party provider or data source. Clients must display these attributions to the user if they are present. NOTE: This field is only relevant when requesting the following containers: - PLACE (data read from Maps)", + "items": { + "type": "string" + }, + "type": "array" + }, + "bestDisplayName": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiBestDisplayName", + "description": "The best name to use for this person for user-facing display. See go/people-api-howto:names for details about how this field is computed. In many cases this will simply be Person.name[0]. However, Person.name returns only explicit Name fields, but other fields maybe usable as a name (for example: nicknames, file_as, ...). `best_display_name` will be calculated from all fields in storage which are usable as a name, even fields which are not explicitly requested in the MergedPerson result. See PersonNameFormatter.java: go/lvztl." + }, + "blockType": { + "description": "DEPRECATED. Indicates whether the profile owner has blocked this person. Please use `person.read_only_profile_info.block_type` instead.", + "items": { + "enum": [ + "BLOCK_TYPE_UNKNOWN", + "CIRCLE", + "LEGACY" + ], + "enumDescriptions": [ + "", + "Profile-blocked users", + "Chat-blocked users" + ], + "type": "string" + }, + "type": "array" + }, + "circleId": { + "description": "DEPRECATED. The circles the person belongs to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "contactGroupId": { + "description": "DEPRECATED. Please use `person.contact_group_memberships` instead. The contact groups the person belongs to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "contactId": { + "description": "The IDs of all contacts contributing to this person.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "customResponseMaskingType": { + "description": "DEPRECATED. Customized masking of the response similar to the legacy People2RequestMask People2Params request message. NOTE: This param is inherently client-specific, limited to specific legacy clients, and not open to new usage. NOTE: Effects may be applied to a subset of people in the response.", + "enum": [ + "UNKNOWN", + "NONE", + "MENAGERIE" + ], + "enumDescriptions": [ + "", + "No filtering of the response.", + "Used by Menagerie to request menagerie-specific custom filtering or masking on the response." + ], + "type": "string" + }, + "deleted": { + "description": "For sync requests (i.e., changed since the provided sync_token), indicates the resource is a tombstone for a Person resource that has been entirely deleted.", + "type": "boolean" + }, + "deprecatedBlocked": { + "description": "DEPRECATED. Please use `person.read_only_profile_info.block_type` instead.", + "type": "boolean" + }, + "deprecatedMembershipCircleId": { + "description": "DEPRECATED. This field is no longer populated or read.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "deprecatedMembershipContactGroupId": { + "description": "DEPRECATED. This field is no longer populated or read.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "deviceContactInfo": { + "description": "Info about the aggregated device contacts. When the person contains RAW_DEVICE_CONTACT containers, each DeviceContactInfo represents a single aggregate device contact made up of one or more raw device contacts.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo" + }, + "type": "array" + }, + "identityInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiIdentityInfo", + "description": "Detailed metadata about the lookup IDs and data sources included in a MergedPerson result." + }, + "inViewerDomain": { + "description": "DEPRECATED. Indicates whether this person is in the same domain as the viewer. For proxying trust between two users based on organization membership, see: - go/flex-orgs-platform - go/flex-orgs-compliance-handbook (especially http://shortn/_ChwfAY36Ys)", + "type": "boolean" + }, + "incomingBlockType": { + "description": "DEPRECATED. Indicates whether this person is blocking the profile owner. Please use `person.read_only_profile_info.incoming_block_type` instead.", + "items": { + "enum": [ + "BLOCK_TYPE_UNKNOWN", + "CIRCLE", + "LEGACY" + ], + "enumDescriptions": [ + "", + "Profile-blocked users", + "Chat-blocked users" + ], + "type": "string" + }, + "type": "array" + }, + "lastUpdateTimeMicros": { + "description": "DEPRECATED. The last update timestamps for the constituent components of this person are available in `identity_info.source_ids`. The time of the most recent change to this person, in !!!NANOS!!! (due to a bug). May be a change to any of the underlying parts of the person (profile, contact, etc.). Not guaranteed to be the timestamp of the most recent change, due to limitations in the backend. This field is not fully deprecated for backend container-specific storage services like ProfileService which lack identity_info. The use is still discouraged in such systems and they should prefer to use the `last_update_time` field of this message instead.", + "format": "int64", + "type": "string" + }, + "model": { + "description": "The person model that is used to construct this person.", + "enum": [ + "PERSON_MODEL_UNKNOWN", + "PROFILE_CENTRIC", + "CONTACT_CENTRIC" + ], + "enumDescriptions": [ + "", + "The default People API model where a person can contain no more than one profile and potentially many contacts.", + "The inversion of the default profile-centric model, i.e. a person can contain no more than one contact but potentially many profiles. See go/contact-centric-person-model for more details." + ], + "type": "string" + }, + "objectType": { + "description": "DEPRECATED.", + "enum": [ + "OBJECT_TYPE_UNKNOWN", + "PERSON", + "PAGE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "ownerId": { + "description": "DEPRECATED. Please use `person.read_only_profile_info.owner_id` instead.", + "type": "string" + }, + "ownerUserType": { + "description": "DEPRECATED. See `person.read_only_profile_info.owner_user_type` instead.", + "items": { + "enum": [ + "OWNER_USER_TYPE_UNKNOWN", + "GOOGLE_USER", + "GPLUS_USER", + "GPLUS_DISABLED_BY_ADMIN", + "GOOGLE_APPS_USER", + "GOOGLE_APPS_SELF_MANAGED_USER", + "GOOGLE_FAMILY_USER", + "GOOGLE_FAMILY_CHILD_USER", + "GOOGLE_APPS_ADMIN_DISABLED", + "GOOGLE_ONE_USER", + "GOOGLE_FAMILY_CONVERTED_CHILD_USER" + ], + "enumDescriptions": [ + "", + "The owner is a Google user.", + "The owner is a Currents user.", + "Google+, i.e. INSServiceID::GOOGLE_ME service, is disabled by dasher admin. Only returned for requester's own profile.", + "The owner is a Google Apps for Work user.", + "The owner is a self-managed Google Apps for Work user. Only returned for requester's own profile.", + "The owner is a Google for Families user. Only returned for requester's own profile.", + "The owner is a Google for Families child user. Only returned for requester's own profile.", + "The owner has been disabled (archived, suspended) by the G Suite admin.", + "The owner is a Google One user (go/googleone). Only returned for requester's own profile.", + "The owner is a Google for Families child user that was converted from an existing user. Only returned for requester's own profile. (go/griffin-account)" + ], + "type": "string" + }, + "type": "array" + }, + "plusPageType": { + "description": "DEPRECATED. Please use `Person.plus_page_info` instead.", + "enum": [ + "PLUS_PAGE_TYPE_UNKNOWN", + "LOCAL", + "COMPANY", + "BRAND", + "CELEBRITY", + "CAUSE", + "ENTERTAINMENT", + "OTHER", + "OBSOLETE_PRIVATE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "Formerly a private madison account(go/private-madison-account). Don't use it anymore." + ], + "type": "string" + }, + "previousPersonId": { + "description": "DEPRECATED. This field is no longer populated or read.", + "items": { + "type": "string" + }, + "type": "array" + }, + "profileOwnerStats": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats", + "description": "DEPRECATED. Stats/counters pertaining to followers and incoming edges. Please use `person.read_only_profile_info.profile_owner_stats` instead." + }, + "scoringInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo", + "description": "Contact people-directory-dev-team@ if you want to use this field." + }, + "userVisibleStats": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiUserVisibleStats", + "description": "DEPRECATED. This field is no longer populated or read." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo": { + "id": "AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo", + "properties": { + "rawMatchQualityScore": { + "description": "Only populated on a SearchDirectoryPeople call, when results are scored. Contact people-directory-dev-team@ if you want to use this field.", + "format": "double", + "type": "number" + }, + "stExpressionResults": { + "description": "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.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult": { + "id": "AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPhone": { + "id": "AppsPeopleOzExternalMergedpeopleapiPhone", + "properties": { + "canonicalizedForm": { + "description": "Canonicalized form that follows ITU-T E.164 international public telecommunication numbering plan.", + "type": "string" + }, + "emergencyInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo", + "description": "Emergency information. See go/emergency-trusted-contacts-papi." + }, + "extendedData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData", + "description": "Read-only. Field requested by specifying `HANGOUTS_PHONE_DATA` in `extension_set.extension_names`." + }, + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "description": "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`", + "type": "string" + }, + "uri": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData": { + "id": "AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData", + "properties": { + "structuredPhone": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiStructuredPhone", + "description": "For use with Hangouts extension." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPhoto": { + "id": "AppsPeopleOzExternalMergedpeopleapiPhoto", + "properties": { + "emojiAvatarUrl": { + "description": "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", + "type": "string" + }, + "glyph": { + "description": "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", + "type": "string" + }, + "htmlAttribution": { + "description": "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", + "items": { + "type": "string" + }, + "type": "array" + }, + "isDefault": { + "description": "True when the photo is synthetic or generated (i.e. a monogram or default photo), false when the person has a custom photo.", + "type": "boolean" + }, + "isMonogram": { + "description": "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.", + "type": "boolean" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "monogramBackground": { + "description": "When is_monogram=true, this is the background color of the monogram photo as a hex RGB formatted string \"RRGGBB\".", + "type": "string" + }, + "photoId": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId", + "description": "For writes only. Indicates photo content for person photo-field update. Currently only used for profile-photo updates (not contact photos yet)." + }, + "photoToken": { + "description": "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.", + "type": "string" + }, + "url": { + "description": "See go/people-api-concepts/photos for info on the different representations of URLs.", + "type": "string" + }, + "viewerUrl": { + "description": "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.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId": { + "description": "Info necessary for looking up a photo in storage.", + "id": "AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId", + "properties": { + "mediaKey": { + "description": "For writes only, pass the media key that represents the image in photos backend. Note, this is not populated on reads.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPlaceDetails": { + "description": "Metadata specific to places.", + "id": "AppsPeopleOzExternalMergedpeopleapiPlaceDetails", + "properties": { + "googleUrl": { + "description": "A URL hosted by Google providing more information about this place This is the URL returned by Places API in the Place.Url.google field", + "type": "string" + }, + "latLng": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiLatLng" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "openingHours": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiOpeningHours" + }, + "primaryTypeName": { + "description": "The name of the primary type. Examples of primary type are: \"art_school\", \"clothing_wholesaler\", etc. All primary types can be found at http://shortn/_veqh6UwWdc", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData": { + "description": "Extension data for use in Play Games Product Profile. See go/jam-games-profile.", + "id": "AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData", + "properties": { + "achievements": { + "description": "User's top achievements that are sorted for example by rarity.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement" + }, + "type": "array" + }, + "avatarImageUrl": { + "description": "The avatar image to display for the user.", + "type": "string" + }, + "failure": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiProductProfileFailure", + "description": "Failure type if there is an error when fetching product profile data." + }, + "gamerTag": { + "description": "The gamer tag set by the user. Not set if the user hasn't set a gamer tag yet.", + "type": "string" + }, + "playerLevel": { + "description": "User's level.", + "format": "int32", + "type": "integer" + }, + "profileVisibility": { + "description": "Specifies the visibility of the player's profile.", + "enum": [ + "UNKNOWN_CLIENT_PLAYER_PROFILE_VISIBILITY", + "PRIVATE_VISIBILITY", + "PUBLIC_VISIBILITY", + "FRIENDS_VISIBILITY" + ], + "enumDescriptions": [ + "Safe default.", + "The profile is not visible to anyone but the player themselves.", + "The profile is visible to everyone.", + "The profile is visible to the player and their PGS friends." + ], + "type": "string" + }, + "totalFriendsCount": { + "description": "Total number of friends.", + "format": "int64", + "type": "string" + }, + "totalUnlockedAchievements": { + "description": "How many achievements this player has unlocked.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement": { + "description": "Details of an achievement that the user has unlocked.", + "id": "AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement", + "properties": { + "achievementName": { + "description": "The name of the achievement.", + "type": "string" + }, + "achievementUnlockedIconUrl": { + "description": "The achievement icon url shown to the user if it is unlocked.", + "type": "string" + }, + "rarityPercentage": { + "description": "Rarity of unlocking this achievement (3% of players unlocked would be 3)", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPlusPageInfo": { + "description": "Information about a plus page and the entity it represents.", + "id": "AppsPeopleOzExternalMergedpeopleapiPlusPageInfo", + "properties": { + "applicationId": { + "description": "Int64 ID of packaging-service entry; if set, the plus page is associated with a third-party application.", + "format": "int64", + "type": "string" + }, + "entityType": { + "enum": [ + "ENTITY_TYPE_UNSPECIFIED", + "LOCAL", + "COMPANY", + "BRAND", + "CELEBRITY", + "CAUSE", + "ENTERTAINMENT", + "OTHER", + "OBSOLETE_PRIVATE" + ], + "enumDescriptions": [ + "", + "These are the top-level entity types for plus pages.", + "", + "", + "", + "", + "", + "", + "Used to identify a private madison account(go/private-madison-account). Don't use it anymore." + ], + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPointSpec": { + "description": "Map marker location for an address.", + "id": "AppsPeopleOzExternalMergedpeopleapiPointSpec", + "properties": { + "bounds": { + "$ref": "GeostoreRectProto" + }, + "point": { + "$ref": "GeostorePointProto" + }, + "pointSource": { + "enum": [ + "UNKNOWN_POINT_SOURCE", + "POINT_SOURCE_UNSPECIFIED", + "USER_PROVIDED", + "SYSTEM_PROVIDED", + "USER_CONFIRMED" + ], + "enumDescriptions": [ + "", + "", + "User has explicitly moved the point.", + "System has generated the marker.", + "System has generated the marker, but user has viewed and saved it unchanged." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPosixAccount": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiPosixAccount", + "properties": { + "accountId": { + "description": "The user visible value is used to distinguish identical posix account fields with different customer key values.", + "type": "string" + }, + "accountNamespace": { + "description": "Value indicates the uniqueness namespace that applies to the POSIX information. The value is included in all POSIX account uniqueness indices. The indexing prevents two accounts within the same customer from having the same username. Namespacing allows Windows and Linux users to share the same username.", + "enum": [ + "LINUX_GSUITE", + "LINUX_CONSUMER", + "WINDOWS_GSUITE", + "WINDOWS_CONSUMER" + ], + "enumDescriptions": [ + "A Linux user for a G Suite domain.", + "A Linux user for a Google account.", + "A Windows user for a G Suite domain.", + "A Windows user for a Google account." + ], + "type": "string" + }, + "accountType": { + "description": "Value indicates whether the POSIX information is associated with a non-human entity and the validation logic to apply during PosixAccount mutation.", + "enum": [ + "LINUX_USER_ACCOUNT", + "LINUX_SERVICE_ACCOUNT", + "LINUX_EXTERNAL_USER", + "WINDOWS_USER_ACCOUNT", + "WINDOWS_SERVICE_ACCOUNT", + "WINDOWS_EXTERNAL_USER" + ], + "enumDescriptions": [ + "Linux account associated with a human user.", + "Linux account for a non-human entity. Service accounts are used for unattended automation scripts. See go/riseoftherobots for details.", + "Linux account associated with a human user where the owner of the POSIX data is granted access to resources (VMs) owned by a different (external) organization.", + "Windows account associated with a human user.", + "Windows account for a non-human entity. Service accounts are used for unattended automation scripts.", + "Windows account associated with a human user where the owner of the account data is granted access to resources (VMs) owned by a different (external) organization." + ], + "type": "string" + }, + "customerKey": { + "description": "The customer associated with the POSIX identity. If the user is already associated with a G Suite Customer, this field has the same value as http://google3/ccc/hosted/policies/settings/dthree_customer_info.proto", + "format": "int64", + "type": "string" + }, + "fingerprint": { + "description": "The value is automatically set to a SHA-256 fingerprint of the POSIX account. A fingerprint should uniquely identify a POSIX account entry.", + "type": "string" + }, + "gecos": { + "description": "The GECOS (user information) entry for this account.", + "type": "string" + }, + "gid": { + "description": "The default group ID.", + "format": "uint64", + "type": "string" + }, + "homeDirectory": { + "description": "The path to the home directory for this account.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "operatingSystemType": { + "description": "Value indicates whether to use Linux or Windows specific validation logic during PosixAccount mutation.", + "enum": [ + "OPERATING_SYSTEM_TYPE_UNSPECIFIED", + "LINUX", + "WINDOWS" + ], + "enumDescriptions": [ + "The operating system type associated with the user account information is unspecified.", + "Linux user account information.", + "Windows user account information." + ], + "type": "string" + }, + "shell": { + "description": "The path to the login shell for this account.", + "type": "string" + }, + "systemId": { + "description": "System identifier for which account Username or Uid apply to. If not specified on mutate by a caller it will default to empty value if either Username or Uid are being set. SystemId does require to have a value (even an empty one) because it is included into null-filtered Spanner index used to enforce uniqueness on Username and Uid fields.", + "type": "string" + }, + "uid": { + "description": "The user ID.", + "format": "uint64", + "type": "string" + }, + "username": { + "description": "The username of the account.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiProductMetadata": { + "id": "AppsPeopleOzExternalMergedpeopleapiProductMetadata", + "properties": { + "productSource": { + "enum": [ + "PRODUCT_SOURCE_UNKNOWN", + "PRODUCT_SOURCE_DEFAULT", + "PRODUCT_SOURCE_ASSISTANT", + "PRODUCT_SOURCE_JANATA", + "PRODUCT_SOURCE_SPEED_DIAL" + ], + "enumDescriptions": [ + "", + "", + "", + "The product for non-prominent people creating their profiles and sharing contact info on Google search (go/project-janata).", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiProductProfileFailure": { + "description": "Product profiles failure type: the status of the rpc to fetch the product profile.", + "id": "AppsPeopleOzExternalMergedpeopleapiProductProfileFailure", + "properties": { + "failureType": { + "enum": [ + "PRODUCT_PROFILE_FAILURE_TYPE_UNKNOWN", + "RPC_FAILURE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats": { + "description": "Stats pertaining to incoming edges and views, visible to the requester (with acls applied). Related to, but not equal to, com.google.focus.proto.Storage.UserVisibleStats.", + "id": "AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats", + "properties": { + "incomingAnyCircleCount": { + "description": "Replacement for deprecated follower_count. Comes from the EdgeSummary.", + "format": "int64", + "type": "string" + }, + "viewCount": { + "description": "Deprecated. This field is no longer populated by the server.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiProfileUrl": { + "description": "This is a Google+-only field (and thus does not exist for consumer users). See go/fbs-g+-deprecation.", + "id": "AppsPeopleOzExternalMergedpeopleapiProfileUrl", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiPronoun": { + "description": "Message to represent a user's set of preferred pronouns, see go/pronouns-backend.", + "id": "AppsPeopleOzExternalMergedpeopleapiPronoun", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "pronounData": { + "$ref": "SocialGraphApiProtoPronounData" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo": { + "id": "AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo", + "properties": { + "dataSet": { + "description": "The data set within the account that this raw contact belongs to.", + "type": "string" + }, + "dirty": { + "description": "The CP2 dirty field which indicates the sync state of the raw contact: https://developer.android.com/reference/android/provider/ContactsContract.SyncColumns#DIRTY True if the row is changed but not synced", + "type": "boolean" + }, + "sourceIdExist": { + "description": "Whether the source ID exists for non-Google contacts. Won't set for Google contacts.", + "type": "boolean" + }, + "syncInfo": { + "$ref": "SocialGraphApiProtoSyncInfo", + "description": "The Sync Info of a raw contact." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo": { + "description": "Raw device contact information.", + "id": "AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo", + "properties": { + "accountName": { + "description": "Account name of raw contact, e.g. \"google@gmail.com\".", + "type": "string" + }, + "accountType": { + "description": "Account type of raw contact, e.g. \"com.google\" or \"com.linkedin.android\".", + "type": "string" + }, + "appContactData": { + "description": "The detailed app-specific endpoint data available for the given RawDeviceContactInfo instance. This proto should be used to obtain the list of actions and mimetypes supported by the third-party app. Design: go/3p-contact-upload", + "items": { + "$ref": "SocialGraphApiAppContactData" + }, + "type": "array" + }, + "appInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo", + "description": "The app-specific endpoint data needed for app action fulfillment. Usage of this field should be avoided on the server-side, and should use the more detailed |full_app_info| field. " + }, + "crossDeviceAllowed": { + "description": "If true, this raw contact can be used on other devices than the one it originated from. Assigned by the server.", + "type": "boolean" + }, + "deviceContactMetadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata", + "description": "Extra metadata for this raw contact." + }, + "googleContactId": { + "description": "The focus contact id for Google contacts.", + "format": "int64", + "type": "string" + }, + "id": { + "description": "The base64 serialized social.graph.peopleapi.proto.internal.RawDeviceContactId. This id should be used to correlate to field.metadata.encoded_container_id when the field.metadata.container_type is RAW_DEVICE_CONTACT The id also correlates to person.metadata.identity_info.source_id.id.", + "type": "string" + }, + "photoType": { + "description": "The type of photo from the device (if any).", + "enum": [ + "PHOTO_TYPE_UNKNOWN", + "NO_PHOTO", + "THUMBNAIL", + "FULL_SIZE_PHOTO" + ], + "enumDescriptions": [ + "", + "This raw contact doesn't have a photo.", + "This raw contact only has a thumbnail.", + "This raw contact has a full size photo." + ], + "type": "string" + }, + "rawContactId": { + "description": "The id of the raw contact on the device.", + "format": "int64", + "type": "string" + }, + "rawDeviceContactAnalyticalInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo", + "description": "Only to be used by Romanesco team specifically for analytics." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo": { + "description": "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).", + "id": "AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo", + "properties": { + "accountEmail": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAccountEmail", + "description": "The account email linked to the profile, if any exists and is visible to the requester." + }, + "blockType": { + "description": "Indicates whether the profile owner has blocked this person.", + "items": { + "enum": [ + "BLOCK_TYPE_UNKNOWN", + "CIRCLE", + "LEGACY" + ], + "enumDescriptions": [ + "", + "Profile-blocked users", + "Chat-blocked users" + ], + "type": "string" + }, + "type": "array" + }, + "customerInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiCustomerInfo", + "description": "CustomerInfo for dasher user. The reader has to explicitly request this in the field_mask as 'read_only_profile_info.customer_info'" + }, + "domainInfo": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo", + "description": "DEPRECATED. Use the `ReadOnlyProfileInfo.customer_info` field instead (b/138120418). Only populated if in_viewer_domain is true." + }, + "inViewerDomain": { + "description": "DEPRECATED. Proxying trust between users in a domain should use go/flex-orgs-platform. For more info see: http://doc/18i0-C7vWcz2UuXYBsmulnriVCK3_EuMPpRlPa2OmMHw#heading=h.dobotdwx25kg Indicates whether the profile owner is in the same domain as the viewer.", + "type": "boolean" + }, + "incomingBlockType": { + "description": "Indicates whether this person is blocking the profile owner.", + "items": { + "enum": [ + "BLOCK_TYPE_UNKNOWN", + "CIRCLE", + "LEGACY" + ], + "enumDescriptions": [ + "", + "Profile-blocked users", + "Chat-blocked users" + ], + "type": "string" + }, + "type": "array" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "objectType": { + "description": "DEPRECATED.", + "enum": [ + "OBJECT_TYPE_UNKNOWN", + "PERSON", + "PAGE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "ownerId": { + "description": "The Focus-obfuscated Gaia ID of the profile owner (go/obfuscated-ids).", + "type": "string" + }, + "ownerUserType": { + "items": { + "enum": [ + "OWNER_USER_TYPE_UNKNOWN", + "GOOGLE_USER", + "GPLUS_USER", + "GPLUS_DISABLED_BY_ADMIN", + "GOOGLE_APPS_USER", + "GOOGLE_APPS_SELF_MANAGED_USER", + "GOOGLE_FAMILY_USER", + "GOOGLE_FAMILY_CHILD_USER", + "GOOGLE_APPS_ADMIN_DISABLED", + "GOOGLE_ONE_USER", + "GOOGLE_FAMILY_CONVERTED_CHILD_USER" + ], + "enumDescriptions": [ + "", + "The owner is a Google user.", + "The owner is a Currents user.", + "Google+, i.e. INSServiceID::GOOGLE_ME service, is disabled by dasher admin. Only returned for requester's own profile.", + "The owner is a Google Apps for Work user.", + "The owner is a self-managed Google Apps for Work user. Only returned for requester's own profile.", + "The owner is a Google for Families user. Only returned for requester's own profile.", + "The owner is a Google for Families child user. Only returned for requester's own profile.", + "The owner has been disabled (archived, suspended) by the G Suite admin.", + "The owner is a Google One user (go/googleone). Only returned for requester's own profile.", + "The owner is a Google for Families child user that was converted from an existing user. Only returned for requester's own profile. (go/griffin-account)" + ], + "type": "string" + }, + "type": "array" + }, + "plusPageType": { + "description": "DEPRECATED. Please use `person.plus_page_info` instead.", + "enum": [ + "PLUS_PAGE_TYPE_UNKNOWN", + "LOCAL", + "COMPANY", + "BRAND", + "CELEBRITY", + "CAUSE", + "ENTERTAINMENT", + "OTHER", + "OBSOLETE_PRIVATE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "Formerly a private madison account(go/private-madison-account). Don't use it anymore." + ], + "type": "string" + }, + "profileOwnerStats": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats", + "description": "Stats/counters pertaining to followers and incoming edges." + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo": { + "description": "DEPRECATED.", + "id": "AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo", + "properties": { + "domainBadge": { + "description": "DEPRECATED. Organization badge for the domain this person is a member of. The badge is the primary hosted domain.", + "items": { + "type": "string" + }, + "type": "array" + }, + "domainName": { + "description": "DEPRECATED. Hosted domain this person is a member of. Formerly only available via PersonExtendedData.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRelation": { + "description": "Relation stores the related person between the contact or profile and a third person 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.", + "id": "AppsPeopleOzExternalMergedpeopleapiRelation", + "properties": { + "canonicalValue": { + "description": "Canonicalized `value` of the relation from this person to the user. This is currently used for data from contact annotations. Possible canonical values are based from http://google3/googledata/quality/aliases/relationship_en.config.", + "type": "string" + }, + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "relationDetails": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails", + "description": "The person whose email matches the Relation.value field, if it is a valid email address. This field is read-only and ignored on update." + }, + "type": { + "description": "The relation type. The type can be free form or one of these predefined values: * `spouse` * `child` * `mother` * `father` * `parent` * `brother` * `sister` * `friend` * `relative` * `domesticPartner` * `manager` * `assistant` * `referredBy` * `partner`", + "type": "string" + }, + "value": { + "description": "The person this relation applies to. Custom value provided by the user.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails": { + "id": "AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails", + "properties": { + "displayName": { + "description": "Equivalent to Name.display_name for the person_id profile.", + "type": "string" + }, + "jobTitle": { + "description": "Equivalent to Organization.title for the primary organization of the person_id profile.", + "type": "string" + }, + "personId": { + "type": "string" + }, + "photoUrl": { + "description": "Equivalent to Photo.url for the person_id profile.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRelationshipInterest": { + "description": "Deprecated in b/122464133. No data returned for this field.", + "id": "AppsPeopleOzExternalMergedpeopleapiRelationshipInterest", + "properties": { + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "description": "These fields may give away the sexual orientation of the user.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRelationshipStatus": { + "description": "Deprecated in b/122464133. No data returned for this field.", + "id": "AppsPeopleOzExternalMergedpeopleapiRelationshipStatus", + "properties": { + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState": { + "description": "User preference for shared endorsements. See go/se-devguide and go/sharedendorsements for details, including guidance on which contexts are which.", + "id": "AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "state": { + "enum": [ + "STATE_UNSPECIFIED", + "NOT_OK_TO_DISPLAY", + "OK_TO_DISPLAY", + "OK_TO_DISPLAY_IN_NON_ADS_COMMERCIAL_CONTEXT" + ], + "enumDescriptions": [ + "", + "OK to display in non-commercial contexts, but not in commercial ones.", + "Okay to display in commercial or advertising contexts.", + "Okay to display in commercial contexts other than advertising." + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRosterDetails": { + "description": "Information specific to rosters like Google Groups and Chatrooms.", + "id": "AppsPeopleOzExternalMergedpeopleapiRosterDetails", + "properties": { + "abridgedRosterMemberships": { + "description": "Abridged / sample subset of member details of the roster. NOTE: This field is only returned if the request's field mask includes \"person.roster_details.abridged_roster_memberships\". http://cs/symbol:google.apps.cloudidentity.groups.internal.GroupSummary.abridged_memberships", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRosterMember" + }, + "type": "array" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "rosterMemberCount": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiRosterMemberCount", + "description": "Indicates the number of members and sub-rosters of the roster. Corresponds to http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.direct_member_count_per_type" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRosterMember": { + "description": "Represents details of a member of a roster. Used in RosterDetails. Corresponds to http://cs/symbol:google.apps.cloudidentity.groups.internal.Membership", + "id": "AppsPeopleOzExternalMergedpeopleapiRosterMember", + "properties": { + "memberType": { + "description": "Type of the member.", + "enum": [ + "ROSTER_MEMBER_TYPE_UNSPECIFIED", + "PERSON", + "ROSTER" + ], + "enumDescriptions": [ + "", + "CIG's Membership.Type.USER", + "CIG's Membership.Type.GROUP" + ], + "type": "string" + }, + "personId": { + "description": "Focus-Obfuscated Gaia Id of the member.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiRosterMemberCount": { + "description": "Represents the summary of member counts of a roster. Used in RosterDetails. Corresponds to http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType", + "id": "AppsPeopleOzExternalMergedpeopleapiRosterMemberCount", + "properties": { + "directGroupCount": { + "description": "Indicates the number of direct sub-rosters of the roster. This comes from http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType.group_count", + "format": "int64", + "type": "string" + }, + "directUserCount": { + "description": "Indicates the number of direct, non-roster members of the roster. This comes from http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType.user_count", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiSearchProfile": { + "description": "Profile for Janata and Search. go/janata-profile-in-sgbe", + "id": "AppsPeopleOzExternalMergedpeopleapiSearchProfile", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "searchProfileData": { + "$ref": "SocialGraphApiProtoSearchProfileData" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiSipAddress": { + "description": "As of 03/2018 is not supported for user Profile.", + "id": "AppsPeopleOzExternalMergedpeopleapiSipAddress", + "properties": { + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "description": "The type of the SIP address. The type can be free form or or one of these predefined values: * `home` * `work` * `mobile` * `other`", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiSkills": { + "id": "AppsPeopleOzExternalMergedpeopleapiSkills", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiSocialConnection": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiSocialConnection", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "type": { + "items": { + "enum": [ + "SOCIAL_CONNECTION_UNKNOWN", + "NO_CONNECTION", + "GPLUS_SECOND_HOP", + "DIRECT_CONNECTION", + "SELF" + ], + "enumDescriptions": [ + "", + "This person is not connected to the viewer.", + "Google+ user is a second hop relative to viewer.", + "User is a contact or in circles of the viewer.", + "This person is the viewer." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiSortKeys": { + "id": "AppsPeopleOzExternalMergedpeopleapiSortKeys", + "properties": { + "affinity": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiAffinity" + }, + "type": "array" + }, + "interactionRank": { + "description": "Deprecated. This field is only populated with 0.000 for legacy reasons. Clients should not use this field.", + "type": "string" + }, + "lastName": { + "type": "string" + }, + "lastNameRaw": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nameRaw": { + "description": "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).", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiSourceIdentity": { + "description": "Id of a single source from the merged person.", + "id": "AppsPeopleOzExternalMergedpeopleapiSourceIdentity", + "properties": { + "container": { + "description": "The type of source. To be deprecated infavor of container_type", + "enum": [ + "UNKNOWN", + "PROFILE", + "CONTACT", + "CIRCLE", + "PLACE", + "ACCOUNT", + "EXTERNAL_ACCOUNT", + "DOMAIN_PROFILE", + "DOMAIN_CONTACT", + "DEVICE_CONTACT", + "GOOGLE_GROUP", + "AFFINITY", + "RAW_DEVICE_CONTACT", + "CONTACT_ANNOTATION", + "DELEGATED_CONTACT" + ], + "enumDescriptions": [ + "", + "Google Profile. PROFILE fields are editable by the profile owner, unless the field metadata includes writeable=false.", + "Google Contact", + "Circle membership of non-g+ user.", + "A maps place", + "The requester's own Gaia account. ACCOUNT fields are not editable by anyone. They only occur when the requester is \"me\". In the event an ACCOUNT field is ACLed non-private, it will be returned as a PROFILE field when viewed by a requester who is not \"me\".", + "LinkedExternalSites (go/PeopleApiConnectedSites)", + "Google-For-Work Profile. DOMAIN_PROFILE fields are editable by the Dasher administrator of the domain. They are not editable by the profile owner.", + "Domain shared contact", + "To be deprecated in favor of RAW_DEVICE_CONTACT See go/mergedperson-for-device-contacts Aggregation is represented using person.metadata.device_contact_info", + "Google group. Examples: sales@zara.es.", + "Data from the user's frequent interactions.", + "Data from a raw (non-aggregated) device contact. See go/mergedperson-for-device-contacts", + "Data from contact annotation. Contact annotations are currently generated and used by Google Assistant.", + "Data from delegated contacts. Delegated contacts are the contacts delegated to the current requester. The requester can then access those contacts. See go/ph-delegation." + ], + "type": "string" + }, + "containerType": { + "description": "The type of the source.", + "enum": [ + "UNKNOWN_CONTAINER", + "PROFILE", + "CONTACT", + "CIRCLE", + "PLACE", + "ACCOUNT", + "EXTERNAL_ACCOUNT", + "DOMAIN_PROFILE", + "DOMAIN_CONTACT", + "DEVICE_CONTACT", + "GOOGLE_GROUP", + "NAMED_CHAT_ROOM", + "UNNAMED_CHAT_ROOM", + "AFFINITY", + "RAW_DEVICE_CONTACT", + "CONTACT_ANNOTATION", + "DELEGATED_CONTACT" + ], + "enumDescriptions": [ + "", + "Google Profile. PROFILE fields are editable by the profile owner, unless the field metadata includes writeable=false.", + "Google Contact", + "Deprecated. E-mail only circle membership should be dead. E-mail only circle membership of non-g+ user.", + "A maps place", + "The requester's own Gaia account. ACCOUNT fields are not editable by anyone. They only occur when the requester is \"me\". In the event an ACCOUNT field is ACLed non-private, it will be returned as a PROFILE field when viewed by a requester who is not \"me\".", + "LinkedExternalSites (go/PeopleApiConnectedSites)", + "Google-For-Work Profile. DOMAIN_PROFILE fields are editable by the Dasher administrator of the domain. They are not editable by the profile owner.", + "Domain shared contact. An entity that is owned by a domain and represents a person, but is not a user in the domain. For more details see https://support.google.com/a/answer/9281635.", + "To be deprecated in favor of RAW_DEVICE_CONTACT See go/mergedperson-for-device-contacts Aggregation is represented using person.metadata.device_contact_info", + "Google group. Examples: sales@zara.es.", + "Dynamite \"Named Flat Room\" (NFR). This is a Baggins Roster with label DYNAMITE_SPACE *and* label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Dynamite \"Unnamed Flat Room\" (UFR). This is a Baggins Roster with label DYNAMITE_SPACE but does *not* have label DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms", + "Device contacts that are used in interaction ranking, but have not been uploaded to Google. These are synthesized people from interaction data. This container type is only used in ListRankedPeople and ListRankedTargets actions. See go/TopNWithClusteringPart1.", + "Data from a raw (non-aggregated) device contact. See go/mergedperson-for-device-contacts", + "Data from contact annotation. Contact annotations are currently generated and used by Google Assistant.", + "Data from delegated contacts. Delegated contacts are the contacts delegated to the current requester. The requester can then access those contacts. See go/ph-delegation." + ], + "type": "string" + }, + "deleted": { + "description": "In sync responses, indicates whether the identity source has been deleted. Not applicable to GOOGLE_GROUP.", + "type": "boolean" + }, + "id": { + "description": "The encoded id of the data source. This field correlates to PersonFieldMetadata.encoded_container_id. The possible values of this `id` field are as follows based on the value of the `container_type` field: CONTACT: Hex-encoded contact id. PROFILE: DOMAIN_PROFILE: GOOGLE_GROUP: NAMED_CHAT_ROOM: Focus-obfuscated Gaia ID. DOMAIN_CONTACT: Synthetic-contact id representing the domain shared contact. PLACE: Encoded PlaceId, encoded using go/djlcf (PlaceIdEncoder.java) RAW_DEVICE_CONTACT: Pair of device_id and raw_contact_id, encoded as base64 serialized social.graph.peopleapi.proto.internal.RawDeviceContactId proto. CONTACT_ANNOTATION: Pair of annotation_id and event_timestamp, encoded as base64 serialized social.graph.peopleapi.proto.internal.ContactAnnotationId proto. -- DEPRECATED container types -- If the container is CIRCLE, then the id is going to be the synthetic- contact id representing the email-only circle member or gaia circle member for which the requester does not have a contact for.", + "type": "string" + }, + "lastUpdated": { + "description": "Last update timestamp of this source. NOTE: Only populated for CONTACT container type in Java PeopleAPI. Populated for CONTACT, PROFILE, DOMAIN_PROFILE in Sharpen implementation. NOTE: Not populated for GOOGLE_GROUP.", + "format": "google-datetime", + "type": "string" + }, + "lastUpdatedMicros": { + "description": "**DEPRECATED** Please use `last_updated` field instead. Last update timestamp of this source in microseconds. NOTE: Only populated for CONTACT container type.", + "format": "int64", + "type": "string" + }, + "sourceEtag": { + "description": "NOTE: Not populated for GOOGLE_GROUP.", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiSshPublicKey": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiSshPublicKey", + "properties": { + "expirationTime": { + "format": "google-datetime", + "type": "string" + }, + "fingerprint": { + "description": "The value is automatically set to a SHA-256 fingerprint of an SSH public key. A fingerprint should uniquely identify an SSH public key.", + "type": "string" + }, + "key": { + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiStructuredPhone": { + "description": "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.", + "id": "AppsPeopleOzExternalMergedpeopleapiStructuredPhone", + "properties": { + "formattedType": { + "description": "The phone formatted type. See docs from mirrored proto: http://google3/ccc/grand_central/common/types.proto?l=128\u0026rcl=241000760", + "type": "string" + }, + "phoneNumber": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber" + }, + "shortCode": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode" + }, + "type": { + "description": "The type of phone. See docs from mirrored proto: http://google3/ccc/grand_central/common/types.proto?l=125\u0026rcl=241000760", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber": { + "id": "AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber", + "properties": { + "e164": { + "type": "string" + }, + "i18nData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData": { + "id": "AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData", + "properties": { + "countryCode": { + "format": "int32", + "type": "integer" + }, + "internationalNumber": { + "type": "string" + }, + "isValid": { + "type": "boolean" + }, + "nationalNumber": { + "type": "string" + }, + "regionCode": { + "type": "string" + }, + "validationResult": { + "enum": [ + "UNKNOWN", + "IS_POSSIBLE", + "INVALID_COUNTRY_CODE", + "TOO_SHORT", + "TOO_LONG", + "IS_POSSIBLE_LOCAL_ONLY", + "INVALID_LENGTH" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode": { + "id": "AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode", + "properties": { + "code": { + "description": "The phone code. See docs from mirrored proto: http://google3/ccc/grand_central/common/types.proto?l=70\u0026rcl=241000760", + "type": "string" + }, + "countryCode": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiTagline": { + "id": "AppsPeopleOzExternalMergedpeopleapiTagline", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData": { + "description": "*UNSUPPORTED*. This message is never populated and is no longer used.", + "id": "AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData", + "properties": { + "adminTo": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPerson" + }, + "type": "array" + }, + "admins": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPerson" + }, + "type": "array" + }, + "dottedLineManagers": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPerson" + }, + "type": "array" + }, + "dottedLineReports": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber" + }, + "failures": { + "items": { + "enum": [ + "UNKNOWN_FAILURE", + "MANAGEMENT_CHAIN", + "REPORTS", + "DOTTED_LINE_REPORTS", + "DOTTED_LINE_MANAGERS", + "ADMINS", + "ADMIN_TO" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "managementChain": { + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPerson" + }, + "type": "array" + }, + "reports": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiUserDefined": { + "id": "AppsPeopleOzExternalMergedpeopleapiUserDefined", + "properties": { + "key": { + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiUserVisibleStats": { + "description": "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, com.google.focus.proto.Storage.UserVisibleStats.", + "id": "AppsPeopleOzExternalMergedpeopleapiUserVisibleStats", + "properties": { + "incomingAnyCircleCount": { + "description": "Replacement for deprecated follower_count. Comes from the EdgeSummary.", + "format": "int64", + "type": "string" + }, + "viewCount": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiVisibleToGuests": { + "description": "Store metadata information like annotation-id and product source for visible to guests contacts go/visible-to-guests.", + "id": "AppsPeopleOzExternalMergedpeopleapiVisibleToGuests", + "properties": { + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData": { + "id": "AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData", + "properties": { + "isIncomplete": { + "description": "Used by Contacts client-side to indicate whether a person is not completed.", + "type": "boolean" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiWebsite": { + "id": "AppsPeopleOzExternalMergedpeopleapiWebsite", + "properties": { + "formattedType": { + "description": "The `type` translated and formatted in the request locale. See go/people-api-howto/localization for details on how to usage.", + "type": "string" + }, + "metadata": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata" + }, + "rel": { + "description": "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.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo" + }, + "type": "array" + }, + "type": { + "description": "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`", + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo": { + "id": "AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo", + "properties": { + "type": { + "enum": [ + "UNKNOWN", + "ME", + "NOT_ME", + "CONTRIBUTOR_TO", + "PAST_CONTRIBUTOR_TO" + ], + "enumDescriptions": [ + "", + "rel=\"me\"", + "rel=\"\"", + "rel=\"contributor-to\"", + "rel=\"past-contributor-to\"" + ], + "type": "string" + } + }, + "type": "object" + }, + "AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData": { + "description": "Extension data for use in Youtube Product Profile.", + "id": "AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData", + "properties": { + "channelData": { + "description": "Information about a channel created by the user. A user can create multiple Youtube channels.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiChannelData" + }, + "type": "array" + }, + "failure": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiProductProfileFailure", + "description": "Failure type if there is an error when fetching product profile data." + } + }, + "type": "object" + }, + "AssistantApiAccessControlOutput": { + "description": "Access settings for providers.", + "id": "AssistantApiAccessControlOutput", + "properties": { + "allowNonUnicornUserAccessYoutubeKids": { + "description": "If true, the user consented to use YouTube Kids as a video provider for non-unicorn users(voice recognized adults or guest). Unicorn accounts shouldn’t use this setting.", + "type": "boolean" + }, + "guestAccessOnYoutube": { + "enum": [ + "UNKNOWN_GUEST_ACCESS", + "USE_DEFAULT_ACCOUNT_FOR_GUEST", + "DISABLED_FOR_GUEST" + ], + "enumDescriptions": [ + "", + "Guests can access content using linked users' account.", + "No access for guests." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiActionV2SupportedFeatures": { + "description": "The features supported by the ActionV2 protocol. Note that after we move on to ConversationProto for all surfaces we can remove this message.", + "id": "AssistantApiActionV2SupportedFeatures", + "properties": { + "expressUrlInSettingsResponseSupported": { + "description": "This flag is used to work around a bug in AGSA 6.8 that got away. The bug prevents users from accessing their shopping list if the URL of the shopping list is not a keep.google.com URL. This will happen when switch the backend that stores the shopping list from Keep to a backend maintained by the Google Shopping Express team.", + "type": "boolean" + }, + "reconnectClientInputSupported": { + "description": "Whether client supports reconnect client input in action v2 payload. This capability is needed to determine if client supports parsing client input payload from actionv2 proto for workflow purposes. See go/personal-workflow. OWNER:nyzstar,vvvemuri.", + "type": "boolean" + }, + "simpleActionV2PuntSupported": { + "description": "Whether or not the surface supports a simple UnsupportedAction instead of a ModalState punt card for rendering. For ActionV2 punt cards, the ModalState extension on the ResourceSet is the canonical way of building punt cards. However, while most all devices support the ActionV2 protocol, not all devices handle the ModalState rendering as part of the ActionV2. For these devices, we want to build a modified ActionV2 for punt cards which omits this ModalState. At present, this is only Android Wear and should not be used for other devices if they support ModalState or Conversation protocol.", + "type": "boolean" + }, + "supportedActionType": { + "description": "A list of all the action types supported by the client. These should be the string representation of majel.ActionTypes within \"quality/majel/api/proto/action_v2.proto\".", + "items": { + "type": "string" + }, + "type": "array" + }, + "takeScreenshotSupported": { + "description": "Checks if screenshots can be taken on the client. This field is set on the client from AGSA 7.2 onwards.", + "type": "boolean" + }, + "voiceDelightImmersiveUiSupported": { + "description": "If IMMERSIVE_ACTIONS UiType is supported by the client.", + "type": "boolean" + }, + "voiceDelightStickersSupported": { + "description": "If Voice Delight Stickers are supported by the client. In order to support Voice Delight stickers, the client should know how to extract sticker_url from VoiceDelightSystemInteractionSegment.", + "type": "boolean" + }, + "voiceDelightSuggestionsSupported": { + "description": "If Voice Delight Suggestion Chips are supported by the client. In order to support Voice Delight Suggestion Chips, the client should know how to extract suggestions form VoiceDelightSystemInteraction.ResourceSet.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiAndroidIntentCapabilities": { + "description": "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.", + "id": "AssistantApiAndroidIntentCapabilities", + "properties": { + "androidIntentCapability": { + "items": { + "$ref": "AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability": { + "id": "AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability", + "properties": { + "intentActionName": { + "description": "The Action name of the Android Intent in standard notation (https://developer.android.com/reference/android/content/Intent#getAction()).", + "type": "string" + }, + "packageNames": { + "description": "The Android provider packages that support the intent, e.g. \"com.google.android.deskclock\".", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiAppCapabilities": { + "description": "Used to describe app capabilities of the device installed apps reported to the server.", + "id": "AssistantApiAppCapabilities", + "properties": { + "allowlistedForMediaFulfillment": { + "description": "Indicates whether the provider is compatible for media fulfillment on this surface. For example, Amazon Music isn't compatible with the driving mode.", + "type": "boolean" + }, + "appIntegrationsSettings": { + "$ref": "AssistantApiAppIntegrationsSettings", + "description": "Currently unused. Will be used in the future when integrating with incremental app capabilities." + }, + "disabledSystemApp": { + "description": "This system app is disabled in settings.", + "type": "boolean" + }, + "provider": { + "$ref": "AssistantApiCoreTypesProvider", + "description": "The installed app of the provider." + }, + "routableToProviderCloud": { + "description": "This provider has integrated its cloud backend with Google, and Google can route the user queries to the provider's cloud.", + "type": "boolean" + }, + "searchableOnDevice": { + "description": "This provider has an app that supports on-device search through the provider's own inventory.", + "type": "boolean" + }, + "searchableOnServer": { + "description": "This provider has integrated its content with Google, and Google has enabled to serve its content as a server-side solution.", + "type": "boolean" + }, + "supportsScreenlessInitiation": { + "description": "This provider has an app that supports starting new media playback when there is no screen (e.g. by integrating with the Bisto SDK).", + "type": "boolean" + }, + "whitelistedForAnnotation": { + "description": "This provider is an app which should be used for query annotations. This is useful for apps which may not be already indexed by Google or are client specific.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiAppCapabilitiesDelta": { + "description": "Used to describe the incremental change of app capabilities of the device installed apps reported to the server.", + "id": "AssistantApiAppCapabilitiesDelta", + "properties": { + "appIntegrationsSettings": { + "$ref": "AssistantApiAppIntegrationsSettings", + "description": "Currently unused. Will be used in the future when integrating with incremental app capabilities." + }, + "providerDelta": { + "$ref": "AssistantApiCoreTypesProviderDelta", + "description": "The installed app of the provider." + } + }, + "type": "object" + }, + "AssistantApiAppControlSupport": { + "id": "AssistantApiAppControlSupport", + "properties": { + "enabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiAppIntegrationsSettings": { + "description": "Contains the app privacy bits used for App Integrations implicit request. (go/app-privacy-settings-for-implicit-requests)", + "id": "AssistantApiAppIntegrationsSettings", + "properties": { + "handleRequestsWithPredictedApps": { + "description": "Whether to enable Assistant to handle request with predicted apps.", + "enum": [ + "UNSET", + "FALSE", + "TRUE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiAssistantContinuedPresenceSupport": { + "id": "AssistantApiAssistantContinuedPresenceSupport", + "properties": { + "plateSupport": { + "description": "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.", + "enum": [ + "DEFAULT_NO_PLATE", + "SEARCH_ONLY" + ], + "enumDescriptions": [ + "Assistant continued presence cannot be shown.", + "Assistant continued presence can be shown only in SearchNowActivity. See go/lockhart-acp." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiAudioInput": { + "description": "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.", + "id": "AssistantApiAudioInput", + "properties": { + "environment": { + "enum": [ + "SURROUNDING_USERS", + "AUTHENTICATED_USER_ONLY" + ], + "enumDescriptions": [ + "Audio may be produced by or visible to any users in the vicinity of the authenticated user -- e.g., a speaker. NOTE that this is the default value since it's better to assume that the user is in public when they're not than vice versa.", + "Audio can be assumed to come from or go to the authenticated user -- e.g., the mic or headphone on a phone or headset." + ], + "type": "string" + }, + "quality": { + "enum": [ + "VOICE_QUALITY", + "MUSIC_QUALITY" + ], + "enumDescriptions": [ + "An audio device capable of handling audio at fidelity high enough for voice use (TTS, speech recognition, telephone) but insufficient for media playback.", + "An audio device capable of handling high-fidelity audio, suitable for use as a media device." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiAudioOutput": { + "description": "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.", + "id": "AssistantApiAudioOutput", + "properties": { + "alwaysOnSpeaker": { + "enum": [ + "UNKNOWN", + "NOT_SUPPORTED", + "SUPPORTED" + ], + "enumDescriptions": [ + "The setting for always on speaker is unknown.", + "Always on speaker is not supported.", + "Always on speaker is supported." + ], + "type": "string" + }, + "environment": { + "enum": [ + "SURROUNDING_USERS", + "AUTHENTICATED_USER_ONLY" + ], + "enumDescriptions": [ + "Audio may be produced by or visible to any users in the vicinity of the authenticated user -- e.g., a speaker. NOTE that this is the default value since it's better to assume that the user is in public when they're not than vice versa.", + "Audio can be assumed to come from or go to the authenticated user -- e.g., the mic or headphone on a phone or headset." + ], + "type": "string" + }, + "mediaTtsMixable": { + "enum": [ + "MEDIA_TTS_MIXABLE_UNKNOWN", + "MEDIA_TTS_MIXABLE_NOT_SUPPORTED", + "MEDIA_TTS_MIXABLE_SUPPORTED" + ], + "enumDescriptions": [ + "Unknown whether device supports mixing TTS and device media.", + "Device cannot mix TTS and device media.", + "Device can mix TTS and device media." + ], + "type": "string" + }, + "quality": { + "enum": [ + "VOICE_QUALITY", + "MUSIC_QUALITY" + ], + "enumDescriptions": [ + "An audio device capable of handling audio at fidelity high enough for voice use (TTS, speech recognition, telephone) but insufficient for media playback.", + "An audio device capable of handling high-fidelity audio, suitable for use as a media device." + ], + "type": "string" + }, + "volumeProperties": { + "$ref": "AssistantApiVolumeProperties" + } + }, + "type": "object" + }, + "AssistantApiCallCapabilities": { + "description": "CallCapabilities supported by a surface. See go/call-capabilities. Next ID: 7", + "id": "AssistantApiCallCapabilities", + "properties": { + "callFormats": { + "description": "The supported call formats on the surface.", + "items": { + "enum": [ + "UNSPECIFIED_FORMAT", + "AUDIO", + "VIDEO", + "TEXT" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "callMediums": { + "description": "The supported call mediums on the surface.", + "items": { + "enum": [ + "UNSPECIFIED_MEDIUM", + "PSTN", + "VOIP", + "EMAIL", + "ONLINE_CHAT", + "TEXT_MESSAGING", + "MESSAGE" + ], + "enumDescriptions": [ + "", + "Public Switched Telephone Network.", + "Voice Over IP.", + "", + "", + "Super set of SMS and MMS", + "Super set of EMAIL, ONLINE_CHAT, TEXT_MESSAGING" + ], + "type": "string" + }, + "type": "array" + }, + "callOptions": { + "description": "The call options this surface can provide. For example, SPEAKERPHONE is available on Android OPA while iOPA doesn't support it yet.", + "items": { + "enum": [ + "UNSPECIFIED_CALL_OPTION", + "SPEAKERPHONE", + "BLUETOOTH", + "HEADSET", + "MIC", + "CAMERA" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "Optional to set since call.CONTROL_MIC client_op infers this option.", + "Optional to set since video_call.CONTROL_CAMERA client_op" + ], + "type": "string" + }, + "type": "array" + }, + "fallbackToTetheredDeviceAppCapabilities": { + "description": "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).", + "type": "boolean" + }, + "supportedRecipientTypes": { + "description": "Should only be checked if nonempty.", + "items": { + "enum": [ + "UNSPECIFIED_ENDPOINT", + "PHONE_NUMBER", + "EMAIL_ADDRESS", + "APP_UNIQUE_ID", + "EMERGENCY_PHONE_NUMBER", + "VOICEMAIL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "supportsDuoEmailEndpoint": { + "description": "Whether the surface supports Duo calling email endpoints.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiCameraCapabilities": { + "description": "These capabilities represent the camera features associated with the device.", + "id": "AssistantApiCameraCapabilities", + "properties": { + "faceMatchCapable": { + "description": "Whether the device supports Face Match.", + "type": "boolean" + }, + "hasCamera": { + "description": "Whether the device has a camera.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiCameraReceiverCapabilities": { + "description": "These capabilities present the capability of the device running camera receiver apps.", + "id": "AssistantApiCameraReceiverCapabilities", + "properties": { + "hasLimitedCameraStreamCapability": { + "description": "Whether the device has limited camera stream capability. If true, check supported_camera_receivers for detailed supported cameras.", + "type": "boolean" + }, + "supportedCameraReceivers": { + "description": "The camera receiver cast apps the device supports. Only used if has_limited_camera_stream_capability is true.", + "items": { + "$ref": "AssistantApiCoreTypesCastAppInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiCarAssistantCapabilities": { + "description": "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.", + "id": "AssistantApiCarAssistantCapabilities", + "properties": { + "shouldPuntMultiAssistantMode": { + "description": "Indicates whether the current Assistant should provide a multi Assistant specific punt when there are multiple Auto specific Google Assistants (Android Auto Projected (AAP) and Android Auto Embedded (AAE)) in the same GAS enabled car. This will be used by both AAP and AAE. Design doc: go/doubledash++", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiCarSettingsCapabilities": { + "description": "Capabilities that are associated with Assistant Settings on auto surfaces.", + "id": "AssistantApiCarSettingsCapabilities", + "properties": { + "playWarmerWelcome": { + "description": "If true, it indicates that the auto surface client should receive a warmer welcome TTS for signed-out users. For signed-in user, we will rely on server side metadata. go/aaae:preview-lang", + "type": "boolean" + }, + "supportsAddingCars": { + "description": "If true, it indicates that the client can be used to add cars after account linking with the OEM.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiCastAssistantSettingLinkingResult": { + "id": "AssistantApiCastAssistantSettingLinkingResult", + "properties": { + "castLinkingStatus": { + "description": "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).", + "enum": [ + "NOT_SET", + "SUCCEED", + "DEVICE_CONFLICT", + "DEVICE_NAME_EMPTY", + "CLIENT_ID_MISSING_TAG", + "INVALID_DEVICE_ID", + "DATA_SYNC_THROTTLED", + "CREATE_ROBOT_ACCOUNT_FAILED", + "UNAUTHORIZED_CLIENT", + "OTHER_ERROR" + ], + "enumDescriptions": [ + "LINT.IfChange", + "", + "", + "", + "", + "", + "", + "", + "", + "LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log.proto)" + ], + "type": "string" + }, + "truncatedErrorMsg": { + "description": "The error msg returned from COS, truncated in case it's too large.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCastCapabilities": { + "description": "These capabilities represent capabilities that have to do with casting that pertain to this device. Next ID: 9", + "id": "AssistantApiCastCapabilities", + "properties": { + "cameraReceiverCapabilities": { + "$ref": "AssistantApiCameraReceiverCapabilities", + "description": "Whether the device has limited camera stream capability and if yes, which receivers are supported." + }, + "cameraStreamSupportedProtocols": { + "description": "The supported protocols for camera streaming. The value is used as string in go/smarthome-internal-api#camera-stream, so using a string for this field instead of an enum. Supported protocols: (align the definition in go/smarthome-camerastream-trait) - \"hls\": HTTP Live Streaming - \"dash\": Dynamic Adaptive Streaming over HTTP - \"smooth_stream\": Smooth Streaming - \"progressive_mp4\": Progressive MP4 (will likely only be used for Clips) - \"webrtc\": WebRTC (currently, only H.264 is supported) - \"nexustalk\": Internal-only protocol used for Nest", + "items": { + "type": "string" + }, + "type": "array" + }, + "canReceiveCast": { + "description": "True if we can cast things to this device.", + "type": "boolean" + }, + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "Optional for primarily cast devices (e.g., Chirp, Chromecast). For devices that are NOT primarily cast devices, but having a cast receiver as secondary functionality, this field SHOULD store the cast-device-id to be used to send remote casting commands to the device. Example: Android TV, which supports both Android-native actions as well as remote casting using its built-in cast receiver. Android TV device id contains a DUSI id, which is not a cast-device-id. When executing a cast command on the Android TV, this field is used to route the cast command (through CloudCastService) to the cast receiver on the device." + }, + "dynamicGroupsSupported": { + "description": "Whether this device supports dynamic groups or not. It implies if a Stream Control operation (transfer, expansion, and contraction) could be applied on this device since Stream Control is implemented as part of dynamic groups (ie, adding/removing devices from playback)", + "type": "boolean" + }, + "groupType": { + "enum": [ + "NONE", + "STATIC_GROUP", + "DYNAMIC_GROUP", + "STEREO_PAIR" + ], + "enumDescriptions": [ + "", + "Static group is created by the user through UI. It contains two or more devices.", + "Dynamic group is a temporary group created when devices are added to / removed from a playback. It should be torn down after the playback is done.", + "Stereo pair is created by the user through UI. It contains exact two devices, a left device and a right device." + ], + "type": "string" + }, + "overlayApplicationsSupported": { + "description": "Whether UI overlay applications are supported on this device. It's used by Chromecast only.", + "type": "boolean" + }, + "yetiGamingSupported": { + "description": "Whether the device supports playing games through Yeti. This is set by the cast device when the device is updated: Chromecast updates -\u003e Chromecast registers its capabilities with CCS -\u003e CCS passes the capabilities to the AssistantSettingsService -\u003e AssistantSettingsService stores the device's capabilities. go/yeti-gaming-supported-cast-capability", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty": { + "description": "The properties of the client op device.MODIFY_SETTING. This proto is stored in the SupportedClientOp proto.", + "id": "AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty", + "properties": { + "skipAndroidAndGsaVersionCheck": { + "description": "Additional specific setting capabilities. This boolean is used to indicate whether we want to skip the Android and GSA version check in CheckSettingSchemaAndMaybeGetUris() from assistant/vertical/device/fulfillment/utils/setting_utils.h. Consider setting this field to true if your device is neither Android or GSA (especially when the UserAgent string of your device's TaskRequest will not contain a valid/up-to-date Android/GSA version).", + "type": "boolean" + }, + "supportedSettings": { + "description": "Uses DeviceSetting enum which corresponds to setting_id. This indicates which specific settings are supported by client. An empty list implies all settings are supported.", + "items": { + "enum": [ + "UNSPECIFIED", + "ABOUT_ME", + "ACCESSIBILITY", + "ACTIVE_EDGE", + "ACTIVE_EDGE_SENSITIVITY", + "ADAPTIVE_BATTERY", + "ADAPTIVE_BRIGHTNESS", + "ADD_DEVICE", + "ADD_FINGERPRINT", + "AIRPLANE_MODE", + "ALARM_VOLUME", + "AMBIENT_DISPLAY_ALWAYS_ON", + "AMBIENT_DISPLAY_NEW_NOTIFICATION", + "ANDROID_VERSION", + "APP_BATTERY_USAGE", + "APP_DATA_USAGE", + "APP_DETAILS", + "APP_SHORTCUT", + "APPS_STORAGE", + "ASSISTANT_ACCOUNT", + "ASSISTANT_FACE_MATCH", + "ASSISTANT_LANGUAGE", + "ASSISTANT_VOICE_MATCH", + "AUTO_ROTATE", + "BATTERY_LEVEL", + "BATTERY_LOW", + "BATTERY_PERCENTAGE", + "BATTERY_PRESENT", + "BATTERY_SAVER", + "BATTERY_USAGE", + "BIOMETRIC", + "BLUETOOTH", + "BRIGHTNESS_LEVEL", + "CALL_VOLUME", + "CAMERA_DOUBLE_TWIST", + "CAST", + "COLOR_INVERSION", + "CONTACTLESS_PAYMENTS", + "DATA_ROAMING", + "DATA_SAVER", + "DATA_USAGE", + "DEFAULT_APPS", + "DEVELOPER_OPTIONS", + "DISPLAY_OVER_OTHER_APPS", + "DISPLAY_SIZE", + "DO_NOT_DISTURB", + "DOUBLE_TAP_CHECK_PHONE", + "EMERGENCY_INFORMATION", + "ETHERNET_TETHERING", + "FACTORY_RESET", + "FLASHLIGHT", + "FOCUS_MODE", + "FONT_SIZE", + "FREE_UP_SPACE", + "GESTURES", + "HOT_SPOT", + "HOTSPOT_TETHERING", + "HOT_WORD", + "JUMP_TO_CAMERA", + "KEYBOARD_SHORTCUTS", + "LIFT_CHECK_PHONE", + "LOCATION", + "LOCK_SCREEN", + "MAGNIFY_BUTTON", + "MAGNIFY_TRIPLE_TAP", + "MANIFY_BUTTON", + "MANIFY_TRIPLE_TAP", + "MEDIA", + "MEDIA_VOLUME", + "MOBILE", + "MOBILE_DATA", + "MUSIC", + "NETWORK", + "NFC", + "NIGHT_LIGHT_INTENSITY", + "NIGHT_LIGHT_SWITCH", + "NIGHT_MODE", + "NOTIFICATION_BADGE", + "PASSWORD", + "PERSONALIZATION", + "PICTURE_IN_PICTURE", + "POWER_MENU", + "REMINDERS", + "REQUIRE_DEVICE_UNLOCK_FOR_NFC", + "RINGTONE", + "RING_VOLUME", + "SCREEN_TIMEOUT", + "SELECT_TO_SPEAK", + "SETTINGS", + "SIM", + "SPEECH_RATE", + "STORAGE_USAGE", + "SWIPE_FOR_NOTIFICATION", + "SWITCH_ACCESS", + "SYSTEM_UPDATE", + "TEXT_TO_SPEECH", + "USB_TETHERING", + "VERBOSE_TTS", + "VOICE", + "VOLUME_LEVEL", + "WAKE_SCREEN_FOR_NOTIFICATIONS", + "WALLPAPERS", + "WEBVIEW", + "WIFI", + "WIFI_CALLING", + "WIFI_HOTSPOT", + "ABOUT_PHONE", + "ACCOUNTS", + "APPLICATION", + "ASSISTANT", + "AUDIO", + "BATTERY", + "BELL_SCHEDULE", + "CONTINUED_CONVERSATION", + "DATE_TIME", + "DARK_THEME", + "DEVICE_INFO", + "DICTIONARY", + "DIGITAL_WELLBEING", + "DISPLAY", + "LANGUAGE", + "NIGHT_LIGHT", + "NOTIFICATION", + "NOTIFICATION_VOLUME", + "PHONE_RINGTONE", + "PRIVACY", + "ROAMING", + "ROUTINES", + "SEARCH", + "SECURITY", + "SOUND", + "SPELL_CHECKER", + "SYSTEM", + "STORAGE", + "VPN", + "AUTOCLICK", + "CARET_HIGHLIGHT", + "CHROMEVOX", + "CURSOR_HIGHLIGHT", + "DOCKED_MAGNIFIER", + "FOCUS_HIGHLIGHT", + "FULLSCREEN_MAGNIFIER", + "HIGH_CONTRAST_MODE", + "LARGE_CURSOR", + "MONO_AUDIO", + "STICKY_KEYS", + "TAP_DRAGGING", + "VIRTUAL_KEYBOARD", + "WEARABLE_AMBIENT", + "WEARABLE_NOISE_CANCELLATION", + "WEARABLE_TOUCH_CONTROLS", + "RAISE_TO_TALK" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Cellular carrier (non-wifi) data usage statistics \u0026 settings for the device.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Wireless internet settings, including WiFi, Cellular, etc.", + "Setting to enable/disable cellular data connection being used on the device. https://screenshot.googleplex.com/jMSRtW3Aq4o", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Begin of NGA proto consistence", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "End of NGA proto consistence", + "Chrome OS specific accessibility settings", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "End of Chrome OS specific accessibility settings", + "Wearable device settings", + "", + "", + "End of Wearable device settings" + ], + "type": "string" + }, + "type": "array" + }, + "supportsDoNotDisturbWithDuration": { + "description": "Additional specific setting capabilities. This boolean is used to indicate if do not disturb with duration is supported through device.MODIFY_SETTING clientop on a client or not.", + "type": "boolean" + }, + "supportsMuteUnmute": { + "description": "Additional specific setting capabilities. This boolean is used to indicate if new unmute logic is enabled on a client or not.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiClientOpPropertiesProviderOpenClientOpProperty": { + "description": "The properties of the provider.OPEN ClientOp. This proto is stored in the SupportedClientOp proto with the key provider.OPEN.", + "id": "AssistantApiClientOpPropertiesProviderOpenClientOpProperty", + "properties": { + "keepsConversationAliveAfterOpeningApp": { + "description": "Whether conversation is kept alive after opening the app. See go/keep-opa-conversation-alive for details.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiClockCapabilities": { + "description": "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).", + "id": "AssistantApiClockCapabilities", + "properties": { + "maxSupportedAlarms": { + "description": "Maximum number of alarms that can be created on the client.", + "format": "int32", + "type": "integer" + }, + "maxSupportedExtendedTimerDuration": { + "$ref": "AssistantApiDuration", + "description": "Maximum extended timer duration supported by the client. The extended timer duration is the total start-to-finish duration after an AddTimeToTimer operation. E.g. if a user sets a timer for 30 minutes, and later adds 10 minutes, the extended duration is 40 minutes." + }, + "maxSupportedTimerDuration": { + "$ref": "AssistantApiDuration", + "description": "Maximum duration of timers that can be created on the client." + }, + "maxSupportedTimers": { + "description": "Maximum number of timers that can be created on the client.", + "format": "int32", + "type": "integer" + }, + "preferredStopwatchProvider": { + "$ref": "AssistantApiCoreTypesProvider", + "description": "The preferred provider to use for stopwatch related functionality." + }, + "restrictAlarmsToNext24h": { + "description": "Whether the client restricts alarms to ring within the next 24 hours.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiCommunicationUiCapabilities": { + "description": "UI capabilities for the surfaces rendering Comms features. See go/rohan-comms-fluid-actions-customization.", + "id": "AssistantApiCommunicationUiCapabilities", + "properties": { + "fluidActionsUiType": { + "enum": [ + "DEFAULT", + "SIMPLIFIED" + ], + "enumDescriptions": [ + "", + "Fluid actions output optimized for small devices, with no on-device management of conversation state available." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiContactLookupCapabilities": { + "id": "AssistantApiContactLookupCapabilities", + "properties": { + "fallbackToTetheredDevice": { + "description": "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.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesAndroidAppInfo": { + "description": "The android app information of the provider. Like, Spotify. Next ID: 15 LINT.IfChange", + "id": "AssistantApiCoreTypesAndroidAppInfo", + "properties": { + "accountType": { + "type": "string" + }, + "androidIntent": { + "description": "Intent associated with the app. We include intents here as different versions of the same app may support different intents. In those cases, the package_name is not enough to identify the app and we should use the combination of package_name and android_intent. This field might contain sensitive data, if represents ClientOp with encapsulated PII such as user query.", + "type": "string" + }, + "appUniqueId": { + "description": "Store the app unique id endpoint. This will be passed over to app to fulfill the action.", + "type": "string" + }, + "appVersion": { + "description": "The android app version. Deprecated because https://developer.android.com/reference/android/content/pm/PackageInfo.html#getLongVersionCode", + "format": "int32", + "type": "integer" + }, + "dataMimetype": { + "description": "data_mimetype and account_type are the what AGSA uses to filter which contacts support this Android app in ContactProvider.", + "type": "string" + }, + "isBroadcastIntent": { + "description": "If true, client should broadcast the intent instead of open the intent.", + "type": "boolean" + }, + "isDefault": { + "description": "App is the default app for it's core functionality. For example, it will be true for Android messages if it is the default app to send and receive SMS on the phone.", + "type": "boolean" + }, + "localizedAppName": { + "description": "The localized app name.", + "type": "string" + }, + "longVersionCode": { + "description": "The long android app version.", + "format": "int64", + "type": "string" + }, + "mimetype": { + "description": "Store mimetype of this endpoint. We will use this as the differentiator for Assistant to know whether to use the RawContact for messaging, call or video call. For example, send message mimetype for whatsapp: \"vnd.android.cursor.item/vnd.com.whatsapp.profile\" voice call mimetype for whatsapp: \"vnd.android.cursor.item/vnd.com.whatsapp.voip.call\"", + "type": "string" + }, + "packageName": { + "description": "The android app package of the provider, like \"com.spotify.music\".", + "type": "string" + }, + "providerType": { + "description": "The OemProviderType is specific for OEM system Android apps. For example, in Auto Embedded, the OEM will have a system Radio/Media app. The system app’s capabilities/core functionalities are captured here. For physical media sources, the OEM may decide to implement one media app (thus, one package name) that handles multiple physical media sources. For these cases, each physical media source will be sent as different providers even though the package name is the same.", + "enum": [ + "UNKNOWN_OEM_PROVIDER_TYPE", + "RADIO_PROVIDER_TYPE", + "SXM_RADIO_PROVIDER_TYPE" + ], + "enumDescriptions": [ + "", + "Refers to an app that handles AM/FM Radio via a physical radio tuner in the device. See go/radio-assistant-for-auto.", + "Refers to an app that handles Satellite (SiriusXM) Radio via a physical Satellite tuner in the device. See go/sxm-on-gas." + ], + "type": "string" + }, + "shortcutId": { + "description": "Id of the app's Android shortcut to be launched by Assistant. The client is expected to use the Android LauncherApps API to execute this shortcut which in turn will open the app. For example, Whatsapp may create an Android shortcut for a frequently messaged contact with an id \"contact_123\". This field will contain that id and the client can execute it to open up the chat with that particular contact. If this field is set, the package_name field must also be set since both will be used by the LauncherApps API for execution. If this field is set, the intent related fields will be ignored and not used as a fallback. Design: go/shortcut-id-in-provider-open-clientop This field should only be set for devices with Android API level \u003e= 25 (since that is the version from which the LauncherApps startShortcut API is available)", + "type": "string" + }, + "versionName": { + "description": "The android app version name, like \"4.1.091.05.40d\", \"11.2.7.21.alpha\". Android Docs: https://developer.android.com/reference/android/content/pm/PackageInfo#versionName", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesAndroidAppInfoDelta": { + "description": "The change of AndroidAppInfo, e.g. app installation or deletion for incremental delta app info upload.", + "id": "AssistantApiCoreTypesAndroidAppInfoDelta", + "properties": { + "androidAppInfo": { + "$ref": "AssistantApiCoreTypesAndroidAppInfo", + "description": "The android app information of the provider. Like, Spotify." + }, + "lastUpdateTimestamp": { + "description": "The client-side timestamp in millis when the app is last updated, installed or deleted.", + "format": "google-datetime", + "type": "string" + }, + "updateType": { + "description": "App is installed or deleted.", + "enum": [ + "UNKNOWN_TYPE", + "IS_INSTALLED", + "IS_DELETED" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesCalendarEvent": { + "description": "This proto contains the information of a calendar event, including title, start time, end time, etc. IMPORTANT: The definition of CalendarEvent proto is being moved to //assistant/api/core_types/governed/calendar_event_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new one instead. LINT.IfChange(CalendarEvent) NEXT_ID: 26", + "id": "AssistantApiCoreTypesCalendarEvent", + "properties": { + "attendees": { + "description": "Attendees invited to the event, usually includes also the organizer.", + "items": { + "$ref": "AssistantApiCoreTypesCalendarEventAttendee" + }, + "type": "array" + }, + "backgroundColor": { + "description": "The background color of the event, in RGB format.", + "format": "int32", + "type": "integer" + }, + "calendarId": { + "description": "Optional calendar containing the event.", + "type": "string" + }, + "creator": { + "$ref": "AssistantApiCoreTypesCalendarEventAttendee", + "description": "The person who created this event." + }, + "description": { + "description": "Optional description of the event (plain text).", + "type": "string" + }, + "end": { + "$ref": "AssistantApiDateTime", + "description": "The end time of the event. Start and end time must either both be date or both be datetime. End is exclusive, ie. the first day / first second when the event is over." + }, + "eventId": { + "description": "Optional event id provided by assistant server. Needs to be unique, at least on a per-user and calendar level, ideally globally unique. If none is given, the server will assign an id.", + "type": "string" + }, + "flairName": { + "description": "The flair name, calculated according to the event title (go/as-cal-flair). With the flair name, background images can be got from gstatic (go/scs): https://ssl.gstatic.com/tmly/f8944938hffheth4ew890ht4i8/flairs/", + "type": "string" + }, + "foregroundColor": { + "description": "The foreground color of the event, in RGB format.", + "format": "int32", + "type": "integer" + }, + "guestsCanInviteOthers": { + "description": "Whether the guests can invite other guests.", + "type": "boolean" + }, + "guestsCanModify": { + "description": "Whether the guests can modify the event.", + "type": "boolean" + }, + "guestsCanSeeGuests": { + "description": "Whether the guests of the event can be seen. If false, the user is reported as the only attendee to the event, even though there may be more attendees.", + "type": "boolean" + }, + "habitId": { + "description": "Optional id of the Habit (Calendar Goal) this event is linked to", + "type": "string" + }, + "habitStatus": { + "description": "Optional status for this habit event instance.", + "enum": [ + "UNKNOWN_STATUS", + "ACTIVE", + "DEFERRAL_REQUESTED", + "COMPLETE", + "UNDEFERRABLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "htmlLink": { + "description": "Absolute link to this event in the Calendar web UI.", + "type": "string" + }, + "location": { + "description": "Optional location of the event (plain text).", + "type": "string" + }, + "meetingContacts": { + "items": { + "$ref": "AssistantApiCoreTypesCalendarEventMeetingContact" + }, + "type": "array" + }, + "organizer": { + "$ref": "AssistantApiCoreTypesCalendarEventAttendee", + "description": "The organizer of this event." + }, + "otherAttendeesExcluded": { + "description": "Whether not all attendees are included in the attendee list. This is set when the attendees list has been truncated (e.g., when the number of attendees is beyond the maxAttendees limitation).", + "type": "boolean" + }, + "participationResponse": { + "description": "The user's response (the owner of this copy of the event) to this event.", + "enum": [ + "RESPONSE_STATUS_UNSPECIFIED", + "NEEDS_ACTION", + "DECLINED", + "TENTATIVE", + "ACCEPTED" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "recurringEventId": { + "description": "If this is an instance of a recurring event, recurring_event_id identifies the recurring series as a whole.", + "type": "string" + }, + "rooms": { + "description": "Meeting rooms associated to this event.", + "items": { + "$ref": "AssistantApiCoreTypesCalendarEventRoom" + }, + "type": "array" + }, + "start": { + "$ref": "AssistantApiDateTime", + "description": "The start time of the event. This event is an all-day event if start has no time_of_day." + }, + "summary": { + "description": "The title of the event.", + "type": "string" + }, + "visibility": { + "description": "Optional visibility of the event.", + "enum": [ + "DEFAULT", + "PUBLIC", + "PRIVATE", + "CONFIDENTIAL", + "SECRET", + "SHADOW", + "UNKNOWN" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "When we receive a value outside of this enum it will be replaced with this UNKNOWN field. When trying to send UNKNOWN it will be silently converted to DEFAULT." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesCalendarEventAttendee": { + "description": "Next id: 8", + "id": "AssistantApiCoreTypesCalendarEventAttendee", + "properties": { + "displayName": { + "description": "Display name, present only if available.", + "type": "string" + }, + "email": { + "description": "Email address of the attendee (calendar), for regular events. For +Events, this field is not populated, instead \"id\" is used.", + "type": "string" + }, + "givenName": { + "description": "Given (first) name, present only if available. This is used for generating meeting titles as given name is preferred over display (full) name (ie: \"Jeff : Sundar\" is better than \"Jeff Dean : Sundar Pichai\").", + "type": "string" + }, + "id": { + "description": "Profile ID of the principal, for +Events. For regular events, this field is not populated, instead \"email\" is used.", + "type": "string" + }, + "organizer": { + "description": "Is this the organizer?", + "type": "boolean" + }, + "responseStatus": { + "description": "Attendees response status.", + "enum": [ + "RESPONSE_STATUS_UNSPECIFIED", + "NEEDS_ACTION", + "DECLINED", + "TENTATIVE", + "ACCEPTED" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "self": { + "description": "Is this the owner of this copy of the event?", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesCalendarEventMeetingContact": { + "description": "Next id: 10", + "id": "AssistantApiCoreTypesCalendarEventMeetingContact", + "properties": { + "conferenceId": { + "description": "ID that corresponds to in ConferenceData.conference_id in calendar.common.ConferenceData proto. For Meet, this is the identifier used to join a meeting via URL.", + "type": "string" + }, + "dialInNumberClasses": { + "items": { + "enum": [ + "NUMBER_CLASS_UNSPECIFIED", + "LOW_COST", + "HIGH_COST", + "LEGACY" + ], + "enumDescriptions": [ + "No number class has been specified.", + "The number has a low cost to receive calls on.", + "The number has a high cost to receive calls on.", + "Class for legacy numbers." + ], + "type": "string" + }, + "type": "array" + }, + "phoneNumberUri": { + "description": "Default meeting phone number, for example: \"tel:+1-475-777-1840\"", + "type": "string" + }, + "pinNumber": { + "description": "A PIN that the participant will need to input after dialing in the conference.", + "type": "string" + }, + "provider": { + "$ref": "AssistantApiCoreTypesProvider", + "description": "Provider info for the meeting." + }, + "regionCode": { + "description": "The region code for the default meeting phone number", + "type": "string" + }, + "source": { + "enum": [ + "SOURCE_UNSPECIFIED", + "STRUCTURED_DATA", + "UNSTRUCTURED_DATA" + ], + "enumDescriptions": [ + "The source is unknown.", + "The conference information was retrieved from structured fields.", + "The conference information was parsed and extracted from unstructured fields (e.g. event description)." + ], + "type": "string" + }, + "universalPinNumber": { + "description": "The universal meeting PIN number for phone numbers in all available countries", + "type": "string" + }, + "url": { + "description": "URL that can be used to join the meeting.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesCalendarEventRoom": { + "description": "A room that is available for a potential meeting or has been booked for a scheduled meeting. Next id: 4", + "id": "AssistantApiCoreTypesCalendarEventRoom", + "properties": { + "email": { + "description": "Room email that identifies the room and is used to book it.", + "type": "string" + }, + "locationDetails": { + "$ref": "AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails", + "description": "Additional room details. Read-only, populated on request." + }, + "name": { + "description": "Room name (ex: \"MTV-PR55-5-A-Shadow 5K0 (13) GVC (No external guests)\").", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails": { + "description": "Room location details. Read-only, populated on request. Next id: 8", + "id": "AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails", + "properties": { + "building": { + "description": "Building where the room is (ex: \"PR55\").", + "type": "string" + }, + "city": { + "description": "City where the room is (ex: \"MTV\").", + "type": "string" + }, + "floor": { + "description": "Floor where the room is (ex: \"5\").", + "type": "string" + }, + "latitude": { + "description": "The latitude in degrees.", + "format": "double", + "type": "number" + }, + "longitude": { + "description": "The longitude in degrees.", + "format": "double", + "type": "number" + }, + "section": { + "description": "Section in the floor (ex: \"A\").", + "type": "string" + }, + "simpleName": { + "description": "Room name (ex: \"Shadow 5K0\").", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesCalendarEventWrapper": { + "description": "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 IMPORTANT: The definition of CalendarEventWrapper proto is being moved to //assistant/api/core_types/governed/calendar_event_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new one instead.", + "id": "AssistantApiCoreTypesCalendarEventWrapper", + "properties": {}, + "type": "object" + }, + "AssistantApiCoreTypesCastAppInfo": { + "description": "The cast app information of the provider.", + "id": "AssistantApiCoreTypesCastAppInfo", + "properties": { + "castAppId": { + "description": "The cast app id. |cast_app_id| is the ID of the cast app used on the current device and |content_app_id| is the ID of the app that provides the actual content. For example, in a group playback, on a follower device, the |cast_app_id| is the follower cast app ID and the |content_app_id| is the leader cast app ID.", + "type": "string" + }, + "contentAppId": { + "description": "The id of the cast app that provides the content in a group. The field will always be filled. In the case of a group playback and the current device is a follower, the |cast_app_id| has the ID of the follower app, and |content_app_id| has ID of the actual content app. In all other cases, |content_app_id| and |cast_app_id| will be the same.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesChromeOsAppInfo": { + "description": "The ChromeOS app information of the provider. Next ID: 3", + "id": "AssistantApiCoreTypesChromeOsAppInfo", + "properties": { + "localizedAppName": { + "description": "The localized app name.", + "type": "string" + }, + "packageName": { + "description": "Unique package name that identifies a ChromeOS app of the provider.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesCloudProviderInfo": { + "description": "The third party provider information.", + "id": "AssistantApiCoreTypesCloudProviderInfo", + "properties": { + "agentStyle": { + "$ref": "AssistantApiCoreTypesCloudProviderInfoAgentStyle" + }, + "directoryUrl": { + "description": "URL to a directory page about the third party agent in Assistant HQ. This is a universal (https) URL that may be handled natively by clients to show HQ or launch to the HQ directory web page.", + "type": "string" + }, + "logoUrl": { + "description": "The logo url for the third party provider.", + "type": "string" + }, + "name": { + "description": "The user visible name of the cloud provider, which may be used for example in the chat header during a conversation with the third party.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesCloudProviderInfoAgentStyle": { + "description": "The style customizations for the 3p agent.", + "id": "AssistantApiCoreTypesCloudProviderInfoAgentStyle", + "properties": { + "backgroundColor": { + "$ref": "AssistantApiCoreTypesGovernedColor", + "description": "The background color of the agent. Used if no background image is specified for the given display orientation, or if the provided background image does not fit." + }, + "headerTheme": { + "enum": [ + "DEFAULT", + "DARK", + "LIGHT" + ], + "enumDescriptions": [ + "The client's default theme.", + "The theme used when the card has a background image. See go/aog-cards-header-theme-dark for details on applying this theme.", + "The theme used when the card has a background color (and no background image). See go/aog-cards-header-theme-light for details on applying this theme." + ], + "type": "string" + }, + "landscapeBackgroundImageUrl": { + "description": "URL for the background image of the agent on landscape display.", + "type": "string" + }, + "logoUrl": { + "description": "URL for the image containing the 3p logo. This can include logomark and logotype, or logotype only. If present, this can be used in place of the square logo contained in the top level logo_url field in CloudProviderInfo. See go/cards-logo-customization for details on applying this logo.", + "type": "string" + }, + "maskColor": { + "$ref": "AssistantApiCoreTypesGovernedColor", + "description": "The color of the mask to apply to the background. See go/aog-cards-background-mask for details on applying this mask." + }, + "portraitBackgroundImageUrl": { + "description": "URL for the background image of the agent on portrait display.", + "type": "string" + }, + "primaryColor": { + "$ref": "AssistantApiCoreTypesGovernedColor", + "description": "The primary color of the agent. Used by the client to style the header and suggestion chips." + } + }, + "type": "object" + }, + "AssistantApiCoreTypesDeviceConfig": { + "description": "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", + "id": "AssistantApiCoreTypesDeviceConfig", + "properties": { + "agentId": { + "description": "Pantheon Project ID that uniquely identifies the consumer project ID. Required", + "type": "string" + }, + "deviceId": { + "description": "Unique identifier for the device. Example: DBCDW098234. Required", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesDeviceId": { + "description": "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 `DeviceId`s, 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/device_id_util.cc;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/DeviceIdHelper.java;l=9;rcl=390378522 See http://go/deviceid-equality for more details. Next ID: 14", + "id": "AssistantApiCoreTypesDeviceId", + "properties": { + "agsaClientInstanceId": { + "description": "The client_instance_id on devices with GSA. See 'client_instance_field' in go/androidids.", + "type": "string" + }, + "alloDeviceId": { + "description": "Allo Id. Corresponds to the GBotRequest.Sender.sender. NOTE(dychen): This may change to standard android/ios physical device ids in order to enable shared data (e.g. installed app on physical device shared between Allo and Opa apps on Nexus).", + "type": "string" + }, + "canonicalDeviceId": { + "description": "A unique device ID for Assistant devices as proposed by go/ocelot-team to solve the device id fragmentation problem. The value of this id is the HomeGraph id of the device. See go/ocelot-track-0-registry-design. New surfaces should use the canonical_device_id instead of using other ids, and the registration should utilize the DeviceDataLayer (go/ddl-v0). Please contact the assistant-state-management@ team for guidance. Note: We didn't reuse |home_graph_device_id| because in Assistant code base |home_graph_device_id| is common to associate it with 3P devices. See go/project-yellowstone for more context.", + "type": "string" + }, + "castDeviceId": { + "description": "If set, indicates that the device is a cast device, and contains the UUID of the cast device. Corresponds to the device_id field of the CastDevice proto.", + "type": "string" + }, + "clientInstanceId": { + "description": "DUSI (go/dusi) is used as the identifier here. This identifier is unique to the user and device. This will help identify which device or application the user's request originated from. This is not to be confused with the client_instance_id that android devices provide. This is currently used by surfaces that use the assistant-legacy-nexus and assistant-legacy-clockwork pipelines. DUSI is created and set in S3. This field is only filled for GAIA requests.", + "type": "string" + }, + "connectedDockId": { + "description": "A device ID produced by a connected dock, which is registered in HomeGraph.", + "type": "string" + }, + "deviceConfig": { + "$ref": "AssistantApiCoreTypesDeviceConfig", + "description": "The unique DeviceConfig to the specific third party device. It is also used by Android Auto Embedded first party device. See go/opa-ids." + }, + "deviceType": { + "description": "The device's surface type. This is the string version of surface_type. The server should use the SurfaceType value derived from this string. If the device_type isn't supported within the SurfaceType enum, it will be set as UNKNOWN. Developers should use the enum in ServerParams instead of this string.", + "type": "string" + }, + "homeGraphDeviceId": { + "description": "The unique device ID for HomeGraph devices. This is the HomeGraph ID, created when the device is registered into HomeGraph. It is immutable for the same device unless it is completely deleted and recreated. See go/home-graph for details.", + "type": "string" + }, + "libassistantDeviceId": { + "description": "The unique ID for libassistant based devices. See go/libassistant-id for details.", + "type": "string" + }, + "multiHotwordArbitrationDeviceId": { + "description": "If set, indicates that the device is participating the multi-hotword arbitration and the id is an UUID to distinguish it from other devices. It should also be consistent between requests from a single device within a session (or short duration).", + "type": "string" + }, + "opaIosDeviceId": { + "description": "The unique device ID for the Assistant App on iOS. See go/opa-ios-design for details.", + "type": "string" + }, + "quartzDeviceId": { + "description": "The unique ID of a Quartz device. See go/quartz-design-doc for more details. Quartz ID is a hash of (android_id + gaia).", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesDeviceUserIdentity": { + "description": "IMPORTANT: The definition of DeviceUserIdentity is being moved to //assistant/api/core_types/governed/device_user_identity.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new DeviceUserIdentity instead of this one. // LINT.IfChange", + "id": "AssistantApiCoreTypesDeviceUserIdentity", + "properties": { + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "The identifier of the device." + }, + "gaiaId": { + "description": "The identifier of the user.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesGovernedColor": { + "description": "Represents a color in the RGBA color space. This message mirrors google.type.Color.", + "id": "AssistantApiCoreTypesGovernedColor", + "properties": { + "alpha": { + "description": "The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: pixel color = alpha * (this color) + (1.0 - alpha) * (background color) This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. If omitted, this color object is to be rendered as a solid color (as if the alpha value had been explicitly given with a value of 1.0).", + "format": "float", + "type": "number" + }, + "blue": { + "description": "The amount of blue in the color as a value in the interval [0, 1].", + "format": "float", + "type": "number" + }, + "green": { + "description": "The amount of green in the color as a value in the interval [0, 1].", + "format": "float", + "type": "number" + }, + "red": { + "description": "The amount of red in the color as a value in the interval [0, 1].", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesGovernedRingtoneTaskMetadata": { + "description": "Task metadata information describing the ringtone. Next id: 11", + "id": "AssistantApiCoreTypesGovernedRingtoneTaskMetadata", + "properties": { + "category": { + "description": "The category related with the ringtone. It's used to generate ringtone related with the category if the entity_mid is not be populated. E.g. for instrument, the ringtone may be piano sound.", + "enum": [ + "UNKNOWN_CATEGORY", + "ANIMAL", + "CHARACTER", + "EMOTION", + "INSTRUMENT", + "MEDIA", + "SPORTS_EQUIPMENT", + "VEHICLE", + "ON_DEVICE", + "FUNTIME" + ], + "enumDescriptions": [ + "", + "", + "Character alarm is a kind of media alarm. CHARACTER category should be removed. Use MEDIA for character alarms", + "", + "", + "", + "", + "", + "An alarm sound that the user can select to play when an alarm is firing, the alarm sound resource is located on device in libassistant.", + "An alarm sound that is based upon the label that the timer or alarm is invoked with (ie pizza timer invokes an Italian accordian theme). The assets are streamed from web storage." + ], + "type": "string" + }, + "characterAlarmMetadata": { + "$ref": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata" + }, + "characterTag": { + "type": "string" + }, + "entityMid": { + "description": "The freebase mid of the entity related to the ringtone. It will be used to generate the ringtone for the alarm or timer (with support for i18n). For instance, for the \"cat\" mid, the related ringtone will be a cat sound in some language, and for the \"Beyonce\" mid, the ringtone will be, e.g., a playlist of Beyonce's best hits.", + "type": "string" + }, + "funtimeMetadata": { + "$ref": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata" + }, + "genMlAlarmMetadata": { + "$ref": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata" + }, + "gentleWakeInfo": { + "$ref": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo", + "description": "Gentle wake information for this alarm." + }, + "onDeviceAlarmMetadata": { + "$ref": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata" + }, + "onDeviceAlarmSound": { + "description": "Will be deprecated. Use OnDeviceAlarmMetadata.", + "enum": [ + "DEFAULT", + "MELLOW", + "MODERN_TIMES", + "BEAUTIFUL_MIND", + "LITTLE_SUNSHINE", + "TOUCH_OF_ZEN", + "ABOUT_TIME", + "RANDOM", + "BOROBUDUR", + "PEBBLES", + "BRIGHT_MORNING", + "ACROSS_THE_VALLEY", + "MORNING_SONG", + "KYOTO", + "AWAKEN", + "CUCKOO", + "DIGITAL_BLAST", + "ACOUSTIC_SUNLIGHT", + "SUNRISE_BOSSA", + "CALM_GLOW", + "ANTIQUE_CLOCK", + "JUST_BIRDS", + "JUNGLE_AMBIENCE", + "QUAINT_VILLAGE", + "BUBBLY_BOSSA", + "ACOUSTIC_JAM", + "EUPHORIC" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "routineAlarmMetadata": { + "$ref": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata": { + "id": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata", + "properties": { + "agentIds": { + "description": "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "characterTags": { + "description": "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "iconUrls": { + "description": "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.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata": { + "description": "Used to make timers and alarms more delightful. See go/funtime-engdesign for more details.", + "id": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata", + "properties": { + "agentIds": { + "description": "For FunTime alarms and timers, the media resources are provided through AOG apps during their ringtone. Multiple AoG agents can satisfy a label. So a random agent will be chosen from those that are supplied. See go/funtime-engdesign.", + "items": { + "type": "string" + }, + "type": "array" + }, + "animationBlob": { + "description": "These bytes may represent the blob of the Rive animation that we pass to the Opal App. We will deprecate this field if we figure out a solution to load the animation from the web.", + "format": "byte", + "type": "string" + }, + "animationUrl": { + "description": "Url for Rive animation that is brought up on ring. Rive is a lightweight animation library that is compatible with Flutter on Opal. See https://rive.app/.", + "type": "string" + }, + "timerHeroUrl": { + "description": "The url used to load the image that is at the center of the timer during timer countdown visuals.", + "type": "string" + }, + "ttsServiceRequestBytes": { + "description": "This is used to call S3 to realize the TTS. Is in the form of bytes because of a circular dependency issue in libassistant protos. It is a serialized proto of type speech.s3.TtsServiceRequest.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata": { + "description": "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).", + "id": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata", + "properties": { + "isEnabled": { + "type": "boolean" + }, + "ringtoneLabel": { + "description": "Label for the generated ringtone.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo": { + "description": "Gentle wake actions like slowly brightening the room/device screen leading up to the alarm firing (go/cube-gentle-wake-up).", + "id": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo", + "properties": { + "effectDurationMs": { + "description": "Specifies how long the effect lasts. Allowed for effect to last after the alarm has started ringing. If unset or negative or 0, effect is assumed to last until alarm trigger time.", + "format": "int64", + "type": "string" + }, + "isEnabled": { + "description": "Indicates if gentle wake action is to be performed before this alarm fires. This is enabled only if the device supports sunrise alarm capability. http://cs/symbol:assistant.api.SunriseFeaturesSupport", + "type": "boolean" + }, + "startTimedeltaMs": { + "description": "Specifies how long before the alarm fire time, the wakeup effect will start. ALWAYS POSITIVE.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata": { + "description": "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.", + "id": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata", + "properties": { + "onDeviceAlarmSound": { + "description": "Opal/UI layer will set this bit based on the user selection.", + "enum": [ + "DEFAULT", + "MELLOW", + "MODERN_TIMES", + "BEAUTIFUL_MIND", + "LITTLE_SUNSHINE", + "TOUCH_OF_ZEN", + "ABOUT_TIME", + "RANDOM", + "BOROBUDUR", + "PEBBLES", + "BRIGHT_MORNING", + "ACROSS_THE_VALLEY", + "MORNING_SONG", + "KYOTO", + "AWAKEN", + "CUCKOO", + "DIGITAL_BLAST", + "ACOUSTIC_SUNLIGHT", + "SUNRISE_BOSSA", + "CALM_GLOW", + "ANTIQUE_CLOCK", + "JUST_BIRDS", + "JUNGLE_AMBIENCE", + "QUAINT_VILLAGE", + "BUBBLY_BOSSA", + "ACOUSTIC_JAM", + "EUPHORIC" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "onDeviceAlarmSoundLabel": { + "description": "A string label to identify the alarm sound name. Opal/UI layer will set this as per product definition. This will be used to display the name of the selected ringtone.", + "type": "string" + }, + "ttsServiceRequestBytes": { + "description": "This is used to call S3 to realize the TTS. Is in the form of bytes because of a circular dependency issue in libassistant protos. It is a serialized proto of type speech.s3.TtsServiceRequest. This request will contain an ssml with the url to the ringtone files hosted on gstatic.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata": { + "id": "AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata", + "properties": { + "routineId": { + "description": "The unique id for each routine. When the alrm is dismissed, it will trigger the routine of the routine alarm's creator if feasible.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesHomeAppInfo": { + "description": "The Home app information of the provider. Next ID: 3", + "id": "AssistantApiCoreTypesHomeAppInfo", + "properties": { + "localizedAppName": { + "description": "The localized app name.", + "type": "string" + }, + "packageName": { + "description": "Unique package name that identifies a Home app of the provider.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesImage": { + "description": "An image represents the data about an image or a photo. IMPORTANT: The definition of the Image message is being moved to //assistant/api/core_types/governed/image_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new Image message instead of this one. LINT.IfChange NextId: 13", + "id": "AssistantApiCoreTypesImage", + "properties": { + "accessibilityText": { + "description": "A text description of the image to be used for accessibility, e.g. screen readers.", + "type": "string" + }, + "appIconIdentifier": { + "description": "App identifier. This field is specific to mobile surfaces and stands for app package name for Android surface, and app bundle identifier for iOS. In case identifier is specified but invalid, some default icon will be used, e.g. PackageManager.getDefaultActivityIcon() for Android. If you want to show image for AGSA versions which don't support this field, you can specify source_url as backup.", + "type": "string" + }, + "badgeImage": { + "$ref": "AssistantApiCoreTypesImage", + "description": "This is the image that is displayed as the badge on the main image." + }, + "content": { + "description": "Content of the image in bytes.", + "format": "byte", + "type": "string" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "imageSource": { + "description": "Indicate the data source where the image is fetched.", + "enum": [ + "UNKNOWN", + "PLACEHOLDER", + "VISUAL_DICT", + "LAVD", + "VISUAL_DICT_DEFAULT_LOCALE" + ], + "enumDescriptions": [ + "Unknown image source.", + "Indicates this image is a default placeholder because no valid image is found.", + "Indicates the image is fetched from Visual Dictionary.", + "Indicates the image is fetched from LAVD (visual-dictionary-license-aware-requirements).", + "Indicates the image is fetched from Visual Dictionary of default locale \"en\"." + ], + "type": "string" + }, + "jsonContent": { + "description": "Content of image in form of JSON representation.", + "type": "string" + }, + "letterDrawableText": { + "description": "Text used to generate a letter drawable (a letter icon with color). It will be the default icon if the source_url is empty or cannot be rendered.", + "type": "string" + }, + "providerUrl": { + "description": "Url of the image provider, which is the website containing the image. For example, https://www.agentx.com.", + "type": "string" + }, + "sourceUrl": { + "description": "The source url of the image. For example, https://www.agentx.com/logo.png", + "type": "string" + }, + "sourceUrlType": { + "description": "Type of the source url.", + "enum": [ + "DEFAULT_URL_TYPE", + "LOTTIE", + "DUO_CLIENT", + "CONTACT_ID" + ], + "enumDescriptions": [ + "", + "Json url used to drive animation on surfaces using Airbnb lottie library.", + "Duo url specifying the Duo resource id to be used ('duo://'). WARNING: This may not be supported on all clients. At the moment, only Dragonglass surfaces are supporting this.", + "Contact ID specifying contact resource to be used." + ], + "type": "string" + }, + "width": { + "description": "The width and height of the image in pixels.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesInternalProviderInfo": { + "description": "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.", + "id": "AssistantApiCoreTypesInternalProviderInfo", + "properties": { + "type": { + "description": "Specifying which type of internal provider.", + "enum": [ + "UNKNOWN_INTERNAL_PROVIDER_TYPE", + "AUDIO_PLAYER", + "AUDIO_PLAYER_V2", + "MEDIA_PLAYER", + "MEDIA_PLAYER_IOS", + "AUDIO_ONLY_PLAYER", + "NARRATED_WEB_MEDIA_PLAYER", + "LIBASSISTANT_MEDIA_PLAYER", + "LENS_PLAYER", + "NEWS_PLAYER" + ], + "enumDescriptions": [ + "", + "Deprecated, because supported AGSA implementation had a bug (b/72229328). Use AUDIO_PLAYER_V2 instead.", + "Internal provider for playing audio.", + "Internal provider for playing audio and video for AGSA.", + "iOS MEDIA_PLAYER.", + "Internal provider for playing audio only, different from MEDIA_PLAYER. It is used by KaiOS, for news vertical. It is different from AUDIO_PLAYER_V2 which is for AGSA, and not supported by news vertical.", + "Internal provider for playing audio narration of web pages.", + "Internal provider for playing audio for libassistant. Historically each enum represents a different media player implementation. This one is meant for the playing media on the libassistant enabled surfaces.", + "Internal provider for playing audio using lens audio player, for screenshot based readout.", + "Internal provider for news vertical on AssistantMediaPlayer in AGSA." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesIosAppInfo": { + "description": "The iOS app information of the provider. Next ID: 4", + "id": "AssistantApiCoreTypesIosAppInfo", + "properties": { + "bundleIdentifier": { + "description": "Bundle identifier that identifies an iOS app of the provider.", + "type": "string" + }, + "localizedAppName": { + "description": "The localized app name.", + "type": "string" + }, + "openAppUrl": { + "description": "A URL to open the provider's app.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesKaiOsAppInfo": { + "description": "The KaiOS app information of the provider. Next ID: 4", + "id": "AssistantApiCoreTypesKaiOsAppInfo", + "properties": { + "localizedAppName": { + "description": "The localized app name.", + "type": "string" + }, + "openAppUrl": { + "description": "A URL to open the provider's app.", + "type": "string" + }, + "packageName": { + "description": "Unique package name that identifies a KaiOS app of the provider.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesLocationCoordinates": { + "description": "Geographic coordinate information for location.", + "id": "AssistantApiCoreTypesLocationCoordinates", + "properties": { + "accuracyMeters": { + "description": "The accuracy of the coordinates in meters.", + "format": "double", + "type": "number" + }, + "latDegrees": { + "description": "Latitude degrees.", + "format": "double", + "type": "number" + }, + "lngDegrees": { + "description": "Longitude degrees.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesMessageNotification": { + "description": "This proto captures the contents of a messaging app notification that is typically part of a conversation thread. Next Id: 20", + "id": "AssistantApiCoreTypesMessageNotification", + "properties": { + "appName": { + "description": "App name of the message notification, e.g. Hangouts.", + "type": "string" + }, + "bundleId": { + "description": "The key used to group this notification into a cluster.", + "type": "string" + }, + "dataUri": { + "description": "Uri for the attachment (image, audio, video etc.).", + "type": "string" + }, + "groupName": { + "description": "Name of the group associated with the message notification. This field is set iff this is a group message.", + "type": "string" + }, + "groupingKey": { + "description": "The group key of a proactive notification. Details in assistant.api.client_op.NotificationArgs.grouping_key.", + "type": "string" + }, + "index": { + "description": "Index of the message notification.", + "format": "int32", + "type": "integer" + }, + "markAsReadActionAvailable": { + "description": "Boolean indicating if the mark_as_read action is available for this message.", + "type": "boolean" + }, + "messageLength": { + "description": "Length of the message/notification content in characters. Note: We can't send the full content because of privacy restriction, preventing sending client content to our backends. Concatenated message_length of all notification_entries.", + "format": "int32", + "type": "integer" + }, + "messageRecipientType": { + "enum": [ + "UNKNOWN", + "INDIVIDUAL", + "GROUP" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "mimeType": { + "description": "Mime type of the data_uri. e.g. 'audio/wav', 'video/mp4', 'image/png'.", + "type": "string" + }, + "notificationEntries": { + "items": { + "$ref": "AssistantApiCoreTypesMessageNotificationNotificationEntry" + }, + "type": "array" + }, + "notificationIconKey": { + "description": "On-device cache key for notification icon.", + "type": "string" + }, + "notificationKey": { + "description": "String key of the notification. It is the key from original StatusBarNotification received from Android OS. It is used to identify the original notification to send a reply.", + "type": "string" + }, + "opaqueToken": { + "description": "The opaque_token of a proactive notification. Details in assistant.api.client_op.NotificationArgs.opaque_token.", + "format": "byte", + "type": "string" + }, + "packageName": { + "description": "App pkg of the message notification, e.g. \"com.google.android.talk\".", + "type": "string" + }, + "postTime": { + "description": "Timestamp of the last notification's post time.", + "format": "int64", + "type": "string" + }, + "replyActionAvailable": { + "description": "Boolean indicating if the reply action is available for this message.", + "type": "boolean" + }, + "sender": { + "$ref": "AssistantApiCoreTypesMessageNotificationPerson" + }, + "senderName": { + "description": "Sender's name of the message notification, e.g. Elsa. Last sender name in case of a group conversation.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesMessageNotificationNotificationEntry": { + "description": "Structure of each notification in the MessageNotification Bundle. Attribute sender_name could be different in case of group messages. Next Id: 6", + "id": "AssistantApiCoreTypesMessageNotificationNotificationEntry", + "properties": { + "dataUri": { + "description": "Uri for the attachment (image, audio, video etc.).", + "type": "string" + }, + "messageBody": { + "description": "Content of the message body in the notification.", + "type": "string" + }, + "mimeType": { + "description": "Mime type of the data_uri. e.g. 'audio/wav', 'video/mp4', 'image/png'.", + "type": "string" + }, + "postTime": { + "description": "Timestamp of the notification's post time.", + "format": "google-datetime", + "type": "string" + }, + "sender": { + "$ref": "AssistantApiCoreTypesMessageNotificationPerson", + "description": "Sender of the message notification." + } + }, + "type": "object" + }, + "AssistantApiCoreTypesMessageNotificationPerson": { + "description": "Mirrors part of https://developer.android.com/reference/android/app/Person Next Id: 4", + "id": "AssistantApiCoreTypesMessageNotificationPerson", + "properties": { + "isImportant": { + "type": "boolean" + }, + "key": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesProvider": { + "description": "Provider. Like, Spotify or iHeartRadio. Next ID: 13", + "id": "AssistantApiCoreTypesProvider", + "properties": { + "androidAppInfo": { + "$ref": "AssistantApiCoreTypesAndroidAppInfo", + "description": "The android app information of the provider." + }, + "castAppInfo": { + "$ref": "AssistantApiCoreTypesCastAppInfo", + "description": "The cast app information of the provider." + }, + "chromeosAppInfo": { + "$ref": "AssistantApiCoreTypesChromeOsAppInfo", + "description": "The ChromeOS app information of the provider." + }, + "cloudProviderInfo": { + "$ref": "AssistantApiCoreTypesCloudProviderInfo", + "description": "The third party provider information." + }, + "fallbackUrl": { + "description": "A URL to fallback to if app can not be opened.", + "type": "string" + }, + "homeAppInfo": { + "$ref": "AssistantApiCoreTypesHomeAppInfo" + }, + "iconImageUrl": { + "description": "Public URL pointing to an icon image for the provider. e.g. https://lh3.googleusercontent.com/UrY7BAZ-XfXGpfkeWg0zCCeo-7ras4DCoRalC_WXXWTK9q5b0Iw7B0YQMsVxZaNB7DM", + "type": "string" + }, + "internalProviderInfo": { + "$ref": "AssistantApiCoreTypesInternalProviderInfo", + "description": "The internal assistant provider information." + }, + "iosAppInfo": { + "$ref": "AssistantApiCoreTypesIosAppInfo", + "description": "The iOS app information of the provider." + }, + "kaiosAppInfo": { + "$ref": "AssistantApiCoreTypesKaiOsAppInfo", + "description": "The KaiOS app information of the provider." + }, + "sipProviderInfo": { + "$ref": "AssistantApiCoreTypesSipProviderInfo", + "description": "The sip information of the provider." + }, + "webProviderInfo": { + "$ref": "AssistantApiCoreTypesWebProviderInfo", + "description": "The web provider information." + } + }, + "type": "object" + }, + "AssistantApiCoreTypesProviderDelta": { + "description": "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", + "id": "AssistantApiCoreTypesProviderDelta", + "properties": { + "androidAppInfoDelta": { + "$ref": "AssistantApiCoreTypesAndroidAppInfoDelta", + "description": "The android app information of the provider." + }, + "fallbackUrl": { + "description": "A URL to fallback to if app can not be opened.", + "type": "string" + }, + "iconImageUrl": { + "description": "Public URL pointing to an icon image for the provider. e.g. https://lh3.googleusercontent.com/UrY7BAZ-XfXGpfkeWg0zCCeo-7ras4DCoRalC_WXXWTK9q5b0Iw7B0YQMsVxZaNB7DM", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesSipProviderInfo": { + "description": "Session Initiation Protocol (SIP) information for providers that use SIP to initiate multimedia communication sessions, like Google Voice and Fi. https://en.wikipedia.org/wiki/Session_Initiation_Protocol", + "id": "AssistantApiCoreTypesSipProviderInfo", + "properties": { + "providerId": { + "description": "The providers id (MID) which is the primary identifier for a call provider within the Assistant. A MID, or machine identifier, is a unique identifier issued by Knowledge Graph for all entities contained in it's graph.", + "type": "string" + }, + "realm": { + "description": "Calling realm to be use for each call. i.e. For anonymous, this would be set to anonymous.chirp.google.com", + "type": "string" + }, + "useBirdsongTacl": { + "description": "If true, client should use the Birdsong TaCL API for this call. Uses the VoiceCallManager API by default. For more details: go/birdsong-migration-google-home", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesSurfaceIdentity": { + "description": "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: 5 IMPORTANT: The definitions of the SurfaceIdentity and SurfaceVersion protos are being moved to //assistant/api/core_types/governed/surface_identity.proto All existing references will be updated to point to the new location. If you are adding a reference, use the new SurfaceIdentity and SurfaceVersion protos instead of the protos defined here. LINT.IfChange", + "id": "AssistantApiCoreTypesSurfaceIdentity", + "properties": { + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "The identifier of the device." + }, + "surfaceType": { + "description": "The device's surface type. The types are defined at google3/assistant/api/core_types/surfaces.gcl. NOTE: This is the new field that is going to replace the `surface_type_string` field above. For more details please refer to go/ontologicalize-surface-type.", + "enum": [ + "UNKNOWN_TYPE", + "ACCL", + "AGSA", + "ANDROID", + "ANDROID_AUTO", + "ANDROID_LITE", + "ANDROID_PHONE", + "ANDROID_SCREENLESS", + "ANDROID_SMART_DISPLAY", + "ANDROID_TABLET", + "ANDROID_THINGS", + "ANDROID_THINGS_CUBE", + "ANDROID_THINGS_JASPER", + "ANDROID_TV", + "ANDROID_WEAR", + "ASSISTANT_KIT", + "ASSISTANT_SDK", + "AUTO", + "CAST_OS", + "CHROME_OS", + "CHROMECAST_MANHATTAN", + "CLOUD_DEVICE", + "CROS", + "GOOGLE_HOME", + "IOPA", + "IOS", + "IOS_SCREENLESS", + "IPAD", + "IPHONE", + "KAI_OS", + "KAI_OS_AMA", + "LIBASSISTANT", + "PHONE", + "PIXEL", + "PIXEL5", + "PIXEL6", + "PIXEL7", + "SCREENLESS", + "SMART_DISPLAY", + "SPEAKER", + "TABLET", + "TELEPHONE", + "THING" + ], + "enumDescriptions": [ + "Unknown surface type.", + "Android conversation client library (go/accl) is an Android library which implements the Conversation Protocol that allows a surface to have conversations with the Assistant server. OWNERS: surfaces-infra-core@", + "Android Google Search App (go/agsa). OWNERS: surfaces-infra-core@", + "Android. OWNERS: surfaces-infra-core@", + "Assistant on Android Auto (go/ast-auto). OWNERS: opa-android-leads@", + "Assistant on Android Go (not part of AGSA). OWNERS: assistantgo-eng@", + "Assistant on Android phones accessed through the Google App (velvet). This surface is formerly known as OPA_AGSA. OWNERS: opa-android-leads@", + "Assistant on Nexus with screen off/locked. Use go/bisto device to trigger. OWNERS: opa-android-leads@", + "Assistant on Titan hub mode (go/titan-hubmode-surface). This is OPA Android first party Smart Display devices. The UI experience is built on Opal (Gallium and Flutter) and native Android. OWNERS: opa-android-leads@", + "Assistant on Android tablet. OWNERS: opa-android-leads@", + "Android Things (go/things). OWNERS: surfaces-infra-core@", + "Lenovo Smart Clock v1, a stationary smart display device with a 4-inch screen, targeted for bedroom/bedside use cases like alarm, sleep tracking. Based on Android Things. See go/cube-home. OWNERS: cube-eng@", + "Former codename for 3P 8-inch and 10-inch Smart Displays from Lenovo, JBL and LG, targeted for use in the kitchen. Based on Android Things. See go/jasper-home. OWNERS: jasper-eng@", + "The Android platform that powers smart televisions, set-top-boxes, and over-the-top devices. See go/atv-eng and go/opa-tv. OWNERS: opa-tv-eng@", + "Wear OS Assistant. OWNERS: wear-assistant-eng@", + "AssistantKit (go/assistantkit) is a collection of iOS libraries allowing first party apps to integrate Google Assistant features. OWNERS: assistantkit-eng@", + "Standalone libassistant speakers, such as Bose and Sonos. OWNERS: assistant-speaker-leads@", + "Automobile. OWNERS: surfaces-infra-core@", + "Cast OS (go/opal-castos-docs#what-is-castos). OWNERS: surfaces-infra-core@", + "Chrome OS (go/chromsos) OWNERS: surfaces-infra-core@", + "For chromecast with assistant + screen, e.g. Newman. OWNERS: cast-eng-platform@", + "Virtual device for event-based triggering, e.g. executing time scheduled routines: go/scheduled-routines. OWNERS: surfaces-infra-core@", + "Assistant on native Chrome OS (go/croissant). OWNERS: croissant@", + "Google home speaker, i.e., Chirp devices. See go/assistant-speakers. OWNERS: assistant-speaker-leads@", + "Assistant on iOS devices (go/opa-ios). OWNERS: opa-ios-eng@", + "iOS. OWNERS: surfaces-infra-core@", + "Assistant on iOS with screen off/locked. Use go/bisto device to trigger. OWNERS: bisto-team@", + "iPad devices. OWNERS: surfaces-infra-core@", + "iPhone devices. OWNERS: surfaces-infra-core@", + "Kai OS (go/kaios). OWNERS: surfaces-infra-core@", + "Assistant on KaiOS (go/kaiosama). OWNERS: assistant-kaios-eng@", + "LibAssistant (go/libassistant) C++ SDK that powers Assistant experience on both 1P devices like Google Home and 3P devices like Sonos. OWNERS: libassistant-core@", + "A phone. OWNERS: surfaces-infra-core@", + "Pixel devices. OWNERS: surfaces-infra-core@", + "Pixel 5. OWNERS: surfaces-infra-core@", + "Pixel 6. OWNERS: surfaces-infra-core@", + "Pixel 7. OWNERS: surfaces-infra-core@", + "Devices with screen off or locked (go/bisto). OWNERS: surfaces-infra-core@", + "Smart surface, such as Titan. OWNERS: surfaces-infra-core@", + "A speaker. OWNERS: surfaces-infra-core@", + "A tablet. OWNERS: surfaces-infra-core@", + "Assistant on a phone call (go/telephone). OWNERS: telephone-assistant-eng@", + "IoT device. OWNERS: surfaces-infra-core@" + ], + "type": "string" + }, + "surfaceTypeString": { + "description": "The device's surface type. This is the string version of the assistant.api.core_types.SurfaceType enum. The server should not use this field, rather it should use the SurfaceType value derived from this string.", + "type": "string" + }, + "surfaceVersion": { + "$ref": "AssistantApiCoreTypesSurfaceVersion", + "description": "The version of the surface/client. This is different from the Conversation protocol version." + } + }, + "type": "object" + }, + "AssistantApiCoreTypesSurfaceType": { + "description": "Specifies the types of device surfaces. LINT.IfChange When adding new surface types make sure that My Activity (https://myactivity.google.com/product/assistant) will correctly render by adding your enum to http://cs/symbol:GetAssistSurfaceName%20f:%5C.cc$ 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.", + "id": "AssistantApiCoreTypesSurfaceType", + "properties": { + "type": { + "enum": [ + "UNKNOWN", + "ANDROID_ALLO", + "ANDROID_AUTO", + "ANDROID_THINGS_CUBE", + "ANDROID_THINGS_JASPER", + "ANDROID_TV", + "ANDROID_TV_KIDS", + "ANDROID_WEAR", + "AR_GLASSES", + "ASSISTANT_SDK", + "AUDIOWEAR", + "BUBBLE_CHARACTERS_IOS", + "CAPABILITY_BASED_SURFACE", + "CHROMECAST_ASSISTANT", + "CHROMECAST_MANHATTAN", + "CHROMECAST_SEARCH", + "CLOUD_DEVICE", + "COMPANION_SCREEN", + "DYNAMITE_WEB", + "ENSEMBLE", + "EYESFREE_AGSA", + "EYESFREE_GMM", + "GBOARD", + "GLASS", + "GOOGLE_HOME", + "HANGOUTS_CHATBOT", + "IOS_ALLO", + "IOS_GSA", + "IOS_WEAR", + "LIBASSISTANT", + "LINE_CHATBOT", + "MULTIMODAL_AGSA", + "NON_ASSISTANT_SURFACE", + "OPA_AGSA", + "OPA_AGSA_CHROME_OS", + "OPA_ANDROID_AUTO", + "OPA_ANDROID_LITE", + "OPA_ANDROID_SCREENLESS", + "OPA_ANDROID_SMART_DISPLAY", + "OPA_ANDROID_TABLET", + "OPA_CROS", + "OPA_GACS", + "OPA_IOS", + "OPA_IOS_SCREENLESS", + "OPA_KAIOS", + "OPA_MOBILE_WEB", + "RTOS_PHONE", + "SMS_CHATBOT", + "TELEGRAM_CHATBOT", + "TELEPHONE_ASSISTANT", + "VERILY_ONDUO", + "YOUTUBE_APP", + "AGSA_BISTO_FOR_EVAL", + "COGSWORTH_FOR_EVAL", + "LOCKHART_MIC_FOR_EVAL", + "OPA_ANDROID_AUTO_EMBEDDED_FAKE", + "SPARK", + "WALLE", + "UNIT_TESTING" + ], + "enumDescriptions": [ + "", + "", + "Deprecated (never used). Use OPA_ANDROID_AUTO instead.", + "Assistant on small screen stationary device.", + "", + "", + "", + "", + "Assistant on AR Glasses with both visual and audio experiences. Ask ar-assistant@ for details.", + "For Assistant SDK gRPC client.", + "", + "go/assistant-lamda-overview-characters", + "Surface for capability based testing.", + "For chrome cast assistant web app.", + "For chrome cast with assistant + screen (e.g., Google Nest Hub).", + "", + "Virtual device for event-based triggering, e.g. executing time", + "scheduled routines: go/routine-cloud-ex For Quartz.", + "", + "", + "Deprecated. Please use OPA_ANDROID_SCREENLESS.", + "", + "For Gboard app", + "", + "", + "", + "", + "", + "", + "For standalone libassistant devices.", + "LINE 3P messaging app", + "Deprecated.", + "Surfaces that do not speak to the Assistant, i.e. web HQ", + "Assistant on Android phones accessed through the Google App (velvet). This represents neither all of the assistant on android phones (ANDROID_ALLO, VERILY_ONDUO, etc.) nor all of the assistant built on top of AGSA (ANDROID_WEAR, OPA_ANDROID_SCREENLESS, OPA_AGSA_CHROME_OS, etc.).", + "Deprecated. Please use OPA_CROS.", + "", + "This is OPA on Android Go (not part of AGSA)", + "Assistant on Nexus with screen off/locked. Use go/bisto device to trigger.", + "Assistant on Titan hub mode (go/titan-hubmode-surface). This is OPA Android first party Smart Display devices. The UI experience is built on Opal (Gallium and Flutter) and native Android.", + "Assistant on Android tablet", + "Assistant on native Chrome OS (go/croissant).", + "For assistant on GACS devices (go/gacs-dd). Google Assistant Conversation Service (GACS) defines intents the device accepts. This surface serves the intents in the assistant response.", + "", + "Assistant on iOS with screen off/locked. Use go/bisto device to trigger.", + "Assistant on KaiOS. go/kaiosama", + "Assistant on Mobile Web. go/opa-spidey", + "Assistant on low-cost RTOS phones (go/conceRTOS).", + "", + "Telegram 3P messaging app", + "Assistant on a phone call (go/telephone).", + "", + "A Youtube app.", + "Eval-only surfaces. These surfaces are not real surfaces. They are only used in intermediate steps of eval query and request generation: 1. Eval samplers (OPA query sampler and Cannery sampler) checks logs and temporarily assigns these surface types to the logs, to put Bisto, Lockhart Mic, ... queries in the correct query pools. 2. Request builders uses these surface types to determine how TaskRequest for Bisto, Lockhart Mic, ... should be built, like whether some user user agent should be used, whether some entry source should be set. The surface types in the generated TaskRequest is still the production surface types, like OPA_ANDROID_SCREENLESS or OPA_AGSA. Temp surface for Bisto Android eval. Will be merged with OPA_ANDROID_SCREENLESS in the future.", + "", + "", + "OPA_ANDROID_AUTO has another sub-surface (embedded) that differs in the reported capabilities, client-ops, flags but uses the same surface_type string of OPA_ANDROID_AUTO. This fake surface would allow running turing2 tests and evals for this embedded surface. Deprecated as of Feb 2019. Please use \"OPA_ANDROID_AUTO_EMBEDDED\" client type for tests and eval. See go/client-onboarding for more details. https://cs.corp.google.com/piper///depot/google3/assistant/assistant_server/tools/util/consts.h?l=32\u0026rcl=247481455", + "Unlaunched new surface prototype, ask spark-eng@.", + "Wall-E is an Area120 Project building assistant powered robots. The surface is an extended joplin which have same capabilities as a google home adding custom robot features. Currently in active development. Please reach out walle-software@ or bingxin@ for questions. For details see go/walle-as-pipeline-1-pager.", + "Surface used for unit-testing purposes. Unit-tests might still require the existence of a \"valid\" SurfaceType to succeed (eg. initialization of the CapabilityBuilder, proto matching, etc.). With the move away from SurfaceType checks, a generic \"TESTING\" SurfaceType can be used for such tests without affecting the test behavior. Unlike the CAPABILITY_BASED_SURFACE, this proto does not have any capabilities or ResponseType tied to it. It should only be used for unit-tests and should not be exposed in the ASDebugger." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesSurfaceVersion": { + "description": "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.", + "id": "AssistantApiCoreTypesSurfaceVersion", + "properties": { + "major": { + "format": "int32", + "type": "integer" + }, + "minor": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiCoreTypesWebProviderInfo": { + "description": "The web information of the provider. Next ID: 5", + "id": "AssistantApiCoreTypesWebProviderInfo", + "properties": { + "homeStorage": { + "description": "Serialized storage (context) persisted and retrieved for the app and home.", + "type": "string" + }, + "localizedAppName": { + "description": "The localized app name.", + "type": "string" + }, + "openAppUrl": { + "description": "A URL to open the provider's app.", + "type": "string" + }, + "thirdPartyCustomNluInfo": { + "$ref": "AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo", + "description": "Info about 3P Custom NLU used in this web provider. TODO(b/321644453) remove when QRewrite is able to call SERoot." + } + }, + "type": "object" + }, + "AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo": { + "id": "AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo", + "properties": { + "locale": { + "description": "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.", + "type": "string" + }, + "nluAgentId": { + "description": "Unique internal identifier of 3P Custom NLU agent. UUID.", + "type": "string" + }, + "nluAgentVersion": { + "description": "Identifies the 3P Custom NLU agent version.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiCrossDeviceExecutionCapability": { + "id": "AssistantApiCrossDeviceExecutionCapability", + "properties": { + "localConnectivityEnabled": { + "description": "Whether the device has torus/usonia capabililities enabled or not.", + "type": "boolean" + }, + "remoteCastMediaEnabled": { + "description": "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.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiDate": { + "description": "A Gregorian calendar date. IMPORTANT: The definition of Date proto is being moved to //assistant/api/core_types/governed/datetime_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new one instead.", + "id": "AssistantApiDate", + "properties": { + "day": { + "description": "The day, in 1...31.", + "format": "int32", + "type": "integer" + }, + "month": { + "description": "The month, in 1...12.", + "format": "int32", + "type": "integer" + }, + "year": { + "description": "The year, e.g. 2016.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiDateTime": { + "description": "A date-time specification, combining a date and civil time (relative to a given timezone). IMPORTANT: The definition of DateTime proto is being moved to //assistant/api/core_types/governed/datetime_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new one instead.", + "id": "AssistantApiDateTime", + "properties": { + "date": { + "$ref": "AssistantApiDate", + "description": "A Gregorian calendar date." + }, + "timeOfDay": { + "$ref": "AssistantApiTimeOfDay", + "description": "A civil time relative to a timezone." + }, + "timeZone": { + "$ref": "AssistantApiTimeZone", + "description": "A time zone in IANA format." + } + }, + "type": "object" + }, + "AssistantApiDeviceCapabilities": { + "description": "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: 32", + "id": "AssistantApiDeviceCapabilities", + "properties": { + "androidIntentCapabilities": { + "$ref": "AssistantApiAndroidIntentCapabilities", + "description": "Capabilites related to Android intent support." + }, + "audioInput": { + "$ref": "AssistantApiAudioInput", + "description": "These capabilities are scoped to the ability to gather audio. It includes information like the type of audio that can be gathered (e.g. public, private)." + }, + "audioOutput": { + "$ref": "AssistantApiAudioOutput", + "description": "These capabilities are scoped to the ability to play audio. It includes information like the type of audio that can be played (e.g. public, private)." + }, + "callCapabilities": { + "$ref": "AssistantApiCallCapabilities", + "description": "The call capabilities of this device. go/call-capabilities" + }, + "camera": { + "$ref": "AssistantApiCameraCapabilities", + "description": "These capabilities are scoped to the camera abilities of this device." + }, + "cast": { + "$ref": "AssistantApiCastCapabilities", + "description": "These capabilities are scoped to the cast abilities of this device." + }, + "communicationUiCapabilities": { + "$ref": "AssistantApiCommunicationUiCapabilities" + }, + "contactLookupCapabilities": { + "$ref": "AssistantApiContactLookupCapabilities" + }, + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "This is the same device id that is specified in the conversation protocol and should be unique to each device/user/model combination. For example, if a request is coming from a watch through AGSA the watch and AGSA should have different device_ids. Note: this field should only be used to determine which device the capabilities belong to and not to access the id of the device. Instead DeviceProperties should be used and accessed through ParamsAccessor." + }, + "deviceUxMode": { + "description": "Capabilities related to Android tablet UX experience.", + "enum": [ + "DEVICE_UX_MODE_DEFAULT", + "DEVICE_UX_MODE_SUPPORT_LIMITED_SHARED_LOCKSCREEN" + ], + "enumDescriptions": [ + "", + "Device supports the Shared Lock Screen: a glanceable space that lets anyone in the house use shared apps and the Assistant, without unlocking the device. This is for devices which only support limited SLS, e.g. TKY." + ], + "type": "string" + }, + "hasVoiceTelephony": { + "description": "Indicates that the device has connection to cellular network that allows it to make voice calls. This is distinct from device just being capable of voice telephony, because the device can be capable yet miss the suitable SIM card (for example, it could miss SIM card altogether, or have data-only SIM card).", + "type": "boolean" + }, + "jwnCapabilities": { + "$ref": "AssistantApiJwnCapabilities", + "description": "Indicates if the client supports Javascript Whatsnext (go/jwn). Also contains the Jwn libraries present on the client along with their versions." + }, + "lensPerceptionCapabilities": { + "$ref": "AssistantApiLensPerceptionCapabilities", + "description": "Capabilities related to Lens Perception, i.e. image understanding. See go/lens-perception-sdk." + }, + "location": { + "$ref": "AssistantApiLocationCapabilities", + "description": "These capabilities are scoped to the location abilities of this device." + }, + "loggingOnlyData": { + "$ref": "AssistantApiLoggingOnlyData", + "description": "Data which is produced for logging and debugging. Servers MUST NOT use this for any other purposes, such as branching on it." + }, + "messageCapabilities": { + "$ref": "AssistantApiMessageCapabilities" + }, + "movement": { + "$ref": "AssistantApiMovementCapabilities", + "description": "These capabilities are scoped to abilities of the device to move around." + }, + "notificationCapabilities": { + "description": "DEPRECATED: Use SystemNotificationRestrictions instead. Specifies whether the surface is able to display notifications. This field is superficially similar to ProactiveNotificationOutput, but unlike that field which tracks a per-user preference on the OPA side, this field captures whether the surface is capable of displaying notifications.", + "enum": [ + "NO_NOTIFICATION_CAPABILITY", + "NOTIFICATIONS_DISABLED", + "NOTIFICATIONS_ENABLED" + ], + "enumDescriptions": [ + "The surface is not able to display notifications.", + "The notifications are disabled on the surface.", + "The notifications are enabled." + ], + "type": "string" + }, + "notificationOutputRestrictions": { + "$ref": "AssistantApiNotificationOutputRestrictions", + "description": "Settings, that reflect whether a specific notification type is allowed for current device, e.g. if the user opted out from notification category or category group. This settings are server-side stored and evaluated unlike SystemNotificationRestrictions field." + }, + "outputRestrictions": { + "$ref": "AssistantApiOutputRestrictions", + "description": "These are user configured restrictions indicating what the device is allowed to output from the privacy point of view." + }, + "safetyRestrictions": { + "description": "Indicates if the client has safety related restriction.", + "enum": [ + "DEFAULT_NO_SAFETY_RESTRICTION", + "DISTRACTION_SAFETY_RESTRICTION" + ], + "enumDescriptions": [ + "The surface has no safety restriction.", + "The surface has safety restriction due to any distraction." + ], + "type": "string" + }, + "screen": { + "$ref": "AssistantApiScreenCapabilities", + "description": "These capabilities are scoped to the ability to see and interact with the Assistant through a screen. If the device has no screen it should send an empty ScreenCapabilities. Sending no ScreenCapabilities will cause this to be overridden with the surface default." + }, + "sodaCapabilities": { + "$ref": "AssistantApiSodaCapabilities", + "description": "Capabilities related to SODA (Speech On-Device API)." + }, + "software": { + "$ref": "AssistantApiSoftwareCapabilities", + "description": "These capabilities are scoped to the software available on the device as well as the set of supported Assistant features." + }, + "speechCapabilities": { + "$ref": "AssistantApiSpeechCapabilities", + "description": "DEPRECATED Capabilities related to speech detection on devices." + }, + "supportedLocale": { + "description": "Locales supported by assistant settings for speaking and display. This is independent from device language that is defined in device setting. New locales are added based on rollout, whitelist and app version releases because older versions does not have model support. Currently supported locale list differs by surface type.", + "items": { + "type": "string" + }, + "type": "array" + }, + "surfaceIdentity": { + "$ref": "AssistantApiCoreTypesSurfaceIdentity", + "description": "The set of information that helps the server identify the surface." + }, + "surfaceTypeString": { + "description": "The device's surface type. This is the string version of the assistant.api.core_types.SurfaceType enum. The server should not use this field, rather it should use the SurfaceType value derived from this string.", + "type": "string" + }, + "systemNotificationRestrictions": { + "$ref": "AssistantApiSystemNotificationRestrictions", + "description": "Restrictions related to system-level notifications. This field is superficially similar to ProactiveNotificationOutput, but unlike that field which tracks a per-user preference on the OPA side, this field captures system level notifications restrictions. This field is not stored and is merged to capablities from conversation params. It exists mostly for logging purposes of android channel state and global app-level notification opt out." + }, + "thirdPartyCapabilities": { + "$ref": "AssistantApiThirdPartyCapabilities", + "description": "Capabilities related to third party integration." + } + }, + "type": "object" + }, + "AssistantApiDuration": { + "description": "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.", + "id": "AssistantApiDuration", + "properties": { + "nanos": { + "description": "Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field. Must be from -999,999,999 to +999,999,999 inclusive.", + "format": "int32", + "type": "integer" + }, + "seconds": { + "description": "Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiFeatureSpecificActionSupport": { + "id": "AssistantApiFeatureSpecificActionSupport", + "properties": { + "clarificationDataSupported": { + "description": "Whether client supports clarification suggestion chip to be displayed see |assistant.suggestions.ClarificationData|", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiFitnessFeatureSupport": { + "id": "AssistantApiFitnessFeatureSupport", + "properties": { + "supportedActivities": { + "description": "A list of fitness activity types supported by this client.", + "items": { + "enum": [ + "TYPE_UNSPECIFIED", + "WALK", + "RUN", + "ELLIPTICAL", + "SWIM", + "WEIGHTS", + "TREADMILL", + "BIKE", + "YOGA", + "WORKOUT", + "BOOT_CAMP", + "CIRCUIT_TRAINING", + "GOLF", + "HIKING", + "INTERVAL_TRAINING", + "KICKBOXING", + "MARTIAL_ARTS", + "PILATES", + "SPINNING", + "STAIR_CLIMBING", + "TENNIS", + "AEROBICS", + "CORE_TRAINING", + "DANCING", + "HIGH_INTENSITY_INTERVAL_TRAINING", + "KAYAKING", + "ROWING", + "SKIING", + "STANDUP_PADDLEBOARDING", + "STRENGTH_TRAINING", + "SNOWBOARDING" + ], + "enumDescriptions": [ + "The type is unknown.", + "Represents a walking activity type.", + "Represents a running activity type.", + "Represents an elliptical activity type.", + "Represents a swimming activity type.", + "Represents a weightlifting activity type.", + "Represents a treadmill activity type (e.g. walking/running on a treadmill).", + "Represents a cycling activity type.", + "Represents a yoga activity type.", + "Represents a generic workout activity.", + "Represents a bootcamp activity type.", + "Represents a circuit training activity type.", + "Represents a golf activity type.", + "Represents a hiking activity type.", + "Represents an interval training activity type.", + "Represents a kickboxing activity type.", + "Represents a martial arts activity type.", + "Represents a pilates activity type.", + "Represents a spinning(indoor cycling, stationary biking) activity type.", + "Represents a stair climbing activity type.", + "Represents a tennis activity type.", + "Represents an aerobics activity type.", + "Represents a core training activity type.", + "Represents a dancing activity type.", + "Represents a HIIT activity type.", + "Represents a kayaking activity type.", + "Represents a rowing activity type.", + "Represents a skiing activity type.", + "Represents a standup paddleboading(SUP) activity type.", + "Represents a strength training activity type.", + "Represents a snowboarding activity type." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiFluidActionsSupport": { + "id": "AssistantApiFluidActionsSupport", + "properties": { + "stateSyncMethod": { + "description": "Specifies the params proto that Fluid Actions uses to sync state with server.", + "enum": [ + "STATE_SYNC_METHOD_UNSPECIFIED", + "DIALOG_STATE_PARAMS" + ], + "enumDescriptions": [ + "Unspecified state sync method.", + "New params proto used to sync state between client and server. New clients must use this value. For proto details, see: http://google3/assistant/api/params/dialog_state_params.proto" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiGacsCapabilities": { + "description": "Capabilities of Google assistant conversation service(GACS) devices. These capabilites including supported GACS actions and response size limitations.", + "id": "AssistantApiGacsCapabilities", + "properties": { + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "DeviceId of the accessory device (eg. watch) Commonly the go/dusi (eg. client_instance_id) is provided." + }, + "responseConfig": { + "$ref": "GoogleAssistantAccessoryV1ResponseConfig", + "description": "Configuration sent by device." + }, + "ttsEncoding": { + "description": "DEPRECATED: Format of TTS audio requested by the device.", + "enum": [ + "LINEAR_16BIT", + "MULAW", + "ALAW", + "MP3", + "MP3_64KBPS", + "SPEEX", + "SPEEX_WITH_HEADER_BYTE", + "SPEEX_IN_OGG", + "OPUS_IN_OGG", + "OPUS_24KBPS_IN_OGG", + "OPUS_16KBPS_IN_OGG", + "OPUS_12KBPS_IN_OGG", + "OPUS_16KBPS_CONTAINERLESS", + "OPUS_24KBPS_CONTAINERLESS", + "OPUS_32KBPS_CONTAINERLESS" + ], + "enumDescriptions": [ + "Signed 16-bit little-endian (a.k.a s16le) linear PCM.", + "G.711 audio companding. https://en.wikipedia.org/wiki/G.711 8-bit μ-law encoding according to G.711", + "8-bit A-law encoding according to G.711.", + "The default MP3 encoding is 32kbps. Text-to-speech audio at this bit rate has audible compression artifacts and is not recommended. Please use OPUS_IN_OGG instead.", + "MP3 at 64kbps sounds nearly identical to uncompressed for 24kHz TTS audio, and sounds similar to OPUS_IN_OGG.", + "Raw speex stream with each frame concatenated together. The size of each frame will need to be communciated separately. Variable bitrate encoding is unsupported using this output type.", + "Similar to SPEEX, this mode will concatenate together the speex frames. However, each frame will have prepended a single byte that describes the length of the following frame.", + "In this case, we'll wrap the speex contents in an ogg container, resulting in a more generally decode-able format but one with more storage overhead.", + "Opus encoded audio wrapped in an ogg container. The result will be a file which can be played natively on Android, and in browsers (at least Chrome and Firefox). The quality of the encoding is considerably higher than MP3 when using the same bitrate. At the moment, this defaults to 32kbps but the TTS team reserves the right to adjust the bitrate to provide the best experience.", + "Opus encoded audio in 24kbps wrapped in an ogg container. The result will be a file which can be played natively on Android, and in browsers while reducing data consumption slightly.", + "The following bitrates for Opus below 24kbps are here only for special usecases; they result in a significant reduction in quality. Please get in touch with the TTS team if you think you might have a valid usecase. NOTE(staz): These bitrates are not officially supported. TTS is to be served at a minimum of 24kbps everywhere, including in NBU countries. See b/137234032#comment13 on why lower bitrates don't help in tangible ways even in NBU markets.", + "", + "Opus encoded audio using the specified bitrate without a container such as Ogg, RTP or WebM. The response is a stream which can be played natively on low powered wearable devices. Delivered as multiple frames per S3 response. These frames need to be carefully byte-delimited (constant bitrate) by the client. They use a statically defined frame duration of 20ms. Frame size per bit-rate: 16kbps: each frame is of size 40 bytes 24kbps: each frame is of size 60 bytes 32kbps: each frame is of size 80 bytes", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiGcmCapabilities": { + "description": "Capabilities related to GCM.", + "id": "AssistantApiGcmCapabilities", + "properties": { + "gcmRegistrationId": { + "description": "GCM registration id for the device. Used to pass messages to the device.", + "type": "string" + }, + "supportsAssistantGcm": { + "description": "Assistant supports GCM on the device. ClientOps can be sent to it over GCM and will be executed.", + "type": "boolean" + }, + "supportsClientInputOverGcm": { + "description": "If it is set to true, then it indicates to server that device is capable of receiving a GCM payload with serialized client input. The client input will be sent back to Assistant Server over conversation protocol.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiGestureCapabilities": { + "description": "The gesture capabilities related to Selina. Next ID: 4", + "id": "AssistantApiGestureCapabilities", + "properties": { + "gestureSensing": { + "description": "Whether Gesture is supported. When false, override the value for tap and omniswipe.", + "type": "boolean" + }, + "omniswipeGestureCapable": { + "description": "Whether omniswipe is supported", + "type": "boolean" + }, + "tapGestureCapable": { + "description": "Whether tap is supported", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiGuestAccessOutput": { + "description": "DEPRECATED: Use AccessControlOutput instead. Access settings for guests.", + "id": "AssistantApiGuestAccessOutput", + "properties": { + "guestAccessOnYoutube": { + "enum": [ + "UNKNOWN_GUEST_ACCESS", + "USE_DEFAULT_ACCOUNT_FOR_GUEST", + "DISABLED_FOR_GUEST" + ], + "enumDescriptions": [ + "", + "Guests can access content using linked users' account.", + "No access for guests." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiImmersiveCanvasSupport": { + "id": "AssistantApiImmersiveCanvasSupport", + "properties": { + "confirmationMessageSupported": { + "description": "Whether the client supports confirmation messages in Immersive Canvas actions.", + "type": "boolean" + }, + "pauseSignalSupported": { + "description": "Whether the client support canvas pause signal. If true, the Assistant Server will send a signal when canvas transitioning to pause mode.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiJwnCapabilities": { + "description": "These capabilities are used to determine the jwn libraries and their versions that are present on the client.", + "id": "AssistantApiJwnCapabilities", + "properties": { + "librariesVersionMap": { + "additionalProperties": { + "type": "string" + }, + "description": "The name and version of the jwn libraries currently stored on the client. These are the same that the server communicated when the library was first sent down.", + "type": "object" + }, + "supportedCompressionMode": { + "description": "Compression algorithms supported on the client. Server can choose one of these to compress WhatsNext Javascript programs and libraries.", + "items": { + "enum": [ + "NONE", + "BROTLI", + "FLATE" + ], + "enumDescriptions": [ + "jwn_program is not in compressed state.", + "Brotli (google3/third_party/brotli) compression used. Recommended compressor for Javascript.", + "Flate (google3/util/compression/flate) compression used." + ], + "type": "string" + }, + "type": "array" + }, + "supportsJwn": { + "description": "Whether the client supports running jwn code.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiLensPerceptionCapabilities": { + "description": "Capabilities related to Lens Perception, i.e. image understanding. See go/loa-lens-device-capabilities. Next ID: 6", + "id": "AssistantApiLensPerceptionCapabilities", + "properties": { + "hasLensPerception": { + "description": "Whether the device supports Lens Perception.", + "type": "boolean" + }, + "isLensDirectIntentAvailable": { + "description": "Indicates whether Lens supports Lens Direct Intent (go/lensdirectintent).", + "type": "boolean" + }, + "isLensLiveViewfinderAvailable": { + "description": "Indicates whether Lens supports Live view-finder experience.", + "type": "boolean" + }, + "isLensPostCaptureAvailable": { + "description": "Indicates whether Lens supports Post-capture experience with an image payload.", + "type": "boolean" + }, + "lensCapabilities": { + "$ref": "AssistantApiLensPerceptionCapabilitiesLensCapabilities", + "description": "Contains the capabilities that Lens can support." + } + }, + "type": "object" + }, + "AssistantApiLensPerceptionCapabilitiesLensCapabilities": { + "description": "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", + "id": "AssistantApiLensPerceptionCapabilitiesLensCapabilities", + "properties": { + "dining": { + "$ref": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining", + "description": "The presence of this message means that Dining is supported." + }, + "education": { + "$ref": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation", + "description": "The presence of this message means that Education is supported." + }, + "outdoor": { + "$ref": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor", + "description": "The presence of this message means that Outdoor is supported." + }, + "shopping": { + "$ref": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping", + "description": "The presence of this message means that Shopping is supported." + }, + "text": { + "$ref": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText", + "description": "The presence of this message means that intenting directly into the text filter is supported." + }, + "translate": { + "$ref": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate", + "description": "The presence of this message means that Translation is supported." + } + }, + "type": "object" + }, + "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining": { + "description": "Dining recognition capability. For example popular dishes on a given restaurant menu image.", + "id": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining", + "properties": {}, + "type": "object" + }, + "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation": { + "description": "Education recognition capability.", + "id": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation", + "properties": {}, + "type": "object" + }, + "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor": { + "description": "Outdoor place recognition capability. For example recognizing storefronts.", + "id": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor", + "properties": {}, + "type": "object" + }, + "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping": { + "description": "Shopping recognition capability.", + "id": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping", + "properties": {}, + "type": "object" + }, + "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText": { + "description": "Text recognition capability.", + "id": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText", + "properties": { + "isTextToSpeechSupported": { + "description": "Indicates whether text-to-speech is supported.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate": { + "description": "Translation capability.", + "id": "AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate", + "properties": { + "supportedLanguageTags": { + "description": "The list of language IETF BCP 47 tags that are supported. See the full list at go/androidlanguages.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiLiveTvChannelCapabilities": { + "id": "AssistantApiLiveTvChannelCapabilities", + "properties": { + "channelsByProvider": { + "description": "A list of channel providers each of which provides a list of its channels.", + "items": { + "$ref": "AssistantApiLiveTvChannelCapabilitiesChannelsByProvider" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiLiveTvChannelCapabilitiesChannelsByProvider": { + "id": "AssistantApiLiveTvChannelCapabilitiesChannelsByProvider", + "properties": { + "channels": { + "description": "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.", + "items": { + "$ref": "AssistantApiLiveTvChannelCapabilitiesLiveTvChannel" + }, + "type": "array" + }, + "inputId": { + "description": "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 https://source.android.com/devices/tv", + "type": "string" + }, + "providerType": { + "description": "Type of provider who provides this channel input.", + "enum": [ + "UNKNOWN_PROVIDER_TYPE", + "OTT_PROVIDER", + "TUNER" + ], + "enumDescriptions": [ + "", + "OTT providers providing live tv contents like Sling, Youtube TV.", + "TV Tuner apps providing live tv contents." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiLiveTvChannelCapabilitiesLiveTvChannel": { + "id": "AssistantApiLiveTvChannelCapabilitiesLiveTvChannel", + "properties": { + "channelId": { + "description": "Unique channel identifier.", + "type": "string" + }, + "channelName": { + "description": "A list of channel names and synonyms.", + "items": { + "type": "string" + }, + "type": "array" + }, + "channelNumber": { + "description": "Channel number displayed to user. Optional.", + "type": "string" + }, + "deeplink": { + "description": "A deep link into the Live player app that tunes to this channel.", + "type": "string" + }, + "mid": { + "description": "KG mid of the channel if it exists in KG.", + "type": "string" + }, + "networkMid": { + "description": "Network KG mid of the channel if it exists in KG", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiLiveTvProvider": { + "id": "AssistantApiLiveTvProvider", + "properties": { + "providerInfo": { + "$ref": "AssistantApiCoreTypesProvider", + "description": "Contains detailed provider information such as android app package name." + }, + "providerKey": { + "description": "An 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 https://source.android.com/devices/tv", + "type": "string" + }, + "providerType": { + "enum": [ + "UNKNOWN_PROVIDER_TYPE", + "OTT_PROVIDER", + "TUNER" + ], + "enumDescriptions": [ + "", + "OTT providers providing live tv contents like Sling, Youtube TV.", + "TV Tuner apps providing live tv contents." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiLocationCapabilities": { + "id": "AssistantApiLocationCapabilities", + "properties": { + "gpsAvailable": { + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiLoggingOnlyData": { + "description": "Data which is produced for logging and debugging. Servers MUST NOT use this for any other purposes, such as branching on it.", + "id": "AssistantApiLoggingOnlyData", + "properties": { + "acpVersion": { + "description": "A user-readable string describing the ACP version (go/acp-version) of the client app used by the user to originate the conversation.", + "type": "string" + }, + "appVersion": { + "description": "A user-readable string describing the version of the client app used by the user to originate the conversation.", + "type": "string" + }, + "assistantSettingsSource": { + "description": "An enum specifying when was this ATV AssistantSettings entry initially created.", + "enum": [ + "NOT_SET", + "FIRST_SCREEN_DEVICE_OOBE", + "FIRST_SCREEN_KATNISS_OOBE", + "FIRST_SCREEN_DELEGATION_OOBE", + "FIRST_SCREEN_FIXER_JOB", + "FIRST_SCREEN_FCM_JOB", + "FIRST_SCREEN_HOME_GRAPH_JOB", + "FIRST_SCREEN_PERSONAL_BIT", + "FIRST_SCREEN_VOICE_INPUT_BIT", + "FIRST_SCREEN_OTHER", + "SECOND_SCREEN_AGSA", + "SECOND_SCREEN_GHA_IOS", + "SECOND_SCREEN_GHA_ANDROID" + ], + "enumDescriptions": [ + "LINT.IfChange", + "Created during ATV Device OOBE(setupwraith)", + "Created within Katniss(Assistant client on TV)", + "Created within Katniss delegation path", + "Created by fix settings job in katniss.", + "Created by FCM jobs in katnisss.", + "Created by home graph jobs in katniss.", + "Created by enable personal bit button in Settings UI", + "Created by enable voice input bit button in Settings UI", + "Created by other parts in katniss", + "Created by AGSA", + "Created by Google Home App IOS", + "Created by Google Home App Android LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log.proto)" + ], + "type": "string" + }, + "boardName": { + "description": "The type of board used by manufacturer for this device", + "type": "string" + }, + "boardRevision": { + "description": "The revision of board used", + "type": "string" + }, + "castAssistantSettingLinkingResult": { + "$ref": "AssistantApiCastAssistantSettingLinkingResult", + "description": "This field records the linking status between Assistant setting entry and Cast setting entry. Currently only ATV surface populates this field for profiling purpose." + }, + "deviceModel": { + "description": "A user-readable string describing the device's hardware platform.", + "type": "string" + }, + "embedderBuildInfo": { + "description": "Any relevant info concerning the build options of the embedder (that is the software which runs as the 'driver' of an Assistant library, such as libassistant. the embedder is typically built by a third party)", + "type": "string" + }, + "initialAppVersion": { + "description": "A string recording the app version that is initially used to created this settings entry.", + "type": "string" + }, + "mdnsDisplayName": { + "description": "default display name of device over mdns. This is specified at the factory, not specified by the user.", + "type": "string" + }, + "platformBuild": { + "description": "A user-readable string describing the device's software platform.", + "type": "string" + }, + "virtualReleaseChannel": { + "description": "A string describing device's release channel. For cast devices, the string will look like \"qa-beta-channel\", \"eng-no-update\", etc.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiMediaControlSupport": { + "id": "AssistantApiMediaControlSupport", + "properties": { + "skipConfirmationsWhilePlaying": { + "description": "Whether to prevent confirmations (text, tts) for media control actions while media is playing so that the media session is not interrupted.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiMessageCapabilities": { + "id": "AssistantApiMessageCapabilities", + "properties": { + "fallbackToTetheredDeviceAppCapabilities": { + "description": "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).", + "type": "boolean" + }, + "supportedRecipientTypes": { + "description": "Should only be checked if nonempty.", + "items": { + "enum": [ + "UNSPECIFIED_ENDPOINT", + "PHONE_NUMBER", + "EMAIL_ADDRESS", + "APP_UNIQUE_ID", + "EMERGENCY_PHONE_NUMBER", + "VOICEMAIL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiMovementCapabilities": { + "id": "AssistantApiMovementCapabilities", + "properties": { + "mobility": { + "description": "Indicates how much the device moves around. E.g., TV has a low mobility level, while Auto has a very high level.", + "enum": [ + "UNSPECIFIED", + "LOW", + "MEDIUM", + "HIGH", + "VERY_HIGH" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiNotificationOutputRestrictions": { + "id": "AssistantApiNotificationOutputRestrictions", + "properties": { + "optOutState": { + "$ref": "AssistantApiNotificationOutputRestrictionsOptOutState" + } + }, + "type": "object" + }, + "AssistantApiNotificationOutputRestrictionsOptOutState": { + "description": "Per category/category group notification opt out settings.", + "id": "AssistantApiNotificationOutputRestrictionsOptOutState", + "properties": { + "categoryGroupState": { + "items": { + "$ref": "AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState" + }, + "type": "array" + }, + "categoryState": { + "items": { + "$ref": "AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState": { + "id": "AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState", + "properties": { + "categoryGroup": { + "enum": [ + "UNSPECIFIED", + "SYSTEM", + "PROMOTIONAL", + "SUBSCRIPTIONS", + "PROACTIVE", + "REMINDERS", + "EXTENDED_ANSWERS", + "FEEDBACK", + "ACTIONS_ON_GOOGLE", + "DUO_MISSED_CALLS", + "HOME_AUTOMATION", + "GETTING_AROUND", + "UNIT_TESTING" + ], + "enumDescriptions": [ + "", + "This is required, do not remove. Group for notification categories that should not be displayed at all.", + "Promotional notifications.", + "Notifications for Subscriptions.", + "Proactive notifications", + "Reminders (including assigned reminders).", + "Cross surface answers.", + "Assistant asking for feedback from users.", + "AoG 3P notifications.", + "Missed call notifications from DUO.", + "Home Automation notifications.", + "Getting around notifications.", + "Always keep at the end." + ], + "type": "string" + }, + "state": { + "enum": [ + "OPTED_IN", + "OPTED_OUT" + ], + "enumDescriptions": [ + "Default value is intentionally set to opted in as all categories/category groups are enabled by default.", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState": { + "id": "AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState", + "properties": { + "category": { + "enum": [ + "UNSPECIFIED", + "SYSTEM_REQUIRED_LOW_PRIORITY", + "SYSTEM_REQUIRED_HIGH_PRIORITY", + "DISCOVERY", + "REALTIME_PROMOTIONAL", + "SUBSCRIPTIONS", + "FLIGHT_UPDATES", + "TRANSPORT_UPDATES", + "BILL_UPDATES", + "PACKAGE_DELIVERY_UPDATES", + "EVENT_UPDATES", + "DUE_DATE_UPDATES", + "CELEBRATION_UPDATES", + "ROUTINE_UPDATES", + "TASK_SUGGESTIONS", + "AT_A_PLACE", + "APP_RECOMMENDATIONS", + "TRAVEL_UPDATES", + "REMINDER_DUE", + "NEW_REMINDER_ASSIGNMENT", + "ASSIGNED_REMINDER_DUE", + "ROUTINE_SETTINGS_UPDATES", + "MAPS_OR_DIRECTIONS", + "MOVIE_SHOWTIMES", + "SPORTS_UPDATES", + "NEWS_UPDATES", + "SONGS_AND_ARTISTS", + "TRANSLATIONS", + "ANSWERS_TO_QUESTIONS", + "SETTINGS_LINKS", + "RESERVATION_UPDATES", + "DEPRECATED_FEEDBACK_REQUESTS", + "FEEDBACK_REQUESTS", + "ACTIONS_ON_GOOGLE", + "DUO_MISSED_CALLS", + "HOME_AUTOMATION", + "TIME_TO_LEAVE", + "COMMUTE", + "OCCASIONALLY_REPEATED_ACTIONS", + "FREQUENTLY_REPEATED_ACTIONS", + "ASPIRE", + "ASSISTANT_DRIVING_MODE", + "DISCOVERY_DEFAULT_PRIORITY", + "HOLIDAY_REMINDERS", + "CROSS_DEVICE_TIMER", + "LIVE_CARD", + "ASYNC_ACTION", + "UNIT_TESTING" + ], + "enumDescriptions": [ + "", + "Categories required by Assistant \u0026 won't be shown on settings page.", + "", + "Promotional discovery notifications.", + "", + "Subscriptions (both event and time based).", + "Proactive notification categories.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Reminder notification categories.", + "", + "We're probably going to deprecate ASSIGNED_REMINDER_DUE.", + "Routine related notification categories.", + "Extended answer (cross device) notification categories.", + "", + "", + "", + "", + "", + "", + "", + "", + "Feedback requests from Assistant.", + "", + "Actions on Google (Third party) notifications.", + "Missed call notifications from DUO.", + "Home Automation related notifications.", + "Getting around notifications.", + "", + "Repeated actions. Having two categories for occasionally and frequently repeated ones since the FREQUENTLY_REPEATED_ACTIONS are buzzing.", + "", + "Assistant Aspire notifications.", + "", + "Discovery notifications that shows in status bar but doesn't make noise.", + "", + "", + "Live cards, these are not real notifications but live cards shown on Home App.", + "These are not really notifications, rather push messages to initiate an asynchronous action.", + "Always keep at the end." + ], + "type": "string" + }, + "state": { + "enum": [ + "OPTED_IN", + "OPTED_OUT" + ], + "enumDescriptions": [ + "Default value is intentionally set to opted in as all categories/category groups are enabled by default.", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiOemCapabilities": { + "description": "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.", + "id": "AssistantApiOemCapabilities", + "properties": { + "cloudCapability": { + "$ref": "AssistantDevicesPlatformProtoCloudCapability", + "description": "The OEM Cloud execution capability of this device, containing routing details for cloud fulfillment." + }, + "cloudDeviceCapabilities": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "If fulfillment is done via 3P cloud and 3P supports device capabilities, this field will be set.", + "type": "object" + }, + "deviceModelId": { + "description": "Device Model Id from DeviceModelPackage.", + "type": "string" + }, + "deviceModelRevisionId": { + "description": "Device Model Revision Id from DeviceModelPackage.", + "format": "int64", + "type": "string" + }, + "deviceSpecificData": { + "description": "Opaque supported action data related to a specific domain of devices, for example for car. go/car-talk-registration-model", + "type": "string" + }, + "internalCapability": { + "$ref": "AssistantDevicesPlatformProtoInternalCapability", + "description": "Internal-only config containing metadata about the Device Model, for example to control the ranking behavior." + }, + "thirdPartyActionConfig": { + "$ref": "AssistantApiThirdPartyActionConfig", + "description": "3P Action Metadata, populated from the Device Model lookup and the client request parameters. For example, an Assistant SDK request would have the billed project id of the Assistant request added here in order to enable any Device Actions developed using the same Google Cloud project. This data is sent to Service Engine to mask triggering for Device Actions." + } + }, + "type": "object" + }, + "AssistantApiOnDeviceAssistantCapabilities": { + "description": "Definitions of on-device assistant capabilities.", + "id": "AssistantApiOnDeviceAssistantCapabilities", + "properties": { + "isLocalNetworkArbitrationSupported": { + "description": "Capabilities related to local network arbitration (go/local-network-arbitration). Indicates if the device is capable of being a host device in the LAN whiling doing local network arbitration.", + "type": "boolean" + }, + "isOnDeviceArbitrationSupported": { + "description": "Capabilities related to on-device arbitration(go/arbitration-on-device).", + "type": "boolean" + }, + "isOnDeviceAssistantSupported": { + "description": "Indicates if on-device assistant is enabled on this device. Example usecases: NGA (go/nga) or Marble (go/marble).", + "type": "boolean" + }, + "isOnDeviceUnderstandingSupported": { + "description": "This may be used by NGA. E.g. if understanding happens on device, we can have more aggressive logic when fulfilling some features on the server side, like teleport.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiOnDeviceSmartHomeCapabilities": { + "description": "Definitions of on-device Smart Home capabilities. Next ID: 2", + "id": "AssistantApiOnDeviceSmartHomeCapabilities", + "properties": { + "isOnDeviceSmartHomeSupported": { + "description": "Master bit for on-device Smart Home features.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiOnDeviceStorageCapabilities": { + "description": "The on-device storage capabilities found on the device.", + "id": "AssistantApiOnDeviceStorageCapabilities", + "properties": { + "isSupported": { + "description": "Determines if an on-device storage is supported.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiOutputRestrictions": { + "description": "These are user configurable permissions representing what the device is allowed to output. Next ID: 11", + "id": "AssistantApiOutputRestrictions", + "properties": { + "accessControlOutput": { + "$ref": "AssistantApiAccessControlOutput", + "description": "Access settings for all providers." + }, + "googlePhotoContent": { + "description": "The type of Google Photo content which the device can output.", + "enum": [ + "ALL_PHOTO_CONTENT", + "NO_RESTRICTED_PHOTO_CONTENT" + ], + "enumDescriptions": [ + "All content can be output, including contents from restriced categories (e.g. violent, racy).", + "Only content from non-restricted categories can be output." + ], + "type": "string" + }, + "guestAccessOutput": { + "$ref": "AssistantApiGuestAccessOutput", + "description": "DEPRECATED: Use access_control_output instead. Access settings for guests." + }, + "personalData": { + "description": "The level of personal data which the device can output. See go/personal-readout for detail.", + "enum": [ + "PERSONAL_DATA_OUTPUT_UNKNOWN", + "ALL_PERSONAL_DATA_WITH_PROACTIVE", + "ALL_PERSONAL_DATA", + "NO_PERSONAL_DATA" + ], + "enumDescriptions": [ + "UNKNOWN.", + "DO NOT USE. This field has been deprecated.", + "All personal data can be output.", + "No personal data can be output." + ], + "type": "string" + }, + "proactiveNotificationOutput": { + "description": "This controls if the server can proactively send notification to users, and it does not affect scenarios that users ask for information. The notification may include TTS and lights. It could be only lights for chirp.", + "enum": [ + "UNKNOWN_PROACTIVE_NOTIFICATION", + "NO_PROACTIVE_NOTIFICATION", + "ALL_PROACTIVE_NOTIFICATIONS" + ], + "enumDescriptions": [ + "The setting for proactive notification is unknown", + "No proactive notification can be output", + "All proactive notifications can be output" + ], + "type": "string" + }, + "proactiveOutput": { + "$ref": "AssistantApiProactiveOutput", + "description": "Restrictions on displaying and interacting with content on proactive surfaces (e.g. Dragonglass home screen). Note: NEVER access this field of OutputRestrictions directly, use the code in assistant/assistant_server/settings/device/device_settings_util.h instead." + }, + "youtubeAutoplayRestriction": { + "description": "Whether YouTube autoplay is allowed for queries from the user to this device. See go/assistant-youtube-settings for details.", + "enum": [ + "AUTOPLAY_RESTRICTION_UNSPECIFIED", + "AUTOPLAY_ALLOWED", + "AUTOPLAY_DISABLED" + ], + "enumDescriptions": [ + "", + "Autoplay can be applied to youtube queries to the device from this user", + "Autoplay must not be enabled for youtube queries to the device from this user" + ], + "type": "string" + }, + "youtubeContent": { + "description": "The type of YouTube content which the device can output.", + "enum": [ + "ALL_YOUTUBE_CONTENT", + "NO_RESTRICTED_CONTENT" + ], + "enumDescriptions": [ + "All content can be output.", + "No restricted content can be output." + ], + "type": "string" + }, + "youtubeTvContent": { + "description": "The type of YouTube TV content which the device can output.", + "enum": [ + "ALL_YOUTUBE_TV_CONTENT", + "NO_RESTRICTED_YOUTUBE_TV_CONTENT" + ], + "enumDescriptions": [ + "All YouTube TV content can be output.", + "No restricted YouTube TV content can be output." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiProactiveOutput": { + "description": "Next ID: 7", + "id": "AssistantApiProactiveOutput", + "properties": { + "allowAllPersonalData": { + "description": "Allows displaying all personal data on proactive surfaces with no face match capability.", + "type": "boolean" + }, + "androidTvAssistantSettingsSource": { + "description": "For ANDROID_TV devices, the location that this setting was last changed from. Note: this structure allows to extend to more per-vertical bits in the future.", + "enum": [ + "NOT_SET", + "FIRST_SCREEN_DEVICE_OOBE", + "FIRST_SCREEN_KATNISS_OOBE", + "FIRST_SCREEN_DELEGATION_OOBE", + "FIRST_SCREEN_FIXER_JOB", + "FIRST_SCREEN_FCM_JOB", + "FIRST_SCREEN_HOME_GRAPH_JOB", + "FIRST_SCREEN_PERSONAL_BIT", + "FIRST_SCREEN_VOICE_INPUT_BIT", + "FIRST_SCREEN_OTHER", + "SECOND_SCREEN_AGSA", + "SECOND_SCREEN_GHA_IOS", + "SECOND_SCREEN_GHA_ANDROID" + ], + "enumDescriptions": [ + "LINT.IfChange", + "Created during ATV Device OOBE(setupwraith)", + "Created within Katniss(Assistant client on TV)", + "Created within Katniss delegation path", + "Created by fix settings job in katniss.", + "Created by FCM jobs in katnisss.", + "Created by home graph jobs in katniss.", + "Created by enable personal bit button in Settings UI", + "Created by enable voice input bit button in Settings UI", + "Created by other parts in katniss", + "Created by AGSA", + "Created by Google Home App IOS", + "Created by Google Home App Android LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log.proto)" + ], + "type": "string" + }, + "healthAndFitnessProactive": { + "description": "Allows displaying Health and Fitness content on proactive surfaces. This is a sub bit of the device-wide PR bit - the device-wide PR bit must be enabled AND this vertical sub bit must be enabled for H\u0026F content to be shown. This bit will be available on all surfaces that have the proactive-bit enabled. If the proactive-bit is not enabled, then we do not show health and fitness content at all (or even allow access to this setting).", + "enum": [ + "NO_HEALTH_AND_FITNESS_PROACTIVE_OUTPUT", + "ALL_HEALTH_AND_FITNESS_PROACTIVE_OUTPUT" + ], + "enumDescriptions": [ + "No health and fitness proactive content can be output", + "All health and fitness proactive content can be output" + ], + "type": "string" + }, + "photosProactive": { + "description": "Allows displaying photos content on Dragonglass proactive surfaces. This is a sub bit of the device-wide PR bit - the device-wide PR bit must be enabled AND this vertical sub bit must be enabled for photos content to be shown on Dragonglass surfaces. This bit will be available on all Dragonglass surfaces that have the proactive-bit enabled. If the proactive-bit is not enabled or it's not a Dragonglass surface, then we do not show proactive photos content at all, nor allow access to this setting. See go/opa-photos-sg-settings for more details.", + "enum": [ + "UNKNOWN_PHOTOS_PROACTIVE_OUTPUT", + "NO_PHOTOS_PROACTIVE_OUTPUT", + "ALL_PHOTOS_PROACTIVE_OUTPUT" + ], + "enumDescriptions": [ + "", + "No photos proactive content can be output. This indicates that user has explicitly disabled photos proactive settings.", + "All photos proactive content can be output. This indicates that user has explicitly enabled photos proactive settings." + ], + "type": "string" + }, + "supportsProactiveOutput": { + "description": "Whether a device supports proactive output. Note that this is assumed to be true for all Smart Display devices, but surfaces that newly start supporting proactive_output should set this bit.", + "type": "boolean" + }, + "userMatchProactive": { + "description": "Settings for displaying personal data on proactive surfaces with face match capability.", + "enum": [ + "UNKNOWN_USER_MATCH_PROACTIVE", + "NEVER_SHOW", + "ONLY_SHOW_ON_USER_MATCH", + "ALWAYS_SHOW" + ], + "enumDescriptions": [ + "", + "Never show proactive content.", + "Only show proactive content on Face Match.", + "Always show proactive content." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiProtobuf": { + "description": "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.", + "id": "AssistantApiProtobuf", + "properties": { + "protobufData": { + "description": "The serialized protocol buffer.", + "format": "byte", + "type": "string" + }, + "protobufType": { + "description": "The type of the protocol buffer to use. This must be a resolvable name (Namespace.ProtoName) and refer to a proto which is either compiled in to both client and server (e.g. a base proto type) or to one which is part of the conversation package.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiRecurrence": { + "description": "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. IMPORTANT: The definition of Recurrence proto is being moved to //assistant/api/core_types/governed/datetime_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new one instead.", + "id": "AssistantApiRecurrence", + "properties": { + "begin": { + "$ref": "AssistantApiDate", + "description": "The first day of the recurrence. If begin is not set, then the reminder will start infinitely in the past." + }, + "blacklistedRanges": { + "description": "A list of blacklisted dates to skip the alarm on.", + "items": { + "$ref": "AssistantApiRecurrenceDatetimeRange" + }, + "type": "array" + }, + "dayOfMonth": { + "description": "Specifies the date in a month. For example, if day_of_month is 15, then it represent the 15th day of the specified month.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "dayOfWeek": { + "description": "Specifies a weekly or daily recurrence. Constraint: The date falls on one of these days of the week, in 0...6 (Sunday...Saturday).", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "end": { + "$ref": "AssistantApiDate", + "description": "The last day of the recurrence." + }, + "every": { + "description": "Multiplier on the frequency of the recurrence. Use this to specify patterns that recur every X days, months, years, etc. Example: [remind me to call mom every 2nd week]. Default is 1 (every day, every month, every year).", + "format": "int32", + "type": "integer" + }, + "monthOfYear": { + "description": "Specifies the month in a year. Constrain: the month falls on one of these months, in 1, 2, ... 12 (January...December).", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "numOccurrences": { + "description": "The number of occurrences after which the recurrence should end.", + "format": "int32", + "type": "integer" + }, + "weekOfMonth": { + "description": "Specifies the index of week in a month. For example, the second Tuesday every month, in this case, week_of_month should be 2.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiRecurrenceDatetimeRange": { + "description": "A representation of a range of time with start and end datetime specified.", + "id": "AssistantApiRecurrenceDatetimeRange", + "properties": { + "endDate": { + "$ref": "AssistantApiDateTime", + "description": "End date of the range." + }, + "startDate": { + "$ref": "AssistantApiDateTime", + "description": "Start date of the range." + } + }, + "type": "object" + }, + "AssistantApiScreenCapabilities": { + "description": "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: 10", + "id": "AssistantApiScreenCapabilities", + "properties": { + "inputType": { + "description": "The types of input that this screen supports. Note that this can be empty in which case the screen's input type is unknown.", + "items": { + "enum": [ + "TOUCHSCREEN" + ], + "enumDescriptions": [ + "The device has a screen that support touch input." + ], + "type": "string" + }, + "type": "array" + }, + "mask": { + "$ref": "AssistantApiScreenCapabilitiesMask", + "description": "Mask defined for this device, if any." + }, + "protoLayoutTargetedSchema": { + "$ref": "AssistantApiScreenCapabilitiesProtoLayoutVersion", + "description": "The targeted schema version for ProtoLayout requests." + }, + "resolution": { + "$ref": "AssistantApiScreenCapabilitiesResolution", + "description": "If this field is absent, the resolution of the screen is unknown." + }, + "screenOff": { + "description": "If screen is turned off.", + "type": "boolean" + }, + "screenStateDetection": { + "description": "The ability of the client to correctly report screen state.", + "enum": [ + "UNKNOWN_SCREEN_STATE_DETECTION", + "UNRELIABLE_SCREEN_STATE_DETECTION", + "RELIABLE_SCREEN_STATE_DETECTION" + ], + "enumDescriptions": [ + "", + "The client reports screen state but may be unreliable based on different remotes/inputs used to turn the screen off. Example: Android TVs with soundbars.", + "" + ], + "type": "string" + }, + "supportedRenderingFormat": { + "description": "The primary supported rendering format for display on the device's screen. This may be used to determine what format of card to be returned when rendering cards.", + "enum": [ + "UNKNOWN_RENDERING_FORMAT", + "CONCISE_TEXT", + "PROTO_LAYOUT" + ], + "enumDescriptions": [ + "", + "Concise Text go/concise-text-responses", + "Proto Layout, the layout for Proto Tiles go/prototiles" + ], + "type": "string" + }, + "supportedScreenStates": { + "description": "The screen states that the client supports. The current screen state is specified in DeviceProperties.screen.", + "items": { + "enum": [ + "UNKNOWN_SCREEN_STATE", + "ON", + "OFF" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "visionHelpEnabled": { + "description": "Whether the device enabled vision help features in accessiblity settings. The settings is config in Assistant App and on-device settings, and stored in footprints. When enabled, font, color and TTS will be adjusted.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiScreenCapabilitiesMask": { + "description": "A mask applied to the screen's pixel space to determine regions not visible on the physical device.", + "id": "AssistantApiScreenCapabilitiesMask", + "properties": { + "type": { + "enum": [ + "UNKNOWN_MASK", + "NO_MASK", + "ROUND_MASK" + ], + "enumDescriptions": [ + "Default value.", + "Used for devices with no mask. In this case, every point in the region defined by width_px and height_px corresponds to a physical, visible pixel. This is distinct from rectangular screens that DO have regions with no pixels, e.g. an inset or cutout that occludes one or more sides of the screen.", + "Used for devices with oval or circular screens. The vertical and horizontal resolution of the screen determines the vertical and horizontal diameters of the oval. Pixels outside this oval region are non-existent or physically occluded." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiScreenCapabilitiesProtoLayoutVersion": { + "description": "Version info for ProtoLayout requests.", + "id": "AssistantApiScreenCapabilitiesProtoLayoutVersion", + "properties": { + "major": { + "format": "uint32", + "type": "integer" + }, + "minor": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiScreenCapabilitiesResolution": { + "description": "A Resolution proto indicates the size of the application window. All fields are required.", + "id": "AssistantApiScreenCapabilitiesResolution", + "properties": { + "dpi": { + "description": "Dots (pixels) per inch of the screen.", + "format": "int32", + "type": "integer" + }, + "heightPx": { + "format": "int32", + "type": "integer" + }, + "mSize": { + "description": "m_size is the smallest square box size to display a capital letter M so that the user can still easily understand it.", + "format": "int32", + "type": "integer" + }, + "nengSize": { + "description": "neng_size is the smallest square box size to display a letter 螚 (Neng, U+879A) so that the user can easily understand it. (Neng is a visually dense Chinese letter, and so may require a larger box than an M.)", + "format": "int32", + "type": "integer" + }, + "widthPx": { + "description": "The dimensions of the application window, in pixels.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiSelinaCapabilites": { + "description": "The Soli capabilities on Elaine, including gestures and sleep sensing. go/dingo-dc-software Next ID: 4", + "id": "AssistantApiSelinaCapabilites", + "properties": { + "gestureCapabilities": { + "$ref": "AssistantApiGestureCapabilities", + "description": "A list of gestures that selina supports" + }, + "selinaSupported": { + "description": "Whether the client supports selina.", + "type": "boolean" + }, + "sleepSensingSupported": { + "description": "Whether the client can monitor sleep. This allows us to show sleep CUJ related information: go/TwilightDesign", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsAmbientSettings": { + "id": "AssistantApiSettingsAmbientSettings", + "properties": { + "anyUserHasSetPersonalPhotos": { + "description": "Whether any user sets personal photos on this device. See go/ambient-setting-in-assistant-design.", + "type": "boolean" + }, + "recentHighlightsEnabled": { + "description": "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.", + "type": "boolean" + }, + "showPersonalPhotoData": { + "description": "Whether to enable the personal photo data in the ambient settings: https://screenshot.googleplex.com/Wd4OFkQfOyF See go/opa-photos-ambient-location-date-dd#heading=h.5x4iaouuiett for explanation.", + "type": "boolean" + }, + "showPersonalPhotos": { + "description": "Whether current user sets personal photos on this device. See go/ambient-setting-in-assistant-design.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsAppCapabilities": { + "description": "These capabilties are associated with Assistant Settings on devices.", + "id": "AssistantApiSettingsAppCapabilities", + "properties": { + "carSettingsCapabilities": { + "$ref": "AssistantApiCarSettingsCapabilities", + "description": "Capabilities that are associated with Assistant Settings on auto surfaces." + }, + "reissueQueryAfterMusicSetup": { + "description": "Whether the client supports reissuing query after setting up in Music Settings.", + "type": "boolean" + }, + "supportsPaymentsSettingsUpdate": { + "description": "Whether the client supports updating payments setting.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsAutoFramingSettings": { + "description": "Settings pertaining to auto framing. See go/auto-framing-presentation.", + "id": "AssistantApiSettingsAutoFramingSettings", + "properties": { + "isAutoFramingEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsCarrierCallDeviceSettings": { + "description": "Carrier related call settings on the device.", + "id": "AssistantApiSettingsCarrierCallDeviceSettings", + "properties": { + "allowIncomingCalls": { + "description": "Whether this device is allowed to receive incoming PSTN calls.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsCommunicationsFilter": { + "description": "Specification of which communication features can be used.", + "id": "AssistantApiSettingsCommunicationsFilter", + "properties": { + "state": { + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL", + "BLOCK_CALLS_AND_MESSAGES" + ], + "enumDescriptions": [ + "", + "Allow all communication features.", + "Allow all communication features, with the exception of calls and messages." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsDeviceDowntimeSettings": { + "description": "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", + "id": "AssistantApiSettingsDeviceDowntimeSettings", + "properties": { + "schedules": { + "items": { + "$ref": "AssistantApiSettingsLabeledDowntimeSchedule" + }, + "type": "array" + }, + "targets": { + "description": "The set of users of this device that will have these downtime settings applied. Must have at least one element.", + "items": { + "enum": [ + "UNKNOWN_DEVICE_SUPERVISION_TARGET", + "EVERYONE", + "KID_ACCOUNTS", + "GUESTS" + ], + "enumDescriptions": [ + "", + "All people that use the device.", + "Users with a Unicorn account that are voice-matched to the device.", + "Users interacting with the device without being voice matched. We cannot identify these users and don't know their ages." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSettingsDeviceFeatureFilters": { + "description": "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", + "id": "AssistantApiSettingsDeviceFeatureFilters", + "properties": { + "enabled": { + "description": "Enables/disables all the filters at the same time. For new devices or non-Cast devices this is always false.", + "type": "boolean" + }, + "featureFilters": { + "$ref": "AssistantApiSettingsFeatureFilters", + "description": "The filters (feature restrictions) to apply when `enabled` is true." + }, + "targets": { + "description": "The set of users of this device that will have these settings applied. Must have at least one element.", + "items": { + "enum": [ + "UNKNOWN_DEVICE_SUPERVISION_TARGET", + "EVERYONE", + "KID_ACCOUNTS", + "GUESTS" + ], + "enumDescriptions": [ + "", + "All people that use the device.", + "Users with a Unicorn account that are voice-matched to the device.", + "Users interacting with the device without being voice matched. We cannot identify these users and don't know their ages." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSettingsDeviceLogsOptIn": { + "id": "AssistantApiSettingsDeviceLogsOptIn", + "properties": { + "optInEnabled": { + "description": "Indicates whether the crash logs can be uploaded and the device logs can be enabled", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsDeviceSettings": { + "description": "Next ID: 73", + "id": "AssistantApiSettingsDeviceSettings", + "properties": { + "ackStatus": { + "description": "LINT.ThenChange(//depot/google3/assistant/ui/assistant_device_settings_ui.proto)", + "enum": [ + "ACK_COMPLETED", + "ACK_PENDING" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "address": { + "description": "A human-readable address string for the location; generally a one-line address such as \"34 Masonic Ave, San Francisco CA 94117, United States\". Set this field to empty string for deletion, in which case the rest of the location related fields below will be cleared as well.", + "type": "string" + }, + "aliasName": { + "description": "The alias names of the device, e.g. my living room tv, tv, living room and etc., which user will usually use to refer to the device in addition to human_friendly_name. It can help speech biasing and query understanding. This field is set by the user and already localized.", + "items": { + "type": "string" + }, + "type": "array" + }, + "allowIncomingCalls": { + "description": "Whether this device is allowed to receive incoming calls.", + "type": "boolean" + }, + "ambientSettings": { + "$ref": "AssistantApiSettingsAmbientSettings", + "description": "Ambient settings contains the configuration of Photo Frame on DG device. This field relies on IMAX service to do the update, sync happenes after user updates IMAX device settings or a device registers in CloudCastDevice. So it's more like a cached version instead of definitive source-of-truth. More details at go/ambient-setting-in-assistant-design." + }, + "ancillaryDeviceId": { + "$ref": "AssistantApiSettingsInternalAncillaryDeviceId", + "description": "The additional device ids. Currently used only for ATV. go/project-yellowstone Note: This field is for internal (Within settings) use only." + }, + "autoFramingSettings": { + "$ref": "AssistantApiSettingsAutoFramingSettings", + "description": "Auto framing settings associated with a device. See go/auto-framing-presentation." + }, + "blueSteelEnabled": { + "description": "Indicates whether the user has enabled Blue Steel. See go/blue-steel for more info on this project.", + "type": "boolean" + }, + "capabilities": { + "$ref": "AssistantApiDeviceCapabilities", + "description": "Describes roughly what a device is capable of doing and metadata around those capabilities. Note: this includes device limitations as well as user configurable settings." + }, + "city": { + "description": "city and postal_code are sent to third party AoG Apps as location when permission is granted for precise or coarse location. https://developers.google.com/actions/reference/rest/Shared.Types/Permission city and postal_code have the same description as in Proto Postal Address: https://cs.corp.google.com/piper///depot/google3/location/country/postaladdress.proto city corresponds to locality_name, postal_code corresponds to postal_code_number. These two fields are set in assistant_settings_service by AddressConverter. https://cs.corp.google.com/piper///depot/google3/location/addressformatter/public/addressconverter.h See go/aog-i18n-address-parse for more information", + "type": "string" + }, + "colocationStatus": { + "description": "Status of colocation. go/co-location-work-v2 Note: this is a cache at the Assistant level. The source of truth is inside CastAuthenticationServer, which is only used for Home devices.", + "enum": [ + "COLOCATION_UNKNOWN", + "COLOCATION_ESTABLISHED", + "COLOCATION_NOT_ESTABLISHED", + "COLOCATION_NOT_SUPPORTED" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "creationTimestampMs": { + "description": "The timestamp that the device is linked with the user in milliseconds.", + "format": "int64", + "type": "string" + }, + "crossSurfaceAvailability": { + "$ref": "AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability", + "description": "Availability of this device for Assistant Cross-surface handoffs. (go/assistant-cross-surface)" + }, + "defaultAudioDeviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "The identification of the default device which user want to output audio. See go/default-media-output-design for more info." + }, + "defaultVideoDeviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "The identification of the default device which user want to output video. Note that, we don't fallback to this for audio playback when default_audio_device_id is not set. See go/default-media-output-design for more info." + }, + "deviceBrand": { + "description": "The brand of the device, populated from DeviceOemParams. Examples: \"google\", \"samsung\".", + "type": "string" + }, + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "The identification of the device." + }, + "deviceModelId": { + "description": "The model ID of the device. This should be globally unique across manufactures/OEMs. Examples: \"nest_cam_iq_2017\", \"comcast_voice_box_2017\".", + "type": "string" + }, + "deviceModelRevision": { + "description": "The Device Platform Service lookup revision. (go/device-model-revision) For 1p devices, and most 3p devices with no custom feature, this should be always 0, which means no lookup needed. For 3p devices with custom assistant feature, this is provided directly by OEM as incremental (e.g. 1, 2, 3, ...)", + "format": "int32", + "type": "integer" + }, + "dusi": { + "description": "Only valid for ATV. Stores the android DUSI for the corresponding user. More details: go/auto-logout-on-unlink.", + "type": "string" + }, + "faceEnrollmentErrors": { + "description": "List of errors that happened during the face enrollment process if it failed. See go/face-match-enrollment-error for more info.", + "items": { + "enum": [ + "UNKNOWN_FACE_ENROLLMENT_ERROR", + "MISSING_FRONTAL_POSE", + "FACE_NOT_DETECTED", + "MULTIPLE_FACE_DETECTED", + "FACE_WITHOUT_SIGNATURE", + "FACE_DETECTION_LOW_CONFIDENCE", + "FACE_LANDMARK_LOW_CONFIDENCE", + "FACE_WITHOUT_CONFIDENCE", + "FACE_TOO_SMALL", + "FAILED_TO_READ_IMAGE", + "FAILED_TO_DECODE_IMAGE", + "FACE_DETECTION_ERROR", + "FACE_WITHOUT_EMBEDDING_CONFIDENCE" + ], + "enumDescriptions": [ + "", + "The gallery images don't have the required frontal pose properties.", + "Face was NOT detected in an image.", + "Multiple faces detected in an image.", + "Cannot create signature for a detected face.", + "Face detection confidence score is too low.", + "Face detection landmark confidence score is too low.", + "Face detection contains no confidence score, which is invalid.", + "Face detection was too small for enrollment.", + "Unable to read the image file from the gallery.", + "Unable to decode the jpeg image.", + "Unable to run face detector on the decoded image.", + "Face detection contains no confidence score for embedding." + ], + "type": "string" + }, + "type": "array" + }, + "faceEnrollmentStatus": { + "description": "Indicates whether the user's face has been successfully enrolled on this device. See go/face-match-server-design for more info.", + "enum": [ + "UNKNOWN_STATUS", + "SUCCESS", + "FAILURE", + "PENDING" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "faceMatchEnabled": { + "description": "Indicates whether the user has enabled Face Match for this device. See go/face-match-server-design for more info on this project.", + "type": "boolean" + }, + "flAudioCacheEnabled": { + "description": "When true, allow data collection of audio on this device for Federated Learning.", + "type": "boolean" + }, + "flVisualFramesCacheEnabled": { + "description": "When true, allow data collection of frames on this device.", + "type": "boolean" + }, + "gcmSettings": { + "$ref": "AssistantApiSettingsGcmSettings", + "description": "Stores GCM info associated with a device. See go/quartz-design-doc for more info." + }, + "homeGraphData": { + "$ref": "AssistantApiSettingsHomeGraphData", + "description": "Holds the data that should be written to HomeGraph. Note: this field is not persisted in Assistant Settings storage. It is simply used for transporting data when client calls UpdateSettings." + }, + "homeGraphId": { + "description": "The home graph ID that can be used to lookup the corresponding entry in HomeGraph. go/home-graph. Note: when this field is empty, it doesn't necessarily mean that the device is not in home graph. It just means that Assistant doesn't know about the mapping.", + "type": "string" + }, + "hospitalityModeStatus": { + "$ref": "AssistantApiSettingsHospitalityMode", + "description": "Indicates whether the device is currently in Hospitality mode. go/hospitality-mode-design. This is moved to a per user setting in assistant settings. ref. go/hospitality-settings-v2" + }, + "hotwordSensitivity": { + "description": "The level of hotword sensitivity. go/hotword-sensitivity-prd", + "enum": [ + "UNKNOWN_HOTWORD_SENSITIVITY", + "HOTWORD_SENSITIVITY_LOW", + "HOTWORD_SENSITIVITY_NORMAL", + "HOTWORD_SENSITIVITY_HIGH", + "HOTWORD_SENSITIVITY_LOW_2", + "HOTWORD_SENSITIVITY_HIGH_2" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "hotwordThresholdAdjustmentFactor": { + "$ref": "AssistantApiSettingsHotwordThresholdAdjustmentFactor", + "description": "HotwordThresholdAdjustmentFactor contains threshold_adjustment_factor, and it's validity. TAF is a measure of adjustment applied to the hotword threshold as a result of go/autotune. Currently, this is updated from query_settings_frame, but if we move to updating it from the client, this could also contain TAFs as a result of Hotword Sensitivity, in addition to Autotune." + }, + "humanFriendlyName": { + "description": "The human-friendly name of the cast device, e.g., my living room tv. This field is set by the user and already localized.", + "type": "string" + }, + "internalVersion": { + "$ref": "AssistantApiSettingsInternalVersion", + "description": "Internal version of the DeviceSettings for measurement of the DeviceSettings mutation race conditions. See go/consistent-assistant-settings-update." + }, + "isCloudSyncDevice": { + "description": "Indicates whether the device is also managed through HA cloud sync. go/ha-dev-guide", + "type": "boolean" + }, + "isDeviceActivationCacheEnabled": { + "description": "When true, the user has explicitly allowed audio and visual data collection on this device", + "type": "boolean" + }, + "kidsMode": { + "$ref": "AssistantApiSettingsKidsMode", + "description": "Specifies if kids-mode is enabled for the device. See go/aff-parentalsupervision-dd." + }, + "lastCastRegistrationTimestamp": { + "description": "Device's latest registration timestamp provided by Cast side. This field is not necessarily up to date. The update frequency is defined in last_registration_update_frequency_in_days field of AssistantConfig in java/com/google/chrome/dongle/common/proto/home_assistant_config.proto. go/cast-last-registration-time", + "format": "google-datetime", + "type": "string" + }, + "lastUsedCoarseTimestamp": { + "description": "Coarsened hourly timestamp of when the device was last used.", + "format": "google-datetime", + "type": "string" + }, + "linkedDeviceId": { + "description": "Stores pairing between different devices. See go/quartz-design-doc for more info.", + "items": { + "$ref": "AssistantApiCoreTypesDeviceId" + }, + "type": "array" + }, + "linkedUsers": { + "description": "Please do NOT use this field without prior approval from PWG. Users who have signed in onto this device, go/linked-users-in-pkg.", + "items": { + "$ref": "AssistantApiSettingsLinkedUser" + }, + "type": "array" + }, + "locale": { + "description": "The locale for the device: language + region, i.e., en-US, ja-JP.", + "type": "string" + }, + "locationCoordinates": { + "$ref": "AssistantApiCoreTypesLocationCoordinates", + "description": "Coordinate information of the device location." + }, + "locationFeature": { + "$ref": "GeostoreFeatureProto", + "description": "The feature proto of the location of the device. Note: client does not need to populate this. It will be auto-populated based on \"address\" field on server side. Currently, only \"bound\" and \"type\" are persisted, since the entire FeatureProto is too big." + }, + "marketplaceDisclosure": { + "$ref": "AssistantApiSettingsMarketplaceDisclosure", + "description": "See go/marketplace-disclosure for more info." + }, + "masqueradeMode": { + "$ref": "AssistantApiSettingsMasqueradeMode" + }, + "notificationProfile": { + "$ref": "AssistantApiSettingsNotificationProfile", + "description": "Information about how to send the user a notification. This won't be populated for fb-conv users (allo group chat users)." + }, + "oauthClientId": { + "description": "OAuth client id for the device. This field is available for Assistant SDK devices. It is written when the device is registered to the user (AssistantSettingsUiService.LinkAssistantDeviceUi). When user revokes grant on the Assistant device, Assistant Devices Platform Service will receive Pubsub notification with OAuth client id for the revoked device, and we will compare that with this stored id to identity device to remove.", + "type": "string" + }, + "onDeviceAppSettings": { + "$ref": "AssistantApiSettingsOnDeviceAppSettings", + "description": "Device specific app related settings." + }, + "optInStatus": { + "$ref": "AssistantApiSettingsDeviceLogsOptIn", + "description": "Specifies if device logs and crashes can be captured during SendFeedback" + }, + "paymentsEnabled": { + "description": "DEPRECATED: Use DeviceCapabilities.OutputRestrictions.personal_data instead. Whether the user has enabled payments for this device.", + "type": "boolean" + }, + "personalizationMetadata": { + "$ref": "AssistantApiSettingsPersonalizationMetadata", + "description": "Metadata about how personalization settings were configured." + }, + "politeMode": { + "$ref": "AssistantApiSettingsPoliteMode", + "description": "Specify whether polite mode is enabled for this device. See go/pretty-please-dd." + }, + "postalCode": { + "type": "string" + }, + "reauthTrustedDeviceSettings": { + "$ref": "AssistantApiSettingsReauthTrustedDeviceSettings", + "description": "Trusted device preferences Assistant reauth. go/assistant-reauth-verify-skip." + }, + "shortenedAddress": { + "description": "A human-readable shortened address. This is usually the street address. Note: client does not need to populate this. It will be auto-populated based on \"address\" field on server side. Developers can use this field to avoid reading out the full address everytime.", + "type": "string" + }, + "speakerIdEnabled": { + "description": "Indicates whether the user has enabled speaker-id for this device. See go/google-assistant-multi-user for more info on this project.", + "type": "boolean" + }, + "speechOutputSettings": { + "$ref": "AssistantApiSettingsSpeechOutputSettings", + "description": "Settings related to TTS output." + }, + "speechSettings": { + "$ref": "AssistantApiSettingsSpeechSettings", + "description": "Speech/hotword detection related settings." + }, + "supervisionSettings": { + "$ref": "AssistantApiSettingsDeviceSupervisionSettings", + "description": "Restrictions on how and when certain users can use a device. See go/home-ft-prd." + }, + "surfaceType": { + "$ref": "AssistantApiCoreTypesSurfaceType", + "description": "The type of assistant surface. Only use this field when device type is ASSISTANT." + }, + "tetheredInfo": { + "$ref": "AssistantApiSettingsTetheredInfo", + "description": "Presence indicates a tethered wearable. go/wearable-device-ids." + }, + "timeZone": { + "$ref": "AssistantApiTimeZone", + "description": "Device time zone. It's mainly used for a one-time notification for new users when they just bought and activated their devices. They may not have used Search or Assistant before, so their timezone info may not available elsewhere when we want to send a notification. This should be used as a fallback only when other timezone sources such as assistant_settings:user_attribute#inferred_user_timezone are not available. Also, when both |time_zone| and |location| are set, the |location| should be preferred to derive the most up to date timezone. This info directly comes from the device through early device setting recording mechanism. See more details at go/early-device-setting-recording." + }, + "truncatedLocalNetworkId": { + "description": "Local network ID of the device (truncated to obfuscate devices and households globally). This is a temporary signal to determine proximity of Assistant devices in a house (HGS place).", + "type": "string" + }, + "trustedVoiceEnabled": { + "description": "DEPRECATED: Use speech_settings instead. Indicates whether the user has enabled trusted voice for this device. See go/hotword-settings-on-cloud for more info on this project.", + "type": "boolean" + }, + "type": { + "description": "The type of the device. Note: this should only be used for grouping devices for UI presentation purpose. Use |capabilities| to decide what the device can do.", + "enum": [ + "UNKNOWN_DEVICE_TYPE", + "ASSISTANT", + "HOME_AUTOMATION", + "CAST", + "CAST_GROUP", + "QUARTZ", + "QUARTZ_IOS", + "CLOUD_AUTO" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Quartz in AGSA", + "Quartz in iOPA", + "Non-assistant Auto devices from Cloud." + ], + "type": "string" + }, + "verboseTtsForChromecastEnabled": { + "description": "Indicates whether to play verbose tts for Elementary on chirp. See: go/opa-cast-a11y-impl-design fore more info on this project. Note: this should probably be in SpeechOutputSetting below.", + "type": "boolean" + }, + "vmLastUsedCoarseTimestamp": { + "description": "Coarsened hourly timestamp of when the user was last verified by VoiceMatch on this device. This is used for enforcing VoiceMatch model TTL. go/voicematch-pdd-ttl", + "format": "google-datetime", + "type": "string" + }, + "voiceEnrollmentStatus": { + "description": "Indicates whether the user's voice has been successfully enrolled on this device.", + "enum": [ + "VOICE_ENROLLMENT_UNKNOWN_STATUS", + "VOICE_ENROLLMENT_SUCCESS", + "VOICE_ENROLLMENT_FAILURE", + "VOICE_ENROLLMENT_PENDING" + ], + "enumDescriptions": [ + "User has no utterances and no speaker id model.", + "User has speaker id model.", + "User has utterances but no speaker id model (for ex. hotword was not detected in utterances).", + "Speaker id model generation is in-progress." + ], + "type": "string" + }, + "voiceInputEnabled": { + "description": "A boolean indicates whether voice input (mic-button, hotword, etc) is enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability": { + "id": "AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability", + "properties": { + "lastKnownClientLocale": { + "description": "Last known locale of the client.", + "type": "string" + }, + "lastParamsWriteTimestamp": { + "description": "This is the timestamp when the AssistantRequestParams (in ASSISTANT_SNAPSHOT corpus) were last written for this device.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsDeviceSupervisionSettings": { + "id": "AssistantApiSettingsDeviceSupervisionSettings", + "properties": { + "downtimeSettings": { + "$ref": "AssistantApiSettingsDeviceDowntimeSettings", + "description": "Specification of times that a device shouldn't respond to certain users. See go/home-ft-prd." + }, + "featureFilters": { + "$ref": "AssistantApiSettingsDeviceFeatureFilters", + "description": "Restrictions on features that certain users can access on a device. See go/home-ft-prd." + } + }, + "type": "object" + }, + "AssistantApiSettingsDowntimePeriod": { + "description": "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.", + "id": "AssistantApiSettingsDowntimePeriod", + "properties": { + "enabled": { + "description": "True if downtime should be enabled during this period.", + "type": "boolean" + }, + "endTime": { + "$ref": "GoogleTypeTimeOfDay", + "description": "Time of day that this downtime period should end. Required. If end_time \u003e start_time, end_time is relative to start_day. Otherwise, end_time is relative to the day after start_day. For example, start_day: MONDAY, start_time: 9 p.m., end_time: 6 a.m. means that the downtime period starts at 9 p.m. on Monday and ends at 6 a.m. on Tuesday." + }, + "startDay": { + "description": "The day of the week when this downtime period starts. Required.", + "enum": [ + "DAY_OF_WEEK_UNSPECIFIED", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ], + "enumDescriptions": [ + "The day of the week is unspecified.", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "type": "string" + }, + "startTime": { + "$ref": "GoogleTypeTimeOfDay", + "description": "Time of day that this downtime period should start. Required." + } + }, + "type": "object" + }, + "AssistantApiSettingsDowntimeSchedule": { + "description": "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.", + "id": "AssistantApiSettingsDowntimeSchedule", + "properties": { + "enabled": { + "description": "True if this downtime schedule should be enabled.", + "type": "boolean" + }, + "periods": { + "description": "Downtime entries for the days of the week, in no particular order. There can be at most one period defined for each day of the week. Days of the week with no explicit period defined are treated as disabled, so the device is available all day (modulo an end time that may spill over from the previous day).", + "items": { + "$ref": "AssistantApiSettingsDowntimePeriod" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSettingsDuoCallDeviceSettings": { + "description": "Duo related call settings on the device. Next ID: 5", + "id": "AssistantApiSettingsDuoCallDeviceSettings", + "properties": { + "allowKnockKnock": { + "description": "True if Duo Knock Kncok feature is enabled on the device.", + "type": "boolean" + }, + "shouldBeLinked": { + "description": "Boolean indicating if user has explicitly marked this device to be linked or not. This bit is used in case where unexpected errors occur and we have to check for account/device status and mark the device linked after verification.", + "type": "boolean" + }, + "state": { + "description": "The call state of the device (i.e. whether an Duo call account has been setup on the device).", + "enum": [ + "UNKNOWN_LINK_STATE", + "NOT_LINKED", + "LINKED", + "LINKED_WAITING", + "LINK_ERROR" + ], + "enumDescriptions": [ + "", + "The user chose not to link the app.", + "The user completed linking the app.", + "The user chose to link the app, but the linking has not completed yet.", + "There was some error in link state and link state should be refreshed by querying tachyon backend. But this does not guarantee that state will be linked after this request." + ], + "type": "string" + }, + "talkbackEnabled": { + "description": "Client device settings: settings which are populated by client to give to duocore. TalkBack is an accessibility service that helps blind and vision-impaired users interact with their devices. Indicates whether talkback is enabled for the device. Note: this is per device settings currently filled by client for all users.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsFeatureFilters": { + "description": "Specification of which assistant features are allowed for a particular device or user account.", + "id": "AssistantApiSettingsFeatureFilters", + "properties": { + "communicationsFilter": { + "$ref": "AssistantApiSettingsCommunicationsFilter" + }, + "musicFilter": { + "$ref": "AssistantApiSettingsMusicFilter" + }, + "newsFilter": { + "$ref": "AssistantApiSettingsNewsFilter" + }, + "podcastFilter": { + "$ref": "AssistantApiSettingsPodcastFilter" + }, + "searchFilter": { + "$ref": "AssistantApiSettingsSearchFilter" + }, + "thirdPartyAppsFilter": { + "$ref": "AssistantApiSettingsThirdPartyAppsFilter" + }, + "videoFilter": { + "$ref": "AssistantApiSettingsVideoFilter" + }, + "webviewFilter": { + "$ref": "AssistantApiSettingsWebviewFilter" + } + }, + "type": "object" + }, + "AssistantApiSettingsGcmSettings": { + "id": "AssistantApiSettingsGcmSettings", + "properties": { + "gcmId": { + "type": "string" + }, + "gcmPackage": { + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsHomeGraphData": { + "description": "Next ID: 8", + "id": "AssistantApiSettingsHomeGraphData", + "properties": { + "agentId": { + "description": "Agent ID, aka project ID. Used as the AgentDeviceId.agent_id of device when calling Home Graph Service.", + "type": "string" + }, + "attributes": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "See go/ha-dev-guide and HomeGraphItem.attribute in //assistant/verticals/homeautomation/proto/home_graph.proto", + "type": "object" + }, + "deviceId": { + "description": "Device ID, used as AgentDeviceId.device_id of device when calling Home Graph Service.", + "type": "string" + }, + "deviceType": { + "description": "HGS device type. See java/com/google/home/graph/service/config/protoconf.pi for the exhaustive list of type strings.", + "type": "string" + }, + "shouldWriteToHomeGraph": { + "description": "Whether device data should be written to Home Graph via Assistant device_settings. Assistant SDK and Google Home write their devices into Home Graph through AssistantSettingsService, while Home Automation Partner devices (e.g. SmartThings, Philips Hue, Nest, TP-Link, etc.) don't need to be written to Home Graph through AssistantSettingsService. This field decides whether AssistantSettingsService writes devices to Home Graph or not.", + "type": "boolean" + }, + "supportedTraits": { + "description": "Supported traits of the device. See java/com/google/home/graph/service/config/protoconf.pi for the exhaustive list of trait-strings.", + "items": { + "type": "string" + }, + "type": "array" + }, + "supportsDirectResponse": { + "description": "Whether the device supports direct response. See HomeGraphItem.supports_direct_response in //assistant/verticals/homeautomation/proto/home_graph.proto", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsHospitalityCardSettings": { + "id": "AssistantApiSettingsHospitalityCardSettings", + "properties": { + "cardConfig": { + "description": "Config for Hospitality UI modules.", + "items": { + "$ref": "AssistantApiSettingsHospitalityCardSettingsCardConfig" + }, + "type": "array" + }, + "showMediaTapGestureTutorial": { + "description": "Toggle media tap gesture tutorial card.", + "type": "boolean" + }, + "showPhotoSwipeGestureTutorial": { + "description": "Toggle photo swipe gesture tutorial card.", + "type": "boolean" + }, + "youtubeCardConfig": { + "description": "Config for YouTube video cards.", + "items": { + "$ref": "AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSettingsHospitalityCardSettingsCardConfig": { + "description": "Configuration for hospitality card.", + "id": "AssistantApiSettingsHospitalityCardSettingsCardConfig", + "properties": { + "activeActionRequired": { + "description": "Whether the UI module requires user action. If true, the UI module can peek on to the top of Ambient. See SmartDisplayModuleState::ACTIVE_ACTION_REQUIRED.", + "type": "boolean" + }, + "dismissable": { + "description": "Whether the UI module is dismissable.", + "type": "boolean" + }, + "effectiveTime": { + "$ref": "AssistantApiTimestamp", + "description": "The time that the module is effective and visible to the user. If not set, the module is effective immediately." + }, + "expiryTime": { + "$ref": "AssistantApiTimestamp", + "description": "The time that the module is expired and invisible to the user. If not set, the module never expires." + }, + "imageUrl": { + "description": "The image URL for the UI module.", + "type": "string" + }, + "moduleId": { + "description": "Module ID.", + "enum": [ + "UNKNOWN", + "MID_STAY_SURVEY", + "CHECK_OUT", + "CHECK_IN", + "RESET" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "payloadQuery": { + "description": "Payload query to the partner AoG action when user responds to UI Module, e.g. “Tell the hotel how my stay is going”.", + "type": "string" + }, + "title": { + "description": "Title of the message to be shown to user at the top of the UI Module.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig": { + "description": "Configuration for YouTube video card (Stargazer tile).", + "id": "AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig", + "properties": { + "imageUrl": { + "description": "URL of image to go on card. The URL must be a public link accessible from ZeroState.", + "type": "string" + }, + "playlistId": { + "description": "ID of YouTube playlist to play on card tap. A playlist is used instead of a single video id to avoid autoplaying related videos. The playlist and the videos it contains must be public or unlisted to be accessible from ZeroState.", + "type": "string" + }, + "text": { + "description": "Text on card (i.e., video title).", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsHospitalityMode": { + "description": "Hospitality mode config for the current device. go/hospitality-mode-design. Next ID: 17", + "id": "AssistantApiSettingsHospitalityMode", + "properties": { + "aogContextId": { + "description": "List of AOG app context ids that are linked to this device. These apps will have access to the structure information for the device.", + "items": { + "type": "string" + }, + "type": "array" + }, + "aogInvocationPhrase": { + "description": "Invocation phrase for hotel's AoG action. Used for ZS promotion card and \"talk to my hotel\" rewrites. Setting this to an empty value will mark it unset.", + "type": "string" + }, + "branding": { + "$ref": "AssistantApiSettingsHospitalityModeBranding" + }, + "cardSettings": { + "$ref": "AssistantApiSettingsHospitalityCardSettings" + }, + "deviceClearRequest": { + "$ref": "AssistantApiTimestamp", + "description": "The time when we received a request to reset the device." + }, + "dialogTtlOverrideMicros": { + "description": "Should the dialog have a shorter ttl. See go/ipp-consumer-prd#heading=h.ibu9b1ysdl4t and go/interpreter-device-clear#bookmark=id.hw8ey1bzjadn for context.", + "format": "int64", + "type": "string" + }, + "enterpriseId": { + "description": "Identifier for the enterprise which owns the device. Setting this to an empty value will mark it unset.", + "type": "string" + }, + "hospitalityModeEnabled": { + "description": "Indicates whether this device is in the hospitality mode.", + "type": "boolean" + }, + "lastDeviceClear": { + "$ref": "AssistantApiTimestamp", + "description": "Last time the device was cleared and placed in hospitality mode. Will be set when the switch is toggled on and reset when a guest checks out. On the device this triggers removing alarms, timers, etc." + }, + "lastModifiedTimestamp": { + "$ref": "AssistantApiTimestamp", + "description": "Indicates when hospitality settings were last updated." + }, + "lastWelcomed": { + "$ref": "AssistantApiTimestamp", + "description": "Last time the welcome message was played for the guest. If last_welcomed \u003c welcome_request, the message should be replayed and this time set." + }, + "manualResetRequired": { + "description": "Indicates whether or not the device must be reset manually (by voice or touch), as opposed to being automatically reset. go/hospitality-manual-reset", + "type": "boolean" + }, + "promotedLanguages": { + "description": "In order promoted languages for interpreter devices. This represents languages by BCP-47 language strings, such as \"en\", \"en-US\", \"fr\", \"fr-CA\", \"sr-Latn\", \"zh-Hans-CN\", \"zh-Hant-HK\",etc.", + "items": { + "type": "string" + }, + "type": "array" + }, + "type": { + "enum": [ + "UNKNOWN_TYPE", + "HOTEL_ROOM", + "INTERPRETER", + "SENIOR_LIVING_ROOM", + "RETAIL_DEMO" + ], + "enumDescriptions": [ + "", + "", + "go/hospitality-interpreter-mode", + "go/merrill-prd", + "go/assistant-retail-demo" + ], + "type": "string" + }, + "verbalResetSupported": { + "description": "Whether we allow users to initiate clearing the device verbally. We generally allow this for private devices and not for public ones.", + "type": "boolean" + }, + "welcomeRequest": { + "$ref": "AssistantApiTimestamp", + "description": "The time when we received a request to welcome the user." + } + }, + "type": "object" + }, + "AssistantApiSettingsHospitalityModeBranding": { + "description": "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", + "id": "AssistantApiSettingsHospitalityModeBranding", + "properties": { + "displayName": { + "description": "Brand display in the UI", + "type": "string" + }, + "displayNameForLanguage": { + "additionalProperties": { + "type": "string" + }, + "description": "Brand display in the UI for languages that the enterprise has a localized name that is different from its global branding name. For example, Hilton is 'ヒルトン' in Japanese and '希爾頓' in Chinese. The keys are hospitality supported display locales, e.g. en, ja-JP, etc, defined in experiment parameter Hospitality__hospitality_display_supported_locales.", + "type": "object" + }, + "largeLogoUrl": { + "type": "string" + }, + "smallLogoUrl": { + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsHotwordThresholdAdjustmentFactor": { + "description": "HotwordThresholdAdjustmentFactor contains threshold_adjustment_factor, and it's validity. value should only be considered when is_valid = true.", + "id": "AssistantApiSettingsHotwordThresholdAdjustmentFactor", + "properties": { + "isValid": { + "description": "Currently, is_valid is set to false whenever the TAF is not an Autotune aware value. This includes hotword sensitivity users, or devices not eligible for autotune.", + "type": "boolean" + }, + "value": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiSettingsInternalAncillaryDeviceId": { + "description": "Represents supporting device ids.", + "id": "AssistantApiSettingsInternalAncillaryDeviceId", + "properties": { + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "Contains device ids known to devices. eg. For ATV, it contains client_instance_id and cast_id." + } + }, + "type": "object" + }, + "AssistantApiSettingsInternalVersion": { + "description": "Represents a version of a specifit setting, e.g. DeviceSettings.", + "id": "AssistantApiSettingsInternalVersion", + "properties": { + "generationTime": { + "description": "Contains the timestamp when this version was generated.", + "format": "google-datetime", + "type": "string" + }, + "id": { + "description": "Integer value of the version, it is a monotonically increasing number and starts at 0. On every update it is incremented by 1.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsKidsMode": { + "description": "Kids mode config for the current device. go/aff-parentalsupervision-dd", + "id": "AssistantApiSettingsKidsMode", + "properties": { + "kidsModeEnabled": { + "type": "boolean" + }, + "obfuscatedGaiaId": { + "description": "Identifier of the account currently specified to be used with kids mode.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsLabeledDowntimeSchedule": { + "id": "AssistantApiSettingsLabeledDowntimeSchedule", + "properties": { + "displayName": { + "description": "User-provided name for this schedule.", + "type": "string" + }, + "schedule": { + "$ref": "AssistantApiSettingsDowntimeSchedule" + } + }, + "type": "object" + }, + "AssistantApiSettingsLinkedUser": { + "description": "Represents the profile of the user who has signed in onto this device. Next id: 5", + "id": "AssistantApiSettingsLinkedUser", + "properties": { + "castLinkingTime": { + "description": "Time of linking of the device with the user provided by Cast.", + "format": "google-datetime", + "type": "string" + }, + "email": { + "description": "Primary email address of the user.", + "type": "string" + }, + "gaiaId": { + "format": "int64", + "type": "string" + }, + "names": { + "description": "Supports features which depend on profile name, when no matching contact is found.", + "items": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiName" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSettingsMarketplaceDisclosure": { + "id": "AssistantApiSettingsMarketplaceDisclosure", + "properties": { + "confirmed": { + "description": "True if the user has confirmed the marketplace disclosure.", + "type": "boolean" + }, + "timestampMs": { + "description": "The time user confirmed the marketplace disclosure.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsMasqueradeMode": { + "description": "Guest mode for the current device. go/assistant-guest-mode-summary", + "id": "AssistantApiSettingsMasqueradeMode", + "properties": { + "lastEnterGuestModeTimestamp": { + "$ref": "AssistantApiTimestamp" + }, + "lastExitGuestModeTimestamp": { + "$ref": "AssistantApiTimestamp" + }, + "masqueradeModeEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsMusicFilter": { + "description": "Specification of which music features can be used.", + "id": "AssistantApiSettingsMusicFilter", + "properties": { + "availableProviders": { + "description": "Providers available at the time user updated settings.", + "items": { + "enum": [ + "UNKNOWN_MUSIC_PROVIDER", + "YOUTUBE_MUSIC", + "GOOGLE_PLAY_MUSIC", + "SPOTIFY", + "APPLE_MUSIC", + "PANDORA" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "providerFilterState": { + "description": "Represents the state for the music provider filter.", + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL_PROVIDERS", + "ALLOW_WHITELISTED_PROVIDERS" + ], + "enumDescriptions": [ + "", + "With this state, all music providers are allowed.", + "This limits the allowed providers to the whitelisted ones. This means that we can block all providers if the whitelist is empty." + ], + "type": "string" + }, + "state": { + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL", + "BLOCK_EXPLICIT", + "BLOCK_ALL" + ], + "enumDescriptions": [ + "", + "Allow all music.", + "Block music with explicit lyrics.", + "Block all music." + ], + "type": "string" + }, + "whitelistedProviders": { + "description": "Contains the list of whitelisted music providers.", + "items": { + "enum": [ + "UNKNOWN_MUSIC_PROVIDER", + "YOUTUBE_MUSIC", + "GOOGLE_PLAY_MUSIC", + "SPOTIFY", + "APPLE_MUSIC", + "PANDORA" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSettingsNewsFilter": { + "description": "Specification of which news features can be used.", + "id": "AssistantApiSettingsNewsFilter", + "properties": { + "state": { + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL_NEWS", + "BLOCK_ALL_NEWS" + ], + "enumDescriptions": [ + "", + "Allow all news.", + "Block all news." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsNotificationProfile": { + "id": "AssistantApiSettingsNotificationProfile", + "properties": { + "alloNotificationProfile": { + "$ref": "AssistantApiSettingsNotificationProfileAlloNotificationProfile", + "description": "Each device can have only one type of notification profile." + } + }, + "type": "object" + }, + "AssistantApiSettingsNotificationProfileAlloNotificationProfile": { + "id": "AssistantApiSettingsNotificationProfileAlloNotificationProfile", + "properties": { + "botSendToken": { + "$ref": "ChatBotPlatformBotSendToken", + "description": "The send token of the conversation with the user." + }, + "id": { + "$ref": "ChatBotPlatformFireballId", + "description": "The fireball id of this user." + } + }, + "type": "object" + }, + "AssistantApiSettingsOnDeviceAppSettings": { + "id": "AssistantApiSettingsOnDeviceAppSettings", + "properties": { + "carrierCallDeviceSettings": { + "$ref": "AssistantApiSettingsCarrierCallDeviceSettings", + "description": "On device carrier call related settings." + }, + "duoCallDeviceSettings": { + "$ref": "AssistantApiSettingsDuoCallDeviceSettings", + "description": "On device duo call related settings." + } + }, + "type": "object" + }, + "AssistantApiSettingsPersonalizationMetadata": { + "id": "AssistantApiSettingsPersonalizationMetadata", + "properties": { + "faceMatch": { + "enum": [ + "PERSONALIZATION_FLOW_UNKNOWN", + "PERSONALIZATION_FLOW_DEVICE", + "PERSONALIZATION_FLOW_TWOOBE", + "PERSONALIZATION_FLOW_SLA", + "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" + ], + "enumDescriptions": [ + "", + "", + "TWOOBE: go/twoobe-prd", + "SLA: go/sla-prd", + "Custodio: go/assistant-pc-prd" + ], + "type": "string" + }, + "personalResults": { + "enum": [ + "PERSONALIZATION_FLOW_UNKNOWN", + "PERSONALIZATION_FLOW_DEVICE", + "PERSONALIZATION_FLOW_TWOOBE", + "PERSONALIZATION_FLOW_SLA", + "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" + ], + "enumDescriptions": [ + "", + "", + "TWOOBE: go/twoobe-prd", + "SLA: go/sla-prd", + "Custodio: go/assistant-pc-prd" + ], + "type": "string" + }, + "voiceMatch": { + "enum": [ + "PERSONALIZATION_FLOW_UNKNOWN", + "PERSONALIZATION_FLOW_DEVICE", + "PERSONALIZATION_FLOW_TWOOBE", + "PERSONALIZATION_FLOW_SLA", + "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" + ], + "enumDescriptions": [ + "", + "", + "TWOOBE: go/twoobe-prd", + "SLA: go/sla-prd", + "Custodio: go/assistant-pc-prd" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsPodcastFilter": { + "description": "Specification of which podcast features can be used.", + "id": "AssistantApiSettingsPodcastFilter", + "properties": { + "state": { + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL_PODCASTS", + "BLOCK_ALL_PODCASTS" + ], + "enumDescriptions": [ + "", + "Allow all podcasts.", + "Block all podcasts." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsPoliteMode": { + "description": "Polite mode config for the current device. go/polite-mode-dd", + "id": "AssistantApiSettingsPoliteMode", + "properties": { + "politeModeEnabled": { + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSettingsReauthTrustedDeviceSettings": { + "description": "Settings related to Assistant reauth. go/assistant-reauth-verify-skip Next id: 2", + "id": "AssistantApiSettingsReauthTrustedDeviceSettings", + "properties": { + "trustSettingsForClient": { + "additionalProperties": { + "$ref": "AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings" + }, + "description": "Mapping from integrator client id to device's trust settings. Id from assistant/agent_platform/transactions/reauth/reauth_client.proto.", + "type": "object" + } + }, + "type": "object" + }, + "AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings": { + "description": "Next id: 6", + "id": "AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings", + "properties": { + "neverAskAgain": { + "description": "If true, don't ask user to trust this device again.", + "type": "boolean" + }, + "neverAskExpirationTimestamp": { + "description": "DEPRECATED: Use never_ask_again instead. Expiration timestamp of \"never ask again\" status. If this field is set and is later than current timestamp, we should NOT ask the user whether they'd like to trust this device.", + "format": "google-datetime", + "type": "string" + }, + "trustDeviceExpirationTimestamp": { + "description": "Expiration timestamp of \"trusted\" status. If this field is set and is later than current timestamp, we can consider this device to be trusted.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsSearchFilter": { + "description": "Specification of which search features can be used.", + "id": "AssistantApiSettingsSearchFilter", + "properties": { + "state": { + "enum": [ + "UNKNOWN_STATE", + "ALLOW_SAFE_SEARCH", + "BLOCK_SEARCH" + ], + "enumDescriptions": [ + "", + "Allow only safe search for the Assistant.", + "Block (almost) all search features. Some \"safe\" features that users wouldn't consider search (like calculator) are still allowed in this mode." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsSpeechOutputSettings": { + "description": "Settings related to TTS output.", + "id": "AssistantApiSettingsSpeechOutputSettings", + "properties": { + "speechOutput": { + "enum": [ + "UNSPECIFIED", + "VERBOSE", + "MIN_VERBOSITY", + "HANDS_FREE_ONLY" + ], + "enumDescriptions": [ + "", + "Provide speech output most of the time.", + "Optimize where to provide speech output.", + "Provide speech output only in hands-free mode. No TTS will be provided otherwise." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsSpeechSettings": { + "description": "Settings related to speech detection. See go/hotword-settings-on-cloud for more info. Next ID: 16", + "id": "AssistantApiSettingsSpeechSettings", + "properties": { + "continuedConversationEnabled": { + "description": "Indicates whether Continued Conversation is enabled for this device.", + "type": "boolean" + }, + "deviceModelType": { + "description": "Stores the device model type e.g Pixel.", + "type": "string" + }, + "dspAvailable": { + "description": "Whether the device has DSP chip to enable always on hotword detection.", + "type": "boolean" + }, + "hotwordInNavigationEnabled": { + "description": "Whether hotword has been enabled by the user during navigation.", + "enum": [ + "UNAVAILABLE", + "ENABLED", + "DISABLED", + "UNDECIDED", + "OPA_DISABLED", + "UNSUPPORTED_LOCALE", + "INCOMPLETE", + "ENABLED_WITHOUT_OPA_AVAILABILITY" + ], + "enumDescriptions": [ + "Setting is unavailable to the user.", + "Setting is available and enabled by the user.", + "Setting is available but disabled by the user.", + "Setting is available, but user never touched this setting.", + "Setting is disabled because Opa is disabled by user.", + "Setting is unavailable because the locale is unsupported. Deprecated, use voice_match_available", + "Setting is incomplete, see go/hotword-incomplete-state", + "Setting is enabled by user without opa availability. go/no-opa-yes-vm" + ], + "type": "string" + }, + "hotwordSetting": { + "description": "Stores hotword setting status for the locales which don't support voice match.", + "enum": [ + "UNAVAILABLE", + "ENABLED", + "DISABLED", + "UNDECIDED", + "OPA_DISABLED", + "UNSUPPORTED_LOCALE", + "INCOMPLETE", + "ENABLED_WITHOUT_OPA_AVAILABILITY" + ], + "enumDescriptions": [ + "Setting is unavailable to the user.", + "Setting is available and enabled by the user.", + "Setting is available but disabled by the user.", + "Setting is available, but user never touched this setting.", + "Setting is disabled because Opa is disabled by user.", + "Setting is unavailable because the locale is unsupported. Deprecated, use voice_match_available", + "Setting is incomplete, see go/hotword-incomplete-state", + "Setting is enabled by user without opa availability. go/no-opa-yes-vm" + ], + "type": "string" + }, + "lockscreenEnabled": { + "description": "Whether pin/pattern lockscreen has been enabled by the user.", + "type": "boolean" + }, + "opaEligibilityState": { + "description": "Stores if Assistant is available for the user's device/locale, where Enabled means it is available and disabled means it is not.", + "enum": [ + "UNAVAILABLE", + "ENABLED", + "DISABLED", + "UNDECIDED", + "OPA_DISABLED", + "UNSUPPORTED_LOCALE", + "INCOMPLETE", + "ENABLED_WITHOUT_OPA_AVAILABILITY" + ], + "enumDescriptions": [ + "Setting is unavailable to the user.", + "Setting is available and enabled by the user.", + "Setting is available but disabled by the user.", + "Setting is available, but user never touched this setting.", + "Setting is disabled because Opa is disabled by user.", + "Setting is unavailable because the locale is unsupported. Deprecated, use voice_match_available", + "Setting is incomplete, see go/hotword-incomplete-state", + "Setting is enabled by user without opa availability. go/no-opa-yes-vm" + ], + "type": "string" + }, + "opaEligible": { + "description": "Stores if Assistant is available for the user's device/locale. Deprecated as bools do not give accurate true/false ratios due to old clients reporting the default value.", + "type": "boolean" + }, + "sdkVersion": { + "description": "Stores the Android SDK version. This comes from android.os.Build.VERSION.SDK_INT.", + "format": "int32", + "type": "integer" + }, + "speakerIdModelPresent": { + "description": "Whether speaker ID model is present for the user.", + "type": "boolean" + }, + "speakerIdRecognitionEnabled": { + "description": "Indicates whether the user has enabled speaker-id (fromAnyScreen/alwaysOn) for this device. Deprecated - use voice_match_setting instead", + "type": "boolean" + }, + "trustedVoiceEnabled": { + "description": "Indicates whether the user has enabled trusted voice for this device.", + "type": "boolean" + }, + "unlockWithHotwordAvailable": { + "description": "A bool indicating whether device supports unlocking device with hotword.", + "type": "boolean" + }, + "userMigratedToDeclined": { + "description": "Stores if user was migrated from undecided to declined as apart of Mariko project. Used for potential growth targeting.", + "type": "boolean" + }, + "voiceMatchSetting": { + "description": "Stores the hotword/voice match setting status for the locales which support voice match.", + "enum": [ + "UNAVAILABLE", + "ENABLED", + "DISABLED", + "UNDECIDED", + "OPA_DISABLED", + "UNSUPPORTED_LOCALE", + "INCOMPLETE", + "ENABLED_WITHOUT_OPA_AVAILABILITY" + ], + "enumDescriptions": [ + "Setting is unavailable to the user.", + "Setting is available and enabled by the user.", + "Setting is available but disabled by the user.", + "Setting is available, but user never touched this setting.", + "Setting is disabled because Opa is disabled by user.", + "Setting is unavailable because the locale is unsupported. Deprecated, use voice_match_available", + "Setting is incomplete, see go/hotword-incomplete-state", + "Setting is enabled by user without opa availability. go/no-opa-yes-vm" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsTetheredInfo": { + "id": "AssistantApiSettingsTetheredInfo", + "properties": { + "primaryHostDeviceId": { + "description": "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.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsThirdPartyAppsFilter": { + "description": "Specification of which third party apps can be used.", + "id": "AssistantApiSettingsThirdPartyAppsFilter", + "properties": { + "state": { + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL", + "ALLOW_CERTIFIED_FOR_FAMILIES", + "BLOCK_ALL" + ], + "enumDescriptions": [ + "", + "Allow all third party apps.", + "Only allow certified Apps for Families. See https://developers.google.com/actions/apps-for-families/.", + "Block all third party apps." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSettingsVideoFilter": { + "description": "Specification of which video features can be used.", + "id": "AssistantApiSettingsVideoFilter", + "properties": { + "autoplayToggleState": { + "description": "State that indicates whether autoplay is enabled for youtube videos.", + "enum": [ + "UNKNOWN_STATE", + "ENABLED", + "DISABLED" + ], + "enumDescriptions": [ + "Default uninitialized state.", + "Allow autoplay for youtube videos.", + "Disable autoplay for youtube videos." + ], + "type": "string" + }, + "availableProviders": { + "description": "Providers available at the time user updated settings.", + "items": { + "enum": [ + "UNKNOWN_VIDEO_PROVIDER", + "YOUTUBE", + "YOUTUBE_TV", + "YOUTUBE_KIDS" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "providerFilterState": { + "description": "Represents the state for the video provider filter.", + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL_PROVIDERS", + "ALLOW_WHITELISTED_PROVIDERS" + ], + "enumDescriptions": [ + "", + "With this state, all video providers are allowed.", + "This limits the allowed providers to the whitelisted ones. This means that we can block all providers if the whitelist is empty." + ], + "type": "string" + }, + "state": { + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL", + "BLOCK_MATURE_CONTENT", + "BLOCK_ALL" + ], + "enumDescriptions": [ + "", + "Allow all videos.", + "Block videos with mature content.", + "Block all videos." + ], + "type": "string" + }, + "whitelistedProviders": { + "description": "Contains the list of whitelisted video providers.", + "items": { + "enum": [ + "UNKNOWN_VIDEO_PROVIDER", + "YOUTUBE", + "YOUTUBE_TV", + "YOUTUBE_KIDS" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSettingsWebviewFilter": { + "description": "Specification of which webview features can be used.", + "id": "AssistantApiSettingsWebviewFilter", + "properties": { + "jasperWebviewConsent": { + "description": "Indicates if user has consented Jasper warning message.", + "type": "boolean" + }, + "state": { + "enum": [ + "UNKNOWN_STATE", + "ALLOW_ALL_WEBSITES", + "BLOCK_ALL_WEBSITES" + ], + "enumDescriptions": [ + "", + "Allow all websites.", + "Block all websites." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSignInMethod": { + "description": "The method of sign in which the client supports.", + "id": "AssistantApiSignInMethod", + "properties": { + "method": { + "enum": [ + "UNSPECIFIED", + "NOT_ALLOWED", + "PHONE_APP", + "ON_DEVICE_MENU", + "WEB_APP" + ], + "enumDescriptions": [ + "Unspecified value. Defaults to the same sign-in behavior as PHONE_APP.", + "Sign in is not allowed, e.g., go/telephone.", + "Sign in with Home app, e.g. Google Home.", + "Sign in with on device menu, e.g., LGTV, go/web-assistant", + "Sign in with the Assistant sign in website. See go/baird-web-based-sign-in." + ], + "type": "string" + }, + "signInRequired": { + "description": "Make Google sign-in mandatory for using Google Assistant on the device.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSodaCapabilities": { + "description": "Capabilities related to SODA (Speech On-Device API). Next ID: 5", + "id": "AssistantApiSodaCapabilities", + "properties": { + "supportsHotwordSensitivity": { + "description": "Whether the device supports different levels of hotword sensitivity. go/hotword-sensitivity-prd", + "type": "boolean" + }, + "supportsSimpleStop": { + "description": "Whether Simple Stop (go/simple-stop) is enabled on the device. Simple stop allows users to stop firing alarms and timers by just saying \"stop\" without first saying the hotword.", + "type": "boolean" + }, + "supportsSpeakerId": { + "description": "Whether the device supports speaker-id (speaker identification based on hotword and/or spoken query - go/speaker-id). Note: there are existing devices that support speaker-id but does not have this capability set. Not having this field populated doesn't necessarily mean the device doesn't support speaker-id.", + "type": "boolean" + }, + "supportsWarmWords": { + "description": "Whether the device supports WarmWords (go/warm-words-framework).", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSoftwareCapabilities": { + "description": "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: 26", + "id": "AssistantApiSoftwareCapabilities", + "properties": { + "appCapabilities": { + "description": "IMPORTANT: Only one of AppCapabilities and AppCapabilitiesDelta should be in the SoftwareCapabilities. In the edge case if the client sends up both AppCapabilities and AppCapabilitiesDelta, AppCapabilitiesDelta is ignored. Complete list of app capabilities.", + "items": { + "$ref": "AssistantApiAppCapabilities" + }, + "type": "array" + }, + "appCapabilitiesDelta": { + "description": "Incremental update for app capabilities.", + "items": { + "$ref": "AssistantApiAppCapabilitiesDelta" + }, + "type": "array" + }, + "appIntegrationsSettings": { + "additionalProperties": { + "$ref": "AssistantApiAppIntegrationsSettings" + }, + "description": "App integrations settings for each packge name.", + "type": "object" + }, + "carAssistantCapabilities": { + "$ref": "AssistantApiCarAssistantCapabilities", + "description": "Capabilities related to Assistant on Auto surfaces." + }, + "clockCapabilities": { + "$ref": "AssistantApiClockCapabilities", + "description": "Capabilities related to clock functionality, like alarms, timers, etc." + }, + "conversationVersion": { + "$ref": "AssistantApiSupportedConversationVersion", + "description": "A top-level version of Conversation protocol where the versions are explicitly defined at go/conversation-versions." + }, + "crossDeviceExecutionCapabilities": { + "$ref": "AssistantApiCrossDeviceExecutionCapability", + "description": "For torus x-device execution support" + }, + "gacsCapabilities": { + "$ref": "AssistantApiGacsCapabilities" + }, + "gcmCapabilities": { + "$ref": "AssistantApiGcmCapabilities" + }, + "liveTvChannelCapabilities": { + "$ref": "AssistantApiLiveTvChannelCapabilities", + "description": "Capabilities related to live TV channels." + }, + "oemCapabilities": { + "$ref": "AssistantApiOemCapabilities", + "description": "List of actions OEM supports. This includes built-in actions and custom actions." + }, + "onDeviceAssistantCapabilities": { + "$ref": "AssistantApiOnDeviceAssistantCapabilities", + "description": "on-device Assistant capabilities" + }, + "onDeviceSmartHomeCapabilities": { + "$ref": "AssistantApiOnDeviceSmartHomeCapabilities", + "description": "Capability bits for on-device Smart Home. go/framework-for-local-semex" + }, + "onDeviceStorageCapabilities": { + "$ref": "AssistantApiOnDeviceStorageCapabilities", + "description": "Reflects the storage capabilities on the device." + }, + "operatingSystem": { + "description": "The operating system of the device.", + "enum": [ + "OS_TYPE_UNKNOWN", + "OS_TYPE_ANDROID", + "OS_TYPE_CAST", + "OS_TYPE_FUCHSIA", + "OS_TYPE_LINUX" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "orderedLiveTvProviders": { + "description": "An ordered list containing the live tv providers available in the client. The order of the providers reflects the ranking in the client and will be respected by server as well.", + "items": { + "$ref": "AssistantApiLiveTvProvider" + }, + "type": "array" + }, + "selinaCapabilities": { + "$ref": "AssistantApiSelinaCapabilites", + "description": "The Soli capabilities on Elaine. go/dingo-dc-software" + }, + "settingsAppCapabilities": { + "$ref": "AssistantApiSettingsAppCapabilities" + }, + "supportedClientOp": { + "items": { + "$ref": "AssistantApiSupportedClientOp" + }, + "type": "array" + }, + "supportedFeatures": { + "$ref": "AssistantApiSupportedFeatures" + }, + "supportedMsgVersion": { + "$ref": "AssistantApiSupportedProtocolVersion" + }, + "supportedProviderTypes": { + "$ref": "AssistantApiSupportedProviderTypes" + }, + "surfaceProperties": { + "$ref": "AssistantApiSurfaceProperties" + } + }, + "type": "object" + }, + "AssistantApiSpeechCapabilities": { + "description": "DEPRECATED These capabilties are associated with speech detection on devices.", + "id": "AssistantApiSpeechCapabilities", + "properties": { + "dspAvailable": { + "description": "A bool indicating whether device supports dsp based hotword detection.", + "type": "boolean" + }, + "unlockWithHotwordAvailable": { + "description": "A bool indicating whether device supports unlocking device with hotword.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSuggestionsSupport": { + "description": "Next ID: 17", + "id": "AssistantApiSuggestionsSupport", + "properties": { + "clickImpersonationSupported": { + "description": "Whether client supports user impersonation on suggestion chip click. go/suggestion-click-impersonation", + "type": "boolean" + }, + "coloredChipBackgroundBorderSupported": { + "description": "Whether client supports suggestion chips with colored background/border.", + "type": "boolean" + }, + "coloredChipTextSupported": { + "description": "Whether client supports suggestion chips with colored text. See design doc: http://go/opa-suggestions-ux-eng-design.", + "type": "boolean" + }, + "debugDataSupported": { + "description": "Whether client supports suggestions debug data to be displayed.", + "type": "boolean" + }, + "drlHistoryChipSupported": { + "description": "Whether DRL history chip is supported. Related bug: http://b/241837879, http://b/171854732 Design doc: http://go/panthera-history-chip-dd DRL history chip was originally rolled out to Panthera in http://google3/googledata/experiments/mobile/agsa/studies/agsa_nga/opa_panthera_one_input_ui_launch.gcl?l=55\u0026rcl=384682900. We plan to roll it out to NGA and TNG. drl_history_chip_supported bit specifies whether the client support (and should have) DRL history chip.", + "type": "boolean" + }, + "escapeHatchSupported": { + "description": "Whether client supports escape hatches aka post execution suggestions go/nga-escape-hatch-prd", + "enum": [ + "UNSUPPORTED", + "NGA_ESCAPE_HATCH" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "executedTextSupported": { + "description": "Whether the client can rewrite suggestion query text into executed text, if the latter is present. If this feature is disabled, the rewrite happens in Assistant Server.", + "type": "boolean" + }, + "executionContextSupported": { + "description": "Whether the client supports passing back `execution_context` from |assistant.api.client_op.SuggestionProcessingParams| when the suggestion is clicked or spoken.", + "type": "boolean" + }, + "featureSpecificActionSupport": { + "$ref": "AssistantApiFeatureSpecificActionSupport", + "description": "Whether the client supports features in |SuggestionFeatureSpecificAction|." + }, + "featureSpecificAppActionsNotificationSupported": { + "description": "Whether the client supports handling App Actions' notification when the suggestion is clicked. This will allow the server to populate the `app_actions_notification_data` extension field from |SuggestionFeatureSpecificAction| proto message.", + "type": "boolean" + }, + "ruleIdInExecutionContextSupported": { + "description": "Whether the rule_id field in the execution_context is supported. This is a temporary workaround to be able to identify clicks on Person entity suggestions on Sabrina and is expected to be eventually deprecated. TODO(b/185517153) : Deprecate (but do not delete) once click tracking is correctly sent up from the Katniss client.", + "type": "boolean" + }, + "showExecutedTextSupported": { + "description": "Whether the client can show executed_text after the click on the suggestion chip. Must be set to false on TNG. TNG disregards |SuggestionProcessingParams.show_executed_text| field and always treats it as if |show_executed_text=true|.", + "type": "boolean" + }, + "showTranslationSupported": { + "description": "Whether the client can show chip as (text | translation). go/lang-partner-doc", + "type": "boolean" + }, + "supportedDisplayTargets": { + "description": "A list of suggestions display targets supported by this client. If unset only DEFAULT SuggestionDisplayTarget is supported.", + "items": { + "$ref": "AssistantApiSuggestionsSupportDisplayTargetSupport" + }, + "type": "array" + }, + "widgetDataSupported": { + "description": "Whether client supports widget suggestion chip to be displayed.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSuggestionsSupportDisplayTargetSupport": { + "id": "AssistantApiSuggestionsSupportDisplayTargetSupport", + "properties": { + "executedTextSupported": { + "description": "Whether the client can rewrite suggestion query text into executed text, if the latter is present for the display target.", + "type": "boolean" + }, + "headerTextSupported": { + "description": "Whether PresentationParams.header_text is supported for the display target.", + "type": "boolean" + }, + "repressImpressionSupported": { + "description": "Whether Suggestion.repress_impression is supported. If not repressed suggestions are not returned.", + "type": "boolean" + }, + "target": { + "description": "Display target that is supported.", + "enum": [ + "DEFAULT", + "NGA_INPUT_PLATE", + "CONVERSATION_STARTERS", + "QUICK_ACTIONS", + "TACTILE_ASSISTANT_SUGGESTS", + "TACTILE_MY_ACTIONS", + "TRY_SAYING", + "RICH_SUGGESTIONS" + ], + "enumDescriptions": [ + "Use the default display target.", + "Show Escape Hatch chips. The chips are displayed outside of response layer for example over app that query was fulfilled in.", + "Show chips as Conversation Starters in Opa and Panthera.", + "Show chips as Panthera quick actions (go/quick-actions-dd).", + "Show chips in Tactile \"Assistant Suggests\" section.", + "Show chips in Tactile \"My Actions\" section.", + "Show chips as \"Try Saying\" suggestions.", + "Show suggestions as rich suggestions and chips; go/prs-redesign-dd" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSunriseFeaturesSupport": { + "id": "AssistantApiSunriseFeaturesSupport", + "properties": { + "sunriseSimulationSupported": { + "description": "If true, the device can slowly brighten the screen and simulate sunrise experience. Alarms with sunrise field enabled can be set on this device.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSupportedClientOp": { + "description": "These are the set of ClientOps that are supported by the device.", + "id": "AssistantApiSupportedClientOp", + "properties": { + "clientOpName": { + "description": "This should be the same as the name of the SemanticClientOp that is supported.", + "type": "string" + }, + "clientOpProperties": { + "$ref": "AssistantApiProtobuf", + "description": "The properties associated with the ClientOp. This proto should be associated with the client_op_name." + }, + "supportedExecution": { + "$ref": "AssistantApiSupportedClientOpSupportedExecution" + }, + "version": { + "description": "A version of 0 is the equivalent to not having support for that client_op type. Note that a client_op is also unsupported if it is not included at all in the list of supported client_ops.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiSupportedClientOpSupportedExecution": { + "description": "Additional properties that client can support for executing the client op.", + "id": "AssistantApiSupportedClientOpSupportedExecution", + "properties": { + "supportsSynchronousExecution": { + "description": "Client can support synchronous execution of the client op. For tts.OUTPUT client op it means that client would honor |synchronous_playback_args| argument. Please see more at go/synchronous-sounds-design.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSupportedConversationVersion": { + "description": "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.", + "id": "AssistantApiSupportedConversationVersion", + "properties": { + "supportsConversationProtocol": { + "description": "Whether conversation protocol is supported explicitly. If true, SingleDeviceCapabilityChecker::SupportsConversationProtocol will always return true.", + "type": "boolean" + }, + "version": { + "description": "The supported version number.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiSupportedFeatures": { + "description": "These are the set of features that are supported by the device. It's a part of the SoftwareCapabilities of the device. Next ID: 62", + "id": "AssistantApiSupportedFeatures", + "properties": { + "aaeNotificationSourceSupported": { + "description": "Whether the client supports the alternative message notification sources on AAE, in which case notification-related operations can access it.", + "type": "boolean" + }, + "acpSupport": { + "$ref": "AssistantApiAssistantContinuedPresenceSupport", + "description": "In what way is assistant continued presence supported. (go/opa-acp-prd)" + }, + "actionV2SupportedFeatures": { + "$ref": "AssistantApiActionV2SupportedFeatures" + }, + "alarmTimerManagerApiSupported": { + "description": "Whether the client supports AlarmTimerManager API (go/alarm-timer-manager-api).", + "type": "boolean" + }, + "appControlSupport": { + "$ref": "AssistantApiAppControlSupport", + "description": "The client information for app control support. More details in: go/acaia." + }, + "assistantExploreSupported": { + "description": "Whether the client supports the assistant explore section. This field will be active only when the Explore section is available to the user. This means that the user is (a) signed-in, (b) a IOPA / AGSA user, and (c) in a locale where explore is available.", + "type": "boolean" + }, + "assistantForKidsSupported": { + "description": "Whether Assistant for Kids (a.k.a. Designed for Family) features are supported.", + "type": "boolean" + }, + "bypassDiDcCheckForComms": { + "description": "Whether communications flows for the client can bypass the DI/DC check. The client will enforce some other equivalent permission as necessary concerning access to device contacts and apps.", + "type": "boolean" + }, + "bypassMsgNotificationDismissal": { + "description": "Whether or not Assistant should enforce the dismissal of communication notifications associated with messages.", + "type": "boolean" + }, + "client1mProvidersSupported": { + "description": "Whether the client supports 1m providers (go/1m-partner-expansion).", + "type": "boolean" + }, + "clientOpResultBatchingSupported": { + "description": "Whether the client can batch client op results before sending them to the server.", + "type": "boolean" + }, + "crossDeviceBroadcastSupported": { + "description": "Whether the client supports cross-device broadcast (i.e. on Torus).", + "type": "boolean" + }, + "crossDeviceBroadcastVersion": { + "description": "The version of cross device broadcast (ie; broadcast on torus) which the client supports.", + "enum": [ + "CROSS_DEVICE_BROADCAST_NOT_SUPPORTED", + "CROSS_DEVICE_BROADCAST_V1" + ], + "enumDescriptions": [ + "Broadcast with torus is not supported on this device.", + "This device supports the cross device broadcast V1 features." + ], + "type": "string" + }, + "csatVisualOverlaySupported": { + "description": "Whether the client supports csat visual overlay. (go/sd-od-csat)", + "type": "boolean" + }, + "duoClientApiFeatures": { + "description": "The features set which duo client on the device supports. This should be serialized from proto {@code duo_client_api.DuoClientApiFeatures}.", + "format": "byte", + "type": "string" + }, + "duoGroupCallingSupported": { + "description": "Whether the client supports Duo group calling.", + "type": "boolean" + }, + "fitnessFeatureSupport": { + "$ref": "AssistantApiFitnessFeatureSupport", + "description": "Information about what support this device has for fitness." + }, + "fluidActionsSupport": { + "$ref": "AssistantApiFluidActionsSupport", + "description": "Fluid Actions features supported by the client. If this field is not set in the incoming request, it could mean that the client does not support Fluid Actions. Alternatively, it could mean that the client supports Fluid Actions, but syncs state with server using the old protocol, namely ConversationStateParams. When b/140733618 is resolved, Surface Adaptation Layer will add this field for old clients that support Fluid Actions framework." + }, + "funtimeSupported": { + "description": "Whether the surface client op performer supports Funtime alarms and timers. go/funtime-engdesign", + "type": "boolean" + }, + "gdiSupported": { + "description": "Whether account linking via Google Deep Integrations (GDI) is supported. go/opa-gdi-design", + "type": "boolean" + }, + "gearheadNotificationSourceSupported": { + "description": "Whether the client supports the Gearhead message notification source, in which case notification-related operations can access it.", + "type": "boolean" + }, + "hasPhysicalRadio": { + "description": "Whether the client has a physical radio installed.", + "type": "boolean" + }, + "immersiveCanvasConfirmationMessageSupported": { + "description": "Whether the client supports confirmation messages in Immersive Canvas actions. Deprecated: use the filed in immersive_canvas_support.", + "type": "boolean" + }, + "immersiveCanvasSupport": { + "$ref": "AssistantApiImmersiveCanvasSupport" + }, + "inDialogAccountLinkingSupported": { + "description": "Whether the client supports account linking in-dialog (askForSignIn). This is used before this feature is moved to conversation protocol. To support this, the client needs to: - Integrate with Google Deep Integrations. - Have logic to send the result of account linking back to AS.", + "type": "boolean" + }, + "isPairedPhoneContactUploadNeededForComms": { + "description": "Whether paired-phone contact upload is needed for communications queries to work (e.g. on AAE).", + "type": "boolean" + }, + "isPairedPhoneNeededForComms": { + "description": "Whether a Bluetooth-paired phone is a core component of communications flows on the client.", + "type": "boolean" + }, + "launchKeyboardSupported": { + "description": "Which way of launching the keyboard the client supports.", + "enum": [ + "LAUNCH_KEYBOARD_UNSUPPORTED", + "OPA_ANDROID_LAUNCH_KEYBOARD_URI" + ], + "enumDescriptions": [ + "Launching the keyboard from a suggestion chip is not supported.", + "The keyboard can be opened by using the opa-android://launch_keyboard uri. Takes the url-encoded parameters: - query: the string to prefill the keyboard with. - start: (optional) the start position of the span to highlight. - end: (optional) the end position of the span to highlight." + ], + "type": "string" + }, + "lensSupported": { + "description": "Whether the client has Google Lens (Assistant Eyes).", + "type": "boolean" + }, + "liveCardsSupported": { + "description": "Whether the surface supports LiveCards. In cases where the user intent flow cannot be completed within the Assistant, LiveCards are used to take the user to an external app or website. These cards will be pushed to the Google Home app via the PushMessage ClientOp.", + "type": "boolean" + }, + "mapsDialogsSupported": { + "description": "Whether the client supports Assistant dialogs within Maps. This field will be set only when the Maps on the surface supports Assistant dialogs embedded within Maps. go/gsa-gmm.", + "type": "boolean" + }, + "masqueradeModeSupported": { + "description": "Whether the device supports masquerade mode (go/masquerade).", + "type": "boolean" + }, + "mediaControlSupport": { + "$ref": "AssistantApiMediaControlSupport", + "description": "Information about how client handles media controls (play, pause, skip ...)" + }, + "mediaSessionDetection": { + "description": "The ability of the client to detect media sessions on the device.", + "enum": [ + "UNKNOWN_MEDIA_SESSION_DETECTION", + "RELIABLE_MEDIA_SESSION_DETECTION", + "UNRELIABLE_MEDIA_SESSION_DETECTION", + "NO_MEDIA_SESSION_DETECTION", + "MEDIA_SESSION_DETECTION_DISABLED_SCREEN_CONTEXT" + ], + "enumDescriptions": [ + "", + "The client has perfect knowledge of what is playing on the device. For example, Chirp falls into this category. We can reliably choose to control or punt based on media params.", + "The client has some knowledge about the media sessions on the device. For example, OPA TV falls into this category. For these cases, we should probably always try to return the media control client op to the client.", + "The client has no idea about the media playback on the device. For these cases, we should either punt or attempt to control media and silently fail.", + "Media session detection is supported by the client but disabled by the user (for example: OPA_CROS) by turning off screen context setting." + ], + "type": "string" + }, + "meetSupported": { + "description": "Whether the client supports joining a Google Meet meeting.", + "type": "boolean" + }, + "noInputResponseSupported": { + "description": "Whether the client can render no input response or just ignore it. No input response is returned when client has a no speech input interaction, eg. user tapped mic but didn't say anything.", + "type": "boolean" + }, + "opaOnSearchSupported": { + "description": "When the entry source is search, whether the client supports rendering a similar response as OPA one does. Entry source is defined at http://cs/symbol:assistant.api.params.DeviceProperties.EntrySource", + "type": "boolean" + }, + "parentalControlsSupported": { + "description": "Whether or not the client supports enabling parental controls. When a device to supports parental controls, it has the software necessary to store the relevant information required for parental controls to work. This information includes a boolean \"enabled bit\" as well as the obfuscated gaia ID of the kid account selected for use with parental controls. Devices supportings kids mode send this information to S3 via S3ClientInfo in every request. See go/aff-kidsproduct for details.", + "type": "boolean" + }, + "persistentDisplaySupported": { + "description": "Whether the client supports persistent display. The new feature allows Assistant devices with screen to display a continuously updating permanent display, such as ambient weather, without the need for a user to ask the Assistant. Design doc: go/assistant-persistent-display.", + "type": "boolean" + }, + "privacyAwareLockscreenSupported": { + "description": "Whether the client supports the privacy-aware lockscreen protocol (go/assistant-lockscreen-spec).", + "type": "boolean" + }, + "remoteCloudCastingEnabled": { + "description": "Whether the client has remote casting enabled. For ex: we want to disable this for clients like Auto.", + "type": "boolean" + }, + "serverGeneratedFeedbackChipsEnabled": { + "description": "Whether the Assistant Server should generate feedback suggestion chips.", + "type": "boolean" + }, + "shLockScreenSupported": { + "description": "Whether the client supports SmartHome lock screen logic (i.e. on Tangor).", + "type": "boolean" + }, + "signInMethod": { + "$ref": "AssistantApiSignInMethod", + "description": "Which kind of sign in the client supports." + }, + "sleepSensingSupported": { + "description": "Whether the client can monitor sleep. This allows us to show sleep CUJ realted information: go/TwilightDesign Use for development only, see the same field in DeviceCapabilities.SoftwareCapabilities.SelinaCapabilities.", + "type": "boolean" + }, + "smartspaceCrossDeviceTimerSupported": { + "description": "Whether the client supports smart space cross-device timers. (go/ss-x-device-timer)", + "type": "boolean" + }, + "soliGestureDetectionSupported": { + "description": "Whether or not the client supports gesture detection via soli chips. The reason to prepend the name with soli is to distinguish it from computer vision based methods, e.g. Newman devices.", + "type": "boolean" + }, + "suggestionsSupport": { + "$ref": "AssistantApiSuggestionsSupport", + "description": "Suggestion chips features, supported by the client." + }, + "sunriseFeaturesSupport": { + "$ref": "AssistantApiSunriseFeaturesSupport", + "description": "Whether the client supports the sunrise screen brightening feature before the alarm fires. This is used to indicate whether sunrise alarms can be set on the device. http://cs/symbol:assistant.api.core_types.governed.RingtoneTaskMetadata.GentleWakeInfo" + }, + "tapToReadOptimizationSupported": { + "description": "Whether the client supports faster optimization for tap_to_read feature.", + "type": "boolean" + }, + "thirdPartyGuiSupported": { + "description": "Whether the device supports the 3p GUI framework, which allows third parties to enter the conversation with the user, showing their logo next to their chat bubbles, etc. go/3p-phone", + "type": "boolean" + }, + "transactionFeaturesSupport": { + "$ref": "AssistantApiTransactionFeaturesSupport", + "description": "Transactions features, supported by the client. Transactions feature may includes how Transactions team want to populate additional information from the device to the server." + }, + "transactionsVersion": { + "description": "The version of transactions which the client supports.", + "enum": [ + "NO_TRANSACTIONS", + "TRANSACTIONS_INITIAL_LAUNCH", + "TRANSACTIONS_V2", + "TRANSACTIONS_V3" + ], + "enumDescriptions": [ + "Transactions are not supported on this device.", + "This device supports the client features present at the initial consumer launch of transactions.", + "This device supports the transaction version v2 client features, includes transactions clientops. Deprecated given there're some iOS version populate this enum but don't support clientops.", + "This device supports the transaction version v3 client features, includes transactions clientops." + ], + "type": "string" + }, + "usesSeparateFullViewer": { + "description": "If set, it indicates that the client can open a separate HTML browser/webviewer (full viewer) to display certain visual results. These visual results usually require more memory to render (e.g. high resolution photos). Compared to the regular viewer that display all other Assistant result, the full viewer does not have memory limit. The field is copied from the device model. See http://google3/assistant/devices_platform/proto/device_model_capabilities.proto?l=225\u0026rcl=312576471 Also see go/webassistant-full-card-viewer.", + "type": "boolean" + }, + "viewReminderHubPageNotSupported": { + "description": "Whether the client supports viewing of reminder hub page or not. Default is supported. Set to true to disable returning reminder hub page url in reminder responses.", + "type": "boolean" + }, + "warmWelcomeTutorialSupported": { + "description": "Whether the client supports the programmatic warm welcome tutorial. Design doc: go/opal-pww-design.", + "type": "boolean" + }, + "webBrowserSupported": { + "description": "Whether the supports opening a URL in a web browser. For example, we want to disable this for clients like Chirp.", + "type": "boolean" + }, + "whatsNextSupported": { + "description": "Whether or not the client supports WhatsNext in the protocol.", + "type": "boolean" + }, + "zoomSupported": { + "description": "Whether the client supports joining a Zoom meeting.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSupportedProtocolVersion": { + "description": "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.", + "id": "AssistantApiSupportedProtocolVersion", + "properties": { + "messageVersion": { + "items": { + "$ref": "AssistantApiSupportedProtocolVersionMessageVersionPair" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSupportedProtocolVersionMessageVersionPair": { + "id": "AssistantApiSupportedProtocolVersionMessageVersionPair", + "properties": { + "messageName": { + "description": "The full path of a message which should start from the package name. e.g. \"assistant.api.core_types.Timer\".", + "type": "string" + }, + "version": { + "description": "The supported version number.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiSupportedProviderTypes": { + "description": "Types of providers that are supported by the client. For example, ChromeOS support both web app and Android app (for eligible devices).", + "id": "AssistantApiSupportedProviderTypes", + "properties": { + "supportedTypes": { + "items": { + "enum": [ + "PROVIDER_TYPE_UNSPECIFIED", + "ANDROID_APP", + "CAST_APP", + "CLOUD_PROVIDER", + "SIP_PROVIDER", + "IOS_APP", + "INTERNAL_PROVIDER", + "WEB_PROVIDER", + "KAIOS_APP", + "HOME_APP", + "CHROMEOS_APP" + ], + "enumDescriptions": [ + "", + "For AndroidAppInfo", + "For CastAppInfo", + "For CloudProviderInfo", + "For SipProviderInfo", + "For IosAppInfo", + "For InternalProviderInfo", + "For WebProviderInfo", + "For KaiOsAppInfo", + "For HomeAppInfo", + "For ChromeOsAppInfo" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiSurfaceProperties": { + "description": "Properties of the surface that are not hardware related or feature specific.", + "id": "AssistantApiSurfaceProperties", + "properties": { + "executionCapabilities": { + "$ref": "AssistantApiSurfacePropertiesExecutionCapabilities" + }, + "responseDisplayFormat": { + "description": "If this field is unset, the response format is unknown", + "enum": [ + "SINGLE_ITEM", + "MULTIPLE_ITEMS", + "FULL_HISTORY" + ], + "enumDescriptions": [ + "The surface can only show a single item (card, display text, etc) of the response at a time. For example, if both a display text and a card are sent in a response, the surface may only show the card to the user.", + "The surface can show a simple multi item response (e.g. both a display text and a card), but can't show response items from a previous response.", + "The surface can show complex multi item responses (e.g. display text, card, display text) as well as a history of previous responses." + ], + "type": "string" + }, + "supportsMultiResponse": { + "description": "If true, the client supports receiving multiple responses. See go/multiple-response-in-media-use-cases for more details.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSurfacePropertiesExecutionCapabilities": { + "description": "Describes the capabilities that are related to the execution of client ops on the device.", + "id": "AssistantApiSurfacePropertiesExecutionCapabilities", + "properties": { + "supportsClientOpPreloading": { + "description": "Completes the preloading ie., sets up the stage for the execution of client ops on the device while the previous conv delta is being executed. Refer to go/preload-convdelta for more information.", + "type": "boolean" + }, + "supportsNonFinalizedResponses": { + "description": "A value of true indicates that the client supports streaming of non-finalized responses by use of ClientExecutionParams.response_stream_id. and ClientExecutionParams.to_be_finalized.", + "type": "boolean" + }, + "supportsNonMaterializedInteractions": { + "description": "If true, the client supports receiving non-materialized interactions (go/as-streaming-protocol-nm).", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiSystemNotificationRestrictions": { + "description": "Restrictions related to system-level notifications.", + "id": "AssistantApiSystemNotificationRestrictions", + "properties": { + "categoryState": { + "items": { + "$ref": "AssistantApiSystemNotificationRestrictionsNotificationCategoryState" + }, + "type": "array" + }, + "channelState": { + "items": { + "$ref": "AssistantApiSystemNotificationRestrictionsNotificationChannelState" + }, + "type": "array" + }, + "notificationCapabilities": { + "description": "Specifies whether the surface is able to display notifications.", + "enum": [ + "NO_NOTIFICATION_CAPABILITY", + "NOTIFICATIONS_DISABLED", + "NOTIFICATIONS_ENABLED" + ], + "enumDescriptions": [ + "The surface is not able to display notifications.", + "The notifications are disabled on the surface.", + "The notifications are enabled." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSystemNotificationRestrictionsNotificationCategoryState": { + "description": "Notification channels state for the new server driven channels.", + "id": "AssistantApiSystemNotificationRestrictionsNotificationCategoryState", + "properties": { + "categoryId": { + "description": "Notification channel type.", + "format": "int32", + "type": "integer" + }, + "disabled": { + "description": "Weather the notifications on this channel are disabled.", + "type": "boolean" + }, + "disabledReason": { + "enum": [ + "NONE", + "ASSISTANT_CATEGORY_SETTING", + "ASSISTANT_OVERALL_SETTING", + "OS_APP_DISABLED", + "OS_CHANNEL_GROUP_DISABLED", + "OS_CHANNEL_DISABLED" + ], + "enumDescriptions": [ + "", + "The category was turned off in Assistant Notification Settings.", + "All notifications for Assistant was turned off in settings.", + "All notifications for the Assistant (GSA) app was turned off.", + "Notifications for the channel group was turned off.", + "Notifications for the channel was turned off." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiSystemNotificationRestrictionsNotificationChannelState": { + "description": "Notification channels state.", + "id": "AssistantApiSystemNotificationRestrictionsNotificationChannelState", + "properties": { + "channelType": { + "description": "Notification channel type.", + "enum": [ + "TYPE_UNKNOWN", + "TYPE_OPA_PROACTIVE", + "TYPE_OPA_HANDOFF", + "TYPE_OPA_MISC", + "TYPE_OPA_RECOMMENDATIONS", + "TYPE_OPA_PRODUCT_UPDATES", + "TYPE_OPA_THIRD_PARTY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "enabled": { + "description": "Whether the notifications on this channel are enabled.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiThirdPartyActionConfig": { + "description": "3P Action Metadata. Next ID: 3", + "id": "AssistantApiThirdPartyActionConfig", + "properties": { + "deviceActionCapability": { + "$ref": "AssistantDevicesPlatformProtoDeviceActionCapability", + "description": "DeviceActionCapability from DeviceModelPackage." + }, + "projectConfigs": { + "description": "List of Action project capabilities.", + "items": { + "$ref": "AssistantApiThirdPartyActionConfigProjectConfig" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantApiThirdPartyActionConfigProjectConfig": { + "description": "Metadata for ActionPackage. Device Actions are disabled by default unless explicitly enabled for the device here, see go/3p-device-actions-v2-design.", + "id": "AssistantApiThirdPartyActionConfigProjectConfig", + "properties": { + "projectId": { + "description": "Google cloud project id for which the Action Package or Device Model is registered.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiThirdPartyCapabilities": { + "id": "AssistantApiThirdPartyCapabilities", + "properties": { + "dataSharingRestrictions": { + "description": "Restrictions for the device to share any data with third party apps. See details in go/atv-dsc.", + "enum": [ + "DEFAULT_NO_DATA_SHARING_RESTRICTION", + "NO_SHARING_ALLOWED_WITH_THIRD_PARTY", + "SHARING_STATUS_NOT_SET", + "NO_SHARING_ALLOWED_WITH_THIRD_PARTY_FROM_OOBE" + ], + "enumDescriptions": [ + "User has accepted to share the data with third party apps. The device has no data sharing restrictions.", + "User has declined to share the data with third party apps.", + "User hasn't made a choice on whether to share data with third party apps.", + "User has declined to share the data with third party apps during OOBE flow. With this state, the user should see the data sharing consent compact screen. See cetails in http://shortn/_JsLg0OeEJj." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiTimeOfDay": { + "description": "A civil time relative to a timezone. IMPORTANT: The definition of TimeOfDay proto is being moved to //assistant/api/core_types/governed/datetime_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new one instead.", + "id": "AssistantApiTimeOfDay", + "properties": { + "hour": { + "description": "The hour, in 0...23.", + "format": "int32", + "type": "integer" + }, + "minute": { + "description": "The minute, in 0...59.", + "format": "int32", + "type": "integer" + }, + "nanosecond": { + "description": "The fraction of seconds in nanoseconds, in 0..999999999.", + "format": "int32", + "type": "integer" + }, + "second": { + "description": "The second, in 0...59. Leap seconds are not supported.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantApiTimeZone": { + "description": "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. IMPORTANT: The definition of TimeZone enum is being moved to //assistant/api/core_types/governed/datetime_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new one instead.", + "id": "AssistantApiTimeZone", + "properties": { + "ianaId": { + "description": "Time zone in IANA format, e.g. America/Los_Angeles for USA Pacific Time.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiTimestamp": { + "description": "An absolute point in time independent of timezone or calendar, based on the proto3 Timestamp (//google/protobuf/timestamp.proto). IMPORTANT: The definition of Timestamp proto is being moved to //assistant/api/core_types/governed/datetime_type.proto. All existing references will be updated to point to the new location. If you are adding a reference, use the new one instead. 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.", + "id": "AssistantApiTimestamp", + "properties": { + "nanos": { + "description": "Non-negative fractions of a second at nanosecond resolution.", + "format": "int32", + "type": "integer" + }, + "seconds": { + "description": "Seconds of UTC time since the Unix epoch.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AssistantApiTransactionFeaturesSupport": { + "id": "AssistantApiTransactionFeaturesSupport", + "properties": { + "voicePinSuppressed": { + "description": "If true, setting this boolean means the device should not support voice PIN. For example, although the phone supports both voice and PIN pad, but we don't want users using voice. https://docs.google.com/document/d/1M8iJQX3GuxGZGeidS8Gl4KJt3LuBWAIlolPlW10DkxU/edit#heading=h.8ovvdd3i2thv", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantApiVolumeProperties": { + "id": "AssistantApiVolumeProperties", + "properties": { + "defaultVolumePercentage": { + "description": "The volume percentages for spelled out values.", + "format": "int32", + "type": "integer" + }, + "highVolumePercentage": { + "format": "int32", + "type": "integer" + }, + "levelStepSize": { + "description": "The number of levels to move for a step.", + "format": "double", + "type": "number" + }, + "lowVolumePercentage": { + "format": "int32", + "type": "integer" + }, + "maximumVolumeLevel": { + "description": "The max number of volume levels the client supports.", + "format": "int32", + "type": "integer" + }, + "mediumVolumePercentage": { + "format": "int32", + "type": "integer" + }, + "veryHighVolumePercentage": { + "format": "int32", + "type": "integer" + }, + "veryLowVolumePercentage": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantDeviceTargetingDeviceTargetingError": { + "description": "The information associated with an error while selecting the target device. Next ID: 2", + "id": "AssistantDeviceTargetingDeviceTargetingError", + "properties": { + "type": { + "enum": [ + "UNKNOWN_ERROR", + "NO_DEVICE_IN_SAME_STRUCTURE", + "NO_DEVICE_IN_SAME_NETWORK_OR_LOCATION", + "NO_DEVICE_IN_SAME_STRUCTURE_OR_NETWORK_OR_LOCATION", + "NO_DEVICE_SATISFIES_SAME_STRUCTURE_OR_UNKNOWN_IF_OWNED", + "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT", + "NO_DEVICE_MATCHED_DEVICE_ANNOTATION", + "MULTI_TARGET_DEVICE_NOT_SUPPORTED", + "NO_DEVICE_AFTER_LOCAL_DEVICE_EXCLUDED", + "UNABLE_TO_TARGET_ONLY_LOCAL_DEVICE", + "NO_DEVICE_MATCHED_REQUIRED_TRAITS", + "NO_DEVICE_MATCHED_REQUIRED_DEVICE_TYPE", + "NO_DEVICE_IN_SAME_OR_MENTIONED_STRUCTURE", + "NO_DEVICE_SATISFIES_PLAYBACK_REQUIREMENT", + "STRUCT_DISAMBIG_NOT_SUPPORTED", + "ROOM_DISAMBIG_NOT_SUPPORTED", + "UNRECOGNIZED_DEVICE_NAME", + "NO_LINKED_REMOTE_DEVICES", + "NO_LINKED_REMOTE_VIDEO_DEVICES", + "NO_SAFE_DEVICE_WITH_SCREEN", + "ALL_QUALIFIED_DEVICES_OFFLINE", + "CROSS_STRUCTURE_TARGETING_DISALLOWED", + "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT", + "MISSING_LOCAL_DEVICE_SETTING", + "NO_DEVICE_HAS_REQUIRED_APP", + "HYBRID_DEVICE_NOT_QUALIFIED", + "NO_NEARBY_DEVICES" + ], + "enumDescriptions": [ + "", + "Error about when there's no qualified devices in the same home graph structure as the local device.", + "Error about when there's no qualified devices in the same network or location as the local device.", + "Error about when there's no qualified devices in the same home graph structure or network or location as the local device.", + "Error about when no qualified device was found that matched the following conditions: 1) Both local device and target device are in the same home graph structure. 2) The distance to target device is unknown (i.e. either local device or target device is homeless) and target device is owned by the user. 3) If local device and target device are in different structures, only allowed when the query explicitly mentioned device name.", + "Error about when no qualified device satisfies the device capability requirement.", + "Error of no qualified devices matched requirements from device annotation.", + "Error of not supporting targeting multiple devices.", + "Error of no device left after local device is excluded within inclusiveness filter.", + "Error of unable to target only local device within inclusiveness filter.", + "Error of no qualified devices matched the required smart home traits.", + "Error of no qualified devices matched the required smart home device types.", + "Error of no qualified devices in the mentioned structure or in the same structure as the local device.", + "Error of no device satisfying playback requirements.", + "Error when structure disambiguation is not supported in the config. When config is supported (both structure_disambiguation_supported and multi_target_supported are set to true), the library would return structures for disambiguation.", + "Error when room disambiguation is not supported in the config. When config is supported (both room_disambiguation_supported and multi_target_supported are set to true), the library would return rooms for disambiguation.", + "Error when the device mentioned in the query is not recognized. In other words, we can't find a device which matched the device mentioned in the query.", + "Used when user requests to target on a remote device and there are no remote devices linked.", + "Used when user requests to target on a remote video device and there are no remote video devices linked.", + "Error when there is no safe screen device. For example, requesting screen-requiring content from Auto surface.", + "Error when all qualified devices are offline.", + "When user tries to target a device which is in a different structure and is not allowed. For example, if user doesn't own the structure. See go/on-multi-user-access-transitivity for more details.", + "Used when user requests a device with certain provider but no device can satisfies provider requirement.", + "AvailableDevice device setting of local device is missing.", + "Required app is not installed", + "All remote hybrid devices fail the propertries requirement specific (lock/unlock, etc) for hybrid devices (such as Tangor).", + "No nearby hearing devices" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoAlarmCapability": { + "description": "Capability with regard to support of alarms by the client.", + "id": "AssistantDevicesPlatformProtoAlarmCapability", + "properties": { + "maxSupportedAlarms": { + "description": "Maximum number of alarms that can be created on the client. Zero or unset indicates no maximum limit.", + "format": "int32", + "type": "integer" + }, + "restrictAlarmsToNextDay": { + "description": "Whether the client restricts alarms to ring within the next 24 hours.", + "type": "boolean" + }, + "supportsStopAction": { + "description": "Whether the client supports the STOP alarm action. If this is false, stop actions will be represented by the MUTATE action, and the device may need to check alarm state to determine if there's a firing alarm that needs to be dismissed.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoArgSpec": { + "id": "AssistantDevicesPlatformProtoArgSpec", + "properties": { + "intValueSpec": { + "$ref": "AssistantDevicesPlatformProtoIntValueSpec" + }, + "optionValueSpec": { + "$ref": "AssistantDevicesPlatformProtoOptionValueSpec" + }, + "type": { + "enum": [ + "TYPE_UNSPECIFIED", + "BOOL", + "INTEGER", + "OPTION" + ], + "enumDescriptions": [ + "A type must be specified.", + "", + "The arg value type is integer. The value can be any integer unless int_value_spec is provided below.", + "The arg value is from list of options. The valid options are specified from optional_value_spec below." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoCallCallCapability": { + "id": "AssistantDevicesPlatformProtoCallCallCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoClientReconnectCapability": { + "id": "AssistantDevicesPlatformProtoClientReconnectCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoCloudCapability": { + "description": "States the cloud capabilities of the device, i.e. the endpoint(s) to use for cloud execution of Actions or Registration.", + "id": "AssistantDevicesPlatformProtoCloudCapability", + "properties": { + "cloudEndpoints": { + "description": "The list of CloudEndpoints supported by this Device Model. Note that each should have a unique |name|. If any cloud endpoints are provided here, then the first one in the list will be used by default for all Cloud Execution. An Intent may override the default by providing an |execution_config|.", + "items": { + "$ref": "AssistantDevicesPlatformProtoCloudEndpoint" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoCloudEndpoint": { + "description": "A cloud endpoints associates with this device, it can be used for query parsing, or cloud execution.", + "id": "AssistantDevicesPlatformProtoCloudEndpoint", + "properties": { + "name": { + "description": "The name for this cloud endpoint. It's unique per Locale. This is not an API resource name. Ex: sample-nlu-endpoint", + "type": "string" + }, + "scopes": { + "description": "The list of scopes to be provided in the OAuth2 token. They must be a subset of the scopes registered in the Account Linking flow, or the request will fail. If the client itself provides the token, then this field is ignored.", + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "description": "The URL for this endpoint, it must start with https.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoDeviceActionCapability": { + "description": "This capability represents device action needed capability. Next ID: 10", + "id": "AssistantDevicesPlatformProtoDeviceActionCapability", + "properties": { + "assistantDeviceInRoomOptOut": { + "description": "Integrate your device with Google's Smart Home solution by putting your device into Google's Home Graph, a database that stores and provides contextual data about the home and its devices. For example, Home Graph can store the concept of a living room that contains multiple types of devices, when you say \"turn on the light\" to a device, if you have light in the living room, that light will be turned on.", + "type": "boolean" + }, + "builtInIntentMode": { + "description": "Specifies behavior for built-in device actions for this device model. If not specified, defaults to ENABLE_CONFIGURED_INTENTS_ONLY.", + "enum": [ + "INTENT_MODE_UNSPECIFIED", + "ENABLE_ALL", + "ENABLE_ALL_AUTO_ACTIONS", + "ENABLE_CONFIGURED_INTENTS_ONLY", + "PUNT_FOR_UNCONFIGURED_INTENTS" + ], + "enumDescriptions": [ + "", + "All intents are enabled, regardless of whether the intent is registered in the `intents` field.", + "All Auto device actions are enabled, regardless of whether the intent is registered in the `intents` field. Only use it for Auto device type.", + "Only the intents registered in the `intents` field will be enabled.", + "Only the intents registered in the `intents` field will be enabled. Additionally, read an error message when the unconfigured intents are invoked." + ], + "type": "string" + }, + "customIntentMode": { + "description": "Specifies which custom device actions should be enabled for this device model. This will only affect the behavior of intents corresponding to those from the Action Package of this project. If not specified, defaults to ENABLE_ALL.", + "enum": [ + "INTENT_MODE_UNSPECIFIED", + "ENABLE_ALL", + "ENABLE_ALL_AUTO_ACTIONS", + "ENABLE_CONFIGURED_INTENTS_ONLY", + "PUNT_FOR_UNCONFIGURED_INTENTS" + ], + "enumDescriptions": [ + "", + "All intents are enabled, regardless of whether the intent is registered in the `intents` field.", + "All Auto device actions are enabled, regardless of whether the intent is registered in the `intents` field. Only use it for Auto device type.", + "Only the intents registered in the `intents` field will be enabled.", + "Only the intents registered in the `intents` field will be enabled. Additionally, read an error message when the unconfigured intents are invoked." + ], + "type": "string" + }, + "defaultExecutionConfig": { + "$ref": "AssistantDevicesPlatformProtoExecutionConfig", + "description": "Default instructions for routing of any Intent. The data here could be overridden for specific Intents if provided directly in the 'intents' field." + }, + "inlinedActionCapability": { + "$ref": "AssistantDevicesPlatformProtoInlinedActionCapability", + "description": "Specifies capabilities for device actions that are inlined in the google.assistant.embedded.v1.DeviceAction message." + }, + "intents": { + "description": "Intent configurations. Built-in and custom intents may be configured here. Note that built-in intents will always behave with IntentMode of ENABLE_CONFIGURED_INTENTS_ONLY. The IntentMode for custom intents can be changed using the custom_intent_mode. To configure an intent, list it here with its intent name, e.g. \"MY_CUSTOM_INTENT\", \"google.assistant.car.model.capabilities.AC_TEMPERATURE\".", + "items": { + "$ref": "AssistantDevicesPlatformProtoIntent" + }, + "type": "array" + }, + "providedData": { + "description": "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.", + "items": { + "$ref": "AssistantDevicesPlatformProtoProvidedData" + }, + "type": "array" + }, + "traits": { + "description": "List of built-in traits such as \"action.devices.traits.OnOff\" See java/com/google/home/graph/service/config/protoconf.pi As of Nov. 2017, we also support custom traits for EAP users. We'll eventually disable custom traits once custom actions are in place.", + "items": { + "type": "string" + }, + "type": "array" + }, + "understandingConfig": { + "$ref": "AssistantDevicesPlatformProtoUnderstandingConfig", + "description": "Specifies the format how Google routes queries to 3P cloud. By default, this field is unset, all partners should get shallow NLU. This is needed *ONLY* for specific partners for strong business reasons." + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoDeviceModifySettingCapability": { + "id": "AssistantDevicesPlatformProtoDeviceModifySettingCapability", + "properties": { + "clientOpProperty": { + "$ref": "AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoExecutionConfig": { + "description": "Specifies the routing capabilities of the Intent. It will apply only when the Intent is triggered. Next ID: 8", + "id": "AssistantDevicesPlatformProtoExecutionConfig", + "properties": { + "cloudEndpointName": { + "description": "Instructions for performing a cloud execution request for the Intent when the execution_type is set to CLOUD. If non-empty, then the device execution would be routed to the CloudEndpoint specified by this name. The Account Linking exchange may be performed to fetch the OAuth access token, and the access token will be included in the HTTP header.", + "type": "string" + }, + "cloudIntentTranslationDisabled": { + "description": "If this field is set, then the Syndication cloud call will be disabled for this intent. Note this only applies if any Syndication cloud endpoint is associated with the Device Model, otherwise setting this field does nothing. By default, all Intents that are enabled and supported by the Syndication API will be routed through the Syndication cloud endpoint if it's provided.", + "type": "boolean" + }, + "intentCommandFormat": { + "description": "Specifies the intent command format for this Action. For example, in order to launch an Android intent instead of receiving the device action payload on the client, then this field can be set with \"intent:/#Intent;...;my_extra={$.params.channels[0].channelCode};end\" The parameter \"{$.params.channels[0].channelCode}\" is in JSON path format, and will be replaced with the content from the original device action payload. Thus, with # JSON \"execution\": [ { \"command\": \"action.devices.commands.SelectChannel\", \"params\": { \"channels\": [{ \"channelName\": \"exampleChannel\", \"channelCode\": \"1-1\" }] } } ] as the original action result, then the final result would look like \"intent:/#Intent;...;my_extra=\\\"1-1\\\";end\" ", + "type": "string" + }, + "localDisabled": { + "description": "If this field is set, then local execution capability is disabled for all matching intents.", + "type": "boolean" + }, + "localExecutionType": { + "description": "Specifies how to execute this Action when it is invoked locally (from the same device.)", + "enum": [ + "DEFAULT", + "CLOUD" + ], + "enumDescriptions": [ + "Use the default mechanism (route requests directly to the device via the regular channel.)", + "Route all execution requests to cloud." + ], + "type": "string" + }, + "remoteDisabled": { + "description": "If this field is set, then remote execution capability is disabled for all matching intents.", + "type": "boolean" + }, + "remoteExecutionType": { + "description": "Specifies how to execute this Action when it is invoked remotely (from a different device.)", + "enum": [ + "DEFAULT", + "CLOUD" + ], + "enumDescriptions": [ + "Use the default mechanism (route requests directly to the device via the regular channel.)", + "Route all execution requests to cloud." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoInlinedActionCapability": { + "id": "AssistantDevicesPlatformProtoInlinedActionCapability", + "properties": { + "alarm": { + "$ref": "AssistantDevicesPlatformProtoAlarmCapability", + "description": "Specifies capabilities for handling on-device alarms. The presence of this field, even if empty, implies that the device supports alarms." + }, + "responseLimits": { + "$ref": "AssistantDevicesPlatformProtoResponseLimits", + "description": "Specifies the size limits on responses. If message is not defined then no limits exist." + }, + "supportSdkExecute": { + "description": "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.", + "type": "boolean" + }, + "supportedDeviceOps": { + "$ref": "AssistantDevicesPlatformProtoSupportedDeviceOps", + "description": "Specifies capabilities for handling assistant.embedded.v1.DeviceOp." + }, + "supportsMultiResponse": { + "description": "Specifies whether server can send a series of responses for a single query. Example: Routines where multiple actions to be executed one after another.", + "type": "boolean" + }, + "timer": { + "$ref": "AssistantDevicesPlatformProtoTimerCapability", + "description": "Specifies capabilities for handling on-device timers. The presence of this field, even if empty, implies that the device supports timers." + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoIntValueSpec": { + "id": "AssistantDevicesPlatformProtoIntValueSpec", + "properties": { + "maxValue": { + "format": "int64", + "type": "string" + }, + "minValue": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoIntent": { + "description": "An intent configures the behavior of a device action for this device. Next ID: 7", + "id": "AssistantDevicesPlatformProtoIntent", + "properties": { + "argSpecs": { + "additionalProperties": { + "$ref": "AssistantDevicesPlatformProtoArgSpec" + }, + "description": "List of arguments associated this intent. Each of which depends a template for the expected argument.", + "type": "object" + }, + "executionConfig": { + "$ref": "AssistantDevicesPlatformProtoExecutionConfig", + "description": "Instructions for the routing of this Intent." + }, + "name": { + "description": "The name of the intent.", + "type": "string" + }, + "providedDataNames": { + "description": "List of provided data names used by this intent. Note that some built-in intents will not function properly without provided data, such as `action.intent.SwitchChannel` or `action.intent.AppSelector`.", + "items": { + "type": "string" + }, + "type": "array" + }, + "securityConfig": { + "$ref": "AssistantDevicesPlatformProtoSecurityConfig", + "description": "Security configuration for this Intent." + }, + "triggerConditions": { + "description": "The conditions which must be met by the device before executing this Intent. More than one can be provided, in which case the conditions operate with the \"AND\" operator, i.e. the first condition which is failed will be used to restrict the execution of this Intent.", + "items": { + "$ref": "AssistantDevicesPlatformProtoTriggerCondition" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoInternalCapability": { + "description": "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.", + "id": "AssistantDevicesPlatformProtoInternalCapability", + "properties": { + "allowedAssistantSdkAuthProjectIds": { + "description": "When using the Assistant SDK (Embedded Assistant API), the project id used to authenticate the gRPC request is checked and must match against the project id of the Device Model. We will additionally allow the project ids listed in the device model here to be let through. See https://docs.google.com/document/d/1InAczpQJs6LCH1l--2yy67JM9hsBJbiL57fusnL3A8A", + "items": { + "type": "string" + }, + "type": "array" + }, + "appCapabilitiesFromDeviceInstallApps": { + "description": "Load the assistant.api.AppCapabilities from DEVICE_INSTALLED_APP footprint corpus. See go/edoras-geller.", + "type": "boolean" + }, + "cloudDeviceActionEndpoint": { + "$ref": "AssistantDevicesPlatformProtoCloudEndpoint", + "description": "Uses this endpoint for device action fulfillment when there's no endpoint in syndication_metadata. 1p surfaces/devices such as telephone can enable this for its cloud action fulfillment without enabling the whole syndication experience." + }, + "deviceActionsEligibleForHighConfidence": { + "description": "Signals that the model will have updated ranking behavior as described in https://docs.google.com/document/d/1SN_AgadRr_cdIrFe-qgRbIX2J1sOE7lcRXAvM1GUPoU.", + "type": "boolean" + }, + "forceSignIn": { + "description": "Make Google sign-in mandatory for using Google Assistant on the device. (This bit is initially added for Samsung TV.)", + "type": "boolean" + }, + "forceThirdPartyDeviceIdForDeviceLookup": { + "description": "When looking up device (for example for disclosure consent check), then always use the third party device id for lookup instead of any other device id which would normally have higher precedence, such as cast_device_id.", + "type": "boolean" + }, + "forceTransactionsAuthentication": { + "description": "Adds \"transactions.AUTHENTICATION\" for car automation probers. Since the probers run as Assistant SDK requests, voice match always fails for car automation requests, so we add this client op as a hack to allow probers to appear as personal devices and bypass voice match. See b/137221645.", + "type": "boolean" + }, + "hasCustomSearchResultsRendering": { + "description": "Signals that this device can \"render\" raw search results even with no screen (e.g., using a text reader). If this is true, fallback search results can be returned as a custom device action in a SearchResults message. http://google3/assistant/embedded/proto_translation/utils/proto/search_results.proto", + "type": "boolean" + }, + "overrideProjectIdForDeviceLookup": { + "description": "When looking up device (for example for disclosure consent check), use this project id as part of the primary key for the device lookup (i.e. instead of the device_config.agent_id.) The precedence is as follows: 1) this field, if set for the device's device model 2) device_config.agent_id 3) device_model.project_id", + "type": "string" + }, + "stadiaAssistantConfig": { + "$ref": "AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig" + }, + "telephoneAttribution": { + "description": "Telephone server is able to send attribution to user feature phone. See go/telephone-attribution.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig": { + "description": "The StadiaAssistantConfig. This field should only be set if the device model is a Stadia.", + "id": "AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig", + "properties": { + "stadiaPlatform": { + "enum": [ + "UNSPECIFIED", + "CHROMECAST", + "WEB_BROWSER" + ], + "enumDescriptions": [ + "Platform unspecified.", + "Platform is Chromecast.", + "Platform is web browser." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoMediaNextCapability": { + "id": "AssistantDevicesPlatformProtoMediaNextCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoMediaPauseCapability": { + "id": "AssistantDevicesPlatformProtoMediaPauseCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoMediaPlayMediaCapability": { + "id": "AssistantDevicesPlatformProtoMediaPlayMediaCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoMediaPreviousCapability": { + "id": "AssistantDevicesPlatformProtoMediaPreviousCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoMediaResumeCapability": { + "id": "AssistantDevicesPlatformProtoMediaResumeCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoMediaStopCapability": { + "id": "AssistantDevicesPlatformProtoMediaStopCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoOptionValueSpec": { + "id": "AssistantDevicesPlatformProtoOptionValueSpec", + "properties": { + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoProvidedData": { + "description": "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.", + "id": "AssistantDevicesPlatformProtoProvidedData", + "properties": { + "name": { + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoProviderOpenCapability": { + "id": "AssistantDevicesPlatformProtoProviderOpenCapability", + "properties": { + "clientOpProperty": { + "$ref": "AssistantApiClientOpPropertiesProviderOpenClientOpProperty" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoResponseLimits": { + "description": "Specifies the size limits on responses receivable by the client.", + "id": "AssistantDevicesPlatformProtoResponseLimits", + "properties": { + "maxAssistResponseSizeBytes": { + "description": "Max size in bytes of the total serialized AssistResponse receivable by the client. If response exceeds this max, response may be modified by the server.", + "format": "int32", + "type": "integer" + }, + "maxDisplayLinesBytes": { + "description": "Maximum size in bytes (not characters) of text the display can handle (which may be different from how much the display can show at a time due to scrolling).", + "format": "int32", + "type": "integer" + }, + "maxSuggestionChipBytes": { + "description": "Maximum size in bytes (not characters) for each suggestion chip.", + "format": "int32", + "type": "integer" + }, + "maxSuggestionChips": { + "description": "Maximum number of suggestion chips the device can handle to display.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoSecurityConfig": { + "description": "Encapsulates security configuration for a single intent of a device model.", + "id": "AssistantDevicesPlatformProtoSecurityConfig", + "properties": { + "authMechanismForRemoteRequests": { + "description": "Specifies auth mechanism to be used upon remote request for device action.", + "enum": [ + "NONE", + "ENABLED", + "FINGERPRINT_OR_PASSWORD", + "PIN" + ], + "enumDescriptions": [ + "Indicates that auth is not required.", + "Indicates that auth is required. Auth mechanism used is determined automatically at query time, based on various factors such as device type, user settings, etc.", + "Use fingerprint, with fallback to Google account password if fingerprint capabilities are not available on personal device. Note: explicit configuration of specific auth mechanism is being deprecated.", + "Prompt for pin, sent to cloud for validation. Note: explicit configuration of specific auth mechanism is being deprecated." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoSendChatMessageCapability": { + "id": "AssistantDevicesPlatformProtoSendChatMessageCapability", + "properties": {}, + "type": "object" + }, + "AssistantDevicesPlatformProtoSupportedDeviceOps": { + "description": "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.", + "id": "AssistantDevicesPlatformProtoSupportedDeviceOps", + "properties": { + "callCall": { + "$ref": "AssistantDevicesPlatformProtoCallCallCapability", + "description": "|call_call| specifies the support for the call.CALL clientop, and the corresponding call_call field in assistant.embedded.v1.DeviceOp." + }, + "clientReconnect": { + "$ref": "AssistantDevicesPlatformProtoClientReconnectCapability", + "description": "|client_reconnect| indicates support for client.RECONNECT using assistant.embedded.v1.DeviceOp. There is an alternative API/capability for client.RECONNECT specified in RoutineCapability.supports_reconnect. Client should choose between this and RoutineCapability but not both." + }, + "deviceModifySetting": { + "$ref": "AssistantDevicesPlatformProtoDeviceModifySettingCapability", + "description": "|device_modify_setting| specifies the support for device.MODIFY_SETTING client_op, and the corresponding device_modify_setting field in assistant.embedded.v1.DeviceOp." + }, + "mediaNext": { + "$ref": "AssistantDevicesPlatformProtoMediaNextCapability" + }, + "mediaPause": { + "$ref": "AssistantDevicesPlatformProtoMediaPauseCapability" + }, + "mediaPlayMedia": { + "$ref": "AssistantDevicesPlatformProtoMediaPlayMediaCapability" + }, + "mediaPrevious": { + "$ref": "AssistantDevicesPlatformProtoMediaPreviousCapability" + }, + "mediaResume": { + "$ref": "AssistantDevicesPlatformProtoMediaResumeCapability" + }, + "mediaStop": { + "$ref": "AssistantDevicesPlatformProtoMediaStopCapability" + }, + "providerOpen": { + "$ref": "AssistantDevicesPlatformProtoProviderOpenCapability", + "description": "|provider_open| specifies the support for provider.OPEN client_op, and the corresponding provider_open field in assistant.embedded.v1.DeviceOp." + }, + "sendChatMessage": { + "$ref": "AssistantDevicesPlatformProtoSendChatMessageCapability", + "description": "|send_chat_message| specifies the support for the chat_message.SEND clientop, and the corresponding send_chat_message field in assistant.embedded.v1.DeviceOp." + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoTimerCapability": { + "description": "Capability with regard to support of timers by the client.", + "id": "AssistantDevicesPlatformProtoTimerCapability", + "properties": { + "maxSupportedExtendedTimerDuration": { + "$ref": "AssistantApiDuration", + "description": "Maximum extended timer duration supported by the client. The extended timer duration is the total start-to-finish duration after an AddTimeToTimer operation. E.g. if a user sets a timer for 30 minutes, and later adds 10 minutes, the extended duration is 40 minutes. Zero or unset indicates no maximum limit." + }, + "maxSupportedTimerDuration": { + "$ref": "AssistantApiDuration", + "description": "Maximum timer duration supported by the client. Zero or unset indicates no maximum limit." + }, + "maxSupportedTimers": { + "description": "Maximum number of timers that can be created on the client. Zero or unset indicates no maximum limit.", + "format": "int32", + "type": "integer" + }, + "supportsMutateAction": { + "description": "Whether the client supports the MUTATE timer action. If this is false, mutate operations may be handled by sending a pair of REMOVE and CREATE timer actions to replace the existing timer instead of mutating it.", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoTriggerCondition": { + "description": "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.", + "id": "AssistantDevicesPlatformProtoTriggerCondition", + "properties": { + "requiredStateValues": { + "additionalProperties": { + "$ref": "AssistantDevicesPlatformProtoArgSpec" + }, + "description": "The map of state keys along with their values which must be returned by the device, for example to start the dishwasher you may require states: {\"door\": \"CLOSED\", \"detergent_status\": \"READY\"}.", + "type": "object" + }, + "simpleTts": { + "description": "A simple TTS to play.", + "type": "string" + }, + "status": { + "description": "Refers to a defined ConditionalResult keyed by its status. It could be a built-in or custom ConditionalResult for this Intent. Note: the states provided by the device MUST contain all of the states required by the ConditionalResult.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantDevicesPlatformProtoUnderstandingConfig": { + "description": "Specifies the NLU level that Google performs, which determines the request format sent to the 3P cloud.", + "id": "AssistantDevicesPlatformProtoUnderstandingConfig", + "properties": { + "nluLevel": { + "description": "Specifies the NLU level for the intent.", + "enum": [ + "DEFAULT_SHALLOW_NLU", + "NO_NLU", + "DEEP_NLU" + ], + "enumDescriptions": [ + "Default value: Shallow NLU, the cloud request contains a structured intent including the command (e.g. \"action.devices.commands.SelectChannel\"), the unparsed description (e.g. \"Tom Cruise action movies\"), the target device and the target application.", + "No NLU, the cloud request contains the transcribed query (raw query or rewritten query based on previous conversation).", + "Deep NLU, the cloud request specifies a structured description of the media the user wants to act upon. E.g.: for query \"Play an action movie with Tom Cruise\", the structured description would be: \"parsedMediaDescription\": { \"mediaType\": \"MOVIE\", \"genre\": { \"name\": \"action\", \"externalId\": { \"tmsId\": \"tmsIdForActionGenre\" }, }, \"actor\": { \"name\": \"Tom Cruise\", \"externalId\": { \"tmsId\": \"tmsRootIdForTomCruise\", }, }, }," + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsAllMediaStreamLog": { + "id": "AssistantLogsAllMediaStreamLog", + "properties": { + "streams": { + "description": "All active media streams while the user issues the query.", + "items": { + "$ref": "AssistantLogsMediaStreamLog" + }, + "type": "array" + }, + "targetStream": { + "$ref": "AssistantLogsMediaStreamLog", + "description": "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." + } + }, + "type": "object" + }, + "AssistantLogsAmbiguousTargetDeviceLog": { + "description": "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.", + "id": "AssistantLogsAmbiguousTargetDeviceLog", + "properties": { + "ambiguousDeviceIndex": { + "description": "Device index of the initial ambiguous devices. The device index in this message is consistent with the device index in DeviceInfoLog. It would be used to track more detailed information of a device if needed.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "finalTargetDevice": { + "$ref": "AssistantLogsDeviceInfoLog", + "description": "the final targeted device selected by playability filter or DeviceSelectionDialog" + }, + "playabilityFilteredDevicesIndex": { + "description": "Device index of the devices after playability filter", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "puntInfoLog": { + "description": "When there is no qualified devices after playability check, it would populate punt_info below. If all devices are filtered out for the same reason, there would only be one item. Otherwise, there will be multiple items.", + "items": { + "$ref": "AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog" + }, + "type": "array" + }, + "structureFilteredDeviceIndex": { + "description": "Device index of the devices after structure filter", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog": { + "description": "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.", + "id": "AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog", + "properties": { + "deviceIndex": { + "description": "Index of devices that have the same punt info during playability check, i.e. same media_excuse and provider_mid.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "mediaExcuse": { + "description": "Excuse for media action triggering. See: assistant/verticals/media/proto/media_excuse.proto.", + "format": "int32", + "type": "integer" + }, + "providerMid": { + "description": "Provider id that the excuse belongs to. This is the KG MID of the provider, e.g., \"/m/09jcvs\" for Youtube.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsCommunicationDeviceContactInfoLog": { + "description": "This is the log version of apps.people.oz.external.mergedpeopleapi.DeviceContactInfo Next ID: 2", + "id": "AssistantLogsCommunicationDeviceContactInfoLog", + "properties": { + "rawContactInfo": { + "description": "This list provides account information from the raw contact which is the source of this field.", + "items": { + "$ref": "AssistantLogsCommunicationRawDeviceContactInfoLog" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsCommunicationFuzzyNgramMatchLog": { + "description": "This is the log version of fuzzy ngram match results that's used for generating the best fuzzy match. Next ID: 3", + "id": "AssistantLogsCommunicationFuzzyNgramMatchLog", + "properties": { + "relativeCost": { + "format": "float", + "type": "number" + }, + "type": { + "enum": [ + "NONE", + "EDIT_DISTANCE", + "GENIE_PLEXICON_DISTANCE", + "GENIE_ALTERNATIVE_RECOGNITION", + "JAPANESE_NAME_TRANSLITERATOR" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsCommunicationGoogleAccountProvenance": { + "description": "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", + "id": "AssistantLogsCommunicationGoogleAccountProvenance", + "properties": { + "email": { + "type": "string" + }, + "gaiaId": { + "format": "int64", + "type": "string" + }, + "isDasherAccount": { + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantLogsCommunicationPersonMetadataLog": { + "description": "This is the log version of apps.people.oz.external.mergedpeopleapi.PersonMetadata Next ID: 2", + "id": "AssistantLogsCommunicationPersonMetadataLog", + "properties": { + "deviceContactInfo": { + "items": { + "$ref": "AssistantLogsCommunicationDeviceContactInfoLog" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsCommunicationPersonalContactDataLog": { + "description": "Contact meta data. Next ID: 30", + "id": "AssistantLogsCommunicationPersonalContactDataLog", + "properties": { + "accountProvenance": { + "$ref": "AssistantLogsCommunicationGoogleAccountProvenance", + "description": "Google AccountProvenance of the contact." + }, + "commonNameAliasConfidence": { + "description": "Populated if matched_name_type is GIVEN_NAME_ALIAS or FULL_NAME_ALIAS.", + "format": "float", + "type": "number" + }, + "conceptId": { + "description": "Concept id for relationships in English, e.g. \"Mother\" for all non-English locales. It's only populated for source = RELATIONSHIP.", + "type": "string" + }, + "deviceContactAttributes": { + "description": "Integer value corresponding to DeviceContactExtraMetadata.Attribute enum. http://google3/social/graph/wire/proto/merged_person.proto?l=933\u0026rcl=320308954", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "emailIdCount": { + "description": "# emails stored for the contact.", + "format": "int32", + "type": "integer" + }, + "fuzzyNgramMatch": { + "description": "Populate only if ContactRecognitionAlternate.Source is 'FUZZY_CONTACT_MATCH'.", + "items": { + "$ref": "AssistantLogsCommunicationFuzzyNgramMatchLog" + }, + "type": "array" + }, + "gaiaId": { + "description": "Contact owner's gaia id from cs/symbol::symbol:quality_qrewrite.PersonalContactData.shared_contact_owner_gaia_id. Only populated for is_shared = true and non sign-out mode and user is not the owner of the contact(shared contact from other user).", + "format": "int64", + "type": "string" + }, + "isContactFromSecondaryAccount": { + "description": "Boolean value indicating whether selected contact is from different account than the logged in account.", + "type": "boolean" + }, + "isShared": { + "description": "If this is a shared contact. This is true in 2 cases: - User is calling their own contacts that have been marked as shared. - User is calling shared contacts from some other user's contact list.", + "type": "boolean" + }, + "isTransliteratedMatch": { + "description": "Indicate the contact matches the transliterated query.", + "type": "boolean" + }, + "isVanityContact": { + "description": "True if the contact is a vanity contact(has email = user's email address).", + "type": "boolean" + }, + "isVisibleToGuestsRelationship": { + "description": "If the lookup was done using relationship which is visible to guests. This value will only be set if lookup was done using relationship. E.g. user has a guest relationship (doctor) -\u003e (John) And user says \"call doctor\", then this value will be true.", + "type": "boolean" + }, + "matchedNameType": { + "description": "The matched name type of a contact candidate.", + "enum": [ + "UNSPECIFIED", + "GIVEN_NAME", + "FAMILY_NAME", + "FULL_NAME", + "NICKNAME", + "OTHER", + "INITIAL_WITH_FAMILY_NAME", + "EMAIL_USERNAME", + "VANITY_NICKNAME", + "GIVEN_NAME_ALIAS", + "FULL_NAME_ALIAS", + "HOMOPHONE_GIVEN_NAME", + "HOMOPHONE_FAMILY_NAME", + "HOMOPHONE_FULL_NAME", + "HOMOPHONE_NICKNAME", + "GIVEN_MIDDLE_NAME", + "GIVEN_NAME_WITH_FAMILY_NAME_INITIAL", + "EMAIL_OF_FAMILY_MEMBER" + ], + "enumDescriptions": [ + "", + "Contact's given name, or first word in name, or last word if query is in CJK.", + "Contact's family name, or last word in name, or first word if query is in CJK.", + "Contact's display name, or given+family, or family+given if query is in CJK. Contact's middle name is optional.", + "Query span matches contact's nickname.", + "Not used yet.", + "Either or both of first/middle initials along with family name.", + "Email username, controlled by FocusNameParams.annotate_email_username.", + "Vanity nicknames like \"myself\", data is at //quality/qrewrite/servlets/internal/focus_name/data/vanity_nickname.txt", + "Contact's given name is a common name alias of query span, e.g. query [Bob] may match contact with given name \"Robert\".", + "Contact's given name is a common name alias of first word in query span, while remaining parts fully matched.", + "Homophone name match of given name, or last word. Only for CJK query.", + "Homophone name match of family name, or first word. Only for CJK query.", + "Homophone name match of full name, or family+given. Only for CJK query.", + "Homophone name match of nickname. Only for CJK query.", + "Contact's given name + middle name. Only for contacts with 3 words.", + "Contact's given name along with last name initial. Only support non-CJKT contact name.", + "This type indicates we find a match of the user's family member - as defined by families.google.com - by matching the email full address. Controlled by FocusNameParams.annotate_email_full_address." + ], + "type": "string" + }, + "matchedRecognitionAlternateName": { + "description": "Alternate recognition term which was used to match this contact.", + "type": "string" + }, + "matchedStarlightLookupName": { + "description": "Ngram matched by starlight lookup for fuzzy matching in fulfillment. We need this to analyze how many contacts are returned by starlight lookup that is not matched by fuzzy matching. For example, \"Komal Dear\" is matched to \"Komal Dr\" by fuzzy match. When doing starlight lookup, \"Komal\" and \"Dr\" will be looked up separately. So \"Dr xxx\" will also be returned. We want to see how often this happens.", + "items": { + "type": "string" + }, + "type": "array" + }, + "metadata": { + "$ref": "AssistantLogsCommunicationPersonMetadataLog", + "description": "PersonMetadata of the selected contact." + }, + "nameMatchedContactIndex": { + "description": "The indices of the contact in |candidate_contact| whose name matches the |selected_contact_data|. |candidate_contact|: http://google3/logs/proto/assistant/contact.proto?l=111\u0026rcl=306283376 |selected_contact_data|: http://google3/logs/proto/assistant/contact.proto?l=108\u0026rcl=306283376", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "originalQueryName": { + "description": "The original name in the query as transcribed by ASR.", + "type": "string" + }, + "phone": { + "description": "Information regarding the phone endpoints of the selected contact. Currently it is only logged for selected candidate.", + "items": { + "$ref": "AssistantLogsCommunicationPhoneLog" + }, + "type": "array" + }, + "phoneNumberCount": { + "description": "# phone_numbers stored for the contact.", + "format": "int32", + "type": "integer" + }, + "pkgReferenceType": { + "description": "Encodes if pkg_person was resolved via a name or relationship reference.", + "enum": [ + "UNKNOWN_PKG_REFERENCE_TYPE", + "PKG_NAME_REFERENCE", + "PKG_RELATIONSHIP_REFERENCE" + ], + "enumDescriptions": [ + "", + "Ann [Charlie]", + "my family dad my sister's kids" + ], + "type": "string" + }, + "recognitionAlternateScore": { + "description": "Populate only if ContactRecognitionAlternate.Source is not NONE.", + "format": "float", + "type": "number" + }, + "recognitionAlternateSource": { + "description": "Recognition alternative source type. If not none, then it indicates the personal contact data is alternative and how the alternative is fulfilled.", + "enum": [ + "NONE", + "S3_HYPOTHESES", + "GENIE_QUERY_ALTERNATIVES", + "NAME_CORRECTION_LOG", + "FUZZY_CONTACT_MATCH", + "NEURAL_CONTACT_MATCH", + "NEURAL_CONTACT_MATCH_DARK_LAUNCH" + ], + "enumDescriptions": [ + "", + "Alternate name from S3 recognition topN hypothesis.", + "Alternate name from Genie query alternatives.", + "Alternate name from contact correction history.", + "Fuzzy match with user's contacts.", + "Neural match. See go/phonetic-contact-match.", + "The dark launch for a neural match. We found a match, but we ignore it for serving and just log it." + ], + "type": "string" + }, + "relationshipMemoryCount": { + "description": "The number of resolved relationship names and contact pointers from Assistant Memory.", + "format": "int32", + "type": "integer" + }, + "selectedPhone": { + "$ref": "AssistantLogsCommunicationPhoneLog", + "description": "Information regarding the selected phone endpoint. Currently it is only logged for selected candidate." + }, + "shortcutContactInfo": { + "$ref": "MajelContactInformationShortcutInformation", + "description": "Shortcut information of the contact." + }, + "source": { + "description": "The contact source of a contact candidate.", + "enum": [ + "UNKNOWN", + "FOCUS_CONTACT", + "DEVICE_CONTACT", + "GMAIL_INFERENCE", + "S3_DECORATOR", + "RELATIONSHIP", + "VANITY", + "SIGNED_OUT_DEVICE", + "SHARED_CONTACT", + "FAMILY_MEMBER", + "SHARED_DEVICE_USER", + "ON_DEVICE_CONTACT_LOOKUP" + ], + "enumDescriptions": [ + "", + "Contacts from Focus", + "Contacts from device, see go/device-content", + "Contacts inferred from Gmail", + "Contacts from S3 decorator", + "Whitelisted relationships no matter if user has such contact, see go/sls-personal_relationship_names_and_aliases.", + "Vanity nicknames or user's own profile name.", + "Signed out device contact names", + "Contacts shared from other users. See go/multi-user-shared-contact.", + "People in the user's family group in http://families.google.com who are not contacts.", + "People who share a device with the user who are not contacts.", + "Contacts from on device lookup during contact fulfillment." + ], + "type": "string" + }, + "systemContactGroupId": { + "description": "Integer value corresponding to SystemContactGroup enum. http://google3/social/graph/wire/proto/merged_person.proto?l=3151\u0026rcl=320308954", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "whatsappPhoneNumberCount": { + "description": "DEPRECATED. Use phone instead. Used before 2020-01-13. Number of phone numbers annotated with Whatsapp.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantLogsCommunicationPhoneLog": { + "description": "This is the log version of apps.people.oz.external.mergedpeopleapi.Phone proto. Next ID: 3", + "id": "AssistantLogsCommunicationPhoneLog", + "properties": { + "rawDeviceContactInfo": { + "description": "This list provides account information from the raw contact which is the source of this field.", + "items": { + "$ref": "AssistantLogsCommunicationRawDeviceContactInfoLog" + }, + "type": "array" + }, + "type": { + "description": "Label for phone number in the Contacts app. It can have standard values provided by the app e.g. MOBILE, HOME, WORK etc, but users are allowed to modify. So essentially it becomes user content.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsCommunicationRawDeviceContactInfoLog": { + "description": "This is the log version of apps.people.oz.external.mergedpeopleapi.RawDeviceContactInfo proto. Next ID: 3", + "id": "AssistantLogsCommunicationRawDeviceContactInfoLog", + "properties": { + "accountType": { + "description": "Account type of raw contact, e.g. \"com.google\" or \"com.linkedin.android\".", + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsDefaultDeviceLog": { + "description": "Log device info of default speaker and tv", + "id": "AssistantLogsDefaultDeviceLog", + "properties": { + "defaultSpeaker": { + "$ref": "AssistantLogsDeviceInfoLog" + }, + "defaultTv": { + "$ref": "AssistantLogsDeviceInfoLog" + }, + "sourceDeviceId": { + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsDefaultDevicesLog": { + "id": "AssistantLogsDefaultDevicesLog", + "properties": { + "localDefaultDevices": { + "$ref": "AssistantLogsDefaultDeviceLog" + }, + "nearbyDefaultDevices": { + "description": "Default settings of nearby devices.", + "items": { + "$ref": "AssistantLogsDefaultDeviceLog" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsDeviceAnnotationLog": { + "description": "Device annotation mention from query", + "id": "AssistantLogsDeviceAnnotationLog", + "properties": { + "rawTextFromQuery": { + "description": "The raw text mentioning a device from the query, such as \"any tv\".", + "type": "string" + }, + "type": { + "description": "The annotation type mentioned in the query.", + "enum": [ + "NO_DEVICE_ANNOTATION", + "DEVICE_ID_ANNOTATION", + "DEVICE_TYPE_ANNOTATION", + "DEVICE_TEXT_ANNOTATION" + ], + "enumDescriptions": [ + "No device is mentioned in the query.", + "Annotation specifying a device linked to user's account", + "Annotation specifying a general device, such as speaker, TV, etc.", + "Annotation with text. It could be random text, such as \"dummy thing\"." + ], + "type": "string" + }, + "userDefinedName": { + "description": "The matched device name set by the user, such as \"big screen tv\".", + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsDeviceInfoLog": { + "description": "The information related to the device.", + "id": "AssistantLogsDeviceInfoLog", + "properties": { + "arbitrationDeviceId": { + "description": "Device identifier string for the current device used in the arbitration service.", + "type": "string" + }, + "connectivity": { + "enum": [ + "UNKNOWN_CONNECTIVITY", + "ONLINE_STATE", + "OFFLINE_STATE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "deviceId": { + "description": "The identification of the device. DeviceId (go/as-device-id) has multiple fields. To consloidate it to a single to make dremel easier, we use the string obtained by calling go/get-device-id.", + "type": "string" + }, + "deviceIndex": { + "description": "We index linked devices and log these index to avoid logging device_id. device_index should always be a positive number or -1. -1 means this device is not in homegraph.", + "format": "int32", + "type": "integer" + }, + "deviceModelId": { + "description": "This is the device_model_id field in device_settings proto. It has the same value for the same type of devices. e.g. Sonos.Sonos One.S13", + "type": "string" + }, + "distance": { + "description": "LINT.ThenChange(//depot/google3/assistant/context/proto/device_arbitration.proto:EstimatedRelativeDistance)", + "enum": [ + "UNKNOWN_DISTANCE", + "CLOSEST", + "EQUALLY_CLOSE", + "FURTHER" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "eliminatingLumosProcessor": { + "description": "The lumos processor which eliminated this device, if applicable", + "enum": [ + "UNKNOWN_LUMOS_PROCESSOR", + "CAPABILITIES_FILTER", + "DEVICE_ANNOTATION_FILTER", + "DEVICE_CONNECTIVITY_FILTER", + "LOCAL_DEVICE_INCLUSIVENESS_FILTER", + "LOCATION_FILTER", + "MEDIA_PLAYBACK_FILTER", + "SAFETY_FILTER", + "TRAITS_FILTER", + "DEVICE_TYPE_FILTER", + "APP_FILTER", + "HYBRID_DEVICE_PROPERTIES_FILTER", + "NEARBY_DEVICE_FILTER", + "DEFAULT_MEDIA_OUTPUT_PROMOTER", + "DEVICE_GROUP_PROMOTER", + "LOCAL_DEVICE_PROMOTER", + "LOCATION_PROMOTER", + "MEDIA_FOCUS_PROMOTER", + "MEDIA_PLAYBACK_PROMOTER", + "SAME_NAME_DEVICE_PROMOTER", + "PHONE_TARGETING_PROMOTER", + "TRAITS_PROMOTER" + ], + "enumDescriptions": [ + "", + "filters", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "promoters", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "isRemote": { + "type": "boolean" + }, + "isTethered": { + "description": "This flag indicates this is a non-local device that is tethered to local/originating device. Tethered device is a special case of is_remote and typically used in wearable scenarios. This is always false for local device and when it is true, it implies is_remote is also true.", + "type": "boolean" + }, + "mediaCapabilities": { + "$ref": "AssistantLogsMediaCapabilities" + }, + "mediaDeviceType": { + "enum": [ + "UNKNOWN_DEVICE_TYPE", + "ASSISTANT", + "HOME_AUTOMATION", + "CAST", + "CAST_GROUP", + "QUARTZ", + "QUARTZ_IOS", + "CLOUD_AUTO" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Quartz in AGSA", + "Quartz in iOPA", + "Non-assistant Auto devices from Cloud. go/cloud-registration-api-changes" + ], + "type": "string" + }, + "name": { + "description": "User defined device name", + "type": "string" + }, + "sessions": { + "description": "This field should be populated only when there is at least one session on this device.", + "items": { + "$ref": "AssistantLogsDeviceMediaSessionLog" + }, + "type": "array" + }, + "surfaceType": { + "description": "This field should be populated only when the device is an Assistant device.", + "enum": [ + "UNKNOWN", + "ANDROID_ALLO", + "ANDROID_AUTO", + "ANDROID_THINGS_CUBE", + "ANDROID_THINGS_JASPER", + "ANDROID_TV", + "ANDROID_TV_KIDS", + "ANDROID_WEAR", + "AR_GLASSES", + "ASSISTANT_SDK", + "AUDIOWEAR", + "BUBBLE_CHARACTERS_IOS", + "CAPABILITY_BASED_SURFACE", + "CHROMECAST_ASSISTANT", + "CHROMECAST_MANHATTAN", + "CHROMECAST_SEARCH", + "CLOUD_DEVICE", + "COMPANION_SCREEN", + "DYNAMITE_WEB", + "ENSEMBLE", + "EYESFREE_AGSA", + "EYESFREE_GMM", + "GBOARD", + "GLASS", + "GOOGLE_HOME", + "HANGOUTS_CHATBOT", + "IOS_ALLO", + "IOS_GSA", + "IOS_WEAR", + "LIBASSISTANT", + "LINE_CHATBOT", + "MULTIMODAL_AGSA", + "NON_ASSISTANT_SURFACE", + "OPA_AGSA", + "OPA_AGSA_CHROME_OS", + "OPA_ANDROID_AUTO", + "OPA_ANDROID_LITE", + "OPA_ANDROID_SCREENLESS", + "OPA_ANDROID_SMART_DISPLAY", + "OPA_ANDROID_TABLET", + "OPA_CROS", + "OPA_GACS", + "OPA_IOS", + "OPA_IOS_SCREENLESS", + "OPA_KAIOS", + "OPA_MOBILE_WEB", + "RTOS_PHONE", + "SMS_CHATBOT", + "TELEGRAM_CHATBOT", + "TELEPHONE_ASSISTANT", + "VERILY_ONDUO", + "YOUTUBE_APP", + "AGSA_BISTO_FOR_EVAL", + "COGSWORTH_FOR_EVAL", + "LOCKHART_MIC_FOR_EVAL", + "OPA_ANDROID_AUTO_EMBEDDED_FAKE", + "SPARK", + "WALLE", + "UNIT_TESTING" + ], + "enumDescriptions": [ + "", + "", + "Deprecated (never used). Use OPA_ANDROID_AUTO instead.", + "Assistant on small screen stationary device.", + "", + "", + "", + "", + "Assistant on AR Glasses with both visual and audio experiences. Ask ar-assistant@ for details.", + "For Assistant SDK gRPC client.", + "", + "go/assistant-lamda-overview-characters", + "Surface for capability based testing.", + "For chrome cast assistant web app.", + "For chrome cast with assistant + screen (e.g., Google Nest Hub).", + "", + "Virtual device for event-based triggering, e.g. executing time", + "scheduled routines: go/routine-cloud-ex For Quartz.", + "", + "", + "Deprecated. Please use OPA_ANDROID_SCREENLESS.", + "", + "For Gboard app", + "", + "", + "", + "", + "", + "", + "For standalone libassistant devices.", + "LINE 3P messaging app", + "Deprecated.", + "Surfaces that do not speak to the Assistant, i.e. web HQ", + "Assistant on Android phones accessed through the Google App (velvet). This represents neither all of the assistant on android phones (ANDROID_ALLO, VERILY_ONDUO, etc.) nor all of the assistant built on top of AGSA (ANDROID_WEAR, OPA_ANDROID_SCREENLESS, OPA_AGSA_CHROME_OS, etc.).", + "Deprecated. Please use OPA_CROS.", + "", + "This is OPA on Android Go (not part of AGSA)", + "Assistant on Nexus with screen off/locked. Use go/bisto device to trigger.", + "Assistant on Titan hub mode (go/titan-hubmode-surface). This is OPA Android first party Smart Display devices. The UI experience is built on Opal (Gallium and Flutter) and native Android.", + "Assistant on Android tablet", + "Assistant on native Chrome OS (go/croissant).", + "For assistant on GACS devices (go/gacs-dd). Google Assistant Conversation Service (GACS) defines intents the device accepts. This surface serves the intents in the assistant response.", + "", + "Assistant on iOS with screen off/locked. Use go/bisto device to trigger.", + "Assistant on KaiOS. go/kaiosama", + "Assistant on Mobile Web. go/opa-spidey", + "Assistant on low-cost RTOS phones (go/conceRTOS).", + "", + "Telegram 3P messaging app", + "Assistant on a phone call (go/telephone).", + "", + "A Youtube app.", + "Eval-only surfaces. These surfaces are not real surfaces. They are only used in intermediate steps of eval query and request generation: 1. Eval samplers (OPA query sampler and Cannery sampler) checks logs and temporarily assigns these surface types to the logs, to put Bisto, Lockhart Mic, ... queries in the correct query pools. 2. Request builders uses these surface types to determine how TaskRequest for Bisto, Lockhart Mic, ... should be built, like whether some user user agent should be used, whether some entry source should be set. The surface types in the generated TaskRequest is still the production surface types, like OPA_ANDROID_SCREENLESS or OPA_AGSA. Temp surface for Bisto Android eval. Will be merged with OPA_ANDROID_SCREENLESS in the future.", + "", + "", + "OPA_ANDROID_AUTO has another sub-surface (embedded) that differs in the reported capabilities, client-ops, flags but uses the same surface_type string of OPA_ANDROID_AUTO. This fake surface would allow running turing2 tests and evals for this embedded surface. Deprecated as of Feb 2019. Please use \"OPA_ANDROID_AUTO_EMBEDDED\" client type for tests and eval. See go/client-onboarding for more details. https://cs.corp.google.com/piper///depot/google3/assistant/assistant_server/tools/util/consts.h?l=32\u0026rcl=247481455", + "Unlaunched new surface prototype, ask spark-eng@.", + "Wall-E is an Area120 Project building assistant powered robots. The surface is an extended joplin which have same capabilities as a google home adding custom robot features. Currently in active development. Please reach out walle-software@ or bingxin@ for questions. For details see go/walle-as-pipeline-1-pager.", + "Surface used for unit-testing purposes. Unit-tests might still require the existence of a \"valid\" SurfaceType to succeed (eg. initialization of the CapabilityBuilder, proto matching, etc.). With the move away from SurfaceType checks, a generic \"TESTING\" SurfaceType can be used for such tests without affecting the test behavior. Unlike the CAPABILITY_BASED_SURFACE, this proto does not have any capabilities or ResponseType tied to it. It should only be used for unit-tests and should not be exposed in the ASDebugger." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsDeviceMediaSessionLog": { + "description": "Log about the media session on a device.", + "id": "AssistantLogsDeviceMediaSessionLog", + "properties": { + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId" + }, + "mediaSessionType": { + "enum": [ + "UNKNOWN", + "SINGLE_DEVICE_SESSION", + "STATIC_GROUP_SESSION", + "DYNAMIC_GROUP_SESSION" + ], + "enumDescriptions": [ + "", + "", + "Media session is playing on a device group set by users.", + "Media session is playing on a temporary device group requested in query." + ], + "type": "string" + }, + "mediaType": { + "description": "The type of the media session. If provider does not report this field, we ## compute it by mapping provider type to media type. Here is the mapping: |ProviderType |MediaItemMetadata.Type| |-------------------------------------- |MUSIC |TRACK | |VIDEO |VIDEO | |LIVE_TV |TV_CHANNEL | |AUDIOBOOK |AUDIO_BOOK | |PODCAST |PODCAST_EPISODE | ## |LIVE_STREAMING|VIDEO | ", + "enum": [ + "UNKNOWN", + "TRACK", + "ALBUM", + "ARTIST", + "PLAYLIST", + "EPISODE", + "MOVIE", + "PHOTO", + "TV_SHOW_EPISODE", + "PODCAST_EPISODE", + "MUSIC_GENRE", + "AUDIO_BOOK", + "CHAPTER", + "RADIO_STATION", + "MUSIC_MIX", + "SPORTS_EVENT", + "TV_CHANNEL", + "VIDEO", + "YOUTUBE_CHANNEL", + "YOUTUBE_VIDEO_PLAYLIST", + "TV_SHOW", + "NEWS", + "NARRATED_WEB", + "AUDIO_STORY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Representing a TV show which contains multiple TV seasons.", + "", + "", + "Representing a short audio story. go/tmas-design" + ], + "type": "string" + }, + "playbackState": { + "description": "The playback states of the session.", + "enum": [ + "UNKNOWN_STATE", + "STOPPED", + "PAUSED", + "PLAYING", + "FAST_FORWARDING", + "REWINDING", + "BUFFERING", + "ERROR", + "CONNECTING", + "SKIPPING_TO_PREVIOUS", + "SKIPPING_TO_NEXT", + "SKIPPING_TO_QUEUE_ITEM" + ], + "enumDescriptions": [ + "", + "State indicating this item is currently stopped.", + "State indicating this item is currently paused.", + "State indicating this item is currently playing.", + "State indicating this item is currently fast forwarding.", + "State indicating this item is currently rewinding.", + "State indicating this item is currently buffering and will begin playing when enough data has buffered.", + "State indicating this item is currently in an error state. The error message should also be set when entering this state.", + "State indicating the class doing playback is currently connecting to a new destination. Depending on the implementation you may return to the previous state when the connection finishes or enter STATE_NONE. If the connection failed STATE_ERROR should be used.", + "State indicating the player is currently skipping to the previous item.", + "State indicating the player is currently skipping to the next item.", + "State indicating the player is currently skipping to a specific item in the queue." + ], + "type": "string" + }, + "providerMid": { + "description": "The KG mid of the media provider.", + "type": "string" + }, + "supportedTransportControl": { + "items": { + "enum": [ + "UNKNOWN_COMMAND", + "PLAY_FROM_SEARCH", + "PLAY_FROM_URI", + "SEND_CUSTOM_ACTION", + "SKIP_TO_NEXT", + "SKIP_TO_PREVIOUS", + "PLAY", + "PAUSE", + "STOP", + "SET_RATING", + "SEEK_TO", + "SHUFFLE", + "REWIND", + "FAST_FORWARD", + "SKIP_TO_QUEUE_ITEM", + "SET_REPEAT_MODE", + "SET_CAPTIONING_ENABLED" + ], + "enumDescriptions": [ + "", + "Requests that the app start playback for a specific search query.", + "Requests that the app start playback for a specific uri.", + "Send a custom string action to the provide (go/media-controller-gsa).", + "Skip to the next item in the play queue.", + "Skip to the previous item in the play queue.", + "Requests that the player start its playback at its current position.", + "Requests that the player pause its playback and stay at its current position.", + "Requests that the player stop its playback.", + "Rate the current content.", + "Move to a new location in the media stream.", + "Requests that the app shuffle the currently loaded content.", + "Rewind the current content.", + "Fast forward the current content.", + "Play an item with a specific id in the play queue.", + "Set repeat mode for current content.", + "Enable or disable the closed caption for the current content." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsDeviceSelectionLog": { + "description": "Contains information logged in target device selection. See go/improve-device-targeting-logging for details. Next Id: 22", + "id": "AssistantLogsDeviceSelectionLog", + "properties": { + "allDefaultDevices": { + "description": "Default settings of all nearby devices Deprecated, use default_devices_log instead.", + "items": { + "$ref": "AssistantLogsDefaultDeviceLog" + }, + "type": "array" + }, + "allMediaStreamLog": { + "$ref": "AssistantLogsAllMediaStreamLog", + "description": "Logs all active media sessions." + }, + "counterfactualDeviceSelectionLog": { + "$ref": "AssistantLogsDeviceSelectionLog", + "description": "DeviceSelectionLog for counterfactual logging." + }, + "defaultDevices": { + "$ref": "AssistantLogsDefaultDeviceLog", + "description": "Include default tv and default speaker Deprecated, use all_default_devices below." + }, + "defaultDevicesLog": { + "$ref": "AssistantLogsDefaultDevicesLog" + }, + "devicesStr": { + "description": "Temporaray field for debugging ANDROID_AUTO multi_target_devices punt. This will be removed once we identify the root cause.", + "items": { + "type": "string" + }, + "type": "array" + }, + "inputErrorLog": { + "items": { + "$ref": "AssistantLogsInputErrorLog" + }, + "type": "array" + }, + "localDevice": { + "$ref": "AssistantLogsDeviceInfoLog", + "description": "Now we just log the media sessions on local device Deprecated, use NearbyDevicesLog::LocalDevice instead." + }, + "logDataSource": { + "description": "Indicates which library populated the device_selection_log for this query.", + "enum": [ + "UNKNOWN", + "MEDIA_FOCUS_SELECTOR", + "LUMOS_DEVICE_TARGETING_LIBRARY" + ], + "enumDescriptions": [ + "", + "Indicates the logs is populated by Media Focus Selector.", + "Indicates the logs is populated by Lumos Device Targeting Library." + ], + "type": "string" + }, + "mediaFocus": { + "$ref": "AssistantLogsMediaFocusInfoLog", + "description": "The Media Focus information. This field should be populated only when there is a Media Focus. Deprecated, use media_focuses below instead." + }, + "mediaFocusesLog": { + "$ref": "AssistantLogsMediaFocusesLog", + "description": "Media focuses on all devices." + }, + "nearbyDevicesLog": { + "$ref": "AssistantLogsNearbyDevicesLog", + "description": "All nearby devices and local device." + }, + "queryAnnotation": { + "$ref": "AssistantLogsQueryAnnotationLog", + "description": "This should log the query annotation features found in the device, such as the device annotation, the room annotation, and the structure annotation from the query." + }, + "selectionResult": { + "$ref": "AssistantLogsDeviceSelectionResultLog", + "description": "The result of device selection." + }, + "testCodes": { + "items": { + "$ref": "AssistantLogsDeviceTargetingTestCode" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsDeviceSelectionResultLog": { + "description": "Log the selection result. Next ID: 11", + "id": "AssistantLogsDeviceSelectionResultLog", + "properties": { + "ambiguousTargetDevices": { + "$ref": "AssistantLogsAmbiguousTargetDeviceLog", + "description": "Deprecated, please use qualified_devices." + }, + "deviceSelectionDecisionSummary": { + "$ref": "AssistantLogsMediaDeviceSelectionDecisionSummary" + }, + "deviceTargetingErrorType": { + "enum": [ + "UNKNOWN_ERROR", + "NO_DEVICE_IN_SAME_STRUCTURE", + "NO_DEVICE_IN_SAME_NETWORK_OR_LOCATION", + "NO_DEVICE_IN_SAME_STRUCTURE_OR_NETWORK_OR_LOCATION", + "NO_DEVICE_SATISFIES_SAME_STRUCTURE_OR_UNKNOWN_IF_OWNED", + "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT", + "NO_DEVICE_MATCHED_DEVICE_ANNOTATION", + "MULTI_TARGET_DEVICE_NOT_SUPPORTED", + "NO_DEVICE_AFTER_LOCAL_DEVICE_EXCLUDED", + "UNABLE_TO_TARGET_ONLY_LOCAL_DEVICE", + "NO_DEVICE_MATCHED_REQUIRED_TRAITS", + "NO_DEVICE_MATCHED_REQUIRED_DEVICE_TYPE", + "NO_DEVICE_IN_SAME_OR_MENTIONED_STRUCTURE", + "NO_DEVICE_SATISFIES_PLAYBACK_REQUIREMENT", + "STRUCT_DISAMBIG_NOT_SUPPORTED", + "ROOM_DISAMBIG_NOT_SUPPORTED", + "UNRECOGNIZED_DEVICE_NAME", + "NO_LINKED_REMOTE_DEVICES", + "NO_LINKED_REMOTE_VIDEO_DEVICES", + "NO_SAFE_DEVICE_WITH_SCREEN", + "ALL_QUALIFIED_DEVICES_OFFLINE", + "CROSS_STRUCTURE_TARGETING_DISALLOWED", + "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT", + "MISSING_LOCAL_DEVICE_SETTING", + "NO_DEVICE_HAS_REQUIRED_APP", + "HYBRID_DEVICE_NOT_QUALIFIED", + "NO_NEARBY_DEVICES" + ], + "enumDescriptions": [ + "", + "Error about when there's no qualified devices in the same home graph structure as the local device.", + "Error about when there's no qualified devices in the same network or location as the local device.", + "Error about when there's no qualified devices in the same home graph structure or network or location as the local device.", + "Error about when no qualified device was found that matched the following conditions: 1) Both local device and target device are in the same home graph structure. 2) The distance to target device is unknown (i.e. either local device or target device is homeless) and target device is owned by the user. 3) If local device and target device are in different structures, only allowed when the query explicitly mentioned device name.", + "Error about when no qualified device satisfies the device capability requirement.", + "Error of no qualified devices matched requirements from device annotation.", + "Error of not supporting targeting multiple devices.", + "Error of no device left after local device is excluded within inclusiveness filter.", + "Error of unable to target only local device within inclusiveness filter.", + "Error of no qualified devices matched the required smart home traits.", + "Error of no qualified devices matched the required smart home device types.", + "Error of no qualified devices in the mentioned structure or in the same structure as the local device.", + "Error of no device satisfying playback requirements.", + "Error when structure disambiguation is not supported in the config. When config is supported (both structure_disambiguation_supported and multi_target_supported are set to true), the library would return structures for disambiguation.", + "Error when room disambiguation is not supported in the config. When config is supported (both room_disambiguation_supported and multi_target_supported are set to true), the library would return rooms for disambiguation.", + "Error when the device mentioned in the query is not recognized. In other words, we can't find a device which matched the device mentioned in the query.", + "Used when user requests to target on a remote device and there are no remote devices linked.", + "Used when user requests to target on a remote video device and there are no remote video devices linked.", + "Error when there is no safe screen device. For example, requesting screen-requiring content from Auto surface.", + "Error when all qualified devices are offline.", + "When user tries to target a device which is in a different structure and is not allowed. For example, if user doesn't own the structure. See go/on-multi-user-access-transitivity for more details.", + "Used when user requests a device with certain provider but no device can satisfies provider requirement.", + "AvailableDevice device setting of local device is missing.", + "Required app is not installed", + "All remote hybrid devices fail the propertries requirement specific (lock/unlock, etc) for hybrid devices (such as Tangor).", + "No nearby hearing devices" + ], + "type": "string" + }, + "finalLumosStage": { + "description": "The class name for the final filter/promoter used by Lumos for device targeting. This filter or promoter runs for all users, and contains no data specific to the individual user.", + "type": "string" + }, + "lowConfidenceTargetDevice": { + "$ref": "AssistantLogsLowConfidenceTargetDeviceLog", + "description": "////////////////////////////////////////////////////////////////////////// Ambiguous Results: the library failed to select the final target device(s) but it narrows down to a set of devices which are all valid target device candidates. The client needs to do further disambiguation, e.g., giving a dialog or having costomized logic. The low confidence target device means the library falied to select the target device but it picked two devices for the client to do disambiguation." + }, + "mediaFocusSelectionErrorType": { + "description": "////////////////////////////////////////////////////////////////////////// This field log the error while selecting target device in media_focus_selector.", + "enum": [ + "UNKNOWN_ERROR", + "FOUND_MULTIPLE_DEVICES", + "REQUESTED_DEVICE_HAS_NO_SCREEN", + "NO_LINKED_REMOTE_DEVICES", + "NO_LINKED_REMOTE_VIDEO_DEVICES", + "UNRECOGNIZED_DEVICE_NAME", + "UNRECOGNIZED_VIDEO_DEVICE_NAME", + "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT", + "MULTIPLE_DEVICES_MEET_PROVIDER_REQUIREMENT", + "REMOTE_CLOUD_CASTING_NOT_ALLOWED", + "NO_SAFE_DEVICE_WITH_SCREEN", + "NO_DEVICE_MEETS_PLAYBACK_REQUIREMENT", + "MULTIPLE_DEVICES_MEET_PLAYBACK_REQUIREMENT", + "NO_VALID_DEVICE_IN_REQUESTED_ROOM", + "NO_DEVICE_FOUND_IN_REQUESTED_ROOM", + "MULTIPLE_DEVICES_FOUND_IN_REQUESTED_ROOM", + "ALL_QUALIFIED_DEVICES_IN_DIFFERENT_STRUCTURE", + "QUALIFIED_DEVICE_OFFLINE", + "ALL_QUALIFIED_DEVICES_OFFLINE", + "CROSS_STRUCTURE_TARGETING_DISALLOWED", + "NO_DEVICE_MEETS_STADIA_GAMING_CAPABILITY", + "MEDIA_STATES_MISSING", + "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT" + ], + "enumDescriptions": [ + "Used when the type of error is not known explicitly.", + "Used when there are multiple devices satisfying the constraints.", + "Used when the user requested to play a content on device without screen and focus selection has the (unsatisfied) REQUIRES_SCREEN restriction. Note that this is error is used if device is recognized, and otherwise UNRECOGNIZED_DEVICE or UNRECOGNIZED_VIDEO_DEVICE will be used.", + "Used when user requests to play on a remote device and there are no linked devices.", + "Used when user requests to play on a remote video device and there are no linked video devices.", + "Used when requested device with the given name in the annotation can not be recognized, that is user requested to play on a device that is not found in linked devices. If device is unrecognized and focus selection has the (unsatisfied) REQUIRES_SCREEN or type of unrecognized device is video then more specific UNRECOGNIZED_VIDEO_DEVICE_NAME is used.", + "Used when requested device with the given name in the annotation can not be recognized and focus selection has the (unsatisfied) REQUIRES_SCREEN or type of unrecognized device is video.", + "Used when user requests a device with certain provider but no device can satisfies provider requirement.", + "Used when user requests a device with certain provider but more than one device can satisfies the provider requirement.", + "Used when requested device does not allow remote cloud casting.", + "Used when there is no safe screen device. For ex: requesting screen-requiring content from Auto surface.", + "Used when user requests a device with certain playback but no device can satisfies playback requirement.", + "Used when user requests a device with certain playback but more than one device can satisfies playback requirement.", + "Used when user requests a device to be in a particular room but none of the devices in that room satisfies all requirements.", + "Used when user requests a room but no device is found in that room.", + "Used when user requests a room and there are multiple devices in that room are eligible to selected.", + "Used when all qualified devices are not in the same structure as the primary device.", + "", + "When all qualified devices are offline.", + "When user tries to target a device which is in a different structure and is not allowed. For example, if user doesn't own the structure. See go/on-multi-user-access-transitivity for more details.", + "When all devices do not qualify for stadia support.", + "Used when any critical media state is missing so the selection decision cannot be made. See go/partial-states-in-targeting-library for more details.", + "Error about when no qualified device satisfies the device capability requirement." + ], + "type": "string" + }, + "processorInfo": { + "description": "The log for each stage of Lumos, showing the number of eliminated devices from each processor.", + "items": { + "$ref": "AssistantLogsLumosProcessorInfo" + }, + "type": "array" + }, + "qualifiedDevices": { + "$ref": "AssistantLogsAmbiguousTargetDeviceLog", + "description": "We will apply several filters and dialogs to select a target device if media_focus_selector fail to select one. This field should log the devices left after each filter or dialog. It also log the detailed info of the final target device." + }, + "singleTargetDevice": { + "$ref": "AssistantLogsDeviceInfoLog", + "description": "////////////////////////////////////////////////////////////////////////// Unambiguous Results: the library successfully selected the final target device(s) and no further disambiguation is needed. Deprecated, please use target_device." + }, + "targetDevice": { + "$ref": "AssistantLogsTargetDeviceLog" + } + }, + "type": "object" + }, + "AssistantLogsDeviceTargetingTestCode": { + "description": "Test code is used to track special events happening in Device Targeting Library. Next Id: 2", + "id": "AssistantLogsDeviceTargetingTestCode", + "properties": { + "type": { + "enum": [ + "UNKNOWN", + "IGNORE_NESTED_DEVICE_MENTION_WITH_ID", + "INCOMPLETE_LOCAL_AUTO_SETTINGS_FOUND", + "FINAL_RESULT_RESOLVED_BY_NEARBY_DEVICE" + ], + "enumDescriptions": [ + "", + "Used to track the case when the nested DeviceMention with id is ignored inside a RoomMention. See: b/184750168 and go/mixed-room-and-device-mention", + "Used to track if there is incomplete or bad local android auto settings passed to Lumos.", + "Used to track if the final result is resolved by using nearby device." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsInputErrorLog": { + "id": "AssistantLogsInputErrorLog", + "properties": { + "errorCode": { + "format": "int32", + "type": "integer" + }, + "errorType": { + "enum": [ + "ERROR_UNKNOWN", + "ERROR_DEVICE_PROPERTIES", + "ERROR_HOME_GRAPH", + "ERROR_CAPABILITIES_ACROSS_DEVICES" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsLowConfidenceTargetDeviceLog": { + "description": "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", + "id": "AssistantLogsLowConfidenceTargetDeviceLog", + "properties": { + "fallbackDeviceLog": { + "$ref": "AssistantLogsDeviceInfoLog", + "description": "The fallback device." + }, + "lowConfTargetDeviceLog": { + "$ref": "AssistantLogsDeviceInfoLog", + "description": "The selected low confidence focus device." + } + }, + "type": "object" + }, + "AssistantLogsLumosProcessorInfo": { + "id": "AssistantLogsLumosProcessorInfo", + "properties": { + "devicesAfterRun": { + "description": "Number of candidate devices after this stage is run.", + "format": "int32", + "type": "integer" + }, + "devicesBeforeRun": { + "description": "Number of candidate devices before this stage is run.", + "format": "int32", + "type": "integer" + }, + "processorName": { + "description": "Name of the processor for this stage.", + "enum": [ + "UNKNOWN_LUMOS_PROCESSOR", + "CAPABILITIES_FILTER", + "DEVICE_ANNOTATION_FILTER", + "DEVICE_CONNECTIVITY_FILTER", + "LOCAL_DEVICE_INCLUSIVENESS_FILTER", + "LOCATION_FILTER", + "MEDIA_PLAYBACK_FILTER", + "SAFETY_FILTER", + "TRAITS_FILTER", + "DEVICE_TYPE_FILTER", + "APP_FILTER", + "HYBRID_DEVICE_PROPERTIES_FILTER", + "NEARBY_DEVICE_FILTER", + "DEFAULT_MEDIA_OUTPUT_PROMOTER", + "DEVICE_GROUP_PROMOTER", + "LOCAL_DEVICE_PROMOTER", + "LOCATION_PROMOTER", + "MEDIA_FOCUS_PROMOTER", + "MEDIA_PLAYBACK_PROMOTER", + "SAME_NAME_DEVICE_PROMOTER", + "PHONE_TARGETING_PROMOTER", + "TRAITS_PROMOTER" + ], + "enumDescriptions": [ + "", + "filters", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "promoters", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsMediaCapabilities": { + "id": "AssistantLogsMediaCapabilities", + "properties": { + "canReceiveRemoteAction": { + "type": "boolean" + }, + "hasScreen": { + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantLogsMediaDeviceSelectionDecisionSummary": { + "description": "A summary of the reasons that we chose a certain target device.", + "id": "AssistantLogsMediaDeviceSelectionDecisionSummary", + "properties": { + "deviceSelectionPreferenceUsed": { + "enum": [ + "UNKNOWN_PRIORITY", + "SINGLE_QUALIFIED_SESSION_PREFERRED", + "FOCUS_SESSION_PREFERRED", + "FOCUS_DEVICE_SESSION_PREFERRED", + "LOCAL_DEVICE_SESSION_PREFERRED", + "PLAYING_DEVICE_STATE_PREFERRED", + "BUFFERING_DEVICE_STATE_PREFERRED", + "PAUSED_DEVICE_STATE_PREFERRED", + "STOPPED_DEVICE_STATE_PREFERRED" + ], + "enumDescriptions": [ + "", + "If there is only one media session, it is selected by default.", + "A media session with focus was preferred over other media sessions.", + "A media session on a device with focus was preferred over other media sessions.", + "A media session on a local device was chosen.", + "", + "A device in the BUFFERING state was preferred over other devices.", + "A device in the PAUSED state was preferred over other devices.", + "A device in the STOPPED state was preferred over other devices." + ], + "type": "string" + }, + "deviceSelectionReason": { + "enum": [ + "UNKNOWN_REASON", + "SYNDICATION_DEVICE_TARGETED", + "AUTO_DEVICE_TARGETED", + "QUERY_DEVICE_ANNOTATION_TARGETED", + "SINGLE_QUALIFIED_DEVICE_TARGETED", + "CAST_GROUP_TARGETED", + "MEDIA_SESSION_TARGETED", + "FOCUS_DEVICE_TARGETED", + "DEFAULT_DEVICE_TARGETED", + "LOCAL_DEVICE_TARGETED", + "DEVICE_IN_SAME_ROOM_TARGETED", + "AMBIGUOUS_DEVICES_TARGETED", + "LOCAL_GROUP_RETARGETED", + "FOCUS_OF_CLOSE_DEVICE_TARGETED", + "DEFAULT_OF_CLOSE_DEVICE_TARGETED", + "SINGLE_QUALIFIED_CLOSE_DEVICE_TARGETED", + "DEVICE_IN_CLOSE_ROOM_TARGETED", + "TETHERED_DEVICE_TARGETED" + ], + "enumDescriptions": [ + "", + "For syndication devices (3P TV), we sometimes prefer syndication devices over any other remote device, since the query comes from a linked remote.", + "Auto surfaces can never cast to remote devices for safety reasons, so we force the local auto device if auto is the surface.", + "A device explicitly mentioned in the query was targeted.", + "Only one device was qualified.", + "We target a cast group only if all the qualified devices are in the same media session. This happens before applying any of the below filters.", + "Media sessions are targeted when session targeting is enabled, supported, a session exists with more than one device, and a session outranks all other sessions. The rankings are the keys below.", + "A device with media focus was targeted.", + "A default device was targeted.", + "The local device was targeted.", + "A device in the same room was targeted.", + "An ambiguous device result including multiple devices was targeted.", + "When local device is playing as a group, we retarget to the group if local device doesn't have focus. See go/group-targeting for the details.", + "==== Sandstone related DeviceSelectionReason ==== Entries below refer to other devices that are close by. Details at: go/sandstone-lumos. The media focus device of an equally close device was targeted.", + "The default target of an equally close device was targeted.", + "Only one device out of the ones that are equally close was qualified.", + "A device in the same room as an equally close device was targeted.", + "Sometimes wearable device (e.g., smartwatch) is tethered to a phone. This value indicates the tethered phone was targeted in these scenarios. This is related but slightly different from other remote targeting cases due to the strong binding/association between local (i.e., watch) and tethered device (i.e., phone). go/rohan-media-tethered-design" + ], + "type": "string" + }, + "miscSelectionSignal": { + "items": { + "enum": [ + "NONE", + "BETTER_MATCH_DEVICE_WITH_HUMAN_FRIENDLY_NAME_FOUND", + "LOCAL_DEVICE_IMPLICITLY_MENTIONED", + "USED_LOOSE_PLAYBACK_STATE_REQUIREMENTS", + "QUERY_3P_DEVICE_ANNOTATION_IGNORED_REQUIREMENTS" + ], + "enumDescriptions": [ + "", + "A better match device was found and targeted.", + "A local device was implicitly mentioned in the query, like \"on you\".", + "There were no devices which satisfy the playback states requirements, so the playback states requirements were removed and we tried again.", + "A 3P device annotated from the query was targeted. We ignore requirements sometimes for 3p devices." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsMediaFocusInfoLog": { + "description": "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", + "id": "AssistantLogsMediaFocusInfoLog", + "properties": { + "currentFocusDurationSec": { + "description": "How long the device is in focus so far", + "format": "uint32", + "type": "integer" + }, + "dialogTriggered": { + "description": "TODO(b/134944092) Log MediaFocusDialogTrigger Enum in focus_status.", + "type": "boolean" + }, + "focusDevice": { + "$ref": "AssistantLogsDeviceInfoLog", + "description": "LINT.ThenChange(//depot/google3/logs/proto/majel_gws/media_action_triggering_info.proto) The focus device." + }, + "mediaFocusState": { + "description": "The media focus state at the time of the request.", + "enum": [ + "NO_FOCUS", + "RECENT_FOCUS", + "STALE_FOCUS", + "HARD_FOCUS", + "SOFT_FOCUS" + ], + "enumDescriptions": [ + "There is no focus device available or the focus expired.", + "Media Focus V1. The focus is valid and it is within the media_focus_dialog_threshold.", + "The focus is valid however it is over the media_focus_dialog_threshold and might require confirmation from user (dialog) before proceeding to use focus device.", + "Media Focus V2 The focus is valid and there is a playing session on focus device.", + "The focus is valid however there is no playing session on focus device and might require confirmation from user (dialog) before proceeding to use focus device." + ], + "type": "string" + }, + "sourceDeviceId": { + "description": "The source device of media focus.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsMediaFocusesLog": { + "description": "Following are the MDA compatible loggings for media focus, default settings and nearby devices.", + "id": "AssistantLogsMediaFocusesLog", + "properties": { + "dialogTriggered": { + "type": "boolean" + }, + "localMediaFocus": { + "$ref": "AssistantLogsMediaFocusInfoLog" + }, + "mediaFocuses": { + "description": "Deprecated, use nearby_media_focuses instead.", + "items": { + "$ref": "AssistantLogsMediaFocusInfoLog" + }, + "type": "array" + }, + "nearbyMediaFocuses": { + "description": "MediaFouces found on nearby devices.", + "items": { + "$ref": "AssistantLogsMediaFocusInfoLog" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsMediaStreamLog": { + "description": "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.", + "id": "AssistantLogsMediaStreamLog", + "properties": { + "deviceIndex": { + "description": "The device index in this message is consistent with the device index in DeviceInfoLog. This field refers to the devices that hosting the session.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "session": { + "$ref": "AssistantLogsDeviceMediaSessionLog" + } + }, + "type": "object" + }, + "AssistantLogsNearbyDevicesLog": { + "id": "AssistantLogsNearbyDevicesLog", + "properties": { + "deviceArbitrationCreationTimestampMs": { + "description": "The timestamp that DeviceArbitration is created in milliseconds.", + "format": "int64", + "type": "string" + }, + "eliminatedByFurtherDistance": { + "format": "int32", + "type": "integer" + }, + "eliminatedByLocalClosest": { + "format": "int32", + "type": "integer" + }, + "eliminatedByUnknownDifferentRoom": { + "format": "int32", + "type": "integer" + }, + "eliminatedByUnregisteredDevice": { + "format": "int32", + "type": "integer" + }, + "localDevice": { + "$ref": "AssistantLogsDeviceInfoLog" + }, + "nearbyDevices": { + "items": { + "$ref": "AssistantLogsDeviceInfoLog" + }, + "type": "array" + }, + "numClosestDevices": { + "format": "int32", + "type": "integer" + }, + "numEquallyCloseDevices": { + "format": "int32", + "type": "integer" + }, + "numFurtherDevices": { + "format": "int32", + "type": "integer" + }, + "numHearingDevices": { + "format": "int32", + "type": "integer" + }, + "numUnknownDistanceDevices": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantLogsQueryAnnotationLog": { + "description": "Log about the query requirements", + "id": "AssistantLogsQueryAnnotationLog", + "properties": { + "deviceAnnotation": { + "$ref": "AssistantLogsDeviceAnnotationLog", + "description": "Deprecated, please use room_annotations." + }, + "deviceAnnotations": { + "description": "Log the device annotations mentioned in the query.", + "items": { + "$ref": "AssistantLogsDeviceAnnotationLog" + }, + "type": "array" + }, + "roomAnnotation": { + "$ref": "AssistantLogsRoomAnnotationLog", + "description": "TODO(b/171250187) Deprecates the optional RoomAnnotationLog and DeviceAnnotationLog. Deprecated, please use device_annotations." + }, + "roomAnnotations": { + "description": "Log the room annotations mentioned in the query.", + "items": { + "$ref": "AssistantLogsRoomAnnotationLog" + }, + "type": "array" + }, + "structureAnnotations": { + "description": "Log the structure annotations mentioned in the query.", + "items": { + "$ref": "AssistantLogsStructureAnnotationLog" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantLogsReminderLog": { + "description": "Annotate a single reminder instance.", + "id": "AssistantLogsReminderLog", + "properties": { + "createdSecondsAgo": { + "description": "The reminder is created N seconds ago. This helps tracking how the user issues follow-up actions after reminder is created. For example, whether the user likes to issues another [show reminders] query right after reminder is created?", + "format": "int64", + "type": "string" + }, + "retrievedRankingClass": { + "description": "If the reminder is retrieved by a ranking class (see go/opa-reminders-ranker), this will be populated with the class info. Refer to assistant.productivity.ReminderRankingClass.RankingType. Since that proto is in proto2 format, we can only wire by int type.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantLogsRoomAnnotationLog": { + "description": "Room annotation mentioned in query.", + "id": "AssistantLogsRoomAnnotationLog", + "properties": { + "rawTextFromQuery": { + "description": "The raw text mentioning a room from the query, such as \"my living room\".", + "type": "string" + }, + "roomCount": { + "description": "The number of rooms annotated, if there are multiple structures. They are guaranteed to have the same text_from_query and name due to exact matching.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "The annotation type mentioned in the query.", + "enum": [ + "NO_ROOM_ANNOTATION", + "ROOM_ID_ANNOTATION", + "ROOM_TYPE_ANNOTATION", + "ROOM_TEXT_ANNOTATION" + ], + "enumDescriptions": [ + "No room is mentioned in the query.", + "Annotation specifying a room set up by users.", + "Annotation specifying a general room type, such as bedroom.", + "Annotation with text. It could be random text, such as \"my room\", \"all rooms\"." + ], + "type": "string" + }, + "userDefinedName": { + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsStructureAnnotationLog": { + "description": "Structure annotation mentioned in query.", + "id": "AssistantLogsStructureAnnotationLog", + "properties": { + "rawTextFromQuery": { + "description": "The raw text mentioning a structure from the query, such as \"my house\".", + "type": "string" + }, + "type": { + "description": "The annotation type mentioned in the query.", + "enum": [ + "NO_STRUCTURE_ANNOTATION", + "STRUCTURE_ID_ANNOTATION", + "STRUCTURE_TEXT_ANNOTATION" + ], + "enumDescriptions": [ + "No structure is mentioned in the query.", + "Annotation specifying a structure set up by users.", + "Annotation with text. It could be random text, such as \"this house\"." + ], + "type": "string" + }, + "userDefinedName": { + "type": "string" + } + }, + "type": "object" + }, + "AssistantLogsTargetDeviceLog": { + "description": "Represents the case where the library successfully selects the target device. It could be one or multiple devices. Next ID: 3", + "id": "AssistantLogsTargetDeviceLog", + "properties": { + "devices": { + "items": { + "$ref": "AssistantLogsDeviceInfoLog" + }, + "type": "array" + }, + "resultConfidenceLevel": { + "enum": [ + "UNKNOWN", + "LOW_CONFIDENCE", + "HIGH_CONFIDENCE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantPrefulfillmentRankerPrefulfillmentSignals": { + "description": "Signals to be used by the Prefulfillment Ranker. Derived from the ParsingSignals and GroundingSignals carried by the FunctionCall. LINT.IfChange Next ID: 25", + "id": "AssistantPrefulfillmentRankerPrefulfillmentSignals", + "properties": { + "calibratedParsingScore": { + "description": "A parsing score that is independently calibrated by each parser/IG.", + "format": "double", + "type": "number" + }, + "calibratedParsingScoreFloat": { + "description": "Same semantics as 'calibrated_parsing_score' but in float form. Some RL models (such as decision tree) doesn't consume double input well.", + "format": "float", + "type": "number" + }, + "dominant": { + "description": "Indicates interpretation dominance predicted by KScorer", + "type": "boolean" + }, + "effectiveArgSpanLength": { + "description": "The total effective length of the spans for the arguments used to construct the parse. May include vertical specific adjustments. Eg: For the query [delete my 7 p.m. alarm called chicken] and intent Delete_alarm(alarm_object=RD(category=AlarmObject( label=\"chicken\", trigger_time_datetime=\u003c\u003c 7 PM \u003e\u003e))), the effective argument span is \"7 p.m.\" + \"chicken\" (total length of 13).", + "format": "float", + "type": "number" + }, + "groundabilityScore": { + "description": "Grounding Signals. Score indicating how grounded the intent is, populated by the Grounding Box.", + "format": "double", + "type": "number" + }, + "inQueryMaxEffectiveArgSpanLength": { + "description": "This is a cross-intent feature which is calculated by iterating all intent candidates. This feature should be populated in post-IG stage (before GB).", + "format": "float", + "type": "number" + }, + "intentName": { + "description": "intent_name is used by PFR ensemble model. See go/pfr_ha_launch_doc", + "type": "string" + }, + "intentNameAuisScore": { + "description": "QUS intent-based ranking signals. Assistant User Interaction Score which is aggregated using intent name.", + "format": "double", + "type": "number" + }, + "intentNameAuisScoreExp": { + "description": "Assistant User Interaction Score which is aggregated using intent name from exp laelaps.", + "format": "double", + "type": "number" + }, + "maskCandidateLevelFeatures": { + "description": "This feature is always false / no-op in serving time. In training time, this feature may be set true on specific examples for weighted training where when this signal is true, only cross-intent level features are used for training and other candidate level features are masked (set as missing).", + "type": "boolean" + }, + "numConstraints": { + "description": "Sum of the number of constraints used by the Grounding Box to ground each variable.", + "format": "double", + "type": "number" + }, + "numConstraintsFloat": { + "description": "Same semantics as 'num_constraints' but in float form. Some RL models (such as decision tree) doesn't consume double input well.", + "format": "float", + "type": "number" + }, + "numConstraintsSatisfied": { + "description": "Sum of the number of constraints satisfied for each variable. Depending on the match score for a constraint, this number can be fractional and is in the range [0, num_constraints]. Populated by the Grounding Box.", + "format": "double", + "type": "number" + }, + "numConstraintsSatisfiedFloat": { + "description": "Same semantics as 'num_constraints_satisfied' but in float form. Some RL models (such as decision tree) doesn't consume double input well.", + "format": "float", + "type": "number" + }, + "numGroundableArgs": { + "description": "Number of groundable arguments the intent has, populated by the Grounding Box.", + "format": "double", + "type": "number" + }, + "numGroundableArgsFloat": { + "description": "Same semantics as 'num_groundable_args' but in float form. Some RL models (such as decision tree) doesn't consume double input well.", + "format": "float", + "type": "number" + }, + "numGroundedArgs": { + "description": "Number of grounded arguments the intent has, populated by the Grounding Box.", + "format": "double", + "type": "number" + }, + "numGroundedArgsFloat": { + "description": "Same semantics as 'num_grounded_args' but in float form. Some RL models (such as decision tree) doesn't consume double input well.", + "format": "float", + "type": "number" + }, + "numVariables": { + "description": "Signals as proposed in go/improved-grounding-signals. Number of arguments, possibly nested, that the Grounding Box tried to ground.", + "format": "double", + "type": "number" + }, + "numVariablesFloat": { + "description": "Same semantics as 'num_variables' but in float form. Some RL models (such as decision tree) doesn't consume double input well.", + "format": "float", + "type": "number" + }, + "numVariablesGrounded": { + "description": "Number of arguments, possibly nested, that the Grounding Box was able to ground. This includes ambiguously grounded arguments.", + "format": "double", + "type": "number" + }, + "numVariablesGroundedFloat": { + "description": "Same semantics as 'num_variables_grounded' but in float form. Some RL models (such as decision tree) doesn't consume double input well.", + "format": "float", + "type": "number" + }, + "pq2tVsAssistantIbstCosine": { + "description": "Cosine similarity between predicted query-to-term model and assistant intent-type-based salient terms. This is intended to be only used for ACE ranking and only populated for assistant traffic.", + "format": "double", + "type": "number" + }, + "pq2tVsIbstCosine": { + "description": "Cosine similarity between predicted query-to-term model and intent-type-based salient terms. This is intended to be used as a backoff to pq2t_vs_qibst_cosine if it is missing.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "AssistantProductivityListItem": { + "description": "A message to represent an item in a list. Just a basic string for now, but extensible for the future.", + "id": "AssistantProductivityListItem", + "properties": { + "name": { + "description": "[REQUIRED] The name of the list item.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantRemindersAttachment": { + "description": "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.", + "id": "AssistantRemindersAttachment", + "properties": { + "id": { + "description": "REQUIRED. An unique identifier for the attachment. We have a plan to index this field, so it's marked as REQUIRED. Chat with opa-reminders-eng@ if you have a use case without an attachment ID.", + "type": "string" + }, + "link": { + "$ref": "AssistantRemindersAttachmentLink" + }, + "surfaceType": { + "description": "REQUIRED. Surface types this attachment should be shown.", + "items": { + "enum": [ + "UNSPECIFIED", + "ANDROID_PHONE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantRemindersAttachmentLink": { + "id": "AssistantRemindersAttachmentLink", + "properties": { + "linkUrl": { + "description": "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.)", + "type": "string" + }, + "notificationText": { + "$ref": "AssistantRemindersNlgTemplateKey", + "description": "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." + } + }, + "type": "object" + }, + "AssistantRemindersMemoryPayload": { + "description": "Since this is stored in BE, any update on this proto needs LGTM by ARIS storage owner", + "id": "AssistantRemindersMemoryPayload", + "properties": { + "hasReferencedEntityAtCreation": { + "description": "Whether the reminder created has a referenced_entity attached to it or not(go/hub-memory-payload). Since we plan to set this in Assistant reminder creation path flow, in case later the referenced_entity is removed from the reminder, then this bit might still remain true. Also in case referenced_entity is later added to reminder(for example when referenced_entity is attached by Server), then also this bit might remain false. This bit will be used to *guess* if the user has a memory-enabled AGSA, thus we'll surface the \"open memory\" button on hubpage. This check is not perfect, as the user might have other phones with older AGSA, so this is just a *best guess*. This field won't be stored in Memory backend, and will not be populated back when retrieving reminders.", + "type": "boolean" + }, + "recordId": { + "description": "Id of record that is associated with Reminder. This will be set for all Assistant reminders created after the first launch of the Reminder Memory integration, see go/reminders-memory for more details. Also, this might apply to all other types of reminders.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantRemindersNlgTemplateKey": { + "description": "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.).", + "id": "AssistantRemindersNlgTemplateKey", + "properties": { + "messageSet": { + "description": "REQUIRED.", + "type": "string" + }, + "templateName": { + "description": "REQUIRED.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantTeleportTeleportNicknameSignals": { + "id": "AssistantTeleportTeleportNicknameSignals", + "properties": { + "hasLocationInterpretation": { + "description": "Whether the nickname could also refer to a location. For example, \"walmart\", \"starbucks\".", + "type": "boolean" + }, + "installInfo": { + "description": "Indicates whether the user has the app installed.", + "enum": [ + "INSTALLATION_INFORMATION_UNAVAILABLE", + "IS_INSTALLED_APP", + "IS_NOT_INSTALLED_APP" + ], + "enumDescriptions": [ + "The annotator was not aware of installed apps, or the resource is not an app.", + "The resource is an app, and the annotator had the information that it is installed.", + "The resource is an app, and the annotator had the information that it is not installed." + ], + "type": "string" + }, + "isGeneric": { + "description": "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).", + "type": "boolean" + }, + "nicknameTier": { + "description": "The tier of the nickname.", + "enum": [ + "UNKNOWN", + "UNRESTRICTED", + "INTENT_REQUIRED", + "APP_PHRASE_REQUIRED" + ], + "enumDescriptions": [ + "Default value for unknown tier.", + "Nicknames that always refer to the respective application or url. For example, \"facebook\" always refers to the Facebook app / homepage.", + "Nicknames that refer to the app/url when the intent is to execute an action on the app/url. For example, \"most wanted\" refers to the \"Need for Speed Most Wanted\" app, only if the user asks, for example, to open the app - \"open most wanted\".", + "Nicknames that refer to the app/url when the app/url restriction is explicit. For example, \"banking\" is a nickname for the \"Bank of America Mobile Banking\" app, only if user explicitly states they are referring to the app - \"banking app\", \"open banking application\"." + ], + "type": "string" + }, + "source": { + "enum": [ + "DEFAULT", + "GELLER", + "DEVICE_CAPABILITIES" + ], + "enumDescriptions": [ + "", + "", + "These annotations are generated on the fly (server-side), and are not matched by SE Muppet using the offline-generated corpus." + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantVerticalsCommonContactMatchSignal": { + "description": "Neural contact match signals.", + "id": "AssistantVerticalsCommonContactMatchSignal", + "properties": { + "matchScore": { + "description": "Neural contact match similarity score.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoActionProjectConfig": { + "description": "Metadata for Actions-on-Google configuration.", + "id": "AssistantVerticalsHomeautomationProtoActionProjectConfig", + "properties": { + "contextId": { + "description": "Actions-on-Google action context ID. See go/sdm-hospitality-design.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoAgentDeviceId": { + "description": "An agent + device pair that uniquely identifies a device.", + "id": "AssistantVerticalsHomeautomationProtoAgentDeviceId", + "properties": { + "agentId": { + "description": "The agent's ID. Generally it is the agent's Google pantheon project id.", + "type": "string" + }, + "deviceId": { + "description": "Device ID defined by the agent.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoAgentInformation": { + "description": "AgentInformation represents the details needed to support both 1P and 3P partnerships for Home Automation. Next ID: 7", + "id": "AssistantVerticalsHomeautomationProtoAgentInformation", + "properties": { + "authType": { + "enum": [ + "OPEN_AUTH_DEFAULT", + "NEST_AUTH_PROXY" + ], + "enumDescriptions": [ + "Device uses 3p path with token authentication. This is the default value used when a different authentication type is not specified.", + "Device uses 1p Nest path (eg: Olive) with gaia credential authentication." + ], + "type": "string" + }, + "deviceSource": { + "enum": [ + "UNKNOWN", + "CLOUD_SYNC", + "ASSISTANT_SETTING_OOBE", + "LOCAL_SYNC", + "CHIP_SYNC" + ], + "enumDescriptions": [ + "", + "Device is created through HA2 SyncDevices flow, are HA2 cloud agent devices. ultravox is a cloud agent as well as surface device and it's using Sync flow.", + "Device created through Assistant Setting at OOBE time, they're things that are mastered within google internally.", + "Device is created through the local device platform to HGS sync flow. These devices are not necessarily mastered in a 3P cloud - they are locally detected by an assistant device and then synced to HGS directly. See go/aogh-dd.", + "Device created through local CHIP provision and sync up. Chip synced devices can be the same devices as the devices synced from cloud, and the sync and de-dup logic can be very complicated." + ], + "type": "string" + }, + "executionPath": { + "enum": [ + "HARPOON_DEFAULT", + "STUBBY" + ], + "enumDescriptions": [ + "Execute through Harpoon call. This is the default value used when the execution_path is not specified.", + "Execute through stubby RPC call." + ], + "type": "string" + }, + "id": { + "description": "Unique Agent ID which maps to a specific Agent. Not using Agent Name here as it may change over time.", + "type": "string" + }, + "key": { + "description": "Agent's foreign key that uniquely identifies a user's device.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoAttribute": { + "description": "Protos representing device or structure attributes. See go/hgs-attributes-protos. Only protos approved and formalized by assistant/HG team should be added here.", + "id": "AssistantVerticalsHomeautomationProtoAttribute", + "properties": { + "structureBasedRoutine": { + "$ref": "AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoAttributes": { + "description": "LINT.IfChange(proto_attributes)", + "id": "AssistantVerticalsHomeautomationProtoAttributes", + "properties": { + "attributeProtos": { + "items": { + "$ref": "AssistantVerticalsHomeautomationProtoAttribute" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoCommonEventTrigger": { + "description": "LINT.IfChange(proto_event_trigger) Next id: 5", + "id": "AssistantVerticalsHomeautomationProtoCommonEventTrigger", + "properties": { + "enabled": { + "type": "boolean" + }, + "eventTriggerPayload": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Detailed settings for the event trigger; unset if not applicable.", + "type": "object" + }, + "eventTriggerType": { + "description": "Different event type may have different settings. For example: * SCHEDULED will have event_trigger_payload of cs/symbol:assistant.verticals.voice_shortcut.proto.Schedule * LOCATION will have event_trigger_payload of cs/symbol:assistant.verticals.voice_shortcut.proto.LocationTriggerEvent", + "enum": [ + "UNKNOWN", + "SCHEDULED", + "LOCATION", + "DEVICE_CONTROL", + "DEVICE_SENSES" + ], + "enumDescriptions": [ + "", + "", + "", + "For Routine triggered by Home Intelligence Service (IQS) based on DEVICE_STATE_CHANGE. NOTE: This trigger is currently handled by IQS team go/iqs-hhr.", + "For Routine triggered by Home Intelligence Service (IQS) based on DEVICE_SENSOR_SIGNAL. NOTE: This trigger is currently handled by IQS team go/iqs-hhr." + ], + "type": "string" + }, + "triggerSource": { + "description": "Unique identifier for the EventTrigger, e.g. SCHEDULED_ROUTINES. See the enum values of cs/symbol:WorkflowTriggerInput.TriggerSource", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine": { + "description": "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.", + "id": "AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine", + "properties": { + "enabled": { + "description": "Whether this Routine is enabled or not. If false, then this Routine can't be triggered by Voice.", + "type": "boolean" + }, + "googlePreconfigWorkflowId": { + "description": "The unique identifier for a class of workflows. For example: * \"sbr_001\" =\u003e Away * \"sbr_002\" =\u003e Home * \"category_template\" =\u003e CUSTOM", + "type": "string" + }, + "language": { + "type": "string" + }, + "payload": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Internal format payload primarily for Routines team use.", + "type": "object" + }, + "securityLevel": { + "description": "The security level of the Structure Based Routine as determined by the most security-sensitive task.", + "enum": [ + "UNKNOWN", + "ALLOW_UNVERIFIED", + "ALLOW_VERIFIED" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "shared": { + "type": "boolean" + }, + "storagePayload": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "structureId": { + "type": "string" + }, + "triggers": { + "description": "Voice or event triggers.", + "items": { + "$ref": "AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger" + }, + "type": "array" + }, + "type": { + "enum": [ + "UNDEFINED", + "CURATED", + "ALARM", + "CUSTOM" + ], + "enumDescriptions": [ + "", + "", + "", + "SCHEDULED = 3 [deprecated = true];" + ], + "type": "string" + }, + "uiPayload": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "UI format payload primarily for external team use.", + "type": "object" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger": { + "description": "Next id: 3", + "id": "AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger", + "properties": { + "eventTrigger": { + "$ref": "AssistantVerticalsHomeautomationProtoCommonEventTrigger" + }, + "voiceTrigger": { + "$ref": "AssistantVerticalsHomeautomationProtoCommonVoiceTrigger" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoCommonVoiceTrigger": { + "description": "LINT.IfChange(proto_voice_trigger) Next id: 2", + "id": "AssistantVerticalsHomeautomationProtoCommonVoiceTrigger", + "properties": { + "query": { + "type": "string" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoConciergeFeatures": { + "description": "The Concierge features a structure is eligible for. See {@link home.graph.common.ConciergeFeatures}.", + "id": "AssistantVerticalsHomeautomationProtoConciergeFeatures", + "properties": { + "conciergeProductFeatures": { + "items": { + "enum": [ + "UNKNOWN_PRODUCT_FEATURE", + "E911" + ], + "enumDescriptions": [ + "LINT.IfChange", + "LINT.ThenChange(//depot/google3/home/graph/proto/common/enums.proto)" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo": { + "description": "Next ID: 5", + "id": "AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo", + "properties": { + "annotatedSpanDevice": { + "description": "The query span for device mention.", + "type": "string" + }, + "annotatedSpanRoom": { + "description": "The query span for room mention.", + "type": "string" + }, + "annotatedSpanStructure": { + "description": "The query span for structure mention.", + "type": "string" + }, + "processedMentionedSpan": { + "description": "This field is from query_info.processed_mentioned_span in DTO.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoHomeAutomationDevice": { + "description": "Next ID: 9", + "id": "AssistantVerticalsHomeautomationProtoHomeAutomationDevice", + "properties": { + "deviceSelectionLog": { + "$ref": "AssistantLogsDeviceSelectionLog", + "description": "the next 3 fields are for Lumos output (DTO) that needs to be propagated to the Fulfilment through the HomeAutomationDevice proto." + }, + "dtoError": { + "$ref": "AssistantDeviceTargetingDeviceTargetingError" + }, + "dtoQueryInfo": { + "$ref": "AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo", + "description": "This field is from query_info in DTO." + }, + "homeautomationMetadata": { + "$ref": "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaData", + "description": "Device meta data." + }, + "list": { + "description": "list of HomeAutomationDeviceItem. After migration completes, we will mark the above 4 field as deprecated and only use this field.", + "items": { + "$ref": "AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem" + }, + "type": "array" + }, + "matchedItemKey": { + "description": "Corresponding to casse matched_item CustomTypeItem key.", + "type": "string" + }, + "matchedItemRawvalue": { + "description": "Corresponding to casse Argument raw_value.", + "type": "string" + }, + "matchedItemValue": { + "description": "Corresponding to casse matched_item CustomTypeItem value.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem": { + "id": "AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem", + "properties": { + "homeautomationMetadata": { + "$ref": "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaData", + "description": "Device meta data." + }, + "matchedItemKey": { + "description": "Corresponding to casse matched_item CustomTypeItem key.", + "type": "string" + }, + "matchedItemRawvalue": { + "description": "Corresponding to casse Argument raw_value.", + "type": "string" + }, + "matchedItemValue": { + "description": "Corresponding to casse matched_item CustomTypeItem value.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaData": { + "description": "Next ID: 40", + "id": "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaData", + "properties": { + "actionProjectConfigs": { + "description": "Custom actions that this item supports.", + "items": { + "$ref": "AssistantVerticalsHomeautomationProtoActionProjectConfig" + }, + "type": "array" + }, + "agentInformation": { + "$ref": "AssistantVerticalsHomeautomationProtoAgentInformation", + "description": "Agent details." + }, + "assistantDeviceId": { + "description": "Device ID that matches the ID passed from the device to discourse_context when a user issues a query to an Assistant-enabled device that is registered with Cast (via CCS (see go/castservers)), or some other service.", + "type": "string" + }, + "attributes": { + "additionalProperties": { + "description": "Properties of the object.", + "type": "any" + }, + "description": "Attributes data as provided from SYNC. This gets used in mutation and execution and in some potential cases, in biasing.", + "type": "object" + }, + "creatorGaiaId": { + "description": "See Device.creator_gaia_ids in //home/graph/proto/service/types.proto. If empty, the GAIA ID from the request EUC is assumed to be the creator. We only need at most one creator_gaia_id.", + "format": "int64", + "type": "string" + }, + "derivedType": { + "description": "Any types that are not the given item type, but derived later. For example, if an item has type action.devices.types.OUTLET but is named \"floor lamp\" we can derive that it also has type action.devices.types.LIGHT. Also considered along with |type| when triggering type-based actions.", + "items": { + "type": "string" + }, + "type": "array" + }, + "deviceModelId": { + "description": "See note in home_graph.proto; loaded into DE now to avoid having to double-read assistant settings records as per go/smarthome-removing-assistant-settings", + "type": "string" + }, + "gcmExecutionAddress": { + "description": "GCM address for cloud execution across google cloud messaging rather than 3p cloud; for future use.", + "type": "string" + }, + "hashValue": { + "description": "The hash value from go/de-consistency-check", + "type": "string" + }, + "lanscanOptedIn": { + "description": "Whether local home platform should discover new devices via LAN for the structure.", + "type": "boolean" + }, + "modelName": { + "description": "Model name from HomeGraph, populated from model_manifest.model_name. See b/200087451.", + "type": "string" + }, + "notificationEnabledByUser": { + "description": "Indicates whether notifications have been enabled by a user and will be announced for this device. This is set by the user within the Google app settings, and Google will announce the device notification only if both notification_supported_by_agent and notification_enabled_by_user are true.", + "type": "boolean" + }, + "notificationSupportedByAgent": { + "description": "Indicates whether the device is capable of sending notifications. This field will be set by the agent (partner) on an incoming SYNC. If a device is not capable of generating notifications, the partner should set this flag to false. If a partner is not capable of calling ReportStateAndNotification to send notifications to Google, the partner should set this flag to false. If there is a user setting in the partner app to enable notifications and it is turned off, the partner should set this flag to false.", + "type": "boolean" + }, + "opaqueCustomData": { + "description": "Store custom data for agent calls here. This will likely be short-lived -- we will replace this with calls to HGS. (Note: This may end up not temporary if we only need it for a couple partners -- more efficient to have it on a few users than require HGS reads for all users.", + "type": "string" + }, + "operationalNodeId": { + "description": "Operational CHIP Node ID that combines the fabric ID and node id in format of . (Hex format without 0x prefix, for example, 0F001234FA67AA39.1234ABCD1111DDDD).", + "type": "string" + }, + "otherDeviceIds": { + "description": "Other agent id + foreign id pairs associated with the device. This can be used to represent a group of devices (e.g. Sonos' bonded zone) as a single device, or a device that comes in through different sync flows (e.g. Newman with a Nest camera).", + "items": { + "$ref": "AssistantVerticalsHomeautomationProtoAgentDeviceId" + }, + "type": "array" + }, + "parentNode": { + "description": "LINT.IfChange(home_graph_single_parent) At the moment, we just have a single string. In future this will expand with additional metadata from client or cloud execution data store. In today's 'tree' HomeGraph each object has a single parent. In the future this may have a mesh for complex cases -- zones, doors, etc -- so we make this a repeated element today. LINT.ThenChange(//depot/google3/assistant/assistant_server/settings/user_defined_actions/footprints/footprint_accessor.cc:home_graph_single_parent)", + "items": { + "type": "string" + }, + "type": "array" + }, + "parentType": { + "description": "The type of the parent. Currently only set for devices, to distinguish between structure and room parents. Items currently have only one parent, and entries after the first parent_type are ignored.", + "items": { + "enum": [ + "UNKNOWN_ITEM_TYPE", + "DEVICE", + "ROOM", + "PLACE", + "GROUP", + "SCENE", + "STRUCTURE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "personalizedNicknames": { + "description": "User-given nicknames for an entity (e.g. \"My house\"). These nicknames are unique to the gaia user. Nickname in DeviceInfo is per-entity level nickname, while personalized_nicknames is per-user per-entity.", + "items": { + "type": "string" + }, + "type": "array" + }, + "physicalLocation": { + "$ref": "AssistantVerticalsHomeautomationProtoPhysicalLocation", + "description": "Stores the location for the STRUCTURE type." + }, + "plural": { + "description": "We use this to determine if the synonyms matched in the aqua interpretation is plural. Then we will return disambiguate dialog or execute commands with all the targets.", + "items": { + "type": "string" + }, + "type": "array" + }, + "primaryName": { + "description": "Which of the values was the original, user-provided name -- or our disambiguated, cleaned-up version of it. This is what we use in TTS when we need to identify an object that wasn't just spoken uniquely by the user -- in disambiguation dialogue, or in response to a collective interrogative (e.g. \"what lights are on in the kitchen?\")", + "type": "string" + }, + "roleInformation": { + "$ref": "AssistantVerticalsHomeautomationProtoRoleInformation", + "description": "User's role information for this device. This will be used in Home Automation server to decide if user has authority to fulfill its request." + }, + "routableViaGcm": { + "description": "Only present for a target device. Indicates this target device is reachable by a local (AoGH) path via an AoGH device.", + "type": "boolean" + }, + "saftDocument": { + "$ref": "NlpSaftDocument", + "description": "SAFT Document with linguistic annotations for the primary device name." + }, + "smartDeviceManagementData": { + "$ref": "AssistantVerticalsHomeautomationProtoSmartDeviceManagementData", + "description": "Data needed for SDM (fleet management). See go/enterprise-id-in-assistant." + }, + "smartHomeFeatures": { + "$ref": "AssistantVerticalsHomeautomationProtoSmartHomeFeatures", + "description": "SmartHome feature flags that may be enabled per-item." + }, + "supportedStructureFeatures": { + "$ref": "AssistantVerticalsHomeautomationProtoSupportedStructureFeatures", + "description": "The features that are available for a structure. Will only be populated if the item_type == STRUCTURE." + }, + "supportedTraitsByAgent": { + "additionalProperties": { + "$ref": "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaDataSupportedTraits" + }, + "description": "Map from agent ID to supported traits. Some devices (e.g. Newman) have multiple agents, with each agent being associated with a specific set of traits. This could alternatively have been formatted as map as {trait, agent} pairs instead of the {agent, list of trait} pairs, but we retain this format to be consistent with HomeGraph's representation. In practice, a trait should only be paired with a single agent (i.e. we should not have two agents with the same trait in their value list). This field is optional and should only be provided if the item has multiple agents.", + "type": "object" + }, + "supportsDirectResponse": { + "description": "This device supports direct response -- if the device itself is issuing the query (which means it's also an assistant surface) we can return its payload directly rather than via cloud.", + "type": "boolean" + }, + "targetDeviceSignalStrengths": { + "additionalProperties": { + "format": "int64", + "type": "string" + }, + "description": "Only present for an AoGH device. HGS Device ID of a target device and the signal strength (RSSI in dB, higher is better) between that target device and the AoGH device. If this map is empty, there are no target devices reachable by this AoGH device.", + "type": "object" + }, + "traitRoutingHints": { + "description": "For SHED devices, some traits can only be executed on 3P cloud, e.g. \"action.devices.traits.MediaInitiation\", \"action.devices.traits.Channel\" go/shed-per-trait-routing", + "items": { + "$ref": "HomeGraphCommonTraitRoutingHints" + }, + "type": "array" + }, + "traitRoutingTable": { + "additionalProperties": { + "$ref": "HomeGraphCommonRoutingTable" + }, + "description": "Map from traits to routing table. Metadata includes preferred execution path per trait and, when Matter is preferred, which endpoint should be used for the trait.", + "type": "object" + }, + "traitToAttributeProtos": { + "additionalProperties": { + "$ref": "AssistantVerticalsHomeautomationProtoAttributes" + }, + "description": "Map of trait to a proto representing the attribute. This is different from the attributes field above which is represented as a struct. The attributes here are represented as protos and will require specific support per trait.", + "type": "object" + }, + "type": { + "description": "The item type, such as \"action.devices.types.VACUUM\" - to be used in triggering type-based actions, e.g. \"start vacuuming\": go/smarthome-type-based-actions.", + "type": "string" + }, + "userDefinedDeviceType": { + "description": "The priority order of speech targeting: 1. user_defined_device_type 2. derived_device_type 3. device_type", + "type": "string" + }, + "voiceMatchRequired": { + "description": "Set to which level of voice match is needed. Enum based on string input from the partner in json sync. Values accepted: \"none\" (but in this case partners won't set it), \"owner\" [requires matching one of the creator gaia IDs], or \"member\" [any recognized voice 'enrolled' on the device]. This may expand; only \"owner\" is in use for first partner, Tile.", + "enum": [ + "ANY", + "OWNER", + "MEMBER" + ], + "enumDescriptions": [ + "Also default, and existing behavior == \"none\" in text", + "Must match an actual creator_gaia_id on device", + "Any member of the surface / structure interacting" + ], + "type": "string" + }, + "willReportState": { + "description": "This device will report state; we can query realtime state from local HGS rather than slow QUERY intent to the 3p cloud.", + "type": "boolean" + }, + "zoneNameSaftDocument": { + "$ref": "NlpSaftDocument", + "description": "SAFT Document with linguistic annotations for the zone name, if applicable." + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaDataSupportedTraits": { + "id": "AssistantVerticalsHomeautomationProtoHomeAutomation_MetaDataSupportedTraits", + "properties": { + "traits": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoPhysicalLocation": { + "id": "AssistantVerticalsHomeautomationProtoPhysicalLocation", + "properties": { + "address": { + "type": "string" + }, + "geoLocation": { + "$ref": "GoogleTypeLatLng" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoRoleInformation": { + "description": "Represents the user’s role such as assistant only or manager for a device. Design doc: https://docs.google.com/document/d/1c1hnauEbBfDkywO3GZkI8ejHP765l2tLspmPgckEe2Y/", + "id": "AssistantVerticalsHomeautomationProtoRoleInformation", + "properties": { + "iamCheckRequired": { + "description": "When true, role_type will be ignored, Nest IAM RPC will called to check authority.", + "type": "boolean" + }, + "roleType": { + "enum": [ + "UNDEFINED", + "ASSISTANT_ONLY", + "CAST_LEGACY_LINKED", + "MANAGER" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoSmartDeviceManagementData": { + "id": "AssistantVerticalsHomeautomationProtoSmartDeviceManagementData", + "properties": { + "enterpriseId": { + "description": "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.", + "type": "string" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoSmartHomeFeatures": { + "description": "SmartHome feature flags that may be enabled per-item. LINT.IfChange", + "id": "AssistantVerticalsHomeautomationProtoSmartHomeFeatures", + "properties": { + "circadianLightingEnabled": { + "description": "Flag indicating whether the background Circadian Lighting effect is enabled for a particular light (go/circadian-lighting-e2e).", + "type": "boolean" + }, + "energySavingsEnabled": { + "description": "Flag indicating whether automatic Energy Savings are enabled for this item.", + "type": "boolean" + }, + "gentleWakeupEnabled": { + "description": "Flag indicating whether Gentle Wake Up is enabled for this item (go/sleep-wake-design).", + "type": "boolean" + }, + "homeAwayOverMatterEnabled": { + "description": "Flag indicating whether the user has enabled / disabled sending Home/Away status updates to the device through the Google custom IntelligenceEvents Matter cluster. (go/google-clusters-design)", + "type": "boolean" + } + }, + "type": "object" + }, + "AssistantVerticalsHomeautomationProtoSupportedStructureFeatures": { + "description": "The features a structure supports.", + "id": "AssistantVerticalsHomeautomationProtoSupportedStructureFeatures", + "properties": { + "conciergeFeatures": { + "$ref": "AssistantVerticalsHomeautomationProtoConciergeFeatures" + } + }, + "type": "object" + }, + "AttentionalEntitiesMentionProperties": { + "description": "Represents the properties of a mention. Next ID: 13", + "id": "AttentionalEntitiesMentionProperties", + "properties": { + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "The unique device on which the mention occurred. For example, if the user has two Google Home devices, this indicates which of the two was used." + }, + "eventId": { + "$ref": "EventIdMessage", + "description": "ID of the event that resulted in this entity mention. For user and system turn AEs, this is taken from the ConversationSnapshotId of the snapshot containing this mention. For client AEs, this is empty. This can be used to join back this particular mention to the specific \"turn\" in which this mention took place." + }, + "factoidScore": { + "description": "If this mention corresponds to a WebAnswer, then this defines the score associated with that answer.", + "format": "float", + "type": "number" + }, + "listEntryInfo": { + "$ref": "AttentionalEntitiesMentionPropertiesListEntryInfo", + "description": "If present, this entity was mentioned as part of a larger list." + }, + "recency": { + "description": "Estimates the recency of the mention. This is internally computed at runtime on a turn-by-turn basis.", + "enum": [ + "RECENCY_UNSPECIFIED", + "MOST_RECENT_TURN" + ], + "enumDescriptions": [ + "", + "Corresponds to a mention from the most recent user-driven interaction. For example, this label would be applied to both mentions of \"Barack Obama\" in the following interaction: USER: How tall is Obama? GOOGLE: Barack Obama is six feet one inch tall. NOTE: This is currently only applicable to mentions that have a source of User or System." + ], + "type": "string" + }, + "role": { + "$ref": "AttentionalEntitiesSemanticRoleId", + "description": "The semantic role that the entity was used in." + }, + "salience": { + "description": "How salient this mention is. This field will only be set if the mention is derived from a SearchAnswerValue. See go/webresultsdata-as-aes for more details.", + "enum": [ + "UNKNOWN_SALIENCE", + "PRIMARY", + "METADATA" + ], + "enumDescriptions": [ + "Any mention that is not derived from a SearchAnswerValue will not have a Salience.", + "This mention corresponds to the primary entity in the response. For example, if the query is \"who was the 44th President of the US\", then the entity for \"Barack Obama\" would be marked as PRIMARY. Note that there may more than one PRIMARY entity in a response if a list of values is displayed (e.g. \"Stephen King books\").", + "This mention corresponds to metadata associated with the answer. For the US President query mentioned above, something like the inauguration date could be considered as METADATA. If it is difficult to identify a PRIMARY entity, then all entities may be marked as METADATA." + ], + "type": "string" + }, + "source": { + "$ref": "AttentionalEntitiesMentionPropertiesSource", + "description": "Contains metadata about the source of the mention." + }, + "spatialProperties": { + "$ref": "AttentionalEntitiesSpatialProperties", + "description": "If present, properties of visual mentions (e.g., how they are displayed to the user, visibility, etc.)." + }, + "surfaceForm": { + "$ref": "AttentionalEntitiesSurfaceForm", + "description": "Details about how this mention was presented." + }, + "timestamp": { + "description": "Unix timestamp noting (approximately) when this mention occurred. We do not guarantee that the time will correspond precisely to when the user uttered/heard a response. If mentions within a single turn have *different* timestamps, they should accurately reflect the order in which the mentions occurred. If that order is unknown, they should all have the same timestamp.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "AttentionalEntitiesMentionPropertiesListEntryInfo": { + "description": "Contains information about how an entity was presented as part of a list.", + "id": "AttentionalEntitiesMentionPropertiesListEntryInfo", + "properties": { + "index": { + "description": "The index of the entity presented to the user. NOTE: Indexing starts from 0.", + "format": "int64", + "type": "string" + }, + "lexicalGroundingsId": { + "description": "A string which uniquely identifies the list item this entity represents in the list. For example, consider the \"OrderPizza\" intent with the \"size\" slot: U: I want to order a pizza A: Sure. What size do you want: large, medium, or small? U: Gigantic The lexical_groundings_id can be \"large\" to identify the large item in the list. This lexical_groundings_id together with the semantic role fields (i.e., role.intent_id \u0026 role.role_id) can be used to match the nlp_semantic_parsing::LexicalGroundings::ValueTermType to utilize lexical grounding for i18n of static list selection items. Note that this field only needs to be populated when developers expect to provide lexical groundings for the list item this entity represents. Effectively, this field will be populated when this entity is published by ListPresentationFrame and the ::quality::dialog_manager::IntentStageSignals::FieldCandidate.lexical_groundings_id field is populated. See go/lpf-i18nv2 \u0026 go/taskstate-ae-sync for more details. ", + "type": "string" + } + }, + "type": "object" + }, + "AttentionalEntitiesMentionPropertiesSource": { + "description": "The agent or system from which the mention was derived. Each mention corresponds to a single source.", + "id": "AttentionalEntitiesMentionPropertiesSource", + "properties": { + "client": { + "$ref": "AttentionalEntitiesMentionPropertiesSourceClient" + }, + "system": { + "$ref": "AttentionalEntitiesMentionPropertiesSourceSystem" + }, + "user": { + "$ref": "AttentionalEntitiesMentionPropertiesSourceUser" + } + }, + "type": "object" + }, + "AttentionalEntitiesMentionPropertiesSourceClient": { + "description": "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.", + "id": "AttentionalEntitiesMentionPropertiesSourceClient", + "properties": {}, + "type": "object" + }, + "AttentionalEntitiesMentionPropertiesSourceSystem": { + "description": "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.", + "id": "AttentionalEntitiesMentionPropertiesSourceSystem", + "properties": {}, + "type": "object" + }, + "AttentionalEntitiesMentionPropertiesSourceUser": { + "description": "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.", + "id": "AttentionalEntitiesMentionPropertiesSourceUser", + "properties": {}, + "type": "object" + }, + "AttentionalEntitiesSemanticRoleId": { + "description": "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.", + "id": "AttentionalEntitiesSemanticRoleId", + "properties": { + "intentId": { + "description": "Semantic roles will be defined locally, within the context of a single task/feature. The |intent_id| is a unique identifier for such a local cluster. In most cases, this should be exactly the same as the name of the intent used for TaskState (see go/assistant-intent-catalog). In cases where the intent isn't well-defined, this can be an arbitrary, feature-defined identifier.", + "type": "string" + }, + "roleId": { + "description": "Identifier for a semantic role, unique within the namespace of |intent_id|. When this role corresponds to a slot in the intent, the |role_id| should be equal to the name of that argument. For example, consider an entry in the intent catalog: core_intent { id { id: \"BookARide\" } slot { name: \"provider\" type { string_type { } } } slot { name: \"num_riders\" type { number_type { } } } } Then, the |role_id| would be \"provider\" or \"num_riders\" when referring to one of these slots. NOTE: when responding to the user, the Assistant may actually make use of other roles such as \"ETA\" or \"driver\" that are not part of the intent declaration. These should still be assigned consistent semantic roles. For example, a dialog with the Shopping feature: User: Where can I buy XYZ? Google: [Best Buy in Sunnyvale] has [XYZ] in stock. User: Great! Give me directions. In this case, both \"Best Buy\" and \"XYZ\" would be pushed to attentional entities. Best Buy, in this case, may not be an argument in the ShoppingItemStockInquiry intent, but should still have a consistent |role_id| such as \"possessing_business\".", + "type": "string" + } + }, + "type": "object" + }, + "AttentionalEntitiesSpatialProperties": { + "description": "Properties of visual mentions (e.g., how they are displayed to the user, visibility, etc.).", + "id": "AttentionalEntitiesSpatialProperties", + "properties": { + "visibility": { + "enum": [ + "UNKNOWN_VISIBILITY", + "VISIBLE", + "HIDDEN" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "AttentionalEntitiesSurfaceForm": { + "description": "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.", + "id": "AttentionalEntitiesSurfaceForm", + "properties": { + "text": { + "type": "string" + } + }, + "type": "object" + }, + "BiasingPerDocData": { + "description": "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.", + "id": "BiasingPerDocData", + "properties": { + "biasingfield": { + "items": { + "$ref": "BiasingPerDocDataBiasingField" + }, + "type": "array" + } + }, + "type": "object" + }, + "BiasingPerDocData2": { + "description": "A replacement for BiasingPerDocData that is more efficient wrt size in the index.", + "id": "BiasingPerDocData2", + "properties": { + "biasingField": { + "items": { + "$ref": "BiasingPerDocData2BiasingField" + }, + "type": "array" + } + }, + "type": "object" + }, + "BiasingPerDocData2BiasingField": { + "id": "BiasingPerDocData2BiasingField", + "properties": { + "compressedName": { + "description": "A fingerprint of the actual name of the field.", + "format": "uint32", + "type": "integer" + }, + "value": { + "description": "The value, under various representations to get maximum compression. Exactly one of them is guaranteed to be filled. value as a double.", + "format": "double", + "type": "number" + }, + "valueFloat": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "valueInt": { + "description": "value as an int32. When the value is encode-able as an integer.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "BiasingPerDocDataBiasingField": { + "description": "Metadata fields on which we can bias (sort) search results independently from the normal ranking using a ScoreAdjuster", + "id": "BiasingPerDocDataBiasingField", + "properties": { + "Name": { + "description": "Fingerprint of the attribute name (no need to keep long field names)", + "format": "uint64", + "type": "string" + }, + "Value": { + "description": "Biasing value translated into a double for uniform comparison", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "BlobstoreBlobRef": { + "description": "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-\u003eBlobRef mapping inside our network. ", + "id": "BlobstoreBlobRef", + "properties": { + "BlobID": { + "format": "byte", + "type": "string" + }, + "Options": { + "format": "int64", + "type": "string" + }, + "RefID": { + "format": "byte", + "type": "string" + }, + "ShardBin": { + "format": "int32", + "type": "integer" + }, + "Size": { + "description": "Size of the complete blob, in bytes.", + "format": "int64", + "type": "string" + }, + "SourceV2BlobID": { + "description": "The ID of the V2 blob this blob has", + "type": "string" + }, + "V2ReadBlobToken": { + "description": "Deprecated.", + "type": "string" + } + }, + "type": "object" + }, + "BlogPerDocData": { + "description": "Additional data for Blog/Posts", + "id": "BlogPerDocData", + "properties": { + "blogurlFp": { + "description": "used for blogurl crowding.", + "format": "uint64", + "type": "string" + }, + "clientSpamminess": { + "description": "This score captures how spammy the client is that the micropost was created with. The higher the score the worse.", + "format": "int32", + "type": "integer" + }, + "convTree": { + "$ref": "BlogsearchConversationTree", + "description": "For the threaded conversation view. Only populated in docs with provider type SYNTHETIC_CONVERSATION_DOC." + }, + "copycatScore": { + "format": "int32", + "type": "integer" + }, + "docQualityScore": { + "format": "int32", + "type": "integer" + }, + "isSyntacticReshare": { + "description": "A syntactic reshare is a document that is * created from an original and shared with friends and * we detect this resharing property by syntactically parsing the doc. . For example, a retweet is an example of a syntactic_reshare because we can detect that it's a reshare by grepping for \"RT @\".", + "type": "boolean" + }, + "microblogQualityExptData": { + "$ref": "Proto2BridgeMessageSet", + "description": "Experimental data for quality experiments. This will NOT be populated in prod, but we will use this for experiments." + }, + "numMentions": { + "description": "For replies/reshares. num_mentions = number of times the pattern @foo appears in the document.", + "format": "int32", + "type": "integer" + }, + "outlinks": { + "items": { + "$ref": "BlogPerDocDataOutlinks" + }, + "type": "array" + }, + "postContentFingerprint": { + "description": "The fingerprint for the body text of the microblog post. It is copied from MicroBlogPost.post_content_fingerprint.", + "format": "int32", + "type": "integer" + }, + "qualityScore": { + "format": "int32", + "type": "integer" + }, + "spamScore": { + "description": "Blog scoring signals.", + "format": "int32", + "type": "integer" + }, + "universalWhitelisted": { + "type": "boolean" + }, + "userQualityScore": { + "description": "User and doc quality scores for updates (aka microposts).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "BlogPerDocDataOutlinks": { + "description": "Resolved url and site spamscore for outlinks in updates (aka microposts).", + "id": "BlogPerDocDataOutlinks", + "properties": { + "aggregationFp": { + "description": "Representative id for an equivalence class of URLs. E.g. http://youtube.com/watch?v=12 and http://youtube.com/watch?v=12\u0026feature=related have the same aggregation id since they're effectively the same webpage", + "format": "uint64", + "type": "string" + }, + "resolvedUrl": { + "type": "string" + }, + "siteSpamScore": { + "format": "int32", + "type": "integer" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "BlogsearchConversationNode": { + "id": "BlogsearchConversationNode", + "properties": { + "authorName": { + "description": "The username of the author of the microblog post represented by this node.", + "type": "string" + }, + "children": { + "description": "A list of docids of child nodes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "date": { + "description": "The creation date of the doc.", + "format": "int64", + "type": "string" + }, + "docid": { + "description": "Docid of the microblog post represented by this node.", + "type": "string" + }, + "parent": { + "description": "The docid of the parent node. The root of the tree will leave this empty.", + "type": "string" + } + }, + "type": "object" + }, + "BlogsearchConversationTree": { + "id": "BlogsearchConversationTree", + "properties": { + "convId": { + "description": "The id of this conversation.", + "type": "string" + }, + "nodes": { + "description": "The nodes in this conversation. No particular order is assumed.", + "items": { + "$ref": "BlogsearchConversationNode" + }, + "type": "array" + } + }, + "type": "object" + }, + "BlueGingerClientVisibleProtoBlueGingerSupportedServices": { + "description": "Information to indicate BG availability for businesses. This message is filled from Topic Server and stored in the GSR in Superroot.", + "id": "BlueGingerClientVisibleProtoBlueGingerSupportedServices", + "properties": { + "modules": { + "description": "List of supported modules for a business.", + "items": { + "$ref": "BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule" + }, + "type": "array" + } + }, + "type": "object" + }, + "BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule": { + "id": "BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule", + "properties": { + "name": { + "description": "Module name, e.g. hairdresser_reservation. from quality/views/extraction/kcube/bg/modules/modules.bzl.", + "type": "string" + }, + "services": { + "description": "Services of this module that are supported by the business, e.g. haircuts.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "BookCitationPerDocData": { + "description": "Per-doc data for the web page about the cited book Approximate size is on average ~10bytes", + "id": "BookCitationPerDocData", + "properties": { + "bookId": { + "description": "the book id for the main citation", + "format": "int64", + "type": "string" + }, + "discretizedCitationScore": { + "description": "the discretized citation score for the main book. we map the raw score 1.0-20.0 to 0 - 127", + "format": "int32", + "type": "integer" + }, + "previewable": { + "description": "Is there a preview or excerpt of the book on this document?", + "type": "boolean" + }, + "secondBookId": { + "description": "book id for the second citation if we can't separate the two top citations (they are too close).", + "format": "int64", + "type": "string" + }, + "secondDiscretizedCitationScore": { + "description": "the discretized score for the second citation", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "BusinessHours": { + "description": "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.", + "id": "BusinessHours", + "properties": { + "dayopen": { + "format": "int32", + "type": "integer" + }, + "interval": { + "items": { + "$ref": "BusinessHoursInterval" + }, + "type": "array" + } + }, + "type": "object" + }, + "BusinessHoursInterval": { + "id": "BusinessHoursInterval", + "properties": { + "end": { + "description": "The interval ends at the start of this second", + "format": "int32", + "type": "integer" + }, + "start": { + "description": "Time in seconds since Midnight-Monday-Morn", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ChatBotPlatformBotSendToken": { + "description": "Token to be exposed and stored by the bot", + "id": "ChatBotPlatformBotSendToken", + "properties": { + "expiryTimeMicros": { + "description": "Time since epoch (micros) that this will expire", + "format": "int64", + "type": "string" + }, + "sendToken": { + "description": "Encrypted InternalSendToken", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "ChatBotPlatformFireballId": { + "id": "ChatBotPlatformFireballId", + "properties": { + "id": { + "$ref": "GoogleInternalCommunicationsInstantmessagingV1Id", + "description": "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." + } + }, + "type": "object" + }, + "ClassifierPornAggregatedUrlPornScores": { + "description": "Per-URL porn scores for the URLs associated with the corresponding image.", + "id": "ClassifierPornAggregatedUrlPornScores", + "properties": { + "averageUrlPornScore": { + "format": "float", + "type": "number" + }, + "urlCount": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ClassifierPornClassifierData": { + "description": "Next ID: 6", + "id": "ClassifierPornClassifierData", + "properties": { + "classification": { + "items": { + "$ref": "ClassifierPornClassifierDataClassification" + }, + "type": "array" + }, + "imageBasedDetectionDone": { + "description": "Records whether the image linker is run already. This is only used for Alexandria but NOT for Segindexer.", + "type": "boolean" + }, + "timestamp": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "ClassifierPornClassifierDataClassification": { + "id": "ClassifierPornClassifierDataClassification", + "properties": { + "label": { + "type": "string" + }, + "score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ClassifierPornDocumentData": { + "description": "Next ID: 3", + "id": "ClassifierPornDocumentData", + "properties": { + "classifierdata": { + "$ref": "ClassifierPornClassifierData" + }, + "sitedata": { + "$ref": "ClassifierPornSiteData" + } + }, + "type": "object" + }, + "ClassifierPornQueryClassifierOutput": { + "description": "Generic output for one vertical.", + "id": "ClassifierPornQueryClassifierOutput", + "properties": { + "csaiClassification": { + "description": "This field is only filled for the CSAI vertical.", + "enum": [ + "NOT_PROTECTED", + "PROTECTED", + "STRONGLY_PROTECTED" + ], + "enumDescriptions": [ + "Contract: (STRONGLY_PROTECTED \u0026 PROTECTED) == PROTECTED", + "", + "" + ], + "type": "string" + }, + "csaiRegexpHighConfidenceClassification": { + "description": "DO NOT USE: This field is temporary and should be used only for the CSAI Onebox. This field is the result of the regular expression classifier alone as opposed to a combination with Seti classifier as in csai_classification field.", + "enum": [ + "NOT_PROTECTED", + "PROTECTED", + "STRONGLY_PROTECTED" + ], + "enumDescriptions": [ + "Contract: (STRONGLY_PROTECTED \u0026 PROTECTED) == PROTECTED", + "", + "" + ], + "type": "string" + }, + "debug": { + "description": "Human-readable debug information about the classification. This field is only set if output_debug is set in the classification input.", + "type": "string" + }, + "isPositive": { + "description": "The bit that shows if this classifier outputs positive classification for the input query. Set by thresholding with a recommended threshold.", + "type": "boolean" + }, + "score": { + "description": "The score that the classifier assigned to the input query. This is filled by all verticals.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ClassifierPornQueryMultiLabelClassifierOutput": { + "description": "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.", + "id": "ClassifierPornQueryMultiLabelClassifierOutput", + "properties": { + "csai": { + "$ref": "ClassifierPornQueryClassifierOutput" + }, + "fringe": { + "$ref": "ClassifierPornQueryClassifierOutput" + }, + "medical": { + "$ref": "ClassifierPornQueryClassifierOutput" + }, + "offensive": { + "$ref": "ClassifierPornQueryClassifierOutput" + }, + "porn": { + "$ref": "ClassifierPornQueryClassifierOutput" + }, + "spoof": { + "$ref": "ClassifierPornQueryClassifierOutput" + }, + "violence": { + "$ref": "ClassifierPornQueryClassifierOutput" + }, + "vulgar": { + "$ref": "ClassifierPornQueryClassifierOutput" + } + }, + "type": "object" + }, + "ClassifierPornQueryStats": { + "description": "QuerySats contains the information about the queries that users typed to search for this image.", + "id": "ClassifierPornQueryStats", + "properties": { + "queryTextPornScore": { + "description": "A query text porn score for the queries which have clicks to the image: query_text_porn_score := sum(clicks(query) * text_porn_score(query)) / sum(clicks(query))", + "format": "float", + "type": "number" + }, + "totalClicks": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ClassifierPornReferrerCounts": { + "description": "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.", + "id": "ClassifierPornReferrerCounts", + "properties": { + "adult": { + "format": "int32", + "type": "integer" + }, + "porn": { + "description": "Number of referrers which are classified as porn and as adult.", + "format": "int32", + "type": "integer" + }, + "total": { + "description": "Total number of referrers.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ClassifierPornSiteData": { + "description": "Next ID: 51", + "id": "ClassifierPornSiteData", + "properties": { + "avgPedoPageScore": { + "description": "The average pedo page score for the site.", + "format": "float", + "type": "number" + }, + "finalPedoSiteScore": { + "format": "float", + "type": "number" + }, + "numberOfPages": { + "description": "The number of pages that were used to compute the scores and ratios.", + "format": "uint64", + "type": "string" + }, + "numberOfPedoPages": { + "description": "The number of pages with pedo restrict.", + "format": "uint64", + "type": "string" + }, + "sitePornRatio": { + "description": "The ratio of porn/softporn of the site this page belongs to.", + "format": "float", + "type": "number" + }, + "siteSoftpornRatio": { + "format": "float", + "type": "number" + }, + "versionedscore": { + "items": { + "$ref": "ClassifierPornSiteDataVersionedScore" + }, + "type": "array" + }, + "violenceStats": { + "$ref": "ClassifierPornSiteViolenceStats" + } + }, + "type": "object" + }, + "ClassifierPornSiteDataVersionedScore": { + "description": "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.", + "id": "ClassifierPornSiteDataVersionedScore", + "properties": { + "score": { + "format": "float", + "type": "number" + }, + "siteRule": { + "items": { + "enum": [ + "HIGH_PORN_FRACTION_RULE", + "DEPRECATED_USER_GENERATED_CONTENT_RULE", + "DEPRECATED_SITES_WITH_IGNORED_SCORES_LIST" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "version": { + "format": "int32", + "type": "integer" + }, + "verticals4Score": { + "description": "Please talk to safesearch@ before relying on any of these internal fields:", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ClassifierPornSiteViolenceStats": { + "description": "Next ID: 6", + "id": "ClassifierPornSiteViolenceStats", + "properties": { + "meanFinalViolenceScore": { + "format": "float", + "type": "number" + }, + "numberOfImages": { + "format": "uint64", + "type": "string" + }, + "numberOfVideos": { + "format": "uint64", + "type": "string" + }, + "videoViolenceScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "CommerceDatastoreDeepTag": { + "description": "The basic message that contains a single decision output of go/deeptagger.", + "id": "CommerceDatastoreDeepTag", + "properties": { + "confidence": { + "description": "The confidence of the tag, encoded to 14 bits (range [0, 16383]). Due to modeling details, a large number of tags become trustworthy with confidence greater than 0.001, so two bytes of precision are required.", + "format": "uint32", + "type": "integer" + }, + "tag": { + "description": "A Deep Tag enum in uint32 form.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "CommerceDatastoreImageDeepTags": { + "description": "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/looks_offline_pipeline.cc?l=268\u0026rcl=304165166 *** `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.", + "id": "CommerceDatastoreImageDeepTags", + "properties": { + "modelOutputs": { + "description": "The set of outputs for a series of model versions. The size of this field should not extend beyond 4 at any time: two versions for slow-update track dependencies, and two versions for fast-update track dependencies.", + "items": { + "$ref": "CommerceDatastoreImageDeepTagsModelOutput" + }, + "type": "array" + } + }, + "type": "object" + }, + "CommerceDatastoreImageDeepTagsModelOutput": { + "id": "CommerceDatastoreImageDeepTagsModelOutput", + "properties": { + "backgroundType": { + "$ref": "CommerceDatastoreDeepTag" + }, + "collage": { + "$ref": "CommerceDatastoreDeepTag" + }, + "cropping": { + "$ref": "CommerceDatastoreDeepTag", + "description": "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": { + "$ref": "CommerceDatastoreDeepTag" + }, + "nfs": { + "$ref": "CommerceDatastoreDeepTag", + "description": "Tag corresponds to the shopping non-family safe (nfs) image signal." + }, + "objectCount": { + "$ref": "CommerceDatastoreDeepTag" + }, + "overlay": { + "$ref": "CommerceDatastoreDeepTag", + "description": "Tag corresponding to unwanted text overlay (watermarks, logos, promotional elements, artifacts, etc)." + }, + "selfie": { + "$ref": "CommerceDatastoreDeepTag" + }, + "textOverlay": { + "description": "Tag corresponding to the text overlay classifier (watermarks, logos, promotional elements, artifacts, etc).", + "items": { + "$ref": "CommerceDatastoreDeepTag" + }, + "type": "array" + }, + "version": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "CompositeDoc": { + "description": "Protocol record used for collecting together all information about a document. Please consult go/dme 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: 190", + "id": "CompositeDoc", + "properties": { + "ContentChecksum96": { + "description": "Visible content checksum as computed by repository::parsehandler::checksum::Checksum96bitsParseHandler. The value is a Fprint96 in \"key format\" (i.e., by Fprint96::AsKey()).", + "format": "byte", + "type": "string" + }, + "accessRequirements": { + "$ref": "IndexingPrivacyAccessAccessRequirements", + "description": "Contains necessary information to enforce row level Docjoin access control." + }, + "additionalchecksums": { + "$ref": "CompositeDocAdditionalChecksums" + }, + "alternatename": { + "items": { + "$ref": "CompositeDocAlternateName" + }, + "type": "array" + }, + "anchorStats": { + "$ref": "IndexingDocjoinerAnchorStatistics" + }, + "anchors": { + "$ref": "Anchors" + }, + "badSslCertificate": { + "$ref": "IndexingBadSSLCertificate", + "description": "This field is present iff the page has a bad SSL certificate itself or in its redirect chain." + }, + "cseId": { + "items": { + "$ref": "QualityProseCSEUrlInfo" + }, + "type": "array" + }, + "csePagerankCutoff": { + "description": "URL should only be selected for CSE Index if it's pagerank is higher than cse_pagerank_cutoff.", + "format": "int32", + "type": "integer" + }, + "dataVersion": { + "$ref": "IndexingDocjoinerDataVersion", + "description": "Contains the tracking version of various data fields in CompositeDoc." + }, + "doc": { + "$ref": "GDocumentBase" + }, + "docAttachments": { + "$ref": "Proto2BridgeMessageSet", + "description": "A generic container to hold document annotations and signals. For a full list of extensions live today, see go/wde." + }, + "docImages": { + "description": "Info about \"selected\" images associated with the document for which we (already) have ImageData. For each image URL, some fixed number of documents are selected as web referrers for the image URL, and within those selected documents, we say the image is \"selected\". Within the remaining documents, we say the image is \"rejected\". Note that this distinction is slightly different from selected for indexing. Only images within doc_images where is_indexed_by_imagesearch is true will be selected for indexing. You can find the rejected images at composite_doc.doc_attachments().get(). You can find images that are selected, but for which we have no ImageData (yet) at composite_doc.image_indexing_info().selected_not_indexed_image_link()", + "items": { + "$ref": "ImageData" + }, + "type": "array" + }, + "docVideos": { + "description": "Info about videos embedded in the document.", + "items": { + "$ref": "ImageRepositoryVideoProperties" + }, + "type": "array" + }, + "docinfoPassthroughAttachments": { + "$ref": "Proto2BridgeMessageSet", + "description": "This messageset is used for data pushed into the index using the signals framework that is never to be used in Mustang or TG Continuum scoring/snippeting code. Any protocol buffer stored in this messageset is automatically returned in a docinfo response - it ends up in the \"info\" messageset in the WWWSnippetResponse, so it can be used in post-doc twiddlers and for display in GWS with no code changes in Mustang or Teragoogle." + }, + "embeddedContentInfo": { + "$ref": "IndexingEmbeddedContentEmbeddedContentInfo", + "description": "Data produced by the embedded-content system. This is a thin message, containing only embedded_links_info data for the embedder and JavaScript/CSS embedded links (the embedded-content bigtable also contains snapshots, compressed document trees and all embedded link types). Provided using the index signal API." + }, + "extradup": { + "items": { + "$ref": "CompositeDocExtraDup" + }, + "type": "array" + }, + "forwardingdup": { + "items": { + "$ref": "CompositeDocForwardingDup" + }, + "type": "array" + }, + "includedcontent": { + "items": { + "$ref": "CompositeDocIncludedContent" + }, + "type": "array" + }, + "indexinginfo": { + "$ref": "CompositeDocIndexingInfo" + }, + "labelData": { + "$ref": "QualityLabelsGoogleLabelData", + "description": "This field associates a document to particular labels and assigns confidence values to them." + }, + "liveexperimentinfo": { + "$ref": "CompositeDocLiveExperimentInfo" + }, + "localinfo": { + "$ref": "LocalWWWInfo" + }, + "localizedAlternateName": { + "description": "Localized alternate names are similar to alternate names, except that it is associated with a language different from its canonical. This is the subset of webmaster-provided localized alternate names being in the dup cluster of this document. Used during serving for swapping in the URL based on regional and language preferences of the user.", + "items": { + "$ref": "IndexingConverterLocalizedAlternateName" + }, + "type": "array" + }, + "localizedvariations": { + "$ref": "CompositeDocLocalizedVariations" + }, + "manyboxData": { + "$ref": "ManyboxData" + }, + "partialUpdateInfo": { + "$ref": "CompositeDocPartialUpdateInfo", + "description": "Only present in partial cdocs." + }, + "perDocData": { + "$ref": "PerDocData" + }, + "porninfo": { + "$ref": "ClassifierPornDocumentData", + "description": "Porn related data used for image and web search porn classification as well as for diagnostics purposes." + }, + "properties": { + "$ref": "DocProperties" + }, + "ptoken": { + "$ref": "PtokenPToken", + "description": "Contains information necessary to perform policy decision on the usage of the data assosiated with this cdoc." + }, + "qualitysignals": { + "$ref": "CompositeDocQualitySignals" + }, + "registrationinfo": { + "$ref": "RegistrationInfo", + "description": "Information about the most recent creation and expiration of this domain. It's extracted from domainedge signal." + }, + "richcontentData": { + "$ref": "IndexingConverterRichContentData", + "description": "If present, indicates that some content was inserted, deleted, or replaced in the document's content (in CompositeDoc::doc::Content::Representation), and stores information about what was inserted, deleted, or replaced." + }, + "richsnippet": { + "$ref": "RichsnippetsPageMap", + "description": "rich snippet extracted from the content of a document." + }, + "robotsinfolist": { + "$ref": "CompositeDocRobotsInfoList" + }, + "scaledIndyRank": { + "description": "to copy to per-doc", + "format": "int32", + "type": "integer" + }, + "sitemap": { + "$ref": "Sitemap", + "description": "Sitelinks: a collection of interesting links a user might be interested in, given they are interested in this document. WARNING: this is different from the crawler Sitemaps (see SitemapsSignals in the attachments)." + }, + "storageRowTimestampMicros": { + "description": "Row timestamp in CDoc storage.", + "format": "int64", + "type": "string" + }, + "subindexid": { + "items": { + "enum": [ + "LTG_CANDIDATE", + "NOSUBINDEX", + "BASE", + "CSEINDEX", + "CSEINDEX_EXTENDED", + "DAILY", + "TIMBIT_PROTECTED", + "LANDFILL1", + "LANDFILL2", + "LANDFILL3", + "LANDFILL_BLOGSEARCH", + "LANDFILL_CSE", + "LANDFILL_SOCIAL", + "INSTANT", + "UNIFIED_LANDFILL", + "BLOGSEARCH_DYNAMIC_ASSIMILATED", + "BLOGSEARCH_EXTENDED", + "MOFFETT", + "UNSELECTED_DOCUMENTS", + "AQUARIUS", + "WEBSEARCH_FRESH", + "WEBSEARCH1", + "WEBSEARCH2", + "WEBSEARCH3", + "UNIFIED_ZEPPELIN_HIGH_QUALITY", + "ASIANREGIONAL", + "EMEAREGIONAL", + "BASEREGIONAL", + "BLACKHOLE", + "XBASE", + "FRESHBASE", + "XASIANREGIONAL", + "XEMEAREGIONAL", + "XBASEREGIONAL", + "BLIMPIE", + "BLIMPIEPP", + "GOODYEAR", + "GOODYEARPP", + "QUASAR", + "ZEPPELIN1", + "ZEPPELIN2", + "ZEPPELIN3", + "ZEPPELIN_STAGING", + "PULSAR", + "TIMBIT", + "UNIFIED_ZEPPELIN" + ], + "enumDescriptions": [ + "ltg-candidate is a label for docs whose selection decision is deferred to ltg by Alexandria. It does not correspond to any serving corpus.", + "", + "", + "Custom Search Engine special purpose corpus.", + "Custom Search Engine extended corpus to catch all CSE urls not indexed in unified zeppelin or higher tiers.", + "", + "timbit_protected is a label for keeping docs from dropping out of base, i.e., all timbit protected docs belong to base/basextended.", + "Generic corpora used in Oscar.", + "", + "", + "Blogsearch special purpose corpus for Oscar.", + "Customsearch special purpose corpus (for CookieBird).", + "Social special purpose corpus for Oscar.", + "", + "One big landfill index for Union.", + "Alexandria version of Blogsearch Assimilated.", + "Blogsearch corpus for all docs not indexed in unified zeppelin or higher.", + "Moffett corpus for all docs indexed in base and unified zeppelin.", + "Unselected documents corpus used for index-selection eval tools.", + "Aquarius corpus which is used to hold all app-only documents. go/aquarius", + "Corpus corresponding to serving corpus websearch_fresh.", + "Corpus corresponding to serving corpus websearch_1.", + "Corpus corresponding to serving corpus websearch_2.", + "Corpus corresponding to serving corpus websearch_3.", + "Top quality documents in unified zeppelin", + "Deprecated corpora.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "syntacticDate": { + "$ref": "QualityTimebasedSyntacticDate" + }, + "url": { + "description": "WARNING!!! \"url\" field in CompositeDoc is optional, and is usually missing: e.g., Docjoin CompositeDoc's don't have CompositeDoc::url. has_url() checking is often useful. So don't rely on CompositeDoc::url unless you're sure otherwise. Usually you want to use CompositeDoc::doc::url instead.", + "type": "string" + }, + "urldate": { + "description": "Date in the url extracted by quality/snippets/urldate/date-in-url.cc This is given as midnight GMT on the date in question.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "CompositeDocAdditionalChecksums": { + "description": "Additional checksums of the document.", + "id": "CompositeDocAdditionalChecksums", + "properties": { + "NoTransientChecksum96": { + "description": "Same as ContentChecksum96 but without transient boilerplate.", + "format": "byte", + "type": "string" + }, + "SimHash": { + "description": "Deprecated. Use simhash_v2 and simhash_v2_significance instead.", + "format": "uint64", + "type": "string" + }, + "SimHashIsTrusted": { + "type": "boolean" + }, + "simhashV2": { + "description": "Simhash-v2 is generated by SimHashParseHandler, designed as a complete replacement of simhash-v1 (a.k.a. the original simhash above) from ApproxDupsParseHandler. Simhash-v2 uses a revised algorithm so that it is expected to work better in most cases than simhash-v1. They coexist in current transition period, then simhash-v1 will be retired.", + "format": "uint64", + "type": "string" + }, + "simhashV2Significance": { + "description": "Simhash-v2-significance is used to describe the confidence about the corresponding simhash-v2 value. It is defined as the average absolute difference from zero of all internal state components when finalizing a simhash-v2 value in HashMultiSetDotCauchy. We used to compare the significance against some pre-defined threshold (default: 20) to get a boolean value \"trusted_simhash_v2\". However, it is possible that this field is missing while \"simhash_v2\" is present, in such case (1) Use \"SimHashIsTrusted\" instead if it is present, AND/OR (2) Assume \"simhash_v2\" is trusted if its value is non-zero.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "CompositeDocAlternateName": { + "description": "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.", + "id": "CompositeDocAlternateName", + "properties": { + "Url": { + "type": "string" + }, + "UrlEncoding": { + "description": "See webutil/urlencoding", + "format": "int32", + "type": "integer" + }, + "ecnFp": { + "description": "Fp96 of webmirror equivalence class as of last time this was exported.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "CompositeDocExtraDup": { + "description": "The top non-forwarding dups of the canonical url.", + "id": "CompositeDocExtraDup", + "properties": { + "ecnFp": { + "description": "Fp96 of webmirror equivalence class as of last time this was exported.", + "format": "byte", + "type": "string" + }, + "url": { + "description": "The url of the non-forwarding dup.", + "type": "string" + } + }, + "type": "object" + }, + "CompositeDocForwardingDup": { + "description": "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)", + "id": "CompositeDocForwardingDup", + "properties": { + "ecn": { + "description": "The name of the url's webmirror equivalence class.", + "format": "byte", + "type": "string" + }, + "ecnFp": { + "format": "byte", + "type": "string" + }, + "purposes": { + "description": "The purpose(s) of the forwarding dup indicating if it is used for forwarding signal/anchors generally, or only for forwarding some specific signal (e.g. navboost), or for some other purposes (e.g., not for forwarding any data but for making \"info:\" complete). See indexing/dups/public/dups.h for more details.", + "format": "int32", + "type": "integer" + }, + "rawPagerank": { + "description": "Raw pagerank of the url.", + "format": "int32", + "type": "integer" + }, + "repid": { + "description": "The webmirror repid of the forwarding dup.", + "format": "byte", + "type": "string" + }, + "url": { + "description": "The url of the forwarding dup.", + "type": "string" + }, + "urlencoding": { + "description": "The encoding of the url (see webutil/urlencoding for details).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "CompositeDocIncludedContent": { + "id": "CompositeDocIncludedContent", + "properties": { + "SourceTypeBitfield": { + "description": "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", + "format": "int64", + "type": "string" + }, + "includedDoc": { + "$ref": "GDocumentBase" + }, + "linkUrl": { + "type": "string" + }, + "perDocData": { + "$ref": "PerDocData" + }, + "properties": { + "$ref": "DocProperties" + } + }, + "type": "object" + }, + "CompositeDocIndexingInfo": { + "description": "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.", + "id": "CompositeDocIndexingInfo", + "properties": { + "cdocBuildInfo": { + "$ref": "IndexingDocjoinerCDocBuildInfo", + "description": "To hold extra info for building a final cdoc from raw cdoc and goldmine annotations." + }, + "contentProtected": { + "description": "Whether current page is under content protection, i.e. a page has been crawled as an error page, but we preserve its last known good content and keep its crawl_status as converter.CrawlStatus::CONTENT.", + "type": "boolean" + }, + "convertToRobotedReason": { + "description": "If set, indicates that the crawl status was converted to ROBOTED for the reason specified by the enum value in converter.RobotedReasons.ConvertToRobotedReasons. See indexing/converter/proto/converter.proto for details. If unset, then the document was not converted to roboted, and if the document crawl status is ROBOTED, then the document is disallowed (at least to Google) in robots.txt.", + "format": "int32", + "type": "integer" + }, + "crawlStatus": { + "description": "One of the enum values in converter.CrawlStatus.State (see indexing/converter/proto/converter.proto for details). Default is converter.CrawlStatus::CONTENT. The document is roboted if the value is converter.CrawlStatus::ROBOTED.", + "format": "int32", + "type": "integer" + }, + "demotionTags": { + "items": { + "enum": [ + "DEMOTION_TYPE_NONE", + "DEMOTION_TYPE_BADURLS_DEMOTE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "errorType": { + "description": "One of the enum values in converter.ErrorPageType (see indexing/converter/proto/error-page-detector-enum.proto for detail). Default is converter::ERROR_PAGE_NONE.", + "format": "int32", + "type": "integer" + }, + "freshdocsCorpora": { + "items": { + "enum": [ + "WEB", + "REALTIME", + "CSE", + "CSE_PREMIUM", + "BUSTER_IMAGES", + "NEWS", + "VIDEO", + "YOUTUBE", + "WEB_INSTANT", + "WEB_DAILY", + "CACHE_COLON" + ], + "enumDescriptions": [ + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "A table with just the bodysource attachment" + ], + "type": "string" + }, + "type": "array" + }, + "hostid": { + "description": "The host id of the document. Used chiefly to determine whether the document is part of a parked domain.", + "format": "uint64", + "type": "string" + }, + "ieIdentifier": { + "description": "A short descriptive string to help identify the IE application or setup where this CDoc is generated. For example: websearch_m3 This field is for debuggability purposes.", + "type": "string" + }, + "imageIndexingInfo": { + "$ref": "ImageSearchImageIndexingInfo", + "description": "Indexing info about images (i.e. image links missing image data, etc)." + }, + "indexingTs": { + "description": "The timestamp (the time since the Epoch, in microseconds) when the docjoin is exported from indexing. The main purpose of this field is to identify different versions of the same document.", + "format": "int64", + "type": "string" + }, + "isSiblingDeletion": { + "description": "Page is deleted when indexing choice flips between different corpora (e.g. desktop, mobile, archive, scholar, etc.) for the same URL. It's only set for deletion cdocs. Downstreams using URL as key should ignore the current deletion if the field is set.", + "type": "boolean" + }, + "noLongerCanonicalTimestamp": { + "description": "If set, the timestamp in microseconds when the URL stopped being canonical. This should never be set for exported canonical documents. This field is used by dups during canonical flip, and by webmain when doc selection switched between desktop and mobile. Union respects this timestamp to prevent old doc being deleted until the new doc is picked up", + "format": "int64", + "type": "string" + }, + "normalizedClickScore": { + "description": "This score is calculated by re-mapping the back onto the partition's score distribution, such that the score represents the score of the equivalently ranked organically-selected document.", + "format": "float", + "type": "number" + }, + "rawNavboost": { + "description": "The raw navboost count for the canonical url without aggregating the navboost from dup urls. This field is used when building forwarding map.", + "format": "int32", + "type": "integer" + }, + "rowTimestamp": { + "description": "The timestamp (the time since the Epoch, in microseconds) to represent doc version, which is used in the downstream processing after Raffia. If it's not set, indexing_ts will be used as row_timestamp. The timestamp is generally set by reprocessing to set slightly newer indexing_ts such that the system can respect the reprocessed version to overwrite old data in storage.", + "format": "int64", + "type": "string" + }, + "selectionTierRank": { + "description": "Selection tier rank is a language normalized score ranging from 0-1 over the serving tier (Base, Zeppelins, Landfills) for this document.", + "format": "float", + "type": "number" + }, + "tracingId": { + "description": "The tracing ids is to label the version of url for url status tracking. This repeated field will carry at most 10 tracing id. See more details in go/rich-tracing-design There will be less than 2% base+uz cdocs carrying this field. The major sources of tracing ids include: * Indexing API pushed urls * Index Metrics sampling urls The tracing ids will be written into cdocs by Webmain Ramifier. The consumer of the tracing ids is Union serving notification collector see more at go/serving-notification-from-union", + "items": { + "type": "string" + }, + "type": "array" + }, + "urlChangerate": { + "$ref": "CrawlerChangerateUrlChangerate", + "description": "Changerate information for this doc (see crawler/changerate/changerate.proto for details)." + }, + "urlHistory": { + "$ref": "CrawlerChangerateUrlHistory", + "description": "Url change history for this doc (see crawler/changerate/changerate.proto for details). Note if a doc has more than 20 changes, we only keep the last 20 changes here to avoid adding to much data in its docjoin." + }, + "urlPatternSignals": { + "$ref": "IndexingSignalAggregatorUrlPatternSignals", + "description": "UrlPatternSignals for this doc, used to compute document score in LTG (see indexing/signal_aggregator/proto/signal-aggregator.proto for details)." + }, + "videoIndexingInfo": { + "$ref": "ImageRepositoryVideoIndexingInfo", + "description": "Indexing info about videos." + } + }, + "type": "object" + }, + "CompositeDocLiveExperimentInfo": { + "description": "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.", + "id": "CompositeDocLiveExperimentInfo", + "properties": { + "perLiveExperimentInfo": { + "description": "List of necessary information for each live experiments.", + "items": { + "$ref": "CompositeDocLiveExperimentInfoPerLiveExperimentInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "CompositeDocLiveExperimentInfoPerLiveExperimentInfo": { + "description": "Contains information for a live experiment.", + "id": "CompositeDocLiveExperimentInfoPerLiveExperimentInfo", + "properties": { + "experimentId": { + "description": "ID of a live experiment.", + "type": "string" + }, + "partialCdoc": { + "$ref": "CompositeDoc", + "description": "Partial CDoc for a live experiment." + } + }, + "type": "object" + }, + "CompositeDocLocalizedVariations": { + "id": "CompositeDocLocalizedVariations", + "properties": { + "dupsComputedAlternateNames": { + "description": "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.", + "items": { + "$ref": "IndexingDupsComputedLocalizedAlternateNamesLocaleEntry" + }, + "type": "array" + }, + "webmasterAlternateNames": { + "description": "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.", + "items": { + "$ref": "IndexingConverterLocalizedAlternateName" + }, + "type": "array" + } + }, + "type": "object" + }, + "CompositeDocPartialUpdateInfo": { + "description": "Contains information about the partial updates present in a partial CompositeDoc.", + "id": "CompositeDocPartialUpdateInfo", + "properties": { + "goldmineAnnotatorNames": { + "description": "List of goldmine annotator updates present in the enclosing partial cdoc.", + "items": { + "type": "string" + }, + "type": "array" + }, + "imagesSignalNames": { + "description": "List of images signal updates present in the enclosing partial cdoc. Images signal name for a images signal is the unique name for the signal according to SignalSpec.", + "items": { + "type": "string" + }, + "type": "array" + }, + "lastFullIndexingInfo": { + "description": "Contains last full indexing information for partial updates.", + "items": { + "$ref": "CompositeDocPartialUpdateInfoLastFullIndexingInfo" + }, + "type": "array" + }, + "shouldLookupDocjoinsTier": { + "description": "Which tier we should do cdoc lookup to merge partial cdocs. This uses the integer value of indexing.selection.CorpusId. NOT intended for other usage.", + "format": "int32", + "type": "integer" + }, + "signalNames": { + "description": "List of signal updates present in the enclosing partial cdoc. Signal name for a signal is unique name for the signal according to SignalSpec.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CompositeDocPartialUpdateInfoLastFullIndexingInfo": { + "description": "Last full indexing information for the partial CDoc.", + "id": "CompositeDocPartialUpdateInfoLastFullIndexingInfo", + "properties": { + "corpus": { + "description": "The corpus of last full updates.", + "enum": [ + "RAFFIA_WEBSEARCH", + "RAFFIA_FASTPATH_DAILY", + "RAFFIA_FASTPATH_INSTANT" + ], + "enumDescriptions": [ + "Base Raffia corpora", + "Fastpath Raffia corpora", + "" + ], + "type": "string" + }, + "lastFullIndexingTsMicros": { + "description": "Last full update indexing timestamp in microseconds.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "CompositeDocQualitySignals": { + "description": "This field should hold all new quality online signals (after 02/05/10). Quality offline signals, which are loaded by Signal API, should be stored in doc_attachments.", + "id": "CompositeDocQualitySignals", + "properties": { + "lastSignificantUpdate": { + "$ref": "QualityTimebasedLastSignificantUpdate", + "description": "Contains a date used for the \"Date Last Modified\" toolbelt restrict mode. Note: this date is a combined date and is different from the pure shingle-based signal stored in contentage.last_significant_update field." + }, + "oldnessInfo": { + "$ref": "QualityTimebasedOldnessInfo" + }, + "pagetype": { + "$ref": "QualityTimebasedPageType" + } + }, + "type": "object" + }, + "CompositeDocRobotsInfoList": { + "description": "List of robots info parsed for the user-agents other than the default used to crawl this page.", + "id": "CompositeDocRobotsInfoList", + "properties": { + "newsRobotsInfo": { + "$ref": "IndexingConverterRobotsInfo" + } + }, + "type": "object" + }, + "CompressedQualitySignals": { + "description": "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: 40", + "id": "CompressedQualitySignals", + "properties": { + "anchorMismatchDemotion": { + "description": "anchor_mismatch_demotion: converted from QualityBoost.mismatched.boost.", + "format": "uint32", + "type": "integer" + }, + "authorityPromotion": { + "description": "authority promotion: converted from QualityBoost.authority.boost", + "format": "uint32", + "type": "integer" + }, + "babyPandaDemotion": { + "description": "baby_panda_demotion: converted from QualityBoost.rendered.boost.", + "format": "uint32", + "type": "integer" + }, + "babyPandaV2Demotion": { + "description": "New BabyPanda demotion, applied on top of Panda. This is meant to replace |baby_panda_demotion|.", + "format": "uint32", + "type": "integer" + }, + "crapsAbsoluteHostSignals": { + "description": "Impressions, unsquashed, host level, not to be used with compressed ratios. Not to be used in Pattern Data.", + "format": "uint32", + "type": "integer" + }, + "crapsNewHostSignals": { + "format": "uint64", + "type": "string" + }, + "crapsNewPatternSignals": { + "format": "uint64", + "type": "string" + }, + "crapsNewUrlSignals": { + "description": "For craps_[url|pattern]_signals, please avoid accessing these fields directly, even in minor ways like checking has_craps_*. Instead, please use methods from quality/navboost/craps/craps-lossy-compression.h or talk to dice-team.", + "format": "uint64", + "type": "string" + }, + "crapsUnscaledIpPriorBadFraction": { + "format": "uint32", + "type": "integer" + }, + "exactMatchDomainDemotion": { + "description": "Page quality signals converted from fields in proto QualityBoost in quality/q2/proto/quality-boost.proto. To save indexing space, we convert the float values in [0, 1] to integers in range [0, 1023] (use 10 bits). exact_match_domain_demotion: converted from QualityBoost.emd.boost.", + "format": "uint32", + "type": "integer" + }, + "experimentalNsrTeamData": { + "$ref": "QualityNsrExperimentalNsrTeamData", + "description": "This field is *not* propagated to shards, but it's populated at serving time by go/web-signal-joins (see b/207344056). See go/0DayLEs for details. This is only meant to be used during LEs, it should *not* be used for launches." + }, + "experimentalNsrTeamWsjData": { + "description": "This field is *not* propagated to shards, but it's populated at serving time by go/web-signal-joins (see b/207344056). See go/0DayLEs for details. This is only meant to be used during LEs, it should *not* be used for launches.", + "items": { + "$ref": "QualityNsrExperimentalNsrTeamWSJData" + }, + "type": "array" + }, + "experimentalQstarDeltaSignal": { + "description": "This field is *not* propagated to shards. It is meant to be populated at serving time using one of the versions present in the `experimental_nsr_team_wsj_data` field above (using the `ExperimentalNsrTeamDataOverridesParams` opti to populate it; see http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto). The purpose of this field is to be read by an experimental Q* component, in order to quickly run LEs with new delta components. See go/0DayLEs for details.", + "format": "float", + "type": "number" + }, + "experimentalQstarSignal": { + "description": "This field is *not* propagated to shards. It is meant to be populated at serving time using one of the versions present in the `experimental_nsr_team_wsj_data` field above (using the `ExperimentalNsrTeamDataOverridesParams` opti to populate it; see http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto). The purpose of this field is to be read by an experimental Q* component, in order to quickly run LEs with new components. See go/0DayLEs for details.", + "format": "float", + "type": "number" + }, + "experimentalQstarSiteSignal": { + "description": "This field is *not* propagated to shards. It is meant to be populated at serving time using one of the versions present in the `experimental_nsr_team_wsj_data` field above (using the `ExperimentalNsrTeamDataOverridesParams` opti to populate it; see http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto). The purpose of this field is to be read by an experimental Q* component, in order to quickly run LEs with new site components. See go/0DayLEs for details.", + "format": "float", + "type": "number" + }, + "lowQuality": { + "description": "S2V low quality score: converted from quality_nsr.NsrData, applied in Qstar. See NsrUtil::ConvertNsrDataToLowQuality.", + "format": "uint32", + "type": "integer" + }, + "navDemotion": { + "description": "nav_demotion: converted from QualityBoost.nav_demoted.boost.", + "format": "uint32", + "type": "integer" + }, + "nsrConfidence": { + "description": "NSR confidence score: converted from quality_nsr.NsrData.", + "format": "uint32", + "type": "integer" + }, + "nsrOverrideBid": { + "description": "NSR override bid, used in Q* for emergency overrides.", + "format": "float", + "type": "number" + }, + "nsrVersionedData": { + "description": "Versioned NSR score to be used in continuous evaluation of the upcoming NSR version and assess quality impact on various slices.", + "items": { + "$ref": "NSRVersionedItem" + }, + "type": "array" + }, + "pairwiseqScoringData": { + "$ref": "PairwiseQScoringData", + "description": "PairwiseQ data for QTJ. This field is *not* propagated to shards, but is populated at serving time by go/web-signal-joins. See b/175762140" + }, + "pairwiseqVersionedData": { + "description": "Versioned PairwiseQ score to be used in continuous evaluation of the upcoming PairwiseQ versions and assess quality impact on various slices.", + "items": { + "$ref": "PairwiseQVersionedItem" + }, + "type": "array" + }, + "pandaDemotion": { + "description": "This is the encoding of Panda fields in the proto SiteQualityFeatures in quality/q2/proto/site_quality_features.proto. The encoding/decoding is performed using functions from quality_coati::coati_util.", + "format": "uint32", + "type": "integer" + }, + "pqData": { + "description": "Encoded page-level PQ signals.", + "format": "uint32", + "type": "integer" + }, + "pqDataProto": { + "$ref": "QualityNsrPQData", + "description": "Stripped page-level signals, not present in the encoded field 'pq_data'." + }, + "productReviewPDemotePage": { + "format": "uint32", + "type": "integer" + }, + "productReviewPDemoteSite": { + "description": "Product review demotion/promotion confidences. (Times 1000 and floored)", + "format": "uint32", + "type": "integer" + }, + "productReviewPPromotePage": { + "format": "uint32", + "type": "integer" + }, + "productReviewPPromoteSite": { + "format": "uint32", + "type": "integer" + }, + "scamness": { + "description": "Scam model score. Used as one of the web page quality qstar signals. Value range from 0 to 1023.", + "format": "uint32", + "type": "integer" + }, + "serpDemotion": { + "description": "serp demotion: applied in Qstar.", + "format": "uint32", + "type": "integer" + }, + "siteAuthority": { + "description": "site_authority: converted from quality_nsr.SiteAuthority, applied in Qstar.", + "format": "uint32", + "type": "integer" + }, + "topicEmbeddingsVersionedData": { + "description": "Versioned TopicEmbeddings data to be populated later into superroot / used directly in scorers.", + "items": { + "$ref": "QualityAuthorityTopicEmbeddingsVersionedItem" + }, + "type": "array" + }, + "unauthoritativeScore": { + "description": "Unauthoritative score. Used as one of the web page quality qstar signals.", + "format": "uint32", + "type": "integer" + }, + "vlqNsr": { + "description": "NSR for low-quality videos, converted from quality_nsr.NsrData.vlq_nsr.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "ContentAttributions": { + "description": "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 https://qwiki.corp.google.com/display/Q/ContentTrackingContentAttribution.", + "id": "ContentAttributions", + "properties": { + "freshdocsOutgoing": { + "description": "Selected outgoing attributions extracted on FreshDocs.", + "items": { + "$ref": "ContentAttributionsOutgoingAttribution" + }, + "type": "array" + }, + "offlineOutgoing": { + "description": "Selected outgoing attributions extracted via offline MR jobs.", + "items": { + "$ref": "ContentAttributionsOutgoingAttribution" + }, + "type": "array" + }, + "onlineOutgoing": { + "description": "Selected outgoing attributions extracted online on Alexandria.", + "items": { + "$ref": "ContentAttributionsOutgoingAttribution" + }, + "type": "array" + } + }, + "type": "object" + }, + "ContentAttributionsOutgoingAttribution": { + "description": "This is a copy of quality_contra::SelectedAttribution::SelectedInfo. The url is converted to docid and other fields are copied directly.", + "id": "ContentAttributionsOutgoingAttribution", + "properties": { + "bestEvidenceType": { + "enum": [ + "PAGE_LINK_TO", + "SITE_LINK_TO", + "SITE_OTHER_PAGE_LINK_TO", + "ORG_OTHER_SITE_LINK_TO", + "ORG_OTHER_PAGE_LINK_TO", + "SITE_SCORE_BASED", + "LOW_CONFIDENCE_LINK_TO", + "ANCHOR_ATTRIBUTION_TO", + "SITE_NAME_MENTION", + "SITE_NAME_MENTION_KEYWORDED", + "EVIDENCE_TYPE_END" + ], + "enumDescriptions": [ + "Direct link to page in question.", + "Link to the site of the page in question: Example: \"\u003ca href=\"http://cnn.com\u003e\" or \"source: cnn.com\" for the page \"http://cnn.com/news/13\"", + "Link to some *other* page on the site of the page in question: Example: \"\u003ca href=\"http://cnn.com/news/14\u003e\" for the page \"http://cnn.com/news/13\"", + "Direct link to some *site* with the same OrgName. Example: \"\u003ca href=\"http://cnn.co.uk/\u003e\" for the page \"http://cnn.com/news/13\"", + "Link to some page on a site with the same OrgName. Example: \"\u003ca href=\"http://cnn.co.uk/schmoo/14\u003e\" for the page \"http://cnn.com/news/13\"", + "Fake link which is created based on site scores to propagate offline clustering data.", + "Link with low confidence score. Is used for online clustering only.", + "Anchor to page in question.", + "A mention of the site name in the text.", + "A mention of the site name with citation keyword in front of it.", + "" + ], + "type": "string" + }, + "docid": { + "format": "uint64", + "type": "string" + }, + "properties": { + "format": "uint32", + "type": "integer" + }, + "usableForClustering": { + "type": "boolean" + } + }, + "type": "object" + }, + "ContentAwareCropsIndexing": { + "id": "ContentAwareCropsIndexing", + "properties": { + "mustangBytes": { + "description": "Compact representation for Mustang storage. See image/search/utils/packed_crops.h for details on the packing format.", + "format": "byte", + "type": "string" + }, + "mustangBytesVersion": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "CopleyLexicalMetadata": { + "description": "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.", + "id": "CopleyLexicalMetadata", + "properties": { + "canonicalLexicalMid": { + "description": "Mid for an entity that has lexical data (a LexiconEntry). See https://g3doc.corp.google.com/nlp/generation/g3doc/lexical_data.md for for more information about lexical data. This is the canonical mid for this entity (eg. it would be for \"mother\" in EN even if user referred to \"mom\").", + "type": "string" + } + }, + "type": "object" + }, + "CopleyPersonalReference": { + "description": "Represents a reference made by a user that refers to some personal entity.", + "id": "CopleyPersonalReference", + "properties": { + "personalReferenceType": { + "description": "The manner in which the entity was referenced (e.g. \"my hotel\", \"the airport\").", + "enum": [ + "PERSONAL_UNKNOWN_REFERENCE", + "PERSONAL_HOTEL_REFERENCE", + "PERSONAL_HOTEL_BOOKING_AGENT_REFERENCE", + "PERSONAL_RESTAURANT_REFERENCE", + "PERSONAL_RESTAURANT_BOOKING_AGENT_REFERENCE", + "PERSONAL_PARKING_REFERENCE", + "PERSONAL_FLIGHT_REFERENCE", + "PERSONAL_GENERIC_SOCIAL_EVENT_REFERENCE", + "PERSONAL_CONCERT_REFERENCE", + "PERSONAL_SPORTS_REFERENCE", + "PERSONAL_MOVIE_REFERENCE", + "PERSONAL_TOUR_REFERENCE", + "PERSONAL_HOME_REFERENCE", + "PERSONAL_WORK_REFERENCE", + "PERSONAL_MAPS_ALIAS_REFERENCE", + "PERSONAL_CONTACT_REFERENCE", + "PERSONAL_CONTACT_PERSON_REFERENCE", + "PERSONAL_CONTACT_LOCATION_REFERENCE", + "PERSONAL_FAMILY_MEMBER_REFERENCE", + "PERSONAL_CONTACT_BIRTHDAY_REFERENCE", + "PERSONAL_CONTACT_ADDRESS_REFERENCE", + "PERSONAL_RELATIONSHIP_REFERENCE", + "PERSONAL_RELATIONSHIP_PERSON_REFERENCE", + "PERSONAL_RELATIONSHIP_LOCATION_REFERENCE", + "PERSONAL_MEMORABLE_DATE_REFERENCE", + "PERSONAL_MEMORY_ANNIVERSARY_DATE_REFERENCE", + "PERSONAL_MEMORY_PAYDAY_DATE_REFERENCE", + "PERSONAL_MEMORY_WEDDING_DATE_REFERENCE", + "PERSONAL_MEMORY_BIRTHDAY_DATE_REFERENCE", + "PERSONAL_MEMORY_EXAM_DATE_REFERENCE", + "PERSONAL_MEMORY_MATHEXAM_DATE_REFERENCE", + "PERSONAL_MEMORY_OILCHANGE_DATE_REFERENCE", + "PERSONAL_MEMORY_GRADUATION_DATE_REFERENCE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "CopleyPersonalReferenceMetadata": { + "description": "General message used to store metadata about references to personal entities, even if those entities cannot be resolved.", + "id": "CopleyPersonalReferenceMetadata", + "properties": { + "referenceScore": { + "description": "The strength of the personal reference. For example \"my flight\" may receive a high reference_score, whereas \"the airport\" may receive a low score.", + "format": "float", + "type": "number" + }, + "references": { + "description": "A list of all references made. Empty if no personal references exist. Multiple references can be present when multiple references were made in a single query, or the type of reference was ambiguous.", + "items": { + "$ref": "CopleyPersonalReference" + }, + "type": "array" + }, + "subreferenceMetadata": { + "$ref": "CopleySubreferenceMetadata", + "description": "Subreference metadata for all compound references on this span." + } + }, + "type": "object" + }, + "CopleySourceTypeList": { + "id": "CopleySourceTypeList", + "properties": { + "sourceTypeMetadata": { + "items": { + "$ref": "CopleySourceTypeMetadata" + }, + "type": "array" + } + }, + "type": "object" + }, + "CopleySourceTypeMetadata": { + "description": "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", + "id": "CopleySourceTypeMetadata", + "properties": { + "contactAnnotationId": { + "description": "Annotation ID of a contact annotation, e.g. a relationship set via Assistant. This ID is generated by People Write Server. It is used to delete Contact Annotations via People API.", + "type": "string" + }, + "displayableName": { + "type": "string" + }, + "emailIdentifier": { + "description": "Only used if personal_data_provenance == PERSONAL_SOURCE_GMAIL. Used to create a link to the source email in the form: mail.google.com/mail/u/0/?extsrc=sync\u0026client=h\u0026plid={email_identifier}", + "type": "string" + }, + "eventId": { + "$ref": "EventIdMessage", + "description": "Populated for some footprints data sources; uniquely identifies the footprint that generated the personal data that this provenance is attached to." + }, + "localDiscoverySettingsMetadata": { + "$ref": "PersonalizationSettingsApiProtoLocalDiscoveryLocalDiscoverySettingsMetadata" + }, + "personalDataProvenance": { + "enum": [ + "PERSONAL_SOURCE_UNKNOWN", + "PERSONAL_SOURCE_GMAIL", + "PERSONAL_SOURCE_CALENDAR", + "PERSONAL_SOURCE_MAPS_ALIAS", + "PERSONAL_SOURCE_FOCUS", + "PERSONAL_SOURCE_FOCUS_CONSISTENT", + "PERSONAL_SOURCE_FOCUS_TOP_N_CONTACTS", + "PERSONAL_SOURCE_ASSISTANT_CONTACT_AFFINITY", + "PERSONAL_SOURCE_ASSISTANT_MEMORY", + "PERSONAL_SOURCE_PWS", + "PERSONAL_SOURCE_HOUSEHOLD", + "PERSONAL_SOURCE_HULK_PLACES", + "PERSONAL_SOURCE_FOCUS_OWNER", + "PERSONAL_SOURCE_WHITEPAGES", + "PERSONAL_SOURCE_ASSISTANT_DEVICES", + "PERSONAL_SOURCE_TEACH_LEARN", + "PERSONAL_SOURCE_GELLER_ANSWERS", + "PERSONAL_SOURCE_LAMS_SETTINGS", + "PERSONAL_SOURCE_GAIA", + "PERSONAL_SOURCE_XTALK", + "PERSONAL_SOURCE_MOVIE_DIALOG", + "PERSONAL_SOURCE_MEDIA_HABITUAL_CACHE", + "PERSONAL_SOURCE_PERSONAL_TOPICSERVER", + "PERSONAL_SOURCE_PHOTO_LABELS", + "PERSONAL_SOURCE_PEOPLE_API", + "PERSONAL_SOURCE_CONTEXT_API", + "PERSONAL_SOURCE_MUSIC_PREFERRED_PROVIDER", + "PERSONAL_SOURCE_STASH", + "PERSONAL_SOURCE_SMART_HOME_DEVICES", + "PERSONAL_SOURCE_DEVICE_STATES", + "PERSONAL_SOURCE_HANDBAG_PERSONALIZED_WEBREF_ENTITIES", + "PERSONAL_GRAPH_PEOPLE_SIGNAL_POST_PROCESSING", + "PERSONAL_SOURCE_PERSONALIZED_PRONUNCIATIONS", + "PERSONAL_SOURCE_DEVICE_INSTALLED_APPS", + "PERSONAL_SOURCE_CONTACT_AGGREGATED_DATA", + "PERSONAL_SOURCE_DYNAMIC_ENTITY_INDEX", + "PERSONAL_SOURCE_STADIA", + "PERSONAL_SOURCE_COMMUNAL_GROUP", + "PERSONAL_SOURCE_LOCATION_SHARING", + "PERSONAL_SOURCE_MAPS_SEARCH", + "PERSONAL_SOURCE_MEDIA_USER_CONTEXT_INFO", + "PERSONAL_SOURCE_MEDIA_USER_ENTITIES", + "PERSONAL_SOURCE_DEVICE_SIGNED_IN_ACCOUNTS", + "PERSONAL_SOURCE_ASSISTANT_USER_PROFILES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "A subset of the user's Focus and device contacts from Starlight. As of 11/2020, this subset includes: starred contacts, relationships, and contacts with attributes (birthday, address, etc.) set via Assistant. Only requests Starlight's base model.", + "Same as PERSONAL_SOURCE_FOCUS, but additionally includes photos labels (face clusters, albums, locations) from Starlight. Requires Starlight's fresh model (go/starlight-freshness) for more consistent results. Use with caution: May fail to return any data if the fresh model is not loaded in time.", + "User's top n(~200) contacts returned by Starlight. Starlight uses various signals and sources to prepare a list of top n contacts for a given user.", + "User's contact affinities read from Footprint's assistant_contact_affinity corpus.", + "", + "", + "", + "", + "", + "", + "Reads from the ASSISTANT_DEVICE_SETTINGS", + "", + "", + "", + "", + "", + "", + "", + "", + "The user's photo labels from Starlight.", + "The current user's data from the people API. This includes the user's profile image.", + "", + "", + "", + "The user's SmartHome devices from AutomationService. This includes user's devices, rooms and structures.", + "The user's devices states from DeviceStatesService. For example, if the device is playing music and the name of the music if it is.", + "Personalized WebRef entity mids synced down to device (go/handbag).", + "For triples produced by postprocessing signals for people entities.", + "", + "The names of the user's installed apps on their Android phone.", + "", + "For triples directly served from Footprints Corpus DYNAMIC_ENTITY_INDEX. These are often smart home devices.", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "personalDataType": { + "enum": [ + "PERSONAL_UNKNOWN", + "PERSONAL_HOTEL", + "PERSONAL_RESTAURANT", + "PERSONAL_PARKING", + "PERSONAL_FLIGHT", + "PERSONAL_SOCIAL_EVENT", + "PERSONAL_MAPS_ALIAS", + "PERSONAL_CONTACT", + "PERSONAL_PROFILE", + "PERSONAL_BILL", + "PERSONAL_CAR_RENTAL", + "PERSONAL_GENERIC_EVENT", + "PERSONAL_TRAIN", + "PERSONAL_BUS", + "PERSONAL_TAXI", + "PERSONAL_FERRY", + "PERSONAL_PHONE_NUMBER", + "PERSONAL_DEVICE", + "PERSONAL_PREFERENCE", + "PERSONAL_DIETARY_RESTRICTION", + "PERSONAL_MEDIA_HABITUAL_CACHE", + "PERSONAL_NEWS_PREFERENCE", + "PERSONAL_FAVORITE", + "PERSONAL_GAMER_CONTACT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "provenanceCategory": { + "items": { + "enum": [ + "PROVENANCE_CATEGORY_UNKNOWN", + "CORE_APPS_DATA" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "sensitivity": { + "$ref": "KnowledgeAnswersSensitivitySensitivity", + "description": "Sensitivity applying to this copley annotation." + } + }, + "type": "object" + }, + "CopleySubreferenceMetadata": { + "description": "Represents the most compound resolved entities and most nested unresolved references for a span. Useful for punting.", + "id": "CopleySubreferenceMetadata", + "properties": { + "mostCompoundResolvedEntities": { + "description": "Resolved entities are sorted from highest resolution score to lowest.", + "items": { + "$ref": "CopleySubreferenceResolution" + }, + "type": "array" + }, + "mostNestedUnresolvedReference": { + "$ref": "CopleySubreferenceReference", + "description": "This is a merged representation of the compound reference having the most_compound_resolved_entities as an argument." + } + }, + "type": "object" + }, + "CopleySubreferenceReference": { + "description": "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\".", + "id": "CopleySubreferenceReference", + "properties": { + "personalReferenceTypes": { + "description": "Type of reference. There may be multiple for a single reference (e.g. relationship and contact).", + "items": { + "enum": [ + "PERSONAL_UNKNOWN_REFERENCE", + "PERSONAL_HOTEL_REFERENCE", + "PERSONAL_HOTEL_BOOKING_AGENT_REFERENCE", + "PERSONAL_RESTAURANT_REFERENCE", + "PERSONAL_RESTAURANT_BOOKING_AGENT_REFERENCE", + "PERSONAL_PARKING_REFERENCE", + "PERSONAL_FLIGHT_REFERENCE", + "PERSONAL_GENERIC_SOCIAL_EVENT_REFERENCE", + "PERSONAL_CONCERT_REFERENCE", + "PERSONAL_SPORTS_REFERENCE", + "PERSONAL_MOVIE_REFERENCE", + "PERSONAL_TOUR_REFERENCE", + "PERSONAL_HOME_REFERENCE", + "PERSONAL_WORK_REFERENCE", + "PERSONAL_MAPS_ALIAS_REFERENCE", + "PERSONAL_CONTACT_REFERENCE", + "PERSONAL_CONTACT_PERSON_REFERENCE", + "PERSONAL_CONTACT_LOCATION_REFERENCE", + "PERSONAL_FAMILY_MEMBER_REFERENCE", + "PERSONAL_CONTACT_BIRTHDAY_REFERENCE", + "PERSONAL_CONTACT_ADDRESS_REFERENCE", + "PERSONAL_RELATIONSHIP_REFERENCE", + "PERSONAL_RELATIONSHIP_PERSON_REFERENCE", + "PERSONAL_RELATIONSHIP_LOCATION_REFERENCE", + "PERSONAL_MEMORABLE_DATE_REFERENCE", + "PERSONAL_MEMORY_ANNIVERSARY_DATE_REFERENCE", + "PERSONAL_MEMORY_PAYDAY_DATE_REFERENCE", + "PERSONAL_MEMORY_WEDDING_DATE_REFERENCE", + "PERSONAL_MEMORY_BIRTHDAY_DATE_REFERENCE", + "PERSONAL_MEMORY_EXAM_DATE_REFERENCE", + "PERSONAL_MEMORY_MATHEXAM_DATE_REFERENCE", + "PERSONAL_MEMORY_OILCHANGE_DATE_REFERENCE", + "PERSONAL_MEMORY_GRADUATION_DATE_REFERENCE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "referenceScore": { + "description": "Highest reference score for any references merged in this span.", + "format": "float", + "type": "number" + }, + "relationshipLexicalInfo": { + "$ref": "CopleyLexicalMetadata", + "description": "Only set for unresolved relationship references and can be used to get the canonical word for the relationship (e.g. \"mother\") in TTS." + } + }, + "type": "object" + }, + "CopleySubreferenceResolution": { + "description": "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\".", + "id": "CopleySubreferenceResolution", + "properties": { + "mid": { + "description": "Can be used with PKG Service for looking up metadata about this entity at fulfillment/GenX time.", + "type": "string" + }, + "name": { + "description": "Name of the entity represented by this resolution.", + "type": "string" + }, + "resolutionScore": { + "description": "A resolution score of 0 indicates that it did not resolve to a real entity.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "CorpusSelectionInfo": { + "id": "CorpusSelectionInfo", + "properties": { + "corpus": { + "enum": [ + "UNKNOWN", + "LENS" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "corpusScore": { + "description": "Corpus specific score for an image", + "format": "float", + "type": "number" + }, + "isSelectedForIndexing": { + "description": "Whether an image was selected for indexing.", + "type": "boolean" + }, + "referrerDocid": { + "description": "Set of referrers indexed with the image.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "referrerUrls": { + "description": "Set of referrer urls indexed with the image.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "CountryClickDistribution": { + "id": "CountryClickDistribution", + "properties": { + "confidence": { + "description": "To store confidence in the distribution in cases when total is not set.", + "format": "double", + "type": "number" + }, + "item": { + "items": { + "$ref": "CountryClickDistributionItem" + }, + "type": "array" + }, + "total": { + "description": "To store total clicks on this page/domain.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "CountryClickDistributionItem": { + "id": "CountryClickDistributionItem", + "properties": { + "doubleValue": { + "format": "double", + "type": "number" + }, + "name": { + "type": "string" + }, + "value": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "CountryCountryAttachment": { + "description": "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", + "id": "CountryCountryAttachment", + "properties": { + "clickDistribution": { + "$ref": "CountryClickDistribution", + "description": "Store weighted click distribution for page level country-id classification." + }, + "countryidFromUgc": { + "description": "Is true if the country attachment was computed through the UGC pipeline.", + "type": "boolean" + }, + "debug": { + "description": "A non critical field to store debug info for a country attachment. Used in experiments and for debugging.", + "type": "string" + }, + "debugSourceUrl": { + "description": "Set to the signal source URLs when merging country signals in Alexandria during sitemoves. Essentially if sites A and B move to C, and we merge A and B's signal to C, in the countryattachment signal C will have URL A and B as source_url. Only used for debugging and it doesn't show up in docjoins.", + "items": { + "type": "string" + }, + "type": "array" + }, + "documentLocationSource": { + "description": "Specifies the origin of `geo_locations`. Right now, it can either come from deprecated Docloc system or the new Brainloc system when Docloc doesn't have sufficient evidence.", + "enum": [ + "UNSPECIFIED", + "DOCLOC", + "BRAINLOC", + "LOGLOC" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "existNextLevel": { + "type": "boolean" + }, + "fromLanguageFallback": { + "description": "Booleans to keep track of where the country-id of the page came from. These are used for debugging and/or unittests, and cleared in production.", + "type": "boolean" + }, + "fromRestricts": { + "type": "boolean" + }, + "fromSgDomains": { + "type": "boolean" + }, + "fromTld": { + "type": "boolean" + }, + "fromUgc": { + "type": "boolean" + }, + "fromUrlPattern": { + "type": "boolean" + }, + "fromWmx": { + "type": "boolean" + }, + "geoLocations": { + "$ref": "CountryGeoLocations", + "description": "New MetroID: Now called GeoLocations since the locations could be sublocalities, cities or states. GeoLocations are always more fine grained than country. TODO (jayeshv): Once new MetroID/GeoLocations is launched everywhere, deleted old MetroID related fields." + }, + "global": { + "type": "boolean" + }, + "isValidForCountryRestrict": { + "description": "Set to true if the local_countries field can be used for country restricts as well.", + "type": "boolean" + }, + "localCountries": { + "description": "two-letter(lower-case) countrycode, e.g. us countries that is local to", + "items": { + "type": "string" + }, + "type": "array" + }, + "localCountryCodes": { + "description": "Fields that actually store the country id in docjoins. The format of this data is defined in //i18n/identifiers/stableinternalregionconverter.cc. Converter defined there can be used to convert it to RegionCode format.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "metroIdList": { + "description": "Metro locations: list of NavBoost feature V2 associated with a doc, along with the enclosing province. Metro locations with new tags.", + "items": { + "$ref": "CountryMetroNBFeature" + }, + "type": "array" + }, + "metroLocationId": { + "description": "Metro level data. metro_location_id stores geotokens for metro restricts.", + "items": { + "type": "string" + }, + "type": "array" + }, + "metroNavboost": { + "description": "Metro navboost: list of (NavBoost feature V2, navboost float) pairs.", + "items": { + "$ref": "CountryMetroNBFeature" + }, + "type": "array" + }, + "provinceGeotokenList": { + "items": { + "$ref": "CountryProvinceGeotoken" + }, + "type": "array" + }, + "relatedCountries": { + "description": "two-letter(lower-case) countrycode, e.g. us countries that is related to, but not local to", + "items": { + "type": "string" + }, + "type": "array" + }, + "relatedCountryCodes": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "restrictCountries": { + "description": "List of two-letter(lower-case) countrycodes(e.g. us) valid for restricts. Typically cloned out of local_countries if is_valid_for_country_restrict is set to true.", + "items": { + "type": "string" + }, + "type": "array" + }, + "salientCountries": { + "description": "[Experimental]: Top salient countries for a doc. If a country can not be found on this field it can be considered that this doc is not relevant to it.", + "items": { + "$ref": "CountrySalientCountry" + }, + "type": "array" + }, + "salientCountrySet": { + "$ref": "QualitySalientCountriesSalientCountrySet" + }, + "sitename": { + "description": "Domain name of keys in filtering metro reducer class, used only by the intermediate mapreduces to produce filtered data.", + "type": "string" + }, + "superGlobal": { + "description": "Super global pages get lesser demotion than global pages. A document can only be either global or super_global but not both.", + "type": "boolean" + }, + "urlPatternBasedCountry": { + "format": "int32", + "type": "integer" + }, + "urlPatternBasedLanguage": { + "description": "Language and country extracted using the URL pattern map.", + "format": "int32", + "type": "integer" + }, + "userVisibleCountryFromLogs": { + "description": "This is used to store the visible country id computed from logs data", + "type": "string" + }, + "userVisibleLocalCountry": { + "description": "This is the country id we show to users on the result page. This is kept different from country demotion country id because we dont want to expose our backoff and url based detection algorithm - also we want to be ultra conservative in showing this.", + "format": "int32", + "type": "integer" + }, + "weightAboveIdealForLocalness": { + "description": "If result is global, store weight above ideal, as a confidence signal. Used in query localness, cleared in production CountryAttachment.", + "format": "double", + "type": "number" + }, + "wmxCountry": { + "description": "Country specified for a web-site through webmaster console.", + "type": "string" + } + }, + "type": "object" + }, + "CountryGeoLocation": { + "description": "Stores one location and all meta-data associated with that location.", + "id": "CountryGeoLocation", + "properties": { + "clickRadius50Percent": { + "description": "The radius (in miles) around the assigned location that the document gets 50% of its clicks.", + "format": "uint32", + "type": "integer" + }, + "confidence": { + "description": "Confidence on the location. Ranges in [0.0, 1.0]. Cleared during index creation.", + "format": "float", + "type": "number" + }, + "confidencePercent": { + "description": "Confidence mapped to [0, 100]. Converted to integer for efficient storage. Populated during index creation.", + "format": "uint32", + "type": "integer" + }, + "internalId": { + "description": "Used for compressed docloc data. In compressed data, instead of location_info, only an integer ID for that LocationInfo is stored. A separate lookup table is used to get full LocationInfo from the internal ID.", + "format": "int32", + "type": "integer" + }, + "locationInfo": { + "$ref": "CountryLocationInfo" + }, + "propagatedFromASubpage": { + "description": "True if this location is assigned to one of the subpages, and not to the page itself. If the total number of locations assigned to all the subpages of a page is small (usually up to 5), then that page also gets assigned those locations, and this flag is set for those locations.", + "type": "boolean" + } + }, + "type": "object" + }, + "CountryGeoLocations": { + "description": "List of locations assigned to a document.", + "id": "CountryGeoLocations", + "properties": { + "geoLocation": { + "items": { + "$ref": "CountryGeoLocation" + }, + "type": "array" + }, + "isNonLocationSpecific": { + "description": "This will be set to true for documents which receive several clicks but are not assigned any location because the click distribution is flat. Typical examples are global sites like facebook.com, chains like walmart.com, informational sites like wikipedia.org etc. This flag is not propagated to deeper pages since this signal is meant to indicate that a website or a part of website is conclusively non-local, so propagating this information to deeper pages does not make sense. If this flag is set, then the only possible geo_location will be the ones which are propagated_from_a_subpage.", + "type": "boolean" + }, + "propagationDepthFromParent": { + "description": "Depth of the URL from it's nearest parent in GeoLocation data. Webpages inherhit locations from their parent pages. For example, if foo.com/a is assigned location L1, and foo.com/a/b is not assigned any location, then http://www.foo.com/a/b inherits location L1 from it's nearest parent foo.com/a in GeoLocation data. This attribute is the distance from the nearest parent which is present in GeoLocation data. In this particular case, it will be 1.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "CountryLocationInfo": { + "description": "This represents one location.", + "id": "CountryLocationInfo", + "properties": { + "center": { + "$ref": "GeostorePointProto", + "description": "The latitude and longitude of the conceptual center of the location. For cities, this would be the center of the downtown, or maybe the location of city hall. For states and countries it might be the capital city. But there are no guarantees and this may be any random point inside the location." + }, + "city": { + "type": "string" + }, + "country": { + "description": "Human readable name hierarchy. Only the relevant fields will be present. For example for city GeoLocations, sub_locality field will not be present. Cleared during index creation.", + "type": "string" + }, + "county": { + "type": "string" + }, + "enclosingStateFeatureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "Oyster feature ID of the enclosing state. Cleared during index creation." + }, + "featureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "Oyster feature ID of the location. Cleared during index creation." + }, + "state": { + "type": "string" + }, + "stateIdFprint": { + "description": "32 bit fingerprint of the feature id of the state of this location. For cities and sub-localities it will be the enclosing state. For state locations, it will be fingerprint of the feture-id of the location itself. Populated during index creation.", + "format": "uint32", + "type": "integer" + }, + "subLocality": { + "type": "string" + }, + "type": { + "description": "Type of the location (sub-locality, city, state etc).", + "enum": [ + "TYPE_ANY", + "TYPE_TRANSPORTATION", + "TYPE_ROUTE", + "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE", + "TYPE_HIGHWAY", + "TYPE_HIGHWAY_1", + "TYPE_HIGHWAY_2", + "TYPE_HIGHWAY_3", + "TYPE_HIGHWAY_4", + "TYPE_HIGHWAY_5", + "TYPE_HIGHWAY_6", + "TYPE_HIGHWAY_7", + "TYPE_HIGHWAY_8", + "TYPE_HIGHWAY_9", + "TYPE_BICYCLE_ROUTE", + "TYPE_TRAIL", + "TYPE_SEGMENT", + "TYPE_ROAD", + "TYPE_RAILWAY", + "TYPE_STANDARD_TRACK", + "TYPE_JR_TRACK", + "TYPE_NARROW_TRACK", + "TYPE_MONORAIL_TRACK", + "TYPE_SUBWAY_TRACK", + "TYPE_LIGHT_RAIL_TRACK", + "TYPE_BROAD_TRACK", + "TYPE_HIGH_SPEED_RAIL", + "TYPE_TROLLEY_TRACK", + "TYPE_FERRY", + "TYPE_FERRY_BOAT", + "TYPE_FERRY_TRAIN", + "TYPE_VIRTUAL_SEGMENT", + "TYPE_INTERSECTION", + "TYPE_TRANSIT", + "TYPE_TRANSIT_STATION", + "TYPE_BUS_STATION", + "TYPE_TRAMWAY_STATION", + "TYPE_TRAIN_STATION", + "TYPE_SUBWAY_STATION", + "TYPE_FERRY_TERMINAL", + "TYPE_AIRPORT", + "TYPE_AIRPORT_CIVIL", + "TYPE_AIRPORT_MILITARY", + "TYPE_AIRPORT_MIXED", + "TYPE_HELIPORT", + "TYPE_SEAPLANE_BASE", + "TYPE_AIRSTRIP", + "TYPE_CABLE_CAR_STATION", + "TYPE_GONDOLA_LIFT_STATION", + "TYPE_FUNICULAR_STATION", + "TYPE_SPECIAL_STATION", + "TYPE_HORSE_CARRIAGE_STATION", + "TYPE_MONORAIL_STATION", + "TYPE_SEAPORT", + "TYPE_TRANSIT_STOP", + "TYPE_TRANSIT_TRIP", + "TYPE_TRANSIT_DEPARTURE", + "TYPE_TRANSIT_LEG", + "TYPE_TRANSIT_LINE", + "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE", + "TYPE_TRANSIT_TRANSFER", + "TYPE_SEGMENT_PATH", + "TYPE_ROAD_SIGN", + "TYPE_INTERSECTION_GROUP", + "TYPE_PATHWAY", + "TYPE_RESTRICTION_GROUP", + "TYPE_TOLL_CLUSTER", + "TYPE_POLITICAL", + "TYPE_COUNTRY", + "TYPE_ADMINISTRATIVE_AREA", + "TYPE_ADMINISTRATIVE_AREA1", + "TYPE_US_STATE", + "TYPE_GB_COUNTRY", + "TYPE_JP_TODOUFUKEN", + "TYPE_ADMINISTRATIVE_AREA2", + "TYPE_GB_FORMER_POSTAL_COUNTY", + "TYPE_GB_TRADITIONAL_COUNTY", + "TYPE_ADMINISTRATIVE_AREA3", + "TYPE_ADMINISTRATIVE_AREA4", + "TYPE_ADMINISTRATIVE_AREA5", + "TYPE_ADMINISTRATIVE_AREA6", + "TYPE_ADMINISTRATIVE_AREA7", + "TYPE_ADMINISTRATIVE_AREA8", + "TYPE_ADMINISTRATIVE_AREA9", + "TYPE_COLLOQUIAL_AREA", + "TYPE_RESERVATION", + "TYPE_LOCALITY", + "TYPE_GB_POST_TOWN", + "TYPE_JP_GUN", + "TYPE_JP_SHIKUCHOUSON", + "TYPE_JP_SUB_SHIKUCHOUSON", + "TYPE_COLLOQUIAL_CITY", + "TYPE_SUBLOCALITY", + "TYPE_US_BOROUGH", + "TYPE_GB_DEPENDENT_LOCALITY", + "TYPE_JP_OOAZA", + "TYPE_JP_KOAZA", + "TYPE_JP_GAIKU", + "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY", + "TYPE_JP_CHIBAN", + "TYPE_JP_EDABAN", + "TYPE_SUBLOCALITY1", + "TYPE_SUBLOCALITY2", + "TYPE_SUBLOCALITY3", + "TYPE_SUBLOCALITY4", + "TYPE_SUBLOCALITY5", + "TYPE_NEIGHBORHOOD", + "TYPE_CONSTITUENCY", + "TYPE_DESIGNATED_MARKET_AREA", + "TYPE_SCHOOL_DISTRICT", + "TYPE_LAND_PARCEL", + "TYPE_DISPUTED_AREA", + "TYPE_POLICE_JURISDICTION", + "TYPE_STATISTICAL_AREA", + "TYPE_CONSTITUENCY_FUTURE", + "TYPE_PARK", + "TYPE_GOLF_COURSE", + "TYPE_LOCAL_PARK", + "TYPE_NATIONAL_PARK", + "TYPE_US_NATIONAL_PARK", + "TYPE_US_NATIONAL_MONUMENT", + "TYPE_NATIONAL_FOREST", + "TYPE_PROVINCIAL_PARK", + "TYPE_PROVINCIAL_FOREST", + "TYPE_CAMPGROUNDS", + "TYPE_HIKING_AREA", + "TYPE_BUSINESS", + "TYPE_GOVERNMENT", + "TYPE_BORDER_CROSSING", + "TYPE_CITY_HALL", + "TYPE_COURTHOUSE", + "TYPE_EMBASSY", + "TYPE_LIBRARY", + "TYPE_SCHOOL", + "TYPE_UNIVERSITY", + "TYPE_EMERGENCY", + "TYPE_HOSPITAL", + "TYPE_PHARMACY", + "TYPE_POLICE", + "TYPE_FIRE", + "TYPE_DOCTOR", + "TYPE_DENTIST", + "TYPE_VETERINARIAN", + "TYPE_TRAVEL_SERVICE", + "TYPE_LODGING", + "TYPE_RESTAURANT", + "TYPE_GAS_STATION", + "TYPE_PARKING", + "TYPE_POST_OFFICE", + "TYPE_REST_AREA", + "TYPE_CASH_MACHINE", + "TYPE_CAR_RENTAL", + "TYPE_CAR_REPAIR", + "TYPE_SHOPPING", + "TYPE_GROCERY", + "TYPE_TOURIST_DESTINATION", + "TYPE_ECO_TOURIST_DESTINATION", + "TYPE_BIRD_WATCHING", + "TYPE_FISHING", + "TYPE_HUNTING", + "TYPE_NATURE_RESERVE", + "TYPE_TEMPLE", + "TYPE_CHURCH", + "TYPE_GURUDWARA", + "TYPE_HINDU_TEMPLE", + "TYPE_MOSQUE", + "TYPE_SYNAGOGUE", + "TYPE_STADIUM", + "TYPE_BAR", + "TYPE_MOVIE_RENTAL", + "TYPE_COFFEE", + "TYPE_GOLF", + "TYPE_BANK", + "TYPE_DOODLE", + "TYPE_GROUNDS", + "TYPE_AIRPORT_GROUNDS", + "TYPE_BUILDING_GROUNDS", + "TYPE_CEMETERY", + "TYPE_HOSPITAL_GROUNDS", + "TYPE_INDUSTRIAL", + "TYPE_MILITARY", + "TYPE_SHOPPING_CENTER", + "TYPE_SPORTS_COMPLEX", + "TYPE_UNIVERSITY_GROUNDS", + "TYPE_DEPRECATED_TARMAC", + "TYPE_ENCLOSED_TRAFFIC_AREA", + "TYPE_PARKING_LOT", + "TYPE_PARKING_GARAGE", + "TYPE_OFF_ROAD_AREA", + "TYPE_BORDER", + "TYPE_BUILDING", + "TYPE_GEOCODED_ADDRESS", + "TYPE_NATURAL_FEATURE", + "TYPE_TERRAIN", + "TYPE_SAND", + "TYPE_BEACH", + "TYPE_DUNE", + "TYPE_ROCKY", + "TYPE_ICE", + "TYPE_GLACIER", + "TYPE_BUILT_UP_AREA", + "TYPE_VEGETATION", + "TYPE_SHRUBBERY", + "TYPE_WOODS", + "TYPE_AGRICULTURAL", + "TYPE_GRASSLAND", + "TYPE_TUNDRA", + "TYPE_DESERT", + "TYPE_SALT_FLAT", + "TYPE_WATER", + "TYPE_OCEAN", + "TYPE_BAY", + "TYPE_BIGHT", + "TYPE_LAGOON", + "TYPE_SEA", + "TYPE_STRAIT", + "TYPE_INLET", + "TYPE_FJORD", + "TYPE_LAKE", + "TYPE_SEASONAL_LAKE", + "TYPE_RESERVOIR", + "TYPE_POND", + "TYPE_RIVER", + "TYPE_RAPIDS", + "TYPE_DISTRIBUTARY", + "TYPE_CONFLUENCE", + "TYPE_WATERFALL", + "TYPE_SPRING", + "TYPE_GEYSER", + "TYPE_HOT_SPRING", + "TYPE_SEASONAL_RIVER", + "TYPE_WADI", + "TYPE_ESTUARY", + "TYPE_WETLAND", + "TYPE_WATER_NAVIGATION", + "TYPE_FORD", + "TYPE_CANAL", + "TYPE_HARBOR", + "TYPE_CHANNEL", + "TYPE_REEF", + "TYPE_REEF_FLAT", + "TYPE_REEF_GROWTH", + "TYPE_REEF_EXTENT", + "TYPE_REEF_ROCK_SUBMERGED", + "TYPE_IRRIGATION", + "TYPE_DAM", + "TYPE_DRINKING_WATER", + "TYPE_CURRENT", + "TYPE_WATERING_HOLE", + "TYPE_TECTONIC", + "TYPE_WATERING_HOLE_DEPRECATED", + "TYPE_VOLCANO", + "TYPE_LAVA_FIELD", + "TYPE_FISSURE", + "TYPE_FAULT", + "TYPE_LAND_MASS", + "TYPE_CONTINENT", + "TYPE_ISLAND", + "TYPE_ATOLL", + "TYPE_OCEAN_ROCK_EXPOSED", + "TYPE_CAY", + "TYPE_PENINSULA", + "TYPE_ISTHMUS", + "TYPE_ELEVATED", + "TYPE_PEAK", + "TYPE_NUNATAK", + "TYPE_SPUR", + "TYPE_PASS", + "TYPE_PLATEAU", + "TYPE_RIDGE", + "TYPE_RAVINE", + "TYPE_CRATER", + "TYPE_KARST", + "TYPE_CLIFF", + "TYPE_VISTA", + "TYPE_DIGITAL_ELEVATION_MODEL", + "TYPE_UPLAND", + "TYPE_TERRACE", + "TYPE_SLOPE", + "TYPE_CONTOUR_LINE", + "TYPE_PAN", + "TYPE_UNSTABLE_HILLSIDE", + "TYPE_MOUNTAIN_RANGE", + "TYPE_UNDERSEA", + "TYPE_SUBMARINE_SEAMOUNT", + "TYPE_SUBMARINE_RIDGE", + "TYPE_SUBMARINE_GAP", + "TYPE_SUBMARINE_PLATEAU", + "TYPE_SUBMARINE_DEEP", + "TYPE_SUBMARINE_VALLEY", + "TYPE_SUBMARINE_BASIN", + "TYPE_SUBMARINE_SLOPE", + "TYPE_SUBMARINE_CLIFF", + "TYPE_SUBMARINE_PLAIN", + "TYPE_SUBMARINE_FRACTURE_ZONE", + "TYPE_CAVE", + "TYPE_ROCK", + "TYPE_ARCHIPELAGO", + "TYPE_POSTAL", + "TYPE_POSTAL_CODE", + "TYPE_POSTAL_CODE_PREFIX", + "TYPE_PREMISE", + "TYPE_SUB_PREMISE", + "TYPE_SUITE", + "TYPE_POST_TOWN", + "TYPE_POSTAL_ROUND", + "TYPE_META_FEATURE", + "TYPE_DATA_SOURCE", + "TYPE_LOCALE", + "TYPE_TIMEZONE", + "TYPE_BUSINESS_CHAIN", + "TYPE_PHONE_NUMBER_PREFIX", + "TYPE_PHONE_NUMBER_AREA_CODE", + "TYPE_BUSINESS_CORRIDOR", + "TYPE_ADDRESS_TEMPLATE", + "TYPE_TRANSIT_AGENCY", + "TYPE_FUTURE_GEOMETRY", + "TYPE_EVENT", + "TYPE_EARTHQUAKE", + "TYPE_HURRICANE", + "TYPE_WEATHER_CONDITION", + "TYPE_TRANSIENT", + "TYPE_ENTRANCE", + "TYPE_CARTOGRAPHIC", + "TYPE_HIGH_TENSION", + "TYPE_SKI_TRAIL", + "TYPE_SKI_LIFT", + "TYPE_SKI_BOUNDARY", + "TYPE_WATERSHED_BOUNDARY", + "TYPE_TARMAC", + "TYPE_WALL", + "TYPE_PICNIC_AREA", + "TYPE_PLAY_GROUND", + "TYPE_TRAIL_HEAD", + "TYPE_GOLF_TEEING_GROUND", + "TYPE_GOLF_PUTTING_GREEN", + "TYPE_GOLF_ROUGH", + "TYPE_GOLF_SAND_BUNKER", + "TYPE_GOLF_FAIRWAY", + "TYPE_GOLF_HOLE", + "TYPE_DEPRECATED_GOLF_SHOP", + "TYPE_CAMPING_SITE", + "TYPE_DESIGNATED_BARBECUE_PIT", + "TYPE_DESIGNATED_COOKING_AREA", + "TYPE_CAMPFIRE_PIT", + "TYPE_WATER_FOUNTAIN", + "TYPE_LITTER_RECEPTACLE", + "TYPE_LOCKER_AREA", + "TYPE_ANIMAL_ENCLOSURE", + "TYPE_CARTOGRAPHIC_LINE", + "TYPE_ESTABLISHMENT", + "TYPE_ESTABLISHMENT_GROUNDS", + "TYPE_ESTABLISHMENT_BUILDING", + "TYPE_ESTABLISHMENT_POI", + "TYPE_ESTABLISHMENT_SERVICE", + "TYPE_CELESTIAL", + "TYPE_ROAD_MONITOR", + "TYPE_PUBLIC_SPACES_AND_MONUMENTS", + "TYPE_STATUE", + "TYPE_TOWN_SQUARE", + "TYPE_LEVEL", + "TYPE_COMPOUND", + "TYPE_COMPOUND_GROUNDS", + "TYPE_COMPOUND_BUILDING", + "TYPE_COMPOUND_SECTION", + "TYPE_TERMINAL_POINT", + "TYPE_REGULATED_AREA", + "TYPE_LOGICAL_BORDER", + "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES", + "TYPE_UNKNOWN" + ], + "enumDescriptions": [ + "ABSTRACT", + "ABSTRACT", + "A route is any section of road (or rails, etc.) that has a name. This includes city streets as well as highways. Road segments can belong to multiple routes (e.g. El Camino, CA-82).", + "DEPRECATED", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "A designated bicycle route, whose segments may consist of any combination of bicycle paths, bicycle lanes, or city streets.", + "A designated trail, which may consist of paved walkways, dirt paths, fire road, streets or highways, etc.", + "ABSTRACT", + "", + "Railroads use several different incompatible track types.", + "", + "", + "", + "", + "", + "", + "", + "", + "Tracks for streetcars, cable-cars, etc. Ferries are services that are part of the road network but are not roads. They typically involve fares and scheduled departure times.", + "ABSTRACT", + "The vast majority of ferries are ferry boats.", + "Also called a \"car transport\", a ferry train is a rail service that carries passengers and their vehicles across undrivable terrain. The Channel Tunnel (\"Chunnel\") is the most famous example, but they are also common in the Alps where they connect neighboring valleys otherwise separated by impassable mountains.", + "Any plausible 1-dimensional path through a 2+ dimensional space, for the purposes of making graph-search-based routing possible. Such segments can be used to model paths through parking lots, squares, floors of buildings and other areas.", + "An intersection consists of a collection of segments that terminate at the same location. This is topological definition: it may not match what a typical user would think of as an \"intersection\". See TYPE_INTERSECTION_GROUP, below, for more information. Each segment terminating at an intersection has an \"endpoint type\" that specifies how that segment is terminated: stop sign, yield sign, three-way light, etc.", + "ABSTRACT", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "A transit line is a collection of transit legs, associated with some invariant properties of the trips that run over the legs. See also transitline.proto", + "TYPE_TRANSIT_AGENCY was moved to 0xC91. This deprecated enum value still exists for debugging purposes only.", + "DEPRECATED", + "ABSTRACT", + "Road sign features have names, point geometry, etc. They also have segment_path data (see below) which lists the segments that refer to the sign. See segment.proto for the reference from the segment to the road sign.", + "Our TYPE_INTERSECTION feature, above, models 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. This TYPE_INTERSECTION_GROUP is used to model the user's concept of a complex intersection.", + "RESERVED", + "A restriction group describes a set of segment restrictions that belong together and have a name or an associated event. See also restriction_group.proto", + "A toll cluster is either a single point on a segment (represented as a point at the end of the segment that has ENDPOINT_TOLL_BOOTH set) or a group of points on various road segments in MapFacts that represents one or more lanes passing through a toll fixture that all go to the same routing destination. Each toll cluster should have at most a single price per payment method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has different prices for multiple routing destinations, drivers need to be in the correct lane before passing through the toll fixture and hence such a fixture is represented by multiple toll clusters. A toll cluster does not necessarily represent a real-world entity, e.g. a particular plaza/structure as perceived by humans. This is because a plaza can be represented by more than one toll cluster. We require toll clusters to have names, but they might be non-unique. For example, a plaza might be represented by multiple toll clusters that may have the same plaza name. For further details, please see go/toll-cluster-schema.", + "ABSTRACT", + "", + "ABSTRACT", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "e.g. Silicon Valley", + "A reservation is a region collectively held or governed by indigenous people and officially recognized by the country’s government at the federal or state level. A reservation may be fully contained within an administrative feature or partially contained within two or more. These regions are referred to by different categorical names depending on country and even by state, including but not limited to: “Indian Reservations”, “Indian Reserves”, “Land Claim Settlement Lands”, “Indian Lands”, “Treaty Lands”, “Indigenous Territories”, etc. A reservation is not a historic indigenous territory boundary or a region which has applied for land rights but has not yet received official recognition.", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "An entity widely considered to be a city, that may itself be made up of smaller political entities, some of which are cities/towns/villages themselves. For example, the colloquial view of Sydney, Australia actually comprises many smaller cities, but is regarded as a city itself. This type is not suitable for modeling official metro-/micropolitan or other statistical areas.", + "ABSTRACT", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "Designated Market Areas (or DMAs) are used by marketing and ratings companies (such as the Nielsen Media Research company) to describe geographical regions (such as the greater New York metropolitan area) that are covered by a set of television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In the United States, DMAs should have a DMA numeric ID name, tagged with the FLAG_DESIGNATED_MARKET_AREA_ID flag.", + "", + "", + "Eventually we'll have more data for disputed areas (e.g., who makes claims on the area, who has de facto control, etc.). For the moment, we just define a type so we can simply mark areas as disputed.", + "Boundaries representing the jurisdiction of a particular police station.", + "An area used for aggregating statistical data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a third nibble so we can add an abstract parent above it later if need be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as TYPE_STATISTICAL_AREA1).", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "A line representing the boundary between two features. See border.proto for details.", + "DEPRECATED", + "An association of a point with an address, with no other information.", + "ABSTRACT", + "Expanses of land that share common surface attributes. These areas would look more or less uniform from a high altitude.", + "", + "", + "", + "", + "", + "", + "Terrain that looks populated.", + "Terrain that is covered in vegetation.", + "", + "", + "", + "", + "", + "", + "A flat expanse of salt left by the evaporation of a body of salt water.", + "Features can be TYPE_WATER if we don't have enough information to properly type the body of water. TYPE_WATER is also used as the type for child features that compose a TYPE_RIVER feature.", + "One of the large salt-water bodies that covers most of the globe.", + "An ocean subdivision formed by a coastal indentation. Includes coves and gulfs.", + "An open body of water formed by a slight coastal indentation.", + "", + "An ocean subdivision more or less confined by land and islands.", + "A long narrow ocean subdivision. Includes sounds.", + "", + "", + "An inland body of standing water.", + "A lake that dries up part of the year.", + "An artificial body of water, possibly created by a dam, often used for irrigation or house use.", + "", + "An inland body of moving water, or parts associated with it in which there is little or no current (backwater).", + "", + "A branch which flows away from the main river. Includes deltas.", + "A place where two or more rivers join.", + "", + "A place where ground water flows naturally out of the ground.", + "", + "", + "A river that dries up part of the year.", + "A dry riverbed that occasionally receives flashfloods.", + "A place at the end of a river where fresh and salt water mix. Includes tidal creeks and limans.", + "Land that is usually flooded. Includes bogs, marshes, flats, moors, and swamps.", + "", + "A shallow place where water may be waded through.", + "A narrow passage used by boats. Normally artificial.", + "A deep place near a shore where ships commonly drop anchor.", + "A deep part in a body of water that is suitable for navigation. Includes narrows.", + "Rocks, coral, sandbars, or other features beneath the surface of the water that pose a hazard to passing ships. Includes shoals.", + "A relatively shallow zone of the back reef located closest to the shore, that may be exposed at low tide.", + "A small section of rocks, coral, sandbars, or other features beneath the surface of the water that forms part of a reef.", + "The full extent of the reef complex.", + "A submerged rock in the water.", + "Man-made (and sometimes natural) channels used to move water. This type was used for both dam structures and water that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for dam structures and TYPE_RESERVOIR for water.", + "DEPRECATED", + "", + "Includes overfalls.", + "A natural depression filled with water where animals come to drink.", + "ABSTRACT This type is incorrectly under TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now fixed. See TYPE_WATERING_HOLE for the replacement.", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "", + "An exposed rock in the water.", + "A small, low-elevation, sandy island formed on the surface of coral reefs", + "A stretch of land projecting into water. Includes capes and spits.", + "A strip of land connecting two larger land masses, such as continents.", + "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.", + "Elevations that have a distinctive peak.", + "A peak or ridge of a mountain that extends through a glacier.", + "A subsidiary peak of a mountain.", + "A route over an otherwise difficult to traverse feature. Includes saddle.", + "Elevations that are flat on top. Includes mesas and buttes.", + "A ridge is a geographical feature consisting of a chain of mountains or hills that form a continuous elevated crest with a single ridgeline for some distance.", + "Steep declines usually carved by erosion. Includes valleys, canyons, ditches, and gorges.", + "Depressions causes by impact, explosion, and sometimes sink-holes.", + "Topography formed on limestone and gypsum by dissolution with sinkholes, caves, etc.", + "A vertical or nearly vertical slope. Includes escarpments.", + "An elevated place that is notable for having a good view. Raster digital elevation data. This is not a type to be used by providers or consumed by clients.", + "RESERVED", + "Land along streams higher than the alluvial plain or stream terrace.", + "", + "Land not so steep as a cliff, but changing elevation. Includes slides.", + "All the points on the polygon are at the same elevation.", + "A near-level shallow, natural depression or basin, usually containing an intermittent lake, pond, or pool.", + "", + "A series of mountains or hills ranged in a line and connected by high ground. Mountain ranges usually consist of many smaller ridges. For example, the Himalayas, the Andes. the Alps, etc.", + "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.", + "includes peaks, ranges, and spurs", + "", + "includes saddles", + "", + "", + "includes trenches and troughs", + "", + "", + "", + "", + "", + "Don't use 0xA7. Use 8 bits for additional types under TYPE_NATURAL_FEATURE, so we don't run out of space. The following are miscellaneous natural features that don't fit any of the categories above.", + "", + "A feature representing a group or chain of islands. ", + "ABSTRACT", + "This is the type for postal codes which are complete and independent enough that there should be a feature for them (e.g. US 5-digit ZIP codes). For even more detailed suffixes that further subdivide a postal code (such as the +4 component in US ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX address component. When a range or set of postal codes share the same geographical area, e.g. because a precise subdivision does not exist or this subdivision is unknown, this type is used for each individual postal code.", + "A prefix portion of a postal code which does not meet the requirements for TYPE_POSTAL_CODE, but which is useful to search for, for example UK outcodes.", + "DEPRECATED", + "DEPRECATED This is deprecated and we want to use TYPE_COMPOUND_SECTION instead.", + "DEPRECATED", + "The term \"post town\" is used for a locality-like-entity that is only used for postal addresses.", + "DEPRECATED", + "ABSTRACT", + "Every data source used in constructing a data repository has a corresponding feature that provides more information about that data source. The extra information is stored in the optional data_source field below.", + "A locale feature provides region specific conventions such as preferred language and formatting details for time, date, and currency values. Locales aren't necessary defined by physical geographic features, so they are classified as meta-features.", + "A timezone feature is used to specify the region covering an international timezone. When a point is covered by multiple timezone features, the most specific one can be used to compute the local time at this point. Most specific implies a much smaller region or the one that is closer to the center. A feature's timezone can be specified in the repeated related_timezone field.", + "A business chain feature is used to represent a chain, e.g. Starbucks, McDonald's, etc. Other features representing specific stores/franchises of this chain may refer to one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly reserved to commercial chains but can also be used to model organizations such as the Red Cross or the United Nations.", + "A phone number prefix feature is used to specify the region where phone numbers (typically fixed-line numbers) must begin with a certain prefix. Any phone number prefix down to any level of granularity could be represented by this type.", + "A phone number area code is a prefix which also coincides with the area code, or national destination code, of a particular region.", + "A Business Corridor is a dense cluster of semantically similar establishments. TYPE_BUSINESS_CORRIDOR features are distinguished from TYPE_COLLOQUIAL_AREA features because the corridors are not under the political hierarchy, are allowed to be nameless, and may not correspond to well-known real world locations. For more details, see go/geo-corridors-schema.", + "An address template feature provides region-specific conventions for structuring addresses. These features aren't necessarily defined by physical geographic features, so they are classified as meta-features.", + "A transit agency operates a number of lines, typically all in the same city, region or country. See also transitagency.proto", + "A feature whose geometry is planned to replace the geometry on another feature.", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "RESERVED", + "A portal of entry or exit to another feature. Examples: - Subway station entrance. - Parking lot entrance.", + "Cartographic features are used to capture real-world objects for which there is no current desire to model any specific attributes. These are only useful to make the map tiles look pretty.", + "DEPRECATED", + "Also see skitrail.proto", + "Also see skilift.proto", + "Also see skiboundary.proto", + "", + "Starting with TYPE_TARMAC, we use longer IDs, so that we can expand the number of feature types under TYPE_CARTOGRAPHIC.", + "Use TYPE_COMPOUND_GROUND and appropriate gcids for the next two.", + "DEPRECATED", + "DEPRECATED", + "", + "Sub-types within a golf course.", + "", + "", + "", + "", + "Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop for golf shops instead.", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "Subtype within a zoo - a cage or fenced-off or otherwise delineated area containing animals.", + "A line for a cartographic detail. For example the international date line. Such features should have polyline geometry.", + "ABSTRACT This type is being replaced by TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2", + "DEPRECATED This type has been replaced by TYPE_COMPOUND_BUILDING. For further details, see go/oyster-compounds", + "DEPRECATED", + "An establishment which has a address (a.k.a. location or storefront). Note that it *may* also have a service area (e.g. a restaurant that offers both dine-in and delivery). This type of business is also known as a \"hybrid\" Service Area Business. Establishment POIs can be referenced by TYPE_COMPOUND features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the reciprocal relation of the RELATION_OCCUPIES.", + "A business without a storefront, e.g. a plumber. It would normally not have a place that a customer could visit to receive service, but it would have an area served by the business. Also known as a \"pure\" Service Area Business. NOTE(tcain): Using value 0xD441, since we could find ourselves with a need to differentiate service areas from online-only at this level in the future, but still benefit from being able to group those under a common parent, disjoint from TYPE_ESTABLISHMENT_POI.", + "The root of types of features that are in the sky, rather than on the earth. There will eventually be a hierarchy of types here.", + "Features responsible for monitoring traffic on roads (usually for speed). Includes cameras at particular points as well as monitors that cover larger spans. Features of this type should have a corresponding gcid that specifies the correct subtype (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was originally named as TYPE_ROAD_CAMERA.", + "ABSTRACT", + "Note that this type does not distinguish the nature of the statue (religious, historical, memorial, tourist, ...).", + "Open space used for events, gathering, or as market-place.", + "A feature used to represent a logical level, e.g. floor.", + "ABSTRACT", + "e.g. campus, compound, parcel.", + "e.g. single family dwelling, office building.", + "e.g. suite, room, hallway, cubicle.", + "A terminal point represents a good location for a user to meet a taxi, ridesharing vehicle, or general driver.", + "An area controlled in some way by an authoritative source, such as a government-designated COVID containment zone. Features of this type should have one or more gcids corresponding to their specific regulation.", + "RESERVED", + "DEPRECATED", + "A feature of completely unknown type. This should only be used when absolutely necessary. One example in which this type is useful is in the Chinese importer, which must heuristically segment addresses into components - it often does not know what types to make those components. Please note that the Oyster address formatter does not currently support address components of TYPE_UNKNOWN well." + ], + "type": "string" + } + }, + "type": "object" + }, + "CountryMetroNBFeature": { + "description": "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.", + "id": "CountryMetroNBFeature", + "properties": { + "enclosingProvinceGeotoken": { + "description": "The enclosing_province_geotoken is a 32 bit fingerprint of the state encosing the (metro) id. MetroId's can span multiple states. Enclosing geotoken is filled in with the state name for disambiguation. ProvinceGeotoken field is different as it indicates an \"interest\". Format: 32 bit fingerprint(__state__country).", + "format": "uint32", + "type": "integer" + }, + "id": { + "description": "A 32 bit navboost v2 feature id encoding (country, language, metro). NavBoosterUtils class (google3/quality/navboost/nav_booster_utils.h) provides functions to decode this feature.", + "format": "uint32", + "type": "integer" + }, + "navboost": { + "description": "This is the multiplier to apply to the result for this locale \u0026 query. NOTE: This is for serving purposes only and should not be populated in the index.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "CountryProvinceGeotoken": { + "description": "A 32 bit fingerprint of a state level geotoken. The geotoken is in the following format: __state__country. 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.", + "id": "CountryProvinceGeotoken", + "properties": { + "geotoken": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "CountrySalientCountry": { + "description": "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/stableinternalregionconverter.cc). Salience is a value in range [0.0 - 1.0] in which 1.0 represents a high likelihood to be relevant to the country", + "id": "CountrySalientCountry", + "properties": { + "compressedSalience": { + "format": "uint32", + "type": "integer" + }, + "countryCode": { + "format": "int32", + "type": "integer" + }, + "salience": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "CrawlerChangerateMultipleComponentDistribution": { + "description": "Proto contains parameters for a multiple component distributions, where each component has non-negative weight and the sum of component weights is 1.", + "id": "CrawlerChangerateMultipleComponentDistribution", + "properties": { + "components": { + "items": { + "$ref": "CrawlerChangerateSingleComponentDistribution" + }, + "type": "array" + } + }, + "type": "object" + }, + "CrawlerChangerateSingleComponentDistribution": { + "description": "Proto contains parameters of a single component distribution.", + "id": "CrawlerChangerateSingleComponentDistribution", + "properties": { + "logScaling": { + "description": "Scaling factor to ensure the approximated posterior to have the same scale as the product of prior and likelihood. This value is used to compute posterior weights. Uses log scale to provide a wider range. This field is for internal use only.", + "format": "float", + "type": "number" + }, + "type": { + "description": "The type indicates the type of the distribution.", + "enum": [ + "LOG_GAMMA", + "INV_GAMMA", + "GAMMA", + "LOG_NORMAL" + ], + "enumDescriptions": [ + "Log-Gamma distribution, where it assumes the log of the values follow Gamma distribution. It uses extension gamma_params.", + "Inverse-Gamma distribution, where it assumes the inverse of values follow Gamma distribution. It uses extension gamma_params.", + "Gamma distribution. It uses extension gamma_params.", + "Log-Normal distribution. It uses extension log_normal_params." + ], + "type": "string" + }, + "weight": { + "description": "The weight is only used in multiple component scenarios.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "CrawlerChangerateUrlChange": { + "description": "NEXT_TAG: 13", + "id": "CrawlerChangerateUrlChange", + "properties": { + "additionalChangesMerged": { + "description": "Duplicate UrlChanges crawled within a specified time range will be merged together. UrlChanges are considered duplicates if the simhash, simhash_is_trusted, simhash_v2, simhash_v2_is_trusted, and shingle_simhash are the same. additional_changes_merged indiciates the number of duplicate UrlChanges merged into this UrlChange.", + "format": "int32", + "type": "integer" + }, + "fractionalTileChange": { + "description": "Deprecated fields. The fraction of tiles (0 to 1) that changed.", + "format": "double", + "type": "number" + }, + "interval": { + "description": "The length in seconds of the change.", + "format": "int32", + "type": "integer" + }, + "offDomainLinksChange": { + "description": "Whether the content of the off-domain links changed.", + "type": "boolean" + }, + "offDomainLinksCount": { + "description": "The new count of off-domain links, if they changed.", + "format": "int32", + "type": "integer" + }, + "onDomainLinksCount": { + "description": "The new count of on-domain links, if the count changed.", + "format": "int32", + "type": "integer" + }, + "onDomainLinksCountChange": { + "description": "Whether the number of on-domain links changed.", + "type": "boolean" + }, + "shingleSimhash": { + "$ref": "IndexingConverterShingleFingerprint", + "description": "The old simhash value obtained from shingles." + }, + "simhash": { + "description": "The simhash-v1 value. Use of simhash-v1 is deprecated, and newer UrlChange should only contain simhash-v2. During this transition period, UrlChange can contain either simhash or simhash_v2. It is possible that previous UrlChange only contain simhash-v1 and the next UrlChange only contain simhash-v2. In this case, we skip that interval in our changerate computation. [go/changerate-simhash-v2-migration]", + "format": "uint64", + "type": "string" + }, + "simhashIsTrusted": { + "description": "Whether the simhash-v1 should be trusted.", + "type": "boolean" + }, + "simhashV2": { + "description": "The simhash-v2 value.", + "format": "uint64", + "type": "string" + }, + "simhashV2IsTrusted": { + "description": "Whether the simhash-v2 value should be trusted.", + "type": "boolean" + } + }, + "type": "object" + }, + "CrawlerChangerateUrlChangerate": { + "description": "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.", + "id": "CrawlerChangerateUrlChangerate", + "properties": { + "approximatedPosterior": { + "$ref": "CrawlerChangerateMultipleComponentDistribution", + "description": "The approximated posterior distribution." + }, + "averageChangeSignificance": { + "description": "The \"significance\" of the average change we saw of this document (from 0 to 1). Influenced by content changes. This can be used for prioritizing the crawl (higher significance first).", + "format": "double", + "type": "number" + }, + "changeperiod": { + "description": "//////////////////////////////////////////////////////////////////////////// The classic changerate estimation. //////////////////////////////////////////////////////////////////////////// The classic estimate of change period (in seconds). It is computed by inserted a \"fake\" change and no-change interval as a prior distribution. This field is generally not used and should NOT be accessed directly. See above for correct method for determining the change period estimate.", + "format": "int32", + "type": "integer" + }, + "confidence": { + "description": "The confidence (between 0 and 1) in the changeperiod guess.", + "format": "double", + "type": "number" + }, + "globalBasedChangePeriod": { + "description": "//////////////////////////////////////////////////////////////////////////// The changerate estimation based on the global prior. //////////////////////////////////////////////////////////////////////////// The global-based changeperiod. This is our estimate (in seconds) for the average time between changes. It is computed using the new prior method based on global_based_prior_period and the global_based_prior_strength specified below. This is used for computing pattern priors. Use pattern_based_change_period or changeperiod fields for all other purposes.", + "format": "int32", + "type": "integer" + }, + "globalBasedChangePeriodConfidence": { + "description": "The 'confidence' of the global-based changeperiod. This is the n-th root of the posterior evaluated at MAP point, where n is the number of history intervals. For now, it is hard to interpret the meaning of the absolute values of 'average' posterior cross different sets of data.", + "format": "double", + "type": "number" + }, + "globalBasedPriorPeriod": { + "description": "The 2 parameters below specify the prior employed in calculating the global_based_change_period. These values are precomputed through an offline analysis and specified via flags.", + "format": "double", + "type": "number" + }, + "globalBasedPriorStrength": { + "format": "double", + "type": "number" + }, + "lastChangeSignificance": { + "description": "The \"significance\" of the last change we saw of this document (from 0 to 1). Influenced by content changes, etc. This can be used for prioritizing the crawl (higher significance first).", + "format": "double", + "type": "number" + }, + "lastChanged": { + "description": "The last time (unix timestamp) we saw a changed copy of the document. Provided iff we have seen the page change.", + "format": "int32", + "type": "integer" + }, + "lastFetched": { + "description": "The last time (unix timestamp) we saw a fetched copy of the document.", + "format": "int32", + "type": "integer" + }, + "numIntervals": { + "description": "The number of intervals we've seen for this document (where an interval is two different versions).", + "format": "int32", + "type": "integer" + }, + "patternBasedChangePeriod": { + "description": "//////////////////////////////////////////////////////////////////////////// The changerate estimation based on the pattern prior. //////////////////////////////////////////////////////////////////////////// The pattern-based changeperiod. This is our estimate (in seconds) for the average time between changes. It is calculated based on the pattern_based_prior_period and pattern_based_prior_strength below. This quantity will eventually replace the old changeperiod calculation.", + "format": "int32", + "type": "integer" + }, + "patternBasedChangePeriodConfidence": { + "description": "The same as global_based_change_period_confidence, except it is computed using pattern based priors.", + "format": "double", + "type": "number" + }, + "patternBasedLowerChangePeriod": { + "description": "The lower edge of a confidence interval for the pattern-based change period.", + "format": "int32", + "type": "integer" + }, + "patternBasedPriorPeriod": { + "description": "The 2 parameters below specify the prior employed in calculating the pattern_based_change_period. These values are calculated in a separate process and looked up based on the URL pattern.", + "format": "double", + "type": "number" + }, + "patternBasedPriorStrength": { + "format": "double", + "type": "number" + }, + "patternChangePeriodVersion": { + "description": "The version number of the algorithm, refer to ChangePeriodVersion for more information.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "//////////////////////////////////////////////////////////////////////////// Basic information of a document. //////////////////////////////////////////////////////////////////////////// The type of the document determined by crawl histories, refer to TYPE for more information.", + "format": "int32", + "type": "integer" + }, + "ugcChangePeriod": { + "description": "//////////////////////////////////////////////////////////////////////////// The UGC changerate estimation. //////////////////////////////////////////////////////////////////////////// Information on change period generated from user generated content (UGC) change history.", + "format": "int32", + "type": "integer" + }, + "ugcChangePeriodConfidence": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "CrawlerChangerateUrlHistory": { + "id": "CrawlerChangerateUrlHistory", + "properties": { + "change": { + "description": "All the changes we've seen for this URL.", + "items": { + "$ref": "CrawlerChangerateUrlChange" + }, + "type": "array" + }, + "latestVersion": { + "$ref": "CrawlerChangerateUrlVersion", + "description": "The latest version we've seen." + }, + "url": { + "description": "This field in only set in 'url_history' column of Union repository to avoid having to read CompositeDocs.", + "type": "string" + } + }, + "type": "object" + }, + "CrawlerChangerateUrlVersion": { + "description": "NEXT_TAG: 15", + "id": "CrawlerChangerateUrlVersion", + "properties": { + "additionalChangesMerged": { + "description": "Same as the field in UrlChange. This allows us to merge identical UrlVersions into a single UrlVersion.", + "format": "int32", + "type": "integer" + }, + "contentType": { + "description": "The content type of the page.", + "format": "int32", + "type": "integer" + }, + "isImsNotModified": { + "description": "Whether this is an IMS response (a 304, not modified).", + "type": "boolean" + }, + "lastModified": { + "description": "The date from the LastModified header, if present.", + "format": "int32", + "type": "integer" + }, + "offDomainLinksChecksum": { + "description": "The checksum of all the off-domain links on the page.", + "format": "int32", + "type": "integer" + }, + "offDomainLinksCount": { + "description": "The count of all the off-domain links on the page.", + "format": "int32", + "type": "integer" + }, + "onDomainLinksCount": { + "description": "The count of all the on-domain links on the page. We aren't worried about the contents themselves, since they might often change (e.g., session ids). We assume that a change in the number of links is significant, however.", + "format": "int32", + "type": "integer" + }, + "shingleSimhash": { + "$ref": "IndexingConverterShingleFingerprint", + "description": "The simhash value obtained from shingles." + }, + "simhash": { + "description": "The simhash-v1 value. The simhash-v1 is now deprecated and new UrlVersions should only populate simhash-v2. During migration phase from using simhash-v1 to simhash-v2, it is possible that previous UrlChange only contain simhash-v1 and the next UrlChange / UrlVersion could only contain simhash-v2. In this case, we skip that interval in our changerate computation. [go/changerate-simhash-v2-migration]", + "format": "uint64", + "type": "string" + }, + "simhashIsTrusted": { + "description": "Whether the simhash-v1 should be trusted.", + "type": "boolean" + }, + "simhashV2": { + "description": "The simhash-v2 value.", + "format": "uint64", + "type": "string" + }, + "simhashV2IsTrusted": { + "description": "Whether the simhash-v2 value should be trusted.", + "type": "boolean" + }, + "tile": { + "description": "The tiles of the document body. We use int32s instead of int64s (the norm) in order to save space. Since rare inaccuracy doesn't really matter, we've decided this is an okay tradeoff.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "timestamp": { + "description": "The timestamp we crawled the page.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "CrowdingPerDocData": { + "id": "CrowdingPerDocData", + "properties": { + "newscluster": { + "items": { + "$ref": "CrowdingPerDocDataNewsCluster" + }, + "type": "array" + } + }, + "type": "object" + }, + "CrowdingPerDocDataNewsCluster": { + "description": "For crowding in news we need to keep data about the last X clustering iterations around.", + "id": "CrowdingPerDocDataNewsCluster", + "properties": { + "ClusterId": { + "description": "Fingerprint combination of all urls in a cluster", + "format": "uint64", + "type": "string" + }, + "ClusterSize": { + "description": "This is the X in the \"and X related \u003e\u003e\" link on headlines and search results", + "format": "int32", + "type": "integer" + }, + "ClusterTimeStamp": { + "description": "When was this clustered (needed for keeping last X iterations around and discarding earlier ones)", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "DeepCropIndexing": { + "id": "DeepCropIndexing", + "properties": { + "cropBytes": { + "description": "Compact representation for indexing, see creatism::CropBitmap for details on the packing format.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "DeepCropPixels": { + "id": "DeepCropPixels", + "properties": { + "x0": { + "description": "Pixels version of the DeepCropIndexing bytes, this corresponds to the crop box for a given image (based input image size and desired aspect ratio).", + "format": "uint32", + "type": "integer" + }, + "x1": { + "format": "uint32", + "type": "integer" + }, + "y0": { + "format": "uint32", + "type": "integer" + }, + "y1": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "DocProperties": { + "description": "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().", + "id": "DocProperties", + "properties": { + "avgTermWeight": { + "description": "The average weighted font size of a term in the doc body", + "format": "int32", + "type": "integer" + }, + "badTitle": { + "description": "Missing or meaningless title", + "type": "boolean" + }, + "badtitleinfo": { + "items": { + "$ref": "DocPropertiesBadTitleInfo" + }, + "type": "array" + }, + "languages": { + "description": "A Language enum value. See: go/language-enum", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "leadingtext": { + "$ref": "SnippetsLeadingtextLeadingTextInfo", + "description": "Leading text information generated by google3/quality/snippets/leadingtext/leadingtext-detector.cc" + }, + "numPunctuations": { + "format": "int32", + "type": "integer" + }, + "numTags": { + "format": "int32", + "type": "integer" + }, + "numTokens": { + "description": "The number of tokens, tags and punctuations in the tokenized contents. This is an approximation of the number of tokens, tags and punctuations we end up with in mustang, but is inexact since we drop some tokens in mustang and also truncate docs at a max cap.", + "format": "int32", + "type": "integer" + }, + "proseRestrict": { + "description": "The restricts for CSE structured search.", + "items": { + "type": "string" + }, + "type": "array" + }, + "restricts": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timestamp": { + "description": "The time CDocProperties::StartDocument() is called, encoded as seconds past the epoch (Jan 1, 1970). This value is always refreshed and not reused.", + "format": "int64", + "type": "string" + }, + "title": { + "description": "Extracted from the title tag of the content. This is typically extracted by TitleMetaCollector defined at google3/segindexer/title-meta-collector.h. Please see its documentation for the format and other caveats.", + "type": "string" + } + }, + "type": "object" + }, + "DocPropertiesBadTitleInfo": { + "description": "Bad title information.", + "id": "DocPropertiesBadTitleInfo", + "properties": { + "score": { + "format": "float", + "type": "number" + }, + "type": { + "enum": [ + "NOT_BAD", + "MISSING_OR_MEANINGLESS", + "BOILERPLATE", + "FOREIGN", + "UNREADABLE", + "NAKED", + "NO_QUERY_SUPPORT", + "NO_SITE_INFO" + ], + "enumDescriptions": [ + "", + "An empty string, or a bad title such as \"Untitled\". See quality_titles::bad_titles::BadTitleDetector for more details.", + "Most of the title is marked as boilerplate regions. See boilerplate::BoilerplateTitleScorer for more details.", + "The language of a title is different from the language of the document. See quality_snippets::foreigntitle::ForeignTitleScorer for more details.", + "Title has a low readability score. See quality_titles::ReadabilityScorer for more details.", + "Title needs more context (i.e. a site name), e.g. \"Photos\", \"Contact Us\". See quality_titles::bad_titles::BadTitleDetector for more details.", + "Title contains no navboost query. See quality_titles::AlternativeTitlesGenerator for more details.", + "Title has no site title information. See quality_titles::AlternativeTitlesGenerator for more details." + ], + "type": "string" + } + }, + "type": "object" + }, + "DrishtiDenseFeatureData": { + "id": "DrishtiDenseFeatureData", + "properties": { + "extra": { + "description": "If extra is present it must be of the same length as value.", + "items": { + "$ref": "DrishtiFeatureExtra" + }, + "type": "array" + }, + "generalExtra": { + "$ref": "DrishtiFeatureExtra" + }, + "value": { + "description": "Dense data.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "DrishtiFeatureExtra": { + "id": "DrishtiFeatureExtra", + "properties": {}, + "type": "object" + }, + "DrishtiFeatureSetData": { + "id": "DrishtiFeatureSetData", + "properties": { + "extra": { + "description": "Extra information for this particular FeatureSetData (example timestamp of this frame in the video). (Almost never used).", + "items": { + "$ref": "DrishtiFeatureExtra" + }, + "type": "array" + }, + "feature": { + "description": "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.", + "items": { + "$ref": "DrishtiFeatureSetDataFeatureSetElement" + }, + "type": "array" + }, + "label": { + "description": "Labels for this particular FeatureSetData. (Almost never used). Only interesting when you have (for example) frame level labels.", + "items": { + "$ref": "DrishtiLabelSetElement" + }, + "type": "array" + } + }, + "type": "object" + }, + "DrishtiFeatureSetDataFeatureSetElement": { + "description": "A FeatureSetElement stores the features coming from a single group.", + "id": "DrishtiFeatureSetDataFeatureSetElement", + "properties": { + "dense": { + "$ref": "DrishtiDenseFeatureData" + }, + "indexed": { + "$ref": "DrishtiIndexedFeatureData" + }, + "name": { + "description": "A name for the feature group: example \"AUDIO\", \"VIDEO\", \"OCR\", etc.", + "type": "string" + }, + "quantized": { + "$ref": "DrishtiQuantizedDenseFeatureData" + }, + "sparse": { + "$ref": "DrishtiSparseFeatureData" + } + }, + "type": "object" + }, + "DrishtiFeatureSetDataSequence": { + "description": "This represents a sequence (ordered) of FeatureSetData elements.", + "id": "DrishtiFeatureSetDataSequence", + "properties": { + "element": { + "description": "FeatureSetData contains the features. In most scenarios, you only have one element. However, multiple elements are appropriate in case of videos where each element may correspond to a frame in the video.", + "items": { + "$ref": "DrishtiFeatureSetData" + }, + "type": "array" + }, + "extra": { + "description": "Some extra information about this FeatureSetDataSequence. (Almost never used).", + "items": { + "$ref": "DrishtiFeatureExtra" + }, + "type": "array" + }, + "label": { + "description": "Global (video-level) labels. In most cases, you only have one LabelSetElement. All the labels will be stored in this single LabelSetElement. Scenarios where you may have multiple LabelSetElement(s) is (for example) when you want to differentiate the labels into various sub-groups - eg, central vs relevant, kg-ids vs queries, etc.", + "items": { + "$ref": "DrishtiLabelSetElement" + }, + "type": "array" + }, + "timestamp": { + "description": "If set, must be same length as element. Each entry is the timestamp in microseconds where the FeatureSetData element was extracted.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "DrishtiIndexedFeatureData": { + "id": "DrishtiIndexedFeatureData", + "properties": { + "extra": { + "description": "If extra is present it must be of the same length as index and value.", + "items": { + "$ref": "DrishtiFeatureExtra" + }, + "type": "array" + }, + "generalExtra": { + "$ref": "DrishtiFeatureExtra" + }, + "index": { + "description": "Indexed data. index and value must be of the same length.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "value": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "DrishtiLabelSetData": { + "id": "DrishtiLabelSetData", + "properties": { + "extra": { + "items": { + "$ref": "DrishtiFeatureExtra" + }, + "type": "array" + }, + "generalExtra": { + "$ref": "DrishtiFeatureExtra" + }, + "targetClass": { + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "targetClassName": { + "items": { + "type": "string" + }, + "type": "array" + }, + "targetValue": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "targetWeight": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "weight": { + "description": "Weight assigned to this set of labels.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "DrishtiLabelSetElement": { + "id": "DrishtiLabelSetElement", + "properties": { + "label": { + "$ref": "DrishtiLabelSetData" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "DrishtiQuantizedDenseFeatureData": { + "id": "DrishtiQuantizedDenseFeatureData", + "properties": { + "extra": { + "description": "If extra is present it must be of the same length as value.", + "items": { + "$ref": "DrishtiFeatureExtra" + }, + "type": "array" + }, + "generalExtra": { + "$ref": "DrishtiFeatureExtra" + }, + "value": { + "description": "Quantized Dense data.", + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "DrishtiSparseFeatureData": { + "id": "DrishtiSparseFeatureData", + "properties": { + "extra": { + "description": "If extra is present it must be of the same length as label and value.", + "items": { + "$ref": "DrishtiFeatureExtra" + }, + "type": "array" + }, + "generalExtra": { + "$ref": "DrishtiFeatureExtra" + }, + "label": { + "description": "Indexed data. label and value must be of the same length.", + "items": { + "type": "string" + }, + "type": "array" + }, + "value": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "DrishtiVesperEncodedThumbnail": { + "description": "The attributes of encoded thumbnail images. Next id: 7.", + "id": "DrishtiVesperEncodedThumbnail", + "properties": { + "encodingQuality": { + "description": "JPEG/WEBP quality factor in range [0,100].", + "format": "int32", + "type": "integer" + }, + "encodingType": { + "description": "Image encoding type.", + "enum": [ + "UNKNOWN", + "JPEG", + "WEBP", + "PNG" + ], + "enumDescriptions": [ + "", + "JPEG encoded.", + "WEBP encoded.", + "PNG encoded." + ], + "type": "string" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "imageBytes": { + "description": "Encoded thumbnail bytes. Prefer this over `image_string` as we are not supposed to store image bytes in a proto string field.", + "format": "byte", + "type": "string" + }, + "imageString": { + "description": "Please migrate to `image_bytes`.", + "type": "string" + }, + "width": { + "description": "Thumbnail resolution.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "DrishtiVesperMovingThumbnail": { + "description": "LINT: LEGACY_NAMES MovingThumbnail is defined as a short video clip that represents the whole video content. Next id: 17.", + "id": "DrishtiVesperMovingThumbnail", + "properties": { + "beginTimestampMs": { + "description": "The begin timestamp in milliseconds.", + "format": "int32", + "type": "integer" + }, + "durationMs": { + "description": "The duration of the moving thumbnail in milliseconds. Note that the duration may not be the difference between begin_timestamp_ms and end_timestamp_ms, esp when the moving thumbnail covers multiple clips from the video.", + "format": "int32", + "type": "integer" + }, + "encodedGifAnimation": { + "format": "byte", + "type": "string" + }, + "encodedVideoString": { + "description": "The encoded video string.", + "format": "byte", + "type": "string" + }, + "encodedWebpAnimation": { + "description": "The encoded WebP animation.", + "format": "byte", + "type": "string" + }, + "endTimestampMs": { + "description": "The end timestamp in milliseconds.", + "format": "int32", + "type": "integer" + }, + "height": { + "description": "Pixel height of the moving thumbnail.", + "format": "int32", + "type": "integer" + }, + "id": { + "description": "MovingThumbnail id (e.g., the video id).", + "type": "string" + }, + "movingThumbnailerVersion": { + "description": "If set, this is the algorithm version used to generate this moving thumbnail.", + "enum": [ + "V0", + "V1", + "DEPRECATED_V2", + "DEPRECATED_V3", + "V4", + "V5", + "V6", + "SHORT_PREVIEW_V0", + "LIVE_MOVING_THUMBNAILER", + "MANUAL" + ], + "enumDescriptions": [ + "Version 0 and 1 - Initial version with thumbnail quality, iconic face and motion scores.", + "", + "Version 2 - Version 1 with default static thumbnail matching, title matching, face matching and face clustering (Deprecated).", + "Version 3 - Version 2 with high resolution transcodes preferred (Deprecated).", + "Version 4 - Version 1 with default static thumbnail matching, title matching, and high resolution transcodes preferred.", + "Version 5 - Version 1 with title matching and high res transcodes preferred.", + "Version 6 - Version 1 with default static thumbnail matching, title matching, retention data and high resolution transcodes preferred.", + "Version used for YT Shorts.", + "Live moving thumbnailer (no scorers involved).", + "Manually generated." + ], + "type": "string" + }, + "name": { + "description": "MovingThumbnail name.", + "enum": [ + "UNKNOWN", + "MQDEFAULT", + "MQDEFAULT_6S", + "LQDEFAULT_6S", + "MQ220P_5S", + "MQDEFAULT_6S_HIGHLIGHT", + "MQDEFAULT_6S_PRE_HIGHLIGHT", + "MQDEFAULT_6S_THIRD_HIGHLIGHT", + "MQDEFAULT_6S_ZOOM_IN", + "SD360P_6S_ZOOM_IN", + "MQDEFAULT_3S", + "MQDEFAULT_6S_480x270", + "MQDEFAULT_1S", + "MQ_SHORTS_PREVIEW", + "HQ_SHORTS_PREVIEW" + ], + "enumDescriptions": [ + "", + "320x180, 10s", + "320x180, 6s", + "196x110, 6s", + "392x220, 5s", + "320x180, 6s, highlight", + "320x180, 6s, pre-highlight", + "(3s before highlight) 320x180, 6s, 3rd best highlight", + "320x180, 6s, central zoom-in version", + "640x360, 6s, central zoom-in version", + "320x180, 3s", + "480x270, 6s", + "Do not use this (deprecated)", + "360x360, original aspect ratio", + "480x480, original aspect ratio" + ], + "type": "string" + }, + "score": { + "description": "The score of the moving thumbnail.", + "format": "float", + "type": "number" + }, + "scoreComponents": { + "$ref": "DrishtiVesperMovingThumbnailScoreComponents" + }, + "thumbnails": { + "description": "A set of single frame thumbnails in the MovingThumbnail.", + "items": { + "$ref": "DrishtiVesperThumbnail" + }, + "type": "array" + }, + "type": { + "description": "MovingThumbnail type.", + "enum": [ + "TYPE_UNKNOWN", + "AN_GIF", + "AN_WEBP", + "AN_MP4", + "AN_WEBM" + ], + "enumDescriptions": [ + "", + "Animated gif.", + "Animated webp.", + "Animated mp4.", + "Animated webm." + ], + "type": "string" + }, + "webpQualityLevel": { + "description": "The actual quality of the Webp animation. Note this value may not be equal to the quality value requested in the animation creator's options. This is because other requirements, such as the max file size, may force the creator to lower the actual quality value.", + "format": "float", + "type": "number" + }, + "width": { + "description": "Pixel width of the moving thumbnail.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "DrishtiVesperMovingThumbnailScoreComponents": { + "description": "Sum of individual score components within a moving thumbnail. Used as input for weight fitting.", + "id": "DrishtiVesperMovingThumbnailScoreComponents", + "properties": { + "audienceRewindRatioScore": { + "format": "float", + "type": "number" + }, + "iconicFaceScore": { + "format": "float", + "type": "number" + }, + "matchingScore": { + "format": "float", + "type": "number" + }, + "motionScore": { + "format": "float", + "type": "number" + }, + "titleMatchingScore": { + "format": "float", + "type": "number" + }, + "videoThumbQualityScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "DrishtiVesperThumbnail": { + "description": "The attributes of a video thumbnail.", + "id": "DrishtiVesperThumbnail", + "properties": { + "denseFeatures": { + "description": "Thumbnail dense features", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "encodedImageString": { + "description": "Thumbnail image as an encoded image. Deprecated, use encoded_thumbnails instead.", + "type": "string" + }, + "encodedImageStringSmall": { + "description": "Thumbnail image as an encoded image with smaller resolution. Deprecated, use encoded_thumbnails instead.", + "type": "string" + }, + "encodedThumbnails": { + "description": "Encoded thumbnail images.", + "items": { + "$ref": "DrishtiVesperEncodedThumbnail" + }, + "type": "array" + }, + "id": { + "description": "Thumbnail id.", + "type": "string" + }, + "ocrText": { + "description": "Text in video thumbnails that was detected by OCR.", + "type": "string" + }, + "qualityScores": { + "description": "Thumbnail quality scores.", + "items": { + "$ref": "DrishtiVesperThumbnailQualityScore" + }, + "type": "array" + }, + "shouldUpdateDefaultThumbnail": { + "description": "If true, this thumbnail should update default thumbnail.", + "type": "boolean" + }, + "thumbnailerModelVersion": { + "description": "Thumbnailer Version.", + "enum": [ + "VERSION_UNKNOWN", + "VERSION_FIRST", + "VERSION_RANDOM", + "VERSION_4", + "VERSION_5", + "VERSION_6", + "VERSION_7", + "VERSION_8", + "VERSION_SHORTS_4", + "VERSION_SHORTS_5", + "VERSION_SHORTS_6", + "VERSION_STORY_4", + "VERSION_STORY_5", + "VERSION_MOVING_4", + "VERSION_MOVING_5", + "VERSION_MOVING_6", + "VERSION_MOVING_SHORTS_0", + "VERSION_MOVING_LIVE_0", + "VERSION_MOVING_MANUAL_0", + "VERSION_LITE_1", + "VERSION_CUSTOM" + ], + "enumDescriptions": [ + "", + "Use the first frame as thumbnail.", + "Randomly choose a frame as thumbnail.", + "Thumbnailer version 4.", + "Thumbnailer version 5.", + "Thumbnailer version 6 for violative thumbnail regeneration. Design: go/reduce-violative-thumb", + "Thumbnailer version 7.", + "Thumbnailer version 8 for violative thumbnail regeneration. Design: go/reduce-violative-thumb", + "Thumbnailer version 4 for shorts videos.", + "Thumbnailer version 5 for shorts videos.", + "Thumbnailer version 6 for shorts videos.", + "Thumbnailer version 4 for stories.", + "Thumbnailer version 5 for stories.", + "Moving thumbnailer version 4.", + "Moving thumbnailer version 5.", + "Moving thumbnailer version 6.", + "Moving thumbnailer version 0 for shorts.", + "Moving thumbnailer version 0 for live.", + "Moving thumbnail generated manually.", + "Lite Thumbnailer (previously known as FirstFrameThumbnailer)", + "Custom image (not generated). Likely client provided." + ], + "type": "string" + }, + "timestampMs": { + "description": "Thumbnail timestamp in milliseconds.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "Thumbnail type.", + "enum": [ + "UNKNOWN", + "MAIN_THUMB_CUSTOM", + "MAIN_THUMB_NON_CUSTOM", + "SHOT_THUMB", + "NUMBERED_THUMB", + "KEY_FRAME", + "FRAME", + "AUTO" + ], + "enumDescriptions": [ + "", + "Customized main thumbnail uploaded from user.", + "Non-customized main thumbnail.", + "Shot thumbnail.", + "The numbered thumbnail, e.g. 1.jpg, 2.jpg, 3.jpg.", + "The iframe extracted from the media decoder.", + "The regular video frame.", + "This type indicates that the thumbnail is to use for thumbnail A/B test. In this case the id field will be used to indicate the control and experimental thumbnail." + ], + "type": "string" + }, + "userReportedThumbnail": { + "$ref": "DrishtiVesperUserReportUserReportedThumbnail" + }, + "userReportedThumbnails": { + "description": "All user reported thumbnails of interest.", + "items": { + "$ref": "DrishtiVesperUserReportUserReportedThumbnail" + }, + "type": "array" + }, + "version": { + "description": "Thumbnail version, i.e., the unix time in seconds when the thumbnail was created.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "DrishtiVesperThumbnailQualityScore": { + "id": "DrishtiVesperThumbnailQualityScore", + "properties": { + "score": { + "format": "float", + "type": "number" + }, + "type": { + "enum": [ + "UNKNOWN", + "PHOTO_QUALITY", + "PAMIR_IMAGE_QUALITY", + "VIDEO_THUMB_QUALITY", + "SALIENCY", + "COMPLEXITY", + "SHARPNESS", + "CLOSE_UP", + "BEEHIVE_QUALITY", + "ICONIC_FACE", + "DUMMY", + "COLORFULNESS", + "MOTION", + "RETENTION_STATS", + "FACIAL_EXPRESSION", + "MATCHING", + "LUCKYSHOT_SHARPNESS", + "SINGLE_FACE_MODULE", + "TITLE_MATCHING", + "FACE_CLUSTERING", + "FACE_MATCHING", + "RACY_SCORE", + "NON_RACY_SCORE", + "SALIENCY_COVERAGE", + "AUDIENCE_WATCH_DATA", + "AUDIENCE_REWATCH_DATA", + "AUDIENCE_REWIND_RATIO", + "AUDIENCE_DROPOFF_RATIO", + "HIGHLIGHT_SCORE", + "JOY_FACE", + "EYE_OPEN", + "FACE_RATIO", + "OCR_RACY_SCORE", + "SHOT_BOUNDARY", + "NIMA", + "FOREGROUND_MOTION_SALIENCY", + "PAGE_QUALITY", + "GLOBAL_MOTION", + "CHAPTER_TITLE_MATCHING", + "DBSCAN_FRAME_CHAPTER_SIMILARITY", + "EYES_NOT_VISIBLY_CLOSED", + "MERGED" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "The higher the score, the racier the thumbnail.", + "The higher the score, less racier of the thumbnail.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "go/nima", + "", + "", + "", + "", + "", + "", + "The score merged from the above source types." + ], + "type": "string" + } + }, + "type": "object" + }, + "DrishtiVesperUserReportHumanLabel": { + "description": "Proto holding values for details about human labels.", + "id": "DrishtiVesperUserReportHumanLabel", + "properties": { + "racyLevel": { + "enum": [ + "UNKNOWN", + "SAFE", + "BORDERLINE", + "SEXUAL" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "DrishtiVesperUserReportModelScore": { + "description": "Proto holding values for details about score and the source model.", + "id": "DrishtiVesperUserReportModelScore", + "properties": { + "modelName": { + "type": "string" + }, + "score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "DrishtiVesperUserReportUserReportedThumbnail": { + "description": "Proto holding values for user reported thumbnails. Next id: 12", + "id": "DrishtiVesperUserReportUserReportedThumbnail", + "properties": { + "denseFeatures": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "duration": { + "description": "Number of days in which volume is calculated.", + "format": "int32", + "type": "integer" + }, + "humanLabel": { + "$ref": "DrishtiVesperUserReportHumanLabel" + }, + "impressions": { + "description": "Daily aggregared impressions for the reported video.", + "format": "int32", + "type": "integer" + }, + "needHumanLabel": { + "description": "Whether the thumbnail needs a human label.", + "type": "boolean" + }, + "rawHumanLabels": { + "items": { + "$ref": "DrishtiVesperUserReportHumanLabel" + }, + "type": "array" + }, + "reportScore": { + "$ref": "DrishtiVesperUserReportModelScore" + }, + "reportType": { + "enum": [ + "UNKNOWN", + "RACY" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "score": { + "$ref": "DrishtiVesperUserReportModelScore" + }, + "useCase": { + "enum": [ + "UNKNOWN", + "TRAIN", + "EVAL" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "volume": { + "description": "Number of reports.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "DrishtiVesperVideoThumbnail": { + "description": "Video level container for thumbnail with its attributes, e.g., timestamp, id, quality scores, annotations, or features.", + "id": "DrishtiVesperVideoThumbnail", + "properties": { + "id": { + "description": "Video id.", + "type": "string" + }, + "movingThumbnails": { + "items": { + "$ref": "DrishtiVesperMovingThumbnail" + }, + "type": "array" + }, + "thumbnails": { + "items": { + "$ref": "DrishtiVesperThumbnail" + }, + "type": "array" + } + }, + "type": "object" + }, + "EmbedsDeepLinkData": { + "description": "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.", + "id": "EmbedsDeepLinkData", + "properties": { + "appId": { + "description": "Application ID (or project ID) from Google API Console.", + "format": "int64", + "type": "string" + }, + "client": { + "description": "The data for a Google API Console client is entered by a developer during client registration and is stored in PackagingService.", + "items": { + "$ref": "EmbedsPackagingServiceClient" + }, + "type": "array" + }, + "deepLinkId": { + "description": "The ID for non-URL content. Embeds may either have no analogous web presence or prefer a native mobile experience if supported. In the case of no web presence, instead of setting the \"url\" field of an embed, such developers will set this field and other content fields, e.g. thumbnail, title, description. If set, this field is used to construct the deep-link URI. Note that the native experience is preferred over the web link and the web link is used as a fallback.", + "type": "string" + }, + "url": { + "description": "Analogous web presence. Used as desktop fallback or when no native link data is present.", + "type": "string" + } + }, + "type": "object" + }, + "EmbedsEmbedClientItem": { + "description": "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.", + "id": "EmbedsEmbedClientItem", + "properties": { + "canonicalId": { + "description": "The canonical ID of the embed. If absent, the canonical ID is equal to the ID; if present, then the canonical ID represents an \"equivalence class\" of embeds which really refer to the same object. (For example, the URLs http://www.foo.com/ and http://foo.com/ refer to the same object) This field may be updated periodically by background processes.", + "type": "string" + }, + "deepLinkData": { + "$ref": "EmbedsDeepLinkData", + "description": "Deep-linking data to take the user to the right place in a mobile app. This is only used for preview and attribution. Links that are specific to a given embed type should live on that specific embed's proto by using Link. See http://goto.google.com/mariana-design." + }, + "id": { + "description": "The ID of the embed. This corresponds to the schema.org ID, as represented in the ItemScope.id field.", + "type": "string" + }, + "provenance": { + "$ref": "EmbedsProvenance", + "description": "The provenance of the embed, populated when the embed originated from a web fetch. The provenance captures information about the web page the embed had originated, like the URL that was retrieved and the retrieved URL's canonical form. This is useful in the case where the URL shared by the URL redirects (e.g., in the case of a shortened URL)." + }, + "renderId": { + "description": "The ID used to identify the embed during rendering. This field will match ID, if set, otherwise it will be the ID of the parent activity. This field is only populated on the server for client use and is not persisted to storage.", + "type": "string" + }, + "signature": { + "description": "Signature of the embed, used for verification.", + "type": "string" + }, + "transientData": { + "$ref": "EmbedsTransientData", + "description": "Transient generic data that will not be saved on the server." + }, + "type": { + "description": "The first value in `type` determines which extension field will be set. When creating an EmbedClientItem, you only need to set the first (primary) type in this field. When the server receives the item, it will populate the full type list using the parent annotations in the ItemType enum.", + "items": { + "enum": [ + "UNKNOWN", + "ACTION_V2", + "ADD_ACTION_V2", + "AGGREGATE_RATING_V2", + "ARTICLE_V2", + "ASSESS_ACTION_V2", + "AUDIO_OBJECT_V2", + "BASIC_INTERACTION_V2", + "BLOG_POSTING_V2", + "BLOG_V2", + "BOOK_V2", + "BUY_ACTION_V2", + "CHECK_IN_ACTION_V2", + "CHECKIN_V2", + "COLLEXION_V2", + "COMMENT_ACTION_V2", + "COMMENT_V2", + "COMMUNICATE_ACTION_V2", + "CONSUME_ACTION_V2", + "CREATE_ACTION_V2", + "CREATIVE_WORK_V2", + "DISCOVER_ACTION_V2", + "DOCUMENT_OBJECT_V2", + "DRAWING_OBJECT_V2", + "DRIVE_OBJECT_V2", + "EMOTISHARE_V2", + "ENTRY_POINT_V2", + "EVENT_TIME_V2", + "EVENT_V2", + "FILE_OBJECT_V2", + "FIND_ACTION_V2", + "FINANCIAL_QUOTE_V2", + "FORM_OBJECT_V2", + "GEO_COORDINATES_V2", + "GOOGLE_OFFER_V2", + "HANGOUT_CHAT_MESSAGE", + "HANGOUT_QUOTE", + "HANGOUT_V2", + "HOA_PLUS_EVENT_V2", + "IMAGE_OBJECT_V2", + "INTERACT_ACTION_V2", + "INTERACTION_V2", + "LISTEN_ACTION_V2", + "LOCAL_BUSINESS_V2", + "LOCAL_PLUS_PHOTO_ALBUM_V2", + "MAGAZINE_V2", + "MEDIA_OBJECT_V2", + "MOBILE_APPLICATION_V2", + "MOVIE_V2", + "MUSIC_ALBUM_V2", + "MUSIC_GROUP_V2", + "MUSIC_PLAYLIST_V2", + "MUSIC_RECORDING_V2", + "NEWS_ARTICLE_V2", + "OFFER_V2", + "ORGANIZATION_V2", + "ORGANIZE_ACTION_V2", + "PERSON_V2", + "PLACE_REVIEW_V2", + "PLACE_V2", + "PLAN_ACTION_V2", + "PLAY_MUSIC_ALBUM_V2", + "PLAY_MUSIC_TRACK_V2", + "PLAY_OBJECT_V2", + "PLUS_AUDIO_V2", + "PLUS_EVENT_V2", + "PLUS_MEDIA_COLLECTION_V2", + "PLUS_MEDIA_OBJECT_V2", + "PLUS_PAGE_V2", + "PLUS_PHOTOS_ADDED_TO_COLLECTION_V2", + "PLUS_PHOTO_ALBUM_V2", + "PLUS_PHOTO_COLLECTION_V2", + "PLUS_PHOTO_V2", + "PLUS_POST_V2", + "PLUS_RESHARE_V2", + "PLUS_SOFTWARE_APPLICATION_V2", + "POLL_OPTION_V2", + "POLL_V2", + "POSTAL_ADDRESS_V2", + "PRESENTATION_OBJECT_V2", + "PRODUCT_REVIEW_V2", + "RATING_V2", + "REACT_ACTION_V2", + "RESERVATION_V2", + "RESERVE_ACTION_V2", + "REVIEW_V2", + "REVIEW_ACTION_V2", + "SOFTWARE_APPLICATION_V2", + "SPREADSHEET_OBJECT_V2", + "SQUARE_INVITE_V2", + "SQUARE_V2", + "STICKER_V2", + "STORY_V2", + "THING_V2", + "TRADE_ACTION_V2", + "DEPRECATED_TOUR_OBJECT_V2", + "TV_EPISODE_V2", + "TV_SERIES_V2", + "UPDATE_ACTION_V2", + "VIEW_ACTION_V2", + "VIDEO_OBJECT_V2", + "VIDEO_GALLERY_V2", + "WANT_ACTION_V2", + "WEB_PAGE_V2", + "WRITE_ACTION_V2", + "YOUTUBE_CHANNEL_V2", + "GOOGLE_USER_PHOTO_V2", + "GOOGLE_USER_PHOTO_ALBUM", + "GOOGLE_PHOTO_RECIPE", + "THING", + "CREATIVE_WORK", + "EVENT", + "INTANGIBLE", + "ORGANIZATION", + "PERSON", + "PLACE", + "PRODUCT", + "ARTICLE", + "BLOG_POSTING", + "NEWS_ARTICLE", + "SCHOLARLY_ARTICLE", + "BLOG", + "BOOK", + "COMMENT", + "ITEM_LIST", + "MAP", + "MEDIA_OBJECT", + "AUDIO_OBJECT", + "IMAGE_OBJECT", + "MUSIC_VIDEO_OBJECT", + "VIDEO_OBJECT", + "MOVIE", + "MUSIC_PLAYLIST", + "MUSIC_ALBUM", + "MUSIC_RECORDING", + "PAINTING", + "PHOTOGRAPH", + "RECIPE", + "REVIEW", + "SCULPTURE", + "SOFTWARE_APPLICATION", + "MOBILE_APPLICATION", + "WEB_APPLICATION", + "TV_EPISODE", + "TV_SEASON", + "TV_SERIES", + "WEB_PAGE", + "ABOUT_PAGE", + "CHECKOUT_PAGE", + "COLLECTION_PAGE", + "IMAGE_GALLERY", + "VIDEO_GALLERY", + "CONTACT_PAGE", + "ITEM_PAGE", + "PROFILE_PAGE", + "SEARCH_RESULTS_PAGE", + "WEB_PAGE_ELEMENT", + "SITE_NAVIGATION_ELEMENT", + "TABLE", + "WP_AD_BLOCK", + "WP_FOOTER", + "WP_HEADER", + "WP_SIDEBAR", + "APP_INVITE", + "EMOTISHARE", + "BUSINESS_EVENT", + "CHILDRENS_EVENT", + "COMEDY_EVENT", + "DANCE_EVENT", + "EDUCATION_EVENT", + "FESTIVAL", + "FOOD_EVENT", + "LITERARY_EVENT", + "MUSIC_EVENT", + "SALE_EVENT", + "SOCIAL_EVENT", + "SPORTS_EVENT", + "THEATER_EVENT", + "VISUAL_ARTS_EVENT", + "RESERVATION", + "TRAVEL_EVENT", + "CORPORATION", + "EDUCATIONAL_ORGANIZATION", + "COLLEGE_OR_UNIVERSITY", + "ELEMENTARY_SCHOOL", + "HIGH_SCHOOL", + "MIDDLE_SCHOOL", + "PRESCHOOL", + "SCHOOL", + "GOVERNMENT_ORGANIZATION", + "LOCAL_BUSINESS", + "ANIMAL_SHELTER", + "AUTOMOTIVE_BUSINESS", + "AUTO_BODY_SHOP", + "AUTO_DEALER", + "AUTO_PARTS_STORE", + "AUTO_RENTAL", + "AUTO_REPAIR", + "AUTO_WASH", + "GAS_STATION", + "MOTORCYCLE_DEALER", + "MOTORCYCLE_REPAIR", + "CHILD_CARE", + "DRY_CLEANING_OR_LAUNDRY", + "EMERGENCY_SERVICE", + "FIRE_STATION", + "HOSPITAL", + "POLICE_STATION", + "EMPLOYMENT_AGENGY", + "ENTERTAINMENT_BUSINESS", + "ADULT_ENTERTAINMENT", + "AMUSEMENT_PARK", + "ART_GALLERY", + "CASINO", + "COMEDY_CLUB", + "MOVIE_THEATER", + "NIGHT_CLUB", + "FINANCIAL_SERVICE", + "ACCOUNTING_SERVICE", + "AUTOMATED_TELLER", + "BANK_OR_CREDIT_UNION", + "INSURANCE_AGENCY", + "FOOD_ESTABLISHMENT", + "BAKERY", + "BAR_OR_PUB", + "BREWERY", + "CAFE_OR_COFFEE_SHOP", + "FAST_FOOD_RESTAURANT", + "ICE_CREAM_SHOP", + "RESTAURANT", + "WINERY", + "GOVERNMENT_OFFICE", + "POST_OFFICE", + "HEALTH_AND_BEAUTY_BUSINESS", + "BEAUTY_SALON", + "DAY_SPA", + "HAIR_SALON", + "HEALTH_CLUB", + "NAIL_SALON", + "TATTOO_PARLOR", + "HOME_AND_CONSTRUCTION_BUSINESS", + "ELECTRICIAN", + "GENERAL_CONTRACTOR", + "HVAC_BUSINESS", + "HOUSE_PAINTER", + "LOCKSMITH", + "MOVING_COMPANY", + "PLUMBER", + "ROOFING_CONTRACTOR", + "INTERNET_CAFE", + "LIBRARY", + "LODGING_BUSINESS", + "BED_AND_BREAKFAST", + "HOSTEL", + "HOTEL", + "MOTEL", + "MEDICAL_ORGANIZATION", + "DENTIST", + "MEDICAL_CLINIC", + "OPTICIAN", + "PHARMACY", + "PHYSICIAN", + "VETERINARY_CARE", + "PROFESSIONAL_SERVICE", + "ATTORNEY", + "NOTARY", + "RADIO_STATION", + "REAL_ESTATE_AGENT", + "RECYCLING_CENTER", + "SELF_STORAGE", + "SHOPPING_CENTER", + "SPORTS_ACTIVITY_LOCATION", + "BOWLING_ALLEY", + "EXERCISE_GYM", + "GOLF_COURSE", + "PUBLIC_SWIMMING_POOL", + "SKI_RESORT", + "SPORTS_CLUB", + "STADIUM_OR_ARENA", + "TENNIS_COMPLEX", + "STORE", + "BIKE_STORE", + "BOOK_STORE", + "CLOTHING_STORE", + "COMPUTER_STORE", + "CONVENIENCE_STORE", + "DEPARTMENT_STORE", + "ELECTRONICS_STORE", + "FLORIST", + "FURNITURE_STORE", + "GARDEN_STORE", + "GROCERY_STORE", + "HARDWARE_STORE", + "HOBBY_SHOP", + "HOME_GOODS_STORE", + "JEWELRY_STORE", + "LIQUOR_STORE", + "MENS_CLOTHING_STORE", + "MOBILE_PHONE_STORE", + "MOVIE_RENTAL_STORE", + "MUSIC_STORE", + "OFFICE_EQUIPMENT_STORE", + "OUTLET_STORE", + "PAWN_SHOP", + "PET_STORE", + "SHOE_STORE", + "SPORTING_GOODS_STORE", + "TIRE_SHOP", + "TOY_STORE", + "WHOLESALE_STORE", + "TELEVISION_STATION", + "TOURIST_INFORMATION_CENTER", + "TRAVEL_AGENCY", + "PERFORMING_GROUP", + "MUSIC_GROUP", + "ADMINISTRATIVE_AREA", + "CITY", + "COUNTRY", + "STATE", + "CIVIC_STRUCTURE", + "AIRPORT", + "AQUARIUM", + "BEACH", + "BUS_STATION", + "BUS_STOP", + "CAMPGROUND", + "CEMETERY", + "CREMATORIUM", + "EVENT_VENUE", + "GOVERNMENT_BUILDING", + "CITY_HALL", + "COURTHOUSE", + "DEFENCE_ESTABLISHMENT", + "EMBASSY", + "LEGISLATIVE_BUILDING", + "MUSEUM", + "MUSIC_VENUE", + "PARK", + "PARKING_FACILITY", + "PERFORMING_ARTS_THEATER", + "PLACE_OF_WORSHIP", + "BUDDHIST_TEMPLE", + "CATHOLIC_CHURCH", + "CHURCH", + "HINDU_TEMPLE", + "MOSQUE", + "SYNAGOGUE", + "PLAYGROUND", + "R_V_PARK", + "RESIDENCE", + "APARTMENT_COMPLEX", + "GATED_RESIDENCE_COMMUNITY", + "SINGLE_FAMILY_RESIDENCE", + "TOURIST_ATTRACTION", + "SUBWAY_STATION", + "TAXI_STAND", + "TRAIN_STATION", + "ZOO", + "LANDFORM", + "BODY_OF_WATER", + "CANAL", + "LAKE_BODY_OF_WATER", + "OCEAN_BODY_OF_WATER", + "POND", + "RESERVOIR", + "RIVER_BODY_OF_WATER", + "SEA_BODY_OF_WATER", + "WATERFALL", + "CONTINENT", + "MOUNTAIN", + "VOLCANO", + "LANDMARKS_OR_HISTORICAL_BUILDINGS", + "USER_INTERACTION", + "USER_PLUS_ONES", + "ENUMERATION", + "BOOK_FORMAT_TYPE", + "ITEM_AVAILABILITY", + "OFFER_ITEM_CONDITION", + "JOB_POSTING", + "LANGUAGE", + "OFFER", + "QUANTITY", + "DISTANCE", + "DURATION", + "ENERGY", + "MASS", + "RATING", + "AGGREGATE_RATING", + "STRUCTURED_VALUE", + "CONTACT_POINT", + "POSTAL_ADDRESS", + "GEO_COORDINATES", + "GEO_SHAPE", + "NUTRITION_INFORMATION", + "PRESENTATION_OBJECT", + "DOCUMENT_OBJECT", + "SPREADSHEET_OBJECT", + "FORM_OBJECT", + "DRAWING_OBJECT", + "PLACE_REVIEW", + "FILE_OBJECT", + "PLAY_MUSIC_TRACK", + "PLAY_MUSIC_ALBUM", + "MAGAZINE", + "CAROUSEL_FRAME", + "PLUS_EVENT", + "HANGOUT", + "HANGOUT_BROADCAST", + "HANGOUT_CONSUMER", + "CHECKIN", + "EXAMPLE_OBJECT", + "SQUARE", + "SQUARE_INVITE", + "PLUS_PHOTO", + "PLUS_PHOTO_ALBUM", + "LOCAL_PLUS_PHOTO_ALBUM", + "PRODUCT_REVIEW", + "FINANCIAL_QUOTE", + "DEPRECATED_TOUR_OBJECT", + "PLUS_PAGE", + "GOOGLE_CHART", + "PLUS_PHOTOS_ADDED_TO_COLLECTION", + "RECOMMENDED_PEOPLE", + "PLUS_POST", + "DATE", + "DRIVE_OBJECT_COLLECTION", + "NEWS_MEDIA_ORGANIZATION", + "DYNAMITE_ATTACHMENT_METADATA", + "DYNAMITE_MESSAGE_METADATA" + ], + "enumDescriptions": [ + "Largely deprecated, effectively an error condition and should not be in storage.", + "Embeds V2 types", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "The action of checking in, as opposed to a \"check-in\".", + "", + "", + "The act of commenting, which might result in a comment.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Boswell story (see goto/boswell)", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "A photo stored in photo service owned by a Google account user. This is distinct from PlusPhoto as it isn't tied to GPlus, but is instead intended to be a more general photo tied to a google user.", + "A photo album in photo service owned by a Google account user. This is distinct from PlusPhotoAlbum as it isn't tied to GPlus, but is instead intended to be a general photo album tied to a google user.", + "An embed used to create a single photo in photo service. This type is never stored but is used to create a GOOGLE_USER_PHOTO_V2 or PLUS_PHOTO_V2 embed.", + "Embeds V1 types", + "", + "", + "", + "", + "", + "", + "", + "CREATIVE_WORK subtypes", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "EVENT subtypes", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ORGANIZATION subtypes", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "PLACE subtypes", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "NOTE(jpanzer): This is a badly designed hierarchy and we should avoid depending on Event properties inside UserInteractions as much as possible IMHO.", + "", + "Intangibles, primarily used as sub-objects of other types", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "CREATIVE_WORK extensions", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Single frame for http://goto/carousel.", + "EVENT extensions", + "No declared proto. Used only as a base type for now.", + "", + "", + "", + "", + "NOTE(melchang): These correspond to http://schema.org/WebPage/Community and http://schema.org/WebPage/CommunityInvite. See b/7653610 for why these are \"SQUARE\" and not \"COMMUNITY\".", + "", + "", + "", + "", + "", + "", + "", + "", + "Data visualizations. See http://code.google.com/apis/chart/index.html", + "", + "A collection of people that have been recommended to a user.", + "A Google+ post.", + "An http://schema.org/Date unstructured ISO-8859 timestamp string.", + "Embed representing a collection of multiple Drive objects.", + "https://schema.org/NewsMediaOrganization", + "Deprecated in favor of DYNAMITE_MESSAGE_METADATA", + "Used for Dynamite message metadata in Hangouts" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "EmbedsPackagingServiceClient": { + "description": "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.", + "id": "EmbedsPackagingServiceClient", + "properties": { + "androidPackageName": { + "description": "Android app's package name to generate the deep-link URI.", + "type": "string" + }, + "iosAppStoreId": { + "description": "iOS app's App Store ID to generate the App Store URL when app is not installed on device.", + "type": "string" + }, + "iosBundleId": { + "description": "iOS app's bundle ID to generate the deep-link URI.", + "type": "string" + }, + "type": { + "description": "Type of Google API Console client.", + "enum": [ + "ANDROID", + "IOS" + ], + "enumDescriptions": [ + "Client for Android app.", + "Client for iOS app." + ], + "type": "string" + } + }, + "type": "object" + }, + "EmbedsProvenance": { + "description": "This field records where the ItemScope was retrieved, if it was created via a web fetch.", + "id": "EmbedsProvenance", + "properties": { + "annotationBlob": { + "description": "Annotation blob from Annotation Service.", + "format": "byte", + "type": "string" + }, + "canonicalUrl": { + "description": "Canonical url of the retrieved_url, if one was resolved during retrieval, for example, if a rel=\"canonical\" link tag was provided in the retrieved web page.", + "type": "string" + }, + "inputUrl": { + "description": "The url originally passed in the PRS request, which should be used to re-discover the content. Note that this URL may be a forwarding service or link shortener (bit.ly), so it should not be assumed to be canonical, but should be used for navigation back to the original source of the itemscope.", + "type": "string" + }, + "itemtype": { + "description": "Contains exact types as parsed, whether or not we recognized that type at parse time. If an itemscope is created by merging SchemaOrg markup and open graph markup then the first itemtype would be schemaorg type, the second would be open graph and so on. example: http://schema.org/VideoObject, og:video.movie Plain text; usually a URL", + "items": { + "type": "string" + }, + "type": "array" + }, + "retrievedTimestampMsec": { + "description": "The server retrieved timestamp (in msec).", + "format": "uint64", + "type": "string" + }, + "retrievedUrl": { + "description": "The final URL that was the actual source of the itemscope, after any redirects.", + "type": "string" + } + }, + "type": "object" + }, + "EmbedsTransientData": { + "description": "Transient generic data that will not be saved on the server.", + "id": "EmbedsTransientData", + "properties": {}, + "type": "object" + }, + "EntitySignalsClassificationOutput": { + "description": "Output of the classifier.", + "id": "EntitySignalsClassificationOutput", + "properties": { + "labels": { + "description": "Filled if used logistic regression (see ewok.proto for available labels).", + "items": { + "$ref": "EntitySignalsWeightedRelevanceRating" + }, + "type": "array" + }, + "relevanceScore": { + "description": "If using linear regression, this is the output value of the regression. If using logistic regression, this is the weighted aggregated rating. See http://go/entitymetric", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "EntitySignalsEntityClassification": { + "description": "Collection of input, extracted features and classification output.", + "id": "EntitySignalsEntityClassification", + "properties": { + "entityId": { + "description": "Entity id.", + "type": "string" + }, + "features": { + "description": "Input features used in classification.", + "items": { + "$ref": "EntitySignalsEntityFeature" + }, + "type": "array" + }, + "output": { + "$ref": "EntitySignalsClassificationOutput", + "description": "Classification output." + } + }, + "type": "object" + }, + "EntitySignalsEntityFeature": { + "id": "EntitySignalsEntityFeature", + "properties": { + "code": { + "enum": [ + "INVALID", + "NO_FEATURE_ENUM", + "WEBREF__ANCHOR_SCORE", + "WEBREF__BODY_SCORE", + "WEBREF__BUCKETIZED_TOPICALITY__0", + "WEBREF__BUCKETIZED_TOPICALITY__1", + "WEBREF__BUCKETIZED_TOPICALITY__2", + "WEBREF__BUCKETIZED_TOPICALITY__3", + "WEBREF__BUCKETIZED_TOPICALITY__4", + "WEBREF__CONFIDENCE_SCORE", + "WEBREF__CONNECTEDNESS", + "WEBREF__MENTION__MENTION_SCORE_AVG__BODY", + "WEBREF__MENTION__MENTION_SCORE_AVG__ANCHOR", + "WEBREF__MENTION__MENTION_SCORE_AVG__QUERY", + "WEBREF__MENTION__SUPPORT_SCORE_AVG__ANCHOR", + "WEBREF__MENTION__SUPPORT_SCORE_AVG__BODY", + "WEBREF__MENTION__SUPPORT_SCORE_AVG__QUERY", + "WEBREF__MENTION__TOKEN_WEIGHT_SUM__ANCHOR", + "WEBREF__MENTION__TOKEN_WEIGHT_SUM__BODY", + "WEBREF__MENTION__TOKEN_WEIGHT_SUM__QUERY", + "WEBREF__NB_SCORE", + "WEBREF__NORMALIZED_TOPICALITY", + "WEBREF__TOPICALITY", + "WEBREF__TOPICALITY_BUCKET__0", + "WEBREF__TOPICALITY_BUCKET__1", + "WEBREF__TOPICALITY_BUCKET__2", + "WEBREF__TOPICALITY_BUCKET__3", + "WEBREF__TOPICALITY_BUCKET__4", + "WEBREF__TOTAL_CANDIDATE_COUNT", + "ENTITY_SIGNALS__OTM__MAX", + "ENTITY_SIGNALS__OTM__GEO__AUTO", + "ENTITY_SIGNALS__OTM__GEO__HUMAN", + "ENTITY_SIGNALS__OTM__VERTICALS4__AUTO", + "ENTITY_SIGNALS__OTM__VERTICALS4__HUMAN" + ], + "enumDescriptions": [ + "used for e.g. empty feature names and parsing error", + "for the cases where there's no backing code", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "name": { + "description": "Name of the feature. For a completely list of available features, please check http://go/entityclassifierfeatures", + "type": "string" + }, + "value": { + "description": "Value of the feature.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "EntitySignalsWeightedRelevanceRating": { + "id": "EntitySignalsWeightedRelevanceRating", + "properties": { + "rating": { + "enum": [ + "UNRATED", + "NOT_RELEVANT", + "BARELY_RELEVANT", + "RELEVANT", + "IMPORTANT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "weight": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "EventIdMessage": { + "description": "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", + "id": "EventIdMessage", + "properties": { + "processId": { + "description": "process_id is an integer that identifies the process on this machine that generated this event. This id is calculated once when the server generates its first event, and may change if the process is migrated to a different host. This field has a very specific format mandated by the logs collection infrastructure, which is subject to change WITHOUT NOTICE. As of 2013-01-09, this format is: uint32 process_id = (time(NULL) \u003c\u003c 24) + (getpid() \u0026 0xFFFFFF); If you are generating an extended_pid directly, you MUST use one of the maintained library implementations in order to generate it properly: C++ //borg/borgletlib:extended_pid; call borg::ExtendedPid() Python //borg/borgletlib/python:pyextendedpid; call ExtendedPid() Go //borg/borgletlib/go:extendedpid; call Get() Java //java/com/google/common/logging; call EventId.getPid() If you think that you need to parse the values of this field, please contact logs-collection-dev@ to discuss your requirement.", + "format": "uint32", + "type": "integer" + }, + "serverIp": { + "description": "server_ip is the IPv4 address or http://go/ghostid of the machine running the server that created this event message. This allows us to distinguish between events that occur at the same time on different servers. Format: 10.1.2.3 is stored as 0x0a010203, and GHostId 1 as 0x00000001.", + "format": "uint32", + "type": "integer" + }, + "timeUsec": { + "description": "time_usec is the number of microseconds since the epoch (i.e., since 1970-01-01 00:00:00 UTC) as an int64: 1e6 * (unix time) + microseconds. Applications must ensure that EventIdMessages have increasing times, artificially increasing time_usec to one greater than the previous value if necessary. Alternate implementations were considered: 1. storing unix time and microseconds separately would require a bit more storage, and the convenience of having a single value representing the time seemed more useful than having trivial access to a unix time. 2. storing unix time in the upper 32 bits would allow for more precision - up to 4G events/second, but it wouldn't print nicely as a decimal value and it seems unlikely that any single server would ever sustain more than 1M events/second. 3. Java-compatible time uses millis - this would limit servers to 1000 events per second - too small. Other names for this field were considered, including time, time_stamp, and utime. We felt that including the units in the name would tend to produce more readable code. utime might be interpreted as user time. unix timestamp * 1e6 + microseconds", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "ExtraSnippetInfoResponse": { + "description": "the extra info response from ascorer used to build snippets in GWS experiments", + "id": "ExtraSnippetInfoResponse", + "properties": { + "matchinfo": { + "$ref": "ExtraSnippetInfoResponseMatchInfo" + }, + "querysubitem": { + "items": { + "$ref": "ExtraSnippetInfoResponseQuerySubitem" + }, + "type": "array" + }, + "tidbit": { + "items": { + "$ref": "ExtraSnippetInfoResponseTidbit" + }, + "type": "array" + } + }, + "type": "object" + }, + "ExtraSnippetInfoResponseMatchInfo": { + "id": "ExtraSnippetInfoResponseMatchInfo", + "properties": { + "titleMatches": { + "description": "bitvector of query items matching the title", + "format": "uint64", + "type": "string" + }, + "urlMatches": { + "description": "bitvector of query items matching the url", + "format": "uint64", + "type": "string" + }, + "weightedItems": { + "description": "bitvector of query items considered by chooser", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "ExtraSnippetInfoResponseQuerySubitem": { + "description": "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].", + "id": "ExtraSnippetInfoResponseQuerySubitem", + "properties": { + "isHighlighted": { + "description": "Additional information from the SnippetQuery.", + "type": "boolean" + }, + "isOptional": { + "type": "boolean" + }, + "isOriginal": { + "description": "true iff this subitem was an original query term or phrase. Can only be false if want_all_query_subitems == true in the request.", + "type": "boolean" + }, + "items": { + "description": "a bitvector of the query items corresponding to this subitem. Typically only one bit is set, but see comment above.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "text associated with this query item", + "type": "string" + }, + "weight": { + "description": "the weight of this query item, as calculated by SubitemWeight(): https://qwiki.corp.google.com/display/Q/SnippetWeights", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ExtraSnippetInfoResponseTidbit": { + "id": "ExtraSnippetInfoResponseTidbit", + "properties": { + "anchorinfo": { + "$ref": "ExtraSnippetInfoResponseTidbitAnchorInfo" + }, + "begin": { + "description": "For tidbits only: position of tidbit in the document. More specifically, tidbit is found at [begin, end) in the document's tokens.", + "format": "int32", + "type": "integer" + }, + "end": { + "format": "int32", + "type": "integer" + }, + "items": { + "description": "a bitvector of each query term within this tidbit", + "format": "uint64", + "type": "string" + }, + "score": { + "description": "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)", + "format": "float", + "type": "number" + }, + "text": { + "description": "the tidbit text, with search terms already highlighted", + "type": "string" + }, + "type": { + "enum": [ + "TIDBIT", + "BODY", + "META", + "GWD", + "FULL", + "ANCHOR" + ], + "enumDescriptions": [ + "it is a tidbit returned by want_all_tidbits", + "these are the best candidate snippets from each section, returned by want_all_snippets", + "", + "NOTE(kinoue): ODP/GWD snippet is unlaunched as of June 2017. This is no longer used.", + "", + "NOTE(kinoue): Deprecated and unsupported. anchor text, returned if max_anchors_wanted \u003e 0" + ], + "type": "string" + } + }, + "type": "object" + }, + "ExtraSnippetInfoResponseTidbitAnchorInfo": { + "description": "this information is specific to anchors and is only returned if type == ANCHOR", + "id": "ExtraSnippetInfoResponseTidbitAnchorInfo", + "properties": { + "offdomainCount": { + "format": "int32", + "type": "integer" + }, + "ondomainCount": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "FaceIndexing": { + "id": "FaceIndexing", + "properties": { + "mustangBytes": { + "description": "Always use image/search/utils/face_proto_util.h for packing and unpacking these values.", + "format": "byte", + "type": "string" + }, + "mustangBytesVersion": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "FatcatCompactBinaryClassification": { + "id": "FatcatCompactBinaryClassification", + "properties": { + "binaryClassifier": { + "description": "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.", + "enum": [ + "BLOG", + "FORUM", + "LOGIN", + "B2B_OK", + "IMAGES", + "SOCIAL", + "PURCHASING_INTENT", + "PORN", + "ADULTISH", + "VIOLENCE_GORE", + "GOSSIP" + ], + "enumDescriptions": [ + "Pagetypes", + "", + "", + "", + "", + "", + "", + "Sensitive content", + "", + "", + "" + ], + "type": "string" + }, + "binaryClassifierName": { + "type": "string" + }, + "discreteFraction": { + "description": "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", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "FatcatCompactDocClassification": { + "description": "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.", + "id": "FatcatCompactDocClassification", + "properties": { + "binary": { + "items": { + "$ref": "FatcatCompactBinaryClassification" + }, + "type": "array" + }, + "clusters": { + "$ref": "FatcatCompactRephilClusters" + }, + "epoch": { + "type": "string" + }, + "langCode": { + "type": "string" + }, + "rephilModelId": { + "description": "The id of the Rephil model used to generate the Rephil clusters. If it is absent, Rephil 4 is assumed.", + "format": "int32", + "type": "integer" + }, + "taxonomic": { + "items": { + "$ref": "FatcatCompactTaxonomicClassification" + }, + "type": "array" + }, + "url": { + "description": "not needed if the url is the sstable / bigtable key used during intermediate processing only", + "type": "string" + }, + "weight": { + "description": "The relative weight of this doc within a site, typically something like pagerank or navboost impressions. May be a large number (like an actual pageviews estimate), not limited to a small range.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "FatcatCompactRephilClusters": { + "id": "FatcatCompactRephilClusters", + "properties": { + "cluster": { + "items": { + "$ref": "FatcatCompactRephilClustersCluster" + }, + "type": "array" + } + }, + "type": "object" + }, + "FatcatCompactRephilClustersCluster": { + "id": "FatcatCompactRephilClustersCluster", + "properties": { + "discreteWeight": { + "description": "0...127 corresponds to 0.0 - 1.0", + "format": "int32", + "type": "integer" + }, + "id": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "FatcatCompactTaxonomicClassification": { + "description": "A version of this proto for logging is available at cs/symbol:logged_fatcat.LoggedCompactTaxonomicClassification", + "id": "FatcatCompactTaxonomicClassification", + "properties": { + "category": { + "items": { + "$ref": "FatcatCompactTaxonomicClassificationCategory" + }, + "type": "array" + }, + "taxonomy": { + "description": "Either taxonomy will be set, using the enum above, or taxonomy_name will be set (if the taxonomy is not one of the ones in the enum) - never both", + "enum": [ + "VERTICALS", + "VERTICALS4", + "VERTICALS4_GEO", + "GEO", + "PRODUCTS_SERVICES", + "ICM_IM_AUDIENCES", + "ICM_IM_AUDIENCES_DEV" + ], + "enumDescriptions": [ + "DEPRECATED Verticals, v3", + "Publisher Verticals, v4. go/verticals4", + "Publisher Verticals, v4 + World Localities", + "World Localities", + "Products \u0026 Services", + "ICM In Market Audiences", + "Experimental ICM In Market Audiences" + ], + "type": "string" + }, + "taxonomyName": { + "type": "string" + } + }, + "type": "object" + }, + "FatcatCompactTaxonomicClassificationCategory": { + "description": "A taxonomic category. A classification consists of weight (totalling 1.0) distributed among one or more categories.", + "id": "FatcatCompactTaxonomicClassificationCategory", + "properties": { + "discreteWeight": { + "description": "go/petacat-faq#how-should-i-interpret-classification-weights Discrete to reduce size. Range is [0,127], corresponding to [0.0,1.0].", + "format": "int32", + "type": "integer" + }, + "id": { + "description": "The category's ID, e.g. 20 for /Sports in the go/verticals4 taxonomy.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "FocusBackendContactDetailHash": { + "description": "http://go/contact-detail-hash.", + "id": "FocusBackendContactDetailHash", + "properties": { + "type": { + "enum": [ + "UNSPECIFIED", + "PHONE", + "EMAIL" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "value": { + "description": "The hash here will be a 16-bit weak hash to avoid reverse engineering for decoding the actual contact detail. The hash value is computed by the fingerprint of the raw contact detail mod 2^16.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "FocusBackendContactPointer": { + "description": "A contact pointer that represents a contact (http://go/assistant-contact-id).", + "id": "FocusBackendContactPointer", + "properties": { + "annotationId": { + "description": "The annotation ID. Annotations are only allowed to point to annotations that do not themselves have a pointer (avoids any possibilty of loops). Cast this field to string in javascript to make it compile in js.", + "format": "int64", + "type": "string" + }, + "deviceRawContactId": { + "$ref": "FocusBackendDeviceRawContactId", + "description": "The raw contact ID from an active mobile device of the user." + }, + "focusContactId": { + "description": "The contact ID from the Focus backend. Cast this field to string in javascript to make it compile in js.", + "format": "int64", + "type": "string" + }, + "otherContactId": { + "$ref": "FocusBackendOtherContactId", + "description": "Additional contact ids that are not actively used to match contact pointers to contacts." + }, + "secondaryId": { + "$ref": "FocusBackendSecondaryContactId", + "description": "The secondary identifier of contact. It will be used when the primary ID doesn't match any contact." + } + }, + "type": "object" + }, + "FocusBackendDeviceContactId": { + "description": "//////////////////// DeviceContactId ////////////////////// Used by Device Contacts only. For more details see go/fbs-support-for-device-contacts.", + "id": "FocusBackendDeviceContactId", + "properties": { + "ContactId": { + "description": "DeviceContact Id.", + "format": "int64", + "type": "string" + }, + "DeviceId": { + "$ref": "FocusBackendDeviceId", + "description": "Device Id." + } + }, + "type": "object" + }, + "FocusBackendDeviceId": { + "description": "//////////////////// DeviceId ////////////////////// Used by Device Contacts only. For more details see go/fbs-support-for-device-contacts.", + "id": "FocusBackendDeviceId", + "properties": { + "AndroidDeviceId": { + "description": "The GServices id on Android. See go/android-id.", + "format": "int64", + "type": "string" + }, + "Hash": { + "description": "DeviceId.Hash is a SHA256 of some attribute of the user and device. For Android devices: Hash = SHA256(gaia_account_name + “:” + “1” + “:” + (android id - LSB)); For iOS devices: Hash = TOLOWER(HEX(GMCSComputeUserDeviceToken(userId, iOsDeviceId)) For more details see go/client-instance-id.", + "type": "string" + } + }, + "type": "object" + }, + "FocusBackendDeviceRawContactId": { + "description": "//////////////////// 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.", + "id": "FocusBackendDeviceRawContactId", + "properties": { + "DeviceId": { + "$ref": "FocusBackendDeviceId" + }, + "RawContactId": { + "description": "Raw ID assigned by the device. Cast this field to string in javascript to make it compile in js.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "FocusBackendOtherContactId": { + "description": "Additional contact ids that are not actively used to match contact pointers to contacts. There may be overlap with primary or secondary contact ids.", + "id": "FocusBackendOtherContactId", + "properties": { + "deviceContactId": { + "description": "Device contact ID, when available: - The annotation points to a device contact, and the device contact id was correctly populated when the annotation was created. Note that the device contact id is populated once per device contact on a device. It is distinct from RawContactId - a single device contact may have multiple raw contact ids. - The annotation points to a Focus contact that was merged with device contact information in Starlight. When the annotation was created, a device contact id was available on the merged person object. - The contact annotation was created from April 2021 onwards. All prior annotations do not populate this field. ContactPointer creation relies on the client caller to correctly populate the device contact id, and does not enforce any assumptions on availability of this field. This field is repeated because in rare cases Starlight may merge device contact information across different devices into a single merged person object. WARNING: Use with extreme caution! This ID is not stable. For more details see go/fbs-support-for-device-contacts.", + "items": { + "$ref": "FocusBackendDeviceContactId" + }, + "type": "array" + } + }, + "type": "object" + }, + "FocusBackendSecondaryContactId": { + "description": "The secondary ID of a contact.", + "id": "FocusBackendSecondaryContactId", + "properties": { + "contactDetailHash": { + "description": "The hashes of the contact details (e.g. phone number and email address).", + "items": { + "$ref": "FocusBackendContactDetailHash" + }, + "type": "array" + }, + "contactName": { + "description": "The contact's full name, not hashed.", + "type": "string" + }, + "contactNameHash": { + "description": "The hash of contact's full name, generated using Fingerprint2011(). Cast this field to string in javascript to make it compile in js.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "FreebaseCitation": { + "description": "Citation contains the information needed to correctly attribute the source of data.", + "id": "FreebaseCitation", + "properties": { + "dataset": { + "description": "Mid of the dataset.", + "type": "string" + }, + "isAttributionRequired": { + "description": "If set to true, the citation is required to be displayed when the data is used.", + "type": "boolean" + }, + "project": { + "description": "Name of the project of the data's origin.", + "type": "string" + }, + "provider": { + "description": "The name of the provider of this information.", + "type": "string" + }, + "statement": { + "description": "A human readable statement of attribution.", + "type": "string" + }, + "uri": { + "description": "Uri link associated with this data.", + "type": "string" + } + }, + "type": "object" + }, + "FreebaseId": { + "description": "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).", + "id": "FreebaseId", + "properties": { + "id": { + "description": "\"id\" may be a human readable ID (HRID) or a MID. Originally it was intended to always be a human readable ID, but that convention was not always followed so clients should be wary. Not every topic has an id.", + "type": "string" + }, + "mid": { + "description": "The \"mid\" should be used whenever a globally unique, primary key into the Knowledge Graph is needed. These keys are always prefixed with the \"/m\" and \"/g\", (and more rarely the \"/x\" and \"/t\") namespaces, and are alphanumeric strings consisting of lowercase letters excluding vowels, numbers and the underscore character. (Applications should not assume a constant length for these strings as Livegraph reserves the right to extend the number of characters to accommodate more topics.)", + "type": "string" + } + }, + "type": "object" + }, + "FreebaseLatLong": { + "description": "Represents a geopoint, which is one of the possible Value types.", + "id": "FreebaseLatLong", + "properties": { + "latDeg": { + "format": "float", + "type": "number" + }, + "longDeg": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "FreebaseMeasurement": { + "description": "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 }", + "id": "FreebaseMeasurement", + "properties": { + "magnitude": { + "format": "float", + "type": "number" + }, + "unit": { + "description": "Repeated units are interpreted as a product. i.e. (meter ^ 1) * (second ^ -2)", + "items": { + "$ref": "FreebaseMeasurementUnit" + }, + "type": "array" + } + }, + "type": "object" + }, + "FreebaseMeasurementUnit": { + "id": "FreebaseMeasurementUnit", + "properties": { + "power": { + "format": "int32", + "type": "integer" + }, + "unit": { + "$ref": "FreebaseId" + }, + "unitMid": { + "description": "Deprecated fields.", + "type": "string" + } + }, + "type": "object" + }, + "FreebaseNestedStruct": { + "description": "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.", + "id": "FreebaseNestedStruct", + "properties": { + "propertyValue": { + "items": { + "$ref": "FreebasePropertyValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "FreebasePropertyValue": { + "description": "A PropertyValue associates properties with values in the context of a topic.", + "id": "FreebasePropertyValue", + "properties": { + "property": { + "$ref": "FreebaseId", + "description": "The id of the property." + }, + "totalValueCount": { + "description": "Indicates the total values that exist for this property, even if they aren't all present in the value field, due to truncation.", + "format": "int64", + "type": "string" + }, + "value": { + "description": "The value associated with the property for the containing topic.", + "items": { + "$ref": "FreebaseValue" + }, + "type": "array" + }, + "valueStatus": { + "description": "If ValueStatus is not set at all, the implication is that there are well-known value(s), specified in the \"value\" field. (It should be considered malformed data to have value_status set when len(values) \u003e 0.)", + "enum": [ + "HAS_UNKNOWN_VALUE", + "HAS_NO_VALUE" + ], + "enumDescriptions": [ + "There are values, but we don't know what they are. (e.g. person is known to have children, but we don't know who they are) (This is only sensible if len(values) == 0; it is an error to see this value if len(values) \u003e 0)", + "We know that there are no values for this predicate. (e.g. person is known to have zero children) (This is only sensible if len(values) == 0; it is an error to see this value if len(values) \u003e 0)" + ], + "type": "string" + } + }, + "type": "object" + }, + "FreebaseTopic": { + "description": "A Topic represents a Knowledge Graph entity with its associated properties and their values.", + "id": "FreebaseTopic", + "properties": { + "id": { + "$ref": "FreebaseId", + "description": "The id (mid and human-readable id) of the topic. The id will always be present and will contain a mid value for topics in the topic sstable." + }, + "propertyValue": { + "description": "The property-value bindings associated with the topic. Note that in the case where a property is relevant to a topic based on its type, but no values of that property are present for the topic, the PropertyValue will simply not appear, rather than being present with a null value, or empty repeated value list.", + "items": { + "$ref": "FreebasePropertyValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "FreebaseValue": { + "description": "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).", + "id": "FreebaseValue", + "properties": { + "boolValue": { + "description": "key, uri, or datetime. Present when value is bool.", + "type": "boolean" + }, + "citation": { + "$ref": "FreebaseCitation", + "description": "Citation data for this value. See: http://go/kg-clap" + }, + "compoundValue": { + "$ref": "FreebaseTopic", + "description": "Compound values are those that contain either a number of simple valued facets (such as a latitude/longitude pair), or \"mediator\" topics representing multi-dimensional relationships between topics. In both cases we represent them here with an embedded topic, although the topic's identity is somewhat secondary to the property/value pairs it contains. (The identity is still made available so that it can be used to perform updates to that mediator on the Knowledge Graph.)" + }, + "deletionProvenance": { + "description": "Deletion provenance for this value.", + "items": { + "$ref": "StorageGraphBfgTripleProvenance" + }, + "type": "array" + }, + "displayLang": { + "description": "The lang of the display_value field.", + "type": "string" + }, + "displayValue": { + "description": "The display value of this value. This is a i18n-aware formatted value if present.", + "type": "string" + }, + "expectedProto": { + "description": "An optional name for a proto field.", + "type": "string" + }, + "floatValue": { + "description": "Present when value is float.", + "format": "double", + "type": "number" + }, + "idValue": { + "$ref": "FreebaseId", + "description": "Present when value is an id." + }, + "index": { + "description": "Index of the value relative to the containing property (if any). Knowledge Graph supports a loose notion of indexing: some non-unique properties may have indices, while others may not. Furthermore, for a single property, some values may have indices (such as the top 5 actors in a film), while others may not (the film's supporting cast). Un-indexed values will appear at the end of the repeated value list. This field contains the index value only when is present in the Knowledge Graph.", + "format": "uint64", + "type": "string" + }, + "intValue": { + "description": "Present when value is int.", + "format": "int64", + "type": "string" + }, + "lang": { + "description": "Whenever the value is text with TYPE_TEXT, the lang field is populated with the III LanguageCode associated with the string_value field.", + "type": "string" + }, + "latLongValue": { + "$ref": "FreebaseLatLong" + }, + "measurementValue": { + "$ref": "FreebaseMeasurement" + }, + "nestedStruct": { + "$ref": "FreebaseNestedStruct", + "description": "Populated if this value holds NestedStruct. 'type' field needs to be set to TYPE_NESTED_STRUCT." + }, + "provenance": { + "description": "Provenance for this value.", + "items": { + "$ref": "StorageGraphBfgTripleProvenance" + }, + "type": "array" + }, + "rawValue": { + "description": "Similar to string_value/etc but contains raw bytes.", + "format": "byte", + "type": "string" + }, + "stringValue": { + "description": "Present when value is text, enum,", + "type": "string" + }, + "subgraphId": { + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "timestamp": { + "description": "The ISO-8601 timestamp corresponding to when this value was created (when it was written to the Knowledge Graph). Deprecated in favor of timestamp_usec.", + "type": "string" + }, + "timestampUsec": { + "description": "The microsecond timestamp corresponding to when this value was created.", + "format": "int64", + "type": "string" + }, + "type": { + "enum": [ + "TYPE_NULL", + "TYPE_ID", + "TYPE_TEXT", + "TYPE_ENUM", + "TYPE_KEY", + "TYPE_URI", + "TYPE_DATETIME", + "TYPE_BOOL", + "TYPE_INT", + "TYPE_FLOAT", + "TYPE_COMPOUND", + "TYPE_PROTO", + "TYPE_EXTENSION", + "TYPE_NESTED_STRUCT", + "TYPE_LAT_LONG", + "TYPE_MEASUREMENT", + "TYPE_HAS_VALUE", + "TYPE_HAS_NO_VALUE" + ], + "enumDescriptions": [ + "No fields are supplied.", + "id_value contains an Id of a referenced topic.", + "For text, string_value contains an UTF-8 string,", + "and lang contains the III LanguageCode code. For bytes, string_value contains non-UTF-8 bytes. string_value contains an enum key string.", + "string_value contains a namespace key string.", + "string_value contains a URI string.", + "string_value contains a (possibly truncated)", + "ISO-8601 datetime string (always UTC relative). bool_value contains a bool.", + "int_value contains an int. Uint64 are supported", + "(they are encoded as int64, which looks odd when printed, but the representation is correct). float_value contains a float.", + "compound_value contains property/value pairs.", + "raw_value contains a raw proto.", + "This proto has extensions set.", + "nested_struct field is populated.", + "lat_long_value contains a geopoint.", + "measurement_value contains a measurement.", + "No longer used; pending downstream code cleanup.", + "No longer used; pending downstream code cleanup." + ], + "type": "string" + } + }, + "type": "object" + }, + "GDocumentBase": { + "description": "Next id: 127", + "id": "GDocumentBase", + "properties": { + "ContentExpiryTime": { + "description": "unix secs from epoch", + "format": "int32", + "type": "integer" + }, + "DisplayUrl": { + "description": "Sometimes the URL displayed in search results should be different from what gets indexed (e.g. in enterprise, content management systems). If this value is not set, we default to the regular URL.", + "type": "string" + }, + "DocId": { + "description": "64-bit docid of the document (usually fingerprint of URL, but not always). WARNING: This does NOT uniquely identify a document ANYMORE. For a unique identifier across all documents in production please refer to the field 'id().key()' listed above.", + "format": "uint64", + "type": "string" + }, + "ExternalFeedMetadata": { + "type": "string" + }, + "ExternalHttpMetadata": { + "description": "Enterprise-specific external metadata. See http://engdoc/eng/designdocs/enterprise/enterprise_indexing_metadata.html", + "type": "string" + }, + "FilterForSafeSearch": { + "description": "Deprecated, do not use, this field is not populated since 2012.", + "format": "int32", + "type": "integer" + }, + "IPAddr": { + "description": "IP addr in binary (allows for IPv6)", + "format": "byte", + "type": "string" + }, + "NoArchiveReason": { + "format": "int32", + "type": "integer" + }, + "NoFollowReason": { + "format": "int32", + "type": "integer" + }, + "NoImageIndexReason": { + "format": "int32", + "type": "integer" + }, + "NoImageframeOverlayReason": { + "format": "int32", + "type": "integer" + }, + "NoIndexReason": { + "description": "When these reasons are set to a non zero value, the document should not be indexed, or show a snippet, or show a cache, etc. These reasons are bit maps of indexing.converter.RobotsInfo.RobotedReasons enum values reflecting the places where the restriction was found.", + "format": "int32", + "type": "integer" + }, + "NoPreviewReason": { + "format": "int32", + "type": "integer" + }, + "NoSnippetReason": { + "format": "int32", + "type": "integer" + }, + "NoTranslateReason": { + "format": "int32", + "type": "integer" + }, + "Pagerank": { + "description": "Pagerank for doc (if known)", + "format": "int32", + "type": "integer" + }, + "PagerankNS": { + "description": "Pagerank-NearestSeeds is an alternative pagerank score for the doc.", + "format": "int32", + "type": "integer" + }, + "Repid": { + "description": " is the webmirror representative id of the canonical url. Urls with the same repid are considered as dups in webmirror. WARNING: use this field with caution! The webmirror duprules change frequently, so this value only reflects the duprules at the time when the canonical's docjoin is built.", + "format": "byte", + "type": "string" + }, + "ScienceMetadata": { + "$ref": "ScienceCitation", + "description": "Citation data for science articles." + }, + "URL": { + "description": "WARNING: the URL does NOT uniquely identify a document ANYMORE. For a unique identifier across all documents in production please refer to the field 'id().key()' listed above. Reason: foo.bar:/http and foo.bar:/http:SMARTPHONE share the same URL, but the body of the two documents might differ because of different crawl-context (desktop vs. smartphone in this example).", + "type": "string" + }, + "URLAfterRedirects": { + "type": "string" + }, + "URLEncoding": { + "description": "See webutil/urlencoding", + "format": "int32", + "type": "integer" + }, + "content": { + "$ref": "GDocumentBaseContent" + }, + "directory": { + "items": { + "$ref": "GDocumentBaseDirectory" + }, + "type": "array" + }, + "ecnFp": { + "description": "96-bit fingerprint of the canonical url's webmirror equivalence class name as of when this cdoc was exported.", + "format": "byte", + "type": "string" + }, + "id": { + "$ref": "IndexingCrawlerIdServingDocumentIdentifier", + "description": "The primary identifier of a production document is the document key given in the ServingDocumentIdentifier, which is the same as the row-key in Alexandria, and represents a URL and its crawling context. In your production code, please always assume that the document key is the only way to uniquely identify a document. ## Recommended way of reading: const string\u0026 doc_key = cdoc.doc().id().key(); ## CHECK(!doc_key.empty()); More background information can be found in google3/indexing/crawler_id/servingdocumentidentifier.proto The ServingDocumentIdentifier uniquely identifies a document in serving and also distinguishes between experimental vs. production documents. The SDI is also used as an input for the union/muppet key generation in serving." + }, + "localsearchDocInfo": { + "$ref": "LocalsearchDocInfo", + "description": "Localsearch-specific data." + }, + "oceanDocInfo": { + "$ref": "OceanDocInfo", + "description": "Ocean-specific data." + }, + "originalcontent": { + "$ref": "GDocumentBaseOriginalContent" + }, + "userAgentName": { + "description": "The user agent name used to crawl the URL. See //crawler/engine/webmirror_user_agents.h for the list of user-agents (e.g. crawler::WebmirrorUserAgents::kGoogleBot). NOTE: This field is copied from the first WEBMIRROR FetchReplyClientInfo in trawler_fetch_info column. We leave this field unpopulated if no WEBMIRROR FecthReplyClientInfo is found. As the submission of cl/51488336, Alexandria starts to populate this field. However, docjoins from freshdocs (or any other source), won't have this field populated, because we believe no one needs to read this field from freshdocs docjoins.", + "type": "string" + } + }, + "type": "object" + }, + "GDocumentBaseContent": { + "description": "Main content section", + "id": "GDocumentBaseContent", + "properties": { + "AuthMethod": { + "format": "int32", + "type": "integer" + }, + "ContentLength": { + "description": "The actual length of the content: If Representation is compressed, this equals to Content.UncompressedLength; otherwise it is the length of the representation string.", + "format": "int32", + "type": "integer" + }, + "ContentType": { + "description": "See enum ContentType in webutil/http/content-type.proto.", + "format": "int32", + "type": "integer" + }, + "CrawlTime": { + "description": "Seconds since Unix epoch.", + "format": "int64", + "type": "string" + }, + "Encoding": { + "description": "See //depot/google3/i18n/encodings/public/encodings.h Encoding of representation", + "format": "int32", + "type": "integer" + }, + "HasHttpHeader": { + "description": "Set to false if Representation does not contain HTTP headers.", + "type": "boolean" + }, + "Language": { + "description": "A Language enum value. See: go/language-enum Default is english", + "format": "int32", + "type": "integer" + }, + "OriginalEncoding": { + "description": "If OriginalEncoding is present, the body part of the Representation was converted to UTF-8, Encoding was set to UTF8, and OriginalEncoding was set to the original encoding before conversion. However, the HTTP headers part of the content might not be valid UTF-8. -1=an invalid value", + "format": "int32", + "type": "integer" + }, + "Representation": { + "description": "Possibly compressed for old documents. It is not compressed for docjoins produced by Raffia after ~2012.", + "format": "byte", + "type": "string" + }, + "UncompressedLength": { + "description": "Historically present if Representation is compressed.", + "format": "int32", + "type": "integer" + }, + "VisualType": { + "description": "Whether the content was visual right-to-left, and if so, what type of visual document it is. Must be one of the values in enum VisualType from google3/repository/rtl/visualtype.h Default is NOT_VISUAL_DOCUMENT. See http://wiki/Main/RtlLanguages for background.", + "format": "int32", + "type": "integer" + }, + "crawledFileSize": { + "description": "Crawled file size of the original document.", + "format": "int32", + "type": "integer" + }, + "encodedGeometryAnnotations": { + "description": "GeometryAnnotations, encoded with GeometryUtil::DeltaEncode() to reduce disk space usage. Use GeometryUtil::DeltaDecode() to decode this field.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "GDocumentBaseDirectory": { + "description": "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. ", + "id": "GDocumentBaseDirectory", + "properties": { + "Category": { + "description": "encoded in UTF8", + "type": "string" + }, + "Description": { + "description": "encoded in UTF8", + "type": "string" + }, + "DescriptionScore": { + "format": "float", + "type": "number" + }, + "Identifier": { + "description": "\"gwd\", etc.", + "type": "string" + }, + "Language": { + "description": "go/language-enum", + "format": "int32", + "type": "integer" + }, + "Title": { + "description": "encoded in UTF8", + "type": "string" + }, + "TitleScore": { + "description": "Deprecated; do not use. There is no code populating these fields as of Oct 2017.", + "format": "float", + "type": "number" + }, + "URL": { + "type": "string" + } + }, + "type": "object" + }, + "GDocumentBaseOriginalContent": { + "description": "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.", + "id": "GDocumentBaseOriginalContent", + "properties": { + "Representation": { + "type": "string" + }, + "UncompressedLength": { + "description": "present iff rep is compressed", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GenericSnippetResponse": { + "description": "The generic version of a snippet response", + "id": "GenericSnippetResponse", + "properties": { + "debugInfo": { + "description": "Per-doc debug information.", + "items": { + "type": "string" + }, + "type": "array" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Servlet-specific response info." + }, + "snippet": { + "description": "Lines of the snippet HTML. Typically gws concatenates these and lets the browser wrap. The values include trailing spaces, so inserting additional spaces is not necessary. However, for very old browsers, gws may insert break tags after each snippet line. This field is confusing and poorly named; \"snippet_line\" would be better. In particular, note that this does not return multiple snippets for a result. Nor are these fields the individual tidbits of the snippet.", + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "description": "The title HTML. It may contain tags to denote query term matches. It may be already truncated and \"...\" is put instead (note that truncation does not always happen at the very end of the title text). However the existence of \"...\" does not guarantee that the snippet generation algorithm truncated it; e.g. webmasters themselves can write \"...\".", + "type": "string" + }, + "wwwSnippetResponse": { + "$ref": "WWWSnippetResponse", + "description": "Snippet-specific members (tag ids 16+, must be optional!) Example: optional NewContentResponse new_response;" + } + }, + "type": "object" + }, + "GeoOndemandAssistantSupportedActions": { + "description": "Actions supported by Madden for a local entity.", + "id": "GeoOndemandAssistantSupportedActions", + "properties": { + "allowsGuestCheckout": { + "description": "Whether this local entity allows guest checkout for reservations.", + "type": "boolean" + }, + "isAsynchronousRestaurantReservation": { + "description": "Whether or not this local entity supports asynchronous restaurant reservations, through the above restaurant_reservation_url.", + "type": "boolean" + }, + "restaurantReservationUrl": { + "description": "URL for the Madden restaurant reservation flow, e.g. for display in a WebView. Not populated if restaurant reservations are not supported for the local entity.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreAccessPointProto": { + "description": "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", + "id": "GeostoreAccessPointProto", + "properties": { + "canEnter": { + "description": "RESERVED", + "type": "boolean" + }, + "canExit": { + "description": "RESERVED", + "type": "boolean" + }, + "featureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The ID of the feature that defines the access point. The bounding box of the feature is expanded to include the bounding box of the feature with the access point in accordance with the standard practice for bucketing map/reduce operations. See the wiki page at http://wiki/Main/OysterBucketingMapReduce for more information. For access points to TYPE_SEGMENT features, this may be re-derived if necessary by looking up the nearest segment to existing geometry." + }, + "featureType": { + "description": "The type of the feature. Required, to allow handling the access point differently based on feature type. For access points to non-TYPE_SEGMENT features, this cached type also makes things easier for clients that aren't running a bucketing map-reduce. For access points to TYPE_SEGMENT features, this is used to find to find the nearest segment of the given type.", + "format": "int32", + "type": "integer" + }, + "levelFeatureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "For indoor access points, this should be set to the level that the access point is on. The feature_id should point to the indoor segment, but when it is missing or invalid, and we need to derive it from geometry, only segments on this level will be considered. For non-indoor access points, level should remain unset, and when we derive feature_id from geometry, only segments not on any level (non-indoor segments) will be considered. The bounding box of the level feature is expanded to include the bounding box of the feature with the access point in accordance with the standard practice for bucketing map/reduce operations. See the wiki page at http://wiki/Main/OysterBucketingMapReduce for more information. (Though in general the feature should reside on the level already anyway..)" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this access point." + }, + "point": { + "$ref": "GeostorePointProto", + "description": "For access points to non-TYPE_SEGMENT features, the location of the access point. For access points to TYPE_SEGMENT features, this can be supplied as a fuzzy access point that is not guaranteed to be on the correct side of road. It should not be used by end clients in case of TYPE_SEGMENT access points." + }, + "pointOffSegment": { + "$ref": "GeostorePointProto", + "description": "If the access point is defined by a TYPE_SEGMENT feature, this is the location of the access point displaced slightly to the correct side of the segment. This offset is in a direction perpendicular to the direction of travel along the segment. The actual offset distance is unspecified. It would typically be relatively small (approximately 1 meter). You can subtract the \"off segment\" point from the \"on segment\" point to get a vector of unknown length pointing from \"on segment\" point to the \"off segment\" point. You can then scale that vector to whatever length you want. Note that extending this displacement vector a large distance (10s of meters) may result in a new point that is in the middle of some other feature (park, street, intersection). This is the preferred basic geometry field for incoming data from editing clients and importers, if side-of-road is well-established." + }, + "pointOnSegment": { + "$ref": "GeostorePointProto", + "description": "If the access point is defined by a TYPE_SEGMENT feature, this is the point on the centerline of the segment that is closest to the actual access point. May be re-derived if necessary to maintain precise placement on segment." + }, + "priority": { + "description": "LINT.ThenChange(//depot/google3/geostore/cleanup/callbacks/\\ ID_DUPLICATE_ACCESS_POINT.cc)", + "enum": [ + "TYPE_PRIMARY", + "TYPE_SECONDARY" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "segmentPosition": { + "description": "If the access point is defined by a TYPE_SEGMENT feature, this is the location of the access point expressed as a fractional distance along the segment. The value runs from 0 to 1 inclusive. May be re-derived if necessary to maintain precise placement on segment.", + "format": "float", + "type": "number" + }, + "unsuitableTravelMode": { + "description": "This list represents the travel modes for which this access-point should be avoided. If this list is empty, the access-point is suitable for any travel mode. If all access points are unsuitable for the current travel mode, client should revert to other heuristics (e.g. feature center). This is only used for access points to TYPE_SEGMENT features; access points to non-TYPE_SEGMENT features, e.g. TYPE_ESTABLISHMENT_POI features with gcid:transit_station GConcepts are just identified by feature_type and feature_id.", + "items": { + "enum": [ + "TRAVEL_MODE_MOTOR_VEHICLE", + "TRAVEL_MODE_AUTO", + "TRAVEL_MODE_TWO_WHEELER", + "TRAVEL_MODE_BICYCLE", + "TRAVEL_MODE_PEDESTRIAN", + "TRAVEL_MODE_PUBLIC_TRANSIT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreAddressComponentProto": { + "description": "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/addresscomponent.cc", + "id": "GeostoreAddressComponentProto", + "properties": { + "featureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The id of the corresponding Feature, if such a feature is defined. As discussed above for feature_type, components of TYPE_FEATURE or TYPE_LANDMARK may have a corresponding feature id." + }, + "featureType": { + "description": "For components of TYPE_FEATURE or TYPE_LANDMARK, this is the feature type (TYPE_COUNTRY, TYPE_LOCALITY, TYPE_ESTABLISHMENT_POI etc.). Note that some features may not actually exist in the geostore (e.g. a village that we've never heard of), in which case the feature_id will be missing but the feature_type is still specified. Please refer to IsValidAddressComponentFeatureType() in google3/geostore/base/public/addresscomponent.h for the definitive list of feature types allowed for the type (either TYPE_FEATURE or TYPE_LANDMARK) of components.", + "format": "int32", + "type": "integer" + }, + "index": { + "description": "The order of this address component relative to the ones that share the same feature_type in the AddressProto. For now, the primary use of this index field is to handle ordering issue of multiple occurrences of AddressComponentProto with feature_type of TYPE_ROUTE (and subtypes), or TYPE_POLITICAL, where the order of the address components matters as there are dependences. 0 is the smallest valid index value, representing the most specific address component. Index value of 1 represents a relatively less specific address component of the same feature_type on which the 0-indexed address component depends.", + "format": "int32", + "type": "integer" + }, + "parsedName": { + "description": "The parsed_name field contains one or more names of an address component. Its actual contents depends on where in the Geo/Google stack you are reading a feature: 1. When an address is initially parsed via a feed or other raw input and structured as an AddressProto, parsed_name should contain the set of names that corresponds to the (possibly normalized) raw text from the raw input. In MapFacts, the address component may be linked to an actual feature via feature_id. Any address formatting directly from MapFacts should follow links to retrieve names when possible. The parsed_name contents may be formatted directly if the address component is unlinked following the same rules as selecting and formatting the name of a feature. The cached parsed_name is regularly refreshed from the linked feature with the minimal set of names for address components (usually just a single, preferred name, in the local language). 2. In serving systems, the names of linked features may be denormalized into the parsed_name field to facilitate quicker address formatting or for simple data filtering (e.g. finding all geocodes in California by name). If reading a feature from such a system, the parsed_name field could contain multiple names in multiple languages that reflect a cached copy of the names associated with the linked features. Formatting of such names should follow the same rules as selecting and formatting the name of a feature itself.", + "items": { + "$ref": "GeostoreNameProto" + }, + "type": "array" + }, + "range": { + "$ref": "GeostoreAddressRangeProto", + "description": "Any numerical address component may optionally be specified as a range. For example if a component of TYPE_STREET_NUMBER has the optional \"range\" attribute, then it represents a range of addresses rather than a single address (see AddressRangeProto for details)." + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to an address component. Never set in MapFacts." + }, + "textAffix": { + "description": "Additional text to append before and/or after the parsed_name, when the address is formatted. Multiple instance should represent translations. Currently, this is only permitted on TYPE_LANDMARK components, and only one instance is permitted.", + "items": { + "$ref": "GeostoreTextAffixProto" + }, + "type": "array" + }, + "type": { + "description": "Every address component has a type. Most address components correspond to one of the feature types defined in FeatureProto, so rather than defining a separate category system here, instead we mark them as TYPE_FEATURE and store the FeatureProto type in the feature_type() field. This is how we handle countries, cities, streets, etc. However, there are a few types of address components that do not have a corresponding feature type (e.g. PO boxes). These components have their type defined here. An address component of TYPE_STREET_NUMBER may correspond to a physical entity that defines a street number, such as a geocoded address or a land parcel. In this case, the address component may have a link to the corresponding feature. A good reference for what types of address components are possible is the xAL standard, which is a published XML schema: http://www.oasis-open.org/committees/ciq/download.shtml. This standard is the basis of the PostalAddress protocol message.", + "enum": [ + "TYPE_FEATURE", + "TYPE_POSTAL_CODE_SUFFIX", + "TYPE_POST_BOX", + "TYPE_STREET_NUMBER", + "TYPE_FLOOR", + "TYPE_ROOM", + "TYPE_HOUSE_ID", + "TYPE_DISTANCE_MARKER", + "TYPE_LANDMARK", + "TYPE_PLUS_CODE" + ], + "enumDescriptions": [ + "", + "Address contains a suffix that refines the postal code in this address (e.g. the '+4' portion of a US '5+4' zip code). Postal code suffixes do not point to features.", + "", + "", + "DEPRECATED, use TYPE_FEATURE/TYPE_LEVEL", + "DEPRECATED, use TYPE_FEATURE/TYPE_COMPOUND_SECTION", + "A building number unique relative to some political feature.", + "A component corresponding to a marker for the approximate distance of the address along the route. Distance markers do not point to features and must have a single name that corresponds to the distance measured along the route in the standard units of the locale in which the address is contained (units themselves omitted from the name). The name must be a canonical floating point number in the feature's locale. E.g. in the US, the name representing 1000.5 must be '1,000.5'. Trailing zeros after the decimal and superfluous zeros preceding the number are forbidden.", + "A component representing a reference to some nearby landmark, to aid navigation. Landmark components are distinguished by the fact that they have additional text to relate the feature with this address, for example \"near\" or \"opposite\". This text is stored in the affix field. Landmark components may point to features, but are not required to.", + "Plus codes (go/pluscodes) are short, user readable encodings of latitude and longitude, that are intended as a substitute for street addresses where these do not exist or are not commonly used. Used when the physical address of the feature contains a local plus code, e.g.'PXX7+RW' in 'PXX7+RW Damaturu, Nigeria'." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreAddressLinesProto": { + "description": "Represents the unparsed portion of an address with an associated language.", + "id": "GeostoreAddressLinesProto", + "properties": { + "language": { + "description": "The external form of a Google International Identifiers Initiative (III) LanguageCode object. See google3/i18n/identifiers/languagecode.h for details. We place extra restrictions on languages in addition to what the III library requires. See http://go/geo-schema-reference/feature-properties/languages.md", + "type": "string" + }, + "line": { + "description": "These lines are in display order.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreAddressProto": { + "description": "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.", + "id": "GeostoreAddressProto", + "properties": { + "addressLines": { + "description": "The unparsed portion (lines) of the address. An address can have multiple unparsed portions. Multiple unparsed portions sharing the same language should be modeled as one address_lines instance having multiple lines. Historically, we also supported uparsed portions in different languages, but we no longer do. Consequently, only one value is allowed for this field despite the fact that it is repeated. See go/address-lines-multi-language for information about why we made this change. If any components are filled in, this is supplemental to (i.e. disjoint from) them. Furthermore, this must be the most specific portion of the address (except for the portion, if any, stored in the name field of feature.proto). Unparsed lines are always formatted together in a block. Other address components are never formatted between the address lines. This doesn't imply that the address lines are always either the first or the last part of the formatted output.", + "items": { + "$ref": "GeostoreAddressLinesProto" + }, + "type": "array" + }, + "component": { + "description": "A list of parsed address components, e.g. the street, city, etc. An address range is one type of component.", + "items": { + "$ref": "GeostoreAddressComponentProto" + }, + "type": "array" + }, + "crossStreet": { + "description": "** DEPRECATED ** This field is now deprecated (see b/33268032). If you want to store cross street information as part of an address, use the address_lines field.", + "items": { + "$ref": "GeostoreAddressComponentProto" + }, + "type": "array" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this address." + }, + "partialDenormalization": { + "$ref": "GeostoreAddressProto", + "description": "reserved" + }, + "templateId": { + "description": "The opaque ID of the address template that contains rules for structuring this address. The id of the address template can be retrieved using google3/geostore/address_templates/public/address_templates.h", + "type": "string" + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to an address. Never set in MapFacts." + } + }, + "type": "object" + }, + "GeostoreAddressRangeProto": { + "description": "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/addressrange.cc", + "id": "GeostoreAddressRangeProto", + "properties": { + "number": { + "description": "Two or more address numbers. Each number represents an address that was mentioned by the data provider.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "parameter": { + "description": "For address range definitions: Two or more interpolation parameter values. The length of this array must match the length of the number array, and each parameter number specifies the position of the corresponding address number. Each value is an interpolation between 0.0 and 1.0 inclusive. The value is proportional to the distance traveled along the segment's polyline starting at its origin. The parameters must be provided in increasing order and the values in the number array must be in strictly increasing or decreasing order. We make an exception for singleton addresses, which are represented as two copies of a (number, parameter) pair, for backwards compatibility. For address range references: This array must be empty.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "prefix": { + "description": "If specified, the prefix or suffix is applied to all numbers in the range. For example, this can be used to indicate that addresses B1 through B99 are on one side of the street, while A1 through A99 are on the other side of the street.", + "type": "string" + }, + "sameParity": { + "description": "If 'same_parity' is true, then all 'number' values must have the same parity (even or odd), and this address range only includes addresses whose parity is the same as the given 'number' values.", + "type": "boolean" + }, + "suffix": { + "type": "string" + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to an address range. Never set in MapFacts. Here are some examples: Example #1: Single non-numeric address (e.g., \"Twelve\") At the moment this can only be represented as a street number (with the value in the parsed_name field of the AddressComponentProto). We have future plans to make other changes so we can handle this case. Example #2: Single semi-numeric address (e.g., \"12bis\") The number array contains two copies of the single numeric value (12). The prefix is empty and the suffix contains \"bis\". The parameter array has two identical values specifying the position of the single address. Example #3: Simple address range (e.g., \"100 to 198, even numbers only\") The number array contains the two values \"100\" and \"198\". The prefix and suffix strings are empty in this example. The parameter array has two values, one for each number. The same_parity flag is set in this example." + } + }, + "type": "object" + }, + "GeostoreAnchoredGeometryProto": { + "description": "A feature’s geometry that is populated from the 3D Geometry Store. Please see go/a3d-and-mapfacts for design details.", + "id": "GeostoreAnchoredGeometryProto", + "properties": { + "geometryId": { + "description": "The ID to be used to fetch the feature’s geometry from the 3D Geometry Store.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreAppliedSpeedLimitProto": { + "description": "A container for speed limits that allows tagging with a correctness trust level.", + "id": "GeostoreAppliedSpeedLimitProto", + "properties": { + "speedLimit": { + "$ref": "GeostoreSpeedLimitProto", + "description": "The actual speed limit value." + }, + "trustLevel": { + "description": "The level of trust we have in this speed limit value.", + "enum": [ + "SPEED_LIMIT_TRUST_LEVEL_UNKNOWN", + "LOW_QUALITY", + "HIGH_QUALITY", + "EXACT" + ], + "enumDescriptions": [ + "Default proto value, this value will never be set in MapFacts.", + "This speed limit is set, but may be completely wrong and potential users should consult external quality metrics before deciding whether to use it.", + "We have high confidence that this is the correct speed limit, and that it's good enough to be shown to users. However, we are not completely confident the value is correct.", + "We are certain that this is the correct speed limit." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreAttachmentsAttachmentProto": { + "description": "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. ", + "id": "GeostoreAttachmentsAttachmentProto", + "properties": { + "attachmentId": { + "description": "attachment_id distinguishes messages of the same type_id associated with the same feature. It can not be set to 0x0.", + "format": "uint64", + "type": "string" + }, + "clientNameSpace": { + "description": "This field specifies a namespace identifier that can be used to track the sources of attachments in a human friendly format. Name spaces must be at most 64 characters long and must be composed entirely of alphanumeric characters, hyphens, and underscores. No other characters are allowed.", + "type": "string" + }, + "comment": { + "description": "comment is a human-readable string that is logged whenever this attachment is processed by the framework.", + "type": "string" + }, + "messages": { + "$ref": "Proto2BridgeMessageSet", + "description": "messages contains the structured data for this attachment. It should contain a single message with a type ID matching the value of the type_id field below." + }, + "typeId": { + "description": "type_id determines the type of the actual attachment that should be set in the messages MessageSet. It can not be set to 0x0.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreAttributeIdProto": { + "description": "Used to represent the unique id of an attribute.", + "id": "GeostoreAttributeIdProto", + "properties": { + "id": { + "description": "The id of the attribute. Stored as a stripped format of the gcid (e.g. \"foo\" instead of \"gcid:att_foo\").", + "type": "string" + }, + "providerId": { + "description": "Set because it's required, but not really meaningful in geostore (always set to \"Geo\").", + "type": "string" + }, + "type": { + "enum": [ + "ITEMCLASS", + "ATTRIBUTE", + "VALUESPACE", + "DATASTORE" + ], + "enumDescriptions": [ + "deprecated", + "", + "deprecated", + "deprecated" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreAttributeProto": { + "description": "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.", + "id": "GeostoreAttributeProto", + "properties": { + "applicationData": { + "$ref": "Proto2BridgeMessageSet" + }, + "attributeDisplay": { + "items": { + "$ref": "GeostoreAttributeValueDisplayProto" + }, + "type": "array" + }, + "booleanValue": { + "type": "boolean" + }, + "canonicalAttributeId": { + "$ref": "GeostoreAttributeIdProto", + "description": "The canonical attribute for this attribute instance." + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "enumIdValue": { + "description": "For those attribute ids that expect their values to be taken from an enumeration-style set of values, that value's gcid should be stored here, e.g. \"gcid:attval_yes\".", + "type": "string" + }, + "floatValue": { + "format": "float", + "type": "number" + }, + "int64Value": { + "format": "int64", + "type": "string" + }, + "integerValue": { + "format": "int32", + "type": "integer" + }, + "itemClassId": { + "$ref": "GeostoreAttributeIdProto" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this attribute" + }, + "protoValue": { + "$ref": "Proto2BridgeMessageSet", + "description": "Fully qualified package name because genprotohdf uses genproto for this proto2 syntax: https://wiki.corp.google.com/twiki/bin/view/Main/Proto2WithGenproto" + }, + "stringValue": { + "description": "The attribute value falls into one of these fields, based on value_type:", + "type": "string" + }, + "uint32Value": { + "format": "uint32", + "type": "integer" + }, + "valueDisplay": { + "description": "Used to store language-specific names of this attribute's value (e.g. a translation into another language).", + "items": { + "$ref": "GeostoreAttributeValueDisplayProto" + }, + "type": "array" + }, + "valueSpaceId": { + "$ref": "GeostoreAttributeIdProto" + }, + "valueType": { + "enum": [ + "NONE", + "STRING", + "INTEGER", + "DOUBLE", + "BOOLEAN", + "PROTO_VALUE", + "INT64", + "FLOAT", + "DISPLAY_ONLY", + "UINT32", + "ENUM_ID" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "The value comes from an enumerated attribute valuespace." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreAttributeValueDisplayProto": { + "description": "Used to help display language-specific names of attributes.", + "id": "GeostoreAttributeValueDisplayProto", + "properties": { + "language": { + "type": "string" + }, + "synonym": { + "type": "string" + } + }, + "type": "object" + }, + "GeostoreBarrierLogicalMaterialProto": { + "id": "GeostoreBarrierLogicalMaterialProto", + "properties": { + "material": { + "items": { + "enum": [ + "UNKNOWN_LOGICAL_MATERIAL", + "CONCRETE", + "METAL", + "PLASTIC", + "STONE", + "TIMBER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreBestLocaleProto": { + "description": "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.", + "id": "GeostoreBestLocaleProto", + "properties": { + "locale": { + "$ref": "GeostoreFeatureIdProto", + "description": "The ID of the best-match TYPE_LOCALE feature for this feature." + }, + "localizationPolicyId": { + "description": "The ID of the localization policy to apply when selecting a name for a feature. This field should always be set. If feature_id is also defined, this field should have the same localization policy ID as the referenced locale feature. Localization policy IDs are arbitrary identifiers (up to some number of bytes; see geostore/base/public/constants.h) that uniquely distinguish a set of language-selection rules.", + "type": "string" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this best locale." + } + }, + "type": "object" + }, + "GeostoreBizBuilderReferenceProto": { + "description": "The reference to a BizBuilder listing. For details on BizBuilder see http://g3doc/commerce/bizbuilder/backend/g3doc/index.md", + "id": "GeostoreBizBuilderReferenceProto", + "properties": { + "id": { + "description": "Listing id. Used in queries to BizBuilder backend for listing access.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreBorderProto": { + "description": "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.", + "id": "GeostoreBorderProto", + "properties": { + "featureIdLeft": { + "$ref": "GeostoreFeatureIdProto", + "description": "The ids of the area features to the left and right of the border, relative to the start and end of this borders' polyline geometry. These features should have the same type as the \"type\" attribute above. These ids are not required because the corresponding features may be nonexistent or difficult to obtain." + }, + "featureIdRight": { + "$ref": "GeostoreFeatureIdProto" + }, + "logicalBorder": { + "description": "The logical borders which this border is a part of.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "overrideStatus": { + "description": "List of border status overrides. Due to legal reasons, we may be required to display some borders differently on some domains for instance.", + "items": { + "$ref": "GeostoreOverrideBorderStatusProto" + }, + "type": "array" + }, + "status": { + "description": "The border status identifies the legal status of the border line.", + "enum": [ + "STATUS_NORMAL", + "STATUS_DISPUTED", + "STATUS_UNSURVEYED", + "STATUS_INTERNATIONAL_WATER", + "STATUS_NEVER_DISPLAY", + "STATUS_TREATY", + "STATUS_PROVISIONAL", + "STATUS_NO_LABEL" + ], + "enumDescriptions": [ + "Most border lines have this status, which typically means both parties agree on the location of the line. These might be called \"de jure\" borders.", + "This status is used when the two parties disagree on the location of the line. There can be multiple border lines in a given disputed area. One might be the line proposed by country \"A\" and another the line proposed by country \"B\". A third line might mark the de facto line of control. Other border lines might indicate historical borders, e.g., \"1949 Armistice Line\".", + "This is used for one section of border between Argentina and Chile. Both parties agree that a border line exists somewhere on the glacier, but the exact location has not been determined.", + "This is a border line between a country and international water.", + "This status is only used for the borders that should never display to users. Typically it is for the borders that we don't want to represent but that we would still like to use to model country boundaries, e.g. Hong Kong and Macau.", + "This is used for borders that refer to well-defined boundaries which have been established by a specific treaty, agreement, armistice or other such agreement between two or more parties, yet the position and/or status is not considered to be legal and final (e.g., the final demarcation of the exact position has not occurred or the final political status is not resolved).", + "This is used for borders for which a formal agreement has not been established between the parties involved, yet the existing line acts as a de facto functional border without existence of any dispute.", + "This is used for borders which should not have country labels to either side, but should otherwise be styled the same as a border with STATUS_NORMAL. This is typically for borders which are not themselves disputed but still form part of the boundary around a disputed area that is not otherwise modeled or labeled as a country, or as an override where we are obligated to remove labels for region specific versions of Maps." + ], + "type": "string" + }, + "type": { + "description": "The type of the features this border separates. Should always be a subtype of TYPE_POLITICAL. NOTE: as of December 2019, we currently require this to be equal to TYPE_COUNTRY or TYPE_ADMINISTRATIVE_AREA1. In the future, we may support TYPE_BORDER for lower types of political features.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostoreBoundingMarkerProto": { + "id": "GeostoreBoundingMarkerProto", + "properties": { + "boundingMarker": { + "$ref": "GeostoreFeatureIdProto", + "description": "References to any gcid:physical_lane_marker features that bound this lane or lane connection." + }, + "boundingMarkerToken": { + "description": "A token that can be used to identify the version of the data about this bounding marker.", + "type": "string" + }, + "flowlineAdjacencyBeginFraction": { + "description": "Which part of the flowline does this association refer to? These should be between 0 and 1. These are optionally set, but can be approximated geometrically if they aren’t set. NOTE: These refer to the geometry of this feature.", + "format": "double", + "type": "number" + }, + "flowlineAdjacencyEndFraction": { + "format": "double", + "type": "number" + }, + "markerAdjacencyBeginFraction": { + "description": "Which part of the marker track does this association refer to? These should be between 0 and 1. These are optionally set, but can be approximated geometrically if they aren’t set. NOTE: These refer to the geometry of the marker feature.", + "format": "double", + "type": "number" + }, + "markerAdjacencyEndFraction": { + "format": "double", + "type": "number" + }, + "side": { + "description": "Which side of the flowline does the marker occur on.", + "enum": [ + "UNKNOWN", + "LEFT", + "RIGHT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreBuildingProto": { + "description": "This protocol buffer holds the building-specific attributes for features of type TYPE_COMPOUND_BUILDING.", + "id": "GeostoreBuildingProto", + "properties": { + "baseHeightMetersAgl": { + "description": "The height of the base of this building, in meters above ground-level, if known.", + "format": "float", + "type": "number" + }, + "defaultDisplayLevel": { + "$ref": "GeostoreFeatureIdProto", + "description": "The level in this building that should get displayed by default. If present, the default display level must be one of this building's levels that are listed in the level[] field, and if a level is set as a default level of one building, all buildings sharing the level should have that same level as their default level. If not present, clients should not display any level by default for that building." + }, + "floors": { + "description": "The number of floors above the base of the building, if known. For example a regular 1-story building would set this to \"1\". Use a value of GeostoreConstants::kDefaultHeightPerFloor when converting \"floors\" to \"height_meters\".", + "format": "int32", + "type": "integer" + }, + "floorsMetadata": { + "$ref": "GeostoreFieldMetadataProto" + }, + "heightMeters": { + "description": "The height of the building above its base, in meters, if known.", + "format": "float", + "type": "number" + }, + "heightMetersMetadata": { + "$ref": "GeostoreFieldMetadataProto" + }, + "level": { + "description": "The levels in this building, in no particular order. These levels refer back to the building via another strong reference (the LevelProto.building field).", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "structure": { + "description": "\"Structure\" denotes a physical architecture of the building that is readily visible. This attribute is useful in that rarer structures can make good landmarks.", + "enum": [ + "STRUCTURE_ANY", + "STRUCTURE_TOWER", + "STRUCTURE_DOME", + "STRUCTURE_CASTLE", + "STRUCTURE_SHRINE", + "STRUCTURE_TEMPLE", + "STRUCTURE_TANK" + ], + "enumDescriptions": [ + "ABSTRACT", + "The root of all structure categories. Not a meaningful value and should never be set on any feature.", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreBusinessChainProto": { + "description": "This holds data specific to business chain features.", + "id": "GeostoreBusinessChainProto", + "properties": { + "canonicalGconcepts": { + "description": "Canonical GConcepts describe the ideal state of the GConcepts of this business chain's members.", + "items": { + "$ref": "GeostoreCanonicalGConceptProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreBusinessHoursProto": { + "description": "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.", + "id": "GeostoreBusinessHoursProto", + "properties": { + "data": { + "$ref": "BusinessHours", + "description": "The actual hours represented by this BusinessHoursProto." + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for these hours." + } + }, + "type": "object" + }, + "GeostoreCallToActionProto": { + "description": "Message containing calls to action specified by the business owner.", + "id": "GeostoreCallToActionProto", + "properties": { + "ctaType": { + "description": "Required.", + "enum": [ + "CTA_TYPE_UNSPECIFIED", + "CTA_TYPE_BOOK", + "CTA_TYPE_BUY", + "CTA_TYPE_ORDER_ONLINE", + "CTA_TYPE_LEARN_MORE", + "CTA_TYPE_SIGN_UP", + "CTA_TYPE_GET_OFFER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "url": { + "$ref": "GeostoreUrlProto" + } + }, + "type": "object" + }, + "GeostoreCanonicalGConceptProto": { + "description": "This proto represents a canonical gconcept of a business chain's members.", + "id": "GeostoreCanonicalGConceptProto", + "properties": { + "gconcept": { + "$ref": "GeostoreGConceptInstanceProto" + }, + "isRequired": { + "description": "Whether the gconcept must be on a member. This must be true for a primary gconcept.", + "type": "boolean" + } + }, + "type": "object" + }, + "GeostoreCellCoveringProto": { + "description": "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.", + "id": "GeostoreCellCoveringProto", + "properties": { + "cellId": { + "description": "Array of S2 cell ids that represent the covering. There is no preset limit on how many cells can be used.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreComposableItemProto": { + "description": "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.", + "id": "GeostoreComposableItemProto", + "properties": { + "callToAction": { + "$ref": "GeostoreCallToActionProto", + "description": "Call to action for the individual product." + }, + "jobMetadata": { + "$ref": "GeostoreJobMetadata" + }, + "media": { + "description": "Any photos describing this item.", + "items": { + "$ref": "GeostoreMediaItemProto" + }, + "type": "array" + }, + "nameInfo": { + "description": "The repeated name_info field is for price list sections listed in multiple languages. At least one name_info containing id must be specified. There should be at most one name_info for any given language. When representing a job item, there should be exactly one name_info specified.", + "items": { + "$ref": "GeostorePriceListNameInfoProto" + }, + "type": "array" + }, + "offered": { + "description": "Represents if an item is offered at a business. For TYPE_JOB, this represents if this job is offered by the corresponding business", + "enum": [ + "OFFERED_UNSPECIFIED", + "OFFERED", + "OFFERED_NOT", + "OFFERED_ON_WEBSITE" + ], + "enumDescriptions": [ + "Merchant says nothing", + "Merchant explicitly says this is offered", + "Merchant explicitly says this is NOT offered", + "Merchant mentioned this job on their websites" + ], + "type": "string" + }, + "price": { + "$ref": "GeostorePriceRangeProto", + "description": "Price of the item. There should be at most one price for any given currency." + } + }, + "type": "object" + }, + "GeostoreCountComparisonProto": { + "description": "A count value tagged with a comparison operator. This can be used for axle count, trailer count, etc.", + "id": "GeostoreCountComparisonProto", + "properties": { + "comparisonOperator": { + "enum": [ + "UNSPECIFIED", + "EQUAL", + "LESS_THAN", + "LESS_THAN_OR_EQUAL", + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "count": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostoreCrossingStripePatternProto": { + "description": "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.", + "id": "GeostoreCrossingStripePatternProto", + "properties": { + "borderLine": { + "$ref": "GeostorePhysicalLineProto" + }, + "borderPattern": { + "enum": [ + "UNKNOWN_BORDER_PATTERN", + "NO_BORDER_PATTERN", + "SOLID", + "DASHED" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "color": { + "description": "Colors found on this crossing.", + "items": { + "$ref": "GeostorePaintedElementLogicalColorProto" + }, + "type": "array" + }, + "stripePattern": { + "enum": [ + "UNKNOWN_STRIPE_PATTERN", + "NO_STRIPE_PATTERN", + "LONGITUDINAL_STRIPE", + "DIAGONAL_STRIPE", + "LATERAL_STRIPE", + "SINGLE_CROSSING_LINE", + "DOUBLE_CROSSING_LINE", + "TRIANGLE_CROSSING_LINE_POINTING_LEFT", + "TRIANGLE_CROSSING_LINE_POINTING_RIGHT", + "STRUCTURED_CROSSING_LINE" + ], + "enumDescriptions": [ + "", + "For crosswalk No crossing stripes. Usually comes with the bordered crosswalk.", + "", + "", + "", + "A crossing line consisting of a single stripe e.g. a stop line.", + "A crossing line consisting of a double stripe.", + "A crossing line made of repeating triangles e.g. a California yield line. The teeth are always facing the left of the crossing line.", + "A crossing line made of repeating triangles e.g. a California yield line. The teeth are always facing the right of the crossing line.", + "The crossing line has a more complex structure than just a single conceptual stripe or row of symbols." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreCurveConnectionProto": { + "description": "Protocol buffer describing a curve that connects two externally specified endpoints.", + "id": "GeostoreCurveConnectionProto", + "properties": { + "bezierParams": { + "$ref": "GeostoreCurveConnectionProtoBezierParams" + }, + "circleParams": { + "$ref": "GeostoreCurveConnectionProtoCircleParams" + }, + "type": { + "enum": [ + "UNSPECIFIED", + "BEZIER", + "CIRCLE", + "STRAIGHT_EDGE" + ], + "enumDescriptions": [ + "The connection is unspecified. Rendering code will rely on heuristics to choose one.", + "Bezier curve interpolates the two endpoints.", + "Endpoints are connected via a circle arc.", + "Endpoints are connected by a straight edge." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreCurveConnectionProtoBezierParams": { + "id": "GeostoreCurveConnectionProtoBezierParams", + "properties": { + "controlPoint": { + "description": "Internal Bezier handles. One can be used for a quadratic curve, two for cubic Beziers.", + "items": { + "$ref": "GeostoreCurveConnectionProtoBezierParamsControlPoint" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreCurveConnectionProtoBezierParamsControlPoint": { + "id": "GeostoreCurveConnectionProtoBezierParamsControlPoint", + "properties": { + "angleDegrees": { + "description": "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.", + "format": "double", + "type": "number" + }, + "distanceMultiplier": { + "description": "Distance(S, P) in units of Distance(S, E).", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GeostoreCurveConnectionProtoCircleParams": { + "id": "GeostoreCurveConnectionProtoCircleParams", + "properties": { + "radius": { + "description": "Arc radius. Must be greater than half-distance between two endpoints.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GeostoreDataSourceProto": { + "description": "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.", + "id": "GeostoreDataSourceProto", + "properties": { + "attributionUrl": { + "description": "This is the URL of a website representing this DataSource as a whole. If this DataSource feature is specific to a particular dataset or product, the page may contain information relevant to that dataset or product or may be the main page of the organization.", + "items": { + "$ref": "GeostoreUrlProto" + }, + "type": "array" + }, + "copyrightOwner": { + "description": "A UTF8 string that will be inserted in copyright messages to refer to this copyright owner, e.g. \"Tele Atlas\".", + "type": "string" + }, + "copyrightYear": { + "description": "The copyright year of this data (which may be different than the year of the release date), e.g. 2005.", + "format": "int32", + "type": "integer" + }, + "description": { + "description": "A free-form description of this data source. Ideally the description should include: - Where the data was obtained (URL, company name, individual, etc). - Where to find detailed documentation. - A brief summary of the licensing terms. - As much internal and external contact information as possible (e.g. who to ask about licensing questions, interpreting the data, updating the data, fixing bugs in the importer, etc).", + "type": "string" + }, + "importerBuildInfo": { + "description": "The build information of the importer binary used to generate this data source.", + "type": "string" + }, + "importerBuildTarget": { + "description": "The build target of the importer binary used to generate this data source.", + "type": "string" + }, + "importerClientInfo": { + "description": "The Perforce client information of the importer binary used to generate this data source.", + "type": "string" + }, + "importerMpmVersion": { + "description": "If the importer was built as an MPM, the version number can be stored in this field. As with build_info, this can be useful when tracking down issues that may be due to the use of a particular binary.", + "type": "string" + }, + "importerTimestamp": { + "description": "The timestamp of the importer binary used to generate this data source.", + "type": "string" + }, + "provider": { + "description": "The provider type of this data source.", + "enum": [ + "PROVIDER_ANY", + "PROVIDER_UNKNOWN", + "PROVIDER_NAVTEQ", + "PROVIDER_TELE_ATLAS", + "PROVIDER_TELE_ATLAS_MULTINET", + "PROVIDER_TELE_ATLAS_CODEPOINT", + "PROVIDER_TELE_ATLAS_GEOPOST", + "PROVIDER_TELE_ATLAS_DATAGEO", + "PROVIDER_TELE_ATLAS_ADDRESS_POINTS", + "PROVIDER_TELCONTAR", + "PROVIDER_EUROPA", + "PROVIDER_ROYAL_MAIL", + "PROVIDER_GOOGLE", + "PROVIDER_GOOGLE_HAND_EDIT", + "PROVIDER_GOOGLE_BORDERS", + "PROVIDER_GOOGLE_SUBRANGE", + "PROVIDER_GOOGLE_GT_FUSION", + "PROVIDER_GOOGLE_ZAGAT_CMS", + "PROVIDER_GOOGLE_PLACE_NAVBOOST", + "PROVIDER_GOOGLE_FOOTPRINT", + "PROVIDER_GOOGLE_PRODUCT_TERMS", + "PROVIDER_GOOGLE_POINTCARDS", + "PROVIDER_GOOGLE_BUSINESS_CHAINS", + "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION", + "PROVIDER_GOOGLE_PRONUNCIATIONS", + "PROVIDER_GOOGLE_DUMPLING", + "PROVIDER_GOOGLE_DISTILLERY", + "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION", + "PROVIDER_GOOGLE_RELATION_MINER", + "PROVIDER_GOOGLE_MAPSPAM", + "PROVIDER_GOOGLE_ROSE", + "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS", + "PROVIDER_GOOGLE_WIPEOUT", + "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH", + "PROVIDER_GOOGLE_BEEGEES", + "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION", + "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION", + "PROVIDER_GOOGLE_GEO_WORLDMAPS", + "PROVIDER_GOOGLE_GEO_MODERATION", + "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS", + "PROVIDER_GOOGLE_LOCAL_ALCHEMY", + "PROVIDER_GOOGLE_KEROUAC", + "PROVIDER_GOOGLE_MOBRANK", + "PROVIDER_GOOGLE_RAPTURE", + "PROVIDER_GOOGLE_CULTURAL_INSTITUTE", + "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS", + "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS", + "PROVIDER_GOOGLE_TACTILE_MAPS", + "PROVIDER_GOOGLE_MAPS_FOR_MOBILE", + "PROVIDER_GOOGLE_GEO_REALTIME", + "PROVIDER_GOOGLE_PROMINENT_PLACES", + "PROVIDER_GOOGLE_PLACE_ACTIONS", + "PROVIDER_GOOGLE_GT_AUTO_EDITS", + "PROVIDER_GOOGLE_WAZE", + "PROVIDER_GOOGLE_ONTHEGO", + "PROVIDER_GOOGLE_GT_IMPORT", + "PROVIDER_GOOGLE_STRUCTURED_DATA", + "PROVIDER_GOOGLE_HELICOPTER", + "PROVIDER_GOOGLE_ROLLBACK", + "PROVIDER_GOOGLE_RIGHTS_REPAIR", + "PROVIDER_GOOGLE_PERFUME", + "PROVIDER_GOOGLE_MAPS_TRANSLATION", + "PROVIDER_GOOGLE_CALL_ME_MAYBE", + "PROVIDER_GOOGLE_LOCAL_UNIVERSAL", + "PROVIDER_GOOGLE_CROUPIER", + "PROVIDER_GOOGLE_SKYSMART", + "PROVIDER_GOOGLE_RIDDLER", + "PROVIDER_GOOGLE_ROADCLOSURES", + "PROVIDER_GOOGLE_SPORE", + "PROVIDER_GOOGLE_LOCALIZATION", + "PROVIDER_GOOGLE_CATTERMS", + "PROVIDER_GOOGLE_GT_FIELD_OPS", + "PROVIDER_GOOGLE_MATCHMAKER", + "PROVIDER_GOOGLE_ARBITRATION", + "PROVIDER_GOOGLE_BIZBUILDER_OPS", + "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS", + "PROVIDER_GOOGLE_GT_DRAFTY", + "PROVIDER_GOOGLE_HOTELADS_OPS", + "PROVIDER_GOOGLE_MARKERS", + "PROVIDER_GOOGLE_STATE_MACHINE", + "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE", + "PROVIDER_GOOGLE_BIKESHARE", + "PROVIDER_GOOGLE_GHOSTWRITER", + "PROVIDER_GOOGLE_EDIT_PLATFORM", + "PROVIDER_GOOGLE_BLUE_GINGER", + "PROVIDER_GOOGLE_GEO_TIGER", + "PROVIDER_GOOGLE_HYADES", + "PROVIDER_GOOGLE_WEBQUARRY", + "PROVIDER_GOOGLE_GEO_MADDEN", + "PROVIDER_GOOGLE_ANDROID_PAY", + "PROVIDER_GOOGLE_OPENING_HOURS_TEAM", + "PROVIDER_GOOGLE_LOCAL_DISCOVERY", + "PROVIDER_GOOGLE_LOCAL_HEALTH", + "PROVIDER_GOOGLE_UGC_MAPS", + "PROVIDER_GOOGLE_FIBER", + "PROVIDER_GOOGLE_REVGEO", + "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END", + "PROVIDER_GOOGLE_GEO_UGC_TASKS", + "PROVIDER_GOOGLE_GEOCODING", + "PROVIDER_GOOGLE_SPYGLASS", + "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES", + "PROVIDER_GOOGLE_GEO_CHANGES", + "PROVIDER_GOOGLE_HUME", + "PROVIDER_GOOGLE_MEGAMIND", + "PROVIDER_GOOGLE_GT_ROADSYNTH", + "PROVIDER_GOOGLE_FIREBOLT", + "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS", + "PROVIDER_GOOGLE_UGC_SERVICES", + "PROVIDER_GOOGLE_GEOALIGN", + "PROVIDER_GOOGLE_GT_COMPOUNDS", + "PROVIDER_GOOGLE_FOOD_ORDERING", + "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS", + "PROVIDER_GOOGLE_URAW", + "PROVIDER_GOOGLE_FLYEYE", + "PROVIDER_GOOGLE_YOUKE", + "PROVIDER_GOOGLE_GT_ZEPHYR", + "PROVIDER_GOOGLE_USER_SAFETY", + "PROVIDER_GOOGLE_ADDRESS_MAKER", + "PROVIDER_GOOGLE_UGC_PHOTOS", + "PROVIDER_GOOGLE_GT_WINDCHIME", + "PROVIDER_GOOGLE_SNAG_FIXER", + "PROVIDER_GOOGLE_GEO_DEALS", + "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS", + "PROVIDER_GOOGLE_PROPERTY_INSIGHTS", + "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS", + "PROVIDER_GOOGLE_GEO_PORTKEY", + "PROVIDER_GOOGLE_ROAD_MAPPER", + "PROVIDER_GOOGLE_LOCATION_PLATFORM", + "PROVIDER_GOOGLE_POSTTRIP", + "PROVIDER_GOOGLE_TRAVEL_DESTINATION", + "PROVIDER_GOOGLE_GEO_DATA_UPLOAD", + "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP", + "PROVIDER_GOOGLE_USER", + "PROVIDER_GOOGLE_STATION", + "PROVIDER_GOOGLE_GEO_FOOD", + "PROVIDER_GOOGLE_GEO_AR", + "PROVIDER_GOOGLE_GEO_TEMPORAL", + "PROVIDER_GOOGLE_SERVICES_MARKETPLACE", + "PROVIDER_GOOGLE_IMT_CLEANUP", + "PROVIDER_GOOGLE_GEO_FOOD_MENU", + "PROVIDER_GOOGLE_CARENAV", + "PROVIDER_GOOGLE_DRIVING_FEEDS", + "PROVIDER_GOOGLE_DRIVING_UGC", + "PROVIDER_GOOGLE_POLAR", + "PROVIDER_GOOGLE_TRIWILD", + "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS", + "PROVIDER_GOOGLE_SA_FROM_WEB", + "PROVIDER_GOOGLE_POI_ALIGNMENT", + "PROVIDER_GOOGLE_SA_FROM_HULK", + "PROVIDER_GOOGLE_SERVICES_INTERACTIONS", + "PROVIDER_GOOGLE_ROADS_UGC_EDITOR", + "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE", + "PROVIDER_GOOGLE_GEO_DRIVING_VIZ", + "PROVIDER_GOOGLE_GEO_TASKING", + "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE", + "PROVIDER_GOOGLE_CROWDTASK_TASKADS", + "PROVIDER_GOOGLE_CROWDTASK_TASKMATE", + "PROVIDER_GOOGLE_CROWDTASK_FURBALL", + "PROVIDER_GOOGLE_CROWDTASK_ADAP", + "PROVIDER_GOOGLE_GPAY", + "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS", + "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION", + "PROVIDER_GOOGLE_GEOTRACKER", + "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE", + "PROVIDER_GOOGLE_GEO_CLOSED_LOOP", + "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS", + "PROVIDER_GOOGLE_CORE_DATA_RIGHTS", + "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS", + "PROVIDER_GOOGLE_GEO_CONTENT_FIXER", + "PROVIDER_GOOGLE_POLYGON_REFINEMENT", + "PROVIDER_GOOGLE_HANASU", + "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD", + "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD", + "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD", + "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS", + "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS", + "PROVIDER_GOOGLE_SA_QUALITY", + "PROVIDER_GOOGLE_GDCE_CLEANUP", + "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS", + "PROVIDER_GOOGLE_LOCALSEARCH", + "PROVIDER_GOOGLE_TRANSIT", + "PROVIDER_GOOGLE_GEOWIKI", + "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM", + "PROVIDER_GOOGLE_SYNTHESIZED", + "PROVIDER_GOOGLE_INTERNAL_TEST", + "PROVIDER_GOOGLE_DISPUTED_AREAS", + "PROVIDER_GOOGLE_3DWAREHOUSE", + "PROVIDER_GOOGLE_GROUNDS_BUILDER", + "PROVIDER_GOOGLE_SESAME", + "PROVIDER_GOOGLE_GT", + "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD", + "PROVIDER_GOOGLE_ADSDB", + "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION", + "PROVIDER_GOOGLE_TRAVELSEARCH", + "PROVIDER_GOOGLE_PANORAMIO", + "PROVIDER_GOOGLE_YOUTUBE", + "PROVIDER_GOOGLE_OLD", + "PROVIDER_GOOGLE_STREETVIEW", + "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW", + "PROVIDER_GOOGLE_ZIPIT", + "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES", + "PROVIDER_GOOGLE_GOLDEN", + "PROVIDER_GOOGLE_INNERSPACE", + "PROVIDER_GOOGLE_MAPSEARCH", + "PROVIDER_GOOGLE_CATEGORIES_TEAM", + "PROVIDER_GOOGLE_CROWDSENSUS", + "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY", + "PROVIDER_GOOGLE_FREEBASE", + "PROVIDER_GOOGLE_HOTELADS", + "PROVIDER_GOOGLE_AUTHORITY_PAGES", + "PROVIDER_GOOGLE_PLACES_API", + "PROVIDER_GOOGLE_NAMEHEATMAP", + "PROVIDER_GOOGLE_MAPMAKER", + "PROVIDER_GOOGLE_MAPMAKER_MOBILE", + "PROVIDER_GOOGLE_MAPMAKER_PANCAKE", + "PROVIDER_GOOGLE_MAPMAKER_V2", + "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE", + "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER", + "PROVIDER_GOOGLE_GT_LOCAL", + "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS", + "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS", + "PROVIDER_GOOGLE_ENTITY_NAVBOOST", + "PROVIDER_GOOGLE_RELATED_PLACES", + "PROVIDER_GOOGLE_KNOWN_FOR_TERMS", + "PROVIDER_GOOGLE_SYNTHETIC_AREAS", + "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS", + "PROVIDER_GOOGLE_CROSS_STREETS", + "PROVIDER_GOOGLE_CORRIDORS", + "PROVIDER_GOOGLE_BICYCLE_RENTAL", + "PROVIDER_GOOGLE_CONCRETE_URLS", + "PROVIDER_GOOGLE_LEANBACK", + "PROVIDER_GOOGLE_LOCKED_LISTINGS", + "PROVIDER_GOOGLE_MONITORING", + "PROVIDER_GOOGLE_SPROUT", + "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY", + "PROVIDER_GOOGLE_GOBY", + "PROVIDER_GOOGLE_PROBLEM_REPORT", + "PROVIDER_GOOGLE_CANDID", + "PROVIDER_GOOGLE_BIZBUILDER", + "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA", + "PROVIDER_MAPDATA_SCIENCES", + "PROVIDER_MAPONICS", + "PROVIDER_SKI_RESORTS", + "PROVIDER_ZENRIN", + "PROVIDER_SANBORN", + "PROVIDER_URBAN_MAPPING", + "PROVIDER_US_GOVERNMENT", + "PROVIDER_US_CENSUS", + "PROVIDER_US_POSTAL_SERVICE", + "PROVIDER_US_GEOLOGICAL_SURVEY", + "PROVIDER_US_GNIS", + "PROVIDER_US_LANDSAT", + "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY", + "PROVIDER_US_NGA_GNS", + "PROVIDER_US_SSIBL", + "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS", + "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION", + "PROVIDER_US_POLAR_GEOSPATIAL_CENTER", + "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE", + "PROVIDER_US_NPI_REGISTRY", + "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS", + "PROVIDER_DMTI_SPATIAL", + "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION", + "PROVIDER_MAPLINK", + "PROVIDER_KINGWAY", + "PROVIDER_GEOCENTRE", + "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS", + "PROVIDER_CN_MAPABC", + "PROVIDER_SMITHSONIAN_INSTITUTE", + "PROVIDER_TRACKS_FOR_AFRICA", + "PROVIDER_PPWK", + "PROVIDER_LEADDOG", + "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG", + "PROVIDER_GISRAEL", + "PROVIDER_BASARSOFT", + "PROVIDER_MAPINFO", + "PROVIDER_MAPIT", + "PROVIDER_GEOBASE", + "PROVIDER_ORION", + "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY", + "PROVIDER_ANASAT", + "PROVIDER_MINED_POSTCODES", + "PROVIDER_DMAPAS", + "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY", + "PROVIDER_CH_SBB", + "PROVIDER_SKENERGY", + "PROVIDER_GBRMPA", + "PROVIDER_KOREA_POST", + "PROVIDER_CN_AUTONAVI", + "PROVIDER_MINED_POI", + "PROVIDER_ML_INFOMAP", + "PROVIDER_SNOOPER", + "PROVIDER_GEOSISTEMAS", + "PROVIDER_AFRIGIS", + "PROVIDER_TRANSNAVICOM", + "PROVIDER_EASYCONNECT", + "PROVIDER_LANTMATERIET", + "PROVIDER_LOGICA", + "PROVIDER_MAPKING", + "PROVIDER_DIANPING", + "PROVIDER_GEONAV", + "PROVIDER_HEIBONSHA", + "PROVIDER_DEUTSCHE_TELEKOM", + "PROVIDER_LINGUISTIC_DATA_CONSORTIUM", + "PROVIDER_ACXIOM", + "PROVIDER_DUN_AND_BRADSTREET", + "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION", + "PROVIDER_INFOUSA", + "PROVIDER_INFOUSA_NIXIE", + "PROVIDER_THOMSON_LOCAL", + "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION", + "PROVIDER_WIKIPEDIA", + "PROVIDER_INFOBEL", + "PROVIDER_MX_GOVERNMENT", + "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY", + "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO", + "PROVIDER_TELEGATE", + "PROVIDER_TELELISTAS", + "PROVIDER_MAPCITY", + "PROVIDER_EXPLAINER_DC", + "PROVIDER_DAIKEI", + "PROVIDER_NL_CHAMBER_OF_COMMERCE", + "PROVIDER_KOREA_INFO_SERVICE", + "PROVIDER_WIKITRAVEL", + "PROVIDER_FLICKR", + "PROVIDER_DIANCO", + "PROVIDER_VOLT_DELTA", + "PROVIDER_SG_GOVERNMENT", + "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY", + "PROVIDER_MAPBAR", + "PROVIDER_LONGTU", + "PROVIDER_SA_GOVERNMENT", + "PROVIDER_SA_SAUDI_POST", + "PROVIDER_PEAKLIST", + "PROVIDER_LOCAL_BUSINESS_CENTER", + "PROVIDER_LOCAL_FEED_XML", + "PROVIDER_WEB", + "PROVIDER_RAILS_TO_TRAILS", + "PROVIDER_INDIACOM", + "PROVIDER_INFOMEDIA", + "PROVIDER_PICASA", + "PROVIDER_AT_GOVERNMENT", + "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN", + "PROVIDER_AT_NATIONAL_TOURIST_OFFICE", + "PROVIDER_AT_AUSTRIA_POST", + "PROVIDER_NO_GOVERNMENT", + "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON", + "PROVIDER_NO_POSTEN_NORGE_AS", + "PROVIDER_CH_GOVERNMENT", + "PROVIDER_CH_SWISS_POST", + "PROVIDER_CH_SWISSTOPO", + "PROVIDER_CH_SWISS_NATIONAL_PARK", + "PROVIDER_NAVIT", + "PROVIDER_GEOSEARCH", + "PROVIDER_DE_GOVERNMENT", + "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE", + "PROVIDER_BUNDESNETZAGENTUR", + "PROVIDER_SCHOBER_GROUP", + "PROVIDER_MIREO", + "PROVIDER_PUBLIC_MUNICIPALITY", + "PROVIDER_US_PUBLIC_MUNICIPALITY", + "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS", + "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS", + "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO", + "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN", + "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY", + "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE", + "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO", + "PROVIDER_NZ_PUBLIC_MUNICIPALITY", + "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY", + "PROVIDER_PL_PUBLIC_MUNICIPALITY", + "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA", + "PROVIDER_DE_PUBLIC_MUNICIPALITY", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE", + "PROVIDER_PT_PUBLIC_MUNICIPALITY", + "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ", + "PROVIDER_AT_PUBLIC_MUNICIPALITY", + "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT", + "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ", + "PROVIDER_ES_PUBLIC_MUNICIPALITY", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA", + "PROVIDER_AU_PUBLIC_MUNICIPALITY", + "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA", + "PROVIDER_IS_PUBLIC_MUNICIPALITY", + "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK", + "PROVIDER_NL_PUBLIC_MUNICIPALITY", + "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN", + "PROVIDER_BE_PUBLIC_MUNICIPALITY", + "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN", + "PROVIDER_CA_PUBLIC_MUNICIPALITY", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO", + "PROVIDER_SE_PUBLIC_MUNICIPALITY", + "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA", + "PROVIDER_UA_PUBLIC_MUNICIPALITY", + "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV", + "PROVIDER_OTHER_PUBLIC_MUNICIPALITY", + "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS", + "PROVIDER_FR_PUBLIC_MUNICIPALITY", + "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER", + "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX", + "PROVIDER_SG_PUBLIC_MUNICIPALITY", + "PROVIDER_BR_PUBLIC_MUNICIPALITY", + "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO", + "PROVIDER_MAPCUBE", + "PROVIDER_3D_REALITYMAPS", + "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT", + "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA", + "PROVIDER_DISNEY", + "PROVIDER_CYBERCITY", + "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS", + "PROVIDER_VIRTUAL_HUNGARY_LIMITED", + "PROVIDER_VIRTUEL_CITY", + "PROVIDER_SCREAMPOINT_INTERNATIONAL", + "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN", + "PROVIDER_FR_GOVERNMENT", + "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL", + "PROVIDER_FR_CADASTRE", + "PROVIDER_DIADIEM", + "PROVIDER_THE_WEATHER_CHANNEL", + "PROVIDER_COWI", + "PROVIDER_FALKPLAN_ANDES", + "PROVIDER_NL_GOVERNMENT", + "PROVIDER_NL_KADASTER", + "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS", + "PROVIDER_DIGITAL_MAP_PRODUCTS", + "PROVIDER_SILICE_DIGITAL", + "PROVIDER_TYDAC", + "PROVIDER_ALBRECHT_GOLF", + "PROVIDER_HEALTH_CH", + "PROVIDER_VISITDENMARK", + "PROVIDER_FLYHERE", + "PROVIDER_DIGITAL_DATA_SERVICES", + "PROVIDER_MECOMO", + "PROVIDER_ZA_GOVERNMENT", + "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM", + "PROVIDER_SENSIS", + "PROVIDER_JJCONNECT", + "PROVIDER_OPPLYSNINGEN", + "PROVIDER_TELLUS", + "PROVIDER_IQONIA", + "PROVIDER_BE_GOVERNMENT", + "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT", + "PROVIDER_BE_BRUSSELS_MOBILITY", + "PROVIDER_YELLOWMAP_AG", + "PROVIDER_STIFTUNG_GESUNDHEIT", + "PROVIDER_GIATA", + "PROVIDER_SANPARKS", + "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE", + "PROVIDER_INFOPORTUGAL", + "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO", + "PROVIDER_COLLINS_BARTHOLOMEW", + "PROVIDER_PROTECT_PLANET_OCEAN", + "PROVIDER_KARTTAKESKUS", + "PROVIDER_FI_GOVERNMENT", + "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION", + "PROVIDER_FI_NATIONAL_LAND_SURVEY", + "PROVIDER_FI_STATISTICS_FINLAND", + "PROVIDER_GB_GOVERNMENT", + "PROVIDER_GB_ORDNANCE_SURVEY", + "PROVIDER_NATURAL_ENGLAND", + "PROVIDER_WELSH_GOVERNMENT", + "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS", + "PROVIDER_EPSILON", + "PROVIDER_PARTNER_FRONT_END", + "PROVIDER_CARTESIA", + "PROVIDER_SE_GOVERNMENT", + "PROVIDER_SE_TRAFIKVERKET", + "PROVIDER_SE_NATURVARDSVERKET", + "PROVIDER_IE_GOVERNMENT", + "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND", + "PROVIDER_LU_GOVERNMENT", + "PROVIDER_LU_P_AND_T_LUXEMBOURG", + "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE", + "PROVIDER_LU_NATIONAL_TOURIST_OFFICE", + "PROVIDER_MAPFLOW", + "PROVIDER_TKARTOR", + "PROVIDER_JUMPSTART", + "PROVIDER_EPTISA", + "PROVIDER_MC_GOVERNMENT", + "PROVIDER_MC_PRINCIPAUTE_DE_MONACO", + "PROVIDER_MONOLIT", + "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE", + "PROVIDER_MODIS", + "PROVIDER_GEOX", + "PROVIDER_GEODIRECTORY", + "PROVIDER_GEOPLAN", + "PROVIDER_INFODIREKT", + "PROVIDER_GEOGLOBAL", + "PROVIDER_DEUTSCHE_POST", + "PROVIDER_TRACASA", + "PROVIDER_CORREOS", + "PROVIDER_ES_GOVERNMENT", + "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA", + "PROVIDER_EDIMAP", + "PROVIDER_VERIZON", + "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS", + "PROVIDER_PROMAPS", + "PROVIDER_CONSODATA", + "PROVIDER_DE_AGOSTINI", + "PROVIDER_FEDERPARCHI", + "PROVIDER_NAVIGO", + "PROVIDER_ITALIAMAPPE", + "PROVIDER_CZECOT", + "PROVIDER_NATURAL_EARTH", + "PROVIDER_REGIO", + "PROVIDER_SHIPWRECK_CENTRAL", + "PROVIDER_RUTGERS_STATE_UNIVERSITY", + "PROVIDER_TWINICE", + "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD", + "PROVIDER_INFOGROUP", + "PROVIDER_TNET", + "PROVIDER_CTT_CORREIOS_DE_PORTUGAL", + "PROVIDER_EUROPARC", + "PROVIDER_IUPPITER", + "PROVIDER_MICHAEL_BAUER_INTERNATIONAL", + "PROVIDER_LEPTON", + "PROVIDER_MAPPOINT", + "PROVIDER_GEODATA", + "PROVIDER_RU_GOVERNMENT", + "PROVIDER_RU_FNS_KLADR", + "PROVIDER_BR_GOVERNMENT", + "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATURAIS_RENOVAVEIS", + "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE", + "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS", + "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA", + "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO", + "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES", + "PROVIDER_AZAVEA", + "PROVIDER_NORTHSTAR", + "PROVIDER_COMMEDI", + "PROVIDER_NEXUS_GEOGRAFICS", + "PROVIDER_INFOERA", + "PROVIDER_AD_GOVERNMENT", + "PROVIDER_AD_AREA_DE_CARTOGRAFIA", + "PROVIDER_MAXXIMA", + "PROVIDER_SI_GOVERNMENT", + "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT", + "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS", + "PROVIDER_L1_TECHNOLOGIES", + "PROVIDER_TELEMEDIA", + "PROVIDER_CDCOM_PROGOROD", + "PROVIDER_MIT_CITYGUIDE", + "PROVIDER_SUNCART", + "PROVIDER_MICROMAPPER", + "PROVIDER_RICHI", + "PROVIDER_FORUM44", + "PROVIDER_SEAT", + "PROVIDER_VALASSIS", + "PROVIDER_NAVICOM", + "PROVIDER_COLTRACK", + "PROVIDER_PSMA_AUSTRALIA", + "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA", + "PROVIDER_CA_GOVERNMENT", + "PROVIDER_STATISTICS_CANADA", + "PROVIDER_TOCTOC", + "PROVIDER_RMSI", + "PROVIDER_TRUE_TECHNOLOGY", + "PROVIDER_INCREMENT_P_CORPORATION", + "PROVIDER_GOJAVAS", + "PROVIDER_GEOINFORMATION_GROUP", + "PROVIDER_CYBERSOFT", + "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY", + "PROVIDER_EE_GOVERNMENT", + "PROVIDER_EE_MAA_AMET", + "PROVIDER_GASBUDDY", + "PROVIDER_DK_GOVERNMENT", + "PROVIDER_DK_GEODATASTYRELSEN", + "PROVIDER_MURCIA_REGION_GOVERNMENT", + "PROVIDER_CORREIOS", + "PROVIDER_WEST_WORLD_MEDIA", + "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION", + "PROVIDER_MEDICARE", + "PROVIDER_POLARIS", + "PROVIDER_TW_GOVERNMENT", + "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER", + "PROVIDER_NORDECA", + "PROVIDER_AFRIMAPPING", + "PROVIDER_OVERDRIVE", + "PROVIDER_PROVIDER_NETWORK_DIRECTORIES", + "PROVIDER_BR_MINISTERIO_DA_SAUDE", + "PROVIDER_DIGITAL_EGYPT", + "PROVIDER_INRIX", + "PROVIDER_ARPINDO", + "PROVIDER_IT_GOVERNMENT", + "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE", + "PROVIDER_EAST_END_GROUP", + "PROVIDER_INGEOLAN", + "PROVIDER_SEMACONNECT", + "PROVIDER_BLINK", + "PROVIDER_EVGO", + "PROVIDER_CHARGEPOINT", + "PROVIDER_TPL_TRAKKER", + "PROVIDER_OI", + "PROVIDER_MAPARADAR", + "PROVIDER_SINGAPORE_POST", + "PROVIDER_CHARGEMASTER", + "PROVIDER_TESLA", + "PROVIDER_VISICOM", + "PROVIDER_GEOLYSIS", + "PROVIDER_ZEPHEIRA", + "PROVIDER_HUBJECT", + "PROVIDER_PODPOINT", + "PROVIDER_CHARGEFOX", + "PROVIDER_KR_GOVERNMENT", + "PROVIDER_KR_MOLIT", + "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY", + "PROVIDER_CRITCHLOW", + "PROVIDER_EIFRIG", + "PROVIDER_GIREVE", + "PROVIDER_CN_NAVINFO", + "PROVIDER_JAPAN_CHARGE_NETWORK", + "PROVIDER_NOBIL", + "PROVIDER_INDIA_BANKS", + "PROVIDER_INDONESIA_ELECTION_KPU", + "PROVIDER_CAREERS360", + "PROVIDER_SOURCE_LONDON", + "PROVIDER_EVBOX", + "PROVIDER_JP_GOVERNMENT", + "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT", + "PROVIDER_YUMYUM", + "PROVIDER_HWW_AUSTRALIA", + "PROVIDER_CINERGY", + "PROVIDER_MTIME", + "PROVIDER_KULTUNAUT", + "PROVIDER_BLITZ", + "PROVIDER_PIA", + "PROVIDER_INTERPARK", + "PROVIDER_CINEMA_ONLINE", + "PROVIDER_BELBIOS", + "PROVIDER_MOVIESEER", + "PROVIDER_SODAMEDYA", + "PROVIDER_ATMOVIES", + "PROVIDER_HOTELBEDS", + "PROVIDER_VERICRED", + "PROVIDER_CIRRANTIC", + "PROVIDER_GOGO_LABS", + "PROVIDER_ELECTRIFY_AMERICA", + "PROVIDER_CMS_MPPUF", + "PROVIDER_DIGIROAD", + "PROVIDER_KONTEX_GEOMATICS", + "PROVIDER_NZ_GOVERNMENT", + "PROVIDER_NZ_LINZ", + "PROVIDER_NZ_DOC", + "PROVIDER_FASTNED", + "PROVIDER_DESTINY_CS", + "PROVIDER_IONITY", + "PROVIDER_EV_CONNECT", + "PROVIDER_PANPAGES", + "PROVIDER_ETECNIC", + "PROVIDER_VOLTA", + "PROVIDER_NISSAN_MEXICO", + "PROVIDER_BMW_GROUP_LATIN_AMERICA", + "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO", + "PROVIDER_VOLVO_CARS_BRASIL", + "PROVIDER_CHARGE_AND_PARKING", + "PROVIDER_DEDUCE_TECHNOLOGIES", + "PROVIDER_SK_TELECOM", + "PROVIDER_ECO_MOVEMENT", + "PROVIDER_GOOGLE_GMS", + "PROVIDER_EASYWAY", + "PROVIDER_PHYSICIAN_COMPARE", + "PROVIDER_HOSPITAL_COMPARE", + "PROVIDER_ENDOLLA_BARCELONA", + "PROVIDER_BE_CHARGE", + "PROVIDER_ONE_NETWORK", + "PROVIDER_CARENAV_DUPLEX", + "PROVIDER_CARENAV_POI", + "PROVIDER_IN_GOVERNMENT", + "PROVIDER_SURVEY_OF_INDIA", + "PROVIDER_E_ON", + "PROVIDER_ELECTRIFY_CANADA", + "PROVIDER_GRIDCARS", + "PROVIDER_DRIVECO", + "PROVIDER_GREEN_ACTION_STUDIOS", + "PROVIDER_GREEN_ACTION_STUDIO", + "PROVIDER_EVINY", + "PROVIDER_MASTERCARD", + "PROVIDER_VATTENFALL" + ], + "enumDescriptions": [ + "ABSTRACT The root of all provider types. This should never be present on an actual feature, but can be useful when calling InCategory.", + "not actually a legal value, used as sentinel", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730AA", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is an internal *only* provider meant for sending wipeout requests to mapfacts.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Never rely on source infos with this provider to identify whether or not a feature is a Prominent Place! Instead, use the proper API, localsearch_clustering::QualityTierHelper::IsProminentPlace().", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "The next new \"Google\" provider entries should be placed above.", + "UMBRELLA", + "", + "", + "", + "This is a testing provider for teams that wish to integrate with components of the Geo Data Infrastructure that require a valid provider. No production data should ever be sent using this provider.", + "", + "UMBRELLA", + "", + "", + "", + "UMBRELLA", + "0x1117F must not be used, since its range extends the PROVIDER_GOOGLE hierarchy.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Deprecated in favor of PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and PROVIDER_GOOGLE_GEO_TIGER (for categories).", + "", + "0x1117FF should not be used, since its range further extends the PROVIDER_GOOGLE hierarchy. aka Local AI.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "No data is obtained from this provider. It is only used to identify features that must be served on MapMaker.", + "", + "", + "", + "", + "", + "", + "0x1117FFF should not be used, since its range further extends the PROVIDER_GOOGLE hierarchy. Synthetically generated areas (sublocalities/neighborhoods/ postal codes/etc) based on dropped terms from approximate geocoding. More info on go/syntheticareas.", + "", + "", + "", + "Similar to Google Transit, a provider that aggregates positions of bicycle rental points that we have agreements with to show on maps", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This range has been depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above.", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "Small Scale International Boundary Lines", + "", + "NOAA", + "PGC", + "USDA", + "National Provider Identifier Registry", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "old name for PROVIDER_NAVIGO", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "See b/33687395", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "ABSTRACT", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "IBAMA", + "MMA", + "ANA", + "IBGE", + "FUNAI", + "DNIT", + "", + "", + "", + "", + "", + "ABSTRACT", + "Department of Cartography", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "0x12 and 0x120 are not to be used. OOO CET", + "ABSTRACT", + "Estonian Land Board", + "", + "ABSTRACT", + "Danish Geodata Agency", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "Ministry of land, infrastructure and transport, 국토교통부, Guktogyotongbu", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION.", + "", + "ABSTRACT", + "Land Information New Zealand", + "NZ Department of Conservation", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Note: Next available value is 0x126C." + ], + "type": "string" + }, + "rawMetadata": { + "description": "For every key that is used in raw_data from this source, there must be a corresponding entry in raw_metadata that describes this key.", + "items": { + "$ref": "GeostoreRawMetadataProto" + }, + "type": "array" + }, + "release": { + "description": "A release string that doesn't have to be a date. This is provided so that we can preserve provider release strings that aren't based on dates. If you don't set it, the release_date will get formatted into this field for debugging purposes.", + "type": "string" + }, + "releaseDate": { + "$ref": "GeostoreDateTimeProto", + "description": "The release date of this data." + }, + "sourceDataset": { + "description": "A data provider defined string describing the source dataset from which the features of this data source were generated. For example, the MultiNet \"fra\" dataset produces features for both France and Monaco.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreDateTimeProto": { + "id": "GeostoreDateTimeProto", + "properties": { + "precision": { + "description": "This attribute describes the precision of the date and time. It would be unusual for a data provider to provide a precision along with their date. It is more likely that the precision of a date will be inferred from the date format. For example \"19th century\" is likely to be correct to the century, while \"1800\" is probably correct to the year. The precision should be semantically interpreted as a cast, so a DateTimeProto object with a seconds value corresponding to 2018-03-28 18:40:00 UTC and a precision of MONTH should be interpreted as \"March 2018\". The enums above are only some of the possible precision levels for dates and times. Clients may wish to add more precision enums in the future. However, these enums must be ordered by decreasing duration. Clients should be able to write date formatting code that looks like this: if (datetime.precision() \u003c= DateTimeProto::PRECISION_CENTURY) { date = FormatCenturyDate(proto.seconds()); } else if (proto.precision() \u003c= case DateTimeProto::PRECISION_DECADE) { date = FormatDecadeDate(proto.seconds()); } else { ... } See geostore/base/public/datetime.h for date formatting utility functions.", + "enum": [ + "PRECISION_CENTURY", + "PRECISION_DECADE", + "PRECISION_YEAR", + "PRECISION_MONTH", + "PRECISION_DAY", + "PRECISION_HOUR", + "PRECISION_MINUTE", + "PRECISION_SECOND" + ], + "enumDescriptions": [ + "The enum values here should be ordered from low precision to high precision.", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "seconds": { + "description": "Number of seconds since (or before) the UNIX epoch (January 1, 1970). This is also the standard epoch for Java and Python time representations. If it is important for this time be displayed correctly for different time zones, convert the time to Coordinated Universal Time (UTC).", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GeostoreDimensionComparisonProto": { + "description": "A dimension value tagged with a comparison operator. This can be used for height, width, or length.", + "id": "GeostoreDimensionComparisonProto", + "properties": { + "comparisonOperator": { + "enum": [ + "UNSPECIFIED", + "EQUAL", + "LESS_THAN", + "LESS_THAN_OR_EQUAL", + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "dimensionWithUnit": { + "$ref": "GeostoreDimensionProto" + } + }, + "type": "object" + }, + "GeostoreDimensionProto": { + "description": "A dimension with a numerical value and unit. This can be a height, width, or length.", + "id": "GeostoreDimensionProto", + "properties": { + "dimension": { + "format": "float", + "type": "number" + }, + "unit": { + "enum": [ + "UNIT_UNKNOWN", + "METERS", + "FEET" + ], + "enumDescriptions": [ + "Default proto value, this value will never be set in MapFacts.", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreDisplayDataProto": { + "description": "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.", + "id": "GeostoreDisplayDataProto", + "properties": { + "displayLocation": { + "$ref": "GeostorePointProto", + "description": "The location where this feature should be rendered." + } + }, + "type": "object" + }, + "GeostoreDoodleProto": { + "description": "This protocol buffer holds the doodle-specific attributes for features of type TYPE_DOODLE.", + "id": "GeostoreDoodleProto", + "properties": { + "type": { + "description": "The type of this feature -- see comments above.", + "enum": [ + "TYPE_ANY", + "TYPE_USER_DEFINED_LABEL", + "TYPE_POINT_ANNOTATION", + "TYPE_LINE_ANNOTATION", + "TYPE_AREA_ANNOTATION" + ], + "enumDescriptions": [ + "ABSTRACT", + "A label that a cartographer has manually placed on the map. These may be read in from configuration files in a renderer and drawn on the map in the appropriate location.", + "Point, line, and area annotations. There used to be a more detailed list of doodle types here, but the doodles encoded with them turned out to have a fair bit of tricky datasource-specific baggage. Rather than list provider-specific types here, they've been pulled out and are now private to the importer and the renderer. The point/line/area distinction however has proven to be useful for configuration and filtering, and remains.", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreDurationBasedRateProto": { + "description": "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.", + "id": "GeostoreDurationBasedRateProto", + "properties": { + "isFree": { + "description": "If true, represents that the rate is free; i.e. the price is 0 in any currency. If this is true, price must be empty.", + "type": "boolean" + }, + "periodicitySeconds": { + "description": "The billable unit of the rate; i.e. after having utilized the service for exactly periodicity_seconds, the total cost should increase by ‘price’. For example, if the rate expresses a price per hour, then periodicity_seconds should be set to 3600. If this is unset, then the rate does not vary based on duration, and price represents a flat cost. May only be set if price is nonempty.", + "format": "int32", + "type": "integer" + }, + "price": { + "description": "The total price, in each applicable currency, of utilizing the service for periodicity_seconds, or for the entire duration expressed by range_start_seconds and range_end_seconds if periodicity_seconds is 0. Each entry should have an ID of /measurement_unit/money_value and consist of two properties: one with an ID of /measurement_unit/money_value/amount and a float value with the amount, and another with the ID /measurement_unit/money_value/currency and an ID value with the MID of the proper currency. May only be set if is_free is false.", + "items": { + "$ref": "FreebaseTopic" + }, + "type": "array" + }, + "rangeEndSeconds": { + "description": "Upper bound for durations to match, exclusive. Unset implies indefinite.", + "format": "int32", + "type": "integer" + }, + "rangeStartSeconds": { + "description": "Lower bound for durations to match, inclusive. Required; a value of 0 expresses that the price applies from the start of the utilization period.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostoreElevationModelProto": { + "description": "Represents raster digital elevation model data.", + "id": "GeostoreElevationModelProto", + "properties": { + "blendOrder": { + "description": "Defines the relative order in which terrain data should be rendered. Features with higher blend_order should be blended on top of features with lower blend_order. NOTE: this is backwards from the way BlendRank works in Magrathean.", + "format": "int32", + "type": "integer" + }, + "dataLevel": { + "description": "The zoom level at which this data is defined. Level 0 is world level data, and each increase in zoom level corresponds to a factor of 2 increase in scale.", + "format": "int32", + "type": "integer" + }, + "dataMaxlevel": { + "description": "The maximum (finest) level at which this terrain data has sufficient resolution to be displayed.", + "format": "int32", + "type": "integer" + }, + "elevationData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place to store an elevation data protocol buffer. Currently, this must be a keyhole::AssetTileCompressed (see google3/keyhole/common/proto/magrathean.protodevel)." + }, + "fullChildDataAvailable": { + "description": "If true, all of the data contained in this feature is available at the next highest (more detailed) level. If this is true, partial_child_data_available should also be true.", + "type": "boolean" + }, + "partialChildDataAvailable": { + "description": "If true, at least part of the data contained in this feature is available at the next highest (more detailed) level.", + "type": "boolean" + } + }, + "type": "object" + }, + "GeostoreElevationProto": { + "description": "This protocol buffer holds elevation and related data.", + "id": "GeostoreElevationProto", + "properties": { + "averageElevationMeters": { + "description": "The average elevation of the feature in meters above the local mean sea level.", + "format": "double", + "type": "number" + }, + "peak": { + "$ref": "GeostorePeakProto", + "description": "Additional details for TYPE_PEAK and TYPE_VOLCANO features." + } + }, + "type": "object" + }, + "GeostoreEntranceProto": { + "description": "This protocol buffer holds entrance-specific attributes for features of type TYPE_ENTRANCE.", + "id": "GeostoreEntranceProto", + "properties": { + "allowance": { + "enum": [ + "ENTER_AND_EXIT", + "ENTER_ONLY", + "EXIT_ONLY" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "canEnter": { + "description": "DEPRECATED. Please use enter_or_exit instead.", + "type": "boolean" + }, + "canExit": { + "description": "Whether the target can be entered through this entrance. Whether the target can be exited through this entrance.", + "type": "boolean" + } + }, + "type": "object" + }, + "GeostoreEntranceReferenceProto": { + "description": "Models a relationship between a feature and its entrance or exit.", + "id": "GeostoreEntranceReferenceProto", + "properties": { + "featureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "Feature ID of the related entrance. References should refer to TYPE_ENTRANCE or TYPE_COMPOUND features that are entrances or exits of the referencing feature." + } + }, + "type": "object" + }, + "GeostoreEstablishmentProto": { + "description": "This protocol buffer holds establishment-specific attributes for features of type TYPE_ESTABLISHMENT.", + "id": "GeostoreEstablishmentProto", + "properties": { + "bizbuilderReference": { + "$ref": "GeostoreBizBuilderReferenceProto", + "description": "Reference to BizBuilder data for this establishment. The bizbuilder_reference field indicates that a feature is claimed in CBDB (with the canonical state in MapFacts). The bizbuilder_reference is different from the social_reference's claimed_gaia_id because some BizBuilder clients will not have +Pages. All claimed businesses should have a bizbuilder_reference." + }, + "hours": { + "$ref": "GeostoreTimeScheduleProto", + "description": "Regular opening hours for the establishment (weekly schedule)." + }, + "openingHours": { + "$ref": "GeostoreOpeningHoursProto", + "description": "Opening hours for this establishment, including regular weekly hours and exceptional hours (e.g. on holidays). NOTE: in practice, only the exceptional hours are filled in this message. A schema migration for regular weekly hours was planned back in 2015 (see b/23105782) but was not completed and is (as of May 2018) not prioritized. Clients should continue getting regular opening hours from the `hours` field above. In openinghours.h there is a utility function `GetOpeningHoursFromFeature` that merges `EstablishmentProto.hours` into this proto." + }, + "priceInfo": { + "$ref": "GeostorePriceInfoProto", + "description": "Pricing for products and services offered. Example: menus for restaurants." + }, + "serviceArea": { + "$ref": "GeostoreServiceAreaProto" + }, + "telephone": { + "description": "Telephone number and related information.", + "items": { + "$ref": "GeostoreTelephoneProto" + }, + "type": "array" + }, + "type": { + "description": "** DEPRECATED ** This is deprecated in favor of the top-level (in FeatureProto) set of GConcepts. The type of establishment -- see comments above.", + "enum": [ + "TYPE_ANY", + "TYPE_UNDEFINED", + "TYPE_DEPRECATED_AVIATION", + "TYPE_BUSINESS", + "TYPE_TRAVEL_SERVICE", + "TYPE_LODGING", + "TYPE_HOTEL", + "TYPE_RESORT", + "TYPE_MOTEL", + "TYPE_HOSTEL", + "TYPE_GUESTHOUSE", + "TYPE_VACATION_RENTAL", + "TYPE_GAS_STATION", + "TYPE_REST_AREA", + "TYPE_CASH_MACHINE", + "TYPE_CAR_RENTAL", + "TYPE_CAR_REPAIR", + "TYPE_TAXI_STAND", + "TYPE_TRAVEL_AGENT", + "TYPE_BICYCLE_RENTAL_POINT", + "TYPE_ELECTRIC_VEHICLE_CHARGING_STATION", + "TYPE_SHOPPING", + "TYPE_GROCERY", + "TYPE_ANTIQUES", + "TYPE_APPAREL", + "TYPE_GIFTS", + "TYPE_JEWELRY", + "TYPE_SPORTING_GOODS", + "TYPE_VEHICLE", + "TYPE_SHOPPING_CENTER", + "TYPE_SUPERMARKET", + "TYPE_FAIRGROUNDS", + "TYPE_MARKET", + "TYPE_PRODUCE_MARKET", + "TYPE_FARMERS_MARKET", + "TYPE_LIQUOR_STORE", + "TYPE_SOUVENIR_SHOP", + "TYPE_INDUSTRIAL", + "TYPE_CONSTRUCTION", + "TYPE_BUILDING_MATERIAL", + "TYPE_SECURITY_PRODUCTS", + "TYPE_MECHANICAL", + "TYPE_TEXTILE", + "TYPE_CHEMICAL", + "TYPE_METAL", + "TYPE_TRANSPORTATION", + "TYPE_FREIGHT", + "TYPE_AVIATION", + "TYPE_COURIER", + "TYPE_MOVING", + "TYPE_PACKAGING", + "TYPE_RAIL", + "TYPE_PUBLIC_TRANSIT", + "TYPE_WAREHOUSE", + "TYPE_DEFENSE", + "TYPE_AGRICULTURE", + "TYPE_PLANTATION", + "TYPE_PLANT_NURSERY", + "TYPE_DESIGN", + "TYPE_UTILITIES", + "TYPE_POWER_PLANT", + "TYPE_SEWAGE_TREATMENT_PLANT", + "TYPE_WATER_TREATMENT_PLANT", + "TYPE_SUBSTATION", + "TYPE_MANUFACTURING", + "TYPE_BIOTECH", + "TYPE_MATERIALS", + "TYPE_MINING", + "TYPE_QUARRY", + "TYPE_TANNERY", + "TYPE_OIL_REFINERY", + "TYPE_ADVERTISING_MARKETING", + "TYPE_LEGAL", + "TYPE_FAMILY_LAW", + "TYPE_IP_LAW", + "TYPE_LABOR_LAW", + "TYPE_PERSONAL_INJURY_LAW", + "TYPE_CRIMINAL_LAW", + "TYPE_PERSONAL_FINANCE", + "TYPE_LIFE_INSURANCE", + "TYPE_LENDING", + "TYPE_ACCOUNTING", + "TYPE_INVESTING", + "TYPE_BANKING", + "TYPE_HEALTH", + "TYPE_HEALTH_EQUIPMENT", + "TYPE_NURSING", + "TYPE_HEALTH_INSURANCE", + "TYPE_HEALTH_FACILITY", + "TYPE_DIAGNOSTIC_CENTER", + "TYPE_HEALTH_RESOURCES", + "TYPE_NUTRITION", + "TYPE_VISION", + "TYPE_COUNSELING", + "TYPE_MASSAGE", + "TYPE_BLOOD_BANK", + "TYPE_HEARING", + "TYPE_HOME_GARDEN", + "TYPE_INTERIOR_DECOR", + "TYPE_DOMESTIC_SERVICES", + "TYPE_APPLIANCES", + "TYPE_PEST_CONTROL", + "TYPE_GARDENING", + "TYPE_ELECTRONICS", + "TYPE_COMPUTER", + "TYPE_COMPUTER_HARDWARE", + "TYPE_COMPUTER_SECURITY", + "TYPE_COMPUTER_SOFTWARE", + "TYPE_COMPUTER_SUPPORT", + "TYPE_AUDIO_DEVICES", + "TYPE_VIDEO_DEVICES", + "TYPE_REAL_ESTATE", + "TYPE_OFFICE_SERVICES", + "TYPE_ENTERTAINMENT", + "TYPE_GAMES", + "TYPE_CASINO", + "TYPE_LOTTO", + "TYPE_VIDEO", + "TYPE_CLUBS", + "TYPE_DISCOTHEQUE", + "TYPE_ANIMATION", + "TYPE_MODELING", + "TYPE_HUMOR", + "TYPE_MOVIES", + "TYPE_MOVIE_RENTAL", + "TYPE_MOVIE_THEATER", + "TYPE_MUSIC", + "TYPE_RADIO", + "TYPE_TV", + "TYPE_BAR", + "TYPE_PRINT_MEDIA", + "TYPE_ADULT", + "TYPE_SEXUAL_SERVICES", + "TYPE_ANIMALS", + "TYPE_PETS", + "TYPE_FISHERY", + "TYPE_ARTS", + "TYPE_BOOKS", + "TYPE_PERFORMING_ARTS", + "TYPE_GALLERY", + "TYPE_AUTOMOTIVE", + "TYPE_PARTS", + "TYPE_AUTO_FINANCE", + "TYPE_AUTO_INSURANCE", + "TYPE_RV", + "TYPE_MOTORCYCLES", + "TYPE_CARS", + "TYPE_TRUCKS_SUVS", + "TYPE_LICENSING", + "TYPE_MAINTENANCE", + "TYPE_PERSONAL_CARE", + "TYPE_BODY_ART", + "TYPE_COSMETICS", + "TYPE_FITNESS", + "TYPE_YOGA_CENTER", + "TYPE_GYM", + "TYPE_HAIR_CARE", + "TYPE_SPA", + "TYPE_BEAUTY_SALON", + "TYPE_CORPORATE_EVENTS", + "TYPE_HUMAN_RESOURCES", + "TYPE_FOOD_AND_DRINK", + "TYPE_BEVERAGE", + "TYPE_RECIPES", + "TYPE_COOKWARE", + "TYPE_CULINARY", + "TYPE_RETAIL", + "TYPE_RESTAURANT", + "TYPE_COFFEE", + "TYPE_BAKERY", + "TYPE_FOOD_CENTER", + "TYPE_TEA", + "TYPE_CAFE", + "TYPE_WINERY", + "TYPE_BREWERY", + "TYPE_FAST_FOOD", + "TYPE_FOOD_DELIVERY", + "TYPE_INTERNET", + "TYPE_WEB_DESIGN", + "TYPE_WEB_HOSTING", + "TYPE_WEB_SERVICES", + "TYPE_LIFESTYLE", + "TYPE_PHOTO_VIDEO", + "TYPE_ACTIVITIES", + "TYPE_BOATING", + "TYPE_CYCLING", + "TYPE_EQUESTRIAN", + "TYPE_FISHING", + "TYPE_HIKING", + "TYPE_HUNTING", + "TYPE_SWIMMING", + "TYPE_GOLF", + "TYPE_GOLF_COURSE", + "TYPE_BASEBALL", + "TYPE_BASKETBALL", + "TYPE_HOCKEY", + "TYPE_MOTOR_SPORTS", + "TYPE_WINTER_SPORTS", + "TYPE_FOOTBALL", + "TYPE_SOCCER", + "TYPE_ICE_SKATING", + "TYPE_BOXING", + "TYPE_CRICKET", + "TYPE_ROWING", + "TYPE_RUGBY", + "TYPE_RACQUET_SPORTS", + "TYPE_ROCK_CLIMBING", + "TYPE_REFERENCES", + "TYPE_MAPS", + "TYPE_TIME", + "TYPE_SCIENTIFIC_EQUIPMENT", + "TYPE_TELECOMMUNICATIONS", + "TYPE_EVENT_VENUE", + "TYPE_BANQUET_HALL", + "TYPE_CONFERENCE_HALL", + "TYPE_WEDDING_HALL", + "TYPE_EXHIBITION_HALL", + "TYPE_COMMUNITY_CENTER", + "TYPE_AUDITORIUM", + "TYPE_FUNCTION_HALL", + "TYPE_CONCERT_HALL", + "TYPE_AMPHITHEATER", + "TYPE_LAUNDRY", + "TYPE_LAUNDROMAT", + "TYPE_DRY_CLEANER", + "TYPE_MORTUARY", + "TYPE_REPAIR_AND_MAINTENANCE", + "TYPE_GOVERNMENT", + "TYPE_BORDER_CROSSING", + "TYPE_CITY_HALL", + "TYPE_COURTHOUSE", + "TYPE_EMBASSY", + "TYPE_LIBRARY", + "TYPE_PRISON", + "TYPE_TAX_OFFICE", + "TYPE_PROSECUTORS_OFFICE", + "TYPE_CONGRESS", + "TYPE_TOWN_COUNCIL", + "TYPE_CAPITOL_BUILDING", + "TYPE_VOTING_FACILITY", + "TYPE_CHECKPOINT", + "TYPE_SCHOOL", + "TYPE_UNIVERSITY", + "TYPE_ORPHANAGE", + "TYPE_KINDERGARTEN", + "TYPE_DAYCARE", + "TYPE_ACADEMY", + "TYPE_TRADE_SCHOOL", + "TYPE_SKILL_INSTRUCTION", + "TYPE_EMERGENCY", + "TYPE_HOSPITAL", + "TYPE_PHARMACY", + "TYPE_POLICE", + "TYPE_FIRE", + "TYPE_DOCTOR", + "TYPE_DENTIST", + "TYPE_VETERINARIAN", + "TYPE_FIRST_AID", + "TYPE_CIVIL_DEFENSE", + "TYPE_TOURIST_DESTINATION", + "TYPE_ECO_TOURIST_DESTINATION", + "TYPE_BIRD_WATCHING", + "TYPE_NATURE_RESERVE", + "TYPE_MUSEUM", + "TYPE_VISITOR_CENTER", + "TYPE_OBSERVATION_DECK", + "TYPE_OBSERVATORY", + "TYPE_SCENIC_POINT", + "TYPE_ZOO", + "TYPE_AQUARIUM", + "TYPE_AMUSEMENT_PARK", + "TYPE_MONUMENT", + "TYPE_PALACE", + "TYPE_FORT", + "TYPE_TOWER", + "TYPE_LIGHTHOUSE", + "TYPE_TEMPLE", + "TYPE_CHURCH", + "TYPE_GURUDWARA", + "TYPE_HINDU_TEMPLE", + "TYPE_MOSQUE", + "TYPE_SYNAGOGUE", + "TYPE_BUDDHIST_TEMPLE", + "TYPE_JAIN_TEMPLE", + "TYPE_BAHAI_TEMPLE", + "TYPE_SHINTO_TEMPLE", + "TYPE_MORMON_TEMPLE", + "TYPE_SPORTS_COMPLEX", + "TYPE_STADIUM", + "TYPE_BOWLING", + "TYPE_BADMINTON", + "TYPE_TENNIS", + "TYPE_TABLE_TENNIS", + "TYPE_PARK", + "TYPE_LOCAL_PARK", + "TYPE_NATIONAL_PARK", + "TYPE_US_NATIONAL_PARK", + "TYPE_US_NATIONAL_MONUMENT", + "TYPE_NATIONAL_FOREST", + "TYPE_NATIONAL_GRASSLAND", + "TYPE_NATIONAL_PRESERVE", + "TYPE_NATIONAL_RECREATION_AREA", + "TYPE_NATIONAL_MONUMENT", + "TYPE_NATIONAL_HISTORIC_AREA", + "TYPE_NATIONAL_SCENIC_AREA", + "TYPE_NATIONAL_SCENIC_ROADWAY_AREA", + "TYPE_NATIONAL_SCENIC_RIVER_AREA", + "TYPE_PROVINCIAL_PARK", + "TYPE_PROVINCIAL_FOREST", + "TYPE_CAMPGROUNDS", + "TYPE_WILDERNESS_AREA", + "TYPE_WILDLIFE_AREA", + "TYPE_BOTANICAL_GARDEN", + "TYPE_GARDEN", + "TYPE_ARBORETUM", + "TYPE_MARINE_PROTECTED_AREA", + "TYPE_AIRPORT", + "TYPE_TARMAC", + "TYPE_HELIPORT", + "TYPE_SEAPLANE_BASE", + "TYPE_MILITARY_AIRBASE", + "TYPE_CEMETERY", + "TYPE_MILITARY", + "TYPE_ENCLOSED_TRAFFIC_AREA", + "TYPE_PARKING", + "TYPE_OFF_ROAD_AREA", + "TYPE_POST_OFFICE", + "TYPE_HOUSING_DEVELOPMENT", + "TYPE_BRIDGE", + "TYPE_ARCHAEOLOGICAL", + "TYPE_HISTORICAL", + "TYPE_RUINS", + "TYPE_TUNNEL", + "TYPE_RESIDENTIAL_DWELLING", + "TYPE_DETACHED_DWELLING", + "TYPE_ATTACHED_DWELLING", + "TYPE_APARTMENT", + "TYPE_GATED_COMMUNITY", + "TYPE_RETIREMENT_HOME", + "TYPE_TOLL_BOOTH", + "TYPE_CULTURAL", + "TYPE_CULTURAL_CENTER", + "TYPE_OVERPASS", + "TYPE_REST_ROOM", + "TYPE_PUBLIC_PHONE", + "TYPE_PHONE_BOOTH", + "TYPE_MANNED_PCO", + "TYPE_RESEARCH_INSTITUTE", + "TYPE_NON_GOVERNMENTAL_ORGANIZATION", + "TYPE_OFFICE_PARK", + "TYPE_MEDITATION_CENTER", + "TYPE_RELIGIOUS", + "TYPE_MONASTERY", + "TYPE_ASHRAM", + "TYPE_PAGODA", + "TYPE_MISSION", + "TYPE_PILGRIM_DESTINATION", + "TYPE_SOCIAL_SERVICE", + "TYPE_RANGER_STATION", + "TYPE_TRANSIT_STATION", + "TYPE_BUS_STATION", + "TYPE_TRAMWAY_STATION", + "TYPE_TRAIN_STATION", + "TYPE_SUBWAY_STATION", + "TYPE_FERRY_TERMINAL", + "TYPE_CABLE_CAR_STATION", + "TYPE_GONDOLA_LIFT_STATION", + "TYPE_FUNICULAR_STATION", + "TYPE_HORSE_CARRIAGE_STATION", + "TYPE_MONORAIL_STATION", + "TYPE_SEAPORT", + "TYPE_NATURAL_FEATURE", + "TYPE_ELEVATED", + "TYPE_PEAK" + ], + "enumDescriptions": [ + "ABSTRACT", + "Can be used for features where no establishment information is available. For example, if an importer generates a TYPE_ESTABLISHMENT_BUILDING feature, but source data does not have any information on the actual purpose of the building, the importer should use TYPE_UNDEFINED for establishment type.", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Note: 0xF213F is reserved to extend TYPE_INDUSTRIAL", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "0xF6F is reserved and any new types should start with 0xF6F1", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "State parks, county parks, city parks, wilderness areas. This also includes underwater preserves, wild and scenic rivers, etc. Should we have things like baseball diamonds?", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Wildlife management area. This includes preservation areas for fish, game, and birds.", + "", + "", + "", + "", + "", + "An airport is a location where aircraft such as fixed-wing aircraft, helicopters, and blimps takeoff and land. NOTE: TYPE_TARMAC establishment type has been deprecated in favor of TYPE_TARMAC feature type. Once all data is modeled using the new feature type, the entry below should be removed.", + "DEPRECATED", + "A heliport is a small airport suitable only for use by helicopters.", + "A seaplane base is a special airport suitable for seaplanes.", + "An airbase (sometimes referred to correctly as an airfield, military airport, or Royal Air Force Station or Air Force Station) is a military airfield that provides basing and support of military aircraft.", + "", + "", + "The term \"enclosed traffic area\" is used extensively in Europe. It generally refers to a parking lot or other similar area through which traffic passes but are not generally considered to be a road. Another example is a piazza in an Italian town.", + "Establishment TYPE_PARKING is used for parking lots or garages. The actual feature type can be TYPE_ESTABLISHMENT_GROUNDS or TYPE_ESTABLISHMENT_BUILDING to distinguish between those.", + "", + "", + "In some country (like China), there will have a small area of housing development. Normally covers one or more city blocks.", + "In the Australian data we get bridges as POIs effectively. We'd like to include them so we can mapsearch for \"Sydney Harbour Bridge\" and others. Many other data sets have bridges modeled directly as segments, and so don't require this.", + "", + "In some countries historical objects are well known and important.", + "", + "Feature must be TYPE_ESTABLISHMENT_GROUNDS.", + "These types, when used with appropriate feature type (TYPE_ESTABLISHMENT_BUILDING, TYPE_ESTABLISHMENT_GROUNDS) can refer to a single building or a residential area (respectively).", + "", + "", + "All multi-unit housing such as duplex, condominium, apartment belongs to this.", + "", + "", + "In Korea most toll booths have their own names, and are often used as reference points. If an importer generates TYPE_TOLL_BOOTH establishment features with exact positions and names, then mapsearch will index them. Also this can be used to render them.", + "", + "", + "An overpass, or flyover is a structure that passes over another road or railway.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Hierarchy of transit station types. See go/transit-schema for more details.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreExceptionalHoursProto": { + "description": "An ExceptionalHoursProto holds information about exceptional (non-regular) hours for a business, such as holiday hours.", + "id": "GeostoreExceptionalHoursProto", + "properties": { + "hours": { + "$ref": "GeostoreBusinessHoursProto", + "description": "The weekly schedule to be applied for the dates that fall within the range. The schedule may contain hours only for days of the week that occur during the date range specified in the range field." + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this exception." + }, + "range": { + "$ref": "GeostoreTimeIntervalProto", + "description": "The dates for which this exception applies, expressed as a half open interval. For example, an exception that applies for the entire month of December 2015 should have a range December 1, 2015 to January 1, 2016. Any regular hours that start on days in this range are ignored and replaced by the exceptional hours for that day. The TimeIntervalProto for the range must be a fully specified, non-empty, and non-inverted range of dates. Concretely, the requirements are: * the range must be a TYPE_RANGE interval * the interval may not be inverted * the endpoints of the interval must specify a year, month, and day * the day_type of each endpoint must be type DAY_OF_MONTH * the endpoints may not specify hour, minute, second, week, or week_type * the begin endpoint must predate the end endpoint" + } + }, + "type": "object" + }, + "GeostoreExistenceProto": { + "id": "GeostoreExistenceProto", + "properties": { + "closeReason": { + "description": "Structured reason for the permanent closure (if any).", + "enum": [ + "CLOSED", + "MOVED", + "REBRANDED" + ], + "enumDescriptions": [ + "The establishment is permanently closed.", + "The establishment moved to another location. There may be a new feature representing the \"same\" establishment at its new location and if so, this feature should have a RELATION_BUSINESS_MOVED relation to that other feature.", + "The establishment was rebranded. There may be a new feature representing the \"same\" establishment with its new branding and if so, this feature should have a RELATION_BUSINESS_REBRANDED relation to that other feature." + ], + "type": "string" + }, + "closed": { + "description": "Indicates whether the place is closed (permanently or temporarily), i.e., not operational in the present, but was at in the past and/or will be in the future. WARNING: New code should use Geo Schema's libraries instead, specifically the OpeningStatus APIs, available in: * C++ (cs/f:google3/geostore/base/public/feature.h%20function:ExistenceState) * Java (cs/f:google3/java/com/google/geostore/base/Existence.java%20function:OpeningStatus) * Python (cs/f:google3/geostore/base/public/python/feature.clif%20existence_state)", + "type": "boolean" + }, + "endAsOfDate": { + "$ref": "GeostoreDateTimeProto", + "description": "RESERVED" + }, + "endDate": { + "$ref": "GeostoreDateTimeProto" + }, + "featureBirthTimestampSeconds": { + "description": "** 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. Different from start_date in that this is the birth date of Google's representation of the place whereas start_date is the birth date of the place in the physical world.", + "format": "int64", + "type": "string" + }, + "removed": { + "description": "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/Feature.java).", + "type": "boolean" + }, + "removedReason": { + "description": "Structured reason why the feature is marked as removed. Relevant only when removed == true.", + "enum": [ + "UNKNOWN", + "BOGUS", + "PRIVATE", + "SPAM", + "UNSUPPORTED", + "PENDING", + "DUPLICATE", + "OLD_SCHEMA", + "REPLACED", + "ROLLED_BACK" + ], + "enumDescriptions": [ + "Reason unknown or not captured by one of the other values.", + "Bogus data - doesn't represent a real world geographic place or is just largely bad/incorrect data.", + "Considered \"private\" data and we're legally (or otherwise) obligated to remove it.", + "Bad data that was intentionally/maliciously contributed.", + "Not enough data to support the existence of the feature. Different from the BOGUS case in that there is no positive evidence that place is/was incorrect. NOTE: This removal reason can only be set/unset by PROVIDER_GOOGLE_LOCAL_ALCHEMY and PROVIDER_GOOGLE_OYSTER_AUTO_EDITS.", + "Indicates that the existence of the place is yet to be justified.", + "Place has been identified as duplicate of and merged to another place. NOTE: This removal reason cannot be set for TYPE_SEGMENT. NOTE: If you have access to a complete FeatureProto, do NOT read this bit directly to find out whether a feature is a duplicate. Instead, rely on the IsDuplicateFeature() API, available in C++ (geostore/base/public/feature.h) and Java (geostore/base/Feature.java).", + "The feature uses an old version of the Geo Schema (e.g. it has a deprecated feature type).", + "Feature has been replaced by one or more other features. E.g. a segment got split and is now replaced by 2 segments. This is different than DUPLICATE because the feature is not a duplicate (in the identity sense) of the feature(s) that replace it. NOTE: this removal reason is currently allowed to be set only on TYPE_SEGMENT features.", + "The edit that created the feature has been rolled back." + ], + "type": "string" + }, + "startDate": { + "$ref": "GeostoreDateTimeProto", + "description": "(Initial) opening and (permanent) closing dates of the establishment, such that start_date is the first day open and end_date is the first day closed. 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." + } + }, + "type": "object" + }, + "GeostoreFeatureFieldMetadataProto": { + "description": "Provenance information for sub-fields of this feature.", + "id": "GeostoreFeatureFieldMetadataProto", + "properties": { + "fieldProvenance": { + "items": { + "$ref": "GeostoreFeatureFieldMetadataProtoFieldProvenance" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreFeatureFieldMetadataProtoFieldProvenance": { + "id": "GeostoreFeatureFieldMetadataProtoFieldProvenance", + "properties": { + "fieldPath": { + "description": "Represents all fields for which this SourceInfo is valid. NOTE: Field paths are rooted at FeatureProto level.", + "items": { + "$ref": "GeostoreStableFieldPathProto" + }, + "type": "array" + }, + "provenance": { + "$ref": "GeostoreProvenanceProto" + } + }, + "type": "object" + }, + "GeostoreFeatureHistoryMetadataProto": { + "description": "Metadata related to the history of a given feature in the Geo repository.", + "id": "GeostoreFeatureHistoryMetadataProto", + "properties": { + "featureBirthTimestampUs": { + "description": "The timestamp (in microseconds since the UNIX epoch) when this feature first went live in the Geo repository. Note that this has no relation to the birth data of that geographical entity in the real world.", + "format": "int64", + "type": "string" + }, + "lastModificationTimestampUs": { + "description": "The timestamp (in microseconds since the UNIX epoch) of the last modification to the feature. Note this includes attachment modifications. The feature's initial creation is also considered as a modification. This is useful for those that consume features via both listening to notifications and reading from repository snapshots. This timestamp can be used to decide whether a feature in the snapshot was already seen in a more recent state through the notifications.", + "format": "int64", + "type": "string" + }, + "removalTimestampUs": { + "description": "The timestamp (in microseconds since the UNIX epoch) of the deletion time of the feature. If the feature is currently removed, this field gets populated with the timestamp the feature first became removed after being live (or being removed from beginning). This field won't be set if the feature is live.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreFeatureIdForwardingsProto": { + "description": "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.", + "id": "GeostoreFeatureIdForwardingsProto", + "properties": { + "duplicateOf": { + "$ref": "GeostoreFeatureIdProto", + "description": "If the feature has been marked as a DUPLICATE of another feature, this is the feature ID of that other feature. Note that the other feature may itself be removed. This field is NOT set in (1)." + }, + "forwardedId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The feature ID of the forwarded feature. This field is only set in case (3)." + }, + "inactiveDuplicate": { + "description": "If other features have been marked as DUPLICATE of this feature, this is the set of all such feature IDs. All feature IDs in this set should be for removed (aka inactive) features. Note that in the context of historical read requests against MapFacts (when ReadRequest.version_selection.timestamp is set), this field won't be set.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "replacedBy": { + "$ref": "GeostoreFeatureIdListProto", + "description": "If the feature has been REPLACED by one or more other feature(s), this is the list of feature IDs of the replacement feature(s). Note that the other features may themselves be removed." + }, + "transitivelyDuplicateOf": { + "$ref": "GeostoreFeatureIdProto", + "description": "If the feature has been transitively marked as a DUPLICATE of another feature (via a chain of size \u003e= 1), this is the feature ID of that other feature which is the end of the chain. The field is always set even if the chain is of size 1. Note that the other feature may itself be removed. This field is only set in case (3)." + } + }, + "type": "object" + }, + "GeostoreFeatureIdListProto": { + "description": "A simple list of feature IDs.", + "id": "GeostoreFeatureIdListProto", + "properties": { + "id": { + "description": "The list of feature IDs. While the exact semantics of these IDs are usage-dependent, the list should never be empty or contain duplicates.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreFeatureIdProto": { + "description": "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.", + "id": "GeostoreFeatureIdProto", + "properties": { + "cellId": { + "description": "The S2CellId corresponding to the approximate location of this feature as of when it was first created. This can be of variable accuracy, ranging from the exact centroid of the feature at creation, a very large S2 Cell, or even being completely randomized for locationless features. Cell ids have the nice property that they follow a space-filling curve over the surface of the earth. (See s2cellid.h for details.) WARNING: Clients should only use cell IDs to perform spatial locality optimizations. There is no strict guarantee that the cell ID of a feature is related to the current geometry of the feature in any way.", + "format": "uint64", + "type": "string" + }, + "fprint": { + "description": "A 64-bit fingerprint used to identify features. Most clients should rely on MapFacts or OneRing to choose fingerprints. If creating new fprints, the strategy should be chosen so that the chance of collision is remote or non-existent, and the distribution should be reasonably uniform. For example, if the source data assigns unique ids to features, then a fingerprint of the provider name, version, and source id is sufficient.", + "format": "uint64", + "type": "string" + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a feature ID. Never set in MapFacts." + } + }, + "type": "object" + }, + "GeostoreFeatureMetadataProto": { + "description": "General metadata related to a given feature in the Geo repository.", + "id": "GeostoreFeatureMetadataProto", + "properties": { + "bulkUpdatable": { + "description": "This field indicates whether the feature is subject to bulk updates. Caution must be exercised while editing such features since the changes made by the edits will be overwritten by the bulk update (if the feature is bulk updated). See go/mapfacts-abu for more information.", + "enum": [ + "NOT_BULK_UPDATABLE", + "BULK_UPDATABLE" + ], + "enumDescriptions": [ + "The feature will not be bulk updated.", + "The feature has been bulk updated, and may be bulk updated again in the future. Note that this refers specifically to the atomic bulk-upload process, not methods of applying large sets of (independent) edits (e.g. with BEST)." + ], + "type": "string" + }, + "coreVersionToken": { + "description": "core_version_token is an opaque token representing the version of the core fields of the feature. This field is not updated when attachments are changed.", + "format": "byte", + "type": "string" + }, + "fieldMetadata": { + "$ref": "GeostoreFeatureFieldMetadataProto", + "description": "Metadata about certain repeated fields and their subfields, for which field type is not granular enough." + }, + "forwardings": { + "$ref": "GeostoreFeatureIdForwardingsProto", + "description": "Feature ID forwardings, if applicable." + }, + "history": { + "$ref": "GeostoreFeatureHistoryMetadataProto", + "description": "Metadata related to the history." + }, + "versionToken": { + "description": "version_token is an opaque token representing the version of this feature. It can be used as a concurrency token when sending edits.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreFeaturePropertyIdProto": { + "description": "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.", + "id": "GeostoreFeaturePropertyIdProto", + "properties": { + "attachmentTypeId": { + "description": "field_type == ATTACHMENT", + "format": "uint64", + "type": "string" + }, + "attributeId": { + "description": "field_type == FEATURE_ATTRIBUTE", + "type": "string" + }, + "fieldType": { + "enum": [ + "NONE", + "ACCESS_POINT", + "ADDRESS", + "ANCHORED_GEOMETRY_GEOMETRY_ID", + "ATTACHMENT", + "BIZBUILDER_REFERENCE", + "BORDER_FEATURE_ID_LEFT", + "BORDER_FEATURE_ID_RIGHT", + "BORDER_OVERRIDE_STATUS", + "BORDER_STATUS", + "BORDER_TYPE", + "BORDER_LOGICAL_BORDER", + "BOUND", + "BUILDING_BASE_HEIGHT_METERS_AGL", + "BUILDING_DEFAULT_DISPLAY_LEVEL", + "BUILDING_FLOORS", + "BUILDING_HEIGHT_METERS", + "BUILDING_LEVEL", + "BUILDING_STRUCTURE", + "BUSINESS_CHAIN_CANONICAL_GCONCEPT", + "BUSINESS_HOURS", + "DATA_SOURCE", + "DISPLAY_DATA", + "ENTRANCE_ALLOWANCE", + "ESTABLISHMENT_OPENING_HOURS_EXCEPTION", + "ESTABLISHMENT_OPENING_HOURS_REGULAR_HOURS", + "ESTABLISHMENT_PRICE_INFO", + "ESTABLISHMENT_SERVICE_AREA_SERVED_FEATURE", + "EXISTENCE_STATUS", + "FEATURE_AVERAGE_ELEVATION", + "FEATURE_BEST_LOCALE", + "FEATURE_CELL_COVERING", + "FEATURE_CENTER", + "FEATURE_CHILD", + "FEATURE_EXEMPT_REGULATED_AREA", + "FEATURE_INTERIOR_CELL_COVERING", + "FEATURE_NAME", + "FEATURE_PARENT", + "FEATURE_POSE", + "FEATURE_PREFERRED_VIEWPORT", + "FEATURE_TRACK", + "FEATURE_TYPE", + "FEATURE_WEBSITE", + "FIELD_RIGHTS", + "FUTURE_GEOMETRY", + "FUTURE_GEOMETRY_FOR", + "GCONCEPT", + "GEOMETRY_PRECISION_METERS", + "GEOPOLITICAL_GEOMETRY_REST_OF_WORLD_POLYGON", + "GEOPOLITICAL_GEOMETRY_SELF_POLYGON", + "INFERRED_GEOMETRY_INCLUDES_GEOMETRY_OF", + "INFERRED_GEOMETRY_EXCLUDES_GEOMETRY_OF", + "INFERRED_GEOMETRY_DEFINES_GEOMETRY_FOR", + "INTERSECTION", + "INTERSECTION_GROUP", + "INTERSECTION_GROUP_CHILD_GROUP", + "INTERSECTION_GROUP_GROUP_TYPE", + "INTERSECTION_GROUP_PARENT_GROUP", + "INTERSECTION_IN_GROUP", + "INTERSECTION_TOLL_CLUSTER", + "IN_SEGMENT", + "KNOWLEDGE_GRAPH_PROPERTY", + "LABEL_BACKGROUND_COLOR", + "LABEL_TEXT_COLOR", + "LANE_MARKER_BARRIER_MATERIALS", + "LANE_MARKER_CROSSING_PATTERN", + "LANE_MARKER_LINEAR_PATTERN", + "LEVEL_BUILDING", + "LEVEL_NUMBER", + "LOCALE_LANGUAGE", + "LOCALE_LOCALIZATION_POLICY_ID", + "LOGICAL_BORDER_BORDER_SEGMENT", + "LOGICAL_BORDER_STATUS", + "OPERATIONS_TEMPORARY_CLOSURE", + "PARKING_ALLOWANCE", + "PARKING_AVAILABLE", + "PARKING_OPENING_HOURS_EXCEPTION", + "PARKING_OPENING_HOURS_REGULAR_HOURS", + "PARKING_PROVIDER_FEATURE", + "PARKING_RESTRICTION", + "PEAK_PROMINENCE", + "PHONE_NUMBER", + "POINT", + "POLYGON", + "POLYGON_FOR_DISPLAY", + "POLYLINE", + "RANK", + "RANK_SIGNAL", + "REGULATED_AREA_RESTRICTION", + "RELATED_BORDER", + "RELATED_ENTRANCE", + "RELATED_FEATURE", + "RELATED_TERMINAL_POINT", + "RELATED_TIMEZONE", + "RESTRICTION_GROUP_SEGMENT", + "ROAD_MONITOR_MONITORED_ROAD", + "ROUTE_CHILD_TYPE", + "SEGMENT_ADVISORY_MAXIMUM_SPEED", + "SEGMENT_AVERAGE_SPEED", + "SEGMENT_BARRIER", + "SEGMENT_BICYCLE_FACILITY", + "SEGMENT_BICYCLE_SAFETY", + "SEGMENT_CONDITION", + "SEGMENT_CONSTRUCTION_BEGIN_DATE", + "SEGMENT_CONSTRUCTION_END_DATE", + "SEGMENT_CONSTRUCTION_STATUS", + "SEGMENT_COVERED", + "SEGMENT_DISTANCE_TO_EDGE", + "SEGMENT_EDGE_FOLLOWS_SEGMENT_BEGIN_FRACTION", + "SEGMENT_EDGE_FOLLOWS_SEGMENT_END_FRACTION", + "SEGMENT_ELEVATION", + "SEGMENT_ENDPOINT", + "SEGMENT_GRADE_LEVEL_LIST", + "SEGMENT_INTERNAL_TRAVEL_ALLOWANCE", + "SEGMENT_INTERPOLATION_OFFSET_METERS", + "SEGMENT_IS_MAX_PERMITTED_SPEED_DERIVED", + "SEGMENT_LANE", + "SEGMENT_LEGAL_MAXIMUM_SPEED", + "SEGMENT_LEGAL_MINIMUM_SPEED", + "SEGMENT_MAX_SPEED", + "SEGMENT_ON_RIGHT", + "SEGMENT_PATH", + "SEGMENT_PEDESTRIAN_CROSSING", + "SEGMENT_PEDESTRIAN_FACILITY", + "SEGMENT_PEDESTRIAN_GRADE", + "SEGMENT_PRIORITY", + "SEGMENT_RESTRICTION", + "SEGMENT_ROAD_CAMERA", + "SEGMENT_ROAD_SIGN", + "SEGMENT_ROUTE", + "SEGMENT_ROUTE_ASSOCIATION", + "SEGMENT_SEPARATED_ROADWAYS", + "SEGMENT_SURFACE", + "SEGMENT_SWEEP", + "SEGMENT_TOLL_ROAD", + "SEGMENT_USAGE", + "SEGMENT_VISIBLE_LANDMARK", + "SIGN_COMPONENT", + "SOCIAL_REFERENCE_CLAIMED_GAIA_ID", + "SOURCE_INFO", + "STATUS_CLOSED", + "STATUS_CLOSE_REASON", + "STATUS_END_AS_OF_DATE", + "STATUS_END_DATE", + "STATUS_REMOVED", + "STATUS_REMOVED_REASON", + "STATUS_START_DATE", + "STOREFRONT_GEOMETRY", + "SYNTHETIC_GEOMETRY", + "THREE_DIMENSIONAL_MODEL", + "TOLL_CLUSTER_INTERSECTION", + "TRANSIT_LINE_AGENCY", + "TRANSIT_LINE_STATION", + "TRANSIT_LINE_VARIANT_LINE_CONCEPT", + "TRANSIT_LINE_VARIANT_STOP", + "TRANSIT_LINE_VEHICLE_TYPE", + "TRANSIT_STATION_AGENCY", + "VERTICAL_ORDERING_LEVEL", + "WATER_REMOVED_POLYGON", + "DEPRECATED_DO_NOT_USE_EMAIL_ADDRESS", + "DEPRECATED_DO_NOT_USE_RANK_GEOMETRY", + "DEPRECATED_DO_NOT_USE_SEGMENT_INFO", + "DEPRECATED_DO_NOT_USE_SEGMENT_LANE_LIST", + "DEPRECATED_DO_NOT_USE_SEGMENT_WRONG_WAY", + "DEPRECATED_DO_NOT_USE_WEBSITE", + "FEATURE_ATTRIBUTE", + "SOCIAL_REFERENCE", + "CATEGORY", + "DEPRECATED_DO_NOT_USE_CAPITAL", + "DEPRECATED_DO_NOT_USE_DESCRIPTION", + "DEPRECATED_DO_NOT_USE_DISTINCT", + "DEPRECATED_DO_NOT_USE_DUPLICATE", + "EDIT_PRECEDENCE", + "DEPRECATED_DO_NOT_USE_EDIT_PRECEDENCE", + "DEPRECATED_DO_NOT_USE_ENTRANCE_TARGET", + "DEPRECATED_DO_NOT_USE_ESTABLISHMENT_PLACE_ACTION_PAGE", + "DEPRECATED_DO_NOT_USE_ESTABLISHMENT_TYPE", + "DEPRECATED_DO_NOT_USE_EVENT", + "DEPRECATED_DO_NOT_USE_GEOMETRIC_ACCURACY", + "DEPRECATED_DO_NOT_USE_HIGHEST_GRADE", + "DEPRECATED_DO_NOT_USE_ID_TO_OVERRIDE", + "DEPRECATED_DO_NOT_USE_ISSUE_HISTORY", + "DEPRECATED_DO_NOT_USE_ISSUE_METADATA", + "DEPRECATED_DO_NOT_USE_KNOWLEDGE_GRAPH_ID", + "DEPRECATED_DO_NOT_USE_LOWEST_GRADE", + "DEPRECATED_DO_NOT_USE_PAYMENT_TYPES", + "DEPRECATED_DO_NOT_USE_PHOTO", + "DEPRECATED_DO_NOT_USE_PHOTO_URL", + "DEPRECATED_DO_NOT_USE_PLACE_CLOSED", + "DEPRECATED_DO_NOT_USE_POPULATION", + "DEPRECATED_DO_NOT_USE_RANK_USER", + "DEPRECATED_DO_NOT_USE_REMOVE_DUPLICATE", + "DEPRECATED_DO_NOT_USE_REMOVE_PLACE", + "DEPRECATED_DO_NOT_USE_SCHOOL_TYPE", + "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_BEGIN", + "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_END", + "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_MIDDLE", + "DEPRECATED_DO_NOT_USE_SYLLABUS", + "DEPRECATED_DO_NOT_USE_TRACK_CLASS", + "DEPRECATED_DO_NOT_USE_VIEWCODE_INFO", + "DEPRECATED_DO_NOT_USE_WORKAREA" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "kgPropertyId": { + "description": "field_type == KNOWLEDGE_GRAPH_PROPERTY", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreFeatureProto": { + "description": "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.", + "id": "GeostoreFeatureProto", + "properties": { + "accessPoint": { + "description": "Optional access point information. Access points hold detailed information about routing endpoints. For example, the main Google office is at \"1600 Amphitheatre Parkway\". The feature representing that office has a polygon, a center, and an address with components for the street number, route, locality, etc. The access point information, on the other hand, identifies the specific segment, the latitude/longitude of the driveway, and so forth.", + "items": { + "$ref": "GeostoreAccessPointProto" + }, + "type": "array" + }, + "address": { + "description": "Address for this feature. A Geo Schema address is designed to model a mailing address, so only features that have mailing addresses in the real world may have addresses. Each feature should have only one address. If you want to describe the geographic location of a feature which does not have a mailing address with respect to other well-known features, some other schema constructs should be used. Note that the field is defined as repeated though features that use this field with its intended semantics are constrained to have a single address even if they may have multiple mailing addresses in the real world. The “single address” rule is enforced by lint. Current exceptions to the single address rule and mailing address rule are described in the g3doc. Bear note that the schema team is actively working on eliminating these exceptions. http://go/geo-addresses Note the following conventions: - Addresses follow the postal hierarchy, not the political hierarchy. Addresses may have components that refer to political entities when those entities also appear in the postal hierarchy. - As stated previously, but it bears repeating, addresses on features are mailing addresses. In many cases the physical address and the mailing address are the same but the address stored on a feature represents the mailing address of the feature. An example of a non-physical mailing address would be a PO Box. - These addresses are commonly defined and verifiable by a governmental authority (e.g. the United States Postal Service in the United States, Royal Mail in the United Kingdom, Correios in Brazil, etc.) and should follow conventions and rules defined by those authorities.", + "items": { + "$ref": "GeostoreAddressProto" + }, + "type": "array" + }, + "anchoredGeometry": { + "$ref": "GeostoreAnchoredGeometryProto", + "description": "Represents information about the feature’s anchored geometry." + }, + "attachment": { + "description": "The collection of attachments for this feature. Documentation: http://go/geo-attachments", + "items": { + "$ref": "GeostoreAttachmentsAttachmentProto" + }, + "type": "array" + }, + "attribute": { + "description": "** DEPRECATED ** A list of attributes that describe defined aspects of this feature. An attribute must be a concrete, high quality, and editable piece of information about a feature, and must be used on some general consumer facing Google property. The data types used for attributes must be primitive types or reusable in a generic manner.", + "items": { + "$ref": "GeostoreAttributeProto" + }, + "type": "array" + }, + "bestLocale": { + "$ref": "GeostoreBestLocaleProto", + "description": "Describes the best-match locale for this feature." + }, + "border": { + "$ref": "GeostoreBorderProto" + }, + "bound": { + "$ref": "GeostoreRectProto", + "description": "A latitude-longitude rectangle used by bucketing MapReduces. See the documentation on bucketing MapReduce for details. This field can be a source of confusion. Because it is called \"bound\", it is often assumed that it is a tight bound on the geometry but it can be (and often is) much larger. If a tight bound is needed then use the standard GetFeatureGeometryBound() function instead. To be more explicit, if you are using this field for *anything* else than a bucketing MapReduce, you are doing the wrong thing. Not all features are required to have bounding boxes. See geostore::IsBoundRequiredForFeatureType() for the list of feature types required to have a bounding box. This bound field will be updated when a feature changes in MapFacts to include its geometry. Also, a GeoSchema pipeline, go/geo-schema-pipelines-docs#expand-bounds runs periodically to update the field for strong references from other features. Therefore, most editors don't need to edit this field explicitly. See go/geo-changes:no-edit-for-feature-bound for the details." + }, + "building": { + "$ref": "GeostoreBuildingProto" + }, + "businessChain": { + "$ref": "GeostoreBusinessChainProto", + "description": "Data specific to business chain features, e.g., Canonical GConcepts." + }, + "center": { + "$ref": "GeostorePointProto", + "description": "The conceptual center of the feature, used for routing. For cities, this would be the center of the downtown, or maybe the location of city hall. For states and countries it might be the capital city. Most feature types will not have a conceptual center - by default, routing will use the centroid of the feature's geometry. If you need a feature center point consider using GetFeatureGeometryCenter() function from geostore/base/public/feature.h rather than reading from this field directly." + }, + "child": { + "description": "Features can define themselves as a collection of other features. For example, a route is a collection of road segments, and a feature for the \"Great Lakes\" could be defined as lakes Superior, Michigan, Huron, Erie, and Ontario. It is not recommended to design a multi level tree using the child field to build up a feature because it requires fetching many features to see the details of the feature. In practice this is used to model archipelago, route, transit (agencies, lines, trips, departures), and river features. The geometry of a feature is implicitly defined by its children, so if a feature has children then it should not have any points, polylines, or polygons. In general, this field should not be used to represent political or postal hierarchies. For example, a county would not list its cities as children, because the county is not defined in terms of its cities (it also contains unincorporated areas, etc.).", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "covering": { + "$ref": "GeostoreCellCoveringProto", + "description": "S2 cell coverings for this feature. See util/geometry/s2cell_union.h for more information about S2 cells. Coverings are useful for quick containment or intersection tests. S2 covering that consists of cells that intersect with the feature." + }, + "dataSource": { + "$ref": "GeostoreDataSourceProto" + }, + "displayData": { + "$ref": "GeostoreDisplayDataProto", + "description": "Data used to render this feature on a map." + }, + "doodle": { + "$ref": "GeostoreDoodleProto", + "description": "** DEPRECATED **" + }, + "elevation": { + "$ref": "GeostoreElevationProto" + }, + "elevationModel": { + "$ref": "GeostoreElevationModelProto", + "description": "Captures elevation data used on TYPE_DIGITAL_ELEVATION_MODEL features." + }, + "entrance": { + "$ref": "GeostoreEntranceProto" + }, + "establishment": { + "$ref": "GeostoreEstablishmentProto", + "description": "Also allowed on TYPE_BUSINESS_CHAIN and TYPE_TRANSIT_AGENCY features, to model the feature's phone number(s). Other fields within EstablishmentProto are not permitted on non-TYPE_ESTABLISHMENT features." + }, + "exemptRegulatedArea": { + "description": "A list of feature ids of polygon based restrictions that do not apply to this feature. This may only include features of TYPE_REGULATED_AREA that also have a feature.regulated_area.restriction field defined. Setting this field opts the feature out of all restrictions set on that regulated area.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "futureGeometry": { + "$ref": "GeostoreFeatureIdProto", + "description": "Specifies the TYPE_FUTURE_GEOMETRY whose geometry will replace this feature's geometry. If this field is populated, the referenced future geometry must have a future_geometry_for referencing this feature." + }, + "futureGeometryFor": { + "$ref": "GeostoreFeatureIdProto", + "description": "Specifies the feature that this feature's geometry will replace. If this field is populated, the referenced feature must have a future_geometry reference back to this feature. This field is only allowed (and required) for TYPE_FUTURE_GEOMETRY features." + }, + "geometryPrecisionMeters": { + "description": "If set, the feature's actual location can be assumed to be somewhere within a circle of this radius, centered on the feature's location. More information on this field at go/gpm-definition-update. NOTE: Only applicable to features with 'point' geometry. Please contact geo-schema-team@ if you have non-point use cases for which this field would be useful.", + "format": "double", + "type": "number" + }, + "geopoliticalGeometry": { + "$ref": "GeostoreGeopoliticalGeometryProto", + "description": "RESERVED" + }, + "htmlText": { + "description": "** DEPRECATED ** Features can have zero or more HTML texts associated with them. These might be HTML balloons used by Google Earth, for example.", + "items": { + "$ref": "GeostoreHtmlTextProto" + }, + "type": "array" + }, + "id": { + "$ref": "GeostoreFeatureIdProto", + "description": "The globally unique id for this feature." + }, + "inferredGeometry": { + "$ref": "GeostoreInferredGeometryProto", + "description": "RESERVED" + }, + "interiorCovering": { + "$ref": "GeostoreCellCoveringProto", + "description": "S2 interior covering that consists of cells completely enclosed within the feature's geometry (for features with polygonal geometry)." + }, + "internal": { + "$ref": "GeostoreInternalFeatureProto", + "description": "Additional internal feature-level attributes that may be set by data providers to be used inside the Geo Data infrastructure. This field should never be present in the output of the Geo Data infrastructure that read-only clients consume." + }, + "intersection": { + "$ref": "GeostoreIntersectionProto" + }, + "intersectionGroup": { + "$ref": "GeostoreIntersectionGroupProto" + }, + "kgProperty": { + "description": "Properties that apply to this feature whose schema is defined in the Knowledge Graph schema (see https://hume.google.com/graph/schema). Not all properties that exist in the KG schema can be asserted via this mechanism. The set of properties that are allowed to be set on a feature depends on the feature's GConcepts (and feature type). For instance, only gcid:country features may have the /geo/type/country/president property (made up example, since that property doesn't actually exist in the KG schema). GConcept hierarchy is taken into account for deciding the set of allowed properties. Additionally, the specific properties allowed are further constrained by the list specified at go/kg-property-allowlist. NOTE: not all types of properties are allowed to appear in the Geo Schema. For now, we limit ourselves to properties whose value type is TYPE_BOOL, TYPE_COMPOUND, TYPE_DATETIME, TYPE_FLOAT, TYPE_ID, TYPE_INT, TYPE_NESTED_STRUCT, TYPE_TEXT, or TYPE_URI. NOTE(b/35039936): We are in the process of changing how a KG property with multiple values is stored in this field. Currently, such a KG property is stored in a single instance of the kg_property field. However, we will be changing this so that each value will be stored in its own instance of kg_property. Any client that wants to read from this field should be prepared to read data represented in either format. See b/35039936 or the announcement at http://g/geo-schema-announce/7IXR3Fex8to/7yFyT5UoAwAJ for an example and more details. The mechanism to assert that a KG property has no value is via the property_value_status field below. freebase.PropertyValue.value_status is not allowed be set here for consistency reason.", + "items": { + "$ref": "FreebasePropertyValue" + }, + "type": "array" + }, + "knowledgeGraphReference": { + "$ref": "GeostoreKnowledgeGraphReferenceProto", + "description": "RESERVED" + }, + "laneMarker": { + "$ref": "GeostoreLaneMarkerProto" + }, + "level": { + "$ref": "GeostoreLevelProto", + "description": "Represents information about TYPE_LEVEL features." + }, + "locale": { + "$ref": "GeostoreLocaleProto" + }, + "logicalBorder": { + "$ref": "GeostoreLogicalBorderProto", + "description": "RESERVED" + }, + "metadata": { + "$ref": "GeostoreFeatureMetadataProto", + "description": "Metadata about this particular feature. Metadata is managed internally by the Geo Data Infrastructure and in general should not be set by clients. Features that don't ultimately come from the Geo repository (MapFacts) won't have any metadata set." + }, + "name": { + "description": "The name(s) of this feature. A feature may have different names in different languages, colloquial or \"vanity\" names, etc.", + "items": { + "$ref": "GeostoreNameProto" + }, + "type": "array" + }, + "operations": { + "$ref": "GeostoreOperationsProto", + "description": "RESERVED" + }, + "originalId": { + "$ref": "GeostoreFeatureIdProto", + "description": "This field is used internally by the pipeline for id stability. It should not be set by individual importers, nor should it be read by consumer clients. In particular, this field will not be present in features read or snapshotted from the Mapfacts Repository." + }, + "parent": { + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "parking": { + "$ref": "GeostoreParkingProto", + "description": "Describes parking details for the feature." + }, + "point": { + "description": "Defines the geometry of the feature. The geometry may be specified as an arbitrary union of points, poses, polylines, tracks, and polygons. Points, poses, polylines, and tracks are assumed to represent regions of unspecified size or width rather than regions of zero area. Most features should have some sort of geometry. Geometry may be synthesized if none is available (e.g., polygons for postal codes). The synthetic_geometry flag should be set in that case. Point is currently enforced as a non-repeating field for all feature types, though it is defined as repeating in case future modeling requires multiple points. The number of allowed polylines, tracks, or polygons vary based on feature type. A feature can have at most one pose (it is an optional field).", + "items": { + "$ref": "GeostorePointProto" + }, + "type": "array" + }, + "political": { + "$ref": "GeostorePoliticalProto", + "description": "** DEPRECATED ** Detail discussion could be found at b/18611003." + }, + "polygon": { + "items": { + "$ref": "GeostorePolygonProto" + }, + "type": "array" + }, + "polygonForDisplay": { + "$ref": "GeostorePolygonProto", + "description": "Provide version of the geometry suitable for display. This has been subject to water removal and (possibly) moderate simplification." + }, + "polyline": { + "items": { + "$ref": "GeostorePolyLineProto" + }, + "type": "array" + }, + "pose": { + "$ref": "GeostorePoseProto", + "description": "Defines the geometry of a feature as a 6D pose, including lat, lng, altitude, roll, pitch, and yaw along the WGS-84 ellipsoid. Only the lat and lng are strictly required." + }, + "preferredViewport": { + "$ref": "GeostoreRectProto", + "description": "The preferred viewport for this feature. If present, this latitude-longitude rectangle holds the preferred viewport for the feature. For example, it might hold the bounds of the \"central\" portion of a large city. There are no aspect ratio requirements. This is an optional field: if no viewport is supplied, interested clients can use heuristics to determine a viewport. Calling the standard GetFeatureGeometryBound() function would be a good way to start but note that it can return an empty bounding box (e.g., if the feature has no geometry). The preferred viewport is not necessarily fully contained by the above bounding box." + }, + "propertyValueStatus": { + "description": "The value status of properties on this feature. For example, this specifies whether the feature is known to have no name (this is the value status of the 'FEATURE_NAME' property). Only property IDs which have no specific value are allowed to have a value status. Note: not all field types will be supported, please contact geo schema team if you want to enable this field for a field type that is not currently supported.", + "items": { + "$ref": "GeostorePropertyValueStatusProto" + }, + "type": "array" + }, + "rank": { + "description": "WARNING: Please do NOT introduce new uses of this field; treat it as if it were deprecated. For appropriate ranking contacts, see g3doc/company/teams/gdeng/geo-schema-reference/home/feature-properties/rank.md. A floating-point number between 0.0 and 1.0 indicating how \"important\" we think this feature is. This can be used to decide which features to render on maps, and how to rank results when the user does a search. The rank can depend on any number of factors such as the number of references to this feature in web pages, geographic size, population, number of referring geographic entities, \"priority\" information encoded in the source data, etc.", + "format": "float", + "type": "number" + }, + "rankDetails": { + "$ref": "GeostoreRankDetailsProto", + "description": "The rank field is computed as a weighted sum of several signals. This field contains a protocol buffer whose fields give those signals and their weights. Clients should try very hard not to depend on these individual signals and use the single rank field instead. At some point in the future, this field will not be exposed anymore." + }, + "rawGconceptInstanceContainer": { + "$ref": "GeostoreOntologyRawGConceptInstanceContainerProto", + "description": "Geo Ontology GConcept Instances - Design doc linked off http://go/geo-ontology - In order to shield clients from changes in GConcept representation we provide an accessor library: geostore/base/public/gconcept_instance.h" + }, + "regulatedArea": { + "$ref": "GeostoreRegulatedAreaProto" + }, + "relatedBorder": { + "description": "For TYPE_COUNTRY or TYPE_ADMINISTRATIVE_AREA1 features, this field defines the associated TYPE_BORDERs which reference this feature. The linked TYPE_BORDERs must have the feature.border set, pointing to this feature. TYPE_COUNTRY or TYPE_ADMINISTRATIVE_AREA1 features must have this field set for each TYPE_BORDER referencing them.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "relatedEntrance": { + "description": "Logical relationship to other features that are entrances or exits to this feature.", + "items": { + "$ref": "GeostoreEntranceReferenceProto" + }, + "type": "array" + }, + "relatedFeature": { + "description": "Geographic or logical relationships to other features. Importers don't need to fill a geographic relationship in - it is handled by related feature processing by a standalone pipeline. Adding \"contained by\" country relations is however encouraged (and required for TYPE_ROUTE features). WARNING: Updates to this field handled by standalone pipelines 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.", + "items": { + "$ref": "GeostoreRelationProto" + }, + "type": "array" + }, + "relatedTerminalPoint": { + "description": "Terminal points associated with this feature. For instance, an airport terminal may have specifically designated pickup and drop-off points.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "relatedTimezone": { + "description": "Contains time zones known to be associated with a feature. Most features are associated with the single time zone that contains them. However, some larger features (countries, continents, etc.) are associated with all of the time zones they contain. Most features can have any number of related time zones, but TYPE_SEGMENT and TYPE_ESTABLISHMENT_POI features can have at most 1.", + "items": { + "$ref": "GeostoreTimezoneProto" + }, + "type": "array" + }, + "restrictionGroup": { + "$ref": "GeostoreRestrictionGroupProto" + }, + "roadMonitor": { + "$ref": "GeostoreRoadMonitorProto" + }, + "route": { + "$ref": "GeostoreRouteProto", + "description": "Additional details on the feature types below can be found in the individual protocol buffer definitions. These extensions capture data that is specific to a set of feature types and which makes no sense for other feature types." + }, + "schoolDistrict": { + "$ref": "GeostoreSchoolDistrictProto" + }, + "segment": { + "$ref": "GeostoreSegmentProto" + }, + "segmentPath": { + "$ref": "GeostoreSegmentPathProto" + }, + "sign": { + "$ref": "GeostoreRoadSignProto" + }, + "skiBoundary": { + "$ref": "GeostoreSkiBoundaryProto" + }, + "skiLift": { + "$ref": "GeostoreSkiLiftProto" + }, + "skiTrail": { + "$ref": "GeostoreSkiTrailProto" + }, + "socialReference": { + "$ref": "GeostoreSocialReferenceProto", + "description": "All establishments must have a social reference. WARNING: Aside from creating new establishments, please do NOT introduce new uses; treat social references as if they were deprecated. For alternatives and more, see g3doc/company/teams/gdeng/geo-schema-reference/home/feature-types/establishments/social-reference.md." + }, + "sourceInfo": { + "description": "A list of the data sources that were used to construct this feature, together with optional \"raw data\" in the provider's format. Raw data should not be used by production clients but may be useful for exploring data that is not currently converted to a canonical form.", + "items": { + "$ref": "GeostoreSourceInfoProto" + }, + "type": "array" + }, + "status": { + "$ref": "GeostoreExistenceProto", + "description": "All features can have \"existence\" information associated with them." + }, + "storefrontGeometry": { + "description": "Represents information about the store front geoemtry. Only TYPE_ESTABLISHMENT_POI should have this field set.", + "items": { + "$ref": "GeostoreAnchoredGeometryProto" + }, + "type": "array" + }, + "syntheticGeometry": { + "description": "We prefer features that have geometry over those that do not. In some cases we synthesize geometry (e.g., polygons for postal codes). This flag is set to indicate features that have such synthetic geometry.", + "type": "boolean" + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a feature. Never set in MapFacts." + }, + "threeDimModel": { + "$ref": "GeostoreThreeDimensionalModelProto", + "description": "Captures full model representing the feature's 3D geometry. Should only be found on TYPE_COMPOUND_BUILDING features for now, but not part of the BuildingProto extension for possible future extensions." + }, + "tollCluster": { + "$ref": "GeostoreTollClusterProto", + "description": "Represents information about TYPE_TOLL_CLUSTER features." + }, + "track": { + "description": "Defines the geometry of a feature as a sequence of 6D poses, including lat, lng, altitude, roll, pitch, and yaw. Only lat and lng are typically required. Each track has an index so that they can be viewed in a stable order.", + "items": { + "$ref": "GeostoreTrackProto" + }, + "type": "array" + }, + "transitLine": { + "$ref": "GeostoreTransitLineProto" + }, + "transitLineVariant": { + "$ref": "GeostoreTransitLineVariantProto", + "description": "RESERVED" + }, + "transitStation": { + "$ref": "GeostoreTransitStationProto", + "description": "RESERVED" + }, + "type": { + "description": "The type of this feature -- see comments above.", + "enum": [ + "TYPE_ANY", + "TYPE_TRANSPORTATION", + "TYPE_ROUTE", + "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE", + "TYPE_HIGHWAY", + "TYPE_HIGHWAY_1", + "TYPE_HIGHWAY_2", + "TYPE_HIGHWAY_3", + "TYPE_HIGHWAY_4", + "TYPE_HIGHWAY_5", + "TYPE_HIGHWAY_6", + "TYPE_HIGHWAY_7", + "TYPE_HIGHWAY_8", + "TYPE_HIGHWAY_9", + "TYPE_BICYCLE_ROUTE", + "TYPE_TRAIL", + "TYPE_SEGMENT", + "TYPE_ROAD", + "TYPE_RAILWAY", + "TYPE_STANDARD_TRACK", + "TYPE_JR_TRACK", + "TYPE_NARROW_TRACK", + "TYPE_MONORAIL_TRACK", + "TYPE_SUBWAY_TRACK", + "TYPE_LIGHT_RAIL_TRACK", + "TYPE_BROAD_TRACK", + "TYPE_HIGH_SPEED_RAIL", + "TYPE_TROLLEY_TRACK", + "TYPE_FERRY", + "TYPE_FERRY_BOAT", + "TYPE_FERRY_TRAIN", + "TYPE_VIRTUAL_SEGMENT", + "TYPE_INTERSECTION", + "TYPE_TRANSIT", + "TYPE_TRANSIT_STATION", + "TYPE_BUS_STATION", + "TYPE_TRAMWAY_STATION", + "TYPE_TRAIN_STATION", + "TYPE_SUBWAY_STATION", + "TYPE_FERRY_TERMINAL", + "TYPE_AIRPORT", + "TYPE_AIRPORT_CIVIL", + "TYPE_AIRPORT_MILITARY", + "TYPE_AIRPORT_MIXED", + "TYPE_HELIPORT", + "TYPE_SEAPLANE_BASE", + "TYPE_AIRSTRIP", + "TYPE_CABLE_CAR_STATION", + "TYPE_GONDOLA_LIFT_STATION", + "TYPE_FUNICULAR_STATION", + "TYPE_SPECIAL_STATION", + "TYPE_HORSE_CARRIAGE_STATION", + "TYPE_MONORAIL_STATION", + "TYPE_SEAPORT", + "TYPE_TRANSIT_STOP", + "TYPE_TRANSIT_TRIP", + "TYPE_TRANSIT_DEPARTURE", + "TYPE_TRANSIT_LEG", + "TYPE_TRANSIT_LINE", + "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE", + "TYPE_TRANSIT_TRANSFER", + "TYPE_SEGMENT_PATH", + "TYPE_ROAD_SIGN", + "TYPE_INTERSECTION_GROUP", + "TYPE_PATHWAY", + "TYPE_RESTRICTION_GROUP", + "TYPE_TOLL_CLUSTER", + "TYPE_POLITICAL", + "TYPE_COUNTRY", + "TYPE_ADMINISTRATIVE_AREA", + "TYPE_ADMINISTRATIVE_AREA1", + "TYPE_US_STATE", + "TYPE_GB_COUNTRY", + "TYPE_JP_TODOUFUKEN", + "TYPE_ADMINISTRATIVE_AREA2", + "TYPE_GB_FORMER_POSTAL_COUNTY", + "TYPE_GB_TRADITIONAL_COUNTY", + "TYPE_ADMINISTRATIVE_AREA3", + "TYPE_ADMINISTRATIVE_AREA4", + "TYPE_ADMINISTRATIVE_AREA5", + "TYPE_ADMINISTRATIVE_AREA6", + "TYPE_ADMINISTRATIVE_AREA7", + "TYPE_ADMINISTRATIVE_AREA8", + "TYPE_ADMINISTRATIVE_AREA9", + "TYPE_COLLOQUIAL_AREA", + "TYPE_RESERVATION", + "TYPE_LOCALITY", + "TYPE_GB_POST_TOWN", + "TYPE_JP_GUN", + "TYPE_JP_SHIKUCHOUSON", + "TYPE_JP_SUB_SHIKUCHOUSON", + "TYPE_COLLOQUIAL_CITY", + "TYPE_SUBLOCALITY", + "TYPE_US_BOROUGH", + "TYPE_GB_DEPENDENT_LOCALITY", + "TYPE_JP_OOAZA", + "TYPE_JP_KOAZA", + "TYPE_JP_GAIKU", + "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY", + "TYPE_JP_CHIBAN", + "TYPE_JP_EDABAN", + "TYPE_SUBLOCALITY1", + "TYPE_SUBLOCALITY2", + "TYPE_SUBLOCALITY3", + "TYPE_SUBLOCALITY4", + "TYPE_SUBLOCALITY5", + "TYPE_NEIGHBORHOOD", + "TYPE_CONSTITUENCY", + "TYPE_DESIGNATED_MARKET_AREA", + "TYPE_SCHOOL_DISTRICT", + "TYPE_LAND_PARCEL", + "TYPE_DISPUTED_AREA", + "TYPE_POLICE_JURISDICTION", + "TYPE_STATISTICAL_AREA", + "TYPE_CONSTITUENCY_FUTURE", + "TYPE_PARK", + "TYPE_GOLF_COURSE", + "TYPE_LOCAL_PARK", + "TYPE_NATIONAL_PARK", + "TYPE_US_NATIONAL_PARK", + "TYPE_US_NATIONAL_MONUMENT", + "TYPE_NATIONAL_FOREST", + "TYPE_PROVINCIAL_PARK", + "TYPE_PROVINCIAL_FOREST", + "TYPE_CAMPGROUNDS", + "TYPE_HIKING_AREA", + "TYPE_BUSINESS", + "TYPE_GOVERNMENT", + "TYPE_BORDER_CROSSING", + "TYPE_CITY_HALL", + "TYPE_COURTHOUSE", + "TYPE_EMBASSY", + "TYPE_LIBRARY", + "TYPE_SCHOOL", + "TYPE_UNIVERSITY", + "TYPE_EMERGENCY", + "TYPE_HOSPITAL", + "TYPE_PHARMACY", + "TYPE_POLICE", + "TYPE_FIRE", + "TYPE_DOCTOR", + "TYPE_DENTIST", + "TYPE_VETERINARIAN", + "TYPE_TRAVEL_SERVICE", + "TYPE_LODGING", + "TYPE_RESTAURANT", + "TYPE_GAS_STATION", + "TYPE_PARKING", + "TYPE_POST_OFFICE", + "TYPE_REST_AREA", + "TYPE_CASH_MACHINE", + "TYPE_CAR_RENTAL", + "TYPE_CAR_REPAIR", + "TYPE_SHOPPING", + "TYPE_GROCERY", + "TYPE_TOURIST_DESTINATION", + "TYPE_ECO_TOURIST_DESTINATION", + "TYPE_BIRD_WATCHING", + "TYPE_FISHING", + "TYPE_HUNTING", + "TYPE_NATURE_RESERVE", + "TYPE_TEMPLE", + "TYPE_CHURCH", + "TYPE_GURUDWARA", + "TYPE_HINDU_TEMPLE", + "TYPE_MOSQUE", + "TYPE_SYNAGOGUE", + "TYPE_STADIUM", + "TYPE_BAR", + "TYPE_MOVIE_RENTAL", + "TYPE_COFFEE", + "TYPE_GOLF", + "TYPE_BANK", + "TYPE_DOODLE", + "TYPE_GROUNDS", + "TYPE_AIRPORT_GROUNDS", + "TYPE_BUILDING_GROUNDS", + "TYPE_CEMETERY", + "TYPE_HOSPITAL_GROUNDS", + "TYPE_INDUSTRIAL", + "TYPE_MILITARY", + "TYPE_SHOPPING_CENTER", + "TYPE_SPORTS_COMPLEX", + "TYPE_UNIVERSITY_GROUNDS", + "TYPE_DEPRECATED_TARMAC", + "TYPE_ENCLOSED_TRAFFIC_AREA", + "TYPE_PARKING_LOT", + "TYPE_PARKING_GARAGE", + "TYPE_OFF_ROAD_AREA", + "TYPE_BORDER", + "TYPE_BUILDING", + "TYPE_GEOCODED_ADDRESS", + "TYPE_NATURAL_FEATURE", + "TYPE_TERRAIN", + "TYPE_SAND", + "TYPE_BEACH", + "TYPE_DUNE", + "TYPE_ROCKY", + "TYPE_ICE", + "TYPE_GLACIER", + "TYPE_BUILT_UP_AREA", + "TYPE_VEGETATION", + "TYPE_SHRUBBERY", + "TYPE_WOODS", + "TYPE_AGRICULTURAL", + "TYPE_GRASSLAND", + "TYPE_TUNDRA", + "TYPE_DESERT", + "TYPE_SALT_FLAT", + "TYPE_WATER", + "TYPE_OCEAN", + "TYPE_BAY", + "TYPE_BIGHT", + "TYPE_LAGOON", + "TYPE_SEA", + "TYPE_STRAIT", + "TYPE_INLET", + "TYPE_FJORD", + "TYPE_LAKE", + "TYPE_SEASONAL_LAKE", + "TYPE_RESERVOIR", + "TYPE_POND", + "TYPE_RIVER", + "TYPE_RAPIDS", + "TYPE_DISTRIBUTARY", + "TYPE_CONFLUENCE", + "TYPE_WATERFALL", + "TYPE_SPRING", + "TYPE_GEYSER", + "TYPE_HOT_SPRING", + "TYPE_SEASONAL_RIVER", + "TYPE_WADI", + "TYPE_ESTUARY", + "TYPE_WETLAND", + "TYPE_WATER_NAVIGATION", + "TYPE_FORD", + "TYPE_CANAL", + "TYPE_HARBOR", + "TYPE_CHANNEL", + "TYPE_REEF", + "TYPE_REEF_FLAT", + "TYPE_REEF_GROWTH", + "TYPE_REEF_EXTENT", + "TYPE_REEF_ROCK_SUBMERGED", + "TYPE_IRRIGATION", + "TYPE_DAM", + "TYPE_DRINKING_WATER", + "TYPE_CURRENT", + "TYPE_WATERING_HOLE", + "TYPE_TECTONIC", + "TYPE_WATERING_HOLE_DEPRECATED", + "TYPE_VOLCANO", + "TYPE_LAVA_FIELD", + "TYPE_FISSURE", + "TYPE_FAULT", + "TYPE_LAND_MASS", + "TYPE_CONTINENT", + "TYPE_ISLAND", + "TYPE_ATOLL", + "TYPE_OCEAN_ROCK_EXPOSED", + "TYPE_CAY", + "TYPE_PENINSULA", + "TYPE_ISTHMUS", + "TYPE_ELEVATED", + "TYPE_PEAK", + "TYPE_NUNATAK", + "TYPE_SPUR", + "TYPE_PASS", + "TYPE_PLATEAU", + "TYPE_RIDGE", + "TYPE_RAVINE", + "TYPE_CRATER", + "TYPE_KARST", + "TYPE_CLIFF", + "TYPE_VISTA", + "TYPE_DIGITAL_ELEVATION_MODEL", + "TYPE_UPLAND", + "TYPE_TERRACE", + "TYPE_SLOPE", + "TYPE_CONTOUR_LINE", + "TYPE_PAN", + "TYPE_UNSTABLE_HILLSIDE", + "TYPE_MOUNTAIN_RANGE", + "TYPE_UNDERSEA", + "TYPE_SUBMARINE_SEAMOUNT", + "TYPE_SUBMARINE_RIDGE", + "TYPE_SUBMARINE_GAP", + "TYPE_SUBMARINE_PLATEAU", + "TYPE_SUBMARINE_DEEP", + "TYPE_SUBMARINE_VALLEY", + "TYPE_SUBMARINE_BASIN", + "TYPE_SUBMARINE_SLOPE", + "TYPE_SUBMARINE_CLIFF", + "TYPE_SUBMARINE_PLAIN", + "TYPE_SUBMARINE_FRACTURE_ZONE", + "TYPE_CAVE", + "TYPE_ROCK", + "TYPE_ARCHIPELAGO", + "TYPE_POSTAL", + "TYPE_POSTAL_CODE", + "TYPE_POSTAL_CODE_PREFIX", + "TYPE_PREMISE", + "TYPE_SUB_PREMISE", + "TYPE_SUITE", + "TYPE_POST_TOWN", + "TYPE_POSTAL_ROUND", + "TYPE_META_FEATURE", + "TYPE_DATA_SOURCE", + "TYPE_LOCALE", + "TYPE_TIMEZONE", + "TYPE_BUSINESS_CHAIN", + "TYPE_PHONE_NUMBER_PREFIX", + "TYPE_PHONE_NUMBER_AREA_CODE", + "TYPE_BUSINESS_CORRIDOR", + "TYPE_ADDRESS_TEMPLATE", + "TYPE_TRANSIT_AGENCY", + "TYPE_FUTURE_GEOMETRY", + "TYPE_EVENT", + "TYPE_EARTHQUAKE", + "TYPE_HURRICANE", + "TYPE_WEATHER_CONDITION", + "TYPE_TRANSIENT", + "TYPE_ENTRANCE", + "TYPE_CARTOGRAPHIC", + "TYPE_HIGH_TENSION", + "TYPE_SKI_TRAIL", + "TYPE_SKI_LIFT", + "TYPE_SKI_BOUNDARY", + "TYPE_WATERSHED_BOUNDARY", + "TYPE_TARMAC", + "TYPE_WALL", + "TYPE_PICNIC_AREA", + "TYPE_PLAY_GROUND", + "TYPE_TRAIL_HEAD", + "TYPE_GOLF_TEEING_GROUND", + "TYPE_GOLF_PUTTING_GREEN", + "TYPE_GOLF_ROUGH", + "TYPE_GOLF_SAND_BUNKER", + "TYPE_GOLF_FAIRWAY", + "TYPE_GOLF_HOLE", + "TYPE_DEPRECATED_GOLF_SHOP", + "TYPE_CAMPING_SITE", + "TYPE_DESIGNATED_BARBECUE_PIT", + "TYPE_DESIGNATED_COOKING_AREA", + "TYPE_CAMPFIRE_PIT", + "TYPE_WATER_FOUNTAIN", + "TYPE_LITTER_RECEPTACLE", + "TYPE_LOCKER_AREA", + "TYPE_ANIMAL_ENCLOSURE", + "TYPE_CARTOGRAPHIC_LINE", + "TYPE_ESTABLISHMENT", + "TYPE_ESTABLISHMENT_GROUNDS", + "TYPE_ESTABLISHMENT_BUILDING", + "TYPE_ESTABLISHMENT_POI", + "TYPE_ESTABLISHMENT_SERVICE", + "TYPE_CELESTIAL", + "TYPE_ROAD_MONITOR", + "TYPE_PUBLIC_SPACES_AND_MONUMENTS", + "TYPE_STATUE", + "TYPE_TOWN_SQUARE", + "TYPE_LEVEL", + "TYPE_COMPOUND", + "TYPE_COMPOUND_GROUNDS", + "TYPE_COMPOUND_BUILDING", + "TYPE_COMPOUND_SECTION", + "TYPE_TERMINAL_POINT", + "TYPE_REGULATED_AREA", + "TYPE_LOGICAL_BORDER", + "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES", + "TYPE_UNKNOWN" + ], + "enumDescriptions": [ + "ABSTRACT", + "ABSTRACT", + "A route is any section of road (or rails, etc.) that has a name. This includes city streets as well as highways. Road segments can belong to multiple routes (e.g. El Camino, CA-82).", + "DEPRECATED", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "A designated bicycle route, whose segments may consist of any combination of bicycle paths, bicycle lanes, or city streets.", + "A designated trail, which may consist of paved walkways, dirt paths, fire road, streets or highways, etc.", + "ABSTRACT", + "", + "Railroads use several different incompatible track types.", + "", + "", + "", + "", + "", + "", + "", + "", + "Tracks for streetcars, cable-cars, etc. Ferries are services that are part of the road network but are not roads. They typically involve fares and scheduled departure times.", + "ABSTRACT", + "The vast majority of ferries are ferry boats.", + "Also called a \"car transport\", a ferry train is a rail service that carries passengers and their vehicles across undrivable terrain. The Channel Tunnel (\"Chunnel\") is the most famous example, but they are also common in the Alps where they connect neighboring valleys otherwise separated by impassable mountains.", + "Any plausible 1-dimensional path through a 2+ dimensional space, for the purposes of making graph-search-based routing possible. Such segments can be used to model paths through parking lots, squares, floors of buildings and other areas.", + "An intersection consists of a collection of segments that terminate at the same location. This is topological definition: it may not match what a typical user would think of as an \"intersection\". See TYPE_INTERSECTION_GROUP, below, for more information. Each segment terminating at an intersection has an \"endpoint type\" that specifies how that segment is terminated: stop sign, yield sign, three-way light, etc.", + "ABSTRACT", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "A transit line is a collection of transit legs, associated with some invariant properties of the trips that run over the legs. See also transitline.proto", + "TYPE_TRANSIT_AGENCY was moved to 0xC91. This deprecated enum value still exists for debugging purposes only.", + "DEPRECATED", + "ABSTRACT", + "Road sign features have names, point geometry, etc. They also have segment_path data (see below) which lists the segments that refer to the sign. See segment.proto for the reference from the segment to the road sign.", + "Our TYPE_INTERSECTION feature, above, models 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. This TYPE_INTERSECTION_GROUP is used to model the user's concept of a complex intersection.", + "RESERVED", + "A restriction group describes a set of segment restrictions that belong together and have a name or an associated event. See also restriction_group.proto", + "A toll cluster is either a single point on a segment (represented as a point at the end of the segment that has ENDPOINT_TOLL_BOOTH set) or a group of points on various road segments in MapFacts that represents one or more lanes passing through a toll fixture that all go to the same routing destination. Each toll cluster should have at most a single price per payment method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has different prices for multiple routing destinations, drivers need to be in the correct lane before passing through the toll fixture and hence such a fixture is represented by multiple toll clusters. A toll cluster does not necessarily represent a real-world entity, e.g. a particular plaza/structure as perceived by humans. This is because a plaza can be represented by more than one toll cluster. We require toll clusters to have names, but they might be non-unique. For example, a plaza might be represented by multiple toll clusters that may have the same plaza name. For further details, please see go/toll-cluster-schema.", + "ABSTRACT", + "", + "ABSTRACT", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "e.g. Silicon Valley", + "A reservation is a region collectively held or governed by indigenous people and officially recognized by the country’s government at the federal or state level. A reservation may be fully contained within an administrative feature or partially contained within two or more. These regions are referred to by different categorical names depending on country and even by state, including but not limited to: “Indian Reservations”, “Indian Reserves”, “Land Claim Settlement Lands”, “Indian Lands”, “Treaty Lands”, “Indigenous Territories”, etc. A reservation is not a historic indigenous territory boundary or a region which has applied for land rights but has not yet received official recognition.", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "An entity widely considered to be a city, that may itself be made up of smaller political entities, some of which are cities/towns/villages themselves. For example, the colloquial view of Sydney, Australia actually comprises many smaller cities, but is regarded as a city itself. This type is not suitable for modeling official metro-/micropolitan or other statistical areas.", + "ABSTRACT", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "Designated Market Areas (or DMAs) are used by marketing and ratings companies (such as the Nielsen Media Research company) to describe geographical regions (such as the greater New York metropolitan area) that are covered by a set of television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In the United States, DMAs should have a DMA numeric ID name, tagged with the FLAG_DESIGNATED_MARKET_AREA_ID flag.", + "", + "", + "Eventually we'll have more data for disputed areas (e.g., who makes claims on the area, who has de facto control, etc.). For the moment, we just define a type so we can simply mark areas as disputed.", + "Boundaries representing the jurisdiction of a particular police station.", + "An area used for aggregating statistical data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a third nibble so we can add an abstract parent above it later if need be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as TYPE_STATISTICAL_AREA1).", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "A line representing the boundary between two features. See border.proto for details.", + "DEPRECATED", + "An association of a point with an address, with no other information.", + "ABSTRACT", + "Expanses of land that share common surface attributes. These areas would look more or less uniform from a high altitude.", + "", + "", + "", + "", + "", + "", + "Terrain that looks populated.", + "Terrain that is covered in vegetation.", + "", + "", + "", + "", + "", + "", + "A flat expanse of salt left by the evaporation of a body of salt water.", + "Features can be TYPE_WATER if we don't have enough information to properly type the body of water. TYPE_WATER is also used as the type for child features that compose a TYPE_RIVER feature.", + "One of the large salt-water bodies that covers most of the globe.", + "An ocean subdivision formed by a coastal indentation. Includes coves and gulfs.", + "An open body of water formed by a slight coastal indentation.", + "", + "An ocean subdivision more or less confined by land and islands.", + "A long narrow ocean subdivision. Includes sounds.", + "", + "", + "An inland body of standing water.", + "A lake that dries up part of the year.", + "An artificial body of water, possibly created by a dam, often used for irrigation or house use.", + "", + "An inland body of moving water, or parts associated with it in which there is little or no current (backwater).", + "", + "A branch which flows away from the main river. Includes deltas.", + "A place where two or more rivers join.", + "", + "A place where ground water flows naturally out of the ground.", + "", + "", + "A river that dries up part of the year.", + "A dry riverbed that occasionally receives flashfloods.", + "A place at the end of a river where fresh and salt water mix. Includes tidal creeks and limans.", + "Land that is usually flooded. Includes bogs, marshes, flats, moors, and swamps.", + "", + "A shallow place where water may be waded through.", + "A narrow passage used by boats. Normally artificial.", + "A deep place near a shore where ships commonly drop anchor.", + "A deep part in a body of water that is suitable for navigation. Includes narrows.", + "Rocks, coral, sandbars, or other features beneath the surface of the water that pose a hazard to passing ships. Includes shoals.", + "A relatively shallow zone of the back reef located closest to the shore, that may be exposed at low tide.", + "A small section of rocks, coral, sandbars, or other features beneath the surface of the water that forms part of a reef.", + "The full extent of the reef complex.", + "A submerged rock in the water.", + "Man-made (and sometimes natural) channels used to move water. This type was used for both dam structures and water that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for dam structures and TYPE_RESERVOIR for water.", + "DEPRECATED", + "", + "Includes overfalls.", + "A natural depression filled with water where animals come to drink.", + "ABSTRACT This type is incorrectly under TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now fixed. See TYPE_WATERING_HOLE for the replacement.", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "", + "An exposed rock in the water.", + "A small, low-elevation, sandy island formed on the surface of coral reefs", + "A stretch of land projecting into water. Includes capes and spits.", + "A strip of land connecting two larger land masses, such as continents.", + "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.", + "Elevations that have a distinctive peak.", + "A peak or ridge of a mountain that extends through a glacier.", + "A subsidiary peak of a mountain.", + "A route over an otherwise difficult to traverse feature. Includes saddle.", + "Elevations that are flat on top. Includes mesas and buttes.", + "A ridge is a geographical feature consisting of a chain of mountains or hills that form a continuous elevated crest with a single ridgeline for some distance.", + "Steep declines usually carved by erosion. Includes valleys, canyons, ditches, and gorges.", + "Depressions causes by impact, explosion, and sometimes sink-holes.", + "Topography formed on limestone and gypsum by dissolution with sinkholes, caves, etc.", + "A vertical or nearly vertical slope. Includes escarpments.", + "An elevated place that is notable for having a good view. Raster digital elevation data. This is not a type to be used by providers or consumed by clients.", + "RESERVED", + "Land along streams higher than the alluvial plain or stream terrace.", + "", + "Land not so steep as a cliff, but changing elevation. Includes slides.", + "All the points on the polygon are at the same elevation.", + "A near-level shallow, natural depression or basin, usually containing an intermittent lake, pond, or pool.", + "", + "A series of mountains or hills ranged in a line and connected by high ground. Mountain ranges usually consist of many smaller ridges. For example, the Himalayas, the Andes. the Alps, etc.", + "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.", + "includes peaks, ranges, and spurs", + "", + "includes saddles", + "", + "", + "includes trenches and troughs", + "", + "", + "", + "", + "", + "Don't use 0xA7. Use 8 bits for additional types under TYPE_NATURAL_FEATURE, so we don't run out of space. The following are miscellaneous natural features that don't fit any of the categories above.", + "", + "A feature representing a group or chain of islands. ", + "ABSTRACT", + "This is the type for postal codes which are complete and independent enough that there should be a feature for them (e.g. US 5-digit ZIP codes). For even more detailed suffixes that further subdivide a postal code (such as the +4 component in US ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX address component. When a range or set of postal codes share the same geographical area, e.g. because a precise subdivision does not exist or this subdivision is unknown, this type is used for each individual postal code.", + "A prefix portion of a postal code which does not meet the requirements for TYPE_POSTAL_CODE, but which is useful to search for, for example UK outcodes.", + "DEPRECATED", + "DEPRECATED This is deprecated and we want to use TYPE_COMPOUND_SECTION instead.", + "DEPRECATED", + "The term \"post town\" is used for a locality-like-entity that is only used for postal addresses.", + "DEPRECATED", + "ABSTRACT", + "Every data source used in constructing a data repository has a corresponding feature that provides more information about that data source. The extra information is stored in the optional data_source field below.", + "A locale feature provides region specific conventions such as preferred language and formatting details for time, date, and currency values. Locales aren't necessary defined by physical geographic features, so they are classified as meta-features.", + "A timezone feature is used to specify the region covering an international timezone. When a point is covered by multiple timezone features, the most specific one can be used to compute the local time at this point. Most specific implies a much smaller region or the one that is closer to the center. A feature's timezone can be specified in the repeated related_timezone field.", + "A business chain feature is used to represent a chain, e.g. Starbucks, McDonald's, etc. Other features representing specific stores/franchises of this chain may refer to one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly reserved to commercial chains but can also be used to model organizations such as the Red Cross or the United Nations.", + "A phone number prefix feature is used to specify the region where phone numbers (typically fixed-line numbers) must begin with a certain prefix. Any phone number prefix down to any level of granularity could be represented by this type.", + "A phone number area code is a prefix which also coincides with the area code, or national destination code, of a particular region.", + "A Business Corridor is a dense cluster of semantically similar establishments. TYPE_BUSINESS_CORRIDOR features are distinguished from TYPE_COLLOQUIAL_AREA features because the corridors are not under the political hierarchy, are allowed to be nameless, and may not correspond to well-known real world locations. For more details, see go/geo-corridors-schema.", + "An address template feature provides region-specific conventions for structuring addresses. These features aren't necessarily defined by physical geographic features, so they are classified as meta-features.", + "A transit agency operates a number of lines, typically all in the same city, region or country. See also transitagency.proto", + "A feature whose geometry is planned to replace the geometry on another feature.", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "RESERVED", + "A portal of entry or exit to another feature. Examples: - Subway station entrance. - Parking lot entrance.", + "Cartographic features are used to capture real-world objects for which there is no current desire to model any specific attributes. These are only useful to make the map tiles look pretty.", + "DEPRECATED", + "Also see skitrail.proto", + "Also see skilift.proto", + "Also see skiboundary.proto", + "", + "Starting with TYPE_TARMAC, we use longer IDs, so that we can expand the number of feature types under TYPE_CARTOGRAPHIC.", + "Use TYPE_COMPOUND_GROUND and appropriate gcids for the next two.", + "DEPRECATED", + "DEPRECATED", + "", + "Sub-types within a golf course.", + "", + "", + "", + "", + "Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop for golf shops instead.", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "Subtype within a zoo - a cage or fenced-off or otherwise delineated area containing animals.", + "A line for a cartographic detail. For example the international date line. Such features should have polyline geometry.", + "ABSTRACT This type is being replaced by TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2", + "DEPRECATED This type has been replaced by TYPE_COMPOUND_BUILDING. For further details, see go/oyster-compounds", + "DEPRECATED", + "An establishment which has a address (a.k.a. location or storefront). Note that it *may* also have a service area (e.g. a restaurant that offers both dine-in and delivery). This type of business is also known as a \"hybrid\" Service Area Business. Establishment POIs can be referenced by TYPE_COMPOUND features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the reciprocal relation of the RELATION_OCCUPIES.", + "A business without a storefront, e.g. a plumber. It would normally not have a place that a customer could visit to receive service, but it would have an area served by the business. Also known as a \"pure\" Service Area Business. NOTE(tcain): Using value 0xD441, since we could find ourselves with a need to differentiate service areas from online-only at this level in the future, but still benefit from being able to group those under a common parent, disjoint from TYPE_ESTABLISHMENT_POI.", + "The root of types of features that are in the sky, rather than on the earth. There will eventually be a hierarchy of types here.", + "Features responsible for monitoring traffic on roads (usually for speed). Includes cameras at particular points as well as monitors that cover larger spans. Features of this type should have a corresponding gcid that specifies the correct subtype (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was originally named as TYPE_ROAD_CAMERA.", + "ABSTRACT", + "Note that this type does not distinguish the nature of the statue (religious, historical, memorial, tourist, ...).", + "Open space used for events, gathering, or as market-place.", + "A feature used to represent a logical level, e.g. floor.", + "ABSTRACT", + "e.g. campus, compound, parcel.", + "e.g. single family dwelling, office building.", + "e.g. suite, room, hallway, cubicle.", + "A terminal point represents a good location for a user to meet a taxi, ridesharing vehicle, or general driver.", + "An area controlled in some way by an authoritative source, such as a government-designated COVID containment zone. Features of this type should have one or more gcids corresponding to their specific regulation.", + "RESERVED", + "DEPRECATED", + "A feature of completely unknown type. This should only be used when absolutely necessary. One example in which this type is useful is in the Chinese importer, which must heuristically segment addresses into components - it often does not know what types to make those components. Please note that the Oyster address formatter does not currently support address components of TYPE_UNKNOWN well." + ], + "type": "string" + }, + "verticalOrdering": { + "$ref": "GeostoreVerticalOrderingProto", + "description": "Represents vertical ordering for this feature relative to other geometrically-overlaping features. See go/aboutgrades for more information about distinction among different levels." + }, + "waterRemovedPolygon": { + "$ref": "GeostorePolygonProto", + "description": "RESERVED" + }, + "website": { + "description": "The official website of this feature. Stored as a repeated field to allow for multilingual official websites (see comments in url.proto).", + "items": { + "$ref": "GeostoreUrlProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreFieldMetadataProto": { + "description": "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).", + "id": "GeostoreFieldMetadataProto", + "properties": { + "internal": { + "$ref": "GeostoreInternalFieldMetadataProto" + } + }, + "type": "object" + }, + "GeostoreFieldWithRightsProto": { + "description": "Proto used to represent rights for a field type. See go/geo-rights for more details. NOTE: Use google3/geostore/provenance/public/rights.h or google3/java/com/google/geostore/provenance/rights/Rights.swig instead of accessing this proto directly.", + "id": "GeostoreFieldWithRightsProto", + "properties": { + "attributeId": { + "description": "** DEPRECATED ** If field_type is set to FEATURE_ATTRIBUTE or KNOWLEDGE_GRAPH_PROPERTY, the attribute ID / KG property ID that makes this field with rights complete.", + "type": "string" + }, + "featurePropertyId": { + "$ref": "GeostoreFeaturePropertyIdProto" + }, + "fieldType": { + "description": "The field type for which the rights level are tracked on. The default value here has to match the value of fieldtype::NONE.", + "format": "int32", + "type": "integer" + }, + "minRightsLevel": { + "description": "The minimum rights level for all the current values on the field type.", + "enum": [ + "UNKNOWN_RIGHTS", + "GT_RIGHTS", + "FULL_RIGHTS" + ], + "enumDescriptions": [ + "Indicates that the rights level is unknown. This should always be the default value of any RightsLevel field in any proto.", + "GT-rights or GT-level rights is a level of data ownership that Google has retained as defined by the Ground Truth project. GT rights include but may not be limited to: - Data may be used perpetually in any Google product or service - No requirement for any on-screen attribution requirements (although we may have softer attribution requirements, like display on a legal notices page) - No display, distribution, or storage restrictions - other than that the content may not be redistributed on a standalone basis, independent of a Google product or service.", + "Full rights refers to data for which Google has no usage restrictions. We can do whatever we want with it." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreFlowLineProto": { + "description": "Wrapper to hold data related to a lane’s track, extendable for future data.", + "id": "GeostoreFlowLineProto", + "properties": { + "track": { + "$ref": "GeostoreTrackProto" + } + }, + "type": "object" + }, + "GeostoreFoodMenuItemOptionProto": { + "description": "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.", + "id": "GeostoreFoodMenuItemOptionProto", + "properties": { + "allergenAbsent": { + "items": { + "enum": [ + "ALLERGEN_DAIRY", + "ALLERGEN_EGG", + "ALLERGEN_FISH", + "ALLERGEN_PEANUT", + "ALLERGEN_SHELLFISH", + "ALLERGEN_SOY", + "ALLERGEN_TREE_NUT", + "ALLERGEN_WHEAT" + ], + "enumDescriptions": [ + "A list of types of allergens for food and drinks.", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "allergenPresent": { + "items": { + "enum": [ + "ALLERGEN_DAIRY", + "ALLERGEN_EGG", + "ALLERGEN_FISH", + "ALLERGEN_PEANUT", + "ALLERGEN_SHELLFISH", + "ALLERGEN_SOY", + "ALLERGEN_TREE_NUT", + "ALLERGEN_WHEAT" + ], + "enumDescriptions": [ + "A list of types of allergens for food and drinks.", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "calories": { + "format": "int32", + "type": "integer" + }, + "ingredients": { + "description": "Ingredients of the food dish option.", + "items": { + "$ref": "GeostoreFoodMenuItemOptionProtoIngredient" + }, + "type": "array" + }, + "media": { + "description": "Photos of the food dish option.", + "items": { + "$ref": "GeostoreMediaItemProto" + }, + "type": "array" + }, + "nameInfo": { + "description": "The repeated name_info field here is for item options with names or descriptions listed in multiple languages. When an item option has no names or descriptions, the size of the repeated field name_info may be 0. For example, when a food menu item does not have multiple options, the item option proto is used only to specify price and nutritional information, so it will not have a name_info field. There should be at most one name_info for any given language.", + "items": { + "$ref": "GeostorePriceListNameInfoProto" + }, + "type": "array" + }, + "nutritionFacts": { + "$ref": "GeostorePriceInfoFoodNutritionFacts", + "description": "Nutrition facts of the food dish option. Note that it also includes calories information with a finer defined unit information." + }, + "portionSize": { + "$ref": "GeostoreFoodMenuItemOptionProtoPortionSize", + "description": "Size of the order, represented in units of items. (e.g. 4 \"skewers”, 6 \"pieces”)" + }, + "preparationMethods": { + "description": "Methods on how the food dish option is prepared.", + "items": { + "enum": [ + "METHOD_UNDEFINED", + "BAKED", + "BOILED", + "BLANCHED", + "BRAISED", + "CODDLED", + "PRESSURE_COOKED", + "SIMMERED", + "STEAMED", + "STEEPED", + "GRILLED", + "FRIED", + "PAN_FRIED", + "STIR_FRIED", + "SAUTEED", + "ROASTED", + "BARBECUED", + "SEARED", + "SMOKED", + "FERMENTED", + "MARINATED", + "PICKLED", + "BASTED", + "KNEADED", + "OTHER_METHOD" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "price": { + "$ref": "GeostorePriceRangeProto", + "description": "We use PriceRangeProto here but we expect the lower_price and upper_price to be both set to equal numbers because an option should have a single price. This field is not required because food item prices may be variable depending on season." + }, + "restriction": { + "items": { + "enum": [ + "DIET_HALAL", + "DIET_KOSHER", + "DIET_ORGANIC", + "DIET_VEGAN", + "DIET_VEGETARIAN" + ], + "enumDescriptions": [ + "A list of types of restrictions adhered to during food preparation.", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "servesNumPeople": { + "description": "Number of people can be served by this food dish option.", + "format": "int32", + "type": "integer" + }, + "spiciness": { + "enum": [ + "SPICINESS_NONE", + "SPICINESS_MILD", + "SPICINESS_MEDIUM", + "SPICINESS_HOT" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreFoodMenuItemOptionProtoIngredient": { + "description": "This message denotes an ingredient information of a food dish.", + "id": "GeostoreFoodMenuItemOptionProtoIngredient", + "properties": { + "nameInfo": { + "description": "The repeated name_info field is for the ingredient in multiple languages.", + "items": { + "$ref": "GeostorePriceListNameInfoProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreFoodMenuItemOptionProtoPortionSize": { + "description": "This message denotes the serving portion size of a food dish.", + "id": "GeostoreFoodMenuItemOptionProtoPortionSize", + "properties": { + "quantity": { + "description": "Required.", + "format": "int32", + "type": "integer" + }, + "unit": { + "description": "Required. The repeated name_info field is for the unit in multiple languages.", + "items": { + "$ref": "GeostorePriceListNameInfoProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreFoodMenuItemProto": { + "description": "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.", + "id": "GeostoreFoodMenuItemProto", + "properties": { + "itemOption": { + "items": { + "$ref": "GeostoreFoodMenuItemOptionProto" + }, + "type": "array" + }, + "nameInfo": { + "description": "The repeated name_info field is for items listed in multiple languages.", + "items": { + "$ref": "GeostorePriceListNameInfoProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreGConceptInstanceProto": { + "description": "A GConceptInstanceProto contains a GConceptID (which is the unique identifier of a GConcept, a category in the Geo Ontology).", + "id": "GeostoreGConceptInstanceProto", + "properties": { + "gconceptId": { + "description": "The unique identifier of a GConcept (e.g. \"gcid:railway\").", + "type": "string" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this GConcept." + }, + "prominence": { + "description": "The relative prominence of this category to this feature according to the data provider, as one of the values from the enum above. Prominence is a measure of how well the given GConcept describes the feature. An example is a gas station with convenience store and ATM. All three GConcepts are very relevant, but the gas_station GConcept is the most prominent. If the prominence of this GConcept is unknown, this field should not be set.", + "enum": [ + "NON_PRIMARY", + "PRIMARY" + ], + "enumDescriptions": [ + "not a prominent GConcept", + "the most prominent GConcept" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreGeopoliticalGeometryProto": { + "description": "Geopolitical (unsimplified) polygons for a feature for different geopolitical use cases. See go/unsimplified-poly.", + "id": "GeostoreGeopoliticalGeometryProto", + "properties": { + "restOfWorldPolygon": { + "$ref": "GeostorePolygonProto", + "description": "The unsimplified, water-subtracted polygon representing the feature's geometry as viewed by the rest of the world, which may differ from its default polygon, for example by excluding certain regions." + }, + "selfPolygon": { + "$ref": "GeostorePolygonProto", + "description": "The unsimplified, water-subtracted polygon representing the feature's geometry as viewed by the country that administers it, which may differ from its default polygon, for example by including disputed areas." + } + }, + "type": "object" + }, + "GeostoreGradeLevelProto": { + "description": "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.", + "id": "GeostoreGradeLevelProto", + "properties": { + "index": { + "description": "The index of the point along the segment, where 0 is the starting point. This means that the index of a point along a segment and its sibling will be different.", + "format": "int32", + "type": "integer" + }, + "level": { + "description": "The grade level of the indexed point. The grade level can be thought of as a relative vertical ordering with respect to other segments at the same point, where larger/more positive numbers are \"higher\". Negative grade level values are allowed and are typically used for points below grade level (0 is a common choice to represent the level of points at the ground level). For vertical segments, the height, i.e. the vertical length, is represented by difference of levels in millimeters. For example, feature.segment().grade_level(0).level() == 0 and feature.segment().grade_level(1).level() == 5000, then the length of the vertical segment feature is 5000 millimeters (5 meters).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostoreHtmlTextProto": { + "description": "Represents HTML text associated with a feature.", + "id": "GeostoreHtmlTextProto", + "properties": { + "text": { + "description": "Zero or more texts of the specified type, in various languages. If this is a HTML_DESCRIPTION blob then these texts would hold the description in English, German, and so forth. The text is an HTML fragment, not a full page. The fragment should be suitable for including in a DIV. It must have balanced HTML tags. It may use HTML's \"class\" attributes to assign classes to HTML elements. This allows the HTML to be formatted by an (external) style sheet. The HTML should not have embedded style sheet definitions, nor should it have embedded JavaScript.", + "items": { + "$ref": "GeostoreLanguageTaggedTextProto" + }, + "type": "array" + }, + "type": { + "enum": [ + "HTML_DESCRIPTION" + ], + "enumDescriptions": [ + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreInferredGeometryProto": { + "description": "The inferred geometry of a feature contains 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. Subtract the geometries of all the features referenced in \"excludes_geometry_of\". See: go/inferred-geometry for more information.", + "id": "GeostoreInferredGeometryProto", + "properties": { + "definesGeometryFor": { + "description": "Features whose geometry depends on this feature's geometry.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "excludesGeometryOf": { + "description": "Features whose geometry to exclude while inferring geometry.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "includesGeometryOf": { + "description": "Features whose geometry to include while inferring geometry.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreInternalFeatureProto": { + "description": "Main proto for all internal fields to be stored at the feature level.", + "id": "GeostoreInternalFeatureProto", + "properties": { + "polygonShapeId": { + "description": "A unique identifier for this feature's polygon data which is being held externally in Shapestore (see go/shapestore).", + "type": "string" + }, + "restOfWorldPolygonShapeId": { + "description": "A unique identifier for this feature's rest-of-world view polygon data which is being held externally in Shapestore (see go/shapestore). This is part of the feature's geopolitical geometry.", + "type": "string" + }, + "rightsStatus": { + "$ref": "GeostoreRightsStatusProto", + "description": "Per-field rights for this feature. See http://g3doc/geostore/g3doc/developers-guide/inputs/rights-tracking for more information." + }, + "selfPolygonShapeId": { + "description": "A unique identifier for this feature's self view polygon data which is being held externally in Shapestore (see go/shapestore). This is part of the feature's geopolitical geometry.", + "type": "string" + }, + "trust": { + "$ref": "GeostoreTrustSignalsProto", + "description": "Trust signals/annotations for the feature. In an input feature, these signals are computed at the beginning of the pipeline and are immutable during the processing. In output features, this proto may define the rules/criteria that a newer edit should meet, in order to be applied." + }, + "waterRemovedPolygonShapeId": { + "description": "A unique identifier for this feature's water-removed polygon data which is being held externally in Shapestore (see go/shapestore).", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreInternalFieldMetadataProto": { + "id": "GeostoreInternalFieldMetadataProto", + "properties": { + "isAuto": { + "description": "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.", + "type": "boolean" + }, + "sourceSummary": { + "$ref": "GeostoreInternalSourceSummaryProto", + "description": "Information about the source providing the piece of data this metadata is attached to." + } + }, + "type": "object" + }, + "GeostoreInternalSegmentProto": { + "description": "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/mr-mergesegments_test.cc is aware of them.", + "id": "GeostoreInternalSegmentProto", + "properties": { + "travelAllowance": { + "description": "The set of restrictions that apply to this segment; these are actually *POSITIVE* restrictions, i.e. they are known to be allowed.", + "items": { + "$ref": "GeostoreRestrictionProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreInternalSourceSummaryProto": { + "id": "GeostoreInternalSourceSummaryProto", + "properties": { + "dataset": { + "description": "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\".", + "type": "string" + }, + "provider": { + "description": "The data provider from which this piece of data was generated. Equivalent to SourceInfoProto.provider in the public schema.", + "enum": [ + "PROVIDER_ANY", + "PROVIDER_UNKNOWN", + "PROVIDER_NAVTEQ", + "PROVIDER_TELE_ATLAS", + "PROVIDER_TELE_ATLAS_MULTINET", + "PROVIDER_TELE_ATLAS_CODEPOINT", + "PROVIDER_TELE_ATLAS_GEOPOST", + "PROVIDER_TELE_ATLAS_DATAGEO", + "PROVIDER_TELE_ATLAS_ADDRESS_POINTS", + "PROVIDER_TELCONTAR", + "PROVIDER_EUROPA", + "PROVIDER_ROYAL_MAIL", + "PROVIDER_GOOGLE", + "PROVIDER_GOOGLE_HAND_EDIT", + "PROVIDER_GOOGLE_BORDERS", + "PROVIDER_GOOGLE_SUBRANGE", + "PROVIDER_GOOGLE_GT_FUSION", + "PROVIDER_GOOGLE_ZAGAT_CMS", + "PROVIDER_GOOGLE_PLACE_NAVBOOST", + "PROVIDER_GOOGLE_FOOTPRINT", + "PROVIDER_GOOGLE_PRODUCT_TERMS", + "PROVIDER_GOOGLE_POINTCARDS", + "PROVIDER_GOOGLE_BUSINESS_CHAINS", + "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION", + "PROVIDER_GOOGLE_PRONUNCIATIONS", + "PROVIDER_GOOGLE_DUMPLING", + "PROVIDER_GOOGLE_DISTILLERY", + "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION", + "PROVIDER_GOOGLE_RELATION_MINER", + "PROVIDER_GOOGLE_MAPSPAM", + "PROVIDER_GOOGLE_ROSE", + "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS", + "PROVIDER_GOOGLE_WIPEOUT", + "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH", + "PROVIDER_GOOGLE_BEEGEES", + "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION", + "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION", + "PROVIDER_GOOGLE_GEO_WORLDMAPS", + "PROVIDER_GOOGLE_GEO_MODERATION", + "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS", + "PROVIDER_GOOGLE_LOCAL_ALCHEMY", + "PROVIDER_GOOGLE_KEROUAC", + "PROVIDER_GOOGLE_MOBRANK", + "PROVIDER_GOOGLE_RAPTURE", + "PROVIDER_GOOGLE_CULTURAL_INSTITUTE", + "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS", + "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS", + "PROVIDER_GOOGLE_TACTILE_MAPS", + "PROVIDER_GOOGLE_MAPS_FOR_MOBILE", + "PROVIDER_GOOGLE_GEO_REALTIME", + "PROVIDER_GOOGLE_PROMINENT_PLACES", + "PROVIDER_GOOGLE_PLACE_ACTIONS", + "PROVIDER_GOOGLE_GT_AUTO_EDITS", + "PROVIDER_GOOGLE_WAZE", + "PROVIDER_GOOGLE_ONTHEGO", + "PROVIDER_GOOGLE_GT_IMPORT", + "PROVIDER_GOOGLE_STRUCTURED_DATA", + "PROVIDER_GOOGLE_HELICOPTER", + "PROVIDER_GOOGLE_ROLLBACK", + "PROVIDER_GOOGLE_RIGHTS_REPAIR", + "PROVIDER_GOOGLE_PERFUME", + "PROVIDER_GOOGLE_MAPS_TRANSLATION", + "PROVIDER_GOOGLE_CALL_ME_MAYBE", + "PROVIDER_GOOGLE_LOCAL_UNIVERSAL", + "PROVIDER_GOOGLE_CROUPIER", + "PROVIDER_GOOGLE_SKYSMART", + "PROVIDER_GOOGLE_RIDDLER", + "PROVIDER_GOOGLE_ROADCLOSURES", + "PROVIDER_GOOGLE_SPORE", + "PROVIDER_GOOGLE_LOCALIZATION", + "PROVIDER_GOOGLE_CATTERMS", + "PROVIDER_GOOGLE_GT_FIELD_OPS", + "PROVIDER_GOOGLE_MATCHMAKER", + "PROVIDER_GOOGLE_ARBITRATION", + "PROVIDER_GOOGLE_BIZBUILDER_OPS", + "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS", + "PROVIDER_GOOGLE_GT_DRAFTY", + "PROVIDER_GOOGLE_HOTELADS_OPS", + "PROVIDER_GOOGLE_MARKERS", + "PROVIDER_GOOGLE_STATE_MACHINE", + "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE", + "PROVIDER_GOOGLE_BIKESHARE", + "PROVIDER_GOOGLE_GHOSTWRITER", + "PROVIDER_GOOGLE_EDIT_PLATFORM", + "PROVIDER_GOOGLE_BLUE_GINGER", + "PROVIDER_GOOGLE_GEO_TIGER", + "PROVIDER_GOOGLE_HYADES", + "PROVIDER_GOOGLE_WEBQUARRY", + "PROVIDER_GOOGLE_GEO_MADDEN", + "PROVIDER_GOOGLE_ANDROID_PAY", + "PROVIDER_GOOGLE_OPENING_HOURS_TEAM", + "PROVIDER_GOOGLE_LOCAL_DISCOVERY", + "PROVIDER_GOOGLE_LOCAL_HEALTH", + "PROVIDER_GOOGLE_UGC_MAPS", + "PROVIDER_GOOGLE_FIBER", + "PROVIDER_GOOGLE_REVGEO", + "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END", + "PROVIDER_GOOGLE_GEO_UGC_TASKS", + "PROVIDER_GOOGLE_GEOCODING", + "PROVIDER_GOOGLE_SPYGLASS", + "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES", + "PROVIDER_GOOGLE_GEO_CHANGES", + "PROVIDER_GOOGLE_HUME", + "PROVIDER_GOOGLE_MEGAMIND", + "PROVIDER_GOOGLE_GT_ROADSYNTH", + "PROVIDER_GOOGLE_FIREBOLT", + "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS", + "PROVIDER_GOOGLE_UGC_SERVICES", + "PROVIDER_GOOGLE_GEOALIGN", + "PROVIDER_GOOGLE_GT_COMPOUNDS", + "PROVIDER_GOOGLE_FOOD_ORDERING", + "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS", + "PROVIDER_GOOGLE_URAW", + "PROVIDER_GOOGLE_FLYEYE", + "PROVIDER_GOOGLE_YOUKE", + "PROVIDER_GOOGLE_GT_ZEPHYR", + "PROVIDER_GOOGLE_USER_SAFETY", + "PROVIDER_GOOGLE_ADDRESS_MAKER", + "PROVIDER_GOOGLE_UGC_PHOTOS", + "PROVIDER_GOOGLE_GT_WINDCHIME", + "PROVIDER_GOOGLE_SNAG_FIXER", + "PROVIDER_GOOGLE_GEO_DEALS", + "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS", + "PROVIDER_GOOGLE_PROPERTY_INSIGHTS", + "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS", + "PROVIDER_GOOGLE_GEO_PORTKEY", + "PROVIDER_GOOGLE_ROAD_MAPPER", + "PROVIDER_GOOGLE_LOCATION_PLATFORM", + "PROVIDER_GOOGLE_POSTTRIP", + "PROVIDER_GOOGLE_TRAVEL_DESTINATION", + "PROVIDER_GOOGLE_GEO_DATA_UPLOAD", + "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP", + "PROVIDER_GOOGLE_USER", + "PROVIDER_GOOGLE_STATION", + "PROVIDER_GOOGLE_GEO_FOOD", + "PROVIDER_GOOGLE_GEO_AR", + "PROVIDER_GOOGLE_GEO_TEMPORAL", + "PROVIDER_GOOGLE_SERVICES_MARKETPLACE", + "PROVIDER_GOOGLE_IMT_CLEANUP", + "PROVIDER_GOOGLE_GEO_FOOD_MENU", + "PROVIDER_GOOGLE_CARENAV", + "PROVIDER_GOOGLE_DRIVING_FEEDS", + "PROVIDER_GOOGLE_DRIVING_UGC", + "PROVIDER_GOOGLE_POLAR", + "PROVIDER_GOOGLE_TRIWILD", + "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS", + "PROVIDER_GOOGLE_SA_FROM_WEB", + "PROVIDER_GOOGLE_POI_ALIGNMENT", + "PROVIDER_GOOGLE_SA_FROM_HULK", + "PROVIDER_GOOGLE_SERVICES_INTERACTIONS", + "PROVIDER_GOOGLE_ROADS_UGC_EDITOR", + "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE", + "PROVIDER_GOOGLE_GEO_DRIVING_VIZ", + "PROVIDER_GOOGLE_GEO_TASKING", + "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE", + "PROVIDER_GOOGLE_CROWDTASK_TASKADS", + "PROVIDER_GOOGLE_CROWDTASK_TASKMATE", + "PROVIDER_GOOGLE_CROWDTASK_FURBALL", + "PROVIDER_GOOGLE_CROWDTASK_ADAP", + "PROVIDER_GOOGLE_GPAY", + "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS", + "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION", + "PROVIDER_GOOGLE_GEOTRACKER", + "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE", + "PROVIDER_GOOGLE_GEO_CLOSED_LOOP", + "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS", + "PROVIDER_GOOGLE_CORE_DATA_RIGHTS", + "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS", + "PROVIDER_GOOGLE_GEO_CONTENT_FIXER", + "PROVIDER_GOOGLE_POLYGON_REFINEMENT", + "PROVIDER_GOOGLE_HANASU", + "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD", + "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD", + "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD", + "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS", + "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS", + "PROVIDER_GOOGLE_SA_QUALITY", + "PROVIDER_GOOGLE_GDCE_CLEANUP", + "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS", + "PROVIDER_GOOGLE_LOCALSEARCH", + "PROVIDER_GOOGLE_TRANSIT", + "PROVIDER_GOOGLE_GEOWIKI", + "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM", + "PROVIDER_GOOGLE_SYNTHESIZED", + "PROVIDER_GOOGLE_INTERNAL_TEST", + "PROVIDER_GOOGLE_DISPUTED_AREAS", + "PROVIDER_GOOGLE_3DWAREHOUSE", + "PROVIDER_GOOGLE_GROUNDS_BUILDER", + "PROVIDER_GOOGLE_SESAME", + "PROVIDER_GOOGLE_GT", + "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD", + "PROVIDER_GOOGLE_ADSDB", + "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION", + "PROVIDER_GOOGLE_TRAVELSEARCH", + "PROVIDER_GOOGLE_PANORAMIO", + "PROVIDER_GOOGLE_YOUTUBE", + "PROVIDER_GOOGLE_OLD", + "PROVIDER_GOOGLE_STREETVIEW", + "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW", + "PROVIDER_GOOGLE_ZIPIT", + "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES", + "PROVIDER_GOOGLE_GOLDEN", + "PROVIDER_GOOGLE_INNERSPACE", + "PROVIDER_GOOGLE_MAPSEARCH", + "PROVIDER_GOOGLE_CATEGORIES_TEAM", + "PROVIDER_GOOGLE_CROWDSENSUS", + "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY", + "PROVIDER_GOOGLE_FREEBASE", + "PROVIDER_GOOGLE_HOTELADS", + "PROVIDER_GOOGLE_AUTHORITY_PAGES", + "PROVIDER_GOOGLE_PLACES_API", + "PROVIDER_GOOGLE_NAMEHEATMAP", + "PROVIDER_GOOGLE_MAPMAKER", + "PROVIDER_GOOGLE_MAPMAKER_MOBILE", + "PROVIDER_GOOGLE_MAPMAKER_PANCAKE", + "PROVIDER_GOOGLE_MAPMAKER_V2", + "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE", + "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER", + "PROVIDER_GOOGLE_GT_LOCAL", + "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS", + "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS", + "PROVIDER_GOOGLE_ENTITY_NAVBOOST", + "PROVIDER_GOOGLE_RELATED_PLACES", + "PROVIDER_GOOGLE_KNOWN_FOR_TERMS", + "PROVIDER_GOOGLE_SYNTHETIC_AREAS", + "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS", + "PROVIDER_GOOGLE_CROSS_STREETS", + "PROVIDER_GOOGLE_CORRIDORS", + "PROVIDER_GOOGLE_BICYCLE_RENTAL", + "PROVIDER_GOOGLE_CONCRETE_URLS", + "PROVIDER_GOOGLE_LEANBACK", + "PROVIDER_GOOGLE_LOCKED_LISTINGS", + "PROVIDER_GOOGLE_MONITORING", + "PROVIDER_GOOGLE_SPROUT", + "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY", + "PROVIDER_GOOGLE_GOBY", + "PROVIDER_GOOGLE_PROBLEM_REPORT", + "PROVIDER_GOOGLE_CANDID", + "PROVIDER_GOOGLE_BIZBUILDER", + "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA", + "PROVIDER_MAPDATA_SCIENCES", + "PROVIDER_MAPONICS", + "PROVIDER_SKI_RESORTS", + "PROVIDER_ZENRIN", + "PROVIDER_SANBORN", + "PROVIDER_URBAN_MAPPING", + "PROVIDER_US_GOVERNMENT", + "PROVIDER_US_CENSUS", + "PROVIDER_US_POSTAL_SERVICE", + "PROVIDER_US_GEOLOGICAL_SURVEY", + "PROVIDER_US_GNIS", + "PROVIDER_US_LANDSAT", + "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY", + "PROVIDER_US_NGA_GNS", + "PROVIDER_US_SSIBL", + "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS", + "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION", + "PROVIDER_US_POLAR_GEOSPATIAL_CENTER", + "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE", + "PROVIDER_US_NPI_REGISTRY", + "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS", + "PROVIDER_DMTI_SPATIAL", + "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION", + "PROVIDER_MAPLINK", + "PROVIDER_KINGWAY", + "PROVIDER_GEOCENTRE", + "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS", + "PROVIDER_CN_MAPABC", + "PROVIDER_SMITHSONIAN_INSTITUTE", + "PROVIDER_TRACKS_FOR_AFRICA", + "PROVIDER_PPWK", + "PROVIDER_LEADDOG", + "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG", + "PROVIDER_GISRAEL", + "PROVIDER_BASARSOFT", + "PROVIDER_MAPINFO", + "PROVIDER_MAPIT", + "PROVIDER_GEOBASE", + "PROVIDER_ORION", + "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY", + "PROVIDER_ANASAT", + "PROVIDER_MINED_POSTCODES", + "PROVIDER_DMAPAS", + "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY", + "PROVIDER_CH_SBB", + "PROVIDER_SKENERGY", + "PROVIDER_GBRMPA", + "PROVIDER_KOREA_POST", + "PROVIDER_CN_AUTONAVI", + "PROVIDER_MINED_POI", + "PROVIDER_ML_INFOMAP", + "PROVIDER_SNOOPER", + "PROVIDER_GEOSISTEMAS", + "PROVIDER_AFRIGIS", + "PROVIDER_TRANSNAVICOM", + "PROVIDER_EASYCONNECT", + "PROVIDER_LANTMATERIET", + "PROVIDER_LOGICA", + "PROVIDER_MAPKING", + "PROVIDER_DIANPING", + "PROVIDER_GEONAV", + "PROVIDER_HEIBONSHA", + "PROVIDER_DEUTSCHE_TELEKOM", + "PROVIDER_LINGUISTIC_DATA_CONSORTIUM", + "PROVIDER_ACXIOM", + "PROVIDER_DUN_AND_BRADSTREET", + "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION", + "PROVIDER_INFOUSA", + "PROVIDER_INFOUSA_NIXIE", + "PROVIDER_THOMSON_LOCAL", + "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION", + "PROVIDER_WIKIPEDIA", + "PROVIDER_INFOBEL", + "PROVIDER_MX_GOVERNMENT", + "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY", + "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO", + "PROVIDER_TELEGATE", + "PROVIDER_TELELISTAS", + "PROVIDER_MAPCITY", + "PROVIDER_EXPLAINER_DC", + "PROVIDER_DAIKEI", + "PROVIDER_NL_CHAMBER_OF_COMMERCE", + "PROVIDER_KOREA_INFO_SERVICE", + "PROVIDER_WIKITRAVEL", + "PROVIDER_FLICKR", + "PROVIDER_DIANCO", + "PROVIDER_VOLT_DELTA", + "PROVIDER_SG_GOVERNMENT", + "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY", + "PROVIDER_MAPBAR", + "PROVIDER_LONGTU", + "PROVIDER_SA_GOVERNMENT", + "PROVIDER_SA_SAUDI_POST", + "PROVIDER_PEAKLIST", + "PROVIDER_LOCAL_BUSINESS_CENTER", + "PROVIDER_LOCAL_FEED_XML", + "PROVIDER_WEB", + "PROVIDER_RAILS_TO_TRAILS", + "PROVIDER_INDIACOM", + "PROVIDER_INFOMEDIA", + "PROVIDER_PICASA", + "PROVIDER_AT_GOVERNMENT", + "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN", + "PROVIDER_AT_NATIONAL_TOURIST_OFFICE", + "PROVIDER_AT_AUSTRIA_POST", + "PROVIDER_NO_GOVERNMENT", + "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON", + "PROVIDER_NO_POSTEN_NORGE_AS", + "PROVIDER_CH_GOVERNMENT", + "PROVIDER_CH_SWISS_POST", + "PROVIDER_CH_SWISSTOPO", + "PROVIDER_CH_SWISS_NATIONAL_PARK", + "PROVIDER_NAVIT", + "PROVIDER_GEOSEARCH", + "PROVIDER_DE_GOVERNMENT", + "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE", + "PROVIDER_BUNDESNETZAGENTUR", + "PROVIDER_SCHOBER_GROUP", + "PROVIDER_MIREO", + "PROVIDER_PUBLIC_MUNICIPALITY", + "PROVIDER_US_PUBLIC_MUNICIPALITY", + "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS", + "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS", + "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO", + "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN", + "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY", + "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE", + "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO", + "PROVIDER_NZ_PUBLIC_MUNICIPALITY", + "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY", + "PROVIDER_PL_PUBLIC_MUNICIPALITY", + "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA", + "PROVIDER_DE_PUBLIC_MUNICIPALITY", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE", + "PROVIDER_PT_PUBLIC_MUNICIPALITY", + "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ", + "PROVIDER_AT_PUBLIC_MUNICIPALITY", + "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT", + "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ", + "PROVIDER_ES_PUBLIC_MUNICIPALITY", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA", + "PROVIDER_AU_PUBLIC_MUNICIPALITY", + "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA", + "PROVIDER_IS_PUBLIC_MUNICIPALITY", + "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK", + "PROVIDER_NL_PUBLIC_MUNICIPALITY", + "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN", + "PROVIDER_BE_PUBLIC_MUNICIPALITY", + "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN", + "PROVIDER_CA_PUBLIC_MUNICIPALITY", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO", + "PROVIDER_SE_PUBLIC_MUNICIPALITY", + "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA", + "PROVIDER_UA_PUBLIC_MUNICIPALITY", + "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV", + "PROVIDER_OTHER_PUBLIC_MUNICIPALITY", + "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS", + "PROVIDER_FR_PUBLIC_MUNICIPALITY", + "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER", + "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX", + "PROVIDER_SG_PUBLIC_MUNICIPALITY", + "PROVIDER_BR_PUBLIC_MUNICIPALITY", + "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO", + "PROVIDER_MAPCUBE", + "PROVIDER_3D_REALITYMAPS", + "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT", + "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA", + "PROVIDER_DISNEY", + "PROVIDER_CYBERCITY", + "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS", + "PROVIDER_VIRTUAL_HUNGARY_LIMITED", + "PROVIDER_VIRTUEL_CITY", + "PROVIDER_SCREAMPOINT_INTERNATIONAL", + "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN", + "PROVIDER_FR_GOVERNMENT", + "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL", + "PROVIDER_FR_CADASTRE", + "PROVIDER_DIADIEM", + "PROVIDER_THE_WEATHER_CHANNEL", + "PROVIDER_COWI", + "PROVIDER_FALKPLAN_ANDES", + "PROVIDER_NL_GOVERNMENT", + "PROVIDER_NL_KADASTER", + "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS", + "PROVIDER_DIGITAL_MAP_PRODUCTS", + "PROVIDER_SILICE_DIGITAL", + "PROVIDER_TYDAC", + "PROVIDER_ALBRECHT_GOLF", + "PROVIDER_HEALTH_CH", + "PROVIDER_VISITDENMARK", + "PROVIDER_FLYHERE", + "PROVIDER_DIGITAL_DATA_SERVICES", + "PROVIDER_MECOMO", + "PROVIDER_ZA_GOVERNMENT", + "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM", + "PROVIDER_SENSIS", + "PROVIDER_JJCONNECT", + "PROVIDER_OPPLYSNINGEN", + "PROVIDER_TELLUS", + "PROVIDER_IQONIA", + "PROVIDER_BE_GOVERNMENT", + "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT", + "PROVIDER_BE_BRUSSELS_MOBILITY", + "PROVIDER_YELLOWMAP_AG", + "PROVIDER_STIFTUNG_GESUNDHEIT", + "PROVIDER_GIATA", + "PROVIDER_SANPARKS", + "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE", + "PROVIDER_INFOPORTUGAL", + "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO", + "PROVIDER_COLLINS_BARTHOLOMEW", + "PROVIDER_PROTECT_PLANET_OCEAN", + "PROVIDER_KARTTAKESKUS", + "PROVIDER_FI_GOVERNMENT", + "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION", + "PROVIDER_FI_NATIONAL_LAND_SURVEY", + "PROVIDER_FI_STATISTICS_FINLAND", + "PROVIDER_GB_GOVERNMENT", + "PROVIDER_GB_ORDNANCE_SURVEY", + "PROVIDER_NATURAL_ENGLAND", + "PROVIDER_WELSH_GOVERNMENT", + "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS", + "PROVIDER_EPSILON", + "PROVIDER_PARTNER_FRONT_END", + "PROVIDER_CARTESIA", + "PROVIDER_SE_GOVERNMENT", + "PROVIDER_SE_TRAFIKVERKET", + "PROVIDER_SE_NATURVARDSVERKET", + "PROVIDER_IE_GOVERNMENT", + "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND", + "PROVIDER_LU_GOVERNMENT", + "PROVIDER_LU_P_AND_T_LUXEMBOURG", + "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE", + "PROVIDER_LU_NATIONAL_TOURIST_OFFICE", + "PROVIDER_MAPFLOW", + "PROVIDER_TKARTOR", + "PROVIDER_JUMPSTART", + "PROVIDER_EPTISA", + "PROVIDER_MC_GOVERNMENT", + "PROVIDER_MC_PRINCIPAUTE_DE_MONACO", + "PROVIDER_MONOLIT", + "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE", + "PROVIDER_MODIS", + "PROVIDER_GEOX", + "PROVIDER_GEODIRECTORY", + "PROVIDER_GEOPLAN", + "PROVIDER_INFODIREKT", + "PROVIDER_GEOGLOBAL", + "PROVIDER_DEUTSCHE_POST", + "PROVIDER_TRACASA", + "PROVIDER_CORREOS", + "PROVIDER_ES_GOVERNMENT", + "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA", + "PROVIDER_EDIMAP", + "PROVIDER_VERIZON", + "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS", + "PROVIDER_PROMAPS", + "PROVIDER_CONSODATA", + "PROVIDER_DE_AGOSTINI", + "PROVIDER_FEDERPARCHI", + "PROVIDER_NAVIGO", + "PROVIDER_ITALIAMAPPE", + "PROVIDER_CZECOT", + "PROVIDER_NATURAL_EARTH", + "PROVIDER_REGIO", + "PROVIDER_SHIPWRECK_CENTRAL", + "PROVIDER_RUTGERS_STATE_UNIVERSITY", + "PROVIDER_TWINICE", + "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD", + "PROVIDER_INFOGROUP", + "PROVIDER_TNET", + "PROVIDER_CTT_CORREIOS_DE_PORTUGAL", + "PROVIDER_EUROPARC", + "PROVIDER_IUPPITER", + "PROVIDER_MICHAEL_BAUER_INTERNATIONAL", + "PROVIDER_LEPTON", + "PROVIDER_MAPPOINT", + "PROVIDER_GEODATA", + "PROVIDER_RU_GOVERNMENT", + "PROVIDER_RU_FNS_KLADR", + "PROVIDER_BR_GOVERNMENT", + "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATURAIS_RENOVAVEIS", + "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE", + "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS", + "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA", + "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO", + "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES", + "PROVIDER_AZAVEA", + "PROVIDER_NORTHSTAR", + "PROVIDER_COMMEDI", + "PROVIDER_NEXUS_GEOGRAFICS", + "PROVIDER_INFOERA", + "PROVIDER_AD_GOVERNMENT", + "PROVIDER_AD_AREA_DE_CARTOGRAFIA", + "PROVIDER_MAXXIMA", + "PROVIDER_SI_GOVERNMENT", + "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT", + "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS", + "PROVIDER_L1_TECHNOLOGIES", + "PROVIDER_TELEMEDIA", + "PROVIDER_CDCOM_PROGOROD", + "PROVIDER_MIT_CITYGUIDE", + "PROVIDER_SUNCART", + "PROVIDER_MICROMAPPER", + "PROVIDER_RICHI", + "PROVIDER_FORUM44", + "PROVIDER_SEAT", + "PROVIDER_VALASSIS", + "PROVIDER_NAVICOM", + "PROVIDER_COLTRACK", + "PROVIDER_PSMA_AUSTRALIA", + "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA", + "PROVIDER_CA_GOVERNMENT", + "PROVIDER_STATISTICS_CANADA", + "PROVIDER_TOCTOC", + "PROVIDER_RMSI", + "PROVIDER_TRUE_TECHNOLOGY", + "PROVIDER_INCREMENT_P_CORPORATION", + "PROVIDER_GOJAVAS", + "PROVIDER_GEOINFORMATION_GROUP", + "PROVIDER_CYBERSOFT", + "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY", + "PROVIDER_EE_GOVERNMENT", + "PROVIDER_EE_MAA_AMET", + "PROVIDER_GASBUDDY", + "PROVIDER_DK_GOVERNMENT", + "PROVIDER_DK_GEODATASTYRELSEN", + "PROVIDER_MURCIA_REGION_GOVERNMENT", + "PROVIDER_CORREIOS", + "PROVIDER_WEST_WORLD_MEDIA", + "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION", + "PROVIDER_MEDICARE", + "PROVIDER_POLARIS", + "PROVIDER_TW_GOVERNMENT", + "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER", + "PROVIDER_NORDECA", + "PROVIDER_AFRIMAPPING", + "PROVIDER_OVERDRIVE", + "PROVIDER_PROVIDER_NETWORK_DIRECTORIES", + "PROVIDER_BR_MINISTERIO_DA_SAUDE", + "PROVIDER_DIGITAL_EGYPT", + "PROVIDER_INRIX", + "PROVIDER_ARPINDO", + "PROVIDER_IT_GOVERNMENT", + "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE", + "PROVIDER_EAST_END_GROUP", + "PROVIDER_INGEOLAN", + "PROVIDER_SEMACONNECT", + "PROVIDER_BLINK", + "PROVIDER_EVGO", + "PROVIDER_CHARGEPOINT", + "PROVIDER_TPL_TRAKKER", + "PROVIDER_OI", + "PROVIDER_MAPARADAR", + "PROVIDER_SINGAPORE_POST", + "PROVIDER_CHARGEMASTER", + "PROVIDER_TESLA", + "PROVIDER_VISICOM", + "PROVIDER_GEOLYSIS", + "PROVIDER_ZEPHEIRA", + "PROVIDER_HUBJECT", + "PROVIDER_PODPOINT", + "PROVIDER_CHARGEFOX", + "PROVIDER_KR_GOVERNMENT", + "PROVIDER_KR_MOLIT", + "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY", + "PROVIDER_CRITCHLOW", + "PROVIDER_EIFRIG", + "PROVIDER_GIREVE", + "PROVIDER_CN_NAVINFO", + "PROVIDER_JAPAN_CHARGE_NETWORK", + "PROVIDER_NOBIL", + "PROVIDER_INDIA_BANKS", + "PROVIDER_INDONESIA_ELECTION_KPU", + "PROVIDER_CAREERS360", + "PROVIDER_SOURCE_LONDON", + "PROVIDER_EVBOX", + "PROVIDER_JP_GOVERNMENT", + "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT", + "PROVIDER_YUMYUM", + "PROVIDER_HWW_AUSTRALIA", + "PROVIDER_CINERGY", + "PROVIDER_MTIME", + "PROVIDER_KULTUNAUT", + "PROVIDER_BLITZ", + "PROVIDER_PIA", + "PROVIDER_INTERPARK", + "PROVIDER_CINEMA_ONLINE", + "PROVIDER_BELBIOS", + "PROVIDER_MOVIESEER", + "PROVIDER_SODAMEDYA", + "PROVIDER_ATMOVIES", + "PROVIDER_HOTELBEDS", + "PROVIDER_VERICRED", + "PROVIDER_CIRRANTIC", + "PROVIDER_GOGO_LABS", + "PROVIDER_ELECTRIFY_AMERICA", + "PROVIDER_CMS_MPPUF", + "PROVIDER_DIGIROAD", + "PROVIDER_KONTEX_GEOMATICS", + "PROVIDER_NZ_GOVERNMENT", + "PROVIDER_NZ_LINZ", + "PROVIDER_NZ_DOC", + "PROVIDER_FASTNED", + "PROVIDER_DESTINY_CS", + "PROVIDER_IONITY", + "PROVIDER_EV_CONNECT", + "PROVIDER_PANPAGES", + "PROVIDER_ETECNIC", + "PROVIDER_VOLTA", + "PROVIDER_NISSAN_MEXICO", + "PROVIDER_BMW_GROUP_LATIN_AMERICA", + "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO", + "PROVIDER_VOLVO_CARS_BRASIL", + "PROVIDER_CHARGE_AND_PARKING", + "PROVIDER_DEDUCE_TECHNOLOGIES", + "PROVIDER_SK_TELECOM", + "PROVIDER_ECO_MOVEMENT", + "PROVIDER_GOOGLE_GMS", + "PROVIDER_EASYWAY", + "PROVIDER_PHYSICIAN_COMPARE", + "PROVIDER_HOSPITAL_COMPARE", + "PROVIDER_ENDOLLA_BARCELONA", + "PROVIDER_BE_CHARGE", + "PROVIDER_ONE_NETWORK", + "PROVIDER_CARENAV_DUPLEX", + "PROVIDER_CARENAV_POI", + "PROVIDER_IN_GOVERNMENT", + "PROVIDER_SURVEY_OF_INDIA", + "PROVIDER_E_ON", + "PROVIDER_ELECTRIFY_CANADA", + "PROVIDER_GRIDCARS", + "PROVIDER_DRIVECO", + "PROVIDER_GREEN_ACTION_STUDIOS", + "PROVIDER_GREEN_ACTION_STUDIO", + "PROVIDER_EVINY", + "PROVIDER_MASTERCARD", + "PROVIDER_VATTENFALL" + ], + "enumDescriptions": [ + "ABSTRACT The root of all provider types. This should never be present on an actual feature, but can be useful when calling InCategory.", + "not actually a legal value, used as sentinel", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730AA", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is an internal *only* provider meant for sending wipeout requests to mapfacts.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Never rely on source infos with this provider to identify whether or not a feature is a Prominent Place! Instead, use the proper API, localsearch_clustering::QualityTierHelper::IsProminentPlace().", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "The next new \"Google\" provider entries should be placed above.", + "UMBRELLA", + "", + "", + "", + "This is a testing provider for teams that wish to integrate with components of the Geo Data Infrastructure that require a valid provider. No production data should ever be sent using this provider.", + "", + "UMBRELLA", + "", + "", + "", + "UMBRELLA", + "0x1117F must not be used, since its range extends the PROVIDER_GOOGLE hierarchy.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Deprecated in favor of PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and PROVIDER_GOOGLE_GEO_TIGER (for categories).", + "", + "0x1117FF should not be used, since its range further extends the PROVIDER_GOOGLE hierarchy. aka Local AI.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "No data is obtained from this provider. It is only used to identify features that must be served on MapMaker.", + "", + "", + "", + "", + "", + "", + "0x1117FFF should not be used, since its range further extends the PROVIDER_GOOGLE hierarchy. Synthetically generated areas (sublocalities/neighborhoods/ postal codes/etc) based on dropped terms from approximate geocoding. More info on go/syntheticareas.", + "", + "", + "", + "Similar to Google Transit, a provider that aggregates positions of bicycle rental points that we have agreements with to show on maps", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This range has been depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above.", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "Small Scale International Boundary Lines", + "", + "NOAA", + "PGC", + "USDA", + "National Provider Identifier Registry", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "old name for PROVIDER_NAVIGO", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "See b/33687395", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "ABSTRACT", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "IBAMA", + "MMA", + "ANA", + "IBGE", + "FUNAI", + "DNIT", + "", + "", + "", + "", + "", + "ABSTRACT", + "Department of Cartography", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "0x12 and 0x120 are not to be used. OOO CET", + "ABSTRACT", + "Estonian Land Board", + "", + "ABSTRACT", + "Danish Geodata Agency", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "Ministry of land, infrastructure and transport, 국토교통부, Guktogyotongbu", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION.", + "", + "ABSTRACT", + "Land Information New Zealand", + "NZ Department of Conservation", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Note: Next available value is 0x126C." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreIntersectionGroupProto": { + "description": "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.", + "id": "GeostoreIntersectionGroupProto", + "properties": { + "childGroup": { + "description": "All artifact intersection groups that are in this logical group.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "groupType": { + "enum": [ + "GROUP_ARTIFACT", + "GROUP_LOGICAL" + ], + "enumDescriptions": [ + "Groups intersections that bound segment artifacts of centerline digitization. These segment artifacts do not represent the geometry of actual vehicle travel through an intersection group. This grouping is typically in the core or shared area of an intersection where there are no lane markings (with the exception of raised reflective white dots demarkating multiple turn lanes through the real-world intersection). This is also the typical grouping used for modeling STYLE_IN_OUT turn restrictions.", + "Groups all intersections that form the logical connection of roads. Also known as a cross road intersection group. This group is usually larger than just the artifact grouping, since it includes external turn lanes and roundabout external bypasses." + ], + "type": "string" + }, + "intersection": { + "description": "The list of TYPE_INTERSECTION features that form this intersection group, but are NOT in any of this group's child groups. This could be an empty list, though that is sub-optimal. Even an empty list would allow the paint team to draw a label for a named intersection, but a non-empty list would, for example, enable PathFinder to generate better directions. Each of the TYPE_INTERSECTION feature referred here must refer back to this feature in its IntersectionProto.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "parentGroup": { + "$ref": "GeostoreFeatureIdProto", + "description": "Parent logical intersection group. An artifact group that does not have an associated parent logical group is assumed to be both an artifact and logical group." + } + }, + "type": "object" + }, + "GeostoreIntersectionProto": { + "description": "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.", + "id": "GeostoreIntersectionProto", + "properties": { + "intersectionGroup": { + "$ref": "GeostoreFeatureIdProto", + "description": "The artifact or logical intersection group to which this intersection belongs. If present, the intersection group must also refer back to the intersection. If an intersection is within both the artifact and logical group, then this reference should be to the artifact group." + }, + "outSegment": { + "description": "RESERVED", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "segment": { + "description": "The list of segments that terminate at this intersection, in any order. Note that all segments are directed towards the intersection, i.e. their endpoints indicate what sort of intersection this is. This should not be empty because an intersection with no associated segment is meaningless.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "tollClusterId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The toll cluster to which this intersection belongs. If present, the toll cluster must also refer back to the intersection." + } + }, + "type": "object" + }, + "GeostoreJobMetadata": { + "id": "GeostoreJobMetadata", + "properties": { + "duration": { + "description": "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.", + "format": "google-duration", + "type": "string" + }, + "jobRelatedCategories": { + "description": "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.", + "items": { + "$ref": "GeostoreJobRelatedCategory" + }, + "type": "array" + }, + "jobTypeId": { + "description": "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.", + "type": "string" + }, + "jobTypeMid": { + "description": "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\". ", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreJobRelatedCategory": { + "description": "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.", + "id": "GeostoreJobRelatedCategory", + "properties": { + "gcid": { + "type": "string" + }, + "language": { + "type": "string" + }, + "name": { + "description": "Category name in the primary language of the feature. Generally intended to be used as a fallback when we are unable to fetch the name in the user's language.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreKnowledgeGraphReferenceProto": { + "description": "The reference to an entity in the KnowledgeGraph. For details on the KnowledgeGraph see http://goto/kg.", + "id": "GeostoreKnowledgeGraphReferenceProto", + "properties": { + "id": { + "description": "KG Identifier (MID). For details, see http://go/ke-bg-knowledge-graph#mids.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreLandmarkReferenceProto": { + "description": "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).", + "id": "GeostoreLandmarkReferenceProto", + "properties": { + "featureType": { + "description": "The type of the landmark feature. Allowed types: - TYPE_CARTOGRAPHIC e.g. a putting green or water hazard - TYPE_COMPOUND e.g. - the Empire state building (TYPE_COMPOUND_BUILDING) - a park (TYPE_COMPOUND_GROUNDS) - a section of a retail store (TYPE_COMPOUND_SECTION) - TYPE_ESTABLISHMENT e.g. - the Eiffel Tower (TYPE_ESTABLISHMENT_BUILDING) - a sports field (TYPE_ESTABLISHMENT_GROUNDS) - Starbucks (TYPE_ESTABLISHMENT_POI) - TYPE_INTERSECTION_GROUP e.g. a major intersection - TYPE_NATURAL_FEATURE e.g. a river - TYPE_SEGMENT e.g. a bike trail or train tracks", + "format": "int32", + "type": "integer" + }, + "landmark": { + "$ref": "GeostoreFeatureIdProto", + "description": "The feature ID of the landmark feature." + }, + "travelMode": { + "description": "The mode(s) of travel for which this landmark is useful.", + "items": { + "enum": [ + "UNKNOWN", + "TRAVEL_MOTOR_VEHICLE", + "TRAVEL_AUTO", + "TRAVEL_TWO_WHEELER", + "TRAVEL_BICYCLE", + "TRAVEL_PEDESTRIAN" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreLaneMarkerProto": { + "description": "This proto contains attributes relevant to physical lane markers.", + "id": "GeostoreLaneMarkerProto", + "properties": { + "barrierMaterials": { + "$ref": "GeostoreBarrierLogicalMaterialProto", + "description": "If this is a physical barrier marker, represent materials found on the marker." + }, + "crossingPattern": { + "$ref": "GeostoreCrossingStripePatternProto", + "description": "Pattern border and color for crossing markers. These include crosswalks, stop, and yield lines." + }, + "linearPattern": { + "$ref": "GeostoreLinearStripePatternProto", + "description": "Stripe pattern, spacing, and color for longitudinal markers." + } + }, + "type": "object" + }, + "GeostoreLaneProto": { + "description": "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: https://docs.google.com/a/google.com/document/d/11XJ1WvqS5Sm7MxWXzzc3tnsk49VhrR3BYFjiRMAzYm0/edit?hl=en_US https://docs.google.com/a/google.com/document/d/1nzdupynTUKE8xY8JcfvQbU-KWtCJ6IwHiTaCxuq40EM/edit?hl=en_US Note: Some lane information (width, surface type, etc) may duplicate or contradict information stored at the segment level.", + "id": "GeostoreLaneProto", + "properties": { + "boundingMarker": { + "description": "References to any gcid:physical_lane_marker features that bound this lane.", + "items": { + "$ref": "GeostoreBoundingMarkerProto" + }, + "type": "array" + }, + "conjoinedCategory": { + "description": "If the current lane is part of a merge/split area, indicates the type (split or merge) and whether the current lane is on the left or right or in the middle of the merge/split area, as seen in the direction of traffic. See go/lane-split-merge-schema", + "enum": [ + "CONJOINED_NONE", + "CONJOINED_SPLIT_LEFT", + "CONJOINED_SPLIT_MIDDLE", + "CONJOINED_SPLIT_RIGHT", + "CONJOINED_MERGE_LEFT", + "CONJOINED_MERGE_MIDDLE", + "CONJOINED_MERGE_RIGHT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "distanceToNextLane": { + "description": "Gap between this lane and the next in meters. This is relevant when the divider is physical, or a wide painted area. For regular painted single or double lines, there is no gap. This distance is duplicated between the innermost lanes for each side. Note that this is not used to describe smallish islands - this is only for long-running gaps. In particular, this models the median width, the gap between HOV lanes/regular lanes on freeways, and the road verge between a curb and sidewalk. Note on split roads: We can model any split road with a median as a single sibling pair with this distance set to the width of the median, or as two one-way sibling pairs.", + "format": "float", + "type": "number" + }, + "flow": { + "$ref": "GeostoreFlowLineProto", + "description": "The most logical path for the center of an object to travel along within the lane. Typically, this is the lane's center line, but doesn't have to be." + }, + "laneConnection": { + "description": "Connections to lanes of other segments at the end of this segment. These connections model the connectivity where you don't have to do a lane change maneuver. If any lane connection is present, assume that all others are forbidden. Also note that segment level restrictions do apply if present, and can disallow some turn even if the lanes are connected. For instance, this can happen with timed or vehicle type based restrictions on the segment. If lane connectivity implies a segment-level restriction (can't transition to some target segment), that restriction will also exist as a segment level restriction. In effect - PathFinder does not have to look at lane connectivity to figure out segment connectivity. Example: Typically, lanes are just connected to one other lane. Example: A splitting lane is connected to the two resulting lanes. Example: At an intersection, a lane is connected to crossing lanes according to how lanes are painted across the intersection. In the common case, the target segment will be connected to the same intersection as this segment. That will however NOT be true for complex intersections where there is an intersection group. The connections will be across the whole group, connecting to one of the outgoing segments from the group. This is analogous to how we do turn restrictions around intersection groups.", + "items": { + "$ref": "GeostoreLaneProtoLaneConnection" + }, + "type": "array" + }, + "laneDividerCrossing": { + "description": "clang-format on Whether the divider to the inside of this lane can be crossed. Note that we assume this is symmetric, and that this also describes whether someone in the next inside lane can cross to this one. The \"inside\" lane is the one with a lower lane_number. Note on lane markers: We do not model the painting, but only the resulting legality. There are many painted marker styles and colors that lead to the same legality. We expect Paint or Driveabout to render lanes stylized, with solid meaning \"can't cross\", and dashed meaning \"can cross\". Note on varying legality along segment: ALLOWED takes precedence - even if some small portion has a restriction (such as right before an intersection) , the lane change will be ALLOWED.", + "enum": [ + "CROSSING_ALLOWED", + "CROSSING_DISALLOWED", + "CROSSING_LEGALLY_DISALLOWED", + "CROSSING_PHYSICALLY_IMPOSSIBLE" + ], + "enumDescriptions": [ + "Cross at will.", + "", + "This is usually some painted barrier", + "This is either a patch of dirt, or some barrier" + ], + "type": "string" + }, + "laneFollowsSegmentBeginFraction": { + "description": "These indicate for what portion of the segment the lane's flowline exactly follows the segment, and the lane is of constant width. This will be set to not include the whole segment where there is a split/turn/merge at either end of the lane. The painting of the lane should completely synthesize the lane geometry outside of this portion, connecting it to neighboring lanes to make graphical nice.", + "format": "float", + "type": "number" + }, + "laneFollowsSegmentEndFraction": { + "format": "float", + "type": "number" + }, + "laneNumber": { + "description": "Lanes are numbered from inside of the road outward, i.e. the lane next to the center line is lane 0. The lanes then stack outwards, towards the side that one drives on this segment (right or left). NOTE: do NOT use the lane_number as index for lookup. Lane_number is not guaranteed to match the segment.lane repeated field index.", + "format": "int32", + "type": "integer" + }, + "laneToken": { + "description": "A token that can be used to identify the version of the data about this lane.", + "type": "string" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this lane." + }, + "restriction": { + "description": "Restrictions that apply to this lane only. Examples include HOV lanes. If a lane restriction implies a segment-level restriction (can't route on the segment at all), that restriction will also exist as a segment level restriction. In effect - PathFinder does not have to look at lane restrictions to figure out segment restrictions.", + "items": { + "$ref": "GeostoreRestrictionProto" + }, + "type": "array" + }, + "shared": { + "description": "True if this lane is usable in both directions (left-turn lane, reversing lane, one-lane road, etc). To get the total number of lanes for a road, add up the lanes in each direction counting 0.5 for each shared lane.", + "type": "boolean" + }, + "stopLine": { + "description": "References to any gcid:physical_lane_marker features that intersect this lane, with the implication that a moving vehicle should stop there.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "surface": { + "description": "clang-format on LINT.ThenChange(//depot/google3/geostore/base/proto/segment.proto) Unlike the surface in SegmentProto, this field does not have a default value. This is because the lane-level surface overrides the segment-level surface. The lane's surface should be unset unless explicitly overriding the segment's surface.", + "enum": [ + "SURFACE_UNKNOWN", + "SURFACE_PAVED", + "SURFACE_ASPHALT", + "SURFACE_CONCRETE", + "SURFACE_CHIPSEAL", + "SURFACE_BRICK", + "SURFACE_SETT", + "SURFACE_COBBLESTONE", + "SURFACE_UNPAVED", + "SURFACE_GRAVEL", + "SURFACE_DIRT", + "SURFACE_SAND" + ], + "enumDescriptions": [ + "RESERVED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": { + "description": "clang-format on", + "enum": [ + "TYPE_UNKNOWN", + "TYPE_NORMAL", + "TYPE_PASSING", + "TYPE_LEFT_TURN", + "TYPE_LEFT_TURN_OFF", + "TYPE_LEFT_TURN_ON_OFF", + "TYPE_RIGHT_TURN", + "TYPE_RIGHT_TURN_OFF", + "TYPE_RIGHT_TURN_ON_OFF", + "TYPE_BICYCLE", + "TYPE_PARKING", + "TYPE_PARKING_IMPLIED", + "TYPE_PARKING_MARKED", + "TYPE_EXIT_ENTRANCE", + "TYPE_EXIT_LANE", + "TYPE_ENTRANCE_LANE", + "TYPE_PEDESTRIAN", + "TYPE_SIDEWALK_SHOULDER", + "TYPE_VEHICLE_SHOULDER", + "TYPE_OFFSET" + ], + "enumDescriptions": [ + "", + "", + "These are usually shared lanes, usable for passing by either direction.", + "", + "Typical left turn at intersection.", + "Lane used both for cars turning left to a side street, and for cars from side streets turning left onto the larger road.", + "", + "Typical right turn at intersection.", + "Lane used both for cars turning right to a side street, and for cars from side streets turning right onto the larger road (in left-side driving countries).", + "", + "", + "This lane represents the common case of parking along the curb. It is generally not a drivable lane.", + "Parking with marked stalls.", + "Lanes that are temporary, for acceleration/deceleration, or that will split off.", + "A lane that is used for exiting the core road.", + "An acceleration/merging lane.", + "A bidirectional walking lane, such as a sidewalk. The walking lane is implied to be on the side of the road as specified by the segment's \"on_right\" flag. The pedestrian lane should therefore be on the outside of a road's traffic lanes. Presence of a pedestrian lane implies that we have a sidewalk or other facility away from the road surface where pedestrians walk. If a road does not have a pedestrian lane, this means there is no space or facility for pedestrians to walk, or that pedestrians walk on the wide shoulder. The pedestrian lane, width, and distance_to_next_lane controls where Pathfinder draws the pedestrian polyline. As described in go/hdwalking++, the polyline is computed as (pl = pedestrian lane, s = segment): offset = s.distance_to_edge + pl.distance_to_next_lane + pl.width / 2", + "A special shoulder lane present on narrow roads in Japan that may double as a sidewalk. This isn’t a subset of TYPE_PEDESTRIAN since it may have either uses and is not separated by a curb.", + "Represents a lane that is wide enough to park or drive slowly on and is physically accessible from the main roadway. This is part of road surface that’s not used for normal flow of traffic but can be used for emergency purposes, such as emergency stopping and parking or by emergency vehicles. These are often known as emergency use lanes. This should generally be either first or last lane on the road (not counting pedestrian lanes if present). NOTE: In may cases, this may be colloquially called a “shoulder”, but road shoulders may include other areas that are not readily accessible, especially at speed.", + "This represents an “offset” lane that doesn’t really carry useful semantics but can be used to fill in “gaps” between the sum total of lane widths and the road as represented by distance_to_edge." + ], + "type": "string" + }, + "width": { + "description": "Width of this lane in meters. In many cases, we will collect this data by dividing the total road width by the number of lanes. On accuracy: This is a rough average width along this segment. If and when we wanted to be more accurate, we'd extend this schema to have full polygons for segments/lanes rather than just this average width.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GeostoreLaneProtoLaneConnection": { + "id": "GeostoreLaneProtoLaneConnection", + "properties": { + "boundingMarker": { + "description": "References to any gcid:physical_lane_marker features that bound this lane connection.", + "items": { + "$ref": "GeostoreBoundingMarkerProto" + }, + "type": "array" + }, + "connectionToken": { + "description": "A token that can be used to identify the version of the data about this lane connection.", + "type": "string" + }, + "curve": { + "$ref": "GeostoreCurveConnectionProto", + "description": "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": { + "$ref": "GeostoreFlowLineProto", + "description": "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": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "primaryConnection": { + "description": "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.", + "type": "boolean" + }, + "segment": { + "$ref": "GeostoreFeatureIdProto", + "description": "This reference to the other segment is weak, since strong would blow up bounds of all segments." + } + }, + "type": "object" + }, + "GeostoreLanguageTaggedTextProto": { + "description": "Represents a piece of text with an associated language.", + "id": "GeostoreLanguageTaggedTextProto", + "properties": { + "language": { + "description": "The external form of a Google International Identifiers Initiative (III) LanguageCode object. See google3/i18n/identifiers/languagecode.h for details. We place extra restrictions on languages in addition to what the III library requires. See http://go/geo-schema-reference/feature-properties/languages.md", + "type": "string" + }, + "text": { + "description": "The text (UTF-8 encoding).", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreLevelProto": { + "description": "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.", + "id": "GeostoreLevelProto", + "properties": { + "building": { + "description": "The building(s) to which this level belongs. A level will typically belong to a single building, but it is valid for a single level to be shared by multiple buildings (for example, a large underground parking lot). These buildings refer back to the level via another strong reference (the BuildingProto.level field).", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "number": { + "description": "The elevation of this level relative to the ground level, in levels. 0 = ground floor (even in locales that call the ground floor \"1st floor\"); 0.5 = between ground and first floor, eg mezzanine; 1 = first floor (one level above ground floor); -3 = three levels below ground floor.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GeostoreLinearStripePatternProto": { + "id": "GeostoreLinearStripePatternProto", + "properties": { + "line": { + "description": "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.", + "items": { + "$ref": "GeostorePhysicalLineProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreLocaleLanguageProto": { + "description": "This message describes the details of a single language within a locale.", + "id": "GeostoreLocaleLanguageProto", + "properties": { + "language": { + "description": "The language associated with this preference. The external form of a Google International Identifiers Initiative (III) LanguageCode object. See google3/i18n/identifiers/languagecode.h for details. We place extra restrictions on languages in addition to what the III library requires. See http://go/geo-schema-reference/feature-properties/languages.md", + "type": "string" + }, + "official": { + "description": "Flag to indicate if the associated language is \"official\" within a locale.", + "type": "boolean" + }, + "preference": { + "description": "This value represents the preference of the associated language within a locale. It must be between 0.0 and 1.0.", + "format": "float", + "type": "number" + }, + "speakingPercent": { + "description": "Percentage of population that can speak the associated language within a locale. It must be between 0 and 100.", + "format": "float", + "type": "number" + }, + "writingPercent": { + "description": "Percentage of population that can write the associated language within a locale. It must be between 0 and 100.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GeostoreLocaleProto": { + "description": "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.", + "id": "GeostoreLocaleProto", + "properties": { + "language": { + "description": "This holds the list of languages spoken within a locale.", + "items": { + "$ref": "GeostoreLocaleLanguageProto" + }, + "type": "array" + }, + "localizationPolicyId": { + "description": "The ID of the localization policy (from googledata/geostore/localization/localization_policies.textpb) to apply to features that have this locale as their best match locale. Localization policy IDs are arbitrary identifiers that uniquely distinguish a set of language-selection rules.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreLogicalBorderProto": { + "description": "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)\").", + "id": "GeostoreLogicalBorderProto", + "properties": { + "borderSegment": { + "description": "All the border segments which make up this logical border. Border segments must be TYPE_BORDER features which have the same left/right features. This is a many-to-many bidirectional relationship, so any border segment within this list might be part of another logical border.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "status": { + "description": "The logical border status identifies its legal status. This is similar to the BorderStatus present within border segments, but applies to the group as a whole.", + "enum": [ + "STATUS_UNSPECIFIED", + "STATUS_NORMAL", + "STATUS_DISPUTED" + ], + "enumDescriptions": [ + "The logical border is neither entirely composed of either normal nor disputed border segments. There are no guarantees about the BorderStatus of its border segments.", + "This status should be used when both parties agree on the location of the border. These might be called \"de jure\" borders. Most borders will have this status. This status requires that all border segments that make up this logical border have normal border segments.", + "This status should be used when the two parties disagree on the location of the border. This status requires that all border segments are themselves disputed." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreMediaItemProto": { + "description": "Media item attached to an element of price list.", + "id": "GeostoreMediaItemProto", + "properties": { + "googleUrl": { + "description": "The FIFE url associated with the media. NOTE: This FIFE URL must be PII-free, see go/product-catalogue-photo-storage", + "type": "string" + }, + "mediaFormat": { + "enum": [ + "MEDIA_FORMAT_UNSPECIFIED", + "MEDIA_FORMAT_PHOTO" + ], + "enumDescriptions": [ + "Format unspecified.", + "Media item is a photo." + ], + "type": "string" + }, + "mediaKey": { + "description": "The mediaKey associated with the media. NOTE: This media key must be PII-free, see go/product-catalogue-photo-storage", + "type": "string" + }, + "mediaSize": { + "$ref": "GeostoreMediaItemProtoMediaSize" + } + }, + "type": "object" + }, + "GeostoreMediaItemProtoMediaSize": { + "description": "Width and height of the original photo in pixels.", + "id": "GeostoreMediaItemProtoMediaSize", + "properties": { + "originalHeightPx": { + "format": "int32", + "type": "integer" + }, + "originalWidthPx": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostoreNameProto": { + "description": "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.", + "id": "GeostoreNameProto", + "properties": { + "flag": { + "description": "clang-format on The set of flags that apply to this name.", + "items": { + "enum": [ + "FLAG_ANY", + "FLAG_IN_LOCAL_LANGUAGE", + "FLAG_PREFERRED", + "FLAG_OFFICIAL", + "FLAG_OBSCURE", + "FLAG_ON_SIGNS", + "FLAG_EXIT_NAME_NUMBER", + "FLAG_EXIT_NAME", + "FLAG_INTERCHANGE_NAME", + "FLAG_EXIT_NUMBER", + "FLAG_INTERCHANGE_NUMBER", + "FLAG_TRANSIT_HEADSIGN", + "FLAG_CONNECTS_DIRECTLY", + "FLAG_CONNECTS_INDIRECTLY", + "FLAG_INTERSECTION_NAME", + "FLAG_VANITY", + "FLAG_ROUTE_NUMBER", + "FLAG_COUNTRY_CODE_2", + "FLAG_ABBREVIATED", + "FLAG_ID", + "FLAG_DESIGNATED_MARKET_AREA_ID", + "FLAG_IATA_ID", + "FLAG_ICAO_ID", + "FLAG_ISO_3166_2", + "FLAG_COUNTRY_SPECIFIC_ID", + "FLAG_LANGUAGE_CODE", + "FLAG_TIMEZONE_ID", + "FLAG_PHONE_NUMBER_PREFIX", + "FLAG_PHONE_NUMBER_AREA_CODE", + "FLAG_TRANSLITERATED", + "FLAG_NOT_ON_SIGNS", + "FLAG_NOT_IN_LOCAL_LANGUAGE", + "FLAG_ROUNDABOUT_ROUTE", + "FLAG_NEVER_DISPLAY", + "FLAG_BICYCLE_ROUTE", + "FLAG_MACHINE_GENERATED", + "FLAG_SUSPICIOUS" + ], + "enumDescriptions": [ + "ABSTRACT", + "This name is in one of the local languages. A local language is one readable by local people, where all language/script/region subtags in the language field are local. E.g. \"ru\" is local in Russia, but \"ru-Latn\" (transliterated in Latin script) is not local. This is the opposite of FLAG_NOT_IN_LOCAL_LANGUAGE. In general, a given name should have either FLAG_IN_LOCAL_LANGUAGE or FLAG_NOT_IN_LOCAL_LANGUAGE specified. Importers that are unsure should not set either flag. It doesn't make sense to set this flag unless you also specify a language. NOTE: unlike most other flags in this enumeration, this flag has to do with the language field, NOT to the text (and {raw,short}_text fields).", + "This is the most commonly recognized name for this feature (for a given language, when languages apply). This flag is not compatible with the following flags: - FLAG_NEVER_DISPLAY - FLAG_OBSCURE", + "This name is officially recognized by the government. This flag is not compatible with FLAG_SUSPICIOUS.", + "This name is not commonly known. This flag is used on names that are not commonly known, or not \"standard\", but which we wish to have so clients can search on them. An example would be \"Philly\" instead of \"Philadelphia\".", + "ABSTRACT", + "This name is an exit name/number found on signs.", + "This flag is used to differentiate exit names from exit numbers on signs that have both.", + "The highway sign is labeling a highway interchange instead of an exit. In several European countries interchanges are differentiated from highway exits.", + "This flag is used to differentiate exit numbers from exit names on signs that have both. This flag is not compatible with FLAG_ROUTE_NUMBER.", + "The highway sign is labeling a highway interchange the same manner as FLAG_INTERCHANGE_NAME.", + "The headsign of a transit vehicle, often the name of the destination.", + "The road sign target is directly connected (e.g., at end of ramp).", + "The road sign target is not directly connected (e.g., must travel some additional distance).", + "This name is an intersection name found on signs. Usually we can just use the name of a TYPE_INTERSECTION_GROUP feature. However, there are road signs on some intersections in Japan, especially in Hokkaido region where the intersection name is considered \"directional\" (i.e. an intersection could have multiple names depending on directions drivers or pedestrians approach from). Many people think of them as \"intersection names\", but that's not really what they are. We want to model them as road signs, because that's really what they are. This flag is supposed to be used by Pathfinder to generate the appropriate maneuver texts where such a named intersection is involved.", + "This is a vanity name (usually an alternate name for a section of road in honor of some person).", + "This name is a route number from an official numbering system for highways or similar routes (like bicycle routes). Street names (even numbered ones like in Manhattan) are excluded. The name (both text and short_text) should follow a strictly-defined format determined by the official numbering system. Route numbers may be assigned to segments on city streets as well as highways. (US-101 passing through San Francisco is an example that has both.) Historic route names that are no longer part of an official numbering system (like the former US-66) are not route numbers. This flag is not compatible with FLAG_EXIT_NUMBER.", + "This name is a two-letter ISO 3166-1 country code. It has code 0x81 instead of 0x8 for historical reasons (FLAG_COUNTRY_CODE and FLAG_COUNTRY_CODE_3 were removed in the belief that we only want one way to represent a country code in the Geo Schema).", + "An abbreviated version of the name, for example \"CA\" for California. This flag should be used for postal abbreviations that one would expect to see in an address. It should also be used for names where one of the component words is abbreviated (e.g. \"Mass.\" for Massachusetts, \"NWFP\" for the North-West Frontier Province in Pakistan, or \"L\" for the Lobby level in a building). Shortened forms of names (e.g. \"Kingston\" rather than \"Kingston-upon-Hull\") should be marked obscure rather than abbreviated. This flag should be used for names that are feature specific abbreviations. For shortened name versions based on regular, per-term transformations (ex: '1st Street' -\u003e '1st St'), use the short_text field instead.", + "ABSTRACT", + "This name is a Designated Market Area ID number (ex: 501)", + "This name is a three-letter IATA airport code (ex SFO, ZRH).", + "This name is a four-letter ICAO airport code (ex KSFO, LSZH).", + "This name is the ISO 3166-2 country subdivision code.", + "This name is the country specific ID. For example, China government specifies an admin code for each administrative area (province, city and district).", + "This name is an IETF BCP 47 language code, for example \"fr-CA\". Previously used for names of locales. See locale.proto for new way of defining this information.", + "This name is a timezone identifier in the Olson database, for example \"Europe/Zurich\". All timezones have an Olson identifier, understood by POSIX and Google's i18n/identifiers libraries. This flag applies only to features of TYPE_TIMEZONE type and at most one name should have this flag set", + "This name is the prefix for a phone number, starting with + and followed by a country code. This flag applies only to features of TYPE_PHONE_NUMBER_PREFIX type and at most one name should have this flag set.", + "This name is the commonly used name for the area code of a phone number, including the national prefix if applicable. This flag applies only to features of TYPE_PHONE_NUMBER_AREA_CODE type and at most one name should have this flag set.", + "The flag used to indicate the name was transliterated from some other character set. For example, this flag would be set on names transliterated from the Cyrillic or Greek alphabets to a Latin alphabet. The correct approach is to use the Google III language code to specify the appropriate language. For example, Greek transliterated into a Latin alphabet should have a language code of \"el-Latn\".", + "There are two kinds of street signs: \"location signs\" and \"guidance signs\". Location signs are the ones you see that tell you where you are. \"Ah, I'm on 85th Street and I'm crossing 6th Avenue.\" Guidance signs are the ones that give you hints about how to get where you want to go. \"Ah, I should go that way to get on I-5 to Seattle.\" This flag is talking about location signs. You'll find this flag on route names when then name is never posted on location signs. This flag is not compatible with flags in the FLAG_ON_SIGNS category.", + "This name is not in one of the local languages. A local language is one readable by local people, where all language/script/region subtags in the language field are local. E.g. \"ru\" is local in Russia, but \"ru-Latn\" (transliterated in Latin script) is not local. This is the opposite of FLAG_IN_LOCAL_LANGUAGE. In general, a given name should have either FLAG_IN_LOCAL_LANGUAGE or FLAG_NOT_IN_LOCAL_LANGUAGE specified. Importers that are unsure should not set either flag. It doesn't make sense to set this flag unless you also specify a language. NOTE: unlike most other flags in this enumeration, this flag has to do with the language field, NOT to the text (and {raw,short}_text fields).", + "This flag is set on routes attached to roundabout segments if and only if this name does not appear on any of the segments incident on the roundabout. This flag can be used by clients to determine which names on roundabouts are more useful than others when displaying to users.", + "Never display this name to a user. This flag is typically used for politically sensitive names such as \"Taiwan, Province of China\". Any feature which has a name with this flag should have another name without it so we have something to display to the user.", + "Routes with these names are common bicycle routes. This includes bicycle trails and routes along shared roadways to popular destinations for cyclists. Unnamed bicycle routes along named shared roadways should not have names of this type. This flag exists so that we can avoid showing bicycle route names in driving directions, while still showing them in bicycling directions.", + "This name is generated automatically by the transliteration pipeline based on an existing name in a different language. Contact Maps Translation team (go/maps-translation) for details.", + "This name may not be a correct name for a feature. It communicates to clients that the name may not be trustworthy. Examples are names of features that are too general (\"swimming pool\", \"hardware store\" etc) or those that incorrectly match names of prominent political features (businesses, transit stations etc named after sublocalities). This flag is not compatible with FLAG_OFFICIAL." + ], + "type": "string" + }, + "type": "array" + }, + "language": { + "description": "The external form of a Google International Identifiers Initiative (III) LanguageCode object. See google3/i18n/identifiers/languagecode.h for details. These strings should be treated as opaque blobs. You can use LanguageCodeConverter::FromOther to convert the string to a LanguageCode reference. You can then call methods on the LanguageCode class to extract language/script/region subtags (if any). See also http://g3doc/i18n/identifiers/g3doc/using-iii. We place extra restrictions on languages in addition to what the III library requires. See go/geo-schema-reference/feature-properties/languages. This field may be missing if the name does not have a concept of language but should be set if the language is unknown.", + "type": "string" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this name. NOTE: there are multiple NameProto fields in the Geo Schema. Metadata here is only expected to be present on FeatureProto.name[]." + }, + "rawText": { + "description": "** DEPRECATED ** The name text provided in the original source data (UTF-8 encoding). This is the text provided in the source data unmodified with the exception of being converted to UTF-8 and stripping extra leading, trailing and duplicate whitespaces (if necessary).", + "type": "string" + }, + "shortText": { + "description": "The short name text (UTF-8 encoding). Acronyms/abbreviations should be consistently used, for example \"NE 57th St\" rather than \"Northeast 57th Street\", \"N.E 57th St.\" or some other variant. This field should be populated with the chosen canonical version of the shortened name, based on per-term transformations. For feature specific abbreviations (such as 'CA' for 'California'), one should define a separate name with FLAG_ABBREVIATED set. For other variants of the shortened name that are not the canonical one, devise client based logic (ex: query rewriting rules).", + "type": "string" + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a name. Never set in MapFacts." + }, + "text": { + "description": "The name text (UTF-8 encoding). Acronyms/abbreviations should be fully expanded, for example \"Northeast 57th Street\" rather than \"NE 57th St\". They can be shortened at display or geocode time. This decision prevents ambiguity over such issues as whether \"St\" represents \"Street\" or \"Saint\". However, it pushes language-specific knowledge into code. We will have libraries and data files to contract acronyms/abbreviations at run-time.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreOntologyRawGConceptInstanceContainerProto": { + "description": "The container for all GConceptInstances associated with a feature.", + "id": "GeostoreOntologyRawGConceptInstanceContainerProto", + "properties": { + "instance": { + "items": { + "$ref": "GeostoreOntologyRawGConceptInstanceProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreOntologyRawGConceptInstanceProto": { + "description": "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.", + "id": "GeostoreOntologyRawGConceptInstanceProto", + "properties": { + "instance": { + "$ref": "GeostoreGConceptInstanceProto", + "description": "This is the 'public' section of the GConceptInstance." + }, + "isAddedByEdit": { + "description": "** DEPRECATED ** Was this GConcept explicitly added by an edit? Examples of gconcepts not added by edits include those inferred through geo ontology and those mapped from legacy category forms by the feature updater. Note that it is possible for both is_added_by_edit and is_inferred to be true - it means this gconcept is added by an edit and there is also another more fine-grained gconcept added by an edit.", + "type": "boolean" + }, + "isInferred": { + "description": "RESERVED", + "type": "boolean" + }, + "provider": { + "description": "** DEPRECATED ** These two fields combined describe the source of a GConceptInstance. They are based on geostore/base/proto/datasourceprovider.proto. Their use has been deprecated. Use the FieldMetadataProto inside instance instead.", + "enum": [ + "PROVIDER_ANY", + "PROVIDER_UNKNOWN", + "PROVIDER_NAVTEQ", + "PROVIDER_TELE_ATLAS", + "PROVIDER_TELE_ATLAS_MULTINET", + "PROVIDER_TELE_ATLAS_CODEPOINT", + "PROVIDER_TELE_ATLAS_GEOPOST", + "PROVIDER_TELE_ATLAS_DATAGEO", + "PROVIDER_TELE_ATLAS_ADDRESS_POINTS", + "PROVIDER_TELCONTAR", + "PROVIDER_EUROPA", + "PROVIDER_ROYAL_MAIL", + "PROVIDER_GOOGLE", + "PROVIDER_GOOGLE_HAND_EDIT", + "PROVIDER_GOOGLE_BORDERS", + "PROVIDER_GOOGLE_SUBRANGE", + "PROVIDER_GOOGLE_GT_FUSION", + "PROVIDER_GOOGLE_ZAGAT_CMS", + "PROVIDER_GOOGLE_PLACE_NAVBOOST", + "PROVIDER_GOOGLE_FOOTPRINT", + "PROVIDER_GOOGLE_PRODUCT_TERMS", + "PROVIDER_GOOGLE_POINTCARDS", + "PROVIDER_GOOGLE_BUSINESS_CHAINS", + "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION", + "PROVIDER_GOOGLE_PRONUNCIATIONS", + "PROVIDER_GOOGLE_DUMPLING", + "PROVIDER_GOOGLE_DISTILLERY", + "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION", + "PROVIDER_GOOGLE_RELATION_MINER", + "PROVIDER_GOOGLE_MAPSPAM", + "PROVIDER_GOOGLE_ROSE", + "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS", + "PROVIDER_GOOGLE_WIPEOUT", + "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH", + "PROVIDER_GOOGLE_BEEGEES", + "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION", + "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION", + "PROVIDER_GOOGLE_GEO_WORLDMAPS", + "PROVIDER_GOOGLE_GEO_MODERATION", + "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS", + "PROVIDER_GOOGLE_LOCAL_ALCHEMY", + "PROVIDER_GOOGLE_KEROUAC", + "PROVIDER_GOOGLE_MOBRANK", + "PROVIDER_GOOGLE_RAPTURE", + "PROVIDER_GOOGLE_CULTURAL_INSTITUTE", + "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS", + "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS", + "PROVIDER_GOOGLE_TACTILE_MAPS", + "PROVIDER_GOOGLE_MAPS_FOR_MOBILE", + "PROVIDER_GOOGLE_GEO_REALTIME", + "PROVIDER_GOOGLE_PROMINENT_PLACES", + "PROVIDER_GOOGLE_PLACE_ACTIONS", + "PROVIDER_GOOGLE_GT_AUTO_EDITS", + "PROVIDER_GOOGLE_WAZE", + "PROVIDER_GOOGLE_ONTHEGO", + "PROVIDER_GOOGLE_GT_IMPORT", + "PROVIDER_GOOGLE_STRUCTURED_DATA", + "PROVIDER_GOOGLE_HELICOPTER", + "PROVIDER_GOOGLE_ROLLBACK", + "PROVIDER_GOOGLE_RIGHTS_REPAIR", + "PROVIDER_GOOGLE_PERFUME", + "PROVIDER_GOOGLE_MAPS_TRANSLATION", + "PROVIDER_GOOGLE_CALL_ME_MAYBE", + "PROVIDER_GOOGLE_LOCAL_UNIVERSAL", + "PROVIDER_GOOGLE_CROUPIER", + "PROVIDER_GOOGLE_SKYSMART", + "PROVIDER_GOOGLE_RIDDLER", + "PROVIDER_GOOGLE_ROADCLOSURES", + "PROVIDER_GOOGLE_SPORE", + "PROVIDER_GOOGLE_LOCALIZATION", + "PROVIDER_GOOGLE_CATTERMS", + "PROVIDER_GOOGLE_GT_FIELD_OPS", + "PROVIDER_GOOGLE_MATCHMAKER", + "PROVIDER_GOOGLE_ARBITRATION", + "PROVIDER_GOOGLE_BIZBUILDER_OPS", + "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS", + "PROVIDER_GOOGLE_GT_DRAFTY", + "PROVIDER_GOOGLE_HOTELADS_OPS", + "PROVIDER_GOOGLE_MARKERS", + "PROVIDER_GOOGLE_STATE_MACHINE", + "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE", + "PROVIDER_GOOGLE_BIKESHARE", + "PROVIDER_GOOGLE_GHOSTWRITER", + "PROVIDER_GOOGLE_EDIT_PLATFORM", + "PROVIDER_GOOGLE_BLUE_GINGER", + "PROVIDER_GOOGLE_GEO_TIGER", + "PROVIDER_GOOGLE_HYADES", + "PROVIDER_GOOGLE_WEBQUARRY", + "PROVIDER_GOOGLE_GEO_MADDEN", + "PROVIDER_GOOGLE_ANDROID_PAY", + "PROVIDER_GOOGLE_OPENING_HOURS_TEAM", + "PROVIDER_GOOGLE_LOCAL_DISCOVERY", + "PROVIDER_GOOGLE_LOCAL_HEALTH", + "PROVIDER_GOOGLE_UGC_MAPS", + "PROVIDER_GOOGLE_FIBER", + "PROVIDER_GOOGLE_REVGEO", + "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END", + "PROVIDER_GOOGLE_GEO_UGC_TASKS", + "PROVIDER_GOOGLE_GEOCODING", + "PROVIDER_GOOGLE_SPYGLASS", + "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES", + "PROVIDER_GOOGLE_GEO_CHANGES", + "PROVIDER_GOOGLE_HUME", + "PROVIDER_GOOGLE_MEGAMIND", + "PROVIDER_GOOGLE_GT_ROADSYNTH", + "PROVIDER_GOOGLE_FIREBOLT", + "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS", + "PROVIDER_GOOGLE_UGC_SERVICES", + "PROVIDER_GOOGLE_GEOALIGN", + "PROVIDER_GOOGLE_GT_COMPOUNDS", + "PROVIDER_GOOGLE_FOOD_ORDERING", + "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS", + "PROVIDER_GOOGLE_URAW", + "PROVIDER_GOOGLE_FLYEYE", + "PROVIDER_GOOGLE_YOUKE", + "PROVIDER_GOOGLE_GT_ZEPHYR", + "PROVIDER_GOOGLE_USER_SAFETY", + "PROVIDER_GOOGLE_ADDRESS_MAKER", + "PROVIDER_GOOGLE_UGC_PHOTOS", + "PROVIDER_GOOGLE_GT_WINDCHIME", + "PROVIDER_GOOGLE_SNAG_FIXER", + "PROVIDER_GOOGLE_GEO_DEALS", + "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS", + "PROVIDER_GOOGLE_PROPERTY_INSIGHTS", + "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS", + "PROVIDER_GOOGLE_GEO_PORTKEY", + "PROVIDER_GOOGLE_ROAD_MAPPER", + "PROVIDER_GOOGLE_LOCATION_PLATFORM", + "PROVIDER_GOOGLE_POSTTRIP", + "PROVIDER_GOOGLE_TRAVEL_DESTINATION", + "PROVIDER_GOOGLE_GEO_DATA_UPLOAD", + "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP", + "PROVIDER_GOOGLE_USER", + "PROVIDER_GOOGLE_STATION", + "PROVIDER_GOOGLE_GEO_FOOD", + "PROVIDER_GOOGLE_GEO_AR", + "PROVIDER_GOOGLE_GEO_TEMPORAL", + "PROVIDER_GOOGLE_SERVICES_MARKETPLACE", + "PROVIDER_GOOGLE_IMT_CLEANUP", + "PROVIDER_GOOGLE_GEO_FOOD_MENU", + "PROVIDER_GOOGLE_CARENAV", + "PROVIDER_GOOGLE_DRIVING_FEEDS", + "PROVIDER_GOOGLE_DRIVING_UGC", + "PROVIDER_GOOGLE_POLAR", + "PROVIDER_GOOGLE_TRIWILD", + "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS", + "PROVIDER_GOOGLE_SA_FROM_WEB", + "PROVIDER_GOOGLE_POI_ALIGNMENT", + "PROVIDER_GOOGLE_SA_FROM_HULK", + "PROVIDER_GOOGLE_SERVICES_INTERACTIONS", + "PROVIDER_GOOGLE_ROADS_UGC_EDITOR", + "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE", + "PROVIDER_GOOGLE_GEO_DRIVING_VIZ", + "PROVIDER_GOOGLE_GEO_TASKING", + "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE", + "PROVIDER_GOOGLE_CROWDTASK_TASKADS", + "PROVIDER_GOOGLE_CROWDTASK_TASKMATE", + "PROVIDER_GOOGLE_CROWDTASK_FURBALL", + "PROVIDER_GOOGLE_CROWDTASK_ADAP", + "PROVIDER_GOOGLE_GPAY", + "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS", + "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION", + "PROVIDER_GOOGLE_GEOTRACKER", + "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE", + "PROVIDER_GOOGLE_GEO_CLOSED_LOOP", + "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS", + "PROVIDER_GOOGLE_CORE_DATA_RIGHTS", + "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS", + "PROVIDER_GOOGLE_GEO_CONTENT_FIXER", + "PROVIDER_GOOGLE_POLYGON_REFINEMENT", + "PROVIDER_GOOGLE_HANASU", + "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD", + "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD", + "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD", + "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS", + "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS", + "PROVIDER_GOOGLE_SA_QUALITY", + "PROVIDER_GOOGLE_GDCE_CLEANUP", + "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS", + "PROVIDER_GOOGLE_LOCALSEARCH", + "PROVIDER_GOOGLE_TRANSIT", + "PROVIDER_GOOGLE_GEOWIKI", + "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM", + "PROVIDER_GOOGLE_SYNTHESIZED", + "PROVIDER_GOOGLE_INTERNAL_TEST", + "PROVIDER_GOOGLE_DISPUTED_AREAS", + "PROVIDER_GOOGLE_3DWAREHOUSE", + "PROVIDER_GOOGLE_GROUNDS_BUILDER", + "PROVIDER_GOOGLE_SESAME", + "PROVIDER_GOOGLE_GT", + "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD", + "PROVIDER_GOOGLE_ADSDB", + "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION", + "PROVIDER_GOOGLE_TRAVELSEARCH", + "PROVIDER_GOOGLE_PANORAMIO", + "PROVIDER_GOOGLE_YOUTUBE", + "PROVIDER_GOOGLE_OLD", + "PROVIDER_GOOGLE_STREETVIEW", + "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW", + "PROVIDER_GOOGLE_ZIPIT", + "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES", + "PROVIDER_GOOGLE_GOLDEN", + "PROVIDER_GOOGLE_INNERSPACE", + "PROVIDER_GOOGLE_MAPSEARCH", + "PROVIDER_GOOGLE_CATEGORIES_TEAM", + "PROVIDER_GOOGLE_CROWDSENSUS", + "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY", + "PROVIDER_GOOGLE_FREEBASE", + "PROVIDER_GOOGLE_HOTELADS", + "PROVIDER_GOOGLE_AUTHORITY_PAGES", + "PROVIDER_GOOGLE_PLACES_API", + "PROVIDER_GOOGLE_NAMEHEATMAP", + "PROVIDER_GOOGLE_MAPMAKER", + "PROVIDER_GOOGLE_MAPMAKER_MOBILE", + "PROVIDER_GOOGLE_MAPMAKER_PANCAKE", + "PROVIDER_GOOGLE_MAPMAKER_V2", + "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE", + "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER", + "PROVIDER_GOOGLE_GT_LOCAL", + "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS", + "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS", + "PROVIDER_GOOGLE_ENTITY_NAVBOOST", + "PROVIDER_GOOGLE_RELATED_PLACES", + "PROVIDER_GOOGLE_KNOWN_FOR_TERMS", + "PROVIDER_GOOGLE_SYNTHETIC_AREAS", + "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS", + "PROVIDER_GOOGLE_CROSS_STREETS", + "PROVIDER_GOOGLE_CORRIDORS", + "PROVIDER_GOOGLE_BICYCLE_RENTAL", + "PROVIDER_GOOGLE_CONCRETE_URLS", + "PROVIDER_GOOGLE_LEANBACK", + "PROVIDER_GOOGLE_LOCKED_LISTINGS", + "PROVIDER_GOOGLE_MONITORING", + "PROVIDER_GOOGLE_SPROUT", + "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY", + "PROVIDER_GOOGLE_GOBY", + "PROVIDER_GOOGLE_PROBLEM_REPORT", + "PROVIDER_GOOGLE_CANDID", + "PROVIDER_GOOGLE_BIZBUILDER", + "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA", + "PROVIDER_MAPDATA_SCIENCES", + "PROVIDER_MAPONICS", + "PROVIDER_SKI_RESORTS", + "PROVIDER_ZENRIN", + "PROVIDER_SANBORN", + "PROVIDER_URBAN_MAPPING", + "PROVIDER_US_GOVERNMENT", + "PROVIDER_US_CENSUS", + "PROVIDER_US_POSTAL_SERVICE", + "PROVIDER_US_GEOLOGICAL_SURVEY", + "PROVIDER_US_GNIS", + "PROVIDER_US_LANDSAT", + "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY", + "PROVIDER_US_NGA_GNS", + "PROVIDER_US_SSIBL", + "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS", + "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION", + "PROVIDER_US_POLAR_GEOSPATIAL_CENTER", + "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE", + "PROVIDER_US_NPI_REGISTRY", + "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS", + "PROVIDER_DMTI_SPATIAL", + "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION", + "PROVIDER_MAPLINK", + "PROVIDER_KINGWAY", + "PROVIDER_GEOCENTRE", + "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS", + "PROVIDER_CN_MAPABC", + "PROVIDER_SMITHSONIAN_INSTITUTE", + "PROVIDER_TRACKS_FOR_AFRICA", + "PROVIDER_PPWK", + "PROVIDER_LEADDOG", + "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG", + "PROVIDER_GISRAEL", + "PROVIDER_BASARSOFT", + "PROVIDER_MAPINFO", + "PROVIDER_MAPIT", + "PROVIDER_GEOBASE", + "PROVIDER_ORION", + "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY", + "PROVIDER_ANASAT", + "PROVIDER_MINED_POSTCODES", + "PROVIDER_DMAPAS", + "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY", + "PROVIDER_CH_SBB", + "PROVIDER_SKENERGY", + "PROVIDER_GBRMPA", + "PROVIDER_KOREA_POST", + "PROVIDER_CN_AUTONAVI", + "PROVIDER_MINED_POI", + "PROVIDER_ML_INFOMAP", + "PROVIDER_SNOOPER", + "PROVIDER_GEOSISTEMAS", + "PROVIDER_AFRIGIS", + "PROVIDER_TRANSNAVICOM", + "PROVIDER_EASYCONNECT", + "PROVIDER_LANTMATERIET", + "PROVIDER_LOGICA", + "PROVIDER_MAPKING", + "PROVIDER_DIANPING", + "PROVIDER_GEONAV", + "PROVIDER_HEIBONSHA", + "PROVIDER_DEUTSCHE_TELEKOM", + "PROVIDER_LINGUISTIC_DATA_CONSORTIUM", + "PROVIDER_ACXIOM", + "PROVIDER_DUN_AND_BRADSTREET", + "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION", + "PROVIDER_INFOUSA", + "PROVIDER_INFOUSA_NIXIE", + "PROVIDER_THOMSON_LOCAL", + "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION", + "PROVIDER_WIKIPEDIA", + "PROVIDER_INFOBEL", + "PROVIDER_MX_GOVERNMENT", + "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY", + "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO", + "PROVIDER_TELEGATE", + "PROVIDER_TELELISTAS", + "PROVIDER_MAPCITY", + "PROVIDER_EXPLAINER_DC", + "PROVIDER_DAIKEI", + "PROVIDER_NL_CHAMBER_OF_COMMERCE", + "PROVIDER_KOREA_INFO_SERVICE", + "PROVIDER_WIKITRAVEL", + "PROVIDER_FLICKR", + "PROVIDER_DIANCO", + "PROVIDER_VOLT_DELTA", + "PROVIDER_SG_GOVERNMENT", + "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY", + "PROVIDER_MAPBAR", + "PROVIDER_LONGTU", + "PROVIDER_SA_GOVERNMENT", + "PROVIDER_SA_SAUDI_POST", + "PROVIDER_PEAKLIST", + "PROVIDER_LOCAL_BUSINESS_CENTER", + "PROVIDER_LOCAL_FEED_XML", + "PROVIDER_WEB", + "PROVIDER_RAILS_TO_TRAILS", + "PROVIDER_INDIACOM", + "PROVIDER_INFOMEDIA", + "PROVIDER_PICASA", + "PROVIDER_AT_GOVERNMENT", + "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN", + "PROVIDER_AT_NATIONAL_TOURIST_OFFICE", + "PROVIDER_AT_AUSTRIA_POST", + "PROVIDER_NO_GOVERNMENT", + "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON", + "PROVIDER_NO_POSTEN_NORGE_AS", + "PROVIDER_CH_GOVERNMENT", + "PROVIDER_CH_SWISS_POST", + "PROVIDER_CH_SWISSTOPO", + "PROVIDER_CH_SWISS_NATIONAL_PARK", + "PROVIDER_NAVIT", + "PROVIDER_GEOSEARCH", + "PROVIDER_DE_GOVERNMENT", + "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE", + "PROVIDER_BUNDESNETZAGENTUR", + "PROVIDER_SCHOBER_GROUP", + "PROVIDER_MIREO", + "PROVIDER_PUBLIC_MUNICIPALITY", + "PROVIDER_US_PUBLIC_MUNICIPALITY", + "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS", + "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS", + "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO", + "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN", + "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY", + "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE", + "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO", + "PROVIDER_NZ_PUBLIC_MUNICIPALITY", + "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY", + "PROVIDER_PL_PUBLIC_MUNICIPALITY", + "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA", + "PROVIDER_DE_PUBLIC_MUNICIPALITY", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE", + "PROVIDER_PT_PUBLIC_MUNICIPALITY", + "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ", + "PROVIDER_AT_PUBLIC_MUNICIPALITY", + "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT", + "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ", + "PROVIDER_ES_PUBLIC_MUNICIPALITY", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA", + "PROVIDER_AU_PUBLIC_MUNICIPALITY", + "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA", + "PROVIDER_IS_PUBLIC_MUNICIPALITY", + "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK", + "PROVIDER_NL_PUBLIC_MUNICIPALITY", + "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN", + "PROVIDER_BE_PUBLIC_MUNICIPALITY", + "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN", + "PROVIDER_CA_PUBLIC_MUNICIPALITY", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO", + "PROVIDER_SE_PUBLIC_MUNICIPALITY", + "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA", + "PROVIDER_UA_PUBLIC_MUNICIPALITY", + "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV", + "PROVIDER_OTHER_PUBLIC_MUNICIPALITY", + "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS", + "PROVIDER_FR_PUBLIC_MUNICIPALITY", + "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER", + "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX", + "PROVIDER_SG_PUBLIC_MUNICIPALITY", + "PROVIDER_BR_PUBLIC_MUNICIPALITY", + "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO", + "PROVIDER_MAPCUBE", + "PROVIDER_3D_REALITYMAPS", + "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT", + "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA", + "PROVIDER_DISNEY", + "PROVIDER_CYBERCITY", + "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS", + "PROVIDER_VIRTUAL_HUNGARY_LIMITED", + "PROVIDER_VIRTUEL_CITY", + "PROVIDER_SCREAMPOINT_INTERNATIONAL", + "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN", + "PROVIDER_FR_GOVERNMENT", + "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL", + "PROVIDER_FR_CADASTRE", + "PROVIDER_DIADIEM", + "PROVIDER_THE_WEATHER_CHANNEL", + "PROVIDER_COWI", + "PROVIDER_FALKPLAN_ANDES", + "PROVIDER_NL_GOVERNMENT", + "PROVIDER_NL_KADASTER", + "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS", + "PROVIDER_DIGITAL_MAP_PRODUCTS", + "PROVIDER_SILICE_DIGITAL", + "PROVIDER_TYDAC", + "PROVIDER_ALBRECHT_GOLF", + "PROVIDER_HEALTH_CH", + "PROVIDER_VISITDENMARK", + "PROVIDER_FLYHERE", + "PROVIDER_DIGITAL_DATA_SERVICES", + "PROVIDER_MECOMO", + "PROVIDER_ZA_GOVERNMENT", + "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM", + "PROVIDER_SENSIS", + "PROVIDER_JJCONNECT", + "PROVIDER_OPPLYSNINGEN", + "PROVIDER_TELLUS", + "PROVIDER_IQONIA", + "PROVIDER_BE_GOVERNMENT", + "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT", + "PROVIDER_BE_BRUSSELS_MOBILITY", + "PROVIDER_YELLOWMAP_AG", + "PROVIDER_STIFTUNG_GESUNDHEIT", + "PROVIDER_GIATA", + "PROVIDER_SANPARKS", + "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE", + "PROVIDER_INFOPORTUGAL", + "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO", + "PROVIDER_COLLINS_BARTHOLOMEW", + "PROVIDER_PROTECT_PLANET_OCEAN", + "PROVIDER_KARTTAKESKUS", + "PROVIDER_FI_GOVERNMENT", + "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION", + "PROVIDER_FI_NATIONAL_LAND_SURVEY", + "PROVIDER_FI_STATISTICS_FINLAND", + "PROVIDER_GB_GOVERNMENT", + "PROVIDER_GB_ORDNANCE_SURVEY", + "PROVIDER_NATURAL_ENGLAND", + "PROVIDER_WELSH_GOVERNMENT", + "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS", + "PROVIDER_EPSILON", + "PROVIDER_PARTNER_FRONT_END", + "PROVIDER_CARTESIA", + "PROVIDER_SE_GOVERNMENT", + "PROVIDER_SE_TRAFIKVERKET", + "PROVIDER_SE_NATURVARDSVERKET", + "PROVIDER_IE_GOVERNMENT", + "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND", + "PROVIDER_LU_GOVERNMENT", + "PROVIDER_LU_P_AND_T_LUXEMBOURG", + "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE", + "PROVIDER_LU_NATIONAL_TOURIST_OFFICE", + "PROVIDER_MAPFLOW", + "PROVIDER_TKARTOR", + "PROVIDER_JUMPSTART", + "PROVIDER_EPTISA", + "PROVIDER_MC_GOVERNMENT", + "PROVIDER_MC_PRINCIPAUTE_DE_MONACO", + "PROVIDER_MONOLIT", + "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE", + "PROVIDER_MODIS", + "PROVIDER_GEOX", + "PROVIDER_GEODIRECTORY", + "PROVIDER_GEOPLAN", + "PROVIDER_INFODIREKT", + "PROVIDER_GEOGLOBAL", + "PROVIDER_DEUTSCHE_POST", + "PROVIDER_TRACASA", + "PROVIDER_CORREOS", + "PROVIDER_ES_GOVERNMENT", + "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA", + "PROVIDER_EDIMAP", + "PROVIDER_VERIZON", + "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS", + "PROVIDER_PROMAPS", + "PROVIDER_CONSODATA", + "PROVIDER_DE_AGOSTINI", + "PROVIDER_FEDERPARCHI", + "PROVIDER_NAVIGO", + "PROVIDER_ITALIAMAPPE", + "PROVIDER_CZECOT", + "PROVIDER_NATURAL_EARTH", + "PROVIDER_REGIO", + "PROVIDER_SHIPWRECK_CENTRAL", + "PROVIDER_RUTGERS_STATE_UNIVERSITY", + "PROVIDER_TWINICE", + "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD", + "PROVIDER_INFOGROUP", + "PROVIDER_TNET", + "PROVIDER_CTT_CORREIOS_DE_PORTUGAL", + "PROVIDER_EUROPARC", + "PROVIDER_IUPPITER", + "PROVIDER_MICHAEL_BAUER_INTERNATIONAL", + "PROVIDER_LEPTON", + "PROVIDER_MAPPOINT", + "PROVIDER_GEODATA", + "PROVIDER_RU_GOVERNMENT", + "PROVIDER_RU_FNS_KLADR", + "PROVIDER_BR_GOVERNMENT", + "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATURAIS_RENOVAVEIS", + "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE", + "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS", + "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA", + "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO", + "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES", + "PROVIDER_AZAVEA", + "PROVIDER_NORTHSTAR", + "PROVIDER_COMMEDI", + "PROVIDER_NEXUS_GEOGRAFICS", + "PROVIDER_INFOERA", + "PROVIDER_AD_GOVERNMENT", + "PROVIDER_AD_AREA_DE_CARTOGRAFIA", + "PROVIDER_MAXXIMA", + "PROVIDER_SI_GOVERNMENT", + "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT", + "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS", + "PROVIDER_L1_TECHNOLOGIES", + "PROVIDER_TELEMEDIA", + "PROVIDER_CDCOM_PROGOROD", + "PROVIDER_MIT_CITYGUIDE", + "PROVIDER_SUNCART", + "PROVIDER_MICROMAPPER", + "PROVIDER_RICHI", + "PROVIDER_FORUM44", + "PROVIDER_SEAT", + "PROVIDER_VALASSIS", + "PROVIDER_NAVICOM", + "PROVIDER_COLTRACK", + "PROVIDER_PSMA_AUSTRALIA", + "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA", + "PROVIDER_CA_GOVERNMENT", + "PROVIDER_STATISTICS_CANADA", + "PROVIDER_TOCTOC", + "PROVIDER_RMSI", + "PROVIDER_TRUE_TECHNOLOGY", + "PROVIDER_INCREMENT_P_CORPORATION", + "PROVIDER_GOJAVAS", + "PROVIDER_GEOINFORMATION_GROUP", + "PROVIDER_CYBERSOFT", + "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY", + "PROVIDER_EE_GOVERNMENT", + "PROVIDER_EE_MAA_AMET", + "PROVIDER_GASBUDDY", + "PROVIDER_DK_GOVERNMENT", + "PROVIDER_DK_GEODATASTYRELSEN", + "PROVIDER_MURCIA_REGION_GOVERNMENT", + "PROVIDER_CORREIOS", + "PROVIDER_WEST_WORLD_MEDIA", + "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION", + "PROVIDER_MEDICARE", + "PROVIDER_POLARIS", + "PROVIDER_TW_GOVERNMENT", + "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER", + "PROVIDER_NORDECA", + "PROVIDER_AFRIMAPPING", + "PROVIDER_OVERDRIVE", + "PROVIDER_PROVIDER_NETWORK_DIRECTORIES", + "PROVIDER_BR_MINISTERIO_DA_SAUDE", + "PROVIDER_DIGITAL_EGYPT", + "PROVIDER_INRIX", + "PROVIDER_ARPINDO", + "PROVIDER_IT_GOVERNMENT", + "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE", + "PROVIDER_EAST_END_GROUP", + "PROVIDER_INGEOLAN", + "PROVIDER_SEMACONNECT", + "PROVIDER_BLINK", + "PROVIDER_EVGO", + "PROVIDER_CHARGEPOINT", + "PROVIDER_TPL_TRAKKER", + "PROVIDER_OI", + "PROVIDER_MAPARADAR", + "PROVIDER_SINGAPORE_POST", + "PROVIDER_CHARGEMASTER", + "PROVIDER_TESLA", + "PROVIDER_VISICOM", + "PROVIDER_GEOLYSIS", + "PROVIDER_ZEPHEIRA", + "PROVIDER_HUBJECT", + "PROVIDER_PODPOINT", + "PROVIDER_CHARGEFOX", + "PROVIDER_KR_GOVERNMENT", + "PROVIDER_KR_MOLIT", + "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY", + "PROVIDER_CRITCHLOW", + "PROVIDER_EIFRIG", + "PROVIDER_GIREVE", + "PROVIDER_CN_NAVINFO", + "PROVIDER_JAPAN_CHARGE_NETWORK", + "PROVIDER_NOBIL", + "PROVIDER_INDIA_BANKS", + "PROVIDER_INDONESIA_ELECTION_KPU", + "PROVIDER_CAREERS360", + "PROVIDER_SOURCE_LONDON", + "PROVIDER_EVBOX", + "PROVIDER_JP_GOVERNMENT", + "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT", + "PROVIDER_YUMYUM", + "PROVIDER_HWW_AUSTRALIA", + "PROVIDER_CINERGY", + "PROVIDER_MTIME", + "PROVIDER_KULTUNAUT", + "PROVIDER_BLITZ", + "PROVIDER_PIA", + "PROVIDER_INTERPARK", + "PROVIDER_CINEMA_ONLINE", + "PROVIDER_BELBIOS", + "PROVIDER_MOVIESEER", + "PROVIDER_SODAMEDYA", + "PROVIDER_ATMOVIES", + "PROVIDER_HOTELBEDS", + "PROVIDER_VERICRED", + "PROVIDER_CIRRANTIC", + "PROVIDER_GOGO_LABS", + "PROVIDER_ELECTRIFY_AMERICA", + "PROVIDER_CMS_MPPUF", + "PROVIDER_DIGIROAD", + "PROVIDER_KONTEX_GEOMATICS", + "PROVIDER_NZ_GOVERNMENT", + "PROVIDER_NZ_LINZ", + "PROVIDER_NZ_DOC", + "PROVIDER_FASTNED", + "PROVIDER_DESTINY_CS", + "PROVIDER_IONITY", + "PROVIDER_EV_CONNECT", + "PROVIDER_PANPAGES", + "PROVIDER_ETECNIC", + "PROVIDER_VOLTA", + "PROVIDER_NISSAN_MEXICO", + "PROVIDER_BMW_GROUP_LATIN_AMERICA", + "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO", + "PROVIDER_VOLVO_CARS_BRASIL", + "PROVIDER_CHARGE_AND_PARKING", + "PROVIDER_DEDUCE_TECHNOLOGIES", + "PROVIDER_SK_TELECOM", + "PROVIDER_ECO_MOVEMENT", + "PROVIDER_GOOGLE_GMS", + "PROVIDER_EASYWAY", + "PROVIDER_PHYSICIAN_COMPARE", + "PROVIDER_HOSPITAL_COMPARE", + "PROVIDER_ENDOLLA_BARCELONA", + "PROVIDER_BE_CHARGE", + "PROVIDER_ONE_NETWORK", + "PROVIDER_CARENAV_DUPLEX", + "PROVIDER_CARENAV_POI", + "PROVIDER_IN_GOVERNMENT", + "PROVIDER_SURVEY_OF_INDIA", + "PROVIDER_E_ON", + "PROVIDER_ELECTRIFY_CANADA", + "PROVIDER_GRIDCARS", + "PROVIDER_DRIVECO", + "PROVIDER_GREEN_ACTION_STUDIOS", + "PROVIDER_GREEN_ACTION_STUDIO", + "PROVIDER_EVINY", + "PROVIDER_MASTERCARD", + "PROVIDER_VATTENFALL" + ], + "enumDescriptions": [ + "ABSTRACT The root of all provider types. This should never be present on an actual feature, but can be useful when calling InCategory.", + "not actually a legal value, used as sentinel", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730AA", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is an internal *only* provider meant for sending wipeout requests to mapfacts.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Never rely on source infos with this provider to identify whether or not a feature is a Prominent Place! Instead, use the proper API, localsearch_clustering::QualityTierHelper::IsProminentPlace().", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "The next new \"Google\" provider entries should be placed above.", + "UMBRELLA", + "", + "", + "", + "This is a testing provider for teams that wish to integrate with components of the Geo Data Infrastructure that require a valid provider. No production data should ever be sent using this provider.", + "", + "UMBRELLA", + "", + "", + "", + "UMBRELLA", + "0x1117F must not be used, since its range extends the PROVIDER_GOOGLE hierarchy.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Deprecated in favor of PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and PROVIDER_GOOGLE_GEO_TIGER (for categories).", + "", + "0x1117FF should not be used, since its range further extends the PROVIDER_GOOGLE hierarchy. aka Local AI.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "No data is obtained from this provider. It is only used to identify features that must be served on MapMaker.", + "", + "", + "", + "", + "", + "", + "0x1117FFF should not be used, since its range further extends the PROVIDER_GOOGLE hierarchy. Synthetically generated areas (sublocalities/neighborhoods/ postal codes/etc) based on dropped terms from approximate geocoding. More info on go/syntheticareas.", + "", + "", + "", + "Similar to Google Transit, a provider that aggregates positions of bicycle rental points that we have agreements with to show on maps", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This range has been depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above.", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "Small Scale International Boundary Lines", + "", + "NOAA", + "PGC", + "USDA", + "National Provider Identifier Registry", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "old name for PROVIDER_NAVIGO", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "See b/33687395", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "ABSTRACT", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "IBAMA", + "MMA", + "ANA", + "IBGE", + "FUNAI", + "DNIT", + "", + "", + "", + "", + "", + "ABSTRACT", + "Department of Cartography", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "0x12 and 0x120 are not to be used. OOO CET", + "ABSTRACT", + "Estonian Land Board", + "", + "ABSTRACT", + "Danish Geodata Agency", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "Ministry of land, infrastructure and transport, 국토교통부, Guktogyotongbu", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION.", + "", + "ABSTRACT", + "Land Information New Zealand", + "NZ Department of Conservation", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Note: Next available value is 0x126C." + ], + "type": "string" + }, + "sourceDataset": { + "type": "string" + } + }, + "type": "object" + }, + "GeostoreOpeningHoursProto": { + "description": "Message to represent opening hours including regular weekly hours and a set of exceptions.", + "id": "GeostoreOpeningHoursProto", + "properties": { + "exception": { + "description": "Date delimited exceptions to the typical recurring opening hours. May only be present if regular weekly hours are also specified.", + "items": { + "$ref": "GeostoreExceptionalHoursProto" + }, + "type": "array" + }, + "regularHours": { + "$ref": "GeostoreBusinessHoursProto", + "description": "Typical recurring opening hours, expressed as a weekly schedule. NOTE: this field was introduced to have a more client-friendly format for representing weekly hours but, as of November 2018, it's not used for the main opening hours of TYPE_ESTABLISHMENT features (instead, the data is stored in the `EstablishmentProto.hours` field, see b/23105782 tracking the possible schema migration). It is however used in other contexts where `OpeningHoursProto` appears in the Geo Schema. In openinghours.h there is a utility function `GetOpeningHoursFromFeature` that merges `EstablishmentProto.hours` into this proto." + } + }, + "type": "object" + }, + "GeostoreOperationsProto": { + "description": "Information about a feature's operations, e.g. when the feature is temporarily closed.", + "id": "GeostoreOperationsProto", + "properties": { + "temporaryClosure": { + "description": "Records temporary status change of the feature, such as remodel, vacation, etc.: the feature is temporarily (but not permanently) unavailable. This prevents users from going to the feature. Supports an arbitrary number of past, present, and future temporary closures, with the feature's data owner choosing which range of past and future closures to permit or guarantee to keep. All start and end dates must be unique from each other. If two consecutive dates are a start and an end of a TemporaryClosureProto, then the two dates must be from the same TemporaryClosureProto. Otherwise, exact dates may be missing so long as there exist a possible sequence of temporary closures with both exact start_date and end_date that keeps any known exact start_date and end_date. The earliest temporary closure must begin after whenever initial operations begin. Likewise, the latest temporary closure must end before whenever the permanent closure begins. NOTE: does *not* guarantee chronological order.", + "items": { + "$ref": "GeostoreTemporaryClosureProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreOverrideBorderStatusProto": { + "description": "This message captures a border status override. For instance, if the TYPE_BORDER feature between China and Hong Kong must be hidden on ditu.google.cn (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.", + "id": "GeostoreOverrideBorderStatusProto", + "properties": { + "countryCode": { + "description": "The two-letter ISO 3166-1 country code corresponding to the domain this status override applies to, when rendering the border polyline.", + "type": "string" + }, + "status": { + "description": "The override status, from the BorderStatus enumeration. The value here must be different from the main status (otherwise there's no point in providing the override).", + "enum": [ + "STATUS_NORMAL", + "STATUS_DISPUTED", + "STATUS_UNSURVEYED", + "STATUS_INTERNATIONAL_WATER", + "STATUS_NEVER_DISPLAY", + "STATUS_TREATY", + "STATUS_PROVISIONAL", + "STATUS_NO_LABEL" + ], + "enumDescriptions": [ + "Most border lines have this status, which typically means both parties agree on the location of the line. These might be called \"de jure\" borders.", + "This status is used when the two parties disagree on the location of the line. There can be multiple border lines in a given disputed area. One might be the line proposed by country \"A\" and another the line proposed by country \"B\". A third line might mark the de facto line of control. Other border lines might indicate historical borders, e.g., \"1949 Armistice Line\".", + "This is used for one section of border between Argentina and Chile. Both parties agree that a border line exists somewhere on the glacier, but the exact location has not been determined.", + "This is a border line between a country and international water.", + "This status is only used for the borders that should never display to users. Typically it is for the borders that we don't want to represent but that we would still like to use to model country boundaries, e.g. Hong Kong and Macau.", + "This is used for borders that refer to well-defined boundaries which have been established by a specific treaty, agreement, armistice or other such agreement between two or more parties, yet the position and/or status is not considered to be legal and final (e.g., the final demarcation of the exact position has not occurred or the final political status is not resolved).", + "This is used for borders for which a formal agreement has not been established between the parties involved, yet the existing line acts as a de facto functional border without existence of any dispute.", + "This is used for borders which should not have country labels to either side, but should otherwise be styled the same as a border with STATUS_NORMAL. This is typically for borders which are not themselves disputed but still form part of the boundary around a disputed area that is not otherwise modeled or labeled as a country, or as an override where we are obligated to remove labels for region specific versions of Maps." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostorePaintedElementLogicalColorProto": { + "description": "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.", + "id": "GeostorePaintedElementLogicalColorProto", + "properties": { + "color": { + "enum": [ + "UNKNOWN_LOGICAL_COLOR", + "WHITE", + "YELLOW", + "RED", + "GREEN", + "BLUE", + "BLACK", + "GREY", + "ORANGE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreParkingAllowanceProto": { + "description": "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.", + "id": "GeostoreParkingAllowanceProto", + "properties": { + "allowanceType": { + "description": "The type of parking for this allowance. Allowance details only apply to the type of parking specified.", + "enum": [ + "STANDARD", + "VALET", + "PERMIT", + "PICKUP_GOODS", + "PICKUP_PASSENGERS" + ], + "enumDescriptions": [ + "Standard parking without qualifications. This is a long-term allowance.", + "This is a long-term allowance that only applies for valet parking.", + "The is a long-term allowance that applies to permit-holders. See permit_type for details.", + "This is a short-term allowance that only applies to picking up goods.", + "This is a short-term allowance that only applies to picking up passengers." + ], + "type": "string" + }, + "isDiscount": { + "description": "If true, this allowance represents a discount rather than an individual rate; any rate values specified in this allowance describe a discount to be applied to the non-discount allowances in the ParkingProto.", + "type": "boolean" + }, + "minPurchaseForValidation": { + "description": "If this rate requires validation, this expresses the minimum purchase required for validation in each applicable currency. Should have an ID of /measurement_unit/money_value and consist of two properties: one with an ID of /measurement_unit/money_value/amount and a float value with the amount, and another with the ID /measurement_unit/money_value/currency and an ID value with the MID of the proper currency (from the /finance/currency type). A value of 0 suggests that no purchase is required. If empty, this suggests that no validation is required for this rate.", + "items": { + "$ref": "FreebaseTopic" + }, + "type": "array" + }, + "permitType": { + "description": "Any additional details about the permit type; e.g. “Zone A”. In any local languages. Should only be set if allowance_type is PERMIT.", + "items": { + "$ref": "GeostoreLanguageTaggedTextProto" + }, + "type": "array" + }, + "serviceType": { + "description": "The types of services that this parking allowance applies to. For instance, some cities have streets that only allow traditional taxis to pick up passengers.", + "items": { + "enum": [ + "SERVICE_ALL", + "SERVICE_GENERAL_DRIVER", + "SERVICE_RIDESHARE", + "SERVICE_TAXI", + "SERVICE_COMMERCIAL" + ], + "enumDescriptions": [ + "Signifies that this restriction is always applicable, regardless of the service type.", + "Signifies that this restriction is applicable to a general driver.", + "Signifies that this restriction is applicable to a ridesharing driver.", + "Signifies that this restriction is applicable to a traditional taxi driver.", + "Signifies that this restriction is applicable to a commercial vehicle. This generally applies to vehicles used for carrying goods or fare-paying passengers. However, the exact definition of a commercial vehicle can vary by locality." + ], + "type": "string" + }, + "type": "array" + }, + "timeBasedRate": { + "description": "Describes the rate structures. Each TimeBasedRateProto defines a rate which may apply based on a particular arrival, departure or utilization time; for example, one rate might apply if arriving before 9am, and another might apply regardless of arrival or departure time.", + "items": { + "$ref": "GeostoreTimeBasedRateProto" + }, + "type": "array" + }, + "vehicleType": { + "description": "Restrictions on which vehicle type(s) the allowance applies to. By default, the allowance applies to any vehicle types.", + "enum": [ + "ANY", + "CAR", + "MOTORCYCLE", + "TRUCK" + ], + "enumDescriptions": [ + "", + "", + "", + "Note: The exact definition of a truck varies by city, but it usually refers to vehicles with three or more axles. This value does not necessarily apply to all commercial vehicles or vehicles colloquially referred to as trucks (eg. pickup trucks)." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreParkingProto": { + "description": "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.", + "id": "GeostoreParkingProto", + "properties": { + "allowance": { + "description": "Describes the parking allowances for the feature, which are the situations and requirements under which one is permitted to park at the feature’s parking facilities, or discounts that a user may be eligible for.", + "items": { + "$ref": "GeostoreParkingAllowanceProto" + }, + "type": "array" + }, + "openingHours": { + "$ref": "GeostoreOpeningHoursProto", + "description": "Hours in which the parking facility is open; that is, permits both arrivals and departures of the facility. Should only be set on compounds (i.e. parking lots or garages); roads are considered to always be “open,” though parking at certain times may be prohibited via restrictions. If unset on a compound, this suggests we don’t know the opening hours, or they are the same as the hours of the entity for which this feature offers parking facilities." + }, + "parkingAvailable": { + "description": "Indicates whether long-term parking is available at the feature; if true, long-term parking is available at the feature and parking allowances may be present on this feature, or parking_provider_feature may indicate defered parking feature(s). If false, this is an explicit statement that there is no long-term parking associated with this feature. If unset, we don't know whether there is long-term parking associated with this feature. If false or unset, only additional restrictions or short-term allowances will be populated.", + "type": "boolean" + }, + "parkingProviderFeature": { + "description": "If empty, indicates that the feature containing this ParkingProto provides parking facilities, which are described by this proto. If nonempty, indicates that the feature with this ParkingProto does not contain parking facilities itself, but visitors of this feature may use the parking available to the referent feature(s). The referent feature(s) may themselves contain parking facilities or defer to other features. A ParkingProto may defer parking details to another feature, but still include its own data. This suggests that a visitor of the referrer feature is eligible for different rates or discounts. The data in these fields applies transitively, and any fields in a referrer may be applied to the referent (for a visitor of the referrer).", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "restriction": { + "description": "Describes any parking restrictions that apply to this feature. Should only be set on road segments for which parking is explicitly prohibited for some or all times; for roads which do not prohibit parking and for all other facilities, the ability to park should be expressed using allowances. In the instance that both a restriction and an allowance applies at a given time, restrictions always have precedence over the same parking allowances. However, explicit short-term allowances (PICKUP_GOODS, PICKUP_PASSENGERS) take precedence over general NO_PARKING, NO_STANDING, or NO_STOPPING restrictions.", + "items": { + "$ref": "GeostoreParkingRestrictionProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreParkingRestrictionProto": { + "description": "Expresses a parking restriction on a road; i.e. times at which parking on the road is prohibited.", + "id": "GeostoreParkingRestrictionProto", + "properties": { + "restrictedHours": { + "$ref": "GeostoreTimeScheduleProto", + "description": "Times at which parking is prohibited." + }, + "restrictionType": { + "description": "clang-format on The type of restriction that applies at this time.", + "enum": [ + "RESTRICTION_UNKNOWN", + "RESTRICTION_PARKING", + "RESTRICTION_STANDING", + "RESTRICTION_STOPPING", + "RESTRICTION_PICKUP_GOODS", + "RESTRICTION_PICKUP_PASSENGERS" + ], + "enumDescriptions": [ + "Default value. Should never be set in practice.", + "Parking is not allowed. This is a long-term restriction.", + "No standing is allowed. This means a vehicle cannot wait or stop to load/unload packages. A vehicle may stop to drop-off passengers or to pick up passengers already waiting at the location. This is a short-term restriction.", + "A vehicle may not stop at this location at any time. This is a short-term restriction.", + "A vehicle may not stop here to pick up goods. This is a short-term restriction.", + "A vehicle may not stop here to pick up passengers. This is a short-term restriction." + ], + "type": "string" + }, + "serviceType": { + "description": "The types of services that this parking restriction applies to. We expect most parking restrictions to apply to all services, but some airports have specific rideshare parking or taxi parking zones.", + "items": { + "enum": [ + "SERVICE_ALL", + "SERVICE_GENERAL_DRIVER", + "SERVICE_RIDESHARE", + "SERVICE_TAXI", + "SERVICE_COMMERCIAL" + ], + "enumDescriptions": [ + "Signifies that this restriction is always applicable, regardless of the service type.", + "Signifies that this restriction is applicable to a general driver.", + "Signifies that this restriction is applicable to a ridesharing driver.", + "Signifies that this restriction is applicable to a traditional taxi driver.", + "Signifies that this restriction is applicable to a commercial vehicle. This generally applies to vehicles used for carrying goods or fare-paying passengers. However, the exact definition of a commercial vehicle can vary by locality." + ], + "type": "string" + }, + "type": "array" + }, + "vehicleType": { + "description": "The types of vehicles that this parking restriction applies to. For instance, some streets may allow motorcycles to park but not automobiles or trucks.", + "items": { + "enum": [ + "ANY", + "CAR", + "MOTORCYCLE", + "TRUCK" + ], + "enumDescriptions": [ + "", + "", + "", + "Note: The exact definition of a truck varies by city, but it usually refers to vehicles with three or more axles. This value does not necessarily apply to all commercial vehicles or vehicles colloquially referred to as trucks (eg. pickup trucks)." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostorePeakProto": { + "description": "This protocol buffer holds related data for features of type TYPE_PEAK and TYPE_VOLCANO.", + "id": "GeostorePeakProto", + "properties": { + "prominenceMeters": { + "description": "Topographic prominence in meters: the height of the peak’s summit above the lowest contour line encircling it and no higher summit.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GeostorePedestrianCrossingProto": { + "description": "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.", + "id": "GeostorePedestrianCrossingProto", + "properties": { + "angleDegrees": { + "description": "This value specifies the angle of the crosswalk. Zero degrees represents a crosswalk perpendicular to the direction of travel, towards the right side of the segment. The crosswalk angle, winds clockwise. Range [-90, 90]. The following crosswalk would have a 15 degree angle: / / \u003c--/-------------------------------- / /", + "format": "double", + "type": "number" + }, + "crossAnywhere": { + "description": "This value enables crossing anywhere (not just at the segment’s endpoint), typically used on long, low-traffic residential streets. This attribute is only respected for trivial segment -\u003e sibling routes. All other routes can cross at a MapFacts intersection.", + "type": "boolean" + }, + "crossingType": { + "description": "Crossing type is used as a restriction and can also be used for rendering.", + "enum": [ + "UNKNOWN", + "CROSSABLE", + "UNMARKED_CROSSING", + "MARKED_CROSSING", + "UNCROSSABLE" + ], + "enumDescriptions": [ + "RESERVED", + "", + "", + "", + "" + ], + "type": "string" + }, + "offset": { + "description": "The crossing offset defines a fraction between the distance from the segment endpoint to the centerline of the crosswalk and the length of the segment. For example, the segment length is 20 meters and the distance from segment end to center of crosswalk is 2 meters, the value of offset will be 0.1.", + "format": "float", + "type": "number" + }, + "restriction": { + "description": "Restrictions for this crossing (such as constructions on the crosswalk). They must not have subpath or travel_mode.", + "items": { + "$ref": "GeostoreRestrictionProto" + }, + "type": "array" + }, + "width": { + "description": "This value defines the full width of the crossing in the direction perpendicular to the direction which pedestrians walk on the crossing (in meters). The crossing is allowed to \"spill\" into the next segment (0.5 * width can be greater than the offset). Cannot be a negative value.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GeostorePhysicalLineProto": { + "description": "Describes a single physical marker line.", + "id": "GeostorePhysicalLineProto", + "properties": { + "dashLengthMeters": { + "description": "Applicable for DASHED and DOTTED_DASHED lines.", + "format": "float", + "type": "number" + }, + "gapColor": { + "$ref": "GeostorePaintedElementLogicalColorProto", + "description": "This should be rarely needed, but can represent patterns of alternating colors." + }, + "gapLengthMeters": { + "description": "Applicable for DASHED, DOTTED, and DOTTED_DASHED lines.", + "format": "float", + "type": "number" + }, + "material": { + "items": { + "enum": [ + "UNKNOWN_STRIPE_MATERIAL", + "PAINT_STRIPE", + "ROUND_DOT", + "SQUARE_DOT" + ], + "enumDescriptions": [ + "", + "Solid paint stripe.", + "Round dot, typically nonreflective.", + "Square dot, typically reflective." + ], + "type": "string" + }, + "type": "array" + }, + "paintColor": { + "$ref": "GeostorePaintedElementLogicalColorProto", + "description": "Color for the painted elements. Applicable to all types." + }, + "pattern": { + "enum": [ + "UNKNOWN_DASH_PATTERN", + "SOLID", + "DASHED", + "DOTTED", + "DOTTED_DASHED" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "physicalLineToken": { + "description": "A token that can be used to identify the version of the data about this marker line.", + "type": "string" + } + }, + "type": "object" + }, + "GeostorePointProto": { + "id": "GeostorePointProto", + "properties": { + "latE7": { + "format": "uint32", + "type": "integer" + }, + "lngE7": { + "format": "uint32", + "type": "integer" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "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 FeatureProto.center." + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a point. Never set in MapFacts." + } + }, + "type": "object" + }, + "GeostorePointWithHeightProto": { + "description": "PointWithHeightProto encodes lat/lng through PointProto and contains altitude information.", + "id": "GeostorePointWithHeightProto", + "properties": { + "altitudeMeters": { + "description": "Altitude of this point is assumed to be relative to the ground level.", + "format": "float", + "type": "number" + }, + "point": { + "$ref": "GeostorePointProto" + } + }, + "type": "object" + }, + "GeostorePoliticalProto": { + "description": "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.", + "id": "GeostorePoliticalProto", + "properties": { + "capital": { + "$ref": "GeostoreFeatureIdProto", + "description": "Many political regions have a conceptual center (capitals of a country or a top-level division are examples). If set, the target feature must be a TYPE_LOCALITY feature." + }, + "grossDomesticProductUsdMillions": { + "description": "The Gross Domestic Product of the political region measured in millions of current United States dollars. It must not be negative.", + "format": "double", + "type": "number" + }, + "literacyPercent": { + "description": "Percentage of population that are literate within a political region. It must be between 0 and 100.", + "format": "float", + "type": "number" + }, + "population": { + "description": "The number of people in this political region. This field is intended to store accurate population, not an estimation such as representative value for population range. It must not be negative.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "GeostorePolyLineProto": { + "id": "GeostorePolyLineProto", + "properties": { + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "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": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a polyline. Never set in MapFacts." + }, + "vertex": { + "description": "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.", + "items": { + "$ref": "GeostorePointProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostorePolygonProto": { + "description": "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; see comments on shape_id below. Any such PolygonProtos shouldn't be expected to work with public functions in //geostore/base/public/polygon.h.", + "id": "GeostorePolygonProto", + "properties": { + "baseMeters": { + "description": "The polygon loops above are basically flat: each point has a latitude and a longitude but no altitude. We don't want to build real 3D models here, but we do want to be able to generate 2.5D models. A 2.5D model is built by translating the flat polygon upward some distance (base) then extruding it upward some additional distance (height). The elevation of the bottom of the extruded polygon (above ground level).", + "format": "float", + "type": "number" + }, + "cellId": { + "description": "** DEPRECATED ** This is part of a splitting strategy for large polygons, which was never fully launched and we decided not to pursue. For features with very complex polygonal geometry, we break up the polygon into pieces that align with S2 cells at various levels. We do this for performance reasons as some geometry operations have quadratic complexity with regards to the total number of vertices. In these cases, we store the S2 cell ID corresponding to the piece of the overall polygon that is described by this specific PolygonProto message. Each polygon piece is expected to be fully contained by the S2 cell corresponding to this cell ID. However, note that the S2 cell ID is not required to correspond to the smallest S2 cell that fully contains the polygon (and often won't be). In addition, polygon pieces are required to not have any overlap (which translates to having entirely disjoint S2 cell IDs, i.e. one can not be parent (or grand parent, etc.) of another).", + "format": "uint64", + "type": "string" + }, + "encoded": { + "description": "Encoding of the polygon using S2Polygon::Encode()'s compressed representation.", + "format": "byte", + "type": "string" + }, + "heightMeters": { + "description": "The distance from the bottom of the extruded polygon to the top.", + "format": "float", + "type": "number" + }, + "loop": { + "description": "** DEPRECATED ** We have switched to using exclusively the encoded form in the wire format to and from MapFacts, so this field should never be populated there. See go/encoded-polygons for more info. \"Classic\" polygon representation, defined by one or more loops. The last vertex of each polyline is implicitly connected to the first vertex. All loops should be specified in CCW order.", + "items": { + "$ref": "GeostorePolyLineProto" + }, + "type": "array" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this polygon." + }, + "shapeId": { + "description": "A unique identifier for this polygon's data which is being held externally in Shapestore (see go/shapestore). This is only ever set internally within MapFacts or underlying infrastructure and if set is set in lieu of other fields. Clients of MapFacts (or anyone downstream of them) can rely on the guarantee that this field will never be set and that the actual data for the polygon will be present instead. This field has been deprecated in favor of FeatureProto.internal.polygon_shape_id", + "type": "string" + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a polygon. Never set in MapFacts." + }, + "unsuitableForDisplay": { + "description": "Some polygons are known to be rough proxies for a feature's \"real\" polygonal representation. Such polygons are generally unsuitable for display. Rendering clients should not show these in most cases. Polygons unsuitable for display do have other uses, such as user location or containment analysis, or as an input to learning algorithms. This is an orthogonal concept to FeatureProto.synthetic_geometry, which only pertains to the method by which a polygon was created, rather than its fidelity to ground truth. For features that have multiple polygons, this bit should be consistently set to the same value on all polygons.", + "type": "boolean" + } + }, + "type": "object" + }, + "GeostorePoseProto": { + "description": "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/Pose.java", + "id": "GeostorePoseProto", + "properties": { + "altitude": { + "description": "The height of the poses above the WGS-84 ellipsoid in meters.", + "format": "double", + "type": "number" + }, + "index": { + "description": "The index of the PoseProto in a list of PoseProtos.", + "format": "int32", + "type": "integer" + }, + "lat": { + "description": "The latitude of the pose in degrees [-90, 90].", + "format": "double", + "type": "number" + }, + "lng": { + "description": "The longitude of the pose in degrees (-180,180].", + "format": "double", + "type": "number" + }, + "pitch": { + "description": "The rotation around the longitude line East tangent in degrees [-90, 90].", + "format": "double", + "type": "number" + }, + "roll": { + "description": "The rotation around the latitude line North tangent in degrees (-180, 180].", + "format": "double", + "type": "number" + }, + "yaw": { + "description": "The rotation around the Up vector, from North, in degrees (-180, 180].", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GeostorePriceInfoFoodNutritionFacts": { + "description": "This message represents nutrition facts for a food dish.", + "id": "GeostorePriceInfoFoodNutritionFacts", + "properties": { + "calories": { + "$ref": "GeostorePriceInfoFoodNutritionFactsCaloriesFact" + }, + "cholesterol": { + "$ref": "GeostorePriceInfoFoodNutritionFactsNutritionFact", + "description": "Cholesterol information for a given food dish." + }, + "protein": { + "$ref": "GeostorePriceInfoFoodNutritionFactsNutritionFact", + "description": "Protein information for a given food dish." + }, + "sodium": { + "$ref": "GeostorePriceInfoFoodNutritionFactsNutritionFact", + "description": "Sodium information for a given food dish." + }, + "totalCarbohydrate": { + "$ref": "GeostorePriceInfoFoodNutritionFactsNutritionFact", + "description": "Carbohydrate information for a given food dish." + }, + "totalFat": { + "$ref": "GeostorePriceInfoFoodNutritionFactsNutritionFact", + "description": "Fat information for a given food dish." + } + }, + "type": "object" + }, + "GeostorePriceInfoFoodNutritionFactsCaloriesFact": { + "description": "This message denotes calories information with an upper bound and lower bound range.", + "id": "GeostorePriceInfoFoodNutritionFactsCaloriesFact", + "properties": { + "lowerAmount": { + "format": "int32", + "type": "integer" + }, + "unit": { + "description": "Unit of the given calories information.", + "enum": [ + "UNDEFINED_ENERGY_UNIT", + "CALORIE", + "JOULE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "upperAmount": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostorePriceInfoFoodNutritionFactsNutritionFact": { + "description": "This message denotes nutrition information with an upper bound and lower bound range and can be represented by mass unit.", + "id": "GeostorePriceInfoFoodNutritionFactsNutritionFact", + "properties": { + "lowerAmount": { + "format": "double", + "type": "number" + }, + "unit": { + "description": "Unit of the given nutrition information.", + "enum": [ + "UNDEFINED_MASS_UNIT", + "GRAM", + "MILLIGRAM" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "upperAmount": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GeostorePriceInfoProto": { + "id": "GeostorePriceInfoProto", + "properties": { + "priceList": { + "description": "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.", + "items": { + "$ref": "GeostorePriceListProto" + }, + "type": "array" + }, + "priceListUrl": { + "description": "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.", + "items": { + "$ref": "GeostoreUrlListProto" + }, + "type": "array" + }, + "status": { + "$ref": "GeostorePriceInfoStatus", + "description": "Message containing metadata about the verified status of the PriceInfo. Only verified listings should be displayed." + } + }, + "type": "object" + }, + "GeostorePriceInfoStatus": { + "description": "Providers of PriceInfo (e.g. SinglePlatform, YEXT) send verified and unverified listings. PriceInfoStatus is used to encapsulate this information.", + "id": "GeostorePriceInfoStatus", + "properties": { + "isVerified": { + "type": "boolean" + } + }, + "type": "object" + }, + "GeostorePriceListNameInfoProto": { + "description": "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 treated the same as having the fields not set.", + "id": "GeostorePriceListNameInfoProto", + "properties": { + "description": { + "type": "string" + }, + "id": { + "description": "IDs are intended to be unique identifiers of PriceInfoLists, Sections, and Menu items. This is enforced by the ID_DUPLICATE_PRICE_LIST_ID lint.", + "type": "string" + }, + "language": { + "description": "The external form of a Google International Identifiers Initiative (III) LanguageCode object. See google3/i18n/identifiers/languagecode.h for details. We place extra restrictions on languages in addition to what the III library requires. See go/geo-schema-reference/feature-properties/languages.", + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "GeostorePriceListProto": { + "description": "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.", + "id": "GeostorePriceListProto", + "properties": { + "availableTime": { + "$ref": "GeostoreTimeScheduleProto", + "description": "The time period when this price list is available. Establishments are not required to give available_time for any given price list, however, when this field is not set, the price list is understood as available any time the establishment is open." + }, + "cuisines": { + "description": "Cuisine information if the location the price lists attached to is an eligible feature for a food menu price list. Cuisine information should also only show up in a food price list.", + "items": { + "enum": [ + "CUISINE_UNDEFINED", + "FAST_FOOD", + "AMERICAN", + "JAPANESE", + "BREAK_FAST", + "PIZZA", + "HAMBURGER", + "ITALIAN", + "SEAFOOD", + "FAMILY", + "MEXICAN", + "CHINESE", + "VEGETARIAN", + "SUSHI", + "CHICKEN", + "INDIAN", + "ASIAN", + "MEDITERRANEAN", + "FRENCH", + "BRUNCH", + "KOREAN", + "THAI", + "SPANISH", + "VIETNAMESE", + "LATIN_AMERICAN", + "INDONESIAN", + "GREEK", + "GERMAN", + "TURKISH", + "BRAZILIAN", + "PAKISTANI", + "OTHER_CUISINE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "nameInfo": { + "description": "The repeated name_info field is for price lists listed in multiple languages. When a price list has no names or descriptions, the size of the repeated field name_info may be 0. There should be at most one name_info for any given language.", + "items": { + "$ref": "GeostorePriceListNameInfoProto" + }, + "type": "array" + }, + "section": { + "description": "Each price list may have multiple sections. Note that these sections within the same price list should most times contain only the same type of items for sale, e.g. all sections should usually contain only food items if the enclosing price list is representing food menu. However, sometimes such a requirement may be wrong, for example, McDonald's may sell burgers as well as toys, and the toys may be in its own section. Thus we don't enforce any requirement that all sections contain only the same type of items.", + "items": { + "$ref": "GeostorePriceListSectionProto" + }, + "type": "array" + }, + "sourceUrl": { + "$ref": "GeostoreUrlListProto", + "description": "Where this price list comes from. If set, this must also be a member of the price_list_url field, and represents translations of a single URL." + } + }, + "type": "object" + }, + "GeostorePriceListSectionProto": { + "description": "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.", + "id": "GeostorePriceListSectionProto", + "properties": { + "callToAction": { + "$ref": "GeostoreCallToActionProto", + "description": "Call to action for the section." + }, + "foodItem": { + "description": "To store food and drink items when the containing PriceListSectionProto is a food menu section.", + "items": { + "$ref": "GeostoreFoodMenuItemProto" + }, + "type": "array" + }, + "item": { + "description": "To store any items when the containing PriceListSectionProto is not food / legacy services.", + "items": { + "$ref": "GeostoreComposableItemProto" + }, + "type": "array" + }, + "itemType": { + "description": "This has to have at most one value.", + "items": { + "enum": [ + "TYPE_ANY", + "TYPE_FOOD", + "TYPE_SERVICE", + "TYPE_PRODUCT", + "TYPE_JOB" + ], + "enumDescriptions": [ + "Abstract type, and the root of all types. Not a meaningful type and likewise should never be present in a geostore repository.", + "For food and drink items, stored in FoodMenuItemProto.", + "For service items (stored in FoodMenuItemProto). TYPE_SERVICE is being deprecated. Please use TYPE_JOB for the new services See b/147253790 for more information. data.", + "For product items (stored in ComposableItemProto).", + "For jobs (stored in ComposableItemProto)." + ], + "type": "string" + }, + "type": "array" + }, + "media": { + "description": "One or more media items (photos, videos, etc.) describing this section / category.", + "items": { + "$ref": "GeostoreMediaItemProto" + }, + "type": "array" + }, + "nameInfo": { + "description": "The repeated name_info field is for price list sections listed in multiple languages. When a price list section has no names or descriptions, the size of the repeated field name_info may be 0. There should be at most one name_info for any given language.", + "items": { + "$ref": "GeostorePriceListNameInfoProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostorePriceRangeProto": { + "description": "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\"", + "id": "GeostorePriceRangeProto", + "properties": { + "currency": { + "description": "Currency code for the price range: a valid currency code from i18n/identifiers/currencycode.h. Lower and upper price are both assumed to use the same currency.", + "type": "string" + }, + "lowerPrice": { + "description": "This message allows unbounded price ranges. e.g. Lower_price is undefined. At least one of the two prices must be set for the price range to be meaningful.", + "format": "double", + "type": "number" + }, + "units": { + "description": "clang-format on", + "enum": [ + "ANY_UNITS", + "PER_USE", + "PER_PHONE_CALL", + "PER_RIDE", + "PER_TIME_UNIT", + "PER_SECOND", + "PER_MINUTE", + "PER_HOUR", + "PER_DAY", + "PER_NIGHT", + "PER_WEEK", + "PER_MONTH", + "PER_YEAR", + "PER_VOLUME_UNIT", + "PER_LITER", + "PER_GLASS", + "PER_BOTTLE", + "PER_POT", + "PER_LENGTH_UNIT", + "PER_CENTIMETER", + "PER_METER", + "PER_KILOMETER", + "PER_MASS_UNIT", + "PER_GRAM", + "PER_KILOGRAM", + "PER_OUNCE", + "PER_POUND" + ], + "enumDescriptions": [ + "ABSTRACT The root of the hierarchy. It's an abstract value and shouldn't be present in the repository.", + "", + "", + "e.g. for the price of a ferry or aeroplane flight.", + "", + "", + "", + "", + "", + "e.g. for the price of a hotel room.", + "", + "", + "", + "", + "e.g. for the price of petrol.", + "The following units (PER_GLASS, PER_BOTTLE, and PER_POT) are intended to represent price units for restaurant menus and do not specify how much volume the unit contains. e.g. for wine sold by glass.", + "e.g. for wine sold by bottle.", + "e.g. for tea sold by pot", + "", + "", + "", + "e.g. for the price of a taxi.", + "To simplify the categories for units, we put both mass and weight units under PER_MASS_UNIT, as a lot of times they are used interchangeably in real life anyway.", + "", + "", + "", + "" + ], + "type": "string" + }, + "upperPrice": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GeostorePropertyValueStatusProto": { + "description": "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.", + "id": "GeostorePropertyValueStatusProto", + "properties": { + "propertyId": { + "$ref": "GeostoreFeaturePropertyIdProto", + "description": "The property ID whose value status is defined by this proto." + }, + "valueStatus": { + "description": "`value_status` specifies whether the feature has a value for the property. This should always be set to something other than the default value (`PROPERTY_VALUE_STATUS_UNSPECIFIED`).", + "enum": [ + "PROPERTY_VALUE_STATUS_UNSPECIFIED", + "HAS_NO_VALUE", + "HAS_UNKNOWN_VALUE" + ], + "enumDescriptions": [ + "The default value means the property's value status is encoded in the property itself: if the property has a value, it has a value. If it doesn't, it may or may not have a value. It is OK to interpret that as having no value. Note that in `PropertyValueStatusProto`, this value is not allowed. We include it and define it to match the default behavior so that it can be used in other protos.", + "`HAS_NO_VALUE` means that we know that the property has no value.", + "'HAS_UNKNOWN_VALUE' means that we know that the property has a value but that we don't know what that value is." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreProvenanceProto": { + "description": "This is a minimal version of SourceInfoProto.", + "id": "GeostoreProvenanceProto", + "properties": { + "dataset": { + "description": "The dataset from which this the referenced data was created. The content of this string will be determined by the data provider, and may encode extra information, such as data confidence.", + "type": "string" + }, + "provider": { + "description": "The data provider from which the referenced data was generated.", + "enum": [ + "PROVIDER_ANY", + "PROVIDER_UNKNOWN", + "PROVIDER_NAVTEQ", + "PROVIDER_TELE_ATLAS", + "PROVIDER_TELE_ATLAS_MULTINET", + "PROVIDER_TELE_ATLAS_CODEPOINT", + "PROVIDER_TELE_ATLAS_GEOPOST", + "PROVIDER_TELE_ATLAS_DATAGEO", + "PROVIDER_TELE_ATLAS_ADDRESS_POINTS", + "PROVIDER_TELCONTAR", + "PROVIDER_EUROPA", + "PROVIDER_ROYAL_MAIL", + "PROVIDER_GOOGLE", + "PROVIDER_GOOGLE_HAND_EDIT", + "PROVIDER_GOOGLE_BORDERS", + "PROVIDER_GOOGLE_SUBRANGE", + "PROVIDER_GOOGLE_GT_FUSION", + "PROVIDER_GOOGLE_ZAGAT_CMS", + "PROVIDER_GOOGLE_PLACE_NAVBOOST", + "PROVIDER_GOOGLE_FOOTPRINT", + "PROVIDER_GOOGLE_PRODUCT_TERMS", + "PROVIDER_GOOGLE_POINTCARDS", + "PROVIDER_GOOGLE_BUSINESS_CHAINS", + "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION", + "PROVIDER_GOOGLE_PRONUNCIATIONS", + "PROVIDER_GOOGLE_DUMPLING", + "PROVIDER_GOOGLE_DISTILLERY", + "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION", + "PROVIDER_GOOGLE_RELATION_MINER", + "PROVIDER_GOOGLE_MAPSPAM", + "PROVIDER_GOOGLE_ROSE", + "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS", + "PROVIDER_GOOGLE_WIPEOUT", + "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH", + "PROVIDER_GOOGLE_BEEGEES", + "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION", + "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION", + "PROVIDER_GOOGLE_GEO_WORLDMAPS", + "PROVIDER_GOOGLE_GEO_MODERATION", + "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS", + "PROVIDER_GOOGLE_LOCAL_ALCHEMY", + "PROVIDER_GOOGLE_KEROUAC", + "PROVIDER_GOOGLE_MOBRANK", + "PROVIDER_GOOGLE_RAPTURE", + "PROVIDER_GOOGLE_CULTURAL_INSTITUTE", + "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS", + "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS", + "PROVIDER_GOOGLE_TACTILE_MAPS", + "PROVIDER_GOOGLE_MAPS_FOR_MOBILE", + "PROVIDER_GOOGLE_GEO_REALTIME", + "PROVIDER_GOOGLE_PROMINENT_PLACES", + "PROVIDER_GOOGLE_PLACE_ACTIONS", + "PROVIDER_GOOGLE_GT_AUTO_EDITS", + "PROVIDER_GOOGLE_WAZE", + "PROVIDER_GOOGLE_ONTHEGO", + "PROVIDER_GOOGLE_GT_IMPORT", + "PROVIDER_GOOGLE_STRUCTURED_DATA", + "PROVIDER_GOOGLE_HELICOPTER", + "PROVIDER_GOOGLE_ROLLBACK", + "PROVIDER_GOOGLE_RIGHTS_REPAIR", + "PROVIDER_GOOGLE_PERFUME", + "PROVIDER_GOOGLE_MAPS_TRANSLATION", + "PROVIDER_GOOGLE_CALL_ME_MAYBE", + "PROVIDER_GOOGLE_LOCAL_UNIVERSAL", + "PROVIDER_GOOGLE_CROUPIER", + "PROVIDER_GOOGLE_SKYSMART", + "PROVIDER_GOOGLE_RIDDLER", + "PROVIDER_GOOGLE_ROADCLOSURES", + "PROVIDER_GOOGLE_SPORE", + "PROVIDER_GOOGLE_LOCALIZATION", + "PROVIDER_GOOGLE_CATTERMS", + "PROVIDER_GOOGLE_GT_FIELD_OPS", + "PROVIDER_GOOGLE_MATCHMAKER", + "PROVIDER_GOOGLE_ARBITRATION", + "PROVIDER_GOOGLE_BIZBUILDER_OPS", + "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS", + "PROVIDER_GOOGLE_GT_DRAFTY", + "PROVIDER_GOOGLE_HOTELADS_OPS", + "PROVIDER_GOOGLE_MARKERS", + "PROVIDER_GOOGLE_STATE_MACHINE", + "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE", + "PROVIDER_GOOGLE_BIKESHARE", + "PROVIDER_GOOGLE_GHOSTWRITER", + "PROVIDER_GOOGLE_EDIT_PLATFORM", + "PROVIDER_GOOGLE_BLUE_GINGER", + "PROVIDER_GOOGLE_GEO_TIGER", + "PROVIDER_GOOGLE_HYADES", + "PROVIDER_GOOGLE_WEBQUARRY", + "PROVIDER_GOOGLE_GEO_MADDEN", + "PROVIDER_GOOGLE_ANDROID_PAY", + "PROVIDER_GOOGLE_OPENING_HOURS_TEAM", + "PROVIDER_GOOGLE_LOCAL_DISCOVERY", + "PROVIDER_GOOGLE_LOCAL_HEALTH", + "PROVIDER_GOOGLE_UGC_MAPS", + "PROVIDER_GOOGLE_FIBER", + "PROVIDER_GOOGLE_REVGEO", + "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END", + "PROVIDER_GOOGLE_GEO_UGC_TASKS", + "PROVIDER_GOOGLE_GEOCODING", + "PROVIDER_GOOGLE_SPYGLASS", + "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES", + "PROVIDER_GOOGLE_GEO_CHANGES", + "PROVIDER_GOOGLE_HUME", + "PROVIDER_GOOGLE_MEGAMIND", + "PROVIDER_GOOGLE_GT_ROADSYNTH", + "PROVIDER_GOOGLE_FIREBOLT", + "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS", + "PROVIDER_GOOGLE_UGC_SERVICES", + "PROVIDER_GOOGLE_GEOALIGN", + "PROVIDER_GOOGLE_GT_COMPOUNDS", + "PROVIDER_GOOGLE_FOOD_ORDERING", + "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS", + "PROVIDER_GOOGLE_URAW", + "PROVIDER_GOOGLE_FLYEYE", + "PROVIDER_GOOGLE_YOUKE", + "PROVIDER_GOOGLE_GT_ZEPHYR", + "PROVIDER_GOOGLE_USER_SAFETY", + "PROVIDER_GOOGLE_ADDRESS_MAKER", + "PROVIDER_GOOGLE_UGC_PHOTOS", + "PROVIDER_GOOGLE_GT_WINDCHIME", + "PROVIDER_GOOGLE_SNAG_FIXER", + "PROVIDER_GOOGLE_GEO_DEALS", + "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS", + "PROVIDER_GOOGLE_PROPERTY_INSIGHTS", + "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS", + "PROVIDER_GOOGLE_GEO_PORTKEY", + "PROVIDER_GOOGLE_ROAD_MAPPER", + "PROVIDER_GOOGLE_LOCATION_PLATFORM", + "PROVIDER_GOOGLE_POSTTRIP", + "PROVIDER_GOOGLE_TRAVEL_DESTINATION", + "PROVIDER_GOOGLE_GEO_DATA_UPLOAD", + "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP", + "PROVIDER_GOOGLE_USER", + "PROVIDER_GOOGLE_STATION", + "PROVIDER_GOOGLE_GEO_FOOD", + "PROVIDER_GOOGLE_GEO_AR", + "PROVIDER_GOOGLE_GEO_TEMPORAL", + "PROVIDER_GOOGLE_SERVICES_MARKETPLACE", + "PROVIDER_GOOGLE_IMT_CLEANUP", + "PROVIDER_GOOGLE_GEO_FOOD_MENU", + "PROVIDER_GOOGLE_CARENAV", + "PROVIDER_GOOGLE_DRIVING_FEEDS", + "PROVIDER_GOOGLE_DRIVING_UGC", + "PROVIDER_GOOGLE_POLAR", + "PROVIDER_GOOGLE_TRIWILD", + "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS", + "PROVIDER_GOOGLE_SA_FROM_WEB", + "PROVIDER_GOOGLE_POI_ALIGNMENT", + "PROVIDER_GOOGLE_SA_FROM_HULK", + "PROVIDER_GOOGLE_SERVICES_INTERACTIONS", + "PROVIDER_GOOGLE_ROADS_UGC_EDITOR", + "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE", + "PROVIDER_GOOGLE_GEO_DRIVING_VIZ", + "PROVIDER_GOOGLE_GEO_TASKING", + "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE", + "PROVIDER_GOOGLE_CROWDTASK_TASKADS", + "PROVIDER_GOOGLE_CROWDTASK_TASKMATE", + "PROVIDER_GOOGLE_CROWDTASK_FURBALL", + "PROVIDER_GOOGLE_CROWDTASK_ADAP", + "PROVIDER_GOOGLE_GPAY", + "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS", + "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION", + "PROVIDER_GOOGLE_GEOTRACKER", + "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE", + "PROVIDER_GOOGLE_GEO_CLOSED_LOOP", + "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS", + "PROVIDER_GOOGLE_CORE_DATA_RIGHTS", + "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS", + "PROVIDER_GOOGLE_GEO_CONTENT_FIXER", + "PROVIDER_GOOGLE_POLYGON_REFINEMENT", + "PROVIDER_GOOGLE_HANASU", + "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD", + "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD", + "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD", + "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS", + "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS", + "PROVIDER_GOOGLE_SA_QUALITY", + "PROVIDER_GOOGLE_GDCE_CLEANUP", + "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS", + "PROVIDER_GOOGLE_LOCALSEARCH", + "PROVIDER_GOOGLE_TRANSIT", + "PROVIDER_GOOGLE_GEOWIKI", + "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM", + "PROVIDER_GOOGLE_SYNTHESIZED", + "PROVIDER_GOOGLE_INTERNAL_TEST", + "PROVIDER_GOOGLE_DISPUTED_AREAS", + "PROVIDER_GOOGLE_3DWAREHOUSE", + "PROVIDER_GOOGLE_GROUNDS_BUILDER", + "PROVIDER_GOOGLE_SESAME", + "PROVIDER_GOOGLE_GT", + "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD", + "PROVIDER_GOOGLE_ADSDB", + "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION", + "PROVIDER_GOOGLE_TRAVELSEARCH", + "PROVIDER_GOOGLE_PANORAMIO", + "PROVIDER_GOOGLE_YOUTUBE", + "PROVIDER_GOOGLE_OLD", + "PROVIDER_GOOGLE_STREETVIEW", + "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW", + "PROVIDER_GOOGLE_ZIPIT", + "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES", + "PROVIDER_GOOGLE_GOLDEN", + "PROVIDER_GOOGLE_INNERSPACE", + "PROVIDER_GOOGLE_MAPSEARCH", + "PROVIDER_GOOGLE_CATEGORIES_TEAM", + "PROVIDER_GOOGLE_CROWDSENSUS", + "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY", + "PROVIDER_GOOGLE_FREEBASE", + "PROVIDER_GOOGLE_HOTELADS", + "PROVIDER_GOOGLE_AUTHORITY_PAGES", + "PROVIDER_GOOGLE_PLACES_API", + "PROVIDER_GOOGLE_NAMEHEATMAP", + "PROVIDER_GOOGLE_MAPMAKER", + "PROVIDER_GOOGLE_MAPMAKER_MOBILE", + "PROVIDER_GOOGLE_MAPMAKER_PANCAKE", + "PROVIDER_GOOGLE_MAPMAKER_V2", + "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE", + "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER", + "PROVIDER_GOOGLE_GT_LOCAL", + "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS", + "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS", + "PROVIDER_GOOGLE_ENTITY_NAVBOOST", + "PROVIDER_GOOGLE_RELATED_PLACES", + "PROVIDER_GOOGLE_KNOWN_FOR_TERMS", + "PROVIDER_GOOGLE_SYNTHETIC_AREAS", + "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS", + "PROVIDER_GOOGLE_CROSS_STREETS", + "PROVIDER_GOOGLE_CORRIDORS", + "PROVIDER_GOOGLE_BICYCLE_RENTAL", + "PROVIDER_GOOGLE_CONCRETE_URLS", + "PROVIDER_GOOGLE_LEANBACK", + "PROVIDER_GOOGLE_LOCKED_LISTINGS", + "PROVIDER_GOOGLE_MONITORING", + "PROVIDER_GOOGLE_SPROUT", + "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY", + "PROVIDER_GOOGLE_GOBY", + "PROVIDER_GOOGLE_PROBLEM_REPORT", + "PROVIDER_GOOGLE_CANDID", + "PROVIDER_GOOGLE_BIZBUILDER", + "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA", + "PROVIDER_MAPDATA_SCIENCES", + "PROVIDER_MAPONICS", + "PROVIDER_SKI_RESORTS", + "PROVIDER_ZENRIN", + "PROVIDER_SANBORN", + "PROVIDER_URBAN_MAPPING", + "PROVIDER_US_GOVERNMENT", + "PROVIDER_US_CENSUS", + "PROVIDER_US_POSTAL_SERVICE", + "PROVIDER_US_GEOLOGICAL_SURVEY", + "PROVIDER_US_GNIS", + "PROVIDER_US_LANDSAT", + "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY", + "PROVIDER_US_NGA_GNS", + "PROVIDER_US_SSIBL", + "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS", + "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION", + "PROVIDER_US_POLAR_GEOSPATIAL_CENTER", + "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE", + "PROVIDER_US_NPI_REGISTRY", + "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS", + "PROVIDER_DMTI_SPATIAL", + "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION", + "PROVIDER_MAPLINK", + "PROVIDER_KINGWAY", + "PROVIDER_GEOCENTRE", + "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS", + "PROVIDER_CN_MAPABC", + "PROVIDER_SMITHSONIAN_INSTITUTE", + "PROVIDER_TRACKS_FOR_AFRICA", + "PROVIDER_PPWK", + "PROVIDER_LEADDOG", + "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG", + "PROVIDER_GISRAEL", + "PROVIDER_BASARSOFT", + "PROVIDER_MAPINFO", + "PROVIDER_MAPIT", + "PROVIDER_GEOBASE", + "PROVIDER_ORION", + "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY", + "PROVIDER_ANASAT", + "PROVIDER_MINED_POSTCODES", + "PROVIDER_DMAPAS", + "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY", + "PROVIDER_CH_SBB", + "PROVIDER_SKENERGY", + "PROVIDER_GBRMPA", + "PROVIDER_KOREA_POST", + "PROVIDER_CN_AUTONAVI", + "PROVIDER_MINED_POI", + "PROVIDER_ML_INFOMAP", + "PROVIDER_SNOOPER", + "PROVIDER_GEOSISTEMAS", + "PROVIDER_AFRIGIS", + "PROVIDER_TRANSNAVICOM", + "PROVIDER_EASYCONNECT", + "PROVIDER_LANTMATERIET", + "PROVIDER_LOGICA", + "PROVIDER_MAPKING", + "PROVIDER_DIANPING", + "PROVIDER_GEONAV", + "PROVIDER_HEIBONSHA", + "PROVIDER_DEUTSCHE_TELEKOM", + "PROVIDER_LINGUISTIC_DATA_CONSORTIUM", + "PROVIDER_ACXIOM", + "PROVIDER_DUN_AND_BRADSTREET", + "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION", + "PROVIDER_INFOUSA", + "PROVIDER_INFOUSA_NIXIE", + "PROVIDER_THOMSON_LOCAL", + "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION", + "PROVIDER_WIKIPEDIA", + "PROVIDER_INFOBEL", + "PROVIDER_MX_GOVERNMENT", + "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY", + "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO", + "PROVIDER_TELEGATE", + "PROVIDER_TELELISTAS", + "PROVIDER_MAPCITY", + "PROVIDER_EXPLAINER_DC", + "PROVIDER_DAIKEI", + "PROVIDER_NL_CHAMBER_OF_COMMERCE", + "PROVIDER_KOREA_INFO_SERVICE", + "PROVIDER_WIKITRAVEL", + "PROVIDER_FLICKR", + "PROVIDER_DIANCO", + "PROVIDER_VOLT_DELTA", + "PROVIDER_SG_GOVERNMENT", + "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY", + "PROVIDER_MAPBAR", + "PROVIDER_LONGTU", + "PROVIDER_SA_GOVERNMENT", + "PROVIDER_SA_SAUDI_POST", + "PROVIDER_PEAKLIST", + "PROVIDER_LOCAL_BUSINESS_CENTER", + "PROVIDER_LOCAL_FEED_XML", + "PROVIDER_WEB", + "PROVIDER_RAILS_TO_TRAILS", + "PROVIDER_INDIACOM", + "PROVIDER_INFOMEDIA", + "PROVIDER_PICASA", + "PROVIDER_AT_GOVERNMENT", + "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN", + "PROVIDER_AT_NATIONAL_TOURIST_OFFICE", + "PROVIDER_AT_AUSTRIA_POST", + "PROVIDER_NO_GOVERNMENT", + "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON", + "PROVIDER_NO_POSTEN_NORGE_AS", + "PROVIDER_CH_GOVERNMENT", + "PROVIDER_CH_SWISS_POST", + "PROVIDER_CH_SWISSTOPO", + "PROVIDER_CH_SWISS_NATIONAL_PARK", + "PROVIDER_NAVIT", + "PROVIDER_GEOSEARCH", + "PROVIDER_DE_GOVERNMENT", + "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE", + "PROVIDER_BUNDESNETZAGENTUR", + "PROVIDER_SCHOBER_GROUP", + "PROVIDER_MIREO", + "PROVIDER_PUBLIC_MUNICIPALITY", + "PROVIDER_US_PUBLIC_MUNICIPALITY", + "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS", + "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS", + "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO", + "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN", + "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY", + "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE", + "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA", + "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO", + "PROVIDER_NZ_PUBLIC_MUNICIPALITY", + "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY", + "PROVIDER_PL_PUBLIC_MUNICIPALITY", + "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA", + "PROVIDER_DE_PUBLIC_MUNICIPALITY", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG", + "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE", + "PROVIDER_PT_PUBLIC_MUNICIPALITY", + "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ", + "PROVIDER_AT_PUBLIC_MUNICIPALITY", + "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT", + "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ", + "PROVIDER_ES_PUBLIC_MUNICIPALITY", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA", + "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA", + "PROVIDER_AU_PUBLIC_MUNICIPALITY", + "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA", + "PROVIDER_IS_PUBLIC_MUNICIPALITY", + "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK", + "PROVIDER_NL_PUBLIC_MUNICIPALITY", + "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN", + "PROVIDER_BE_PUBLIC_MUNICIPALITY", + "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN", + "PROVIDER_CA_PUBLIC_MUNICIPALITY", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA", + "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO", + "PROVIDER_SE_PUBLIC_MUNICIPALITY", + "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA", + "PROVIDER_UA_PUBLIC_MUNICIPALITY", + "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV", + "PROVIDER_OTHER_PUBLIC_MUNICIPALITY", + "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS", + "PROVIDER_FR_PUBLIC_MUNICIPALITY", + "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER", + "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX", + "PROVIDER_SG_PUBLIC_MUNICIPALITY", + "PROVIDER_BR_PUBLIC_MUNICIPALITY", + "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO", + "PROVIDER_MAPCUBE", + "PROVIDER_3D_REALITYMAPS", + "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT", + "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA", + "PROVIDER_DISNEY", + "PROVIDER_CYBERCITY", + "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS", + "PROVIDER_VIRTUAL_HUNGARY_LIMITED", + "PROVIDER_VIRTUEL_CITY", + "PROVIDER_SCREAMPOINT_INTERNATIONAL", + "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN", + "PROVIDER_FR_GOVERNMENT", + "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL", + "PROVIDER_FR_CADASTRE", + "PROVIDER_DIADIEM", + "PROVIDER_THE_WEATHER_CHANNEL", + "PROVIDER_COWI", + "PROVIDER_FALKPLAN_ANDES", + "PROVIDER_NL_GOVERNMENT", + "PROVIDER_NL_KADASTER", + "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS", + "PROVIDER_DIGITAL_MAP_PRODUCTS", + "PROVIDER_SILICE_DIGITAL", + "PROVIDER_TYDAC", + "PROVIDER_ALBRECHT_GOLF", + "PROVIDER_HEALTH_CH", + "PROVIDER_VISITDENMARK", + "PROVIDER_FLYHERE", + "PROVIDER_DIGITAL_DATA_SERVICES", + "PROVIDER_MECOMO", + "PROVIDER_ZA_GOVERNMENT", + "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM", + "PROVIDER_SENSIS", + "PROVIDER_JJCONNECT", + "PROVIDER_OPPLYSNINGEN", + "PROVIDER_TELLUS", + "PROVIDER_IQONIA", + "PROVIDER_BE_GOVERNMENT", + "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT", + "PROVIDER_BE_BRUSSELS_MOBILITY", + "PROVIDER_YELLOWMAP_AG", + "PROVIDER_STIFTUNG_GESUNDHEIT", + "PROVIDER_GIATA", + "PROVIDER_SANPARKS", + "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE", + "PROVIDER_INFOPORTUGAL", + "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO", + "PROVIDER_COLLINS_BARTHOLOMEW", + "PROVIDER_PROTECT_PLANET_OCEAN", + "PROVIDER_KARTTAKESKUS", + "PROVIDER_FI_GOVERNMENT", + "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION", + "PROVIDER_FI_NATIONAL_LAND_SURVEY", + "PROVIDER_FI_STATISTICS_FINLAND", + "PROVIDER_GB_GOVERNMENT", + "PROVIDER_GB_ORDNANCE_SURVEY", + "PROVIDER_NATURAL_ENGLAND", + "PROVIDER_WELSH_GOVERNMENT", + "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS", + "PROVIDER_EPSILON", + "PROVIDER_PARTNER_FRONT_END", + "PROVIDER_CARTESIA", + "PROVIDER_SE_GOVERNMENT", + "PROVIDER_SE_TRAFIKVERKET", + "PROVIDER_SE_NATURVARDSVERKET", + "PROVIDER_IE_GOVERNMENT", + "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND", + "PROVIDER_LU_GOVERNMENT", + "PROVIDER_LU_P_AND_T_LUXEMBOURG", + "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE", + "PROVIDER_LU_NATIONAL_TOURIST_OFFICE", + "PROVIDER_MAPFLOW", + "PROVIDER_TKARTOR", + "PROVIDER_JUMPSTART", + "PROVIDER_EPTISA", + "PROVIDER_MC_GOVERNMENT", + "PROVIDER_MC_PRINCIPAUTE_DE_MONACO", + "PROVIDER_MONOLIT", + "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE", + "PROVIDER_MODIS", + "PROVIDER_GEOX", + "PROVIDER_GEODIRECTORY", + "PROVIDER_GEOPLAN", + "PROVIDER_INFODIREKT", + "PROVIDER_GEOGLOBAL", + "PROVIDER_DEUTSCHE_POST", + "PROVIDER_TRACASA", + "PROVIDER_CORREOS", + "PROVIDER_ES_GOVERNMENT", + "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA", + "PROVIDER_EDIMAP", + "PROVIDER_VERIZON", + "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS", + "PROVIDER_PROMAPS", + "PROVIDER_CONSODATA", + "PROVIDER_DE_AGOSTINI", + "PROVIDER_FEDERPARCHI", + "PROVIDER_NAVIGO", + "PROVIDER_ITALIAMAPPE", + "PROVIDER_CZECOT", + "PROVIDER_NATURAL_EARTH", + "PROVIDER_REGIO", + "PROVIDER_SHIPWRECK_CENTRAL", + "PROVIDER_RUTGERS_STATE_UNIVERSITY", + "PROVIDER_TWINICE", + "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD", + "PROVIDER_INFOGROUP", + "PROVIDER_TNET", + "PROVIDER_CTT_CORREIOS_DE_PORTUGAL", + "PROVIDER_EUROPARC", + "PROVIDER_IUPPITER", + "PROVIDER_MICHAEL_BAUER_INTERNATIONAL", + "PROVIDER_LEPTON", + "PROVIDER_MAPPOINT", + "PROVIDER_GEODATA", + "PROVIDER_RU_GOVERNMENT", + "PROVIDER_RU_FNS_KLADR", + "PROVIDER_BR_GOVERNMENT", + "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATURAIS_RENOVAVEIS", + "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE", + "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS", + "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA", + "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO", + "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES", + "PROVIDER_AZAVEA", + "PROVIDER_NORTHSTAR", + "PROVIDER_COMMEDI", + "PROVIDER_NEXUS_GEOGRAFICS", + "PROVIDER_INFOERA", + "PROVIDER_AD_GOVERNMENT", + "PROVIDER_AD_AREA_DE_CARTOGRAFIA", + "PROVIDER_MAXXIMA", + "PROVIDER_SI_GOVERNMENT", + "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT", + "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS", + "PROVIDER_L1_TECHNOLOGIES", + "PROVIDER_TELEMEDIA", + "PROVIDER_CDCOM_PROGOROD", + "PROVIDER_MIT_CITYGUIDE", + "PROVIDER_SUNCART", + "PROVIDER_MICROMAPPER", + "PROVIDER_RICHI", + "PROVIDER_FORUM44", + "PROVIDER_SEAT", + "PROVIDER_VALASSIS", + "PROVIDER_NAVICOM", + "PROVIDER_COLTRACK", + "PROVIDER_PSMA_AUSTRALIA", + "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA", + "PROVIDER_CA_GOVERNMENT", + "PROVIDER_STATISTICS_CANADA", + "PROVIDER_TOCTOC", + "PROVIDER_RMSI", + "PROVIDER_TRUE_TECHNOLOGY", + "PROVIDER_INCREMENT_P_CORPORATION", + "PROVIDER_GOJAVAS", + "PROVIDER_GEOINFORMATION_GROUP", + "PROVIDER_CYBERSOFT", + "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY", + "PROVIDER_EE_GOVERNMENT", + "PROVIDER_EE_MAA_AMET", + "PROVIDER_GASBUDDY", + "PROVIDER_DK_GOVERNMENT", + "PROVIDER_DK_GEODATASTYRELSEN", + "PROVIDER_MURCIA_REGION_GOVERNMENT", + "PROVIDER_CORREIOS", + "PROVIDER_WEST_WORLD_MEDIA", + "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION", + "PROVIDER_MEDICARE", + "PROVIDER_POLARIS", + "PROVIDER_TW_GOVERNMENT", + "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER", + "PROVIDER_NORDECA", + "PROVIDER_AFRIMAPPING", + "PROVIDER_OVERDRIVE", + "PROVIDER_PROVIDER_NETWORK_DIRECTORIES", + "PROVIDER_BR_MINISTERIO_DA_SAUDE", + "PROVIDER_DIGITAL_EGYPT", + "PROVIDER_INRIX", + "PROVIDER_ARPINDO", + "PROVIDER_IT_GOVERNMENT", + "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE", + "PROVIDER_EAST_END_GROUP", + "PROVIDER_INGEOLAN", + "PROVIDER_SEMACONNECT", + "PROVIDER_BLINK", + "PROVIDER_EVGO", + "PROVIDER_CHARGEPOINT", + "PROVIDER_TPL_TRAKKER", + "PROVIDER_OI", + "PROVIDER_MAPARADAR", + "PROVIDER_SINGAPORE_POST", + "PROVIDER_CHARGEMASTER", + "PROVIDER_TESLA", + "PROVIDER_VISICOM", + "PROVIDER_GEOLYSIS", + "PROVIDER_ZEPHEIRA", + "PROVIDER_HUBJECT", + "PROVIDER_PODPOINT", + "PROVIDER_CHARGEFOX", + "PROVIDER_KR_GOVERNMENT", + "PROVIDER_KR_MOLIT", + "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY", + "PROVIDER_CRITCHLOW", + "PROVIDER_EIFRIG", + "PROVIDER_GIREVE", + "PROVIDER_CN_NAVINFO", + "PROVIDER_JAPAN_CHARGE_NETWORK", + "PROVIDER_NOBIL", + "PROVIDER_INDIA_BANKS", + "PROVIDER_INDONESIA_ELECTION_KPU", + "PROVIDER_CAREERS360", + "PROVIDER_SOURCE_LONDON", + "PROVIDER_EVBOX", + "PROVIDER_JP_GOVERNMENT", + "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT", + "PROVIDER_YUMYUM", + "PROVIDER_HWW_AUSTRALIA", + "PROVIDER_CINERGY", + "PROVIDER_MTIME", + "PROVIDER_KULTUNAUT", + "PROVIDER_BLITZ", + "PROVIDER_PIA", + "PROVIDER_INTERPARK", + "PROVIDER_CINEMA_ONLINE", + "PROVIDER_BELBIOS", + "PROVIDER_MOVIESEER", + "PROVIDER_SODAMEDYA", + "PROVIDER_ATMOVIES", + "PROVIDER_HOTELBEDS", + "PROVIDER_VERICRED", + "PROVIDER_CIRRANTIC", + "PROVIDER_GOGO_LABS", + "PROVIDER_ELECTRIFY_AMERICA", + "PROVIDER_CMS_MPPUF", + "PROVIDER_DIGIROAD", + "PROVIDER_KONTEX_GEOMATICS", + "PROVIDER_NZ_GOVERNMENT", + "PROVIDER_NZ_LINZ", + "PROVIDER_NZ_DOC", + "PROVIDER_FASTNED", + "PROVIDER_DESTINY_CS", + "PROVIDER_IONITY", + "PROVIDER_EV_CONNECT", + "PROVIDER_PANPAGES", + "PROVIDER_ETECNIC", + "PROVIDER_VOLTA", + "PROVIDER_NISSAN_MEXICO", + "PROVIDER_BMW_GROUP_LATIN_AMERICA", + "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO", + "PROVIDER_VOLVO_CARS_BRASIL", + "PROVIDER_CHARGE_AND_PARKING", + "PROVIDER_DEDUCE_TECHNOLOGIES", + "PROVIDER_SK_TELECOM", + "PROVIDER_ECO_MOVEMENT", + "PROVIDER_GOOGLE_GMS", + "PROVIDER_EASYWAY", + "PROVIDER_PHYSICIAN_COMPARE", + "PROVIDER_HOSPITAL_COMPARE", + "PROVIDER_ENDOLLA_BARCELONA", + "PROVIDER_BE_CHARGE", + "PROVIDER_ONE_NETWORK", + "PROVIDER_CARENAV_DUPLEX", + "PROVIDER_CARENAV_POI", + "PROVIDER_IN_GOVERNMENT", + "PROVIDER_SURVEY_OF_INDIA", + "PROVIDER_E_ON", + "PROVIDER_ELECTRIFY_CANADA", + "PROVIDER_GRIDCARS", + "PROVIDER_DRIVECO", + "PROVIDER_GREEN_ACTION_STUDIOS", + "PROVIDER_GREEN_ACTION_STUDIO", + "PROVIDER_EVINY", + "PROVIDER_MASTERCARD", + "PROVIDER_VATTENFALL" + ], + "enumDescriptions": [ + "ABSTRACT The root of all provider types. This should never be present on an actual feature, but can be useful when calling InCategory.", + "not actually a legal value, used as sentinel", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "All new \"Google\" provider entries must be full ints. The next available ID is: 0x111730AA", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is an internal *only* provider meant for sending wipeout requests to mapfacts.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Never rely on source infos with this provider to identify whether or not a feature is a Prominent Place! Instead, use the proper API, localsearch_clustering::QualityTierHelper::IsProminentPlace().", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "The next new \"Google\" provider entries should be placed above.", + "UMBRELLA", + "", + "", + "", + "This is a testing provider for teams that wish to integrate with components of the Geo Data Infrastructure that require a valid provider. No production data should ever be sent using this provider.", + "", + "UMBRELLA", + "", + "", + "", + "UMBRELLA", + "0x1117F must not be used, since its range extends the PROVIDER_GOOGLE hierarchy.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Deprecated in favor of PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and PROVIDER_GOOGLE_GEO_TIGER (for categories).", + "", + "0x1117FF should not be used, since its range further extends the PROVIDER_GOOGLE hierarchy. aka Local AI.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "No data is obtained from this provider. It is only used to identify features that must be served on MapMaker.", + "", + "", + "", + "", + "", + "", + "0x1117FFF should not be used, since its range further extends the PROVIDER_GOOGLE hierarchy. Synthetically generated areas (sublocalities/neighborhoods/ postal codes/etc) based on dropped terms from approximate geocoding. More info on go/syntheticareas.", + "", + "", + "", + "Similar to Google Transit, a provider that aggregates positions of bicycle rental points that we have agreements with to show on maps", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This range has been depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above.", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "Small Scale International Boundary Lines", + "", + "NOAA", + "PGC", + "USDA", + "National Provider Identifier Registry", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "old name for PROVIDER_NAVIGO", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "See b/33687395", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "UMBRELLA", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "ABSTRACT", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "ABSTRACT", + "IBAMA", + "MMA", + "ANA", + "IBGE", + "FUNAI", + "DNIT", + "", + "", + "", + "", + "", + "ABSTRACT", + "Department of Cartography", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "0x12 and 0x120 are not to be used. OOO CET", + "ABSTRACT", + "Estonian Land Board", + "", + "ABSTRACT", + "Danish Geodata Agency", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "Ministry of land, infrastructure and transport, 국토교통부, Guktogyotongbu", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION.", + "", + "ABSTRACT", + "Land Information New Zealand", + "NZ Department of Conservation", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "UMBRELLA", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Note: Next available value is 0x126C." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreRankDetailsProto": { + "description": "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: http://wiki.corp.google.com/twiki/bin/view/Main/OysterRank", + "id": "GeostoreRankDetailsProto", + "properties": { + "signal": { + "description": "A list of signals. Each one is extracted separately by a SignalExtractor.", + "items": { + "$ref": "GeostoreRankSignalProto" + }, + "type": "array" + }, + "signalMixerType": { + "description": "The signal mixer that was used to calculate the rank.", + "enum": [ + "MIXER_INVALID", + "MIXER_MISSING", + "MIXER_ADDRESS_AREA", + "MIXER_ROUTE_SEGMENT_INTERSECTION", + "MIXER_POLITICAL_EUROPA", + "MIXER_POLITICAL_AREA", + "MIXER_POLITICAL", + "MIXER_COUNTRY_EUROPA", + "MIXER_COUNTRY_AREA", + "MIXER_COUNTRY", + "MIXER_LOCALITY", + "MIXER_LOCALITY_GEOWIKI", + "MIXER_LOCALITY_EUROPA", + "MIXER_LOCALITY_AREA", + "MIXER_RIVER", + "MIXER_LENGTH_WEBSCORE", + "MIXER_SKENERGY", + "MIXER_GEOCENTRE_GEOCODED_ADDRESS", + "MIXER_PLACERANK", + "MIXER_TRANSIT", + "MIXER_LOCALITY_EUROPA_AREA", + "MIXER_WEBSCORE", + "MIXER_LOCALITY_MAPDATA_SCIENCES", + "MIXER_SUBLOCALITY_MAPDATA_SCIENCES", + "MIXER_PEAK", + "MIXER_BUILDING", + "MIXER_RESERVATION", + "MIXER_AIRPORT", + "MIXER_AREA", + "MIXER_MANAGER", + "MIXER_TEST_1", + "MIXER_TEST_2", + "MIXER_TEST_3", + "MIXER_TEST_4", + "MIXER_TEST_5" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "DEPRECATED", + "", + "", + "DEPRECATED", + "", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "These should never be present on a feature.", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreRankSignalProto": { + "description": "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.", + "id": "GeostoreRankSignalProto", + "properties": { + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this signal." + }, + "rank": { + "description": "A value in the range [0, 1] estimating Oyster Rank according to this signal. Non-provider specific signals (e.g. SIGNAL_POPULATION) are interpreted by some common code in the ranking pipeline. Because of that, data providers should leave this field empty when setting such signals (so that the rank assignment can be uniform across all features regardless of contributing data providers). On the other hand, provider-specific signals (e.g. SIGNAL_ZENRIN_CITY_CATEGORY) are required to specify the rank field (it is not optional for them). That is because no code other than that of the provider itself will be able to fill in a meaningful value later on. We don't want clients to be reading from the raw_scalar / raw_string fields to interpret the data.", + "format": "float", + "type": "number" + }, + "rawScalar": { + "description": "The raw scalar value that was used to compute 'rank' above. The meaning of this attribute changes depending on the signal type.", + "format": "float", + "type": "number" + }, + "rawString": { + "description": "The raw string value that was used to compute 'rank' above. The meaning of this attribute changes depending on the signal type.", + "type": "string" + }, + "type": { + "enum": [ + "SIGNAL_UNKNOWN", + "SIGNAL_LENGTH", + "SIGNAL_AREA", + "SIGNAL_ADDRESS", + "SIGNAL_LISTING", + "SIGNAL_ROAD_PRIORITY", + "SIGNAL_POI_COUNT", + "SIGNAL_WEBSCORE", + "SIGNAL_PATHRADIUS_LENGTH_METERS", + "SIGNAL_PATHRADIUS_LENGTH_SEGMENTS", + "SIGNAL_PATHRADIUS_POPULARITY", + "SIGNAL_PEAK_ELEVATION_PROMINENCE", + "SIGNAL_ROAD_SEGMENT_COUNT", + "SIGNAL_POI_SCORE", + "SIGNAL_ATTRACTIONS_SCORE", + "SIGNAL_HAND_RANKED_LOCALITY_PROMINENCE", + "SIGNAL_POPULATION", + "SIGNAL_GDP", + "SIGNAL_EUROPA_CLASS", + "SIGNAL_RMF_SOURCE_RANK", + "SIGNAL_MDS_SOURCE_RANK", + "SIGNAL_MULTINET_SOURCE_RANK", + "SIGNAL_LOCALXML_MANUAL_RANK", + "SIGNAL_TRANSIT_LINE", + "SIGNAL_TRANSIT_TRAIN_DEPARTURE_COUNT", + "SIGNAL_TRANSIT_METRO_DEPARTURE_COUNT", + "SIGNAL_TRANSIT_BUS_DEPARTURE_COUNT", + "SIGNAL_TRANSIT_OTHER_DEPARTURE_COUNT", + "SIGNAL_TRANSIT_TRAIN_LINE_COUNT", + "SIGNAL_TRANSIT_METRO_LINE_COUNT", + "SIGNAL_TRANSIT_BUS_LINE_COUNT", + "SIGNAL_TRANSIT_OTHER_LINE_COUNT", + "SIGNAL_TRANSIT_STATION_LOCAL_RANK", + "SIGNAL_TRANSIT_STATION_GLOBAL_RANK", + "SIGNAL_ORION_LEVEL", + "SIGNAL_GEOCENTRE_ADDRESS_RANK", + "SIGNAL_GOOGLE_3DWAREHOUSE_RANK", + "SIGNAL_SKENERGY_CATEGORY", + "SIGNAL_GOOGLE_GEOWIKI_USER_RANK", + "SIGNAL_WIKIPEDIA_ARTICLES", + "SIGNAL_WIKIPEDIA_ARTICLES_IN_OFFICIAL_LANGUAGE", + "SIGNAL_KML_PLACEMARKS", + "SIGNAL_KML_SOURCES", + "SIGNAL_PANORAMIO_USERS", + "SIGNAL_GOOGLE_MAPSHOP_USERS", + "SIGNAL_GOOGLE_LOCALSEARCH_DIRECTORY_INFOS", + "SIGNAL_GOOGLE_MAPS_NAVBOOST_CLICKS", + "SIGNAL_GOOGLE_MAPS_NAVBOOST_CLICKTHROUGH_RATE", + "SIGNAL_GOOGLE_RBL_CLICKS", + "SIGNAL_GOOGLE_RBL_CLICK_FRACTION", + "SIGNAL_GOOGLE_AUTHORITYPAGE_PAGERANK", + "SIGNAL_GOOGLE_AUTHORITYPAGE_PAGERANK_CONFIDENCE", + "SIGNAL_GOOGLE_REVIEWS", + "SIGNAL_GOOGLE_WEB_QUERYVOL", + "SIGNAL_GOOGLE_WEBPAGE_REFERENCE_DOMAINS", + "SIGNAL_GOOGLE_LISTING_IMPRESSIONS", + "SIGNAL_GOOGLE_INFOWINDOW_VIEWS", + "SIGNAL_GOOGLE_DIRECTION_REQUESTS", + "SIGNAL_GOOGLE_HOMEPAGE_CLICKS", + "SIGNAL_GOOGLE_CHAIN_STORES", + "SIGNAL_FLICKR_USERS", + "SIGNAL_GOOGLE_LEANBACK_TOURS", + "SIGNAL_GOOGLE_LOCALSEARCH_PLACERANK", + "SIGNAL_WIKIPEDIA_WIKI_SCORE", + "SIGNAL_ZENRIN_CITY_CATEGORY", + "SIGNAL_ZENRIN_BUILDING_CLASS", + "SIGNAL_ZENRIN_PEAK_CLASS", + "SIGNAL_PLACE_INSIGHTS_LANDMARK", + "SIGNAL_PLACE_INSIGHTS_POPULARITY", + "SIGNAL_PLACE_INSIGHTS_PROMINENCE", + "SIGNAL_PLACE_INSIGHTS_APPROACHABILITY", + "SIGNAL_PLACE_INSIGHTS_TOTAL_ROAD_SEGMENT_USAGE" + ], + "enumDescriptions": [ + "This is reserved as a sentinel value. It should never be used. An unknown signal.", + "Magnitude for one-dimensional features like segments.", + "Magnitude for features with polygonal geometry. Derived from the number of other features that use this feature as an address component.", + "DEPRECATED Derived from the number of local business listings that, once reverse-geocoded, have this feature as an address component.", + "DEPRECATED", + "This signal will be set on all routes and is derived by the value of the priority of all segments composing the route. It is a \"derived\" signal instead of a canonical one because it is not only about inheriting some child segment's priority. We actually take into consideration the priorities of all children segments to come up with a raw value for this signal. Derived from the number of POI that use this feature as an address component.", + "DEPRECATED", + "This signal derived from the number of documents in DocJoin, which contains keywords of the source feature. For each raw feature, we extract keywords from the feature's name and address. We search the keywords in DocJoin (now only 4B) to get the number of webpages which contains all the keywords of the feature, eg, for Quanjude in Beijing which is a famous restaurant in China, we consider Beijing and Quanjude as its keywords, the page containing both Beijing and Quanjude will be counted in. The number will be mapped by logarithm function into [0, 1]. This signal is based on a simple assumption: the more the name appears in webpage, the more famous it is. These signals are calculated by the Path Radius algorithm, using Pathfinder to figure out in how big a neighborhood this segment is used as a thoroughfare. The popularity is simply the fraction of all paths that use this segment.", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "Signal based on elevation and prominence values of peaks.", + "Signal based on the number of road segments referring a feature. The number could be obtained by either looking RELATION_CONTAINED_BY relation or counting children of the feature.", + "Signal based on placerank values of establishments that use this feature as an address or located within it (as determined by relations).", + "Signal based on placerank values of (tourist) attraction establishments that are related to this feature through containment.", + "Signal indicating a city of particular prominence independent of its other attributes. Currently only implemented for Japanese localities, primarily based on official government city statuses.", + "", + "", + "NOTE(jdkim): All rank signals below are provider specific ones, so we use this enum value to identify the enum range for provider specific signals.", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "", + "Score of a particular station in relation to the stations near it. E.g., when displaying list of nearby stations we could prioritize the higher ranked ones.", + "Score of a particular station in relation to all the stations globally. This is valuable for data cleanups, modeling, and proactive checks that could be targeted at the \"Top Stations\" to ensure high impact.", + "", + "DEPRECATED", + "DEPRECATED", + "Rank derived from feature popularity asserted by users. Higher rank values are almost always moderated to verify accuracy, hence reliable.", + "DEPRECATED", + "These are primarily used for computing Placerank, which is now signal 3200.", + "DEPRECATED", + "", + "", + "DEPRECATED", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "", + "DEPRECATED", + "", + "", + "", + "DEPRECATED", + "", + "", + "", + "", + "", + "DEPRECATED", + "", + "", + "Signal based on WIKI_SCORE, which is brought by DataSourceProvider::PROVIDER_WIKIPEDIA.", + "DEPRECATED Signal for buildings in Japan. This signal is a scale of the map this building label should be rendered.", + "DEPRECATED Signal for peaks in Japan. This signal is a scale of the map this peak label should be rendered.", + "DEPRECATED", + "Place Insights landmarkiness fundamental aspect. This score combines the popularity and prominence aspects below with the Kerouac tourist score. Details: go/plank-landmark", + "Place Insights popularity fundamental aspect. This score combines physical visits (Hulk) and direction searches. Details: go/plank-popularity", + "Place Insights prominence fundamental aspect. This score is based on WebRef and the number of photos of a place. Details: go/plank-prominence DEPRECATED: No longer populated, because the data sources were deprecated. Not yet marked as deprecated because some features might still contain the data.", + "Place Insights approachability fundamental aspect. This score indicates whether users can interact with a place without appointment. It is computed from the GCIDs of the place. Details: go/plank-approachability", + "Number of times a user drives the entire length of the segment according to snapped GLS tracks. This is obtained by aggregating the snapped GLS data generated by the traffic team. Design document: go/aggregated-road-traffic-mapfacts" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreRawDataProto": { + "description": "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.", + "id": "GeostoreRawDataProto", + "properties": { + "key": { + "description": "The key associated with this data item. For source data in shape file format, this will typically be a column name. Keys need to be unique with respect to a particular data source (see DataSourceProto), but they do not need to be globally unique. You can look up the documentation for a key (e.g. a longer label and description) by following the source_id link of the parent SourceInfoProto, which takes you to a TYPE_DATA_SOURCE feature, and then looking up the corresponding RawMetadataProto object for this key in that feature's optional data_source field.", + "type": "string" + }, + "valueString": { + "description": "All data items are represented as strings, the logic being that it is easy to convert other data types to strings, and there is no need to access this data efficiently.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreRawMetadataProto": { + "id": "GeostoreRawMetadataProto", + "properties": { + "conflationMethod": { + "description": "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.", + "enum": [ + "CONFLATION_PICK_FIRST_VALUE", + "CONFLATION_UNION_CSV", + "CONFLATION_SUM" + ], + "enumDescriptions": [ + "Simply picks first value from the set of values to be conflated together. If target feature already has a value, then that is the value kept.", + "Parses all values as a comma-separated lists and takes the union of all elements from all lists (e.g. no duplicates) to create a new comma- separated list.", + "Parses all values as int32s and outputs their sum as the final value." + ], + "type": "string" + }, + "description": { + "description": "Self-contained documentation about what this field represents and how its values are encoded.", + "type": "string" + }, + "key": { + "description": "The key being described.", + "type": "string" + }, + "label": { + "description": "A longer, human-readable name associated with this key. The label might be used in a data explorer tool, for example.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreRectProto": { + "description": "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 \u003e 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 \u003e hi.latitude, the latitude range is empty.", + "id": "GeostoreRectProto", + "properties": { + "hi": { + "$ref": "GeostorePointProto" + }, + "lo": { + "$ref": "GeostorePointProto" + } + }, + "type": "object" + }, + "GeostoreRegulatedAreaProto": { + "description": "A collection of information that applies to a polygonal area.", + "id": "GeostoreRegulatedAreaProto", + "properties": { + "restriction": { + "description": "The set of restrictions that apply to a zone. These restrictions may limit the routability of every segment contained within the defined feature.polygon. Repeated restrictions are treated collectively as an OR meaning that segments in the zone are only routable if none of the restrictions apply. If any segments within the defined polygon should not have these restrictions applied, they must list this regulated area's feature id in their feature.exempt_regulated_area field.", + "items": { + "$ref": "GeostoreRestrictionProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreRelationProto": { + "description": "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.", + "id": "GeostoreRelationProto", + "properties": { + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this relation." + }, + "otherFeatureCountryCode": { + "description": "If and only if the other feature is of TYPE_COUNTRY, the 2-letter country code. This is the FLAG_COUNTRY_CODE_2 name of the country component.", + "type": "string" + }, + "otherFeatureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The feature ID of the feature to which we're relating. WARNING: the related feature does not necessarily have a bound that encloses this feature, so in a bucketing MapReduce, you may not be able to follow all relationships. Relations that use strong references are annotated above but you can also refer to IsRelationStrong() in geostore/base/public/relation.h." + }, + "otherFeatureName": { + "description": "RESERVED", + "items": { + "$ref": "GeostoreNameProto" + }, + "type": "array" + }, + "otherFeatureTerritorialAdministrator": { + "description": "If and only if the other feature is of TYPE_DISPUTED_AREA, the territorial administrator found in its GeopoliticalAttachmentProto.administered_by field, if any. Since this string is copied exactly, it may be a 2-letter country code or another type of descriptive string.", + "type": "string" + }, + "otherFeatureType": { + "description": "The type of the feature to which we're relating.", + "format": "int32", + "type": "integer" + }, + "overlapFraction": { + "description": "** DEPRECATED ** If relation is exactly RELATION_OVERLAPS but not any of its subcategories, overlap_fraction contains an estimate of the fraction of the geometry of this feature that intersects with the other feature, ranging from 0.0 to 1.0. Note that this is a rough estimate based on cell coverings, and may not be very accurate. In particular, values of 0.0 and 1.0 are possible, even though in principle they should not be.", + "format": "float", + "type": "number" + }, + "relation": { + "description": "The relationship of the feature that contains this RelationProto to the feature other_feature_id. Note the relation_is_reversed field below. Some relations imply weak references, other strong ones. Strong references are annotated above but you can also refer to IsRelationStrong() in geostore/base/public/relation.h.", + "enum": [ + "RELATION_OVERLAPS", + "RELATION_CONTAINED_BY", + "RELATION_EQUAL_TO", + "RELATION_POLITICAL_DEPRECATED", + "RELATION_CAPITAL_OF", + "RELATION_DISAMBIGUATED_BY", + "RELATION_NEIGHBOR_OF", + "RELATION_OPPOSITE_TO", + "RELATION_NEXT_TO", + "RELATION_RIGHT_OF", + "RELATION_LEFT_OF", + "RELATION_BEHIND", + "RELATION_IN_FRONT_OF", + "RELATION_SAME_BUILDING", + "RELATION_ABOVE", + "RELATION_BELOW", + "RELATION_NEAR", + "RELATION_ORGANIZATIONALLY_PART_OF", + "RELATION_DEPARTMENT_OF", + "RELATION_WORKS_AT", + "RELATION_INDEPENDENT_ESTABLISHMENT_IN", + "RELATION_ON_LEVEL", + "RELATION_OCCUPIES", + "RELATION_BUSINESS_LIFE_CYCLE", + "RELATION_BUSINESS_MOVED", + "RELATION_BUSINESS_REBRANDED", + "RELATION_MEMBER_OF_CHAIN", + "RELATION_AUTHORIZED_DEALER_FOR_CHAIN", + "RELATION_SUBSIDIARY_OF", + "RELATION_PRIMARILY_OCCUPIED_BY", + "RELATION_VARIATION", + "RELATION_HAS_VARIANT", + "RELATION_VARIANT_OF", + "RELATION_VARIANT_SIBLING", + "RELATION_CLIENT_DEFINED" + ], + "enumDescriptions": [ + "In the real world, this feature's geographic extent intersects the other feature's, but does not contain it. Note that the presence or absence of a relation may contradict the actual geometry in the FeatureProto. In these cases, the client should assume that the geometry of the feature is imprecise. Certain pairs of features are considered disjoint even if the geometries overlap. Allowed source types: - TYPE_ANY (but with geometry or children) Allowed destination types: - TYPE_ANY (but with polygonal geometry)", + "In the real world, the geographical extent of the feature is contained by that of the other feature. Note that this relation implies overlap. As with overlap, the frame-of-reference is the real world, not necessarily the (imprecise) geometry in the FeatureProtos. There may be other semantic rules that govern the assignment of this relation. Two features cannot contain each other - instead they will have a RELATION_EQUAL_TO relation (see below). strong reference", + "In the real world, this feature's geographic extent is exactly equal to the other feature's geographic extent. Note that this relation implies containment and overlap.", + "DEPRECATED", + "This feature is the capital of the other feature. Allowed source types: - TYPE_POLITICAL Allowed destination types: - TYPE_POLITICAL (of higher political level) strong reference", + "ABSTRACT, RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "RESERVED", + "ABSTRACT", + "Used primarily to list co-existing departments of businesses such as universities, hospitals, department stores, etc. This is set from feature A to feature B when A is physically located within the boundaries of the compound feature occupied by B, AND A is a subsidiary or department of B (i.e. both have the same management/ownership). e.g. department -\u003e hospital, department -\u003e university Allowed source types: - TYPE_ESTABLISHMENT_POI Allowed destination types: - TYPE_ESTABLISHMENT_POI", + "Used to relate an individual practitioner (doctor, lawyer, etc.) with the business they work at (hospital, law firm, etc.) Allowed source types: - TYPE_ESTABLISHMENT_POI - TYPE_ESTABLISHMENT_SERVICE Allowed destination types: - TYPE_ESTABLISHMENT_POI", + "Used primarily for the \"mall directory\" use-case, this is set from feature A to feature B when A is physically located within the boundaries of the compound feature occupied by B AND A as an entity is independent of B, i.e. A and B have different management/ownership. e.g. store -\u003e mall Allowed source types: - TYPE_ESTABLISHMENT_POI Allowed destination types: - TYPE_ESTABLISHMENT_POI", + "The feature that represents the level/floor the feature exists on. Allowed source types: - TYPE_CARTOGRAPHIC (at most 1 such relation) - TYPE_COMPOUND_SECTION (at most 1 such relation) - TYPE_ENTRANCE (at most 1 such relation) - TYPE_ESTABLISHMENT_POI - TYPE_INTERSECTION (at most 1 such relation) - TYPE_SEGMENT (at most 2 such relations) - TYPE_TERMINAL_POINT (at most 1 such relations) Allowed destination types: - TYPE_LEVEL strong reference", + "This feature physically occupies the other feature. Allowed source types: - TYPE_ESTABLISHMENT_POI Allowed destination types: - TYPE_COMPOUND Consumers should use the geometry of the target feature instead of the geometry of this feature. strong reference", + "ABSTRACT", + "e.g. “espn zone\" moved from time square to Boston. The feature representing the business at the old location will refer to the one representing the business at the new location with this relation type. If a feature has this relation, its existence should show that the feature has closed and the close reason should be set to MOVED. Allowed source types: - TYPE_ESTABLISHMENT_POI Allowed destination types: - TYPE_ESTABLISHMENT_POI", + "e.g. \"Holiday Inn\" rebranded to \"Double Tree\". The feature representing \"Holiday Inn\" will refer to the feature representing \"Double Tree\" with this relation type. If a feature has this relation, its existence should show that the feature has closed and the close reason should be set to REBRANDED. Allowed source types: - TYPE_ESTABLISHMENT Allowed destination types: - TYPE_ESTABLISHMENT", + "Used by specific chain stores/franchises to refer to their parent chain. e.g. an individual Walmart store is a member of the \"Walmart\" chain. Transit stations can be members of multiple chains (transit agencies). All other establishments can have at most one explicit RELATION_MEMBER_OF_CHAIN relation. Subtypes may have different requirements. TYPE_TRANSIT_AGENCY is a temporarily allowed destination type while we migrate transit stations \u003c-\u003e transit agencies to a new representation (b/197741661) Allowed source types: - TYPE_ESTABLISHMENT Allowed destination types: - TYPE_BUSINESS_CHAIN - TYPE_TRANSIT_AGENCY strong reference", + "Indicates that a feature sells merchandise for a given brand chain (e.g. Honda vehicles). Source currently restricted to features with gcid:car_dealer. strong reference", + "Used by specific sub chain to refer to their parent chain. e.g. \"Walmart Pharmacy\" chain is a member of the \"Walmart\" chain. Currently this is only used by transit agencies. Talk to chains-eng team before using this relation type on other chains. A business chain can have at most one such relation. Allowed source types: - TYPE_BUSINESS_CHAIN Allowed destination types: - TYPE_BUSINESS_CHAIN strong reference", + "Indicates which logical entity is the main occupant of a compound. A compound can have at most one such relation, and the target feature for that relation must refer back to the compound via a RELATION_OCCUPIES relation. Allowed source types: - TYPE_COMPOUND Allowed destination types: - TYPE_ESTABLISHMENT_POI strong reference", + "ABSTRACT, DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "RESERVED" + ], + "type": "string" + }, + "relationIsReversed": { + "description": "RESERVED", + "type": "boolean" + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a relation. Never set in MapFacts." + } + }, + "type": "object" + }, + "GeostoreRestrictionGroupProto": { + "description": "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.", + "id": "GeostoreRestrictionGroupProto", + "properties": { + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this restriction group." + }, + "segment": { + "description": "FeatureId of all segments that have a RestrictionProto referring back to this RestrictionGroup.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreRestrictionProto": { + "description": "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 an 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.", + "id": "GeostoreRestrictionProto", + "properties": { + "autonomousDrivingProducts": { + "description": "The restriction only applies in these specific autonomous driving product scenarios. NOTE: This should only be set on restrictions with TRAVEL_AUTONOMOUS_VEHICLE travel mode.", + "items": { + "enum": [ + "UNKNOWN", + "HD_L4", + "HD_L2", + "ADAS", + "AUTO_DRIVING_EXPERIENCE" + ], + "enumDescriptions": [ + "Indicates that specific product requirements are unknown. It is best to assume that this applies to all autonomous driving scenarios.", + "HD Maps Level 4 product.", + "HD Maps Level 2 product.", + "General advanced driver assist scenario.", + "Geo Auto Driving Experience products (go/dx)." + ], + "type": "string" + }, + "type": "array" + }, + "intersectionGroup": { + "$ref": "GeostoreFeatureIdProto", + "description": "Actually *required* if style=STYLE_IN_OUT, otherwise forbidden. Typically the intersection group type is artifact, but either artifact or logical groups can be used for STYLE_IN_OUT restrictions." + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this restriction." + }, + "restrictionGroup": { + "$ref": "GeostoreFeatureIdProto", + "description": "Restriction group this restriction belongs to." + }, + "schedule": { + "$ref": "GeostoreTimeScheduleProto", + "description": "When specified, restriction applies only at particular times (operating hours or times of the year: reversing lanes, seasonal roads, no left turns from 3-5pm Mon-Fri except holidays). Otherwise, restriction is in effect at all times." + }, + "scope": { + "description": "The scope that the restriction applies to. - SCOPE_DIRECTION means the segment/sibling pair is restricted in the direction of the segment that contains this RestrictionProto. For segment/sibling pairs with pedestrian facilities (and thus side-of-road routing) the RestrictionProto restricts both facilities in the direction of the segment (assuming that the restriction applies to travel mode TRAVEL_PEDESTRIAN). - SCOPE_SIDE means the RestrictionProto applies only to the side of road that the containing segment represents. That sibling's pedestrian facility is restricted in both directions. Schema constraints: - SCOPE_SIDE must be set if and only if travel_mode == [TRAVEL_PEDESTRIAN] and the segment containing the restriction has PEDESTRIAN_FACILITY_PRESENT. Such restrictions must have no subpath. - All other restrictions must have this field set to SCOPE_DIRECTION (whether explicitly or implicitly). This distinction is necessary for cases such as pedestrian facility on one-way segment/sibling roads.", + "enum": [ + "SCOPE_DIRECTION", + "SCOPE_SIDE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "style": { + "description": "Restriction Style defines the semantics of the subpath field, as defined above in the documentation of subpath.", + "enum": [ + "STYLE_CONTIGUOUS", + "STYLE_SINGLE", + "STYLE_TURN", + "STYLE_IN_OUT" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "subpath": { + "description": "\"subpath\" specifies the GeoStore segments that this restriction applies to, according to the restriction_style field below. Segments that are referenced by this subpath field also refer to this feature back via the same subpath field. For all styles of restriction, all segments in the subpath must have identical copies of the restriction. In other words, restrictions are duplicated along every segment in the subpath. Note that subpaths of length 1 do not have any purpose and are disallowed. Note that it is possible to represent restrictions either using STYLE_CONTIGUOUS, or depending on the length of the subpath, one of the more specific STYLE_SINGLE, STYLE_TURN, or STYLE_IN_OUT. New code should use the more specific alternatives if possible, as they support instant updates. For restriction_style == STYLE_CONTIGUOUS (the default): \"subpath\" can either be empty, for a single-segment restriction, or it specifies exactly the sequence of segments which this restriction applies to. The subpath may be used to specify a turn restriction (a subpath of length 2) or to prohibit more complex maneuvers. For example, when merging onto a road from the right-hand side it may not be possible to make an immediate left turn due to insufficient time to cross the intervening lanes or the presence of a physical barrier. This would be indicated by a subpath restriction of length 3 or more. For restriction_style == STYLE_SINGLE: The subpath field of the Restriction must be empty. The restriction applies only to the segment it is attached to. There must not be an intersection group specified. For restriction_style == STYLE_TURN: The subpath field of the Restriction must contain exactly two segments. The first is called the \"in_segment\", the second is the \"out_segment\". They must be contiguous, i.e. the end intersection of the in_segment is the start intersection of the out_segment. The restriction applies only to a direct maneuver from the in_segment to the out_segment. Other paths from the in_segment to the out_segment are not restricted. There must not be an intersection group specified. For restriction_style == STYLE_IN_OUT: The subpath field of the Restriction must contain exactly two segments. The first is called the \"in_segment\", the second is the \"out_segment\". Note that the two segments define paths, but may not actually be one. The end intersection of the in_segment must be in an intersection group which also contains the start intersection of the out_segment. The in- and out-segments are not required to be adjacent, but may be. Either way, the restriction applies to any path from the in_segment to the out_segment through the intersection group, not just direct turns. The intersection_group must be specified. Note that clients which read restrictions and need to know which paths are restricted by a given IN_OUT restriction must expand the IN_OUT restriction by finding all paths through the intersection group from the in_segment to the out_segment.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a restriction. Never set in MapFacts." + }, + "travelMode": { + "description": "Restriction applies only to the given travel modes. This field should always be set, but may be missing in old data. WARNING: Restrictions with no travel modes are DEPRECATED. Historically, no travel modes has meant \"all travel modes\", except they didn't really even mean that, because Pathfinder would use a complex set of heuristics to interpret the \"correct\" travel modes. Pathfinder currently (last updated August 2013) has heuristics to cope with incomplete data that reduce or extend application of the specified restrictions to pedestrians or bicycles. We are actively working to remove these heuristics and replace them with explicit, correct travel modes in the data. See b/8746491.", + "items": { + "enum": [ + "TRAVEL_ANY", + "TRAVEL_MOTOR_VEHICLE", + "TRAVEL_AUTO", + "TRAVEL_CARPOOL", + "TRAVEL_MOTORCYCLE", + "TRAVEL_BUS", + "TRAVEL_TRUCK", + "TRAVEL_DELIVERY", + "TRAVEL_TAXI", + "TRAVEL_EMERGENCY", + "TRAVEL_THROUGH_TRAFFIC", + "TRAVEL_AUTONOMOUS_VEHICLE", + "TRAVEL_PEDESTRIAN", + "TRAVEL_BICYCLE" + ], + "enumDescriptions": [ + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "clang-format on The type of restriction. This is not a condition, but rather tells you what kind of restriction it is. This field should always be set.", + "enum": [ + "RESTRICTION_TRAVEL_RESTRICTED", + "RESTRICTION_ILLEGAL", + "RESTRICTION_PHYSICAL", + "RESTRICTION_LOGICAL", + "RESTRICTION_GATE", + "RESTRICTION_CONSTRUCTION", + "RESTRICTION_SEASONAL_CLOSURE", + "RESTRICTION_PRIVATE", + "RESTRICTION_WRONG_WAY", + "RESTRICTION_TERMINAL", + "RESTRICTION_PAYMENT_REQUIRED", + "RESTRICTION_TOLL_BOOTH", + "RESTRICTION_USAGE_FEE_REQUIRED", + "RESTRICTION_ENTRANCE_FEE_REQUIRED", + "RESTRICTION_ADVISORY", + "RESTRICTION_HIGH_CRIME", + "RESTRICTION_POLITICALLY_SENSITIVE", + "RESTRICTION_DISTURBED_BY_MAINTENANCE", + "RESTRICTION_CHECKPOINT", + "RESTRICTION_REGION_SPECIFIC" + ], + "enumDescriptions": [ + "Travel or maneuver is prohibited or extremely limited. This type's value may be used for restrictions which do not fall into a more specific subcategory, but the effect is that travel or maneuver is prohibited.", + "Travel or maneuver is prohibited due to traffic regulations. Includes restrictions due to explicit road markings. E.g., U-turns prohibited in marked intersections. NOTE: In the event that a restriction by regulations is enforced by a physical barrier, use RESTRICTION_PHYSICAL instead.", + "A permanent physical barrier prevents maneuver. This restriction type may not be used for restrictions with empty subpaths.", + "Maneuver is prohibited based on logical inference from other restrictions on segments or lanes. This restriction type may not be used for restrictions with empty subpaths. DEPRECATED", + "A gate or other moveable barrier prevents direct access. NOTE: Travel may still be allowed in certain circumstances. Use RESTRICTION_PRIVATE in lieu of RESTRICTION_GATE for segments that may still be routed on in certain circumstances. DEPRECATED", + "Road is closed due to road maintenance (e.g. repaving, adding more lanes) and cannot be used for routing.", + "Travel is prohibited for the duration of some season. E.g., due to ice/snow in the winter.", + "Road has signage discouraging or prohibiting use by the general public. E.g., roads with signs that say \"Private\", or \"No trespassing.\" NOTE: Use this type if travel is still be allowed in certain circumstances (e.g., legitimate visits to a place reachable by restricted roads only). Use RESTRICTION_ILLEGAL if travel is forbidden under all circumstances. This restriction type may not be used for restrictions with non-empty subpaths.", + "Travel over this segment is prohibited because of signage indicating one-way directionality in the opposite direction. This restriction type may not be used for restrictions with non-empty subpaths. Travel over this segment should be avoided at all costs unless the destination is on the segment. This restriction type may be used only for restrictions of STYLE_SINGLE.", + "RESERVED", + "", + "This restriction type may be used only for restrictions of STYLE_TURN, or STYLE_CONTIGUOUS with a subpath of length 2. The intersection at which the turn is restricted is the place of the toll booth.", + "Traveling on the associated subpath requires a fee to be paid.", + "Similar to RESTRICTION_USAGE_FEE_REQUIRED but instead of a fee for the usage, the fee is required for entering a special area (e.g. an amusement park). Also in contrast to RESTRICTION_USAGE_FEE_REQUIRED this restriction is supposed to be applied only to the segments that enter into the isolated restricted area from the outer world. Therefore there are two important points to consider when modeling data this way: 1) Every path that (exactly once) enters the restricted area should have exactly one such restriction (it does not matter whether it is a segment or subpath restriction). 2) All entrances have to be modeled consistently. It is recommended that the restriction is consistently applied to paths entering the area and not applied to paths leaving the area. NOTE: The above points are important because an additive penalty is applied for each individual restriction that appear on a path.", + "Restrictions in the RESTRICTION_ADVISORY category refer to paths where travel is permitted, but may not be prudent or is cumbersome. Since this is often a matter of opinion, clients may choose not to make use of this information or not display it directly to the user.", + "", + "", + "Segments with RESTRICTION_DISTURBED_BY_MAINTENANCE indicate that the road undergoes maintenance, however (unlike RESTRICTION_CONSTRUCTION) the segment will be used for routing.", + "An inland location where travelling is expected to be interrupted by authorities to inspect passengers and/or goods. This restriction type may only be used for restrictions with style STYLE_SINGLE.", + "Restrictions with the RESTRICTION_REGION_SPECIFIC category signify restrictions that are unique to a particular region, cannot currently be modeled through RestrictionProto, and/or have semantics that differ if in a particular region (such as car emission restrictions). These restrictions are specified on their restriction group, a traffic zone. Evaluating applicability of these restrictions requires an additional library located in the geostore/base/internal/specialized_restriction/ directory. That library controls the application of the restriction and will generally disregard data on this RestrictionProto. For example, go/cabrio-restriction-schema specifies that this proto should set TRAVEL_MOTOR_VEHICLE because other values have no effect; likewise, TimeScheduleProto has no effect. In truth this restriction's only job is to carry a restriction_group reference." + ], + "type": "string" + }, + "vehicleAttributeFilter": { + "$ref": "GeostoreVehicleAttributeFilterProto", + "description": "The restriction only applies to vehicles that meet all of the attributes defined here. If this is empty, it does not affect the scope of the restriction." + } + }, + "type": "object" + }, + "GeostoreRightsStatusProto": { + "description": "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/Rights.swig instead of accessing this proto directly.", + "id": "GeostoreRightsStatusProto", + "properties": { + "fieldWithRights": { + "items": { + "$ref": "GeostoreFieldWithRightsProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreRoadConditionalProto": { + "description": "A RoadConditionalProto defines conditions that affect when the road traversal information is applicable.", + "id": "GeostoreRoadConditionalProto", + "properties": { + "timeSchedule": { + "$ref": "GeostoreTimeScheduleProto", + "description": "Specifies what times the information is applicable. This can be specific times (3-5 PM) or days of the week (Mon - Fri), as well as more general times like school hours, dusk to dawn, etc. If no value is set, the restriction is applicable at all times." + }, + "vehicleAttribute": { + "$ref": "GeostoreVehicleAttributeFilterProto", + "description": "Additional attributes that apply to the applied vehicle types." + }, + "vehicleType": { + "description": "Restrictions applying to specific types of vehicles.", + "items": { + "enum": [ + "UNKNOWN", + "ANY", + "CAR", + "MOTORCYCLE", + "TRUCK", + "BUS" + ], + "enumDescriptions": [ + "Default proto value, this value will never be set in MapFacts.", + "", + "", + "", + "Note: The exact definition of a truck varies by city, but it usually refers to vehicles with three or more axles. This value does not necessarily apply to all commercial vehicles or vehicles colloquially referred to as trucks (eg. pickup trucks).", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreRoadMonitorProto": { + "description": "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.", + "id": "GeostoreRoadMonitorProto", + "properties": { + "monitoredRoad": { + "description": "The TYPE_ROAD segment features that this road monitor may observe.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreRoadSignComponentProto": { + "description": "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.", + "id": "GeostoreRoadSignComponentProto", + "properties": { + "featureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The id of the feature referred to by this component, typically the route or locality feature this sign points towards. In the ASCII art example above, this field would contain the id for the routes A11 and E50 and the localities Chartres and Paris in the corresponding component." + }, + "featureType": { + "description": "The type of the feature referred to by this component. If feature_id is specified type of that feature should be the same as this field.", + "format": "int32", + "type": "integer" + }, + "majorPosition": { + "description": "This is the \"major\" position of this component within the set of components that make up a sign. This number can be thought of as the \"row\" of the sign on which the component appears, but no guarantees are made that there is a one-to-one mapping between \"major_position\" and the rows of information on the actual sign being modeled. A \"major_position\" value of zero would indicate that the component is near the top of the sign.", + "format": "int32", + "type": "integer" + }, + "minorPosition": { + "description": "This is the position of a component within the components of a sign that share a common \"major_position\". It can be though of as the \"column\" of the component, but like \"major_position\", no guarantees are made regarding its mapping to reality. For data sources that don't provide enough information to determine a component's major and minor positions, major position should be populated and minor position should not be present. A \"minor_position\" value of zero would indicate that the component is near the \"beginning\" of the sign. In countries where signs are read from left to right, \"minor_position\" zero would be near the left side of the sign.", + "format": "int32", + "type": "integer" + }, + "routeDirection": { + "description": "The direction of traffic for the referenced TYPE_ROUTE feature.", + "enum": [ + "DIRECTION_NONE", + "DIRECTION_NORTH", + "DIRECTION_EAST", + "DIRECTION_SOUTH", + "DIRECTION_WEST", + "DIRECTION_NORTHEAST", + "DIRECTION_NORTHWEST", + "DIRECTION_SOUTHEAST", + "DIRECTION_SOUTHWEST", + "DIRECTION_INNER", + "DIRECTION_OUTER" + ], + "enumDescriptions": [ + "DIRECTION_NONE value is reserved and only present there to avoid using a meaningful entry as the default value. RESERVED", + "", + "", + "", + "", + "", + "", + "", + "", + "Inner/Outer loop. Short names are not supported. The actual direction depends on the local driving rule (right-handed vs. left-handed). TODO(b/161314216) If you need an explicit loop direction or a road sign uses clockwise/counterclockwise, don't use INNER/OUTER but consider adding DIRECTION_CLOCKWISE and DIRECTION_COUNTERCLOCKWISE instead.", + "" + ], + "type": "string" + }, + "text": { + "$ref": "GeostoreNameProto", + "description": "If this sign component is of type \"TYPE_TEXT\", this field contains the text of the component. A NameProto is used to allow language and flags to be associated with the text." + }, + "type": { + "description": "This type of content represented by this sign component.", + "enum": [ + "TYPE_TEXT" + ], + "enumDescriptions": [ + "This component is comprised of a single piece of text. The \"text\" field must be present on sign components of this type." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreRoadSignProto": { + "description": "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.", + "id": "GeostoreRoadSignProto", + "properties": { + "component": { + "description": "The list of components for a single road sign. A sign may be composed of multiple components, each with its own position and content.", + "items": { + "$ref": "GeostoreRoadSignComponentProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreRouteAssociationProto": { + "description": "This protocol buffer holds metadata about the association between a segment and a route.", + "id": "GeostoreRouteAssociationProto", + "properties": { + "displayPreference": { + "description": "clang-format on", + "enum": [ + "DISPLAY_PREFERRED", + "DISPLAY_BEST", + "DISPLAY_OK", + "DISPLAY_HIDE" + ], + "enumDescriptions": [ + "These routes should be displayed along this segment.", + "Among the preferred routes, this is the best one to display. There can be at most one of these per segment.", + "These are also valid route names to display, but clients should choose PREFERRED routes if available.", + "These routes should not be displayed." + ], + "type": "string" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the route association." + }, + "route": { + "$ref": "GeostoreFeatureIdProto", + "description": "Identifies the route feature to which this metadata applies. This is one of the routes the segment refers to via the SegmentProto.route field." + }, + "routeDirection": { + "description": "The direction of the TYPE_ROUTE feature in this route association. A small number of countries (mostly just the United States, Mexico, and Canada) use directional routes. For example, in the United States highway US-1 is referred to as US-1 North or US-1 South on the sides where flow of traffic moves in those directions.", + "enum": [ + "DIRECTION_NONE", + "DIRECTION_NORTH", + "DIRECTION_EAST", + "DIRECTION_SOUTH", + "DIRECTION_WEST", + "DIRECTION_NORTHEAST", + "DIRECTION_NORTHWEST", + "DIRECTION_SOUTHEAST", + "DIRECTION_SOUTHWEST", + "DIRECTION_INNER", + "DIRECTION_OUTER" + ], + "enumDescriptions": [ + "DIRECTION_NONE value is reserved and only present there to avoid using a meaningful entry as the default value. RESERVED", + "", + "", + "", + "", + "", + "", + "", + "", + "Inner/Outer loop. Short names are not supported. The actual direction depends on the local driving rule (right-handed vs. left-handed). TODO(b/161314216) If you need an explicit loop direction or a road sign uses clockwise/counterclockwise, don't use INNER/OUTER but consider adding DIRECTION_CLOCKWISE and DIRECTION_COUNTERCLOCKWISE instead.", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreRouteProto": { + "description": "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).", + "id": "GeostoreRouteProto", + "properties": { + "childType": { + "description": "The feature type of the route children. Should be set if and only if all children are of the same feature type.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostoreSchoolDistrictProto": { + "description": "This protocol buffer holds school district specific attributes for features of TYPE_SCHOOL_DISTRICT.", + "id": "GeostoreSchoolDistrictProto", + "properties": { + "type": { + "enum": [ + "TYPE_UNIFIED", + "TYPE_ELEMENTARY", + "TYPE_SECONDARY" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreSegmentPathProto": { + "description": "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.", + "id": "GeostoreSegmentPathProto", + "properties": { + "subpath": { + "description": "Specifies a sequence of feature ids of GeoStore segments. The feature ids are ordered. The path \"AB\" is not the same as the path \"BA\". The segments along the path are assumed to be connected via the appropriate intersections. The segment features that are referenced by this subpath refer to this feature back via the road_sign field in segment proto extension.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreSegmentProto": { + "description": "--------------------------------------------------------------------------- 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/mr-mergesegments.cc) 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/process-high-priority-roads.cc) 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 mr-mergesegments_test.cc and maps/render/process-high-priority-roads_test.cc or you will break the VersaTile build. ---------------------------------------------------------------------------", + "id": "GeostoreSegmentProto", + "properties": { + "advisoryMaximumSpeed": { + "items": { + "$ref": "GeostoreAppliedSpeedLimitProto" + }, + "type": "array" + }, + "altitude": { + "description": "RESERVED", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "avgSpeedKph": { + "description": "The average speed that should be expected along this route under normal conditions, in kilometers per hour. (Hopefully we'll replace this with something a lot more sophisticated.)", + "format": "float", + "type": "number" + }, + "avgSpeedKphMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the average speed." + }, + "barrier": { + "description": "clang-format on", + "enum": [ + "BARRIER_NONE", + "BARRIER_PRESENT", + "BARRIER_LEGAL", + "BARRIER_PHYSICAL" + ], + "enumDescriptions": [ + "Some barrier which prevents turns in the middle of a segment, but the details are not known (or the tester doesn't care to distinguish between legal and physical barriers).", + "", + "An example of this in the United States would be a pair of double-yellow lines. This pattern indicates that all turns are legally prohibited.", + "A concrete strip, island, planter, or other physical barrier. This category is also used when we model the roadways are separated." + ], + "type": "string" + }, + "barrierMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the barrier." + }, + "bicycleFacility": { + "description": "clang-format on", + "enum": [ + "BICYCLE_FACILITY_SEPARATE_TRAIL", + "BICYCLE_FACILITY_PEDESTRIAN_PATH", + "BICYCLE_FACILITY_SHARED_ROAD", + "BICYCLE_FACILITY_BIKE_LANE", + "BICYCLE_FACILITY_WIDE_SHOULDER", + "BICYCLE_FACILITY_SHARROW" + ], + "enumDescriptions": [ + "This segment has a detached trail or path running alongside it, suitable for the use of cyclists. When a segment has this attribute, there should never be a distinct segment for the trail, because the road and trail are part of the same logical segment. In other words, the trail is modeled by this attribute on its associated road, rather than by a separate segment.", + "This segment has a sidewalk or other pedestrian pathway that permits bicycles.", + "This segment allows bicycles to share the road with motor vehicles. It may or may not provide special accommodation for cyclists.", + "This segment has a striped bicycle lane.", + "This segment has a wide shoulder or curb lane.", + "This segment has pavement markings to make motorists aware of bicycles in a shared lane." + ], + "type": "string" + }, + "bicycleSafety": { + "enum": [ + "BICYCLE_SAFETY_RECOMMENDED", + "BICYCLE_SAFETY_NEUTRAL", + "BICYCLE_SAFETY_CAUTION" + ], + "enumDescriptions": [ + "This segment is explicitly recommended as suitable for biking, for instance by a sign, by a city bike map, or by a user.", + "This segment is similarly suitable for biking as nearby segments with the same 'bicycle_facility'.", + "Cyclists should use extra caution on these segments, as they may be inferior in suitability for biking." + ], + "type": "string" + }, + "condition": { + "enum": [ + "CONDITION_GOOD", + "CONDITION_POOR" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "conditionMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the condition." + }, + "constructionBeginDate": { + "$ref": "GeostoreDateTimeProto", + "description": "If known, the date that construction is scheduled to begin." + }, + "constructionEndDate": { + "$ref": "GeostoreDateTimeProto", + "description": "If known, the date that construction is scheduled to end." + }, + "constructionStatus": { + "enum": [ + "CONSTRUCTION_PLANNED", + "CONSTRUCTION_STARTED", + "CONSTRUCTION_COMPLETE", + "CONSTRUCTION_CLOSED_FOR_MAINTENANCE", + "CONSTRUCTION_DISTURBED_BY_MAINTENANCE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "constructionStatusMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the construction status." + }, + "covered": { + "description": "Whether the segment is covered by a roof etc. If this field is missing, the status is unknown.", + "type": "boolean" + }, + "distanceToEdge": { + "description": "Average distance between the segment's polyline and edge of the road on this side in meters. It need not be equal to the sum of width of all lanes in this direction. This width includes on-street bicycle lanes but excludes off-street lanes such as sidewalks. The edge of the road is the rightmost edge for segments in right side driving countries and leftmost edge for left side driving countries. Width of the road is sum of this and sibling's distance_to_edge.", + "format": "float", + "type": "number" + }, + "distanceToEdgeMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for distance_to_edge." + }, + "edgeFollowsSegmentBeginFraction": { + "description": "These indicate for what portion of the segment does the outer curb of the segment follow the segment polyline - i.e., where do the sweep curves connect along the outer curb. If unspecified, may be assumed to be equal to lane retraction, preferring outermost lane.", + "format": "float", + "type": "number" + }, + "edgeFollowsSegmentEndFraction": { + "format": "float", + "type": "number" + }, + "elevation": { + "description": "clang-format on", + "enum": [ + "ELEVATION_NORMAL", + "ELEVATION_BRIDGE", + "ELEVATION_TUNNEL", + "ELEVATION_SKYWAY", + "ELEVATION_STAIRWAY", + "ELEVATION_ESCALATOR", + "ELEVATION_ELEVATOR", + "ELEVATION_SLOPEWAY", + "ELEVATION_MOVING_WALKWAY" + ], + "enumDescriptions": [ + "", + "", + "", + "A skyway is a road that is raised on supports for an extended length.", + "Sample path description: \"Go up/down the stairs.\" PedestrianGradeCategory provides information about \"up/down\".", + "Sample path description: \"Go up/down the escalator.\" PedestrianGradeCategory provides information about \"up/down\".", + "Sample path description: \"Take the elevator up/down to the xth floor.\" PedestrianGradeCategory provides information about \"up/down\".", + "Sample path description: \"Ascend/descend the slope\" PedestrianGradeCategory provides information about \"ascend/descend\".", + "Sample path description: \"Get on the moving walkway.\"" + ], + "type": "string" + }, + "elevationMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the elevation." + }, + "endpoint": { + "description": "clang-format on", + "enum": [ + "ENDPOINT_UNKNOWN", + "ENDPOINT_UNRESTRICTED", + "ENDPOINT_UNCONTROLLED", + "ENDPOINT_STOP_SIGN", + "ENDPOINT_ALL_WAY_STOP", + "ENDPOINT_TRAFFIC_LIGHT", + "ENDPOINT_THREE_WAY", + "ENDPOINT_FLASHING_RED", + "ENDPOINT_FLASHING_YELLOW", + "ENDPOINT_YIELD", + "ENDPOINT_MERGE", + "ENDPOINT_ROUNDABOUT", + "ENDPOINT_RAILROAD_CROSSING", + "ENDPOINT_NO_EXIT", + "ENDPOINT_WRONG_WAY", + "ENDPOINT_TOLL_BOOTH" + ], + "enumDescriptions": [ + "", + "This category is used in cases where traffic on this segment always has the right-of-way (e.g. passing a side street, fork in road).", + "", + "", + "", + "", + "Three-way in this direction", + "Flashing red light (stop)", + "Flashing yellow light (yield)", + "Traffic on this segment has to give way to oncoming traffic, but does not necessarily have to come to a full stop. This category is used where there exists a physical yield sign and/or road painting (triangles), but also where circumstances and applicable local traffic laws require traffic on such segment to give way (e.g. coming from a dirt road onto a paved road).", + "", + "This segment leads to a roundabout entrance. Note this category is not used for segments themselves inside a roundabout. See USAGE_ROUNDABOUT for these.", + "", + "This category denotes a dead-end. Useful to explicitly exclude connections to other data-sets, for example at country borders and building entrances in countries where the indoor and outdoor routing networks are provided by different providers.", + "DEPRECATED Use RESTRICTION_WRONG_WAY", + "This segment directly ends at a toll booth. The intersection capturing these segments represents the location of the toll booth. If it has a name, this is captured in the TYPE_INTERSECTION_GROUP that contains the intersection." + ], + "type": "string" + }, + "endpointMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the endpoint." + }, + "gradeLevel": { + "description": "Detailed information about grade levels along the segment. If a GradeLevelProto is not present for any point (index) along the segment, the default grade level is zero. In between two points (indexes), the grade level of the segment is taken to be the max of the grade levels on either side of it. See gradelevel.proto for semantics of repeated indexes.", + "items": { + "$ref": "GeostoreGradeLevelProto" + }, + "type": "array" + }, + "internal": { + "$ref": "GeostoreInternalSegmentProto", + "description": "Internal-only data." + }, + "interpolationOffsetMeters": { + "description": "If specified, the perpendicular offset in meters from a road segment to an interpolated address along that road segment. See go/synthetic-address-positions.", + "format": "float", + "type": "number" + }, + "intersection": { + "$ref": "GeostoreFeatureIdProto", + "description": "The intersection feature corresponding to the destination of this segment. Intersections are used to represent the connectivity between segments. Each intersection stores the segment ids of all the incoming and outgoing segments that meet at that intersection. Turns can be made from this segment to any of the outgoing segments of its intersection, unless there is a restriction that explicitly disallows the turn (see below). Every segment has an intersection object, even if there are no other segments to connect to (i.e., a cul-de-sac or dead end)." + }, + "isMaxPermittedSpeedDerived": { + "description": "Specifies whether the max_permitted_speed_kph was derived from a heuristic as opposed to coming from an authoritative source.", + "type": "boolean" + }, + "lane": { + "description": "Detailed information about each lane in this direction, if available. Lanes are numbered from inside of the road outward, i.e. the lane next to the center line is lane 0. Note that lanes that are valid for travel in both directions appear in both segments of a segment pair (left turn lanes, one-lane roads, some passing lanes, reversing lanes). Some lanes may not be usable by cars, such as bike lanes. Also, some lanes may not exist along the entire segment, e.g. left- or right-turn lanes that appear just before the intersection.", + "items": { + "$ref": "GeostoreLaneProto" + }, + "type": "array" + }, + "legalMaximumSpeed": { + "description": "The legal maximum, legal minimum, and advisory (recommended but non-legally binding) maximum speed limits that are permitted on this segment. These should be the segment's legal limits; however, note that it may contain estimated values based on country-wide defaults and other heuristics (see 'AppliedSpeedLimitProto.trust_level'). Before exposing these fields to users as the legal speed limit please consult with Google lawyers.", + "items": { + "$ref": "GeostoreAppliedSpeedLimitProto" + }, + "type": "array" + }, + "legalMinimumSpeed": { + "items": { + "$ref": "GeostoreAppliedSpeedLimitProto" + }, + "type": "array" + }, + "maxPermittedSpeedKph": { + "description": "The maximum speed that is permitted on this segment, in kilometers per hour. This should be the segment's legal speed limit; however, note that it may contain estimated values based on country-wide defaults and other heuristics (see 'is_max_permitted_speed_derived' below). Before exposing this field to users as the legal speed limit please consult with Google lawyers. ", + "format": "float", + "type": "number" + }, + "maxPermittedSpeedKphMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the maximum permitted speed." + }, + "onRight": { + "description": "Specifies whether this segment carries right-hand traffic (cars keep to the right side of the road) instead of left-hand traffic (cars keep to the left side). This is true for US roads and false for UK roads, for example. See go/wikip/Left-_and_right-hand_traffic.", + "type": "boolean" + }, + "pedestrianCrossing": { + "$ref": "GeostorePedestrianCrossingProto", + "description": "Defines the pedestrian crossing(s) between the end point of this segment and the start point of this segment's sibling." + }, + "pedestrianFacility": { + "description": "clang-format on", + "enum": [ + "PEDESTRIAN_FACILITY_UNKNOWN", + "PEDESTRIAN_FACILITY_NONE", + "PEDESTRIAN_FACILITY_PRESENT", + "PEDESTRIAN_FACILITY_SIDEWALK", + "PEDESTRIAN_FACILITY_WIDE_SHOULDER" + ], + "enumDescriptions": [ + "No data about pedestrian facility is available.", + "No special pedestrian facilities are available on this segment.", + "The segment has some kind of pedestrian facility, like a sidewalk or wide shoulder, that separates pedestrians from motor vehicle traffic.", + "Deprecated. Sidewalks are represented via a TYPE_PEDESTRIAN lane.", + "Deprecated. Wide shoulder is implied when segment.pedestrian_facility = PEDESTRIAN_FACILITY_PRESENT and segment.lane does not include a TYPE_PEDESTRIAN lane." + ], + "type": "string" + }, + "pedestrianGrade": { + "enum": [ + "PEDESTRIAN_GRADE_FLAT", + "PEDESTRIAN_GRADE_UP", + "PEDESTRIAN_GRADE_DOWN" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "priority": { + "description": "LINT.ThenChange(//depot/google3/maps/pathfinder/pgraph/pgraph-segment-categories.cc)", + "enum": [ + "PRIORITY_UNKNOWN", + "PRIORITY_NON_TRAFFIC", + "PRIORITY_TERMINAL", + "PRIORITY_LOCAL", + "PRIORITY_MINOR_ARTERIAL", + "PRIORITY_MAJOR_ARTERIAL", + "PRIORITY_SECONDARY_ROAD", + "PRIORITY_PRIMARY_HIGHWAY", + "PRIORITY_LIMITED_ACCESS", + "PRIORITY_CONTROLLED_ACCESS" + ], + "enumDescriptions": [ + "The priority of the segment is unknown. This is not actually allowed to be set in MapFacts, but best-practice is to have a default 0 value for enums.", + "A non-traffic segment is not intended for normal vehicles, e.g. a pedestrian mall. 0x10", + "A terminal road is not intended to carry through traffic, e.g. a narrow residential street or an access road to a point of interest. 0x20", + "A small city street, typically for travel in a residential neighborhood, or a small rural road. This is the lowest priority suitable for through traffic. 0x30", + "A moderate-capacity \"collector\" that funnels traffic from local roads towards arterial roads or business areas. 0x40", + "A high-capacity road that carries large volumes of traffic between different neighborhoods or towns. 0x50", + "Roads that act as conduits a) between primary highways (and above), or b) from major/minor arterial roads to primary highways (and above). They may be state highways, for example. 0x60", + "These highways are major preferred roads that connect between regions, but that do not have significant access restrictions. Most crossings are level grade (traffic light, stop sign) and there may be driveways and local roads that connect directly to the highway. NOTE: Where a dense network of limited/controlled access roads carries most of the traffic between regions, this priority may be infrequent. 0x70", + "Limited access highways have some access restrictions, but are not fully access controlled. Typically driveways and local roads connect to a separate \"frontage road\" that is connected to the highway via spaced traffic lights, interchanges, or stop signs. Limited access roads are sometimes called expressways. 0x80", + "Controlled access highways have grade-separated crossings and are accessed exclusively by ramps. They are usually called \"freeways\" or \"motorways\". 0x90" + ], + "type": "string" + }, + "priorityMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the priority." + }, + "restriction": { + "description": "The set of restrictions that apply to this segment. Restrictions may make a single segment, turn, or more complex maneuver along a set of segments unroutable for the specified travel modes, or may only add penalties or warnings, depending on the restriction type. Turn restrictions are one example of a restriction. By default, turns are allowed onto all outgoing segments from this segment's intersection (including the sibling of this segment, i.e. U-turns are allowed by default). If any of these turns are disallowed they will be listed as \"subpath restrictions\". A subpath restriction disallows travel on given sequence of segments. In the case of a disallowed turn, the subpath simply consists of the source and destination feature ids. There may also be restrictions that apply to all travel on this segment (e.g. chains required, or closed in winter), or restrictions that just apply to certain lanes (e.g. high occupancy vehicle lanes).", + "items": { + "$ref": "GeostoreRestrictionProto" + }, + "type": "array" + }, + "roadMonitor": { + "description": "The road monitors that monitor this segment for traffic violations.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "roadSign": { + "description": "The road sign(s) which this segment refers to. These are features of TYPE_ROAD_SIGN that are applicable to this segment. For example, a sign that says \"TO KIRKLAND\" might apply to several segments on a freeway off-ramp (until the end of the ramp). Note that this field makes it easy to find the signs for a given road segment. The feature for the sign lists the segments that refer to it.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "route": { + "description": "The route(s) to which this segment belongs.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "routeAssociation": { + "description": "Holds metadata about the associations between this segment and the route features listed in the route field. This metadata need not be present; the only consistency requirement is that every feature ID that appears inside 'route_association' must also appear in the repeated 'route' field. If a route does not appear in route_association, consumers should assume that it has a default initialized RouteAssociationProto.", + "items": { + "$ref": "GeostoreRouteAssociationProto" + }, + "type": "array" + }, + "separatedRoadways": { + "description": "Indicates whether the segment's opposing lanes of traffic are separated from this segment, and hence have been represented in a separate feature. This means that there are two pairs of siblings instead of one.", + "type": "boolean" + }, + "sibling": { + "$ref": "GeostoreFeatureIdProto", + "description": "The other segment of this segment pair (see above). The segment that is referenced by the sibling field refers to this feature back via the same sibling field. Both segment and sibling should have the same properties such as geometry, country code, elevation, level relation, priority etc. Since routes are required to have segment and sibling at the same time, the set of routes on a segment is same to that of the sibling." + }, + "surface": { + "description": "clang-format on LINT.ThenChange(//depot/google3/geostore/base/proto/lane.proto) If this option is missing it means that the surface is unknown. Specific lanes may override this segment-level surface type.", + "enum": [ + "SURFACE_UNKNOWN", + "SURFACE_PAVED", + "SURFACE_ASPHALT", + "SURFACE_CONCRETE", + "SURFACE_CHIPSEAL", + "SURFACE_BRICK", + "SURFACE_SETT", + "SURFACE_COBBLESTONE", + "SURFACE_UNPAVED", + "SURFACE_GRAVEL", + "SURFACE_DIRT", + "SURFACE_SAND" + ], + "enumDescriptions": [ + "RESERVED", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "surfaceMetadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for the surface." + }, + "sweep": { + "description": "The geometric sweeps between this segment and nearby segments, used for real road width rendering. A sweep describes the surface that connects to segments.", + "items": { + "$ref": "GeostoreSweepProto" + }, + "type": "array" + }, + "tollRoad": { + "description": "If this segment is part of a toll road. It would be nice to have data about the toll cost, locations of toll booths, and so forth. Sadly, we don't have this data at this time.", + "type": "boolean" + }, + "usage": { + "description": "clang-format on LINT.ThenChange(//depot/google3/maps/pathfinder/pgraph/pgraph-segment-categories.cc)", + "enum": [ + "USAGE_ANY", + "USAGE_RAMP", + "USAGE_ON_RAMP", + "USAGE_OFF_RAMP", + "USAGE_ON_OFF_RAMP", + "USAGE_INTERCHANGE", + "USAGE_SPECIAL_TRAFFIC_FIGURE", + "USAGE_ROUNDABOUT", + "USAGE_ROUNDABOUT_BYPASS", + "USAGE_ROUNDABOUT_INTERNAL_BYPASS", + "USAGE_ROUNDABOUT_EXTERNAL_BYPASS", + "USAGE_ENCLOSED_TRAFFIC_AREA", + "USAGE_PEDESTRIAN_MALL", + "USAGE_MAJOR_PEDESTRIAN_MALL", + "USAGE_MINOR_PEDESTRIAN_MALL", + "USAGE_WALKWAY", + "USAGE_TRAIL", + "USAGE_STATION_PATH", + "USAGE_ACCESS_PATH", + "USAGE_CROSSING", + "USAGE_MARKED_CROSSING", + "USAGE_UNMARKED_CROSSING", + "USAGE_OVERPASS", + "USAGE_UNDERPASS", + "USAGE_HALLWAY", + "USAGE_TURN_SEGMENT", + "USAGE_INDOOR_CONNECTION_PATH" + ], + "enumDescriptions": [ + "Not a true usage category--this value was added just to ease the transition from proto1 to proto2.", + "Ramps are connecting segments to or between limited access roads. They are often called \"slip roads\" in Europe.", + "", + "", + "", + "", + "This road segment is part of a special traffic figure, which is like a roundabout or traffic circle, but doesn't meet all of the requirements of USAGE_ROUNDABOUT. It has a round shape but, e.g., there may be higher priority roads within the interior of the figure (also known as a hamburger roundabout), or the figure doesn't complete an entire circuit.", + "This road segment forms part of a roundabout or traffic circle (these terms don't have the exact same meaning, but the schema doesn't distinguish and captures both). Roundabouts complete one entire circuit, and are one-way through their entire circuit. Sample wording in directions: \"At the roundabout, take the 2nd exit\", or \"Go through 1 roundabout\".", + "This road segment is part of a bypass associated with, but not part of, a roundabout or traffic circle, that shortcuts the outer ring.", + "This road segment is part of a special traffic figure that allows traffic to go straight through the roundabout without entering the circle part of the roundabout. Divides the roundabout into two halves.", + "Shortcut from the entrance of a roundabout to the same destination as the first exit from the roundabout relative to that entrance.", + "A parking lot or parking structure, possibly with multiple entrances that can be significant for routing.", + "A stretch of road closed to normal traffic (trams, buses, delivery vehicles may be allowed).", + "", + "", + "\"Non-traffic\" segments that are roughly associated with the road network but that are being modeled separately from the road network, e.g., a sidewalk or wide shoulder. In contrast, walkways modeled using segments that are part of the road network should be marked with pedestrian and bicycle facilities. NOTE: Separately modeled walkways are unusual and have issues; consult with oyster-team before using this in new data.", + "A non-road segment that can be described as a major path or a trail. A trail is often part of a dedicated network of named biking or walking trails, is not particularly short, and typically has scenic value or facilitates crossing rough terrain. USAGE_TRAIL implies that PRIORITY_NON_TRAFFIC must be set, but compared to a segment with no usage at all, is suitable for extra emphasis by clients as a more desirable segment to travel on. Minor paths, such as pedestrian shortcuts, walkways through building complexes, and short walkways through a city park should be modeled as PRIORITY_NON_TRAFFIC with no usage. Sample path description: \"Take the trail.\"", + "Segment between toll gate and station center which represents logical location trains stop at. The segment's AddressComponent should have a route name which includes appropriate station name whenever possible. This segment should usually be restricted by RESTRICTION_USAGE_FEE_REQUIRED in order to penalize walking directions that just go through this segment. Sample path description: \"Get in Shibuya station, and take the path to the platform.\" NOTE: This attribute is unusual; it should not be set in new data.", + "Alley in park, backyard of communal facilities such as museum, or kind of private properties open to public. The segment's AddressComponent should have a route name which includes the property's name whenever possible. This is different from trails as the purpose of the access path is more specific than trails. Sample path description: \"Go through the access path to the National Museum.\" NOTE: This attribute is unusual and not clearly defined; it should not be set in new data.", + "A segment that connects separately modeled walkways (or other non-traffic segments) across a road. NOTE: USAGE_CROSSING segments make sense only where pedestrian segments are modeled separately. They cannot be used in the common case of sidewalks modeled as pedestrian facilities on road. Using a USAGE_CROSSING segment without connection to other non-traffic segments only to mark the location of a crossing is wrong.", + "Crossing with mark. We assume zebra marking for now. Sample path description: \"Take the crosswalk.\"", + "Crossing with no mark Sample path description: \"Cross the road.\"", + "This is different from ELEVATION_SKYWAY as this implies \"non-traffic\". Sample path description: \"Take the pedestrian overpass.\"", + "Underground crossing paths and implies \"non-traffic\". Sample path description: \"Take the pedestrian underpass.\"", + "Sample path description: \"Go through the hallway.\" NOTE: This attribute is unusual and not clearly defined; it should not be set in new data.", + "Turn segments are connecting segments between lower priority roads that bypass the direct intersection of the roads. They are the preferred route, or perhaps the only valid route, for turns between the roads. For example, in the US this would be a segment that would allow a vehicle to take a free right-turn without having to go through the intersection. Similarly in the UK, this would be a segment that allows a free left-turn. Also, the small segment next to the island of a channelized turn lane would fall under this category.", + "Usage to explicitly indicate that the segment connects walking networks on indoor levels in different buildings." + ], + "type": "string" + }, + "visibleLandmark": { + "description": "A collection of landmarks that are visible when traveling along this segment and useful for wayfinding to users following routes using this segment. The landmark need not be on the segment. Each segment in a pair of siblings specifies its landmarks independently. A landmark applicable to both appears in both.", + "items": { + "$ref": "GeostoreLandmarkReferenceProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreServiceAreaProto": { + "description": "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/ServiceArea.java", + "id": "GeostoreServiceAreaProto", + "properties": { + "servedFeature": { + "description": "The features that make up the service area for this establishment. These features are subject to the following constraints applied by editing middleware (notably, not strictly enforced by lints in storage): 1. The following feature types (and their subtypes) may be used: + TYPE_ISLAND + TYPE_POLITICAL, except the following prohibited subtypes: - TYPE_CONSTITUENCY - TYPE_LAND_PARCEL + TYPE_POSTAL 2. There is a maximum limit (currently 20) to the number of areas which may be provided. This is due to serving efficiency limitations. 3. There are no additional geometry requirements for these features beyond the requirements based on the feature types above. In practice this means that these features will either have polygonal or point-based geometries. 4. These referenced features are generally required to have names, though this is not strictly enforced.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreServicedStopProto": { + "description": "Defines an ordered reference to a line variant’s stop.", + "id": "GeostoreServicedStopProto", + "properties": { + "id": { + "$ref": "GeostoreFeatureIdProto", + "description": "Reference to a Transit POI feature (gcid:transit_station) or platform compound section (gcid:railway_platform) serviced by the line variant." + }, + "index": { + "description": "An index representing the order in which the above station is serviced by the line variant.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostoreSkiBoundaryProto": { + "description": "This protocol buffer holds attributes for features of TYPE_SKI_BOUNDARY.", + "id": "GeostoreSkiBoundaryProto", + "properties": { + "type": { + "enum": [ + "TYPE_ANY", + "TYPE_DANGER", + "TYPE_SKI_AREA", + "TYPE_SLOW_ZONE" + ], + "enumDescriptions": [ + "ABSTRACT", + "The boundary line for a danger area. This is used to mark lines that should not be crossed for reasons of safety.", + "The boundary line for a ski area. This is generally used to specify the line at which the ski resort ends, rather than a line enclosing a single ski run.", + "An area signposted for slow skiing only." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreSkiLiftProto": { + "description": "This protocol buffer holds attributes for features of TYPE_SKI_LIFT.", + "id": "GeostoreSkiLiftProto", + "properties": { + "type": { + "description": "clang-format on", + "enum": [ + "TYPE_ANY", + "TYPE_SURFACE", + "TYPE_T_BAR", + "TYPE_J_BAR", + "TYPE_ROPE_TOW", + "TYPE_POMA", + "TYPE_CARPET", + "TYPE_FUNICULAR", + "TYPE_GONDOLA", + "TYPE_CHAIR", + "TYPE_AERIAL", + "TYPE_TRAM" + ], + "enumDescriptions": [ + "ABSTRACT", + "Surface lifts are those that pull or carry a skier along the ground; rope tows are a common example.", + "", + "", + "", + "", + "", + "", + "An aerial lift, such as a gondola or funitel, that moves enclosed cars along a continuously circulating set of cables.", + "An open-air chair lift.", + "Aerial lifts are those that run along cables suspended above the ground", + "An aerial tram system that shuttles back and forth along a fixed set of cables." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreSkiTrailProto": { + "description": "This protocol buffer holds attributes for features of TYPE_SKI_TRAIL.", + "id": "GeostoreSkiTrailProto", + "properties": { + "difficulty": { + "enum": [ + "DIFFICULTY_EASIEST", + "DIFFICULTY_EASY", + "DIFFICULTY_INTERMEDIATE", + "DIFFICULTY_ADVANCED_INTERMEDIATE", + "DIFFICULTY_DIFFICULT", + "DIFFICULTY_ADVANCED_DIFFICULT" + ], + "enumDescriptions": [ + "The easiest ski trail. In the US, this would be marked with double-green circles.", + "A novice ski trail. In the US, this would be marked with a single green circle.", + "An intermediate-level ski trail. In the US, this would be marked with a single blue square.", + "An advanced-intermediate level ski trail. In the US, this would be marked with double-blue squares.", + "A difficult-level ski trail. In the US, this would be marked with a single black diamond.", + "An advanced-difficult level ski trail. In the US, this would be marked with double-black diamonds." + ], + "type": "string" + }, + "type": { + "enum": [ + "TYPE_ANY", + "TYPE_GLADE", + "TYPE_TRAIL_TERRAIN", + "TYPE_TRAIL", + "TYPE_RACE_COURSE", + "TYPE_BOWL" + ], + "enumDescriptions": [ + "ABSTRACT", + "Glade trails are ski paths that traverse wooded areas; they may be well-defined or not, and groomed or ungroomed. Ideally, they should be rendered differently on map tiles to distinguish them from standard ski trails.", + "A terrain-park area, usually containing special features such as jumps or half-pipes.", + "A regular ski-trail.", + "A trail specifically used for ski races.", + "Bowls are large open areas, usually steep and often rocky, that are open for skiing but don't have defined trails. They are frequented mostly by expert skiers." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreSocialReferenceProto": { + "description": "MapFacts GAIA ID assigned to this feature. These values are virtual GAIA IDs from MapFacts, and as such are not stored in Focus.", + "id": "GeostoreSocialReferenceProto", + "properties": { + "baseGaiaId": { + "description": "WARNING: Please do NOT introduce new uses; treat this field as if it were deprecated. ", + "format": "int64", + "type": "string" + }, + "claimedGaiaId": { + "description": "GAIA ID used when a business has been claimed. This value is a robot GAIA ID. Robots are a special type of GAIA account used to denote identity for a user or a group of users, but are not logged-in directly by a user.", + "format": "int64", + "type": "string" + }, + "gaiaIdForDisplay": { + "description": "WARNING: Please do NOT introduce new uses; treat this field as if it were deprecated. ", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreSourceInfoProto": { + "description": "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.", + "id": "GeostoreSourceInfoProto", + "properties": { + "attributionUrl": { + "description": "This is the URL of a page representing all the data from this source in this feature. It may have be the ultimate source of the data (in case of scraping) or merely the same data styled according the provider's taste. There is a similar field in DataSourceProto which is NOT cached in this field, since it has a different meaning.", + "items": { + "$ref": "GeostoreUrlProto" + }, + "type": "array" + }, + "collectionDate": { + "$ref": "GeostoreDateTimeProto", + "description": "The time that this particular piece of data was collected. If different attributes were collected on different dates, this is the date of the most recent edit." + }, + "cookie": { + "description": "A source info may have a magic cookie whose content and semantics are defined by the specific import process or third-party feed. For feeds that are processed by Distillery, the cookie, when set, should contain the unique identifier for the feature as provided by the feed.", + "type": "string" + }, + "dataset": { + "description": "The dataset from which this SourceInfoProto was created. The content of this string will be determined by the data provider (e.g. for MultiNet data, \"fra\" would indicate the dataset for France). This field is unnecessary for providers that deliver a single dataset per release (e.g. Basarsoft).", + "type": "string" + }, + "gaiaId": { + "description": "The Gaia ID of the user who provided us with this data. This field should never be set on source infos present on features, but may be set on source infos present on edits. DEPRECATED: Most clients should use the \"user\" field instead where Gaia IDs are encrypted.", + "format": "int64", + "type": "string" + }, + "impersonationUser": { + "$ref": "GeostoreUserProto", + "description": "Information about an internal user or system that is operating on behalf of `user` by way of impersonation." + }, + "layer": { + "description": "The name of the layer from which this SourceInfoProto was created.", + "type": "string" + }, + "ogrFid": { + "description": "The OGR feature identifier from which this SourceInfoProto was created. This is an internal OGR record identifier and has nothing to do with any of the feature's fields or the FeatureIdProto for the FeatureProto containing this SourceInfoProto. This field is present only for debugging purposes and possible use in the match pattern of a FeatureChangeProto designed to fix bad source data very early in the importing process.", + "format": "int64", + "type": "string" + }, + "provider": { + "description": "The data provider from which this source info was generated. The value must be equal to the one on the TYPE_DATA_SOURCE feature referenced by this source info via the source_id reference (see above). ", + "format": "int32", + "type": "integer" + }, + "rawData": { + "description": "A source info may optionally have a set of key-value pairs that provide \"raw data\" specific to that source. The types of raw data available will vary from one provider to another and should not be used in production code. Instead, new fields and/or protocol buffers should be defined to represent this information in a canonical form, and the relevant importers should be modified to populate these new fields.", + "items": { + "$ref": "GeostoreRawDataProto" + }, + "type": "array" + }, + "release": { + "description": "The data release from which this SourceInfoProto was created. The format for this string is provider-dependent (e.g. a MultiNet release would look like \"2008.01\").", + "type": "string" + }, + "sourceId": { + "$ref": "GeostoreFeatureIdProto", + "description": "A source info may have a corresponding TYPE_DATA_SOURCE feature that describes it (provider, copyright information, date of release, etc). In the context of edits and issues, this field should not be set." + }, + "temporaryData": { + "$ref": "Proto2BridgeMessageSet", + "description": "A place for clients to attach arbitrary data to a source info. Never set in MapFacts." + }, + "user": { + "$ref": "GeostoreUserProto", + "description": "RESERVED" + } + }, + "type": "object" + }, + "GeostoreSourceTrustProto": { + "description": "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.", + "id": "GeostoreSourceTrustProto", + "properties": { + "level": { + "description": "The level of trust for the source of the observation.", + "enum": [ + "UNKNOWN", + "BLOCKED", + "NOT_TRUSTED", + "YP_FEEDS", + "TRUSTED", + "SUPER_TRUSTED" + ], + "enumDescriptions": [ + "Value not set", + "Should not be used (e.g. known spammer, 404 url)", + "Edits from external users.", + "Trusted feeds like IUSA etc. (See note below).", + "Internal operators, approved edits.", + "Internal admin operators" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreSpeedLimitProto": { + "description": "A speed limit, containing both the limit and the conditions in which it applies.", + "id": "GeostoreSpeedLimitProto", + "properties": { + "category": { + "description": "The type of speed limit.", + "enum": [ + "SPEED_LIMIT_CATEGORY_UNKNOWN", + "NONE", + "SCHOOL", + "CONSTRUCTION" + ], + "enumDescriptions": [ + "Default proto value, this value will never be set in MapFacts.", + "Speed limits that apply outside of any particular category (contrast to the following categories.)", + "Speed limits that apply in a school zone.", + "Speed limits that apply in a construction zone." + ], + "type": "string" + }, + "condition": { + "description": "The conditions under which this speed limit is applicable. If multiple conditions are set, at least one of them must be true.", + "items": { + "$ref": "GeostoreRoadConditionalProto" + }, + "type": "array" + }, + "speedWithUnit": { + "$ref": "GeostoreSpeedProto", + "description": "A constant speed limit." + }, + "unlimitedSpeed": { + "$ref": "GeostoreUnlimitedSpeedProto", + "description": "A speed limit with no limit value. When there is no speed limit in place." + }, + "variableSpeed": { + "$ref": "GeostoreVariableSpeedProto", + "description": "A dynamic speed limit that can vary within a range of values based on road conditions." + } + }, + "type": "object" + }, + "GeostoreSpeedProto": { + "description": "A speed value and unit.", + "id": "GeostoreSpeedProto", + "properties": { + "speed": { + "format": "float", + "type": "number" + }, + "unit": { + "enum": [ + "UNIT_UNKNOWN", + "MILES_PER_HOUR", + "KILOMETERS_PER_HOUR" + ], + "enumDescriptions": [ + "Default proto value, this value will never be set in MapFacts.", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreStableFieldPathProto": { + "description": "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", + "id": "GeostoreStableFieldPathProto", + "properties": { + "fieldPath": { + "description": "A sequence of field selectors to be traversed starting from the root message.", + "items": { + "$ref": "GeostoreStableFieldPathProtoStableFieldSelector" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreStableFieldPathProtoStableFieldSelector": { + "id": "GeostoreStableFieldPathProtoStableFieldSelector", + "properties": { + "fieldNum": { + "description": "Field number to select.", + "format": "int32", + "type": "integer" + }, + "versionToken": { + "description": "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.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreSweepProto": { + "description": "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--\u003e - Sweeps are not strictly stored on adjacent segments. Disconnected segments (e.g., segments separated by an intersection group) may also contain sweeps.", + "id": "GeostoreSweepProto", + "properties": { + "otherSegmentFeatureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The segment feature connected to this segment via the sweep geometry." + }, + "polygon": { + "$ref": "GeostorePolygonProto", + "description": "Polygonal geometry representing the area between this segment and the other segment." + }, + "sweepCurve": { + "$ref": "GeostoreCurveConnectionProto", + "description": "Describes parameters for generating the edge of this sweep that starts at edge_follows_segment_end_fraction. The other side of the sweep should be described on the sweep present on the sibling pair." + }, + "sweepToken": { + "description": "A token that can be used to identify the version of the data about this sweep.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreTelephoneProto": { + "description": "This protocol buffer is used to represent telephone numbers and related information.", + "id": "GeostoreTelephoneProto", + "properties": { + "callRate": { + "description": "RESERVED", + "items": { + "$ref": "GeostorePriceRangeProto" + }, + "type": "array" + }, + "contactCategory": { + "description": "RESERVED", + "enum": [ + "CONTACT_CATEGORY_UNSPECIFIED", + "CUSTOMER_SERVICE", + "RESERVATIONS", + "SALES" + ], + "enumDescriptions": [ + "", + "Provides service to customers before, during, or after a purchase. /m/03w5xm", + "Allows customers to reserve a seat, ticket, room, etc. /m/0n9nm2h", + "Provides information about a purchase of a product or service. /m/014dgf" + ], + "type": "string" + }, + "flag": { + "items": { + "enum": [ + "FLAG_NO_COLD_CALLS", + "FLAG_PREFERRED" + ], + "enumDescriptions": [ + "DEPRECATED", + "This number is (one of) the preferred numbers to call. It should be displayed before other numbers in maps/placepage, for example. For each language served, there shall be at most 1 preferred phone (i.e., if there are two preferred phones, then the intersection between the \"language\" array should be empty). Note that the presence of a \"preferred\" phone doesn't state that we have no confidence on the other numbers of this establishment. The preference is based on the fact that this number is the primary customer service number, reservation hot line, etc." + ], + "type": "string" + }, + "type": "array" + }, + "isSharedNumber": { + "description": "True if this phone number is not unique to this establishment and might be shared with other features. In case an establishment shares a phone number with a business chain of which it is a member, and the number canonically belongs to that chain, it should be marked as shared for the establishment but not shared for the chain.", + "type": "boolean" + }, + "label": { + "description": "RESERVED", + "items": { + "$ref": "GeostoreNameProto" + }, + "type": "array" + }, + "language": { + "description": "RESERVED", + "items": { + "type": "string" + }, + "type": "array" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this telephone number." + }, + "number": { + "$ref": "TelephoneNumber", + "description": "** DEPRECATED ** This is deprecated in favor of phone_number below. An internationalized representation of a phone number. See //location/country/telephonenumber.proto" + }, + "phoneNumber": { + "$ref": "I18nPhonenumbersPhoneNumber", + "description": "An internationalized representation of a phone number. See //java/com/google/i18n/phonenumbers/phonenumber.proto" + }, + "serviceLocationFeature": { + "description": "RESERVED", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "type": { + "enum": [ + "VOICE", + "FAX", + "TDD", + "DATA", + "MOBILE", + "MESSAGING" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "The MESSAGING type should not be used in FeatureProto, but will be used in the context of KG /common/phone_number/type.", + "RESERVED" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreTemporaryClosureProto": { + "description": "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.", + "id": "GeostoreTemporaryClosureProto", + "properties": { + "endAsOfDate": { + "$ref": "GeostoreDateTimeProto", + "description": "The latest when this closure may end, if the exact date is unknown. If set, the feature is operational again no later than this date." + }, + "endDate": { + "$ref": "GeostoreDateTimeProto", + "description": "RESERVED" + }, + "startAsOfDate": { + "$ref": "GeostoreDateTimeProto", + "description": "The latest when this closure may start, if the exact date is unknown. If set, the feature is temporarily closed starting no later than this date." + }, + "startDate": { + "$ref": "GeostoreDateTimeProto", + "description": "RESERVED" + } + }, + "type": "object" + }, + "GeostoreTextAffixProto": { + "description": "Represents text (with an associated language) that is affixed to the beginning and/or end of a primary text.", + "id": "GeostoreTextAffixProto", + "properties": { + "language": { + "description": "The external form of a Google International Identifiers Initiative (III) LanguageCode object. See google3/i18n/identifiers/languagecode.h for details. These strings should be treated as opaque blobs. You can use LanguageCodeConverter::FromOther to convert the string to a LanguageCode reference. You can then call methods on the LanguageCode class to extract language/script/region subtags (if any). See also http://g3doc/i18n/identifiers/g3doc/using-iii. We place extra restrictions on languages in addition to what the III library requires. See http://go/geo-schema-reference/feature-properties/languages.md", + "type": "string" + }, + "prefix": { + "description": "Text to prepend to the primary text, including any necessary trailing whitespace. At least one of prefix or suffix is required.", + "type": "string" + }, + "suffix": { + "description": "Text to append to the end of the primary text, including any necessary leading whitespace. At least one of prefix or suffix is required.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreThreeDimensionalModelProto": { + "id": "GeostoreThreeDimensionalModelProto", + "properties": { + "pointIndices": { + "description": "Triangle vertex indices, each triple defines a triangle.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "points": { + "description": "We store a triangular mesh in indexed format. Points array.", + "items": { + "$ref": "GeostorePointWithHeightProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreTimeBasedRateProto": { + "description": "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.", + "id": "GeostoreTimeBasedRateProto", + "properties": { + "durationBasedRate": { + "description": "The rates for this rule. Each duration_based_rate defines the costs associated with a particular duration of a stay. There must be at least one rate with range_start_seconds set to 0 and there cannot be gaps between durations (i.e. there should be no interval uncovered between 0 and the largest range_end_seconds of any duration-based rate).", + "items": { + "$ref": "GeostoreDurationBasedRateProto" + }, + "type": "array" + }, + "taxIncluded": { + "description": "If true, tax is included in the prices in this rate. If false, additional taxes may apply.", + "type": "boolean" + }, + "validEndWithin": { + "$ref": "GeostoreTimeScheduleProto" + }, + "validStartWithin": { + "$ref": "GeostoreTimeScheduleProto", + "description": "Time period during which utilization of this rate must start in order to be eligible for the rate. If not set, there is no restriction on the time when the utilization starts." + } + }, + "type": "object" + }, + "GeostoreTimeComponentProto": { + "id": "GeostoreTimeComponentProto", + "properties": { + "componentType": { + "enum": [ + "COMPONENT_TYPE_POSITIVE", + "COMPONENT_TYPE_MISSING_DATA" + ], + "enumDescriptions": [ + "Indicates that this time component is set with regards to what the component is trying to model. For instance, if this time component models opening hours for a business then COMPONENT_TYPE_POSITIVE means open and if it models a road restriction COMPONENT_TYPE_POSITIVE means the road is closed.", + "Indicates that data for this time component is absent and that making assumptions about data over the time period this component represents may be unsafe. For instance, if this time component models opening hours for a business then COMPONENT_TYPE_MISSING_DATA can be used to explicitly record that we are missing data (eg. Sunday is not listed in the hours). NOTE: Not all uses of this proto support the COMPONENT_TYPE_MISSING_DATA component_type." + ], + "type": "string" + }, + "interval": { + "description": "The time component is the intersection of these intervals", + "items": { + "$ref": "GeostoreTimeIntervalProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreTimeEndpointProto": { + "description": "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 -\u003e minute minute -\u003e hour hour -\u003e day of week hour -\u003e day of month hour -\u003e day of year day of week -\u003e week of month day of week -\u003e week of year day of month -\u003e month day of year -\u003e year week of month -\u003e month week of year -\u003e year month -\u003e 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) -----------------------------------------------------------------------------", + "id": "GeostoreTimeEndpointProto", + "properties": { + "day": { + "description": "Valid ranges are 0-7, 1-31, and 1-366 (see day_type below)", + "format": "int32", + "type": "integer" + }, + "dayType": { + "enum": [ + "DAY_OF_WEEK", + "DAY_OF_MONTH", + "DAY_OF_YEAR" + ], + "enumDescriptions": [ + "Valid day range 0-7. (see enum DayOfWeek)", + "Valid day range 1-31, must be valid day in month", + "Eg day = 31 is not valid if month = September Valid day range 1-366" + ], + "type": "string" + }, + "hour": { + "description": "Valid range is 0-24. Because it could be unclear what wrapping hours mean in relation to days, 24 is used to denote midnight at the end of a day.", + "format": "int32", + "type": "integer" + }, + "minute": { + "description": "Valid range is 0-59, except when a repetitive minute interval ends at the end of an hour, in which case 60 is a legal end value.", + "format": "int32", + "type": "integer" + }, + "month": { + "enum": [ + "JANUARY", + "FEBRUARY", + "MARCH", + "APRIL", + "MAY", + "JUNE", + "JULY", + "AUGUST", + "SEPTEMBER", + "OCTOBER", + "NOVEMBER", + "DECEMBER", + "NEXT_JANUARY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "The following value is used to define the end of a recurring interval that ends at the end of the year. It can be used without a day to represent the end of an interval with month resolution (e.g. November through December) or with a day of month of 1 to represent the end of an interval with day resolution (e.g. November 15th through December 31th). This is similar to using hour 24 to represent the end of a recurring interval with hour resolution that ends at midnight. Also see http://g/pathfinder-team/NFS3S4L2lhs/tdMSGr0H9r4J for a real example." + ], + "type": "string" + }, + "second": { + "description": "Valid range is 0-59, except when a repetitive second interval ends at the end of a minute, in which case 60 is a legal end value.", + "format": "int32", + "type": "integer" + }, + "week": { + "description": "Valid ranges are 0-5 and 1-53 (depending on the value of week_type, see below).", + "format": "int32", + "type": "integer" + }, + "weekType": { + "enum": [ + "WEEK_OF_MONTH", + "WEEK_OF_YEAR" + ], + "enumDescriptions": [ + "Valid week range 0-5.", + "Note: Weeks of this type are numbered such that week 0 begins on the 1st of the month and extends for 7 days. This has the consequence that week 4 never has a full 7 days. For example, for a month with 31 days, dates 1-7 are in week 0, 8-14 in week 1, 15-21 in week 2, 22-28 in week 3, and 29-31 in week 4. Week 5 is considered the first week of next month, and much like using `24` for the hour field or `NEXT_JANUARY` for the month field, is meant only to denote that an interval includes week 4. Valid week range 1-53." + ], + "type": "string" + }, + "year": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GeostoreTimeIntervalProto": { + "id": "GeostoreTimeIntervalProto", + "properties": { + "begin": { + "$ref": "GeostoreTimeEndpointProto", + "description": "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() \u003c= end.hour())." + }, + "end": { + "$ref": "GeostoreTimeEndpointProto" + }, + "inverted": { + "description": "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 ] ]", + "type": "boolean" + }, + "occasion": { + "description": "clang-format on", + "enum": [ + "OCCASION_SEASON", + "OCCASION_SEASON_WINTER", + "OCCASION_SEASON_SUMMER", + "OCCASION_DAYS", + "OCCASION_DAYS_SCHOOL", + "OCCASION_DAYS_HOLIDAY", + "OCCASION_DAYS_PRE_HOLIDAY", + "OCCASION_HOURS", + "OCCASION_HOURS_PEAK", + "OCCASION_HOURS_SCHOOL", + "OCCASION_HOURS_MARKET", + "OCCASION_HOURS_BUSINESS", + "OCCASION_HOURS_DUSK_TO_DAWN", + "OCCASION_HOURS_HIGH_TIDE", + "OCCASION_CONDITIONS", + "OCCASION_CONDITIONS_HIGH_WATER", + "OCCASION_CONDITIONS_ADVERSE", + "OCCASION_CONDITIONS_ADVERSE_RAIN", + "OCCASION_CONDITIONS_ADVERSE_WET", + "OCCASION_CONDITIONS_ADVERSE_FOG", + "OCCASION_CONDITIONS_WINTERY", + "OCCASION_CONDITIONS_WINTERY_AVALANCHE", + "OCCASION_CONDITIONS_WINTERY_SNOW", + "OCCASION_CONDITIONS_WINTERY_ICE", + "OCCASION_CONDITIONS_EVENT", + "OCCASION_CONDITIONS_POLLUTION", + "OCCASION_CONDITIONS_LOW_WATER", + "OCCASION_UNDEFINED", + "OCCASION_UNDEFINED_REGULAR", + "OCCASION_UNDEFINED_SELDOM" + ], + "enumDescriptions": [ + "NavTeq just uses \"seasonal closure = yes\".", + "", + "\"Ski season\" appears in Tele Atlas once. Use OCCASION_SEASON_WINTER instead.", + "", + "", + "", + "", + "", + "", + "OCCASION_HOURS_OFF_PEAK doesn't exist because it's the inverse of OCCASION_HOURS_PEAK.", + "", + "Business hours appears only three times.", + "", + "OCCASION_HOURS_DAWN_TO_DUSK doesn't exist because it's the inverse of OCCASION_HOURS_DUSK_TO_DAWN.", + "", + "", + "Adverse conditions include rain, storms, and fog.", + "", + "", + "", + "Wintery conditions include snow and ice.", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": { + "enum": [ + "TYPE_OCCASION", + "TYPE_RANGE" + ], + "enumDescriptions": [ + "Indicates a fuzzy interval using one of the occasion constants.", + "Indicates a range of times between two endpoints, as specified in TimeEndpointProto. The endpoint is NOT inclusive." + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreTimeScheduleProto": { + "id": "GeostoreTimeScheduleProto", + "properties": { + "component": { + "description": "The schedule is the union of these components.", + "items": { + "$ref": "GeostoreTimeComponentProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreTimezoneProto": { + "description": "A TimezoneProto holds information about a feature's related time zone.", + "id": "GeostoreTimezoneProto", + "properties": { + "id": { + "description": "i18n recognized time zone identifier. For the full list of identifiers, see google3/i18n/identifiers/data/timezones.txt.", + "type": "string" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this relation." + } + }, + "type": "object" + }, + "GeostoreTollClusterProto": { + "description": "A collection of information that applies to a toll cluster.", + "id": "GeostoreTollClusterProto", + "properties": { + "intersection": { + "description": "The list of TYPE_INTERSECTION features that are toll points and form this toll cluster. A toll cluser can consist of either a single or a group of intersection points called toll points at the end of various road segments in MapFacts that represent one or more lanes passing through a toll fixture that all go to the same routing destination. This relationship is reciprocal, as a toll point intersection also stores a reference to the toll cluster it belongs to. A toll cluster must have reference to one or more toll points i.e. toll_cluster.intersection should always be populated.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreTrackProto": { + "id": "GeostoreTrackProto", + "properties": { + "index": { + "description": "The index of this TrackProto in a list of TrackProtos.", + "format": "int32", + "type": "integer" + }, + "pose": { + "description": "The instantaneous pose of points along this track. The fields set inside each pose must be set consistently along the track.", + "items": { + "$ref": "GeostorePoseProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreTransitLineProto": { + "description": "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.", + "id": "GeostoreTransitLineProto", + "properties": { + "agency": { + "description": "The transit agencies responsible for operating this line. All lines should have at least one agency, and most will have exactly one. The following cases are reasons for multiple agencies: - Code share: Two or more agencies share trips - Alternations: Each trip is run by one of multiple agencies - Additional: All trips run by one agency, but a second one sells tickets In all cases the order has no meaning. Clarification comes from the trips.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "labelBackgroundColor": { + "description": "The background color of labels for that transit line. The encoding is like in HTML or CSS, eg. 0x11ff00 means a bit of red, full green, no blue, in sRGB color space. The most significant byte must be zero, i.e. no transparency.", + "format": "uint32", + "type": "integer" + }, + "labelTextColor": { + "description": "The text color of labels for that transit line. Encoding like label_background_color.", + "format": "uint32", + "type": "integer" + }, + "stations": { + "description": "The transit stations (establishment POIs with gcid:transit_station) which this transit line can go through, in no particular order. Usage note: The source of truth are the transit leg features in Transit Oyster. In MapFacts, that information is cached in two locations: in this field, and in transit station attachments on POIs. Do not assume these locations are always up to date and/or synchronized with each other.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + }, + "vehicleType": { + "description": "The type of vehicle that applies to all trips that use this line.", + "enum": [ + "VEHICLE_TYPE_ANY", + "VEHICLE_TYPE_RAIL", + "VEHICLE_TYPE_METRO_RAIL", + "VEHICLE_TYPE_SUBWAY", + "VEHICLE_TYPE_TRAM", + "VEHICLE_TYPE_MONORAIL", + "VEHICLE_TYPE_HEAVY_RAIL", + "VEHICLE_TYPE_COMMUTER_TRAIN", + "VEHICLE_TYPE_HIGH_SPEED_TRAIN", + "VEHICLE_TYPE_LONG_DISTANCE_TRAIN", + "VEHICLE_TYPE_BUS", + "VEHICLE_TYPE_INTERCITY_BUS", + "VEHICLE_TYPE_TROLLEYBUS", + "VEHICLE_TYPE_SHARE_TAXI", + "VEHICLE_TYPE_FERRY", + "VEHICLE_TYPE_CABLE_CAR", + "VEHICLE_TYPE_GONDOLA_LIFT", + "VEHICLE_TYPE_FUNICULAR", + "VEHICLE_TYPE_SPECIAL", + "VEHICLE_TYPE_HORSE_CARRIAGE", + "VEHICLE_TYPE_AIRPLANE" + ], + "enumDescriptions": [ + "ABSTRACT", + "ABSTRACT Metropolitan railway transport, mostly for local transit.", + "ABSTRACT", + "Subways run mainly or completely underground.", + "Trams run mainly or completely along streets.", + "Monorails run on track consisting of a single rail, e.g. suspended monorail.", + "Heavy rail is rail transit that consists of larger vehicles, typically to transport more people across longer distances.", + "Commuter trains connect the city with the suburbs. They tend to stop often and run short distances.", + "High speed trains operate at much higher speed than normal trains. They can also run long distances. Typically with speeds upwards of 200 km/h. Examples are TGV, ICE, Shinkansen.", + "Long distance trains connect multiple cities/regions of a country or even multiple countries. They run faster, but not high-speed. Typically speeds under 200 km/h.", + "Buses cover mass transit over roads.", + "A bus that connects cities to each other.", + "A bus powered by electricity obtained from overhead wires by means of a pole.", + "Share taxi is sort of bus transport with ability to drop off and pick up passengers anywhere on it route. Generally share taxi uses minibus vehicles.", + "Ferries are a means of transit over water, often operated on regular, frequent, return services.", + "Cable cars are a form of transit used in the mountains.", + "An aerial lift (colloquially called \"gondola lift\") is a means of cable transport in which cabins, cars, gondolas or open chairs are hauled above the ground by means of one or more cables. Examples: gondola lift, aerial tramway. Funicular is a cable railway in which a pair of tram-like vehicles use each other as counter balance to ascend and descend.", + "", + "Used for easter eggs.", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GeostoreTransitLineVariantProto": { + "description": "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", + "id": "GeostoreTransitLineVariantProto", + "properties": { + "lineConcept": { + "$ref": "GeostoreFeatureIdProto", + "description": "Reference to the line variant’s line concept." + }, + "stops": { + "description": "Ordered list of stations or platforms serviced by this line variant. The order is captured by the ServicedStopProto.index field.", + "items": { + "$ref": "GeostoreServicedStopProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreTransitStationProto": { + "description": "Encapsulates information related to an individual transit station.", + "id": "GeostoreTransitStationProto", + "properties": { + "agencies": { + "description": "Transit agencies which service this transit station. A station can be serviced by one or more transit agencies. See go/transit-agency-relation-migration for more information.", + "items": { + "$ref": "GeostoreFeatureIdProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreTrustSignalsProto": { + "id": "GeostoreTrustSignalsProto", + "properties": { + "sourceTrust": { + "$ref": "GeostoreSourceTrustProto", + "description": "Trust signals for the source of a given observation, typically based on historical evidences or status (like internal Google operator)." + } + }, + "type": "object" + }, + "GeostoreUnlimitedSpeedProto": { + "description": "A speed limit without a limit value. Used to indicate the absence of a speed limit.", + "id": "GeostoreUnlimitedSpeedProto", + "properties": {}, + "type": "object" + }, + "GeostoreUrlListProto": { + "description": "Hold a list of URLs, usually to contain translations of a single URL.", + "id": "GeostoreUrlListProto", + "properties": { + "url": { + "items": { + "$ref": "GeostoreUrlProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreUrlProto": { + "description": "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.", + "id": "GeostoreUrlProto", + "properties": { + "language": { + "description": "The external form of a Google International Identifiers Initiative (III) LanguageCode object. See google3/i18n/identifiers/languagecode.h for details. We place extra restrictions on languages in addition to what the III library requires. See http://go/geo-schema-reference/feature-properties/languages.md This field represents the language of the content of the web site. It may be missing if the web site is language-independent or if the language is unknown.", + "type": "string" + }, + "metadata": { + "$ref": "GeostoreFieldMetadataProto", + "description": "Field-level metadata for this URL. NOTE: there are multiple UrlProto fields in the Geo Schema. Metadata here is only expected to be present on FeatureProto.website[]." + }, + "pagerank": { + "description": "** DEPRECATED ** The pagerank of this URL. Valid values [0, 65535] See http://wiki/Main/NearestSeeds for more information.", + "format": "int32", + "type": "integer" + }, + "url": { + "description": "The URL.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreUserProto": { + "description": "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.", + "id": "GeostoreUserProto", + "properties": { + "encryptedGaiaId": { + "description": "The user Gaia ID in encrypted form. Wipeout ids take value of \"\" in bytes.", + "format": "byte", + "type": "string" + }, + "encryptionKeyName": { + "description": "Required. The name of the key used to encrypt the Gaia ID.", + "type": "string" + }, + "keystoreConfigId": { + "description": "Required (valid default provided). The config ID of the owner of the above encryption_key_name. This field must be set if the encryption key name is *not* \"mapfacts_gaia_id_encryption_key\".", + "format": "int32", + "type": "integer" + }, + "username": { + "description": "If possible, writers should set this to a full user email, including the domain. Readers should not assume that this is a well-formed email address. This field may only be set by Atlas, Pushpin and OneRing because they are internal tools which have a PWG exception to store textual usernames in the clear.", + "type": "string" + } + }, + "type": "object" + }, + "GeostoreVariableSpeedProto": { + "description": "A speed limit whose value can change based on road, traffic, and weather conditions.", + "id": "GeostoreVariableSpeedProto", + "properties": {}, + "type": "object" + }, + "GeostoreVehicleAttributeFilterProto": { + "description": "A set of vehicle attribute conditionals (ex: weight \u003e= 20T \u0026\u0026 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.", + "id": "GeostoreVehicleAttributeFilterProto", + "properties": { + "axleCount": { + "description": "A repeated value here is treated as an AND operation. This allows for ranges to be represented by two values (ex: \"count \u003c 4\" AND \"count \u003e= 2\" means \"2 \u003c= count \u003c 4\").", + "items": { + "$ref": "GeostoreCountComparisonProto" + }, + "type": "array" + }, + "hasTrailer": { + "description": "Whether the applied vehicle types have a trailer attached to them.", + "type": "boolean" + }, + "hazardousGoods": { + "description": "List of prohibited hazardous goods for a vehicle to carry. A repeated value here is treated as an OR operation, meaning that they may not carry ANY of the goods listed.", + "items": { + "enum": [ + "HAZARDOUS_GOODS_TYPE_UNSPECIFIED", + "EXPLOSIVES", + "GASES", + "FLAMMABLE", + "COMBUSTIBLE", + "ORGANIC", + "POISON", + "RADIOACTIVE", + "CORROSIVE", + "ASPIRATION_HAZARD", + "ENVIRONMENTAL_HAZARD", + "OTHER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "numTrailers": { + "description": "A repeated value here is treated as an AND operation. This allows for ranges to be represented by two values (ex: \"count \u003c= 4\" AND \"count \u003e 2\" means \"2 \u003c count \u003c= 4\").", + "items": { + "$ref": "GeostoreCountComparisonProto" + }, + "type": "array" + }, + "trailerLength": { + "description": "A repeated value here is treated as an AND operation. This allows for ranges to be represented by two values (ex: \"length \u003c= 53ft\" AND \"length \u003e 48ft\" means \"48ft \u003c length \u003c= 53ft\").", + "items": { + "$ref": "GeostoreDimensionComparisonProto" + }, + "type": "array" + }, + "vehicleHeight": { + "description": "A repeated value here is treated as an AND operation. This allows for ranges to be represented by two values (ex: \"height \u003e 3m\" AND \"height \u003c= 5m\" means \"3m \u003c height \u003c= 5m\").", + "items": { + "$ref": "GeostoreDimensionComparisonProto" + }, + "type": "array" + }, + "vehicleLength": { + "description": "A repeated value here is treated as an AND operation. This allows for ranges to be represented by two values (ex: \"length \u003c= 40m\" AND \"length \u003e 35m\" means \"35m \u003c length \u003c= 40m\").", + "items": { + "$ref": "GeostoreDimensionComparisonProto" + }, + "type": "array" + }, + "vehicleWeight": { + "description": "A repeated value here is treated as an AND operation. This allows for ranges to be represented by two values (ex: \"weight \u003c 8T\" AND \"weight \u003e= 3T\" means \"3T \u003c= weight \u003c 8T\").", + "items": { + "$ref": "GeostoreWeightComparisonProto" + }, + "type": "array" + }, + "vehicleWidth": { + "description": "A repeated value here is treated as an AND operation. This allows for ranges to be represented by two values (ex: \"width \u003c 4m\" AND \"width \u003e= 2m\" means \"2m \u003c= width \u003c 4m\").", + "items": { + "$ref": "GeostoreDimensionComparisonProto" + }, + "type": "array" + } + }, + "type": "object" + }, + "GeostoreVerticalOrderingProto": { + "description": "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.", + "id": "GeostoreVerticalOrderingProto", + "properties": { + "level": { + "description": "The level represents the relative vertical ordering of a feature among all overlapping features. For example, we may have features along freeway surface have level = 0, and features on an overpass have level = 1. NOTE: It’s assumed that all features have level 0 by default, so that it’s not necessary for all overlapping features to have this set.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GeostoreWeightComparisonProto": { + "description": "A weight value tagged with a comparison operator.", + "id": "GeostoreWeightComparisonProto", + "properties": { + "comparison": { + "enum": [ + "COMPARISONOPERATOR_UNKNOWN", + "LESS_THAN", + "GREATER_THAN" + ], + "enumDescriptions": [ + "Default proto value, this value will never be set in Mapfacts.", + "", + "" + ], + "type": "string" + }, + "comparisonOperator": { + "enum": [ + "UNSPECIFIED", + "EQUAL", + "LESS_THAN", + "LESS_THAN_OR_EQUAL", + "GREATER_THAN", + "GREATER_THAN_OR_EQUAL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "weightWithUnit": { + "$ref": "GeostoreWeightProto" + } + }, + "type": "object" + }, + "GeostoreWeightProto": { + "description": "A weight with a numerical value and unit.", + "id": "GeostoreWeightProto", + "properties": { + "unit": { + "enum": [ + "UNIT_UNKNOWN", + "METRIC_TON", + "LONG_TON", + "SHORT_TON", + "POUND", + "KILOGRAM" + ], + "enumDescriptions": [ + "Default proto value, this value will never be set in Mapfacts.", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "weight": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GoodocAnchorLabel": { + "description": "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.", + "id": "GoodocAnchorLabel", + "properties": { + "Anchor": { + "description": "There is a generic method for composing such strings. Please take a look at GoodocUtils::GenerateUniqueAnchorName(...) in ocr/goodoc/goodoc-utils.h.", + "type": "string" + }, + "anchorScope": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocBoundingBox": { + "description": "Bounding box for page structural elements: pictures, paragraphs, characters, etc.", + "id": "GoodocBoundingBox", + "properties": { + "Height": { + "format": "int32", + "type": "integer" + }, + "Label": { + "description": "Optional magic label, so objects can be sorted on bounding box dimensions easily", + "format": "int32", + "type": "integer" + }, + "Left": { + "description": "BoundingBox coordinates and sizes are expressed in pixels", + "format": "int32", + "type": "integer" + }, + "Top": { + "format": "int32", + "type": "integer" + }, + "Width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocBoxPartitions": { + "description": "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.", + "id": "GoodocBoxPartitions", + "properties": { + "direction": { + "format": "int32", + "type": "integer" + }, + "span": { + "description": "\"span\" is width or height, determined by \"direction\". If there are k partitions, then there are k - 1 \"span\" values, one for each except the last symbol (which is redundant).", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoodocBreakLabel": { + "description": "Break label", + "id": "GoodocBreakLabel", + "properties": { + "BreakLabelType": { + "format": "int32", + "type": "integer" + }, + "isPrefix": { + "description": "True if break prepends the element", + "type": "boolean" + } + }, + "type": "object" + }, + "GoodocCharLabel": { + "description": "Font label", + "id": "GoodocCharLabel", + "properties": { + "BaseLine": { + "description": "The shift of a character from the base line of the string in pixels", + "format": "int32", + "type": "integer" + }, + "CharacterHeight": { + "description": "Height of small characters in pixels on the source image", + "format": "int32", + "type": "integer" + }, + "Color": { + "description": "The foreground color of the symbol; the default color is 0 (black)", + "format": "int32", + "type": "integer" + }, + "Confidence": { + "description": "Symbol recognition confidence from OCR. Range depends upon OCR Engine.", + "format": "int32", + "type": "integer" + }, + "FontId": { + "description": "The font ID refers to the fonts table in the document header", + "format": "int32", + "type": "integer" + }, + "FontSize": { + "description": "Size in points (JFYI: point is 1/72\"). This is rounded to the nearest whole number.", + "format": "int32", + "type": "integer" + }, + "FontSizeFloat": { + "description": "Size in points represented as float.", + "format": "float", + "type": "number" + }, + "FontType": { + "format": "int32", + "type": "integer" + }, + "HasUncertainHeight": { + "description": "If CharacterHeight is defined uncertainly", + "type": "boolean" + }, + "HorizontalScale": { + "description": "The horizontal scaling for a character, in percents. The default value for this property is 100, which corresponds to no scaling.", + "format": "int32", + "type": "integer" + }, + "IsBold": { + "type": "boolean" + }, + "IsItalic": { + "type": "boolean" + }, + "IsSmallCaps": { + "type": "boolean" + }, + "IsStrikeout": { + "type": "boolean" + }, + "IsSubscript": { + "type": "boolean" + }, + "IsSuperscript": { + "type": "boolean" + }, + "IsSuspicious": { + "description": "If OCR Engine marked the character as \"suspicious\" (this character is likely to be recognized incorrectly).", + "type": "boolean" + }, + "IsUnderlined": { + "type": "boolean" + }, + "NotOcrablePerQA": { + "description": "True if a QA operator has marked this as not OCRable. This is used for complex equations, scripts that the operator can't type, or handwriting.", + "type": "boolean" + }, + "Penalty": { + "description": "Symbol-level penalty from the garbage text detector. Lower is better; range = [0,100].", + "format": "int32", + "type": "integer" + }, + "SerifProbability": { + "description": "The probability that a character is written with a Serif font", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocDocument": { + "description": "Top-level representation of OCRed document", + "id": "GoodocDocument", + "properties": { + "EditingHistory": { + "description": "Debug info, recording the history of any editing done through the interface in goodoc-editing.h. The strings look like \"MoveParagraph(page_index = 0, source_block_index = 3, ...);", + "items": { + "type": "string" + }, + "type": "array" + }, + "LogicalEntity": { + "description": "Logical entities are stored as blobs. Depending on the kind of thing this is a goodoc of, a separate .proto file is expected to define the logical entity structure. Hence we can still parse this as a goodoc for people who dont care about this, and people who care about this can parse it specifically. ocr/goodoc/logical-entity-utils.h has methods to read and write these. See Goodoc++ doc", + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "LogicalEntityMessageName": { + "description": "The names of the proto messages serialized in LogicalEntity, one for each LogicalEntity. The repetitions should number 0 to leave this unspecified, or they should equal the number of LogicalEntity strings.", + "items": { + "type": "string" + }, + "type": "array" + }, + "SubDocuments": { + "description": "For multi-goodoc documents", + "items": { + "$ref": "GoodocDocument" + }, + "type": "array" + }, + "header": { + "$ref": "GoodocDocumentHeader" + }, + "page": { + "items": { + "$ref": "GoodocDocumentPage" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoodocDocumentHeader": { + "id": "GoodocDocumentHeader", + "properties": { + "OcrEngineId": { + "type": "string" + }, + "OcrEngineVersion": { + "type": "string" + }, + "font": { + "items": { + "$ref": "GoodocDocumentHeaderFont" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoodocDocumentHeaderFont": { + "id": "GoodocDocumentHeaderFont", + "properties": { + "FontId": { + "format": "int32", + "type": "integer" + }, + "FontName": { + "type": "string" + } + }, + "type": "object" + }, + "GoodocDocumentPage": { + "id": "GoodocDocumentPage", + "properties": { + "GarbageDetectorChangeList": { + "description": "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).", + "format": "int32", + "type": "integer" + }, + "GarbageDetectorWasProduction": { + "type": "boolean" + }, + "Height": { + "description": "Height in pixels", + "format": "int32", + "type": "integer" + }, + "HorizontalDpi": { + "description": "Horizontal resolution in DPI.", + "format": "int32", + "type": "integer" + }, + "Label": { + "$ref": "GoodocLabel" + }, + "PornScore": { + "description": "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.", + "format": "double", + "type": "number" + }, + "TextConfidence": { + "description": "Page text recognition confidence. Range depends on the algorithm but should be consistent in a given volume. 0 is bad, 100 is good.", + "format": "int32", + "type": "integer" + }, + "VerticalDpi": { + "description": "Vertical resolution in DPI.", + "format": "int32", + "type": "integer" + }, + "Width": { + "description": "Width in pixels", + "format": "int32", + "type": "integer" + }, + "block": { + "items": { + "$ref": "GoodocDocumentPageBlock" + }, + "type": "array" + }, + "mergedpageinfo": { + "items": { + "$ref": "GoodocDocumentPageMergedPageInfo" + }, + "type": "array" + }, + "postOcrConfidence": { + "description": "Whether page-level text confidences and other summary data were computed by PostOcrUtils instead of the now-obsolete GarbageTextDetector", + "type": "boolean" + }, + "stats": { + "$ref": "GoodocSummaryStats", + "description": "Page level stats (font size, line spacing, etc.)" + } + }, + "type": "object" + }, + "GoodocDocumentPageBlock": { + "id": "GoodocDocumentPageBlock", + "properties": { + "BlockType": { + "format": "int32", + "type": "integer" + }, + "Box": { + "$ref": "GoodocBoundingBox" + }, + "Label": { + "$ref": "GoodocLabel" + }, + "OrientationLabel": { + "$ref": "GoodocOrientationLabel", + "description": "Which way is upright for this block, and what is the reading order (applicable if there is text here)." + }, + "Paragraph": { + "items": { + "$ref": "GoodocParagraph" + }, + "type": "array" + }, + "RotatedBox": { + "$ref": "GoodocRotatedBoundingBox", + "description": "If RotatedBox is set, Box must be set as well. See RotatedBoundingBox." + }, + "TextConfidence": { + "description": "Block text recognition confidence. Range depends on the algorithm but should be consistent in a given volume. 0 is bad, 100 is good.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocDocumentPageMergedPageInfo": { + "description": "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.", + "id": "GoodocDocumentPageMergedPageInfo", + "properties": { + "OcrEngineId": { + "type": "string" + }, + "OcrEngineVersion": { + "type": "string" + } + }, + "type": "object" + }, + "GoodocFontSizeStats": { + "description": "Statistics about a particular font size (from CharLabel.FontSize) aggregated over a range of symbols", + "id": "GoodocFontSizeStats", + "properties": { + "fontId": { + "description": "CharLabel.FontId and FontSize", + "format": "int32", + "type": "integer" + }, + "fontSize": { + "format": "int32", + "type": "integer" + }, + "medianHeight": { + "description": "The measurements are in pixels", + "format": "int32", + "type": "integer" + }, + "medianLineHeight": { + "description": "top to bottom", + "format": "int32", + "type": "integer" + }, + "medianLineSpace": { + "description": "bottom to next top in para", + "format": "int32", + "type": "integer" + }, + "medianLineSpan": { + "description": "top to next top in para", + "format": "int32", + "type": "integer" + }, + "medianWidth": { + "format": "int32", + "type": "integer" + }, + "numLineSpaces": { + "description": "Lines (out of num_lines) that have a successor line within their para", + "format": "int32", + "type": "integer" + }, + "numLines": { + "description": "Line stats for this font. \"top\" corresponds to the highest ascender and \"bottom\" to the lowest descender. num_lines = # lines with \u003e 50% symbols having this font", + "format": "int32", + "type": "integer" + }, + "numSymbols": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocLabel": { + "description": "Label aggregates all kinds of optional characteristics of page elements.", + "id": "GoodocLabel", + "properties": { + "AnchorLabel": { + "description": "AnchorLabel identifies a link target.", + "items": { + "$ref": "GoodocAnchorLabel" + }, + "type": "array" + }, + "BreakLabel": { + "$ref": "GoodocBreakLabel" + }, + "CharLabel": { + "$ref": "GoodocCharLabel", + "description": "CharLabel is specifically intended for symbols" + }, + "LanguageLabel": { + "description": "Languages used in the element (page, block, paragraph or word). Ordered by dominant-language first. Note: content scanjobs processed by the garbage_text_detector before CL 9223538 (Dec. 2008) have LanguageLabels in arbitrary order (within Page and Block elements) -- the confidence value should be inspected to find the dominant language guess for these, rather than just taking the first.", + "items": { + "$ref": "GoodocLanguageLabel" + }, + "type": "array" + }, + "SemanticLabel": { + "$ref": "GoodocSemanticLabel", + "description": "SemanticLabel is defined in goodoc-semantics.proto, it allows rich annotation of content, identifying the nature of page elements." + } + }, + "type": "object" + }, + "GoodocLanguageCombinationLanguage": { + "description": "Weighted language", + "id": "GoodocLanguageCombinationLanguage", + "properties": { + "bcp47Tag": { + "description": "Bcp47 language code. Note, this is not the same as OceanCode used by goodoc::Document.", + "type": "string" + }, + "weight": { + "description": "Weight of language. This specifies how likely it is to see the language in the input text. The values don't have to add up to 1.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GoodocLanguageLabel": { + "description": "Language label", + "id": "GoodocLanguageLabel", + "properties": { + "ClosestLanguageId": { + "description": "Closest id from i18n/languages/proto/languages.proto; caveat: may not accurately capture the language. GoodocLanguageCodeToLanguage() declared in ocr/goodoc/goodoc-utils.h may be used to convert a Language enum (i18n/languages/proto/languages.proto) to a string suitable for this field.", + "format": "int32", + "type": "integer" + }, + "Confidence": { + "description": "Confidence level on that language, between 0 and 100", + "format": "int32", + "type": "integer" + }, + "LanguageCode": { + "description": "Old (Ocean) Language Code Usage: The language code is inferred during the running of the Garbage Text Detector and gets set at the paragraph, block and page level. Language code is a string of 3 or more characters. The first 3 letters specify the language, according to ISO 639. Optionally, the 3-letter code can be extended with an underscore and a language variant specifier. Specifiers exist for regional variants or for different forms of language spelling. The regional variants are specified as 2-letter country code, according to ISO 3166. Some examples: Standard \"por\" - Portuguese, standard \"rus\" - Russian, standard Regional variants: \"por_br\" - Portuguese, Brazilian \"eng_us\" - English, United States Variants of spelling: \"rus_old\" - Russian, old spelling \"chi_tra\" - Chinese, traditional \"ger_new\" - German, new spelling LanguageToGoodocLanguageCode() declared in ocr/goodoc/goodoc-utils.h may be used to convert a Language enum (i18n/languages/proto/languages.proto) to a string suitable for this field. New Language Code Usage: Most of the usages described above were standardized in BCP 47, and these codes are the new stanadard to be used in this field. To load either new or old language codes to form LanguageCode objects, use the function FromOceanCode() in ocr/quality/lang_util.h Note that the function ocr::FromOceanCode is capable of transforming either version of the LanguageCode to a C++ i18n_identifiers::LanguageCode.", + "type": "string" + } + }, + "type": "object" + }, + "GoodocLogicalEntity": { + "description": "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.", + "id": "GoodocLogicalEntity", + "properties": { + "Metadata": { + "type": "string" + }, + "link": { + "items": { + "$ref": "GoodocLogicalEntityLink" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoodocLogicalEntityLink": { + "description": "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.\"", + "id": "GoodocLogicalEntityLink", + "properties": { + "Anchor": { + "description": "The preferred way to link to an element is to create an AnchorLabel in the target element and name it here. Multiple elements may contain the same Anchor string.", + "type": "string" + }, + "BlockId": { + "format": "int32", + "type": "integer" + }, + "DocId": { + "description": "Links may also specifically locate the target element with the following indices. Note that during the course of layout analysis, goodoc elements may move around, so such hard links should be created only very late (or not at all -- Anchors would be more reliable target addresses).", + "format": "int32", + "type": "integer" + }, + "PageId": { + "format": "int32", + "type": "integer" + }, + "ParagraphId": { + "format": "int32", + "type": "integer" + }, + "RouteId": { + "format": "int32", + "type": "integer" + }, + "SymbolId": { + "format": "int32", + "type": "integer" + }, + "Url": { + "description": "If not defined, link points to the current doc", + "type": "string" + }, + "WordId": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocOrdinal": { + "description": "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.", + "id": "GoodocOrdinal", + "properties": { + "implicit": { + "enum": [ + "UNKNOWN_IMPLICIT", + "IMPLICIT", + "EXPLICIT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "sectionStringValue": { + "type": "string" + }, + "sectionValue": { + "format": "int32", + "type": "integer" + }, + "sectionValueType": { + "description": "The following vars describe the section component of an ordinal (if exists). They are used to express situation where a page number has a section component, usually denoating the chapter number. For example pages 5-14, 5-15 will both have the common section 5. (If exists). The semantcis of the section variables correspond to that of the primary part of the ordinal. (Described above).", + "enum": [ + "UNKNOWN_VALUE_TYPE", + "LEGACY_PRE_VALUE", + "ROMAN", + "ASCII", + "ALPHA", + "LEGACY_POST_VALUE", + "UNDEFINED_VALUE_TYPE", + "CHINESE", + "JAPANESE", + "KOREAN", + "ARABIC_ARABIC" + ], + "enumDescriptions": [ + "", + "Not to be used", + "Roman numeral", + "ASCII numeral (i.e. 1,2,3)", + "Alphabetic, as in the first part of \"A-11\".", + "Not to be used", + "", + "", + "", + "", + "Arabic numeral as used in Arabic. (Not to be confused with the ASCII numeral a.k.a Arabic numberal.)" + ], + "type": "string" + }, + "stringValue": { + "description": "The string page value.", + "type": "string" + }, + "value": { + "description": "The numeric page value.", + "format": "int32", + "type": "integer" + }, + "valueDelta": { + "description": "The delta in which the value increases between pages.", + "enum": [ + "DELTA_HALF", + "DELTA_ONE", + "DELTA_TWO" + ], + "enumDescriptions": [ + "appears in typewritten documents", + "the usual numbering scenario", + "appears in documents with two ordinals per page" + ], + "type": "string" + }, + "valueType": { + "description": "A value type from the Type enum above.", + "enum": [ + "UNKNOWN_VALUE_TYPE", + "LEGACY_PRE_VALUE", + "ROMAN", + "ASCII", + "ALPHA", + "LEGACY_POST_VALUE", + "UNDEFINED_VALUE_TYPE", + "CHINESE", + "JAPANESE", + "KOREAN", + "ARABIC_ARABIC" + ], + "enumDescriptions": [ + "", + "Not to be used", + "Roman numeral", + "ASCII numeral (i.e. 1,2,3)", + "Alphabetic, as in the first part of \"A-11\".", + "Not to be used", + "", + "", + "", + "", + "Arabic numeral as used in Arabic. (Not to be confused with the ASCII numeral a.k.a Arabic numberal.)" + ], + "type": "string" + } + }, + "type": "object" + }, + "GoodocOrientationLabel": { + "description": "OrientationLabel groups the details about orientation and reading order.", + "id": "GoodocOrientationLabel", + "properties": { + "deskewAngle": { + "description": "After rotating so that the text orientation is upright, how many radians does one have to rotate the block anti-clockwise for it to be level? We guarantee: -Pi/4 \u003c= deskew_angle \u003c= Pi/4", + "format": "float", + "type": "number" + }, + "mirrored": { + "description": "Whether a text line is mirrored (e.g. reflected in a shiny surface or seen through the opposite side of a storefront window). The intent is that this is a quality of the text line image. It needs to be reflected according to a vertical axis along the direction of upright characters to make it readable. This does not affect the shape of the bounding box. A mirrored line with top to bottom writing remains top to bottom. A mirrored horizontal line will flip left to right. However any child entities (symbols) will remain in the same order, and the writing direction imposed by the language (ltr or rtl) will remain the same.", + "type": "boolean" + }, + "orientation": { + "enum": [ + "ORIENTATION_PAGE_UP", + "ORIENTATION_PAGE_RIGHT", + "ORIENTATION_PAGE_DOWN", + "ORIENTATION_PAGE_LEFT" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "textlineOrder": { + "enum": [ + "TEXTLINE_ORDER_LEFT_TO_RIGHT", + "TEXTLINE_ORDER_RIGHT_TO_LEFT", + "TEXTLINE_ORDER_TOP_TO_BOTTOM" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "writingDirection": { + "enum": [ + "WRITING_DIRECTION_LEFT_TO_RIGHT", + "WRITING_DIRECTION_RIGHT_TO_LEFT", + "WRITING_DIRECTION_TOP_TO_BOTTOM" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GoodocOverrides": { + "description": "This message specifies structure \"overrides\" to apply: it can be used to force certain kinds of GoodocToHTML renderings of elements.", + "id": "GoodocOverrides", + "properties": { + "blockImagination": { + "description": "For text blocks only: do not allow this block to be turned into an image when rendering, even if your algorithms want to do so:", + "enum": [ + "LEAVE_ALONE", + "FORCE_TRUE", + "FORCE_FALSE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "doNotExpandGraphicBox": { + "description": "For graphic blocks, we often expand the block a bit for rendering, to compensate for bad image segmentation. do_not_expand_graphic_box forces this behavior to be turned off.", + "type": "boolean" + }, + "fullPageAsImage": { + "description": "For Pages only: explicitly specify whether or not this page should be rendered fully as an image", + "enum": [ + "LEAVE_ALONE", + "FORCE_TRUE", + "FORCE_FALSE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "fullPageLineated": { + "description": "For Pages only: explicitly specify whether or not all text on this page should be treated as \"LINEATED\"", + "enum": [ + "LEAVE_ALONE", + "FORCE_TRUE", + "FORCE_FALSE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "fullPageSkipped": { + "description": "For Pages only: explicitly specify whether or not this page should be skipped.", + "enum": [ + "LEAVE_ALONE", + "FORCE_TRUE", + "FORCE_FALSE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "needNotSuppressPhoto": { + "description": "This GRAPHIC block's image can be shown even when GoodocToHTMLOptions.suppress_photos_with_this is specified.", + "type": "boolean" + }, + "pageBreakBefore": { + "description": "For blocks: explicitly specify whether or not this block should get a page-break before it.", + "enum": [ + "LEAVE_ALONE", + "FORCE_TRUE", + "FORCE_FALSE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "style": { + "items": { + "$ref": "GoodocOverridesStyle" + }, + "type": "array" + }, + "wordHtml": { + "description": "For Words only: replace the rendered HTML by this:", + "type": "string" + } + }, + "type": "object" + }, + "GoodocOverridesStyle": { + "description": "Extra css styles to apply", + "id": "GoodocOverridesStyle", + "properties": { + "name": { + "description": "css attribute name: \"margin-left\", for eg.", + "type": "string" + }, + "value": { + "description": "css attribute vale: \"1em\", for eg.", + "type": "string" + } + }, + "type": "object" + }, + "GoodocParagraph": { + "description": "Represents a paragraph of text in OCRed content.", + "id": "GoodocParagraph", + "properties": { + "Box": { + "$ref": "GoodocBoundingBox" + }, + "FirstLineIndent": { + "format": "int32", + "type": "integer" + }, + "Label": { + "$ref": "GoodocLabel" + }, + "LeftIndent": { + "format": "int32", + "type": "integer" + }, + "LineSpacing": { + "format": "int32", + "type": "integer" + }, + "OrientationLabel": { + "$ref": "GoodocOrientationLabel", + "description": "Which way is upright for this paragraph and what is the dominant reading order?" + }, + "RightIndent": { + "format": "int32", + "type": "integer" + }, + "RotatedBox": { + "$ref": "GoodocRotatedBoundingBox", + "description": "If RotatedBox is set, Box must be set as well. See RotatedBoundingBox." + }, + "SpaceAfter": { + "format": "int32", + "type": "integer" + }, + "SpaceBefore": { + "format": "int32", + "type": "integer" + }, + "SubsumedParagraphProperties": { + "description": "If we merge any paragraphs into this one (through the MergeParagraphWithNext() interface in goodoc-editing.h), then we append the properties of the merged paragraph here, for debugging and to avoid losing any info. Note that the SubsumedParagraphProperties Paragraphs do not contain Routes.", + "items": { + "$ref": "GoodocParagraph" + }, + "type": "array" + }, + "TextConfidence": { + "description": "Paragraph text recognition confidence. Range depends on the algorithm but should be consistent in a given volume. 0 is bad, 100 is good.", + "format": "int32", + "type": "integer" + }, + "Width": { + "format": "int32", + "type": "integer" + }, + "alignment": { + "format": "int32", + "type": "integer" + }, + "droppedcap": { + "$ref": "GoodocParagraphDroppedCap" + }, + "route": { + "items": { + "$ref": "GoodocParagraphRoute" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoodocParagraphDroppedCap": { + "description": "Information about the paragraph's dropped capital letter", + "id": "GoodocParagraphDroppedCap", + "properties": { + "Box": { + "$ref": "GoodocBoundingBox" + }, + "LettersCount": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocParagraphRoute": { + "id": "GoodocParagraphRoute", + "properties": { + "EndPoint": { + "$ref": "GoodocRoutePoint", + "description": "Route end point" + }, + "StartPoint": { + "$ref": "GoodocRoutePoint", + "description": "Route start point" + }, + "Weight": { + "description": "Route weight, i.e. route", + "format": "int32", + "type": "integer" + }, + "Word": { + "description": "The array of words on this route", + "items": { + "$ref": "GoodocWord" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoodocRotatedBoundingBox": { + "description": "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.", + "id": "GoodocRotatedBoundingBox", + "properties": { + "Angle": { + "description": "Angle of rotation of the original non-rotated box around the top left corner of the original non-rotated box, in clockwise degrees from the horizontal.", + "format": "float", + "type": "number" + }, + "Height": { + "format": "int32", + "type": "integer" + }, + "Left": { + "description": "Coordinates and sizes are expressed in pixels, where the top-left pixel is (0, 0). The coordinates refer to the corner of the top-left vertex of the unrotated version of the box.", + "format": "int32", + "type": "integer" + }, + "Top": { + "format": "int32", + "type": "integer" + }, + "Width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocRoutePoint": { + "id": "GoodocRoutePoint", + "properties": { + "RouteIndex": { + "description": "The sequential route number, starts at 0", + "format": "int32", + "type": "integer" + }, + "WordIndex": { + "description": "The sequential word number, starts at 0", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocSemanticLabel": { + "description": "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).", + "id": "GoodocSemanticLabel", + "properties": { + "AlternateText": { + "description": "Alternate text for a sequence of the Goodoc, just for the element containing this label, or for a sequence starting from this element to the EndOfSpanningLabel. Typically this is inserted by automatic or manual OCR correction. We use text instead of editing the Goodoc directly since we dont usually have accurate symbol level bboxes for the alternate text. Also the original values from OCR are preserved. It is upto the application to do anything more intelligent like mapping words and finding potential symbol/word bboxes.", + "type": "string" + }, + "Attribute": { + "description": "Page elements can be given Attributes refining meaning/role. We keep this flexible by using strings instead of pre-determined enum values. But it is useful to list all such Attributes in use in ocr/goodoc/goodoc-semantics-attributes.h", + "items": { + "type": "string" + }, + "type": "array" + }, + "ChapterStart": { + "description": "Blocks that are at the beginning of chapters have this set:", + "type": "boolean" + }, + "CleanupAnnotation": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "ContinuesFromPreviousPage": { + "type": "boolean" + }, + "ContinuesFromPreviousPageHyphenated": { + "description": "When ContinuesFromPreviousPage=true, this bit can be set to note that the word fragment on the previous page ends in a hyphen.", + "type": "boolean" + }, + "ContinuesOnNextPage": { + "description": "Paragraphs that span across pages can be identified with the following flags. Note that flows just connect Blocks across pages. These continuation flags imply something more specific -- the case of a single logical paragraph split over pages. Only the last Paragraph in the last Block within a given FlowThread() on a page can have ContinuesOnNextPage set. Similarly, only the first Paragraph in the first Block with a given FlowThread() on a page may have ContinuesFromPreviousPage set.", + "type": "boolean" + }, + "EndOfSpanningLabel": { + "$ref": "GoodocLogicalEntity", + "description": "Normally, a SemanticLabel applies exactly to the goodoc element that it is contained in (usually Block or Paragraph, sometimes Word). Occasionally, we need a SemanticLabel to span across the boundary or end before the boundary. For example, a URL may just be a few words within a Paragraph. In such cases, the SemanticLabel is added to the first element of the span and contains this LogicalEntity pointing to the last element of the span:" + }, + "ExperimentalData": { + "$ref": "Proto2BridgeMessageSet", + "description": "Message set for experimental algorithm data. Use case: We keep a set of features that was computed for the unsupervised caption extraction and store it here. Agora question producer will consume this message set to be embedded in a question. The experimental feature set can then be used later to pair up with ground truth labels for designing a supervised algorithm. Currently holding: o ocean/analysis/content/caption_data.proto's TextualElement" + }, + "Flow": { + "description": "Flow identifies a single sequential unit of text (or other content). It is only set on Blocks -- a flow identifies a sequence of Blocks. The default, main flow is just the empty string. The \"FlowThread\" of a block is the flow (if non-empty), suffixed with the block appearance. This is computed by GoodocUtils::FlowThread(). Paragraphs may be split over blocks in the same FlowThread, across pages. The following table shows how FlowThread gets computed: ## Flow Appearance FlowThread (empty) UNSPECIFIED \"UNSPECIFIED\" foo BODY \"foo:BODY\" Please use lower-case strings for flows (such as article-33-box). One useful way to think of flows is this: A logical unit of interest in a a Document (for example, an article) would be identified by a starting block, an ending block, and a list of flows of interest within the [start, end) span. message Article { (page#, block#): article_start; (page#, block#): article_end; repeated string flows; } The reading order of blocks, paragraphs/etc within this article would be the same order as present in the goodoc itself. Some applications (such as rendering) may want to process the article by running over all the flows together, others (such as indexing) may want to deal with the FlowThreads one after the other.", + "type": "string" + }, + "ModificationRecord": { + "description": "This field can be used to record the steps by which AlternateText for a sequence of the Goodoc is generated.", + "type": "string" + }, + "PageNumberOrdinal": { + "$ref": "GoodocOrdinal", + "description": "If Appearence is PAGE_NUMBER:" + }, + "appearance": { + "format": "int32", + "type": "integer" + }, + "columndetails": { + "$ref": "GoodocSemanticLabelColumnDetails" + }, + "contentlink": { + "$ref": "GoodocSemanticLabelContentLink" + }, + "editcorrectioncandidate": { + "items": { + "$ref": "GoodocSemanticLabelEditCorrectionCandidate" + }, + "type": "array" + }, + "overrides": { + "$ref": "GoodocOverrides", + "description": "Structure overrides: typically manual corrections to goodoc renderings." + }, + "snippetfilter": { + "items": { + "$ref": "GoodocSemanticLabelSnippetFilter" + }, + "type": "array" + }, + "tablecelldetails": { + "$ref": "GoodocSemanticLabelTableCellDetails" + }, + "tabledetails": { + "$ref": "GoodocSemanticLabelTableDetails" + } + }, + "type": "object" + }, + "GoodocSemanticLabelColumnDetails": { + "description": "If Appearance is COLUMN:", + "id": "GoodocSemanticLabelColumnDetails", + "properties": { + "Column": { + "format": "int32", + "type": "integer" + }, + "Columns": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocSemanticLabelContentLink": { + "description": "If the label is for something that links to another piece of content (in this volume, outside, a url, a citation, etc.).", + "id": "GoodocSemanticLabelContentLink", + "properties": { + "UrlTarget": { + "description": "For URL labels, we note the url here directly (it's also available by grabbing all text symbols within the labeled span). SCHOLARLY_CITATION labels or even CAPTION labels may occasionally contain URLs.", + "type": "string" + }, + "citationtarget": { + "$ref": "GoodocSemanticLabelContentLinkCitationTarget" + }, + "involumetarget": { + "$ref": "GoodocSemanticLabelContentLinkInVolumeTarget" + } + }, + "type": "object" + }, + "GoodocSemanticLabelContentLinkCitationTarget": { + "description": "For SCHOLARLY_CITATION labels:", + "id": "GoodocSemanticLabelContentLinkCitationTarget", + "properties": { + "Authors": { + "description": "separated by semicolons", + "type": "string" + }, + "BibKey": { + "type": "string" + }, + "Confidence": { + "format": "double", + "type": "number" + }, + "Title": { + "type": "string" + }, + "Year": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocSemanticLabelContentLinkInVolumeTarget": { + "description": "For CAPTION or FOOTNOTE_POINTER or TOC_ENTRY or INDEX_ENTRY or CONTINUATION labels:", + "id": "GoodocSemanticLabelContentLinkInVolumeTarget", + "properties": { + "Confidence": { + "format": "double", + "type": "number" + }, + "LogicalEntity": { + "$ref": "GoodocLogicalEntity", + "description": "The CAPTION label typically targets the previous or the next Block. The FOOTNOTE_POINTER label typically targets a paragraph in a FOOTNOTE Block. TOC_ENTRY and INDEX_ENTRY labels are links that point to a different page within the volume. CONTINUATION labels also are links that point to a different page within the volume, or maybe even a particular block or paragraph." + } + }, + "type": "object" + }, + "GoodocSemanticLabelEditCorrectionCandidate": { + "description": "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.", + "id": "GoodocSemanticLabelEditCorrectionCandidate", + "properties": { + "EditedWord": { + "type": "string" + }, + "Probability": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GoodocSemanticLabelSnippetFilter": { + "description": "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.", + "id": "GoodocSemanticLabelSnippetFilter", + "properties": { + "badwordFraction": { + "format": "double", + "type": "number" + }, + "windowSize": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocSemanticLabelTableCellDetails": { + "description": "If Appearance is TABLE_CELL:", + "id": "GoodocSemanticLabelTableCellDetails", + "properties": { + "Column": { + "format": "int32", + "type": "integer" + }, + "ColumnSpan": { + "format": "int32", + "type": "integer" + }, + "Row": { + "description": "Row and Column are 0-based", + "format": "int32", + "type": "integer" + }, + "RowSpan": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocSemanticLabelTableDetails": { + "description": "If Appearance is TABLE:", + "id": "GoodocSemanticLabelTableDetails", + "properties": { + "Columns": { + "format": "int32", + "type": "integer" + }, + "Rows": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocSummaryStats": { + "description": "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).", + "id": "GoodocSummaryStats", + "properties": { + "estimatedFontSizes": { + "description": "This flag is set if the histogram above has been derived by estimating font sizes from CharLabel.CharacterHeight; that happens if the FontSize field is constant, as has happened with Abbyy 9.", + "type": "boolean" + }, + "fontSizeHistogram": { + "description": "Symbol counts (and other attributes) for each distinct CharLabel.FontId and FontSize; histogram is in decreasing order of symbol count", + "items": { + "$ref": "GoodocFontSizeStats" + }, + "type": "array" + }, + "meanSymbolsPerBlock": { + "format": "int32", + "type": "integer" + }, + "meanSymbolsPerLine": { + "format": "int32", + "type": "integer" + }, + "meanSymbolsPerParagraph": { + "format": "int32", + "type": "integer" + }, + "meanSymbolsPerWord": { + "format": "int32", + "type": "integer" + }, + "meanWordsPerBlock": { + "format": "int32", + "type": "integer" + }, + "meanWordsPerLine": { + "format": "int32", + "type": "integer" + }, + "meanWordsPerParagraph": { + "format": "int32", + "type": "integer" + }, + "medianBlockSpace": { + "description": "bottom to next top in flow on page", + "format": "int32", + "type": "integer" + }, + "medianEvenPrintedBox": { + "$ref": "GoodocBoundingBox", + "description": "0,2,4.." + }, + "medianFullEvenPrintedBox": { + "$ref": "GoodocBoundingBox" + }, + "medianFullOddPrintedBox": { + "$ref": "GoodocBoundingBox" + }, + "medianFullPrintedBox": { + "$ref": "GoodocBoundingBox", + "description": "Each median_full*_printed_box includes page header/footer but still excludes all graphic blocks" + }, + "medianHeight": { + "format": "int32", + "type": "integer" + }, + "medianHorizontalDpi": { + "format": "int32", + "type": "integer" + }, + "medianLineHeight": { + "description": "top to bottom", + "format": "int32", + "type": "integer" + }, + "medianLineSpace": { + "description": "bottom to next top in para", + "format": "int32", + "type": "integer" + }, + "medianLineSpan": { + "description": "top to next top in para", + "format": "int32", + "type": "integer" + }, + "medianOddPrintedBox": { + "$ref": "GoodocBoundingBox", + "description": "1,3,5.." + }, + "medianParagraphIndent": { + "description": "leading space on first line", + "format": "int32", + "type": "integer" + }, + "medianParagraphSpace": { + "description": "bottom to next top in block", + "format": "int32", + "type": "integer" + }, + "medianPrintedBox": { + "$ref": "GoodocBoundingBox", + "description": "Each median*_printed_box excludes page header/footer and all graphic blocks" + }, + "medianSymbolsPerBlock": { + "format": "int32", + "type": "integer" + }, + "medianSymbolsPerLine": { + "format": "int32", + "type": "integer" + }, + "medianSymbolsPerParagraph": { + "format": "int32", + "type": "integer" + }, + "medianSymbolsPerWord": { + "format": "int32", + "type": "integer" + }, + "medianVerticalDpi": { + "format": "int32", + "type": "integer" + }, + "medianWidth": { + "format": "int32", + "type": "integer" + }, + "medianWordsPerBlock": { + "format": "int32", + "type": "integer" + }, + "medianWordsPerLine": { + "format": "int32", + "type": "integer" + }, + "medianWordsPerParagraph": { + "format": "int32", + "type": "integer" + }, + "numBlockSpaces": { + "description": "blocks that have a successor block within their flow on their page", + "format": "int32", + "type": "integer" + }, + "numBlocks": { + "description": "------ Block stats Median symbols and words omit junk, header and footer blocks; they are intended to be a measure of the typical \"content\" block. There can still be substantial differences between means and medians; however, block values will generally exceed paragraph values (not the case when headers and footers are included).", + "format": "int32", + "type": "integer" + }, + "numLineSpaces": { + "description": "Lines (out of num_lines) that have a successor line within their para", + "format": "int32", + "type": "integer" + }, + "numLines": { + "description": "------ Line stats \"top\" corresponds to the highest ascender and \"bottom\" to the lowest descender.", + "format": "int32", + "type": "integer" + }, + "numNonGraphicBlocks": { + "format": "int32", + "type": "integer" + }, + "numPages": { + "description": "------ Page stats.", + "format": "int32", + "type": "integer" + }, + "numParagraphSpaces": { + "description": "paras that have a successor para within their block", + "format": "int32", + "type": "integer" + }, + "numParagraphs": { + "description": "------ Paragraph stats Median symbols and words omit junk, header and footer blocks; they are intended to be a measure of the typical \"content\" paragraph. There can still be substantial differences between means and medians, particularly if a table is present (every cell is a paragraph).", + "format": "int32", + "type": "integer" + }, + "numSymbols": { + "description": "------ Symbol stats", + "format": "int32", + "type": "integer" + }, + "numWords": { + "description": "------ Word stats", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocSymbol": { + "description": "A single symbol representation", + "id": "GoodocSymbol", + "properties": { + "Box": { + "$ref": "GoodocBoundingBox" + }, + "Code": { + "description": "The unicode character code in UTF-32", + "format": "int32", + "type": "integer" + }, + "Label": { + "$ref": "GoodocLabel" + }, + "RotatedBox": { + "$ref": "GoodocRotatedBoundingBox", + "description": "If RotatedBox is set, Box must be set as well. See RotatedBoundingBox." + }, + "symbolvariant": { + "items": { + "$ref": "GoodocSymbolSymbolVariant" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoodocSymbolSymbolVariant": { + "id": "GoodocSymbolSymbolVariant", + "properties": { + "Code": { + "format": "int32", + "type": "integer" + }, + "Confidence": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoodocWord": { + "description": "A word representation", + "id": "GoodocWord", + "properties": { + "Baseline": { + "description": "The baseline's y-axis offset from the bottom of the word's bounding box, given in pixels. (A value of 2, for instance, indicates the baseline is 2px above the bottom of the box.)", + "format": "int32", + "type": "integer" + }, + "Box": { + "$ref": "GoodocBoundingBox" + }, + "Capline": { + "description": "The capline is the y-axis offset from the top of the word bounding box. A positive value n indicates that capline is n-pixels above the top of this word.", + "format": "int32", + "type": "integer" + }, + "CompactSymbolBoxes": { + "$ref": "GoodocBoxPartitions", + "description": "For space efficiency, we sometimes skip the detailed per-symbol bounding boxes in Symbol.Box, and use this coarser representation instead, where we just store Symbol boundaries within the Word box. Most client code should not have to worry directly about this, it should be handled in the deepest layers of writing/reading goodocs (for example, see Compress() and Uncompress() in ocean/goodoc/goovols-bigtable-volume.h). Note(viresh): I experimented with this compression, and here are some numbers for reference. If the zlib-compressed page goodoc string size was 100 to start with, then this compaction makes it 65. As a possible future relaxation to consider: if we add in, for each symbol, a \"top\" and \"bottom\" box offset then the size would be 75 (that's with \"repeated int32 top/bottom_offset\" fields inside BoxPartitions, instead of inside each symbol)." + }, + "Confidence": { + "description": "Word recognition confidence. Range depends upon OCR Engine.", + "format": "int32", + "type": "integer" + }, + "IsFromDictionary": { + "description": "word. The meaning and range depends on the OCR engine or subsequent processing. Specifies whether the word was found", + "type": "boolean" + }, + "IsIdentifier": { + "description": "a number True if word represents", + "type": "boolean" + }, + "IsLastInSentence": { + "description": "True if the word is the last word in any sub-paragraph unit that functions at the same level of granularity as a sentence. Examples: \"She hit the ball.\" (regular sentence) \"Dewey defeats Truman\" (heading) \"The more, the merrier.\" (no verb) Note: not currently used. Code to set this was introduced in CL 7038338 and removed in OCL=10678722.", + "type": "boolean" + }, + "IsNumeric": { + "description": "in the dictionary True if the word represents", + "type": "boolean" + }, + "Label": { + "$ref": "GoodocLabel" + }, + "Penalty": { + "description": "Penalty for discordance of characters in a", + "format": "int32", + "type": "integer" + }, + "RotatedBox": { + "$ref": "GoodocRotatedBoundingBox", + "description": "If RotatedBox is set, Box must be set as well. See RotatedBoundingBox." + }, + "Symbol": { + "description": "Word characters, the text may", + "items": { + "$ref": "GoodocSymbol" + }, + "type": "array" + }, + "alternates": { + "$ref": "GoodocWordAlternates" + }, + "text": { + "description": "As a shortcut, the content API provides the text of words instead of individual symbols (NOTE: this is experimental). This is UTF8. And the main font for the word is stored in Label.CharLabel.", + "type": "string" + }, + "writingDirection": { + "description": "Writing direction for this word.", + "enum": [ + "WRITING_DIRECTION_LEFT_TO_RIGHT", + "WRITING_DIRECTION_RIGHT_TO_LEFT", + "WRITING_DIRECTION_TOP_TO_BOTTOM" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "GoodocWordAlternates": { + "description": "Alternate OCR words for Ptolemy OCR Correction. This is the output of the Ptolemy error estimator. See http://go/Ptolemy.", + "id": "GoodocWordAlternates", + "properties": { + "ErrorProbability": { + "description": "The probability that the main OCR engine (Abbyy) string is incorrect; range is 0 (definitely correct) to 100 (definitely incorrect).", + "format": "int32", + "type": "integer" + }, + "alternate": { + "items": { + "$ref": "GoodocWordAlternatesAlternate" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoodocWordAlternatesAlternate": { + "description": "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.", + "id": "GoodocWordAlternatesAlternate", + "properties": { + "OcrEngineId": { + "description": "See Document.Header", + "type": "string" + }, + "OcrEngineVersion": { + "description": "See Document.Header", + "type": "string" + }, + "Word": { + "$ref": "GoodocWord", + "description": "In order to compile, this recursive message needs to be optional, even though it's within an optional group." + } + }, + "type": "object" + }, + "GoogleAssistantAccessoryV1AudioOutConfig": { + "description": "Specifies the desired format for the server to use when it returns `audio_out` messages.", + "id": "GoogleAssistantAccessoryV1AudioOutConfig", + "properties": { + "audioMode": { + "description": "Current audio mode on the device while issuing the query.", + "enum": [ + "AUDIO_MODE_UNSPECIFIED", + "MUTED", + "SILENT", + "PLAYING" + ], + "enumDescriptions": [ + "No audio mode specified. The Assistant may respond as if in `AUDIO_SILENT` mode.", + "Device's audio mute mode has been activated by user. The Assistant will typically not return an audio response.", + "No audio is currently playing, and device's audio mute mode has NOT been activated by user. The Assistant will typically return an audio response.", + "Audio is currently playing, such as a video or music. The Assistant will typically not return an audio response, but may for certain queries that are inherently audio (such as \"what sound does a cow make?\" or \"how do you say 'something' in Korean\". This mode should also typically be used when the screen is on and a screen-reader is activated for accessibility, as the screen-reader will read the contents of the visual response and manage navigation." + ], + "type": "string" + }, + "audioRoutingMode": { + "description": "Current audio routing on the device while issuing the query.", + "enum": [ + "AUDIO_ROUTING_MODE_UNSPECIFIED", + "BLUETOOTH_HEADPHONES" + ], + "enumDescriptions": [ + "No audio routing mode specified.", + "Audio routes to headphones connected over BLUETOOTH." + ], + "type": "string" + }, + "encoding": { + "description": "*Required* The encoding of audio data to be returned in all `audio_out` messages.", + "enum": [ + "ENCODING_UNSPECIFIED", + "LINEAR16", + "MP3", + "OGG_OPUS", + "MULAW", + "OPUS_CONTAINERLESS" + ], + "enumDescriptions": [ + "Not specified. Will return result google.rpc.Code.INVALID_ARGUMENT.", + "Uncompressed 16-bit signed little-endian samples (Linear PCM).", + "MP3 audio encoding. The sample rate is encoded in the payload.", + "Opus-encoded audio wrapped in an ogg container. The result will be a file which can be played natively on Android and in some browsers (such as Chrome). The quality of the encoding is considerably higher than MP3 while using the same bitrate. The sample rate is encoded in the payload.", + "Mulaw encoded 8-bit samples, typically used only by telephony. `sample_rate_hertz` must be 8000.", + "Opus encoded audio without a container." + ], + "type": "string" + }, + "preferredBitrateBps": { + "description": "*Optional* Specifies preferred encoding bitrate (bits-per-second). Currently this is only implemented for OGG_OPUS for bitrates of 12000, 16000, 24000, 32000. If not specified, OGG_OPUS defaults to 32000.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleAssistantAccessoryV1DeviceConfig": { + "description": "*Required* Fields that identify the device to the Assistant. See also: * [Register a Device - REST API](https: //developers.google.com/assistant/sdk/re // ference/device-registration/register-device-manual) * [Device Model and Instance Schemas](https: //developers.google.com/assistant/sdk/re // ference/device-registration/model-and-instance-schemas) * [Device Proto](https: //developers.google.com/assistant/sdk/re // ference/rpc/google.assistant.devices.v1#device)", + "id": "GoogleAssistantAccessoryV1DeviceConfig", + "properties": { + "deviceBuild": { + "$ref": "GoogleAssistantEmbeddedV1DeviceBuild", + "description": "*Required* Identifier for the device which sent the request." + }, + "deviceModelCapabilitiesOverride": { + "$ref": "GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride", + "description": "Device model capabilities from client to override capabilities in the primary device model." + }, + "heterodyneToken": { + "description": "*Optional* An encrypted heterodyne_experiment_token containing the list of experiment_ids (go/ph-server-tokens).", + "type": "string" + } + }, + "type": "object" + }, + "GoogleAssistantAccessoryV1DeviceState": { + "description": "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: 9", + "id": "GoogleAssistantAccessoryV1DeviceState", + "properties": { + "alarmState": { + "$ref": "GoogleAssistantEmbeddedV1Alarms", + "description": "*Optional* Information about on-device alarms. For devices that support alarms, all on-device alarms must be sent up with the DeviceState in order for Assistant Server to be able to perform operations on them." + }, + "contextParams": { + "description": "Other context params to be sent to Assistant. This is a assistant.embedded.v1.ContextParams message in serialized binary proto format.", + "format": "byte", + "type": "string" + }, + "deviceTime": { + "description": "A timestamp of the current device time when the request was made. This field is required if your device supports alarms or timers. This ensures that requests are fulfilled relative to the current device time and regardless of any clock skew between the client and the server.", + "format": "google-datetime", + "type": "string" + }, + "deviceTimeZone": { + "$ref": "GoogleTypeTimeZone", + "description": "The time zone where the device is currently located. This helps the Assistant answer time-related queries relative to the device's time zone. Generally speaking, mobile devices that support alarms or timers should supply device_time_zone. This field is required if your device supports alarms or timers and the device's location cannot reliably be determined. (See the comment above google.assistant.embedded.v1.DeviceLocation for a description of how the device's location is determined.) If the time zone cannot be determined, some queries for creating or modifying timers or alarms may fail with a generic error such as, \"Sorry, I don't know how to help with that.\"" + }, + "doNotDisturb": { + "description": "Indicate whether do not disturb mode is turned on.", + "type": "boolean" + }, + "fitnessActivitiesState": { + "$ref": "GoogleAssistantEmbeddedV1FitnessActivities", + "description": "Information about on-device fitness activities. For devices that support fitness activities, all on-device fitness activities must be sent up with the DeviceState in order for Assistant Server to be able to perform operations on them." + }, + "timerState": { + "$ref": "GoogleAssistantEmbeddedV1Timers", + "description": "*Optional* Information about on-device timers. For devices that support timers, all on-device timers must be sent up with the DeviceState in order for Assistant Server to be able to perform operations on them." + } + }, + "type": "object" + }, + "GoogleAssistantAccessoryV1ResponseConfig": { + "description": "Configuration for the response. Next Id: 11", + "id": "GoogleAssistantAccessoryV1ResponseConfig", + "properties": { + "audioOutConfig": { + "$ref": "GoogleAssistantAccessoryV1AudioOutConfig", + "description": "Specifies the current audio mode on the device." + }, + "deviceConfig": { + "$ref": "GoogleAssistantAccessoryV1DeviceConfig", + "description": "Configuration related to a specific device." + }, + "deviceInteraction": { + "description": "The client interaction to be sent to Assistant. This is a assistant.embedded.v1.DeviceInteraction message in serialized binary proto format.", + "format": "byte", + "type": "string" + }, + "deviceState": { + "$ref": "GoogleAssistantAccessoryV1DeviceState", + "description": "Device state to pass to the Assistant server to use in calculating the response." + }, + "initialAudioBytes": { + "description": "Specifies the initial bytes of TTS audio to send.", + "format": "int32", + "type": "integer" + }, + "isNewConversation": { + "description": "If true, the server will treat the request as a new conversation and not use state from the prior request. Set this field to true when the conversation should be restarted, such as after a device reboot, or after a significant lapse of time since the prior query.", + "type": "boolean" + }, + "outputSampleRateHz": { + "description": "Specifies the desired audio sample rate of the output TTS stream in Hz.", + "format": "int32", + "type": "integer" + }, + "responseType": { + "description": "Specifies the requested response type.", + "enum": [ + "RESPONSE_TYPE_UNSPECIFIED", + "TEXT", + "TRANSCRIPTION" + ], + "enumDescriptions": [ + "No response type specified. This is invalid and the host will send a state update indicating an error.", + "Requests an Assistant text response.", + "Requests a voice transcription only." + ], + "type": "string" + }, + "screenOutConfig": { + "$ref": "GoogleAssistantAccessoryV1ScreenOutConfig", + "description": "Specifies the desired format to use when server returns a visual screen response." + } + }, + "type": "object" + }, + "GoogleAssistantAccessoryV1ScreenOutConfig": { + "description": "Specifies the desired format for the server to use when it returns `screen_out` response.", + "id": "GoogleAssistantAccessoryV1ScreenOutConfig", + "properties": { + "dimensions": { + "$ref": "GoogleAssistantAccessoryV1ScreenOutConfigDimensions", + "description": "Device dimensions." + } + }, + "type": "object" + }, + "GoogleAssistantAccessoryV1ScreenOutConfigDimensions": { + "description": "This contains physical and logical characteristics about the device (e.g. screen size and DPI, etc).", + "id": "GoogleAssistantAccessoryV1ScreenOutConfigDimensions", + "properties": { + "screenDpi": { + "description": "Dots (pixels) per inch of the screen.", + "format": "float", + "type": "number" + }, + "screenHeightPx": { + "description": "Height of the device's screen in pixels. If 0 or not specified, it's assumed to be the same as screen_width_px. For a square or round screen, it's recommended to leave this field empty as a bandwidth optimization.", + "format": "int32", + "type": "integer" + }, + "screenShape": { + "description": "The shape of the device's screen", + "enum": [ + "SCREEN_SHAPE_UNSPECIFIED", + "SCREEN_SHAPE_OVAL", + "SCREEN_SHAPE_RECT" + ], + "enumDescriptions": [ + "Screen shape is undefined.", + "A round screen (typically found on most Wear devices).", + "Rectangular screens." + ], + "type": "string" + }, + "screenWidthPx": { + "description": "Width of the device's screen in pixels.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1Alarm": { + "description": "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.", + "id": "GoogleAssistantEmbeddedV1Alarm", + "properties": { + "alarmId": { + "description": "A string key used as an identifier to this alarm. This key needs to be unique amongst all alarms on the device. The client can choose a mechanism of its choice to ensure this. If the server suggests an alarm_id, the client can either use the suggestion or create a new unique alarm_id of its choosing.", + "type": "string" + }, + "datePattern": { + "$ref": "GoogleTypeDate", + "description": "For single alarms: the one date the alarm should next be scheduled for." + }, + "label": { + "description": "A user-provided name for this alarm.", + "type": "string" + }, + "recurrencePattern": { + "$ref": "GoogleAssistantEmbeddedV1AlarmRecurrence", + "description": "For recurring alarms: a description of the dates when the alarm should recur." + }, + "scheduledTime": { + "description": "When SCHEDULED or SNOOZED, the absolute time the alarm will fire next. When SNOOZED, this time includes the additional time added by snoozing the alarm. When FIRING, the absolute time the alarm had been scheduled to fire. When DISABLED, this field is undefined and should be ignored.", + "format": "google-datetime", + "type": "string" + }, + "status": { + "description": "Describes the part of the lifecycle that an alarm is in.", + "enum": [ + "ALARM_STATUS_UNSPECIFIED", + "SCHEDULED", + "FIRING", + "SNOOZED", + "DISABLED" + ], + "enumDescriptions": [ + "", + "The alarm is scheduled to fire at some point in the future.", + "The alarm is currently firing.", + "Like SCHEDULED; the alarm has been snoozed after firing.", + "Alarm is disabled, i.e., it won't ring. Scheduled time is undefined for disabled alarms and should be ignored." + ], + "type": "string" + }, + "timePattern": { + "$ref": "GoogleTypeTimeOfDay", + "description": "The time of day the alarm should be scheduled for. This value does not change when an alarm enters the SNOOZED state; instead the scheduled_time field should be adjusted to the new alarm time." + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1AlarmRecurrence": { + "description": "A description of the dates when an alarm should recur.", + "id": "GoogleAssistantEmbeddedV1AlarmRecurrence", + "properties": { + "dayOfWeek": { + "description": "Specifies a weekly or daily recurrence. Constraint: The date falls on one of these days of the week, in 0...6 (Sunday...Saturday). Should not be empty.", + "items": { + "enum": [ + "DAY_OF_WEEK_UNSPECIFIED", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ], + "enumDescriptions": [ + "The day of the week is unspecified.", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday", + "Sunday" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1Alarms": { + "description": "Contains information about on-device alarms for devices that support alarms.", + "id": "GoogleAssistantEmbeddedV1Alarms", + "properties": { + "alarms": { + "description": "Information about all on-device alarms.", + "items": { + "$ref": "GoogleAssistantEmbeddedV1Alarm" + }, + "type": "array" + }, + "snoozeDuration": { + "description": "The amount of time for which alarms should be snoozed. If not specified, the productivity vertical applies a default snooze duration, which may be seen here: http://google3/assistant/verticals/productivity/utils/alarm_utils.cc;l=2734;rcl=415933085", + "format": "google-duration", + "type": "string" + }, + "stateFetchError": { + "description": "Indicates if an error occurred while fetching alarm state. If this value is missing, it can be assumed that the state fetch was successful.", + "enum": [ + "STATE_FETCH_ERROR_UNSPECIFIED", + "STATE_FETCH_ERROR_TIMEOUT" + ], + "enumDescriptions": [ + "Equivalent to no errors from fetching state (i.e. success).", + "The time taken to fetch state exceeded the allowed maximum time." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1DeviceBuild": { + "description": "Contains fields to identify the device which sent the request.", + "id": "GoogleAssistantEmbeddedV1DeviceBuild", + "properties": { + "userAgentSuffix": { + "description": "* Fully formed user agent suffix string.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride": { + "description": "Device model capabilities override from client.", + "id": "GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride", + "properties": { + "deviceModelCapabilities": { + "description": "Device model capabilities from client.", + "format": "byte", + "type": "string" + }, + "updateMask": { + "description": "If present, overrides only fields specified in the mask. When doing so, selected message and repeated fields will be replaced rather than merged. Performs a regular proto MergeFrom if no mask is specified.", + "format": "google-fieldmask", + "type": "string" + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1FitnessActivities": { + "description": "Contains information about on-device fitness activities for devices that support fitness.", + "id": "GoogleAssistantEmbeddedV1FitnessActivities", + "properties": { + "fitnessActivities": { + "description": "Information about all on-device activities.", + "items": { + "$ref": "GoogleAssistantEmbeddedV1FitnessActivity" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1FitnessActivity": { + "description": "Describes a particular fitness activity, its current state, and other data fields associated with that activity (e.g. elapsed time). LINT.IfChange", + "id": "GoogleAssistantEmbeddedV1FitnessActivity", + "properties": { + "activityId": { + "description": "Required A string key used as an identifier for this activity. This key needs to be unique amongst all activities on the device. The client can choose a mechanism of its choice to ensure this. If the server suggests an activity_id, the client can either use the suggestion or create a new unique activity_id of its choosing.", + "type": "string" + }, + "mostRecentStartTime": { + "description": "DEPRECATED: The most recent time this activity was switched to the ACTIVE state.", + "format": "google-datetime", + "type": "string" + }, + "previouslyAccumulatedDuration": { + "description": "DEPRECATED: The total amount of time this activity has spent in the ACTIVE state until the most recent start time. The total time spent active may be computed by summing (now - most_recent_start_time) with previously_accumulated_duration.", + "format": "google-duration", + "type": "string" + }, + "state": { + "description": "The current state of this activity.", + "enum": [ + "STATE_UNSPECIFIED", + "ACTIVE", + "PAUSED" + ], + "enumDescriptions": [ + "The state is either unknown or unspecified.", + "Indicates that this activity is currently in progress.", + "Indicates that this activity has been paused (and may be resumed later). Activities in this state should not continue to increment 'elapsed_time' until moved back into the ACTIVE state." + ], + "type": "string" + }, + "type": { + "description": "The type of activity being done.", + "enum": [ + "TYPE_UNSPECIFIED", + "WALK", + "RUN", + "ELLIPTICAL", + "SWIM", + "WEIGHTS", + "TREADMILL", + "BIKE", + "YOGA", + "WORKOUT", + "BOOT_CAMP", + "CIRCUIT_TRAINING", + "GOLF", + "HIKING", + "INTERVAL_TRAINING", + "KICKBOXING", + "MARTIAL_ARTS", + "PILATES", + "SPINNING", + "STAIR_CLIMBING", + "TENNIS", + "AEROBICS", + "CORE_TRAINING", + "DANCING", + "HIGH_INTENSITY_INTERVAL_TRAINING", + "KAYAKING", + "ROWING", + "SKIING", + "STANDUP_PADDLEBOARDING", + "STRENGTH_TRAINING", + "SNOWBOARDING" + ], + "enumDescriptions": [ + "The type is unknown.", + "Represents a walking activity type.", + "Represents a running activity type.", + "Represents an elliptical activity type.", + "Represents a swimming activity type.", + "Represents a weightlifting activity type.", + "Represents a treadmill activity type (e.g. walking/running on a treadmill).", + "Represents a cycling activity type.", + "Represents a yoga activity type.", + "Represents a generic workout activity.", + "Represents a bootcamp activity type.", + "Represents a circuit training activity type.", + "Represents a golf activity type.", + "Represents a hiking activity type.", + "Represents an interval training activity type.", + "Represents a kickboxing activity type.", + "Represents a martial arts activity type.", + "Represents a pilates activity type.", + "Represents a spinning(indoor cycling, stationary biking) activity type.", + "Represents a stair climbing activity type.", + "Represents a tennis activity type.", + "Represents an aerobics activity type.", + "Represents a core training activity type.", + "Represents a dancing activity type.", + "Represents a HIIT activity type.", + "Represents a kayaking activity type.", + "Represents a rowing activity type.", + "Represents a skiing activity type.", + "Represents a standup paddleboading(SUP) activity type.", + "Represents a strength training activity type.", + "Represents a snowboarding activity type." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1Timer": { + "description": "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.", + "id": "GoogleAssistantEmbeddedV1Timer", + "properties": { + "expireTime": { + "description": "The time the timer is scheduled to expire. google.protobuf.Timestamp is a Unix epoch time with a granularity of 1 nanosecond.", + "format": "google-datetime", + "type": "string" + }, + "label": { + "description": "A user-provided name for this timer.", + "type": "string" + }, + "originalDuration": { + "description": "The duration of the timer when it was started. For the ADD_TIME action, this field contains the amount of time to add to the timer with the given timer_id.", + "format": "google-duration", + "type": "string" + }, + "remainingDuration": { + "description": "The remaining duration for the timer.", + "format": "google-duration", + "type": "string" + }, + "status": { + "description": "Describes the part of the lifecycle a timer is in.", + "enum": [ + "TIMER_STATUS_UNSPECIFIED", + "RUNNING", + "PAUSED", + "FIRING" + ], + "enumDescriptions": [ + "", + "The timer is currently counting down.", + "The timer is currently paused.", + "The timer has expired and is ringing." + ], + "type": "string" + }, + "timerId": { + "description": "A string key used as an identifier to this timer. This key needs to be unique amongst all timers on the device. The client can choose a mechanism of its choice to ensure this. If the server suggests a timer_id, the client can either use the suggestion or create a new unique timer_id of its choosing.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleAssistantEmbeddedV1Timers": { + "description": "Contains information about on-device timers for devices that support timers.", + "id": "GoogleAssistantEmbeddedV1Timers", + "properties": { + "stateFetchError": { + "description": "Indicates if an error occurred while fetching timer state. If this value is missing, it can be assumed that the state fetch was successful.", + "enum": [ + "STATE_FETCH_ERROR_UNSPECIFIED", + "STATE_FETCH_ERROR_TIMEOUT" + ], + "enumDescriptions": [ + "Equivalent to no errors from fetching state (i.e. success).", + "The time taken to fetch state exceeded the allowed maximum time." + ], + "type": "string" + }, + "timers": { + "description": "Information about all on-device timers.", + "items": { + "$ref": "GoogleAssistantEmbeddedV1Timer" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1AccessControlAction": { + "description": "Represents the action responsible for access control list management operations.", + "id": "GoogleCloudContentwarehouseV1AccessControlAction", + "properties": { + "operationType": { + "description": "Identifies the type of operation.", + "enum": [ + "UNKNOWN", + "ADD_POLICY_BINDING", + "REMOVE_POLICY_BINDING", + "REPLACE_POLICY_BINDING" + ], + "enumDescriptions": [ + "", + "Adds newly given policy bindings in the existing bindings list.", + "Removes newly given policy bindings from the existing bindings list.", + "Replaces existing policy bindings with the given policy binding list" + ], + "type": "string" + }, + "policy": { + "$ref": "GoogleIamV1Policy", + "description": "Represents the new policy from which bindings are added, removed or replaced based on the type of the operation. the policy is limited to a few 10s of KB." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1Action": { + "description": "Represents the action triggered by Rule Engine when the rule is true.", + "id": "GoogleCloudContentwarehouseV1Action", + "properties": { + "accessControl": { + "$ref": "GoogleCloudContentwarehouseV1AccessControlAction", + "description": "Action triggering access control operations." + }, + "actionId": { + "description": "ID of the action. Managed internally.", + "type": "string" + }, + "addToFolder": { + "$ref": "GoogleCloudContentwarehouseV1AddToFolderAction", + "description": "Action triggering create document link operation." + }, + "dataUpdate": { + "$ref": "GoogleCloudContentwarehouseV1DataUpdateAction", + "description": "Action triggering data update operations." + }, + "dataValidation": { + "$ref": "GoogleCloudContentwarehouseV1DataValidationAction", + "description": "Action triggering data validation operations." + }, + "deleteDocumentAction": { + "$ref": "GoogleCloudContentwarehouseV1DeleteDocumentAction", + "description": "Action deleting the document." + }, + "publishToPubSub": { + "$ref": "GoogleCloudContentwarehouseV1PublishAction", + "description": "Action publish to Pub/Sub operation." + }, + "removeFromFolderAction": { + "$ref": "GoogleCloudContentwarehouseV1RemoveFromFolderAction", + "description": "Action removing a document from a folder." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ActionExecutorOutput": { + "description": "Represents the output of the Action Executor.", + "id": "GoogleCloudContentwarehouseV1ActionExecutorOutput", + "properties": { + "ruleActionsPairs": { + "description": "List of rule and corresponding actions result.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1RuleActionsPair" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ActionOutput": { + "description": "Represents the result of executing an action.", + "id": "GoogleCloudContentwarehouseV1ActionOutput", + "properties": { + "actionId": { + "description": "ID of the action.", + "type": "string" + }, + "actionState": { + "description": "State of an action.", + "enum": [ + "UNKNOWN", + "ACTION_SUCCEEDED", + "ACTION_FAILED", + "ACTION_TIMED_OUT", + "ACTION_PENDING" + ], + "enumDescriptions": [ + "", + "State indicating action executed successfully.", + "State indicating action failed.", + "State indicating action timed out.", + "State indicating action is pending." + ], + "type": "string" + }, + "outputMessage": { + "description": "Action execution output message.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1AddToFolderAction": { + "description": "Represents the action responsible for adding document under a folder.", + "id": "GoogleCloudContentwarehouseV1AddToFolderAction", + "properties": { + "folders": { + "description": "Names of the folder under which new document is to be added. Format: projects/{project_number}/locations/{location}/documents/{document_id}.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1CloudAIDocumentOption": { + "description": "Request Option for processing Cloud AI Document in CW Document.", + "id": "GoogleCloudContentwarehouseV1CloudAIDocumentOption", + "properties": { + "customizedEntitiesPropertiesConversions": { + "additionalProperties": { + "type": "string" + }, + "description": "If set, only selected entities will be converted to properties.", + "type": "object" + }, + "enableEntitiesConversions": { + "description": "Whether to convert all the entities to properties.", + "type": "boolean" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1CreateDocumentLinkRequest": { + "description": "Request message for DocumentLinkService.CreateDocumentLink.", + "id": "GoogleCloudContentwarehouseV1CreateDocumentLinkRequest", + "properties": { + "documentLink": { + "$ref": "GoogleCloudContentwarehouseV1DocumentLink", + "description": "Required. Document links associated with the source documents (source_document_id)." + }, + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the document creator, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1CreateDocumentMetadata": { + "description": "Metadata object for CreateDocument request (currently empty).", + "id": "GoogleCloudContentwarehouseV1CreateDocumentMetadata", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1CreateDocumentRequest": { + "description": "Request message for DocumentService.CreateDocument.", + "id": "GoogleCloudContentwarehouseV1CreateDocumentRequest", + "properties": { + "cloudAiDocumentOption": { + "$ref": "GoogleCloudContentwarehouseV1CloudAIDocumentOption", + "description": "Request Option for processing Cloud AI Document in CW Document." + }, + "createMask": { + "description": "Field mask for creating Document fields. If mask path is empty, it means all fields are masked. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask", + "format": "google-fieldmask", + "type": "string" + }, + "document": { + "$ref": "GoogleCloudContentwarehouseV1Document", + "description": "Required. The document to create." + }, + "policy": { + "$ref": "GoogleIamV1Policy", + "description": "Default document policy during creation. Conditions defined in the policy will be ignored." + }, + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the end user, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1CreateDocumentResponse": { + "description": "Response message for DocumentService.CreateDocument.", + "id": "GoogleCloudContentwarehouseV1CreateDocumentResponse", + "properties": { + "document": { + "$ref": "GoogleCloudContentwarehouseV1Document", + "description": "Document created after executing create request." + }, + "metadata": { + "$ref": "GoogleCloudContentwarehouseV1ResponseMetadata", + "description": "Additional information for the API invocation, such as the request tracking id." + }, + "ruleEngineOutput": { + "$ref": "GoogleCloudContentwarehouseV1RuleEngineOutput", + "description": "Output from Rule Engine recording the rule evaluator and action executor's output. Refer format in: google/cloud/contentwarehouse/v1/rule_engine.proto" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DataUpdateAction": { + "description": "Represents the action responsible for properties update operations.", + "id": "GoogleCloudContentwarehouseV1DataUpdateAction", + "properties": { + "entries": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of (K, V) -\u003e (valid name of the field, new value of the field) E.g., (\"age\", \"60\") entry triggers update of field age with a value of 60. If the field is not present then new entry is added. During update action execution, value strings will be casted to appropriate types.", + "type": "object" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DataValidationAction": { + "description": "Represents the action responsible for data validation operations.", + "id": "GoogleCloudContentwarehouseV1DataValidationAction", + "properties": { + "conditions": { + "additionalProperties": { + "type": "string" + }, + "description": "Map of (K, V) -\u003e (field, string condition to be evaluated on the field) E.g., (\"age\", \"age \u003e 18 \u0026\u0026 age \u003c 60\") entry triggers validation of field age with the given condition. Map entries will be ANDed during validation.", + "type": "object" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DateTimeArray": { + "description": "DateTime values.", + "id": "GoogleCloudContentwarehouseV1DateTimeArray", + "properties": { + "values": { + "description": "List of datetime values. Both OffsetDateTime and ZonedDateTime are supported.", + "items": { + "$ref": "GoogleTypeDateTime" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DateTimeTypeOptions": { + "description": "Configurations for a date time property.", + "id": "GoogleCloudContentwarehouseV1DateTimeTypeOptions", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DeleteDocumentAction": { + "description": "Represents the action responsible for deleting the document.", + "id": "GoogleCloudContentwarehouseV1DeleteDocumentAction", + "properties": { + "enableHardDelete": { + "description": "Boolean field to select between hard vs soft delete options. Set 'true' for 'hard delete' and 'false' for 'soft delete'.", + "type": "boolean" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest": { + "description": "Request message for DocumentLinkService.DeleteDocumentLink.", + "id": "GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest", + "properties": { + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the document creator, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DeleteDocumentRequest": { + "description": "Request message for DocumentService.DeleteDocument.", + "id": "GoogleCloudContentwarehouseV1DeleteDocumentRequest", + "properties": { + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the end user, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1Document": { + "description": "Defines the structure for content warehouse document proto. Next ID: 20", + "id": "GoogleCloudContentwarehouseV1Document", + "properties": { + "asyncEnabled": { + "description": "If true, makes the document visible to asynchronous policies and rules.", + "type": "boolean" + }, + "cloudAiDocument": { + "$ref": "GoogleCloudDocumentaiV1Document", + "description": "Document AI format to save the structured content, including OCR." + }, + "createTime": { + "description": "Output only. The time when the document is created.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "creator": { + "description": "The user who creates the document.", + "type": "string" + }, + "displayName": { + "description": "Required. Display name of the document given by the user. This name will be displayed in the UI. Customer can populate this field with the name of the document. This differs from the 'title' field as 'title' is optional and stores the top heading in the document.", + "type": "string" + }, + "displayUri": { + "description": "Uri to display the document, for example, in the UI.", + "type": "string" + }, + "documentSchemaName": { + "description": "The Document schema name. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.", + "type": "string" + }, + "inlineRawDocument": { + "description": "Raw document content.", + "format": "byte", + "type": "string" + }, + "name": { + "description": "The resource name of the document. Format: projects/{project_number}/locations/{location}/documents/{document_id}. The name is ignored when creating a document.", + "type": "string" + }, + "plainText": { + "description": "Other document format, such as PPTX, XLXS", + "type": "string" + }, + "properties": { + "description": "List of values that are user supplied metadata.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1Property" + }, + "type": "array" + }, + "rawDocumentFileType": { + "description": "This is used when DocAI was not used to load the document and parsing/ extracting is needed for the inline_raw_document. For example, if inline_raw_document is the byte representation of a PDF file, then this should be set to: RAW_DOCUMENT_FILE_TYPE_PDF.", + "enum": [ + "RAW_DOCUMENT_FILE_TYPE_UNSPECIFIED", + "RAW_DOCUMENT_FILE_TYPE_PDF", + "RAW_DOCUMENT_FILE_TYPE_DOCX", + "RAW_DOCUMENT_FILE_TYPE_XLSX", + "RAW_DOCUMENT_FILE_TYPE_PPTX", + "RAW_DOCUMENT_FILE_TYPE_TEXT" + ], + "enumDescriptions": [ + "No raw document specified or it is non-parsable", + "Adobe PDF format", + "Microsoft Word format", + "Microsoft Excel format", + "Microsoft Powerpoint format", + "UTF-8 encoded text format" + ], + "type": "string" + }, + "rawDocumentPath": { + "description": "Raw document file in Cloud Storage path.", + "type": "string" + }, + "referenceId": { + "description": "The reference ID set by customers. Must be unique per project and location.", + "type": "string" + }, + "structuredContentUri": { + "description": "A path linked to structured content file.", + "type": "string" + }, + "textExtractionDisabled": { + "description": "If true, text extraction will not be performed.", + "type": "boolean" + }, + "title": { + "description": "Title that describes the document. This is usually present in the top section of the document, and is a mandatory field for the question-answering feature.", + "type": "string" + }, + "updateTime": { + "description": "Output only. The time when the document is last updated.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "updater": { + "description": "The user who lastly updates the document.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DocumentLink": { + "description": "A document-link between source and target document.", + "id": "GoogleCloudContentwarehouseV1DocumentLink", + "properties": { + "createTime": { + "description": "Output only. The time when the documentLink is created.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "description": { + "description": "Description of this document-link.", + "type": "string" + }, + "name": { + "description": "Name of this document-link. It is required that the parent derived form the name to be consistent with the source document reference. Otherwise an exception will be thrown. Format: projects/{project_number}/locations/{location}/documents/{source_document_id}/documentLinks/{document_link_id}.", + "type": "string" + }, + "sourceDocumentReference": { + "$ref": "GoogleCloudContentwarehouseV1DocumentReference", + "description": "Document references of the source document." + }, + "state": { + "description": "The state of the documentlink. If target node has been deleted, the link is marked as invalid. Removing a source node will result in removal of all associated links.", + "enum": [ + "STATE_UNSPECIFIED", + "ACTIVE", + "SOFT_DELETED" + ], + "enumDescriptions": [ + "Unknown state of documentlink.", + "The documentlink has both source and target documents detected.", + "Target document is deleted, and mark the documentlink as soft-deleted." + ], + "type": "string" + }, + "targetDocumentReference": { + "$ref": "GoogleCloudContentwarehouseV1DocumentReference", + "description": "Document references of the target document." + }, + "updateTime": { + "description": "Output only. The time when the documentLink is last updated.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DocumentQuery": { + "description": "NEXT_ID: 13", + "id": "GoogleCloudContentwarehouseV1DocumentQuery", + "properties": { + "customPropertyFilter": { + "description": "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: `=`, `!=`, `\u003c`, `\u003c=`, `\u003e`, and `\u003e=` 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 \u003c 6000 bytes in length. Sample Query: `(LOWER(driving_license)=\"class \\\"a\\\"\" OR EMPTY(driving_license)) AND driving_years \u003e 10`", + "type": "string" + }, + "documentCreatorFilter": { + "description": "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "documentSchemaNames": { + "description": "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "fileTypeFilter": { + "$ref": "GoogleCloudContentwarehouseV1FileTypeFilter", + "description": "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": { + "description": "Search all the documents under this specified folder. Format: projects/{project_number}/locations/{location}/documents/{document_id}.", + "type": "string" + }, + "isNlQuery": { + "description": "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.", + "type": "boolean" + }, + "propertyFilter": { + "description": "This filter specifies a structured syntax to match against the PropertyDefinition.is_filterable marked as `true`. The relationship between the PropertyFilters is OR.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1PropertyFilter" + }, + "type": "array" + }, + "query": { + "description": "The query string that matches against the full text of the document and the searchable properties. The maximum number of allowed characters is 255.", + "type": "string" + }, + "queryContext": { + "description": "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.", + "items": { + "type": "string" + }, + "type": "array" + }, + "timeFilters": { + "description": "Documents created/updated within a range specified by this filter are searched against.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1TimeFilter" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DocumentReference": { + "description": "References to the documents.", + "id": "GoogleCloudContentwarehouseV1DocumentReference", + "properties": { + "createTime": { + "description": "Output only. The time when the document is created.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "deleteTime": { + "description": "Output only. The time when the document is deleted.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "displayName": { + "description": "display_name of the referenced document; this name does not need to be consistent to the display_name in the Document proto, depending on the ACL constraint.", + "type": "string" + }, + "documentIsFolder": { + "description": "The document type of the document being referenced.", + "type": "boolean" + }, + "documentName": { + "description": "Required. Name of the referenced document.", + "type": "string" + }, + "snippet": { + "description": "Stores the subset of the referenced document's content. This is useful to allow user peek the information of the referenced document.", + "type": "string" + }, + "updateTime": { + "description": "Output only. The time when the document is last updated.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1DocumentSchema": { + "description": "A document schema used to define document structure.", + "id": "GoogleCloudContentwarehouseV1DocumentSchema", + "properties": { + "createTime": { + "description": "Output only. The time when the document schema is created.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + }, + "description": { + "description": "Schema description.", + "type": "string" + }, + "displayName": { + "description": "Required. Name of the schema given by the user. Must be unique per customer.", + "type": "string" + }, + "documentIsFolder": { + "description": "Document Type, true refers the document is a folder, otherwise it is a typical document.", + "type": "boolean" + }, + "name": { + "description": "The resource name of the document schema. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}. The name is ignored when creating a document schema.", + "type": "string" + }, + "propertyDefinitions": { + "description": "Document details.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1PropertyDefinition" + }, + "type": "array" + }, + "updateTime": { + "description": "Output only. The time when the document schema is last updated.", + "format": "google-datetime", + "readOnly": true, + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1EnumArray": { + "description": "Enum values.", + "id": "GoogleCloudContentwarehouseV1EnumArray", + "properties": { + "values": { + "description": "List of enum values.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1EnumTypeOptions": { + "description": "Configurations for an enum/categorical property.", + "id": "GoogleCloudContentwarehouseV1EnumTypeOptions", + "properties": { + "possibleValues": { + "description": "Required. List of possible enum values.", + "items": { + "type": "string" + }, + "type": "array" + }, + "validationCheckDisabled": { + "description": "Make sure the Enum property value provided in the document is in the possile value list during document creation. The validation check runs by default.", + "type": "boolean" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1EnumValue": { + "description": "Represents the string value of the enum field.", + "id": "GoogleCloudContentwarehouseV1EnumValue", + "properties": { + "value": { + "description": "String value of the enum field. This must match defined set of enums in document schema using EnumTypeOptions.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1FetchAclRequest": { + "description": "Request message for DocumentService.FetchAcl", + "id": "GoogleCloudContentwarehouseV1FetchAclRequest", + "properties": { + "projectOwner": { + "description": "For Get Project ACL only. Authorization check for end user will be ignored when project_owner=true.", + "type": "boolean" + }, + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the end user, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1FetchAclResponse": { + "description": "Response message for DocumentService.FetchAcl.", + "id": "GoogleCloudContentwarehouseV1FetchAclResponse", + "properties": { + "metadata": { + "$ref": "GoogleCloudContentwarehouseV1ResponseMetadata", + "description": "Additional information for the API invocation, such as the request tracking id." + }, + "policy": { + "$ref": "GoogleIamV1Policy", + "description": "The IAM policy." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1FileTypeFilter": { + "description": "Filter for the specific types of documents returned.", + "id": "GoogleCloudContentwarehouseV1FileTypeFilter", + "properties": { + "fileType": { + "description": "The type of files to return.", + "enum": [ + "FILE_TYPE_UNSPECIFIED", + "ALL", + "FOLDER", + "DOCUMENT" + ], + "enumDescriptions": [ + "Default document type. If set, disables the filter.", + "Returns all document types, including folders.", + "Returns only folders.", + "Returns only non-folder documents." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1FloatArray": { + "description": "Float values.", + "id": "GoogleCloudContentwarehouseV1FloatArray", + "properties": { + "values": { + "description": "List of float values.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1FloatTypeOptions": { + "description": "Configurations for a float property.", + "id": "GoogleCloudContentwarehouseV1FloatTypeOptions", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1GetDocumentRequest": { + "description": "Request message for DocumentService.GetDocument. Next ID: 4", + "id": "GoogleCloudContentwarehouseV1GetDocumentRequest", + "properties": { + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the end user, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1HistogramQuery": { + "description": "The histogram request.", + "id": "GoogleCloudContentwarehouseV1HistogramQuery", + "properties": { + "filters": { + "$ref": "GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter", + "description": "Optional. Filter the result of histogram query by the property names. It only works with histogram query count('FilterableProperties'). It is an optional. It will perform histogram on all the property names for all the document schemas. Setting this field will have a better performance." + }, + "histogramQuery": { + "description": "An expression specifies a histogram request against matching documents for searches. See SearchDocumentsRequest.histogram_queries for details about syntax.", + "type": "string" + }, + "requirePreciseResultSize": { + "description": "Controls if the histogram query requires the return of a precise count. Enable this flag may adversely impact performance. Defaults to true.", + "type": "boolean" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter": { + "id": "GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter", + "properties": { + "documentSchemas": { + "description": "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}.", + "items": { + "type": "string" + }, + "type": "array" + }, + "propertyNames": { + "description": "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\".", + "items": { + "type": "string" + }, + "type": "array" + }, + "yAxis": { + "description": "By default, the y_axis is HISTOGRAM_YAXIS_DOCUMENT if this field is not set.", + "enum": [ + "HISTOGRAM_YAXIS_DOCUMENT", + "HISTOGRAM_YAXIS_PROPERTY" + ], + "enumDescriptions": [ + "Count the documents per property name.", + "Count the properties per property name." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1HistogramQueryResult": { + "description": "Histogram result that matches HistogramQuery specified in searches.", + "id": "GoogleCloudContentwarehouseV1HistogramQueryResult", + "properties": { + "histogram": { + "additionalProperties": { + "format": "int64", + "type": "string" + }, + "description": "A map from the values of the facet associated with distinct values to the number of matching entries with corresponding value. The key format is: * (for string histogram) string values stored in the field.", + "type": "object" + }, + "histogramQuery": { + "description": "Requested histogram expression.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1InitializeProjectRequest": { + "description": "Request message for projectService.InitializeProject", + "id": "GoogleCloudContentwarehouseV1InitializeProjectRequest", + "properties": { + "accessControlMode": { + "description": "Required. The access control mode for accessing the customer data", + "enum": [ + "ACL_MODE_UNKNOWN", + "ACL_MODE_UNIVERSAL_ACCESS", + "ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_BYOID", + "ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI" + ], + "enumDescriptions": [ + "This value is required by protobuf best practices", + "Universal Access: No document level access control.", + "Document level access control with customer own Identity Service.", + "Document level access control using Google Cloud Identity." + ], + "type": "string" + }, + "databaseType": { + "description": "Required. The type of database used to store customer data", + "enum": [ + "DB_UNKNOWN", + "DB_INFRA_SPANNER", + "DB_CLOUD_SQL_POSTGRES" + ], + "enumDescriptions": [ + "This value is required by protobuf best practices", + "Internal Spanner", + "Cloud Sql with a Postgres Sql instance" + ], + "type": "string" + }, + "kmsKey": { + "description": "Optional. The KMS key used for CMEK encryption. It is required that the kms key is in the same region as the endpoint. The same key will be used for all provisioned resources, if encryption is available. If the kms_key is left empty, no encryption will be enforced.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1InitializeProjectResponse": { + "description": "Response message for projectService.InitializeProject", + "id": "GoogleCloudContentwarehouseV1InitializeProjectResponse", + "properties": { + "message": { + "description": "The message of the project initialization process.", + "type": "string" + }, + "state": { + "description": "The state of the project initialization process.", + "enum": [ + "STATE_UNSPECIFIED", + "SUCCEEDED", + "FAILED", + "CANCELLED", + "RUNNING" + ], + "enumDescriptions": [ + "Clients should never see this.", + "Finished project initialization without error.", + "Finished project initialization with an error.", + "Client canceled the LRO.", + "Ask the customer to check the operation for results." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1IntegerArray": { + "description": "Integer values.", + "id": "GoogleCloudContentwarehouseV1IntegerArray", + "properties": { + "values": { + "description": "List of integer values.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1IntegerTypeOptions": { + "description": "Configurations for an integer property.", + "id": "GoogleCloudContentwarehouseV1IntegerTypeOptions", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1InvalidRule": { + "description": "A triggered rule that failed the validation check(s) after parsing.", + "id": "GoogleCloudContentwarehouseV1InvalidRule", + "properties": { + "error": { + "description": "Validation error on a parsed expression.", + "type": "string" + }, + "rule": { + "$ref": "GoogleCloudContentwarehouseV1Rule", + "description": "Triggered rule." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ListDocumentSchemasResponse": { + "description": "Response message for DocumentSchemaService.ListDocumentSchemas.", + "id": "GoogleCloudContentwarehouseV1ListDocumentSchemasResponse", + "properties": { + "documentSchemas": { + "description": "The document schemas from the specified parent.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1DocumentSchema" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ListLinkedSourcesRequest": { + "description": "Response message for DocumentLinkService.ListLinkedSources.", + "id": "GoogleCloudContentwarehouseV1ListLinkedSourcesRequest", + "properties": { + "pageSize": { + "description": "The maximum number of document-links to return. The service may return fewer than this value. If unspecified, at most 50 document-links will be returned. The maximum value is 1000; values above 1000 will be coerced to 1000.", + "format": "int32", + "type": "integer" + }, + "pageToken": { + "description": "A page token, received from a previous `ListLinkedSources` call. Provide this to retrieve the subsequent page. When paginating, all other parameters provided to `ListLinkedSources` must match the call that provided the page token.", + "type": "string" + }, + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the document creator, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ListLinkedSourcesResponse": { + "description": "Response message for DocumentLinkService.ListLinkedSources.", + "id": "GoogleCloudContentwarehouseV1ListLinkedSourcesResponse", + "properties": { + "documentLinks": { + "description": "Source document-links.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1DocumentLink" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ListLinkedTargetsRequest": { + "description": "Request message for DocumentLinkService.ListLinkedTargets.", + "id": "GoogleCloudContentwarehouseV1ListLinkedTargetsRequest", + "properties": { + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the document creator, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ListLinkedTargetsResponse": { + "description": "Response message for DocumentLinkService.ListLinkedTargets.", + "id": "GoogleCloudContentwarehouseV1ListLinkedTargetsResponse", + "properties": { + "documentLinks": { + "description": "Target document-links.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1DocumentLink" + }, + "type": "array" + }, + "nextPageToken": { + "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ListRuleSetsResponse": { + "description": "Response message for RuleSetService.ListRuleSets.", + "id": "GoogleCloudContentwarehouseV1ListRuleSetsResponse", + "properties": { + "nextPageToken": { + "description": "A token, which can be sent as `page_token` to retrieve the next page. If this field is omitted, there are no subsequent pages.", + "type": "string" + }, + "ruleSets": { + "description": "The rule sets from the specified parent.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1RuleSet" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ListSynonymSetsResponse": { + "description": "Response message for SynonymSetService.ListSynonymSets.", + "id": "GoogleCloudContentwarehouseV1ListSynonymSetsResponse", + "properties": { + "nextPageToken": { + "description": "A page token, received from a previous `ListSynonymSets` call. Provide this to retrieve the subsequent page.", + "type": "string" + }, + "synonymSets": { + "description": "The synonymSets from the specified parent.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1SynonymSet" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1MapProperty": { + "description": "Map property value. Represents a structured entries of key value pairs, consisting of field names which map to dynamically typed values.", + "id": "GoogleCloudContentwarehouseV1MapProperty", + "properties": { + "fields": { + "additionalProperties": { + "$ref": "GoogleCloudContentwarehouseV1Value" + }, + "description": "Unordered map of dynamically typed values.", + "type": "object" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1MapTypeOptions": { + "description": "Configurations for a Map property.", + "id": "GoogleCloudContentwarehouseV1MapTypeOptions", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1MergeFieldsOptions": { + "description": "Options for merging updated fields.", + "id": "GoogleCloudContentwarehouseV1MergeFieldsOptions", + "properties": { + "replaceMessageFields": { + "description": "When merging message fields, the default behavior is to merge the content of two message fields together. If you instead want to use the field from the source message to replace the corresponding field in the destination message, set this flag to true. When this flag is set, specified submessage fields that are missing in source will be cleared in destination.", + "type": "boolean" + }, + "replaceRepeatedFields": { + "description": "When merging repeated fields, the default behavior is to append entries from the source repeated field to the destination repeated field. If you instead want to keep only the entries from the source repeated field, set this flag to true. If you want to replace a repeated field within a message field on the destination message, you must set both replace_repeated_fields and replace_message_fields to true, otherwise the repeated fields will be appended.", + "type": "boolean" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1Property": { + "description": "Property of a document.", + "id": "GoogleCloudContentwarehouseV1Property", + "properties": { + "dateTimeValues": { + "$ref": "GoogleCloudContentwarehouseV1DateTimeArray", + "description": "Date time property values. It is not supported by CMEK compliant deployment." + }, + "enumValues": { + "$ref": "GoogleCloudContentwarehouseV1EnumArray", + "description": "Enum property values." + }, + "floatValues": { + "$ref": "GoogleCloudContentwarehouseV1FloatArray", + "description": "Float property values." + }, + "integerValues": { + "$ref": "GoogleCloudContentwarehouseV1IntegerArray", + "description": "Integer property values." + }, + "mapProperty": { + "$ref": "GoogleCloudContentwarehouseV1MapProperty", + "description": "Map property values." + }, + "name": { + "description": "Required. Must match the name of a PropertyDefinition in the DocumentSchema.", + "type": "string" + }, + "propertyValues": { + "$ref": "GoogleCloudContentwarehouseV1PropertyArray", + "description": "Nested structured data property values." + }, + "textValues": { + "$ref": "GoogleCloudContentwarehouseV1TextArray", + "description": "String/text property values." + }, + "timestampValues": { + "$ref": "GoogleCloudContentwarehouseV1TimestampArray", + "description": "Timestamp property values. It is not supported by CMEK compliant deployment." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1PropertyArray": { + "description": "Property values.", + "id": "GoogleCloudContentwarehouseV1PropertyArray", + "properties": { + "properties": { + "description": "List of property values.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1Property" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1PropertyDefinition": { + "description": "Defines the metadata for a schema property. Next ID: 18", + "id": "GoogleCloudContentwarehouseV1PropertyDefinition", + "properties": { + "dateTimeTypeOptions": { + "$ref": "GoogleCloudContentwarehouseV1DateTimeTypeOptions", + "description": "Date time property. It is not supported by CMEK compliant deployment." + }, + "displayName": { + "description": "The display-name for the property, used for front-end.", + "type": "string" + }, + "enumTypeOptions": { + "$ref": "GoogleCloudContentwarehouseV1EnumTypeOptions", + "description": "Enum/categorical property." + }, + "floatTypeOptions": { + "$ref": "GoogleCloudContentwarehouseV1FloatTypeOptions", + "description": "Float property." + }, + "integerTypeOptions": { + "$ref": "GoogleCloudContentwarehouseV1IntegerTypeOptions", + "description": "Integer property." + }, + "isFilterable": { + "description": "Whether the property can be filtered. If this is a sub-property, all the parent properties must be marked filterable.", + "type": "boolean" + }, + "isMetadata": { + "description": "Whether the property is user supplied metadata.", + "type": "boolean" + }, + "isRepeatable": { + "description": "Whether the property can have multiple values.", + "type": "boolean" + }, + "isRequired": { + "description": "Whether the property is mandatory. Default is 'false', i.e. populating property value can be skipped. If 'true' then user must populate the value for this property.", + "type": "boolean" + }, + "isSearchable": { + "description": "Indicates that the property should be included in a global search.", + "type": "boolean" + }, + "mapTypeOptions": { + "$ref": "GoogleCloudContentwarehouseV1MapTypeOptions", + "description": "Map property." + }, + "name": { + "description": "Required. The name of the metadata property. Must be unique within a document schema and is case insensitive. Names must be non-blank, start with a letter, and can contain alphanumeric characters and: /, :, -, _, and .", + "type": "string" + }, + "propertyTypeOptions": { + "$ref": "GoogleCloudContentwarehouseV1PropertyTypeOptions", + "description": "Nested structured data property." + }, + "textTypeOptions": { + "$ref": "GoogleCloudContentwarehouseV1TextTypeOptions", + "description": "Text/string property." + }, + "timestampTypeOptions": { + "$ref": "GoogleCloudContentwarehouseV1TimestampTypeOptions", + "description": "Timestamp property. It is not supported by CMEK compliant deployment." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1PropertyFilter": { + "id": "GoogleCloudContentwarehouseV1PropertyFilter", + "properties": { + "condition": { + "description": "The filter condition. The syntax for this expression is a subset of SQL syntax. Supported operators are: `=`, `!=`, `\u003c`, `\u003c=`, `\u003e`, `\u003e=`, 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, \"property.company ~~ \\\"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 \u003c 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 \u003e 10` CMEK compliant deployment only supports: * Operators: `=`, `\u003c`, `\u003c=`, `\u003e`, and `\u003e=`. * Boolean expressions: AND and OR.", + "type": "string" + }, + "documentSchemaName": { + "description": "The Document schema name Document.document_schema_name. Format: projects/{project_number}/locations/{location}/documentSchemas/{document_schema_id}.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1PropertyTypeOptions": { + "description": "Configurations for a nested structured data property.", + "id": "GoogleCloudContentwarehouseV1PropertyTypeOptions", + "properties": { + "propertyDefinitions": { + "description": "Required. List of property definitions.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1PropertyDefinition" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1PublishAction": { + "description": "Represents the action responsible for publishing messages to a Pub/Sub topic.", + "id": "GoogleCloudContentwarehouseV1PublishAction", + "properties": { + "messages": { + "description": "Messages to be published.", + "items": { + "type": "string" + }, + "type": "array" + }, + "topicId": { + "description": "The topic id in the Pub/Sub service for which messages will be published to.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1QAResult": { + "description": "Additional result info for the question-answering feature.", + "id": "GoogleCloudContentwarehouseV1QAResult", + "properties": { + "confidenceScore": { + "description": "The calibrated confidence score for this document, in the range [0., 1.]. This represents the confidence level for whether the returned document and snippet answers the user's query.", + "format": "float", + "type": "number" + }, + "highlights": { + "description": "Highlighted sections in the snippet.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1QAResultHighlight" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1QAResultHighlight": { + "description": "A text span in the search text snippet that represents a highlighted section (answer context, highly relevant sentence, etc.).", + "id": "GoogleCloudContentwarehouseV1QAResultHighlight", + "properties": { + "endIndex": { + "description": "End index of the highlight, exclusive.", + "format": "int32", + "type": "integer" + }, + "startIndex": { + "description": "Start index of the highlight.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1RemoveFromFolderAction": { + "description": "Represents the action responsible for remove a document from a specific folder.", + "id": "GoogleCloudContentwarehouseV1RemoveFromFolderAction", + "properties": { + "condition": { + "description": "Condition of the action to be executed.", + "type": "string" + }, + "folder": { + "description": "Name of the folder under which new document is to be added. Format: projects/{project_number}/locations/{location}/documents/{document_id}.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1RequestMetadata": { + "description": "Meta information is used to improve the performance of the service.", + "id": "GoogleCloudContentwarehouseV1RequestMetadata", + "properties": { + "userInfo": { + "$ref": "GoogleCloudContentwarehouseV1UserInfo", + "description": "Provides user unique identification and groups information." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1ResponseMetadata": { + "description": "Additional information returned to client, such as debugging information.", + "id": "GoogleCloudContentwarehouseV1ResponseMetadata", + "properties": { + "requestId": { + "description": "A unique id associated with this call. This id is logged for tracking purpose.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1Rule": { + "description": "Represents the rule for a content warehouse trigger.", + "id": "GoogleCloudContentwarehouseV1Rule", + "properties": { + "actions": { + "description": "List of actions that are executed when the rule is satisfied.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1Action" + }, + "type": "array" + }, + "condition": { + "description": "Represents the conditional expression to be evaluated. Expression should evaluate to a boolean result. When the condition is true actions are executed. Example: user_role = \"hsbc_role_1\" AND doc.salary \u003e 20000", + "type": "string" + }, + "description": { + "description": "Short description of the rule and its context.", + "type": "string" + }, + "ruleId": { + "description": "ID of the rule. It has to be unique across all the examples. This is managed internally.", + "type": "string" + }, + "triggerType": { + "description": "Identifies the trigger type for running the policy.", + "enum": [ + "UNKNOWN", + "ON_CREATE", + "ON_UPDATE" + ], + "enumDescriptions": [ + "", + "Trigger for create document action.", + "Trigger for update document action." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1RuleActionsPair": { + "description": "Represents a rule and outputs of associated actions.", + "id": "GoogleCloudContentwarehouseV1RuleActionsPair", + "properties": { + "actionOutputs": { + "description": "Outputs of executing the actions associated with the above rule.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1ActionOutput" + }, + "type": "array" + }, + "rule": { + "$ref": "GoogleCloudContentwarehouseV1Rule", + "description": "Represents the rule." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1RuleEngineOutput": { + "description": "Records the output of Rule Engine including rule evaluation and actions result.", + "id": "GoogleCloudContentwarehouseV1RuleEngineOutput", + "properties": { + "actionExecutorOutput": { + "$ref": "GoogleCloudContentwarehouseV1ActionExecutorOutput", + "description": "Output from Action Executor containing rule and corresponding actions execution result." + }, + "documentName": { + "description": "Name of the document against which the rules and actions were evaluated.", + "type": "string" + }, + "ruleEvaluatorOutput": { + "$ref": "GoogleCloudContentwarehouseV1RuleEvaluatorOutput", + "description": "Output from Rule Evaluator containing matched, unmatched and invalid rules." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1RuleEvaluatorOutput": { + "description": "Represents the output of the Rule Evaluator.", + "id": "GoogleCloudContentwarehouseV1RuleEvaluatorOutput", + "properties": { + "invalidRules": { + "description": "A subset of triggered rules that failed the validation check(s) after parsing.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1InvalidRule" + }, + "type": "array" + }, + "matchedRules": { + "description": "A subset of triggered rules that are evaluated true for a given request.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1Rule" + }, + "type": "array" + }, + "triggeredRules": { + "description": "List of rules fetched from database for the given request trigger type.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1Rule" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1RuleSet": { + "description": "Represents a set of rules from a single customer. Next id: 9", + "id": "GoogleCloudContentwarehouseV1RuleSet", + "properties": { + "description": { + "description": "Short description of the rule-set.", + "type": "string" + }, + "name": { + "description": "The resource name of the rule set. Managed internally. Format: projects/{project_number}/locations/{location}/ruleSet/{rule_set_id}. The name is ignored when creating a rule set.", + "type": "string" + }, + "rules": { + "description": "List of rules given by the customer.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1Rule" + }, + "type": "array" + }, + "source": { + "description": "Source of the rules i.e., customer name.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1SearchDocumentsRequest": { + "id": "GoogleCloudContentwarehouseV1SearchDocumentsRequest", + "properties": { + "documentQuery": { + "$ref": "GoogleCloudContentwarehouseV1DocumentQuery", + "description": "Query used to search against documents (keyword, filters, etc.)." + }, + "histogramQueries": { + "description": "An expression specifying a histogram request against matching documents. Expression syntax is an aggregation function call with histogram facets and other options. The following aggregation functions are supported: * `count(string_histogram_facet)`: Count the number of matching entities for each distinct attribute value. Data types: * Histogram facet (aka filterable properties): Facet names with format \u003cschema id\u003e.\u003cfacet\u003e. Facets will have the format of: a-zA-Z. If the facet is a child facet, then the parent hierarchy needs to be specified separated by dots in the prefix after the schema id. Thus, the format for a multi- level facet is: \u003cschema id\u003e.\u003cparent facet name\u003e. \u003cchild facet name\u003e. Example: schema123.root_parent_facet.middle_facet.child_facet * DocumentSchemaId: (with no schema id prefix) to get histograms for each document type (returns the schema id path, e.g. projects/12345/locations/us-west/documentSchemas/abc123). Example expression: * Document type counts: count('DocumentSchemaId') * For schema id, abc123, get the counts for MORTGAGE_TYPE: count('abc123.MORTGAGE_TYPE')", + "items": { + "$ref": "GoogleCloudContentwarehouseV1HistogramQuery" + }, + "type": "array" + }, + "offset": { + "description": "An integer that specifies the current offset (that is, starting result location, amongst the documents deemed by the API as relevant) in search results. This field is only considered if page_token is unset. The maximum allowed value is 5000. Otherwise an error is thrown. For example, 0 means to return results starting from the first matching document, and 10 means to return from the 11th document. This can be used for pagination, (for example, pageSize = 10 and offset = 10 means to return from the second page).", + "format": "int32", + "type": "integer" + }, + "orderBy": { + "description": "The criteria determining how search results are sorted. For non-empty query, default is `\"relevance desc\"`. For empty query, default is `\"upload_date desc\"`. Supported options are: * `\"relevance desc\"`: By relevance descending, as determined by the API algorithms. * `\"upload_date desc\"`: By upload date descending. * `\"upload_date\"`: By upload date ascending. * `\"update_date desc\"`: By last updated date descending. * `\"update_date\"`: By last updated date ascending.", + "type": "string" + }, + "pageSize": { + "description": "A limit on the number of documents returned in the search results. Increasing this value above the default value of 10 can increase search response time. The value can be between 1 and 100.", + "format": "int32", + "type": "integer" + }, + "pageToken": { + "description": "The token specifying the current offset within search results. See SearchDocumentsResponse.next_page_token for an explanation of how to obtain the next set of query results.", + "type": "string" + }, + "qaSizeLimit": { + "description": "Experimental, do not use. The limit on the number of documents returned for the question-answering feature. To enable the question-answering feature, set [DocumentQuery].is_nl_query to true.", + "format": "int32", + "type": "integer" + }, + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the end user, used to enforce access control and improve the search quality of the service." + }, + "requireTotalSize": { + "description": "Optional. Controls if the search document request requires the return of a total size of matched documents. See SearchDocumentsResponse.total_size. Enabling this flag may adversely impact performance. Defaults to false.", + "type": "boolean" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1SearchDocumentsResponse": { + "description": "Response message for DocumentService.SearchDocuments.", + "id": "GoogleCloudContentwarehouseV1SearchDocumentsResponse", + "properties": { + "histogramQueryResults": { + "description": "The histogram results that match with the specified SearchDocumentsRequest.histogram_queries.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1HistogramQueryResult" + }, + "type": "array" + }, + "matchingDocuments": { + "description": "The document entities that match the specified SearchDocumentsRequest.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument" + }, + "type": "array" + }, + "metadata": { + "$ref": "GoogleCloudContentwarehouseV1ResponseMetadata", + "description": "Additional information for the API invocation, such as the request tracking id." + }, + "nextPageToken": { + "description": "The token that specifies the starting position of the next page of results. This field is empty if there are no more results.", + "type": "string" + }, + "totalSize": { + "description": "The total number of matched documents which is available only if the client set SearchDocumentsRequest.require_total_size to `true`. Otherwise, the value will be `-1`.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument": { + "description": "Document entry with metadata inside SearchDocumentsResponse", + "id": "GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument", + "properties": { + "document": { + "$ref": "GoogleCloudContentwarehouseV1Document", + "description": "Document that matches the specified SearchDocumentsRequest. This document only contains indexed metadata information." + }, + "qaResult": { + "$ref": "GoogleCloudContentwarehouseV1QAResult", + "description": "Experimental. Additional result info if the question-answering feature is enabled." + }, + "searchTextSnippet": { + "description": "Contains snippets of text from the document full raw text that most closely match a search query's keywords, if available. All HTML tags in the original fields are stripped when returned in this field, and matching query keywords are enclosed in HTML bold tags. If the question-answering feature is enabled, this field will instead contain a snippet that answers the user's natural-language query. No HTML bold tags will be present, and highlights in the answer snippet can be found in QAResult.highlights.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1SetAclRequest": { + "description": "Request message for DocumentService.SetAcl.", + "id": "GoogleCloudContentwarehouseV1SetAclRequest", + "properties": { + "policy": { + "$ref": "GoogleIamV1Policy", + "description": "Required. REQUIRED: The complete policy to be applied to the `resource`. The size of the policy is limited to a few 10s of KB." + }, + "projectOwner": { + "description": "For Set Project ACL only. Authorization check for end user will be ignored when project_owner=true.", + "type": "boolean" + }, + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the end user, used to enforce access control for the service." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1SetAclResponse": { + "description": "Response message for DocumentService.SetAcl.", + "id": "GoogleCloudContentwarehouseV1SetAclResponse", + "properties": { + "metadata": { + "$ref": "GoogleCloudContentwarehouseV1ResponseMetadata", + "description": "Additional information for the API invocation, such as the request tracking id." + }, + "policy": { + "$ref": "GoogleIamV1Policy", + "description": "The policy will be attached to a resource (e.g. projecct, document)." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1SynonymSet": { + "description": "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", + "id": "GoogleCloudContentwarehouseV1SynonymSet", + "properties": { + "context": { + "description": "This is a freeform field. Example contexts can be \"sales,\" \"engineering,\" \"real estate,\" \"accounting,\" etc. The context can be supplied during search requests.", + "type": "string" + }, + "name": { + "description": "The resource name of the SynonymSet This is mandatory for google.api.resource. Format: projects/{project_number}/locations/{location}/synonymSets/{context}.", + "type": "string" + }, + "synonyms": { + "description": "List of Synonyms for the context.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1SynonymSetSynonym" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1SynonymSetSynonym": { + "description": "Represents a list of words given by the customer All these words are synonyms of each other.", + "id": "GoogleCloudContentwarehouseV1SynonymSetSynonym", + "properties": { + "words": { + "description": "For example: sale, invoice, bill, order", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1TextArray": { + "description": "String/text values.", + "id": "GoogleCloudContentwarehouseV1TextArray", + "properties": { + "values": { + "description": "List of text values.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1TextTypeOptions": { + "description": "Configurations for a text property.", + "id": "GoogleCloudContentwarehouseV1TextTypeOptions", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1TimeFilter": { + "description": "Filter on create timestamp or update timestamp of documents.", + "id": "GoogleCloudContentwarehouseV1TimeFilter", + "properties": { + "timeField": { + "description": "Specifies which time field to filter documents on. Defaults to TimeField.UPLOAD_TIME.", + "enum": [ + "TIME_FIELD_UNSPECIFIED", + "CREATE_TIME", + "UPDATE_TIME" + ], + "enumDescriptions": [ + "Default value.", + "Earliest document create time.", + "Latest document update time." + ], + "type": "string" + }, + "timeRange": { + "$ref": "GoogleTypeInterval" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1TimestampArray": { + "description": "Timestamp values.", + "id": "GoogleCloudContentwarehouseV1TimestampArray", + "properties": { + "values": { + "description": "List of timestamp values.", + "items": { + "$ref": "GoogleCloudContentwarehouseV1TimestampValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1TimestampTypeOptions": { + "description": "Configurations for a timestamp property.", + "id": "GoogleCloudContentwarehouseV1TimestampTypeOptions", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1TimestampValue": { + "description": "Timestamp value type.", + "id": "GoogleCloudContentwarehouseV1TimestampValue", + "properties": { + "textValue": { + "description": "The string must represent a valid instant in UTC and is parsed using java.time.format.DateTimeFormatter.ISO_INSTANT. e.g. \"2013-09-29T18:46:19Z\"", + "type": "string" + }, + "timestampValue": { + "description": "Timestamp value", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1UpdateDocumentMetadata": { + "description": "Metadata object for UpdateDocument request (currently empty).", + "id": "GoogleCloudContentwarehouseV1UpdateDocumentMetadata", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1UpdateDocumentRequest": { + "description": "Request message for DocumentService.UpdateDocument.", + "id": "GoogleCloudContentwarehouseV1UpdateDocumentRequest", + "properties": { + "cloudAiDocumentOption": { + "$ref": "GoogleCloudContentwarehouseV1CloudAIDocumentOption", + "description": "Request Option for processing Cloud AI Document in CW Document." + }, + "document": { + "$ref": "GoogleCloudContentwarehouseV1Document", + "description": "Required. The document to update." + }, + "requestMetadata": { + "$ref": "GoogleCloudContentwarehouseV1RequestMetadata", + "description": "The meta information collected about the end user, used to enforce access control for the service." + }, + "updateOptions": { + "$ref": "GoogleCloudContentwarehouseV1UpdateOptions", + "description": "Options for the update operation." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1UpdateDocumentResponse": { + "description": "Response message for DocumentService.UpdateDocument.", + "id": "GoogleCloudContentwarehouseV1UpdateDocumentResponse", + "properties": { + "document": { + "$ref": "GoogleCloudContentwarehouseV1Document", + "description": "Updated document after executing update request." + }, + "metadata": { + "$ref": "GoogleCloudContentwarehouseV1ResponseMetadata", + "description": "Additional information for the API invocation, such as the request tracking id." + }, + "ruleEngineOutput": { + "$ref": "GoogleCloudContentwarehouseV1RuleEngineOutput", + "description": "Output from Rule Engine recording the rule evaluator and action executor's output. Refer format in: google/cloud/contentwarehouse/v1/rule_engine.proto" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest": { + "description": "Request message for DocumentSchemaService.UpdateDocumentSchema.", + "id": "GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest", + "properties": { + "documentSchema": { + "$ref": "GoogleCloudContentwarehouseV1DocumentSchema", + "description": "Required. The document schema to update with." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1UpdateOptions": { + "description": "Options for Update operations.", + "id": "GoogleCloudContentwarehouseV1UpdateOptions", + "properties": { + "mergeFieldsOptions": { + "$ref": "GoogleCloudContentwarehouseV1MergeFieldsOptions", + "description": "Options for merging." + }, + "updateMask": { + "description": "Field mask for merging Document fields. For the `FieldMask` definition, see https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask", + "format": "google-fieldmask", + "type": "string" + }, + "updateType": { + "description": "Type for update.", + "enum": [ + "UPDATE_TYPE_UNSPECIFIED", + "UPDATE_TYPE_REPLACE", + "UPDATE_TYPE_MERGE", + "UPDATE_TYPE_INSERT_PROPERTIES_BY_NAMES", + "UPDATE_TYPE_REPLACE_PROPERTIES_BY_NAMES", + "UPDATE_TYPE_DELETE_PROPERTIES_BY_NAMES" + ], + "enumDescriptions": [ + "Defaults to full replace behavior, ie. FULL_REPLACE.", + "Fully replace all the fields. Any field masks will be ignored.", + "Merge the fields into the existing entities.", + "Inserts the properties by names.", + "Replace the properties by names.", + "Delete the properties by names." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1UpdateRuleSetRequest": { + "description": "Request message for RuleSetService.UpdateRuleSet.", + "id": "GoogleCloudContentwarehouseV1UpdateRuleSetRequest", + "properties": { + "ruleSet": { + "$ref": "GoogleCloudContentwarehouseV1RuleSet", + "description": "Required. The rule set to update." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1UserInfo": { + "id": "GoogleCloudContentwarehouseV1UserInfo", + "properties": { + "groupIds": { + "description": "The unique group identifications which the user is belong to. The format is \"group:yyyy@example.com\";", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "A unique user identification string, as determined by the client. The maximum number of allowed characters is 255. Allowed characters include numbers 0 to 9, uppercase and lowercase letters, and restricted special symbols (:, @, +, -, _, ~) The format is \"user:xxxx@example.com\";", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1Value": { + "description": "`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.", + "id": "GoogleCloudContentwarehouseV1Value", + "properties": { + "booleanValue": { + "description": "Represents a boolean value.", + "type": "boolean" + }, + "datetimeValue": { + "$ref": "GoogleTypeDateTime", + "description": "Represents a datetime value." + }, + "enumValue": { + "$ref": "GoogleCloudContentwarehouseV1EnumValue", + "description": "Represents an enum value." + }, + "floatValue": { + "description": "Represents a float value.", + "format": "float", + "type": "number" + }, + "intValue": { + "description": "Represents a integer value.", + "format": "int32", + "type": "integer" + }, + "stringValue": { + "description": "Represents a string value.", + "type": "string" + }, + "timestampValue": { + "$ref": "GoogleCloudContentwarehouseV1TimestampValue", + "description": "Represents a timestamp value." + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1beta1CreateDocumentMetadata": { + "description": "Metadata object for CreateDocument request (currently empty).", + "id": "GoogleCloudContentwarehouseV1beta1CreateDocumentMetadata", + "properties": {}, + "type": "object" + }, + "GoogleCloudContentwarehouseV1beta1InitializeProjectResponse": { + "description": "Response message for projectService.InitializeProject", + "id": "GoogleCloudContentwarehouseV1beta1InitializeProjectResponse", + "properties": { + "message": { + "description": "The message of the project initialization process.", + "type": "string" + }, + "state": { + "description": "The state of the project initialization process.", + "enum": [ + "STATE_UNSPECIFIED", + "SUCCEEDED", + "FAILED", + "CANCELLED", + "RUNNING" + ], + "enumDescriptions": [ + "Clients should never see this.", + "Finished project initialization without error.", + "Finished project initialization with an error.", + "Client canceled the LRO.", + "Ask the customer to check the operation for results." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudContentwarehouseV1beta1UpdateDocumentMetadata": { + "description": "Metadata object for UpdateDocument request (currently empty).", + "id": "GoogleCloudContentwarehouseV1beta1UpdateDocumentMetadata", + "properties": {}, + "type": "object" + }, + "GoogleCloudDocumentaiV1Barcode": { + "description": "Encodes the detailed information of a barcode.", + "id": "GoogleCloudDocumentaiV1Barcode", + "properties": { + "format": { + "description": "Format of a barcode. The supported formats are: CODE_128: Code 128 type. CODE_39: Code 39 type. CODE_93: Code 93 type. CODABAR: Codabar type. DATA_MATRIX: 2D Data Matrix type. ITF: ITF type. EAN_13: EAN-13 type. EAN_8: EAN-8 type. QR_CODE: 2D QR code type. UPC_A: UPC-A type. UPC_E: UPC-E type. PDF417: PDF417 type. AZTEC: 2D Aztec code type. DATABAR: GS1 DataBar code type.", + "type": "string" + }, + "rawValue": { + "description": "Raw value encoded in the barcode. For example, 'MEBKM:TITLE:Google;URL:https://www.google.com;;'.", + "type": "string" + }, + "valueFormat": { + "description": "Value format describes the format of the value that a barcode encodes. The supported formats are: CONTACT_INFO: Contact information. EMAIL: Email address. ISBN: ISBN identifier. PHONE: Phone number. PRODUCT: Product. SMS: SMS message. TEXT: Text string. URL: URL address. WIFI: Wifi information. GEO: Geo-localization. CALENDAR_EVENT: Calendar event. DRIVER_LICENSE: Driver's license.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1BoundingPoly": { + "description": "A bounding polygon for the detected image annotation.", + "id": "GoogleCloudDocumentaiV1BoundingPoly", + "properties": { + "normalizedVertices": { + "description": "The bounding polygon normalized vertices.", + "items": { + "$ref": "GoogleCloudDocumentaiV1NormalizedVertex" + }, + "type": "array" + }, + "vertices": { + "description": "The bounding polygon vertices.", + "items": { + "$ref": "GoogleCloudDocumentaiV1Vertex" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1Document": { + "description": "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.", + "id": "GoogleCloudDocumentaiV1Document", + "properties": { + "content": { + "description": "Optional. Inline document content, represented as a stream of bytes. Note: As with all `bytes` fields, protobuffers use a pure binary representation, whereas JSON representations use base64.", + "format": "byte", + "type": "string" + }, + "entities": { + "description": "A list of entities detected on Document.text. For document shards, entities in this list may cross shard boundaries.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentEntity" + }, + "type": "array" + }, + "entityRelations": { + "description": "Placeholder. Relationship among Document.entities.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentEntityRelation" + }, + "type": "array" + }, + "error": { + "$ref": "GoogleRpcStatus", + "description": "Any error that occurred while processing this document." + }, + "mimeType": { + "description": "An IANA published MIME type (also referred to as media type). For more information, see https://www.iana.org/assignments/media-types/media-types.xhtml.", + "type": "string" + }, + "pages": { + "description": "Visual page layout for the Document.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPage" + }, + "type": "array" + }, + "revisions": { + "description": "Placeholder. Revision history of this document.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentRevision" + }, + "type": "array" + }, + "shardInfo": { + "$ref": "GoogleCloudDocumentaiV1DocumentShardInfo", + "description": "Information about the sharding if this document is sharded part of a larger document. If the document is not sharded, this message is not specified." + }, + "text": { + "description": "Optional. UTF-8 encoded text in reading order from the document.", + "type": "string" + }, + "textChanges": { + "description": "Placeholder. A list of text corrections made to [Document.text]. This is usually used for annotating corrections to OCR mistakes. Text changes for a given revision may not overlap with each other.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentTextChange" + }, + "type": "array" + }, + "textStyles": { + "description": "Placeholder. Styles for the Document.text.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentStyle" + }, + "type": "array" + }, + "uri": { + "description": "Optional. Currently supports Google Cloud Storage URI of the form `gs://bucket_name/object_name`. Object versioning is not supported. See [Google Cloud Storage Request URIs](https://cloud.google.com/storage/docs/reference-uris) for more info.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentEntity": { + "description": "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.", + "id": "GoogleCloudDocumentaiV1DocumentEntity", + "properties": { + "confidence": { + "description": "Optional. Confidence of detected Schema entity. Range [0, 1].", + "format": "float", + "type": "number" + }, + "id": { + "description": "Optional. Canonical id. This will be a unique value in the entity list for this document.", + "type": "string" + }, + "mentionId": { + "description": "Optional. Deprecated. Use `id` field instead.", + "type": "string" + }, + "mentionText": { + "description": "Optional. Text value of the entity e.g. `1600 Amphitheatre Pkwy`.", + "type": "string" + }, + "normalizedValue": { + "$ref": "GoogleCloudDocumentaiV1DocumentEntityNormalizedValue", + "description": "Optional. Normalized entity value. Absent if the extracted value could not be converted or the type (e.g. address) is not supported for certain parsers. This field is also only populated for certain supported document types." + }, + "pageAnchor": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageAnchor", + "description": "Optional. Represents the provenance of this entity wrt. the location on the page where it was found." + }, + "properties": { + "description": "Optional. Entities can be nested to form a hierarchical data structure representing the content in the document.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentEntity" + }, + "type": "array" + }, + "provenance": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenance", + "description": "Optional. The history of this annotation." + }, + "redacted": { + "description": "Optional. Whether the entity will be redacted for de-identification purposes.", + "type": "boolean" + }, + "textAnchor": { + "$ref": "GoogleCloudDocumentaiV1DocumentTextAnchor", + "description": "Optional. Provenance of the entity. Text anchor indexing into the Document.text." + }, + "type": { + "description": "Required. Entity type from a schema e.g. `Address`.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentEntityNormalizedValue": { + "description": "Parsed and normalized entity value.", + "id": "GoogleCloudDocumentaiV1DocumentEntityNormalizedValue", + "properties": { + "addressValue": { + "$ref": "GoogleTypePostalAddress", + "description": "Postal address. See also: https://github.com/googleapis/googleapis/blob/master/google/type/postal_address.proto" + }, + "booleanValue": { + "description": "Boolean value. Can be used for entities with binary values, or for checkboxes.", + "type": "boolean" + }, + "dateValue": { + "$ref": "GoogleTypeDate", + "description": "Date value. Includes year, month, day. See also: https://github.com/googleapis/googleapis/blob/master/google/type/date.proto" + }, + "datetimeValue": { + "$ref": "GoogleTypeDateTime", + "description": "DateTime value. Includes date, time, and timezone. See also: https://github.com/googleapis/googleapis/blob/master/google/type/datetime.proto" + }, + "floatValue": { + "description": "Float value.", + "format": "float", + "type": "number" + }, + "integerValue": { + "description": "Integer value.", + "format": "int32", + "type": "integer" + }, + "moneyValue": { + "$ref": "GoogleTypeMoney", + "description": "Money value. See also: https://github.com/googleapis/googleapis/blob/master/google/type/money.proto" + }, + "text": { + "description": "Optional. An optional field to store a normalized string. For some entity types, one of respective `structured_value` fields may also be populated. Also not all the types of `structured_value` will be normalized. For example, some processors may not generate float or int normalized text by default. Below are sample formats mapped to structured values. - Money/Currency type (`money_value`) is in the ISO 4217 text format. - Date type (`date_value`) is in the ISO 8601 text format. - Datetime type (`datetime_value`) is in the ISO 8601 text format.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentEntityRelation": { + "description": "Relationship between Entities.", + "id": "GoogleCloudDocumentaiV1DocumentEntityRelation", + "properties": { + "objectId": { + "description": "Object entity id.", + "type": "string" + }, + "relation": { + "description": "Relationship description.", + "type": "string" + }, + "subjectId": { + "description": "Subject entity id.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPage": { + "description": "A page in a Document.", + "id": "GoogleCloudDocumentaiV1DocumentPage", + "properties": { + "blocks": { + "description": "A list of visually detected text blocks on the page. A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageBlock" + }, + "type": "array" + }, + "detectedBarcodes": { + "description": "A list of detected barcodes.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedBarcode" + }, + "type": "array" + }, + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "dimension": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDimension", + "description": "Physical dimension of the page." + }, + "formFields": { + "description": "A list of visually detected form fields on the page.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageFormField" + }, + "type": "array" + }, + "image": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageImage", + "description": "Rendered image for this page. This image is preprocessed to remove any skew, rotation, and distortions such that the annotation bounding boxes can be upright and axis-aligned." + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for the page." + }, + "lines": { + "description": "A list of visually detected text lines on the page. A collection of tokens that a human would perceive as a line.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLine" + }, + "type": "array" + }, + "pageNumber": { + "description": "1-based index for current Page in a parent Document. Useful when a page is taken out of a Document for individual processing.", + "format": "int32", + "type": "integer" + }, + "paragraphs": { + "description": "A list of visually detected text paragraphs on the page. A collection of lines that a human would perceive as a paragraph.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageParagraph" + }, + "type": "array" + }, + "provenance": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenance", + "description": "The history of this page." + }, + "symbols": { + "description": "A list of visually detected symbols on the page.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageSymbol" + }, + "type": "array" + }, + "tables": { + "description": "A list of visually detected tables on the page.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageTable" + }, + "type": "array" + }, + "tokens": { + "description": "A list of visually detected tokens on the page.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageToken" + }, + "type": "array" + }, + "transforms": { + "description": "Transformation matrices that were applied to the original document image to produce Page.image.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageMatrix" + }, + "type": "array" + }, + "visualElements": { + "description": "A list of detected non-text visual elements e.g. checkbox, signature etc. on the page.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageVisualElement" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageAnchor": { + "description": "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.", + "id": "GoogleCloudDocumentaiV1DocumentPageAnchor", + "properties": { + "pageRefs": { + "description": "One or more references to visual page elements", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageAnchorPageRef" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageAnchorPageRef": { + "description": "Represents a weak reference to a page element within a document.", + "id": "GoogleCloudDocumentaiV1DocumentPageAnchorPageRef", + "properties": { + "boundingPoly": { + "$ref": "GoogleCloudDocumentaiV1BoundingPoly", + "description": "Optional. Identifies the bounding polygon of a layout element on the page." + }, + "confidence": { + "description": "Optional. Confidence of detected page element, if applicable. Range [0, 1].", + "format": "float", + "type": "number" + }, + "layoutId": { + "description": "Optional. Deprecated. Use PageRef.bounding_poly instead.", + "type": "string" + }, + "layoutType": { + "description": "Optional. The type of the layout element that is being referenced if any.", + "enum": [ + "LAYOUT_TYPE_UNSPECIFIED", + "BLOCK", + "PARAGRAPH", + "LINE", + "TOKEN", + "VISUAL_ELEMENT", + "TABLE", + "FORM_FIELD" + ], + "enumDescriptions": [ + "Layout Unspecified.", + "References a Page.blocks element.", + "References a Page.paragraphs element.", + "References a Page.lines element.", + "References a Page.tokens element.", + "References a Page.visual_elements element.", + "Refrrences a Page.tables element.", + "References a Page.form_fields element." + ], + "type": "string" + }, + "page": { + "description": "Required. Index into the Document.pages element, for example using Document.pages to locate the related page element. This field is skipped when its value is the default 0. See https://developers.google.com/protocol-buffers/docs/proto3#json.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageBlock": { + "description": "A block has a set of lines (collected into paragraphs) that have a common line-spacing and orientation.", + "id": "GoogleCloudDocumentaiV1DocumentPageBlock", + "properties": { + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for Block." + }, + "provenance": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenance", + "description": "The history of this annotation." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageDetectedBarcode": { + "description": "A detected barcode.", + "id": "GoogleCloudDocumentaiV1DocumentPageDetectedBarcode", + "properties": { + "barcode": { + "$ref": "GoogleCloudDocumentaiV1Barcode", + "description": "Detailed barcode information of the DetectedBarcode." + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for DetectedBarcode." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage": { + "description": "Detected language for a structural component.", + "id": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage", + "properties": { + "confidence": { + "description": "Confidence of detected language. Range [0, 1].", + "format": "float", + "type": "number" + }, + "languageCode": { + "description": "The BCP-47 language code, such as \"en-US\" or \"sr-Latn\". For more information, see https://www.unicode.org/reports/tr35/#Unicode_locale_identifier.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageDimension": { + "description": "Dimension for the page.", + "id": "GoogleCloudDocumentaiV1DocumentPageDimension", + "properties": { + "height": { + "description": "Page height.", + "format": "float", + "type": "number" + }, + "unit": { + "description": "Dimension unit.", + "type": "string" + }, + "width": { + "description": "Page width.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageFormField": { + "description": "A form field detected on the page.", + "id": "GoogleCloudDocumentaiV1DocumentPageFormField", + "properties": { + "correctedKeyText": { + "description": "Created for Labeling UI to export key text. If corrections were made to the text identified by the `field_name.text_anchor`, this field will contain the correction.", + "type": "string" + }, + "correctedValueText": { + "description": "Created for Labeling UI to export value text. If corrections were made to the text identified by the `field_value.text_anchor`, this field will contain the correction.", + "type": "string" + }, + "fieldName": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for the FormField name. e.g. `Address`, `Email`, `Grand total`, `Phone number`, etc." + }, + "fieldValue": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for the FormField value." + }, + "nameDetectedLanguages": { + "description": "A list of detected languages for name together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "provenance": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenance", + "description": "The history of this annotation." + }, + "valueDetectedLanguages": { + "description": "A list of detected languages for value together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "valueType": { + "description": "If the value is non-textual, this field represents the type. Current valid values are: - blank (this indicates the field_value is normal text) - \"unfilled_checkbox\" - \"filled_checkbox\"", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageImage": { + "description": "Rendered image contents for this page.", + "id": "GoogleCloudDocumentaiV1DocumentPageImage", + "properties": { + "content": { + "description": "Raw byte content of the image.", + "format": "byte", + "type": "string" + }, + "height": { + "description": "Height of the image in pixels.", + "format": "int32", + "type": "integer" + }, + "mimeType": { + "description": "Encoding mime type for the image.", + "type": "string" + }, + "width": { + "description": "Width of the image in pixels.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageLayout": { + "description": "Visual element describing a layout unit on a page.", + "id": "GoogleCloudDocumentaiV1DocumentPageLayout", + "properties": { + "boundingPoly": { + "$ref": "GoogleCloudDocumentaiV1BoundingPoly", + "description": "The bounding polygon for the Layout." + }, + "confidence": { + "description": "Confidence of the current Layout within context of the object this layout is for. e.g. confidence can be for a single token, a table, a visual element, etc. depending on context. Range [0, 1].", + "format": "float", + "type": "number" + }, + "orientation": { + "description": "Detected orientation for the Layout.", + "enum": [ + "ORIENTATION_UNSPECIFIED", + "PAGE_UP", + "PAGE_RIGHT", + "PAGE_DOWN", + "PAGE_LEFT" + ], + "enumDescriptions": [ + "Unspecified orientation.", + "Orientation is aligned with page up.", + "Orientation is aligned with page right. Turn the head 90 degrees clockwise from upright to read.", + "Orientation is aligned with page down. Turn the head 180 degrees from upright to read.", + "Orientation is aligned with page left. Turn the head 90 degrees counterclockwise from upright to read." + ], + "type": "string" + }, + "textAnchor": { + "$ref": "GoogleCloudDocumentaiV1DocumentTextAnchor", + "description": "Text anchor indexing into the Document.text." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageLine": { + "description": "A collection of tokens that a human would perceive as a line. Does not cross column boundaries, can be horizontal, vertical, etc.", + "id": "GoogleCloudDocumentaiV1DocumentPageLine", + "properties": { + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for Line." + }, + "provenance": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenance", + "description": "The history of this annotation." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageMatrix": { + "description": "Representation for transformation matrix, intended to be compatible and used with OpenCV format for image manipulation.", + "id": "GoogleCloudDocumentaiV1DocumentPageMatrix", + "properties": { + "cols": { + "description": "Number of columns in the matrix.", + "format": "int32", + "type": "integer" + }, + "data": { + "description": "The matrix data.", + "format": "byte", + "type": "string" + }, + "rows": { + "description": "Number of rows in the matrix.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "This encodes information about what data type the matrix uses. For example, 0 (CV_8U) is an unsigned 8-bit image. For the full list of OpenCV primitive data types, please refer to https://docs.opencv.org/4.3.0/d1/d1b/group__core__hal__interface.html", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageParagraph": { + "description": "A collection of lines that a human would perceive as a paragraph.", + "id": "GoogleCloudDocumentaiV1DocumentPageParagraph", + "properties": { + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for Paragraph." + }, + "provenance": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenance", + "description": "The history of this annotation." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageSymbol": { + "description": "A detected symbol.", + "id": "GoogleCloudDocumentaiV1DocumentPageSymbol", + "properties": { + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for Symbol." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageTable": { + "description": "A table representation similar to HTML table structure.", + "id": "GoogleCloudDocumentaiV1DocumentPageTable", + "properties": { + "bodyRows": { + "description": "Body rows of the table.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageTableTableRow" + }, + "type": "array" + }, + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "headerRows": { + "description": "Header rows of the table.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageTableTableRow" + }, + "type": "array" + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for Table." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageTableTableCell": { + "description": "A cell representation inside the table.", + "id": "GoogleCloudDocumentaiV1DocumentPageTableTableCell", + "properties": { + "colSpan": { + "description": "How many columns this cell spans.", + "format": "int32", + "type": "integer" + }, + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for TableCell." + }, + "rowSpan": { + "description": "How many rows this cell spans.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageTableTableRow": { + "description": "A row of table cells.", + "id": "GoogleCloudDocumentaiV1DocumentPageTableTableRow", + "properties": { + "cells": { + "description": "Cells that make up this row.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageTableTableCell" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageToken": { + "description": "A detected token.", + "id": "GoogleCloudDocumentaiV1DocumentPageToken", + "properties": { + "detectedBreak": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak", + "description": "Detected break at the end of a Token." + }, + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for Token." + }, + "provenance": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenance", + "description": "The history of this annotation." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak": { + "description": "Detected break at the end of a Token.", + "id": "GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak", + "properties": { + "type": { + "description": "Detected break type.", + "enum": [ + "TYPE_UNSPECIFIED", + "SPACE", + "WIDE_SPACE", + "HYPHEN" + ], + "enumDescriptions": [ + "Unspecified break type.", + "A single whitespace.", + "A wider whitespace.", + "A hyphen that indicates that a token has been split across lines." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentPageVisualElement": { + "description": "Detected non-text visual elements e.g. checkbox, signature etc. on the page.", + "id": "GoogleCloudDocumentaiV1DocumentPageVisualElement", + "properties": { + "detectedLanguages": { + "description": "A list of detected languages together with confidence.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageDetectedLanguage" + }, + "type": "array" + }, + "layout": { + "$ref": "GoogleCloudDocumentaiV1DocumentPageLayout", + "description": "Layout for VisualElement." + }, + "type": { + "description": "Type of the VisualElement.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentProvenance": { + "description": "Structure to identify provenance relationships between annotations in different revisions.", + "id": "GoogleCloudDocumentaiV1DocumentProvenance", + "properties": { + "id": { + "description": "The Id of this operation. Needs to be unique within the scope of the revision.", + "format": "int32", + "type": "integer" + }, + "parents": { + "description": "References to the original elements that are replaced.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenanceParent" + }, + "type": "array" + }, + "revision": { + "description": "The index of the revision that produced this element.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "The type of provenance operation.", + "enum": [ + "OPERATION_TYPE_UNSPECIFIED", + "ADD", + "REMOVE", + "REPLACE", + "EVAL_REQUESTED", + "EVAL_APPROVED", + "EVAL_SKIPPED" + ], + "enumDescriptions": [ + "Operation type unspecified. If no operation is specified a provenance entry is simply used to match against a `parent`.", + "Add an element.", + "Remove an element identified by `parent`.", + "Replace an element identified by `parent`.", + "Request human review for the element identified by `parent`.", + "Element is reviewed and approved at human review, confidence will be set to 1.0.", + "Element is skipped in the validation process." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentProvenanceParent": { + "description": "The parent element the current element is based on. Used for referencing/aligning, removal and replacement operations.", + "id": "GoogleCloudDocumentaiV1DocumentProvenanceParent", + "properties": { + "id": { + "description": "The id of the parent provenance.", + "format": "int32", + "type": "integer" + }, + "index": { + "description": "The index of the parent item in the corresponding item list (eg. list of entities, properties within entities, etc.) in the parent revision.", + "format": "int32", + "type": "integer" + }, + "revision": { + "description": "The index of the index into current revision's parent_ids list.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentRevision": { + "description": "Contains past or forward revisions of this document.", + "id": "GoogleCloudDocumentaiV1DocumentRevision", + "properties": { + "agent": { + "description": "If the change was made by a person specify the name or id of that person.", + "type": "string" + }, + "createTime": { + "description": "The time that the revision was created.", + "format": "google-datetime", + "type": "string" + }, + "humanReview": { + "$ref": "GoogleCloudDocumentaiV1DocumentRevisionHumanReview", + "description": "Human Review information of this revision." + }, + "id": { + "description": "Id of the revision. Unique within the context of the document.", + "type": "string" + }, + "parent": { + "description": "The revisions that this revision is based on. This can include one or more parent (when documents are merged.) This field represents the index into the `revisions` field.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "parentIds": { + "description": "The revisions that this revision is based on. Must include all the ids that have anything to do with this revision - eg. there are `provenance.parent.revision` fields that index into this field.", + "items": { + "type": "string" + }, + "type": "array" + }, + "processor": { + "description": "If the annotation was made by processor identify the processor by its resource name.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentRevisionHumanReview": { + "description": "Human Review information of the document.", + "id": "GoogleCloudDocumentaiV1DocumentRevisionHumanReview", + "properties": { + "state": { + "description": "Human review state. e.g. `requested`, `succeeded`, `rejected`.", + "type": "string" + }, + "stateMessage": { + "description": "A message providing more details about the current state of processing. For example, the rejection reason when the state is `rejected`.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentShardInfo": { + "description": "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.", + "id": "GoogleCloudDocumentaiV1DocumentShardInfo", + "properties": { + "shardCount": { + "description": "Total number of shards.", + "format": "int64", + "type": "string" + }, + "shardIndex": { + "description": "The 0-based index of this shard.", + "format": "int64", + "type": "string" + }, + "textOffset": { + "description": "The index of the first character in Document.text in the overall document global text.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentStyle": { + "description": "Annotation for common text style attributes. This adheres to CSS conventions as much as possible.", + "id": "GoogleCloudDocumentaiV1DocumentStyle", + "properties": { + "backgroundColor": { + "$ref": "GoogleTypeColor", + "description": "Text background color." + }, + "color": { + "$ref": "GoogleTypeColor", + "description": "Text color." + }, + "fontFamily": { + "description": "Font family such as \"Arial\", \"Times New Roman\". https://www.w3schools.com/cssref/pr_font_font-family.asp", + "type": "string" + }, + "fontSize": { + "$ref": "GoogleCloudDocumentaiV1DocumentStyleFontSize", + "description": "Font size." + }, + "fontWeight": { + "description": "Font weight. Possible values are normal, bold, bolder, and lighter. https://www.w3schools.com/cssref/pr_font_weight.asp", + "type": "string" + }, + "textAnchor": { + "$ref": "GoogleCloudDocumentaiV1DocumentTextAnchor", + "description": "Text anchor indexing into the Document.text." + }, + "textDecoration": { + "description": "Text decoration. Follows CSS standard. https://www.w3schools.com/cssref/pr_text_text-decoration.asp", + "type": "string" + }, + "textStyle": { + "description": "Text style. Possible values are normal, italic, and oblique. https://www.w3schools.com/cssref/pr_font_font-style.asp", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentStyleFontSize": { + "description": "Font size with unit.", + "id": "GoogleCloudDocumentaiV1DocumentStyleFontSize", + "properties": { + "size": { + "description": "Font size for the text.", + "format": "float", + "type": "number" + }, + "unit": { + "description": "Unit for the font size. Follows CSS naming (in, px, pt, etc.).", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentTextAnchor": { + "description": "Text reference indexing into the Document.text.", + "id": "GoogleCloudDocumentaiV1DocumentTextAnchor", + "properties": { + "content": { + "description": "Contains the content of the text span so that users do not have to look it up in the text_segments. It is always populated for formFields.", + "type": "string" + }, + "textSegments": { + "description": "The text segments from the Document.text.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment": { + "description": "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", + "id": "GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment", + "properties": { + "endIndex": { + "description": "TextSegment half open end UTF-8 char index in the Document.text.", + "format": "int64", + "type": "string" + }, + "startIndex": { + "description": "TextSegment start UTF-8 char index in the Document.text.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1DocumentTextChange": { + "description": "This message is used for text changes aka. OCR corrections.", + "id": "GoogleCloudDocumentaiV1DocumentTextChange", + "properties": { + "changedText": { + "description": "The text that replaces the text identified in the `text_anchor`.", + "type": "string" + }, + "provenance": { + "description": "The history of this annotation.", + "items": { + "$ref": "GoogleCloudDocumentaiV1DocumentProvenance" + }, + "type": "array" + }, + "textAnchor": { + "$ref": "GoogleCloudDocumentaiV1DocumentTextAnchor", + "description": "Provenance of the correction. Text anchor indexing into the Document.text. There can only be a single `TextAnchor.text_segments` element. If the start and end index of the text segment are the same, the text change is inserted before that index." + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1NormalizedVertex": { + "description": "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.", + "id": "GoogleCloudDocumentaiV1NormalizedVertex", + "properties": { + "x": { + "description": "X coordinate.", + "format": "float", + "type": "number" + }, + "y": { + "description": "Y coordinate (starts from the top of the image).", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GoogleCloudDocumentaiV1Vertex": { + "description": "A vertex represents a 2D point in the image. NOTE: the vertex coordinates are in the same scale as the original image.", + "id": "GoogleCloudDocumentaiV1Vertex", + "properties": { + "x": { + "description": "X coordinate.", + "format": "int32", + "type": "integer" + }, + "y": { + "description": "Y coordinate (starts from the top of the image).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleIamV1AuditConfig": { + "description": "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\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" }, { \"log_type\": \"ADMIN_READ\" } ] }, { \"service\": \"sampleservice.googleapis.com\", \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\" }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:aliya@example.com\" ] } ] } ] } For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts `jose@example.com` from DATA_READ logging, and `aliya@example.com` from DATA_WRITE logging.", + "id": "GoogleIamV1AuditConfig", + "properties": { + "auditLogConfigs": { + "description": "The configuration for logging of each type of permission.", + "items": { + "$ref": "GoogleIamV1AuditLogConfig" + }, + "type": "array" + }, + "service": { + "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleIamV1AuditLogConfig": { + "description": "Provides the configuration for logging a type of permissions. Example: { \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:jose@example.com\" ] }, { \"log_type\": \"DATA_WRITE\" } ] } This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ logging.", + "id": "GoogleIamV1AuditLogConfig", + "properties": { + "exemptedMembers": { + "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of Binding.members.", + "items": { + "type": "string" + }, + "type": "array" + }, + "logType": { + "description": "The log type that this config enables.", + "enum": [ + "LOG_TYPE_UNSPECIFIED", + "ADMIN_READ", + "DATA_WRITE", + "DATA_READ" + ], + "enumDescriptions": [ + "Default case. Should never be this.", + "Admin reads. Example: CloudIAM getIamPolicy", + "Data writes. Example: CloudSQL Users create", + "Data reads. Example: CloudSQL Users list" + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleIamV1Binding": { + "description": "Associates `members`, or principals, with a `role`.", + "id": "GoogleIamV1Binding", + "properties": { + "condition": { + "$ref": "GoogleTypeExpr", + "description": "The condition that is associated with this binding. If the condition evaluates to `true`, then this binding applies to the current request. If the condition evaluates to `false`, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the principals in this binding. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies)." + }, + "members": { + "description": "Specifies the principals requesting access for a Google Cloud resource. `members` can have the following values: * `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account. * `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account. Does not include identities that come from external identity providers (IdPs) through identity federation. * `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@example.com` . * `serviceAccount:{emailid}`: An email address that represents a Google service account. For example, `my-other-app@appspot.gserviceaccount.com`. * `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: An identifier for a [Kubernetes service account](https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. * `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`. * `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a user that has been recently deleted. For example, `alice@example.com?uid=123456789012345678901`. If the user is recovered, this value reverts to `user:{emailid}` and the recovered user retains the role in the binding. * `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. If the service account is undeleted, this value reverts to `serviceAccount:{emailid}` and the undeleted service account retains the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, `admins@example.com?uid=123456789012345678901`. If the group is recovered, this value reverts to `group:{emailid}` and the recovered group retains the role in the binding. * `domain:{domain}`: The G Suite domain (primary) that represents all the users of that domain. For example, `google.com` or `example.com`. ", + "items": { + "type": "string" + }, + "type": "array" + }, + "role": { + "description": "Role that is assigned to the list of `members`, or principals. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleIamV1Policy": { + "description": "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 documentation](https://cloud.google.com/iam/help/conditions/resource-policies). **JSON example:** { \"bindings\": [ { \"role\": \"roles/resourcemanager.organizationAdmin\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-project-id@appspot.gserviceaccount.com\" ] }, { \"role\": \"roles/resourcemanager.organizationViewer\", \"members\": [ \"user:eve@example.com\" ], \"condition\": { \"title\": \"expirable access\", \"description\": \"Does not grant access after Sep 2020\", \"expression\": \"request.time \u003c timestamp('2020-10-01T00:00:00.000Z')\", } } ], \"etag\": \"BwWWja0YfJA=\", \"version\": 3 } **YAML example:** bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time \u003c timestamp('2020-10-01T00:00:00.000Z') etag: BwWWja0YfJA= version: 3 For a description of IAM and its features, see the [IAM documentation](https://cloud.google.com/iam/docs/).", + "id": "GoogleIamV1Policy", + "properties": { + "auditConfigs": { + "description": "Specifies cloud audit logging configuration for this policy.", + "items": { + "$ref": "GoogleIamV1AuditConfig" + }, + "type": "array" + }, + "bindings": { + "description": "Associates a list of `members`, or principals, with a `role`. Optionally, may specify a `condition` that determines how and when the `bindings` are applied. Each of the `bindings` must contain at least one principal. The `bindings` in a `Policy` can refer to up to 1,500 principals; up to 250 of these principals can be Google groups. Each occurrence of a principal counts towards these limits. For example, if the `bindings` grant 50 different roles to `user:alice@example.com`, and not to any other principal, then you can add another 1,450 principals to the `bindings` in the `Policy`.", + "items": { + "$ref": "GoogleIamV1Binding" + }, + "type": "array" + }, + "etag": { + "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy. **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost.", + "format": "byte", + "type": "string" + }, + "version": { + "description": "Specifies the format of the policy. Valid values are `0`, `1`, and `3`. Requests that specify an invalid value are rejected. Any operation that affects conditional role bindings must specify version `3`. This requirement applies to the following operations: * Getting a policy that includes a conditional role binding * Adding a conditional role binding to a policy * Changing a conditional role binding in a policy * Removing any role binding, with or without a condition, from a policy that includes conditions **Important:** If you use IAM Conditions, you must include the `etag` field whenever you call `setIamPolicy`. If you omit this field, then IAM allows you to overwrite a version `3` policy with a version `1` policy, and all of the conditions in the version `3` policy are lost. If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset. To learn which resources support conditions in their IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-policies).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaAvailabilityPeriod": { + "description": "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).", + "id": "GoogleInternalAppsWaldoV1alphaAvailabilityPeriod", + "properties": { + "dayOfWeek": { + "description": "Day of week, 0 for Sunday, 1 for Monday, ...", + "format": "int32", + "type": "integer" + }, + "periodEndMinutes": { + "description": "Period end, in minutes from the start of the day, exclusive.", + "format": "int32", + "type": "integer" + }, + "periodStartMinutes": { + "description": "Period start, in minutes from the start of the day, inclusive.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaCalendarBusy": { + "description": "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).", + "id": "GoogleInternalAppsWaldoV1alphaCalendarBusy", + "properties": { + "eventSummary": { + "description": "The summary of the corresponding event in Calendar.", + "type": "string" + }, + "nextAvailable": { + "description": "The next time when the user will be available, i.e., when their status will be neither InMeeting, CalendarBusy, DoNotDisturb, OutsideWorkingHours, nor OutOfOffice.", + "format": "google-datetime", + "type": "string" + }, + "occupiedUntil": { + "description": "The time when the user will stop being occupied, i.e., when their status will be neither inMeeting, Busy nor DoNotDisturb.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaCustomLocation": { + "description": "Custom location specified by the user.", + "id": "GoogleInternalAppsWaldoV1alphaCustomLocation", + "properties": { + "geoCoordinates": { + "$ref": "GoogleTypeLatLng", + "description": "Geographic location as geo coordinates." + }, + "label": { + "description": "The custom location label as a string entered manually by the user.", + "type": "string" + }, + "location": { + "description": "Geographic location as free-form text.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaDoNotDisturb": { + "description": "The status indicating the user should not be disturbed.", + "id": "GoogleInternalAppsWaldoV1alphaDoNotDisturb", + "properties": { + "nextAvailable": { + "description": "The next time when the user will be available, i.e., when their status will be neither InMeeting, CalendarBusy, DoNotDisturb, OutsideWorkingHours, nor OutOfOffice.", + "format": "google-datetime", + "type": "string" + }, + "occupiedUntil": { + "description": "The time when the user will stop being occupied, i.e., when their status will be neither inMeeting, Busy nor DoNotDisturb.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaHomeLocation": { + "description": "Home location.", + "id": "GoogleInternalAppsWaldoV1alphaHomeLocation", + "properties": {}, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaInMeeting": { + "description": "The status indicating the user is in a meeting.", + "id": "GoogleInternalAppsWaldoV1alphaInMeeting", + "properties": { + "eventSummary": { + "description": "The summary of the corresponding event in Calendar.", + "type": "string" + }, + "inMeetingsUntil": { + "description": "The time when the user will stop being in a meeting.", + "format": "google-datetime", + "type": "string" + }, + "nextAvailable": { + "description": "The next time when the user will be available, i.e., when their status will be neither InMeeting, CalendarBusy, DoNotDisturb, OutsideWorkingHours, nor OutOfOffice.", + "format": "google-datetime", + "type": "string" + }, + "occupiedUntil": { + "description": "The time when the user will stop being occupied, i.e., when their status will be neither inMeeting, Busy nor DoNotDisturb.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaInactive": { + "description": "The status indicating that no other status applies.", + "id": "GoogleInternalAppsWaldoV1alphaInactive", + "properties": {}, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaLocalTimeContext": { + "description": "Context which helps to determine the user's local time.", + "id": "GoogleInternalAppsWaldoV1alphaLocalTimeContext", + "properties": { + "timeZone": { + "description": "The current time zone of the user. Represented as a valid time zone ID from Olson database, like \"Europe/Zurich\" (see http://google3/i18n/identifiers/data/timezones.txt).", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaOfficeLocation": { + "description": "Office location.", + "id": "GoogleInternalAppsWaldoV1alphaOfficeLocation", + "properties": { + "experimentalBuildingId": { + "description": "Experimental. Can change or disappear without warning or notice. References a building from http://google3/ccc/hosted/api/rosy/resources/calendar/building.proto For example \"US-NYC-9TH\".", + "type": "string" + }, + "experimentalDeskId": { + "description": "Experimental. Can change or disappear without warning or notice. The desk id. For example \"11E358K\".", + "type": "string" + }, + "experimentalFloorId": { + "description": "Experimental. Can change or disappear without warning or notice. The floor id. For example \"11\".", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaOutOfOffice": { + "description": "The status indicating the user is out of office.", + "id": "GoogleInternalAppsWaldoV1alphaOutOfOffice", + "properties": { + "comeBackTime": { + "description": "The closest time when the user will be available after this OOO block. This might be different from the end of the OOO block in Calendar, since the OOO block might end on Friday evening, and then the user is outside working hours.", + "format": "google-datetime", + "type": "string" + }, + "eventSummary": { + "description": "The summary of the corresponding OOO block in Calendar. This is entered by the user, so we return it \"as is\" - no i18n.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaOutsideWorkingHours": { + "description": "The status indicating the user doesn't work at this time.", + "id": "GoogleInternalAppsWaldoV1alphaOutsideWorkingHours", + "properties": { + "comeBackTime": { + "description": "The closest time when the user will be available after this block. This might be different from the start of the working hours in Calendar, because the given OutsideWorkingHours interval might be followed by OOO.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaTimeRange": { + "description": "A time range, which includes the start and excludes the end.", + "id": "GoogleInternalAppsWaldoV1alphaTimeRange", + "properties": { + "endTime": { + "description": "End point of the range, exclusive.", + "format": "google-datetime", + "type": "string" + }, + "startTime": { + "description": "Starting point of the range, inclusive.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaUpcomingOooContext": { + "description": "The context indicating the user's upcoming Out of Office event.", + "id": "GoogleInternalAppsWaldoV1alphaUpcomingOooContext", + "properties": { + "timeRange": { + "$ref": "GoogleInternalAppsWaldoV1alphaTimeRange", + "description": "The future period of absence. The start of this timerange is the start of the future Out of Office event. The end of this timerange represents the come back time of the user from that future OOO event. Note that the come back time might be different (greater) than the end of the corresponding future OOO event due to other non-working user status intervals that it may be followed by." + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaUserAvailabilities": { + "description": "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 https://docs.google.com/presentation/d/1ADCTxGawjF9UqMnfuVrVNxGvdyjeiV8h4D7p0a9zYgw/edit#slide=id.g3e2824ac6c_12_94 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", + "id": "GoogleInternalAppsWaldoV1alphaUserAvailabilities", + "properties": { + "availabilities": { + "description": "A list of user availabilities having contiguous time ranges which are ordered chronologically. The first one starts at the time of the request or before, and is guaranteed to contain the request time. That means the first element always indicates the current status of a user. A client that wants to display a user's availability in real time should display the availability whose time range contains the current time.", + "items": { + "$ref": "GoogleInternalAppsWaldoV1alphaUserAvailability" + }, + "type": "array" + }, + "nextPollTime": { + "description": "The time at which the client should issue the next availability query for this user. This field should only be used to control the polling frequency. This time is always before the end of the time range of the last availability so that the client always knows the current availability.", + "format": "google-datetime", + "type": "string" + }, + "workingHours": { + "$ref": "GoogleInternalAppsWaldoV1alphaWorkingHours", + "description": "Information about the user's working hours. This will only be set in case working hours are enabled in their calendar settings." + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaUserAvailability": { + "description": "A single availability range. The displayed status should be the same during the entire time range.", + "id": "GoogleInternalAppsWaldoV1alphaUserAvailability", + "properties": { + "contexts": { + "$ref": "GoogleInternalAppsWaldoV1alphaUserContext", + "description": "The contexts contain additional information about the current user's availability or its upcoming changes. The client doesn't need to extract certain bits to visualize the status or apply custom logic based on the content of this field: the status field should contain everything needed for the correct visualization." + }, + "status": { + "$ref": "GoogleInternalAppsWaldoV1alphaUserStatus", + "description": "The user status during the time range." + }, + "timeRange": { + "$ref": "GoogleInternalAppsWaldoV1alphaTimeRange", + "description": "The time range when this availability should be displayed." + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaUserContext": { + "description": "Additional context about the user's current and/or future availability to give a better understanding of the status (\"Working from Zurich\").", + "id": "GoogleInternalAppsWaldoV1alphaUserContext", + "properties": { + "localTime": { + "$ref": "GoogleInternalAppsWaldoV1alphaLocalTimeContext", + "description": "Helps to determine the user's local time by providing their current time zone." + }, + "upcomingOoo": { + "$ref": "GoogleInternalAppsWaldoV1alphaUpcomingOooContext", + "description": "Set if user has upcoming OOO." + }, + "workingElsewhere": { + "$ref": "GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext", + "description": "Set if the user is working remotely." + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaUserLocation": { + "description": "Location of the user, which might be \"home\", for example, or another office building, as well as a custom location specified by the user.", + "id": "GoogleInternalAppsWaldoV1alphaUserLocation", + "properties": { + "customLocation": { + "$ref": "GoogleInternalAppsWaldoV1alphaCustomLocation", + "description": "Indicates the user is working from some other location." + }, + "homeLocation": { + "$ref": "GoogleInternalAppsWaldoV1alphaHomeLocation", + "description": "Indicates the user is working from home." + }, + "officeLocation": { + "$ref": "GoogleInternalAppsWaldoV1alphaOfficeLocation", + "description": "Indicates the user is working from the office." + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaUserStatus": { + "description": "The actual status of the user. The message contains everything needed for visualisation of this status.", + "id": "GoogleInternalAppsWaldoV1alphaUserStatus", + "properties": { + "calendarBusy": { + "$ref": "GoogleInternalAppsWaldoV1alphaCalendarBusy", + "description": "Set if the user is temporarily busy and there is not a more specific status derived from calendar that applies (e.g., InMeeting or DoNotDisturb)." + }, + "doNotDisturb": { + "$ref": "GoogleInternalAppsWaldoV1alphaDoNotDisturb", + "description": "Set if the user is in a Focus Time block. Note that this is different than Chat's Do not disturb status, but they may coincide, see: go/focus-time-dnd." + }, + "inMeeting": { + "$ref": "GoogleInternalAppsWaldoV1alphaInMeeting", + "description": "Set if the user is in a meeting." + }, + "inactive": { + "$ref": "GoogleInternalAppsWaldoV1alphaInactive", + "description": "Set if no other statuses apply." + }, + "outOfOffice": { + "$ref": "GoogleInternalAppsWaldoV1alphaOutOfOffice", + "description": "Set if the user is out of office." + }, + "outsideWorkingHours": { + "$ref": "GoogleInternalAppsWaldoV1alphaOutsideWorkingHours", + "description": "Set if the user doesn't work at this time." + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext": { + "description": "The context indicating the user is working remotely (from home / from a different office).", + "id": "GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext", + "properties": { + "location": { + "$ref": "GoogleInternalAppsWaldoV1alphaUserLocation", + "description": "The new location of the user. Might represent home / another building, or a random address on the map." + } + }, + "type": "object" + }, + "GoogleInternalAppsWaldoV1alphaWorkingHours": { + "description": "Information about the user's working hours.", + "id": "GoogleInternalAppsWaldoV1alphaWorkingHours", + "properties": { + "availableTime": { + "description": "A list of availability periods representing the user's working hours as configured in calendar.", + "items": { + "$ref": "GoogleInternalAppsWaldoV1alphaAvailabilityPeriod" + }, + "type": "array" + } + }, + "type": "object" + }, + "GoogleInternalCommunicationsInstantmessagingV1Id": { + "description": "Id for message recipients, e.g. users, groups etc.", + "id": "GoogleInternalCommunicationsInstantmessagingV1Id", + "properties": { + "app": { + "description": "app is the tachyon client application that generated or is to receive a message.", + "type": "string" + }, + "countryCode": { + "description": "country_code is the E164_COUNTRY_CODE format country code for this id, used as a hint for its region. E.g, \"+1\" will be used for North America, \"+86\" will be used for China, etc. Should be filled only for RCS group id.", + "type": "string" + }, + "id": { + "description": "id is a unique (for this type and app) identifier of a message source or recipient.", + "type": "string" + }, + "locationHint": { + "$ref": "GoogleInternalCommunicationsInstantmessagingV1LocationHint", + "description": "location_hint is used as a hint for the user's region." + }, + "routingInfoToken": { + "description": "Raw byte array containing encoded routing information. Clients of Tachyon are expected to include the most recent routing_info_cookie that they have received from the server in the requests that they make. Its format is purposely opaque so that clients do not need to concern themselves with the content of this field. This field is expected to be used primarily by Tachygram clients for go/tachygram-groups to simplify the API contract for group operations while reducing the need for unnecessary lookups.", + "format": "byte", + "type": "string" + }, + "type": { + "description": "type defines what the id field contains, e.g. phone number, Fi-number, Gaia ID etc.", + "enum": [ + "UNSET", + "PHONE_NUMBER", + "GROUP_ID", + "FIREBALL_BOT", + "CALL_CONTROLLER", + "SUGGESTER", + "FI_ID", + "SYSTEM", + "DUO_BOT", + "MATCHBOX_ID", + "RCS_BOT", + "WIREBALL", + "SERVICE_ACCOUNT", + "DEVICE_ID", + "FOREIGN_RCS_GROUP", + "DITTO", + "EMAIL", + "GAIA_ID", + "LIGHTER_ID", + "OPAQUE_ID", + "SERVER", + "SHORT_CODE", + "CLOUDCAST_PLAYER_ID", + "CHROMOTING_ID", + "UNNORMALIZABLE_PHONE_NUMBER", + "NOT_KNOWN", + "ANDROID_ID", + "NEARBY_ID", + "WAZE_ID", + "GUEST", + "MESSAGES_DATA_DONATION", + "DUO_CLIP_ID", + "ACCOUNT_ID", + "CARRIER_ID", + "EXTERNAL_PARTNER_ID", + "UNAUTHENTICATED_USER_ID", + "SUPPORT_CASES_ID", + "FITBIT_P11_ID" + ], + "enumDescriptions": [ + "", + "E.164 format.", + "", + "Handled by Extractor", + "Handled by Call Controller Message Receiver.", + "", + "IDs of this type will be verified using a Fi service.", + "Used for any system-generated, internal and external", + "messages. ex: Duo's invite reward. Bots for Duo", + "Used by Matchbox for 1P/3P App Preview Messaging.", + "RCS BOT for sending message to Platinum", + "Web Client for Fireball", + "Service account, currently only used for Duo API.", + "Device ID used by Matchstick anonymous registrations.", + "Rcs group hosted by another RCS cloud.", + "Android messages desktop: go/android-messages-desktop.", + "Email address.", + "Only used by servers.", + "Used by Lighter platform: go/lighter-backend-api.", + "Used by spam server as a special id type that allows", + "apps that support external ids. Used for server delivery. go/tachyon_server_delivery", + "Phone short code.", + "Used by cloudcast (yeti). 64 bit integer.", + "go/yeti-player-ids Chrome Remote Desktop (go/chromoting).", + "Unnormalizable phone number", + "client does not know the id type.", + "android id", + "Used by Nearby devices. go/tachyon-express-nearby.", + "Used by Waze. go/waze-tachyon.", + "Used by Duo currently.", + "Used by Android Messages for data donation.", + "Used as the Id Type of Clips From Duo clips. See http://go/clips-from-duo", + "used by Takeout/LIS: see go/tachyon-legal-takeout.", + "used by RCS NNI Notification", + "used by RCS NNI Notification", + "used by GMM for anonymous registration", + "used by Support Cases for Realtime Media WebRtc", + "signaling. go/cases-media-channel-dd. used by Fitbit Project 11 for messaging." + ], + "type": "string" + } + }, + "type": "object" + }, + "GoogleInternalCommunicationsInstantmessagingV1LocationHint": { + "description": "LocationHint is used to specify a location as well as format.", + "id": "GoogleInternalCommunicationsInstantmessagingV1LocationHint", + "properties": { + "format": { + "description": "the format of location.", + "enum": [ + "UNKNOWN", + "E164_CALLING", + "ISO_3166_1_ALPHA_2" + ], + "enumDescriptions": [ + "", + "E164 country codes: https://en.wikipedia.org/wiki/List_of_country_calling_codes e.g. +1 for USA", + "ISO 3166-1 alpha-2 country codes: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2" + ], + "type": "string" + }, + "location": { + "description": "Location is the location, provided in the format specified by format.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleLongrunningOperation": { + "description": "This resource represents a long-running operation that is the result of a network API call.", + "id": "GoogleLongrunningOperation", + "properties": { + "done": { + "description": "If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.", + "type": "boolean" + }, + "error": { + "$ref": "GoogleRpcStatus", + "description": "The error result of the operation in case of failure or cancellation." + }, + "metadata": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.", + "type": "object" + }, + "name": { + "description": "The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.", + "type": "string" + }, + "response": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "description": "The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.", + "type": "object" + } + }, + "type": "object" + }, + "GoogleProtobufEmpty": { + "description": "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); }", + "id": "GoogleProtobufEmpty", + "properties": {}, + "type": "object" + }, + "GoogleRpcStatus": { + "description": "The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors).", + "id": "GoogleRpcStatus", + "properties": { + "code": { + "description": "The status code, which should be an enum value of google.rpc.Code.", + "format": "int32", + "type": "integer" + }, + "details": { + "description": "A list of messages that carry the error details. There is a common set of message types for APIs to use.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + }, + "message": { + "description": "A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleTypeColor": { + "description": "Represents a color in the RGBA color space. This representation is designed for simplicity of conversion to/from color representations in various languages over compactness. For example, the fields of this representation can be trivially provided to the constructor of `java.awt.Color` in Java; it can also be trivially provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; and, with just a little work, it can be easily formatted into a CSS `rgba()` string in JavaScript. This reference page doesn't carry information about the absolute color space that should be used to interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, etc.). By default, applications should assume the sRGB color space. When color equality needs to be decided, implementations, unless documented otherwise, treat two colors as equal if all their red, green, blue, and alpha values each differ by at most 1e-5. Example (Java): import com.google.type.Color; // ... public static java.awt.Color fromProto(Color protocolor) { float alpha = protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; return new java.awt.Color( protocolor.getRed(), protocolor.getGreen(), protocolor.getBlue(), alpha); } public static Color toProto(java.awt.Color color) { float red = (float) color.getRed(); float green = (float) color.getGreen(); float blue = (float) color.getBlue(); float denominator = 255.0; Color.Builder resultBuilder = Color .newBuilder() .setRed(red / denominator) .setGreen(green / denominator) .setBlue(blue / denominator); int alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( FloatValue .newBuilder() .setValue(((float) alpha) / denominator) .build()); } return resultBuilder.build(); } // ... Example (iOS / Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float red = [protocolor red]; float green = [protocolor green]; float blue = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper value]; } return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, green, blue, alpha; if (![color getRed:\u0026red green:\u0026green blue:\u0026blue alpha:\u0026alpha]) { return nil; } Color* result = [[Color alloc] init]; [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; if (alpha \u003c= 0.9999) { [result setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; return result; } // ... Example (JavaScript): // ... var protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', alphaFrac, ')'].join(''); }; var rgbToCssColor = function(red, green, blue) { var rgbNumber = new Number((red \u003c\u003c 16) | (green \u003c\u003c 8) | blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - hexString.length; var resultBuilder = ['#']; for (var i = 0; i \u003c missingZeros; i++) { resultBuilder.push('0'); } resultBuilder.push(hexString); return resultBuilder.join(''); }; // ...", + "id": "GoogleTypeColor", + "properties": { + "alpha": { + "description": "The fraction of this color that should be applied to the pixel. That is, the final pixel color is defined by the equation: `pixel color = alpha * (this color) + (1.0 - alpha) * (background color)` This means that a value of 1.0 corresponds to a solid color, whereas a value of 0.0 corresponds to a completely transparent color. This uses a wrapper message rather than a simple float scalar so that it is possible to distinguish between a default value and the value being unset. If omitted, this color object is rendered as a solid color (as if the alpha value had been explicitly given a value of 1.0).", + "format": "float", + "type": "number" + }, + "blue": { + "description": "The amount of blue in the color as a value in the interval [0, 1].", + "format": "float", + "type": "number" + }, + "green": { + "description": "The amount of green in the color as a value in the interval [0, 1].", + "format": "float", + "type": "number" + }, + "red": { + "description": "The amount of red in the color as a value in the interval [0, 1].", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "GoogleTypeDate": { + "description": "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", + "id": "GoogleTypeDate", + "properties": { + "day": { + "description": "Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.", + "format": "int32", + "type": "integer" + }, + "month": { + "description": "Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.", + "format": "int32", + "type": "integer" + }, + "year": { + "description": "Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleTypeDateTime": { + "description": "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.", + "id": "GoogleTypeDateTime", + "properties": { + "day": { + "description": "Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day.", + "format": "int32", + "type": "integer" + }, + "hours": { + "description": "Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.", + "format": "int32", + "type": "integer" + }, + "minutes": { + "description": "Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0.", + "format": "int32", + "type": "integer" + }, + "month": { + "description": "Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month.", + "format": "int32", + "type": "integer" + }, + "nanos": { + "description": "Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0.", + "format": "int32", + "type": "integer" + }, + "seconds": { + "description": "Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds.", + "format": "int32", + "type": "integer" + }, + "timeZone": { + "$ref": "GoogleTypeTimeZone", + "description": "Time zone." + }, + "utcOffset": { + "description": "UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }.", + "format": "google-duration", + "type": "string" + }, + "year": { + "description": "Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleTypeExpr": { + "description": "Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \"Summary size limit\" description: \"Determines if a summary is less than 100 chars\" expression: \"document.summary.size() \u003c 100\" Example (Equality): title: \"Requestor is owner\" description: \"Determines if requestor is the document owner\" expression: \"document.owner == request.auth.claims.email\" Example (Logic): title: \"Public documents\" description: \"Determine whether the document should be publicly visible\" expression: \"document.type != 'private' \u0026\u0026 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.", + "id": "GoogleTypeExpr", + "properties": { + "description": { + "description": "Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.", + "type": "string" + }, + "expression": { + "description": "Textual representation of an expression in Common Expression Language syntax.", + "type": "string" + }, + "location": { + "description": "Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.", + "type": "string" + }, + "title": { + "description": "Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleTypeInterval": { + "description": "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.", + "id": "GoogleTypeInterval", + "properties": { + "endTime": { + "description": "Optional. Exclusive end of the interval. If specified, a Timestamp matching this interval will have to be before the end.", + "format": "google-datetime", + "type": "string" + }, + "startTime": { + "description": "Optional. Inclusive start of the interval. If specified, a Timestamp matching this interval will have to be the same or after the start.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "GoogleTypeLatLng": { + "description": "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.", + "id": "GoogleTypeLatLng", + "properties": { + "latitude": { + "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].", + "format": "double", + "type": "number" + }, + "longitude": { + "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "GoogleTypeMoney": { + "description": "Represents an amount of money with its currency type.", + "id": "GoogleTypeMoney", + "properties": { + "currencyCode": { + "description": "The three-letter currency code defined in ISO 4217.", + "type": "string" + }, + "nanos": { + "description": "Number of nano (10^-9) units of the amount. The value must be between -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos` must be positive or zero. If `units` is zero, `nanos` can be positive, zero, or negative. If `units` is negative, `nanos` must be negative or zero. For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.", + "format": "int32", + "type": "integer" + }, + "units": { + "description": "The whole units of the amount. For example if `currencyCode` is `\"USD\"`, then 1 unit is one US dollar.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "GoogleTypePostalAddress": { + "description": "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 https://github.com/google/libaddressinput) - Users should not be presented with UI elements for input or editing of fields outside countries where that field is used. For more guidance on how to use this schema, please see: https://support.google.com/business/answer/6397478", + "id": "GoogleTypePostalAddress", + "properties": { + "addressLines": { + "description": "Unstructured address lines describing the lower levels of an address. Because values in address_lines do not have type information and may sometimes contain multiple values in a single field (e.g. \"Austin, TX\"), it is important that the line order is clear. The order of address lines should be \"envelope order\" for the country/region of the address. In places where this can vary (e.g. Japan), address_language is used to make it explicit (e.g. \"ja\" for large-to-small ordering and \"ja-Latn\" or \"en\" for small-to-large). This way, the most specific line of an address can be selected based on the language. The minimum permitted structural representation of an address consists of a region_code with all remaining information placed in the address_lines. It would be possible to format such an address very approximately without geocoding, but no semantic reasoning could be made about any of the address components until it was at least partially resolved. Creating an address only containing a region_code and address_lines, and then geocoding is the recommended way to handle completely unstructured addresses (as opposed to guessing which parts of the address should be localities or administrative areas).", + "items": { + "type": "string" + }, + "type": "array" + }, + "administrativeArea": { + "description": "Optional. Highest administrative subdivision which is used for postal addresses of a country or region. For example, this can be a state, a province, an oblast, or a prefecture. Specifically, for Spain this is the province and not the autonomous community (e.g. \"Barcelona\" and not \"Catalonia\"). Many countries don't use an administrative area in postal addresses. E.g. in Switzerland this should be left unpopulated.", + "type": "string" + }, + "languageCode": { + "description": "Optional. BCP-47 language code of the contents of this address (if known). This is often the UI language of the input form or is expected to match one of the languages used in the address' country/region, or their transliterated equivalents. This can affect formatting in certain countries, but is not critical to the correctness of the data and will never affect any validation or other non-formatting related operations. If this value is not known, it should be omitted (rather than specifying a possibly incorrect default). Examples: \"zh-Hant\", \"ja\", \"ja-Latn\", \"en\".", + "type": "string" + }, + "locality": { + "description": "Optional. Generally refers to the city/town portion of the address. Examples: US city, IT comune, UK post town. In regions of the world where localities are not well defined or do not fit into this structure well, leave locality empty and use address_lines.", + "type": "string" + }, + "organization": { + "description": "Optional. The name of the organization at the address.", + "type": "string" + }, + "postalCode": { + "description": "Optional. Postal code of the address. Not all countries use or require postal codes to be present, but where they are used, they may trigger additional validation with other parts of the address (e.g. state/zip validation in the U.S.A.).", + "type": "string" + }, + "recipients": { + "description": "Optional. The recipient at the address. This field may, under certain circumstances, contain multiline information. For example, it might contain \"care of\" information.", + "items": { + "type": "string" + }, + "type": "array" + }, + "regionCode": { + "description": "Required. CLDR region code of the country/region of the address. This is never inferred and it is up to the user to ensure the value is correct. See https://cldr.unicode.org/ and https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html for details. Example: \"CH\" for Switzerland.", + "type": "string" + }, + "revision": { + "description": "The schema revision of the `PostalAddress`. This must be set to 0, which is the latest revision. All new revisions **must** be backward compatible with old revisions.", + "format": "int32", + "type": "integer" + }, + "sortingCode": { + "description": "Optional. Additional, country-specific, sorting code. This is not used in most regions. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire).", + "type": "string" + }, + "sublocality": { + "description": "Optional. Sublocality of the address. For example, this can be neighborhoods, boroughs, districts.", + "type": "string" + } + }, + "type": "object" + }, + "GoogleTypeTimeOfDay": { + "description": "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`.", + "id": "GoogleTypeTimeOfDay", + "properties": { + "hours": { + "description": "Hours of day in 24 hour format. Should be from 0 to 23. An API may choose to allow the value \"24:00:00\" for scenarios like business closing time.", + "format": "int32", + "type": "integer" + }, + "minutes": { + "description": "Minutes of hour of day. Must be from 0 to 59.", + "format": "int32", + "type": "integer" + }, + "nanos": { + "description": "Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.", + "format": "int32", + "type": "integer" + }, + "seconds": { + "description": "Seconds of minutes of the time. Must normally be from 0 to 59. An API may allow the value 60 if it allows leap-seconds.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "GoogleTypeTimeZone": { + "description": "Represents a time zone from the [IANA Time Zone Database](https://www.iana.org/time-zones).", + "id": "GoogleTypeTimeZone", + "properties": { + "id": { + "description": "IANA Time Zone Database time zone, e.g. \"America/New_York\".", + "type": "string" + }, + "version": { + "description": "Optional. IANA Time Zone Database version number, e.g. \"2019a\".", + "type": "string" + } + }, + "type": "object" + }, + "GroupsPerDocData": { + "id": "GroupsPerDocData", + "properties": { + "AuthorId": { + "format": "uint64", + "type": "string" + }, + "GroupGaiaId": { + "format": "uint64", + "type": "string" + }, + "GroupId": { + "description": "Legacy group mysql id.", + "format": "uint64", + "type": "string" + }, + "ThreadId": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "HomeGraphCommonRoute": { + "id": "HomeGraphCommonRoute", + "properties": { + "agentDeviceId": { + "description": "The device ID defined by the agent.", + "type": "string" + }, + "agentId": { + "description": "The agent's ID. Generally it is the agent's Google cloud project id.", + "type": "string" + }, + "chipEndpoint": { + "description": "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.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "targetType": { + "description": "Execution routing target.", + "enum": [ + "UNSPECIFIED", + "PARTNER_CLOUD", + "LOCAL", + "CHIP" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "HomeGraphCommonRoutingTable": { + "description": "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.", + "id": "HomeGraphCommonRoutingTable", + "properties": { + "supportedRoutes": { + "description": "List of supported execution route.", + "items": { + "$ref": "HomeGraphCommonRoute" + }, + "type": "array" + } + }, + "type": "object" + }, + "HomeGraphCommonTraitRoutingHints": { + "description": "LINT.IfChange go/shed-per-trait-routing. Making it object to allow for extendible design, where we can add attributes in future.", + "id": "HomeGraphCommonTraitRoutingHints", + "properties": { + "cloudFulfillmentOnly": { + "description": "Set to true for a non-local trait.", + "type": "boolean" + }, + "trait": { + "description": "Trait name, e.g., \"action.devices.traits.MediaInitiation\". See [device traits](https://developers.google.com/assistant/smarthome/traits). See java/com/google/home/graph/common/devices/config/protoconf.pi for the exhaustive list of trait-strings.", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoAnonTimingStatPair": { + "description": "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.", + "id": "HtmlrenderWebkitHeadlessProtoAnonTimingStatPair", + "properties": { + "name": { + "type": "string" + }, + "timeS": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoBox": { + "description": "A simple 2D box represented by an (x, y) coordinate, a width, and a height. Coordinates are in pixels.", + "id": "HtmlrenderWebkitHeadlessProtoBox", + "properties": { + "height": { + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + }, + "x": { + "description": "on horizontal axis", + "format": "int32", + "type": "integer" + }, + "y": { + "description": "on vertical axis", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoChromiumTrace": { + "description": "A message to describe the trace events returned by Chromium.", + "id": "HtmlrenderWebkitHeadlessProtoChromiumTrace", + "properties": { + "chromiumTrace": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoConsoleLogEntry": { + "description": "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.", + "id": "HtmlrenderWebkitHeadlessProtoConsoleLogEntry", + "properties": { + "lineNumber": { + "description": "Line number of the document which caused an error.", + "format": "int32", + "type": "integer" + }, + "message": { + "description": "Message which indicates the nature of the error. e.g. parse error, reference error (happens when javascript functions or variables are not resolvable) etc.", + "type": "string" + }, + "messageLevel": { + "description": "message level", + "enum": [ + "TIP_MESSAGE_LEVEL", + "DEBUG_MESSAGE_LEVEL", + "LOG_MESSAGE_LEVEL", + "INFO_MESSAGE_LEVEL", + "WARNING_MESSAGE_LEVEL", + "ERROR_MESSAGE_LEVEL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "sourceUrl": { + "description": "The url of the document which has the error.", + "type": "string" + }, + "stackTrace": { + "description": "Stack trace which functions were called when generating the console log. The first frame is the innermost one.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoScriptStackFrame" + }, + "type": "array" + }, + "timestamp": { + "description": "Wall time (s) when the log entry was recorded", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoCookie": { + "id": "HtmlrenderWebkitHeadlessProtoCookie", + "properties": { + "domain": { + "type": "string" + }, + "expiration": { + "format": "double", + "type": "number" + }, + "httpOnly": { + "type": "boolean" + }, + "name": { + "format": "byte", + "type": "string" + }, + "path": { + "type": "string" + }, + "sameSite": { + "enum": [ + "SAME_SITE_UNSPECIFIED", + "SAME_SITE_LAX", + "SAME_SITE_STRICT", + "SAME_SITE_NONE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "secure": { + "type": "boolean" + }, + "value": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoDOMStorageItem": { + "id": "HtmlrenderWebkitHeadlessProtoDOMStorageItem", + "properties": { + "key": { + "type": "string" + }, + "securityOrigin": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoDOMTreeNode": { + "description": "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", + "id": "HtmlrenderWebkitHeadlessProtoDOMTreeNode", + "properties": { + "attribute": { + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute" + }, + "type": "array" + }, + "childDomTreeNodeIndex": { + "description": "An index per child. Indexes can be used to fetch the DOMTreeNodes from the list maintained by the Document.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "currentSourceUrl": { + "description": "For elements, the actual url that was used to fetch the image. Note that this field is set only if it is different from the 'src' attribute value.", + "type": "string" + }, + "document": { + "$ref": "HtmlrenderWebkitHeadlessProtoDocument", + "description": "If the node represents an iframe or a frame then document will be set." + }, + "htmlTagType": { + "description": "Identifies the HTML tag type (IMG, P, DIV, etc). Applicable only for DOM nodes that are representative of html elements. For a list of possible types refer HtmlTagEnum defined in webutil/html/htmltagenum.h.", + "format": "int32", + "type": "integer" + }, + "isClickable": { + "description": "Whether this DOM node responds to mouse clicks. This includes e.g. nodes that have had click event listeners attached via JavaScript as well as e.g. anchor tags that naturally navigate when clicked.", + "type": "boolean" + }, + "name": { + "description": "Name of the node (document, text, comment, div, etc).", + "type": "string" + }, + "originUrl": { + "description": "URL of the script, if any, which created or populated this node.", + "type": "string" + }, + "referencedResourceIndex": { + "description": "List of referenced resource indexes for any resources that this DOM tree node references.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "renderTreeNodeIndex": { + "description": "RenderTreeNode can be looked up from the list of RenderTreeNodes stored in the Document using render_tree_node_index. RenderTreeNode gives rendering information (bounding box, style that was applied, etc). Note: 1. If a DOMTreeNode does not have a RenderTreeNode then it is safe to assume that the DOMTreeNode has no effect on the rendering. DOMTreeNodes for a , ", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "type": { + "enum": [ + "ELEMENT_NODE", + "ATTRIBUTE_NODE", + "TEXT_NODE", + "CDATA_SECTION_NODE", + "ENTITY_REFERENCE_NODE", + "ENTITY_NODE", + "PROCESSING_INSTRUCTION_NODE", + "COMMENT_NODE", + "DOCUMENT_NODE", + "DOCUMENT_TYPE_NODE", + "DOCUMENT_FRAGMENT_NODE", + "NOTATION_NODE", + "XPATH_NAMESPACE_NODE", + "SHADOW_ROOT_NODE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "value": { + "description": "The node value is applicable for TEXT_NODEs, DOCUMENT_TYPE_NODEs, and user input elements such as , and \u003coption\u003e. For DOCUMENT_TYPE_NODEs, the value contains the publicId and SystemId. For input elements, the value reflects the current value in the element at the time the snapshot was taken.", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute": { + "description": "Zero or more attributes for the node.", + "id": "HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute", + "properties": { + "htmlAttributeType": { + "description": "Identifies the HTML attribute type (src, width, height, etc). For a list of possible types refer HtmlAttributeEnum defined in webutil/html/htmlattrenum.h.", + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoDocument": { + "description": "Next available tag: 24", + "id": "HtmlrenderWebkitHeadlessProtoDocument", + "properties": { + "baseUri": { + "description": "Document's base uri.", + "type": "string" + }, + "charset": { + "description": "Document's charset.", + "type": "string" + }, + "contentHeight": { + "format": "int32", + "type": "integer" + }, + "contentLanguage": { + "description": "Document's language.", + "type": "string" + }, + "contentWidth": { + "description": "These fields contain the actual width and height of the document content, which may exceed the size of the rendering viewport. *DEPRECATED* Use rendered_content_area instead. These two fields always assume the content area begins at viewport coordinates (0,0).", + "format": "int32", + "type": "integer" + }, + "domTreeNode": { + "description": "A flat list of all the DOMTreeNodes in the DOM. A flat list is preferred to a tree to avoid recursion and potential stack overflows. Note that the first node in this list will always be the root node.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoDOMTreeNode" + }, + "type": "array" + }, + "frameId": { + "description": "A unique identifier for the frame (browser window of iframe) this document is loaded in. This identifier matches the identifiers used in the timeline data to identify frames and therefore only set if the record_timeline field of the RenderRequest message was set to true. frame_id is not supported on Chromium.", + "type": "string" + }, + "frameName": { + "description": "The name of the frame (browser window of iframe) this document is loaded in. May not be set if the frame name was empty.", + "type": "string" + }, + "javascriptTimeOfDay": { + "description": "-------------------------------------------------------------------------- Input context. These fields are copied from RenderRequest so that Document can be a self contained protobuf. We would've liked to place them in a ## nested InputContext message but it's too late now. ## Time specified to RenderRequest.JavaScriptOptions.time_of_day, if any. ## End of input context. Output-only fields below.", + "format": "double", + "type": "number" + }, + "redirectHop": { + "description": "The chain of redirects (and redirect methods) used to get to the final resource for this Document. Deprecated: Use the redirect events in the render_event field instead.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoRedirectHop" + }, + "type": "array" + }, + "referencedResource": { + "description": "Contains a list of Resources which the renderer requested -- both those that were found and those that were not. Resources are returned in the order that they were requested.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoReferencedResource" + }, + "type": "array" + }, + "renderEvent": { + "description": "Different types of events which happened during rendering. All events for this document's frame are included, so for example if a confirmation dialog is created before a client redirect to this document the ConfirmationDialogEvent will still be included even though the dialog was created by a different document. See render_event.proto for the types of events which are recorded. Note that this is present regardless of whether record_timeline was set in the RenderRequest.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoRenderEvent" + }, + "type": "array" + }, + "renderStyle": { + "description": "See htmlrender_webkit_headless_utils::SerializeRenderStyle() if a serialized css string is wanted.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoStyle" + }, + "type": "array" + }, + "renderTreeNode": { + "description": "A flat list of all the RenderTreeNodes from the render tree. A flat list is preferred to a tree to avoid recursion and potential stack overflows. Note that the first node in this list will always be the RenderTreeNode for the #document node (aka root).", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoRenderTreeNode" + }, + "type": "array" + }, + "renderTreeQualityScore": { + "description": "DEPRECATED - This field to be removed mid-2011. If you need this, use the library directly: //google3/htmlrender/webkit_headless/snapshot_quality Indicates how good or bad the rendering is from the perspective of the render tree. This is different from snapshot_quality_score in that the quality analysis examines everything that can be rendered, not just the portion within the document's viewport. It also ignores missing resouces with fixed width/height specified in the tag. A score of 1 (100%) implies the entire document can be rendered at the best quality and a score of 0 implies the entire document is unusable.", + "format": "double", + "type": "number" + }, + "renderedContentArea": { + "$ref": "HtmlrenderWebkitHeadlessProtoBox", + "description": "The bounding box which represents the whole area of rendered content, which may exceed the size of the rendering viewport. It doesn't include the body's margin." + }, + "scrollX": { + "description": "Scroll offset of this document within the frame. Note that if expand_frame_to_content_height or expand_frame_to_content_width is true, this field reflects the final scroll offset after frame expansion.", + "format": "int32", + "type": "integer" + }, + "scrollY": { + "format": "int32", + "type": "integer" + }, + "snapshotQualityScore": { + "description": "DEPRECATED - This field to be removed mid-2011. If you need this, use the library directly: //google3/htmlrender/webkit_headless/snapshot_quality Indicates how good or bad the rendered snapshot is within the rendered content area within the document's viewport. A score of 1 (100%) implies the snapshot is of best quality and a score of 0 implies the snapshot is unusable.", + "format": "double", + "type": "number" + }, + "title": { + "description": "Document's title.", + "type": "string" + }, + "uri": { + "description": "Document uri is the URL that this document was fetched from. The displayed URL and base URL may be different. If this document was not fetched from any URL (e.g. iframe with no src, populated by script) uri will be \"about:blank\".", + "type": "string" + }, + "viewport": { + "$ref": "HtmlrenderWebkitHeadlessProtoBox", + "description": "The page's layout size." + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoFrameResizeEvent": { + "description": "Event for frame resize. Currently we only record resize events caused by automatic frame expansion.", + "id": "HtmlrenderWebkitHeadlessProtoFrameResizeEvent", + "properties": { + "resizeType": { + "enum": [ + "UNKNOWN", + "AUTOMATIC_FRAME_EXPANSION_TO_CONTENT_WIDTH", + "AUTOMATIC_FRAME_EXPANSION_TO_CONTENT_HEIGHT" + ], + "enumDescriptions": [ + "", + "This event is caused by expand_frame_to_content_width.", + "This event is caused by expand_frame_to_content_height." + ], + "type": "string" + }, + "visibleRectAfterResize": { + "$ref": "HtmlrenderWebkitHeadlessProtoBox" + }, + "visibleRectBeforeResize": { + "$ref": "HtmlrenderWebkitHeadlessProtoBox" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoImage": { + "id": "HtmlrenderWebkitHeadlessProtoImage", + "properties": { + "data": { + "description": "The binary image data, stored in a format decided by the application and a particular RenderService implementation.", + "format": "byte", + "type": "string" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "pageNumber": { + "description": "The page number if this is an image of a page from a print-mode rendering.", + "format": "int32", + "type": "integer" + }, + "viewport": { + "$ref": "HtmlrenderWebkitHeadlessProtoBox", + "description": "The viewport from which this image was generated. This is relative to the upper left of the page's document." + }, + "width": { + "description": "The width and height of the image stored in the data field.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoInitialLoadEvent": { + "description": "Event for the initial load of a frame, including main frame and subframes.", + "id": "HtmlrenderWebkitHeadlessProtoInitialLoadEvent", + "properties": { + "url": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoModalDialogEvent": { + "description": "Event for a modal dialog created by one of window.confirm(), window.prompt(), or window.alert().", + "id": "HtmlrenderWebkitHeadlessProtoModalDialogEvent", + "properties": { + "confirmed": { + "description": "Whether a confirm() or prompt() dialog was confirmed. Will not be present for an alert() dialog.", + "type": "boolean" + }, + "message": { + "type": "string" + }, + "result": { + "description": "For a prompt() dialog, the result of the prompt. Will not be present for other types of dialogs. If confirmed == false and the prompt had a default value, result will contain the default value.", + "type": "string" + }, + "type": { + "enum": [ + "CONFIRM", + "PROMPT", + "ALERT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoOffset": { + "id": "HtmlrenderWebkitHeadlessProtoOffset", + "properties": { + "unit": { + "enum": [ + "PIXELS", + "PERCENT" + ], + "enumDescriptions": [ + "", + "There are other possible Units, add them if needed." + ], + "type": "string" + }, + "value": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoPartialRender": { + "description": "PartialRenders can be created using the extension API to store the document state and/or create an image at points before the final render.", + "id": "HtmlrenderWebkitHeadlessProtoPartialRender", + "properties": { + "cookie": { + "description": "Cookies at the time of snapshot creation.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoCookie" + }, + "type": "array" + }, + "currentClientUrl": { + "description": "Current url as would appear in the web browser's address bar at the time of snapshot creation.", + "type": "string" + }, + "document": { + "$ref": "HtmlrenderWebkitHeadlessProtoDocument", + "description": "Snapshot of the document DOM + Render trees, if requested" + }, + "id": { + "description": "ID set by the render extension", + "type": "string" + }, + "image": { + "$ref": "HtmlrenderWebkitHeadlessProtoImage", + "description": "Image of the render, if requested" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoPdf": { + "id": "HtmlrenderWebkitHeadlessProtoPdf", + "properties": { + "data": { + "description": "The binary PDF data.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRectangle": { + "id": "HtmlrenderWebkitHeadlessProtoRectangle", + "properties": { + "bottom": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "left": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "right": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "top": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset", + "description": "A missing value for any field in this message means 'auto'." + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRedirectEvent": { + "description": "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.", + "id": "HtmlrenderWebkitHeadlessProtoRedirectEvent", + "properties": { + "httpMethod": { + "description": "The HTTP method of the request for the redirect target.", + "enum": [ + "OTHER_HTTP_METHOD", + "GET", + "POST" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "httpStatusCode": { + "description": "For HTTP redirects, the HTTP status code returned in the initial HTTP response.", + "format": "int32", + "type": "integer" + }, + "refreshType": { + "enum": [ + "HTTP_REFRESH", + "META_HTTP_EQUIV_REFRESH" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "targetContentDownloaded": { + "description": "True if the redirect led to a download instead of loading a new page. Note that such redirects can appear anywhere in the list of redirect events.", + "type": "boolean" + }, + "targetUrl": { + "type": "string" + }, + "type": { + "enum": [ + "UNKNOWN_REDIRECT_TYPE", + "HTTP", + "SCRIPT", + "REFRESH" + ], + "enumDescriptions": [ + "If you see this in a RenderEvent produced by the render server it is a bug.", + "Redirection by HTTP status code only. Refresh headers are classified as REFRESH. In this case http_method and http_stauts_code will be set.", + "Actions taken by script that redirect the page. Examples include setting window.location, setting src on a frame, calling window.open(), etc.", + "Redirect by an HTTP Refresh header or tag with http-equiv=\"refresh\". For this case refresh_type will be set indicating the type of refresh." + ], + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRedirectHop": { + "id": "HtmlrenderWebkitHeadlessProtoRedirectHop", + "properties": { + "type": { + "enum": [ + "SERVER", + "CLIENT" + ], + "enumDescriptions": [ + "e.g. HTTP 301/302", + "e.g. meta refresh, JavaScript" + ], + "type": "string" + }, + "url": { + "description": "The redirect target url.", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoReferencedResource": { + "description": "ReferencedResource contains an entry per url referenced by the browser while rendering a document. Next tag available: 20", + "id": "HtmlrenderWebkitHeadlessProtoReferencedResource", + "properties": { + "canceled": { + "description": "True if this fetch was canceled due to render server policy. e.g. the page exceeded the fetch budget or an extension canceled the fetch.", + "type": "boolean" + }, + "contentType": { + "description": "Content type of this resource (webutil/http/content-type.h). The content type is from guess based on the file extension, any mime type in http headers at the beginning of the content, any content-disposition http header, and the content body itself. Note: the content type defined in webutil/http/content-type.proto is incomplete. If you are interested in missing types, please update the enum and the logic of content type detection.", + "format": "int32", + "type": "integer" + }, + "domTreeNodeIndex": { + "description": "DOMTreeNode index which has the url as one of its attributes specified using either src, href or background attributes. src attribute applies to img, script, frame and iframe nodes, href applies to link nodes and background applies to body node. It is possible for a url to be referenced by multiple DOM nodes. For e.g. an tag with the same src attribute can occur in multiple places within a document. It is possible for a url to not have any DOM node reference. For example, redirects don't have DOM tree nodes.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "failedHttpAccessControlCheck": { + "description": "True when a HTTP request succeeded but the resource was not made accessible to script due to a HTTP Access Control (CORS) failure. This field is not implemented on Chromium.", + "type": "boolean" + }, + "fetchSourceInfo": { + "description": "Where this resource comes from.", + "items": { + "$ref": "WirelessTranscoderFetchFetchSourceInfo" + }, + "type": "array" + }, + "fetchStatus": { + "description": "The FetchStatus returned by the fetcher. Values are taken from wireless_transcoder_fetch.FetchConstants.FetchStatus in fetch_service.proto. The default value is SUCCESS(0).", + "enum": [ + "SUCCESS", + "TIMEOUT", + "CONNECTION_ERROR", + "IO_ERROR", + "RPC_ERROR", + "INTERRUPTED", + "UNSUPPORTED_PROTOCOL", + "MALFORMED_URL", + "TOO_MANY_REDIRECTS", + "MALFORMED_RESPONSE", + "NOT_PERMITTED", + "CERTIFICATE_ERROR", + "INVALID_REQUEST", + "BUSY", + "INVALID_CUSTOM_PARAMS", + "NOT_HANDLED" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Use by a FetchService implementation to indicate that it is full and that the client should try another task.", + "Indicates invalid trawler params were sent by the client.", + "Indicates that the fetcher doesn't handle this request." + ], + "type": "string" + }, + "httpHeader": { + "description": "HTTP headers from the fetcher.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader" + }, + "type": "array" + }, + "httpResponseCode": { + "description": "HTTP response code if we had tried to fetch the url. Absence of this field indicates either we have not tried to fetch the url or the fetcher never got back to us with any response.", + "format": "int32", + "type": "integer" + }, + "metadata": { + "items": { + "$ref": "WirelessTranscoderFetchFetchMetadata" + }, + "type": "array" + }, + "postData": { + "description": "The post_data field is only valid when the HTTP request method is POST.", + "format": "byte", + "type": "string" + }, + "redirectTarget": { + "description": "If the http_response_code is a HTTP redirect, the redirect target will be stored here.", + "type": "string" + }, + "referencedResourceContentIndex": { + "description": "Indicates which referenced_resource_content (in RenderResponse) this RefencedResource points to. This field will be set only when there is referenced_resource_content for this RefencedResource in RenderResponse.", + "format": "int32", + "type": "integer" + }, + "requestHeader": { + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader" + }, + "type": "array" + }, + "requestMethod": { + "description": "The HTTP request method (GET, HEAD, POST, etc) used for this request. Values are taken from the HTTPHeaders::Protocol enum in webutil/http/httputils.h. HTTPHeaders::PROTO_GET", + "format": "int32", + "type": "integer" + }, + "styleIndex": { + "description": "style index which has the url specified using either the background-image property or the list-style-image property.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "synchronouslyFetched": { + "description": "Whether it is synchronously fetched.", + "type": "boolean" + }, + "timing": { + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoReferencedResourceFetchTiming" + }, + "type": "array" + }, + "url": { + "description": "Does not have a #fragment.", + "type": "string" + }, + "webkitMetadata": { + "$ref": "HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata", + "description": "Additional information webkit about this resource. e.g. intended usage" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoReferencedResourceFetchTiming": { + "description": "Timing data produced by the fetcher.", + "id": "HtmlrenderWebkitHeadlessProtoReferencedResourceFetchTiming", + "properties": { + "finishMsec": { + "format": "int64", + "type": "string" + }, + "name": { + "description": "A string identifying the fetcher that added this timing information.", + "type": "string" + }, + "startMsec": { + "description": "UNIX epoch timestamps in milliseconds.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader": { + "description": "HTTP Headers included with the resource request.", + "id": "HtmlrenderWebkitHeadlessProtoReferencedResourceHttpHeader", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRenderEvent": { + "id": "HtmlrenderWebkitHeadlessProtoRenderEvent", + "properties": { + "frameResize": { + "$ref": "HtmlrenderWebkitHeadlessProtoFrameResizeEvent" + }, + "initialLoad": { + "$ref": "HtmlrenderWebkitHeadlessProtoInitialLoadEvent" + }, + "modalDialog": { + "$ref": "HtmlrenderWebkitHeadlessProtoModalDialogEvent" + }, + "redirect": { + "$ref": "HtmlrenderWebkitHeadlessProtoRedirectEvent" + }, + "scriptOriginUrl": { + "description": "The URL of the script which caused this event, if any. Analogous to origin_url in DOMTreeNode.", + "type": "string" + }, + "virtualTimeOffset": { + "description": "Virtual time of the event, as an offset from the beginning of the render in seconds.", + "format": "double", + "type": "number" + }, + "windowOpen": { + "$ref": "HtmlrenderWebkitHeadlessProtoWindowOpenEvent" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRenderExtensionResult": { + "description": "Results returned by a render server extension. Next id: 3", + "id": "HtmlrenderWebkitHeadlessProtoRenderExtensionResult", + "properties": { + "consoleLogEntry": { + "description": "Log messages and errors generated by extension script.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoConsoleLogEntry" + }, + "type": "array" + }, + "result": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRenderResponse": { + "description": "See go/wrs-render-quality for how to evaluate the results. Next id: 24", + "id": "HtmlrenderWebkitHeadlessProtoRenderResponse", + "properties": { + "chromiumTrace": { + "$ref": "HtmlrenderWebkitHeadlessProtoChromiumTrace", + "description": "Contains chromium trace generated during page rendering. This is present if a chromium_trace_config was provided in the request." + }, + "cookie": { + "description": "Contents of the browser's cookie jar. (if cookies_enabled was set to true in the RenderRequest).", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoCookie" + }, + "type": "array" + }, + "document": { + "$ref": "HtmlrenderWebkitHeadlessProtoDocument", + "description": "Contains the DOM tree, render tree and more. For details consult document.proto." + }, + "exceptionDetail": { + "description": "Provides extra debugging details when certain exception bits are set.", + "type": "string" + }, + "exceptions": { + "description": "Exceptions (possibly serious conditions) that occurred during this rendering. 0 means none. Bitfield encoding. See the RenderingException enum above for an explanation.", + "format": "int64", + "type": "string" + }, + "extensionResult": { + "$ref": "HtmlrenderWebkitHeadlessProtoRenderExtensionResult", + "description": "Render extension results (if `devtools_script` was provided with the request.)" + }, + "finalClientUrl": { + "description": "This field contains the final url as would appear in the web browser's address bar. Note that JavaScript can modify the contents of the location bar so this URL may not appear on the list of referenced resources. If we fail to follow a redirect this field will contain the URL that we failed to redirect to, not the last one we successfully loaded.", + "type": "string" + }, + "image": { + "description": "Contains the viewport images rendered by webkit (if generate_image was set to true in the RenderRequest). Will also contain the print-mode images (if generate_print_mode_images was set to true).", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoImage" + }, + "type": "array" + }, + "localStorage": { + "description": "Contents of the browser's local storage.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoDOMStorageItem" + }, + "type": "array" + }, + "partialRender": { + "description": "Partial render snapshots (if requested by a render extension)", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoPartialRender" + }, + "type": "array" + }, + "pdf": { + "$ref": "HtmlrenderWebkitHeadlessProtoPdf", + "description": "Contains the PDF document (if generate_pdf was set to true in the RenderRequest)" + }, + "referencedResourceContent": { + "description": "Contents for all the urls fetched by the render server. This field is present only if generate_referenced_resource_content was set to true in the RenderRequest.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoResource" + }, + "type": "array" + }, + "renderStats": { + "$ref": "HtmlrenderWebkitHeadlessProtoRenderStats", + "description": "Time to render the url, total size of a document, number of referenced images, etc will be part of RenderStats." + }, + "sessionStorage": { + "description": "Contents of the browser's session storage.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoDOMStorageItem" + }, + "type": "array" + }, + "title": { + "description": "Contains the page title produced by webkit, in the UTF-8 encoding.", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRenderStats": { + "description": "Next id: 17.", + "id": "HtmlrenderWebkitHeadlessProtoRenderStats", + "properties": { + "anonRenderFineTimingStats": { + "description": "Deliberately non-named fine timing stats. These are all related to each other and unrelated to other timing stats in this message.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoAnonTimingStatPair" + }, + "type": "array" + }, + "consoleLogEntry": { + "description": "Any messages logged by the renderer to the console. Note that we capture a subset of the messages logged by the renderer here to avoid explosion.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoConsoleLogEntry" + }, + "type": "array" + }, + "counter": { + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoRenderStatsCounter" + }, + "type": "array" + }, + "documentBuildTimeMsec": { + "description": "Time to build document and render tree response data.", + "format": "int32", + "type": "integer" + }, + "droppedLogEntryCount": { + "description": "Number of dropped log messages. Since we capture only a subset of the messages in console_log_entry this field is included just so that the consumers can get an idea of how many actual attempts were made by the renderer.", + "format": "int32", + "type": "integer" + }, + "imageEncodingTimeMsec": { + "description": "Image encoding (e.g. raw -\u003e PNG) time.", + "format": "int32", + "type": "integer" + }, + "imageScalingTimeMsec": { + "description": "Image scaling time.", + "format": "int32", + "type": "integer" + }, + "layoutTimeMsec": { + "description": "Time from starting render to document finished loading. This includes all fetches, parsing, decoding, running JavaScript, etc.", + "format": "int32", + "type": "integer" + }, + "paintTimeMsec": { + "description": "Time required to paint a document into our buffer.", + "format": "int32", + "type": "integer" + }, + "renderCostMgcu": { + "description": "Total cost this render spent running and RPC cost in milliGCUs.", + "format": "int32", + "type": "integer" + }, + "renderEngine": { + "description": "Render engine used to render this document.", + "enum": [ + "UNKNOWN", + "BLINK_HEADLESS", + "CHROME_HEADLESS", + "UNKNOWN_DUE_TO_RPC_FAILURE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "renderRunningTimeMsec": { + "description": "Total CPU time this render spent running in milliseconds.", + "format": "int32", + "type": "integer" + }, + "renderServerBaselineCl": { + "description": "The CL from which the render engine was built.", + "format": "int64", + "type": "string" + }, + "renderTimeMsec": { + "description": "Total wall time taken to render a document in milliseconds.", + "format": "int32", + "type": "integer" + }, + "sandboxRenderTimeMsec": { + "description": "Total time spent in the sandbox in milliseconds. This time includes all phases measured individually below.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRenderStatsCounter": { + "description": "Render event counters.", + "id": "HtmlrenderWebkitHeadlessProtoRenderStatsCounter", + "properties": { + "count": { + "format": "int64", + "type": "string" + }, + "name": { + "description": "By convention, counters may contain a \".\" which we use to separate a metric name from a counter name in streamz.", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRenderTreeNode": { + "id": "HtmlrenderWebkitHeadlessProtoRenderTreeNode", + "properties": { + "box": { + "$ref": "HtmlrenderWebkitHeadlessProtoBox", + "description": "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": { + "description": "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.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "domTreeNodeIndex": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "inlineTextBox": { + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox" + }, + "type": "array" + }, + "renderedText": { + "description": "The actual text that was rendered. This is applicable only for text nodes.", + "type": "string" + }, + "styleIndex": { + "description": "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.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox": { + "description": "For text nodes, individual lines of text. This repeats rendered_text with more specific bounding boxes.", + "id": "HtmlrenderWebkitHeadlessProtoRenderTreeNodeInlineTextBox", + "properties": { + "box": { + "$ref": "HtmlrenderWebkitHeadlessProtoBox" + }, + "renderedText": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoResource": { + "description": "Next id: 9.", + "id": "HtmlrenderWebkitHeadlessProtoResource", + "properties": { + "content": { + "description": "content contains a complete HTTP response message including the HTTP status line, headers and body. For example: HTTP/1.1 200 OK\\r\\n Content-Type: text/html\\r\\n \\r\\n ... content ... For inputs (RenderRequest.resource): Any HTTP content encoding (e.g. gzip) and transfer encoding (e.g. chunked) MUST be decoded. HTTP content and transfer encoding headers will be ignored if present. For outputs (RenderResponse.referenced_resource_content): The body will be decoded (no content or transfer encoding) however any content or transfer encoding headers present in the original fetch response will be passed through. Decoding this field requires a correct text encoding. The charset field of Document proto can be a good guess but is not guaranteed to be correct.", + "format": "byte", + "type": "string" + }, + "fetchSourceInfo": { + "description": "Where this resource comes from.", + "items": { + "$ref": "WirelessTranscoderFetchFetchSourceInfo" + }, + "type": "array" + }, + "finalContentUrl": { + "description": "The url that contributes the final content. Only existed when metadata contains FetchReplyData.", + "type": "string" + }, + "metadata": { + "items": { + "$ref": "WirelessTranscoderFetchFetchMetadata" + }, + "type": "array" + }, + "method": { + "description": "The HTTP request method (GET, HEAD, POST, etc) used for this request. Values are taken from the HTTPHeaders::Protocol enum in webutil/http/httputils.h. If it's not set, we will infer GET or POST based on the presence of post_data.", + "format": "int32", + "type": "integer" + }, + "postData": { + "format": "byte", + "type": "string" + }, + "requestHeader": { + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoResourceHttpHeader" + }, + "type": "array" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoResourceHttpHeader": { + "id": "HtmlrenderWebkitHeadlessProtoResourceHttpHeader", + "properties": { + "name": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoScriptStackFrame": { + "description": "Describes a script stack frame.", + "id": "HtmlrenderWebkitHeadlessProtoScriptStackFrame", + "properties": { + "columnNumber": { + "description": "The current column number for the stack frame.", + "format": "int32", + "type": "integer" + }, + "functionName": { + "description": "The function name of the stack frame.", + "type": "string" + }, + "lineNumber": { + "description": "The current line number for the stack frame.", + "format": "int32", + "type": "integer" + }, + "url": { + "description": "The URL of the script being executed.", + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoStyle": { + "description": "Next id: 54", + "id": "HtmlrenderWebkitHeadlessProtoStyle", + "properties": { + "backgroundAttachment": { + "enum": [ + "SCROLL", + "FIXED" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "backgroundColorArgb": { + "description": "Background color encoded as ARGB", + "format": "uint32", + "type": "integer" + }, + "backgroundGradientColorStopArgb": { + "items": { + "format": "uint32", + "type": "integer" + }, + "type": "array" + }, + "backgroundGradientRepeat": { + "type": "boolean" + }, + "backgroundGradientType": { + "enum": [ + "LINEAR", + "RADIAL" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "backgroundImageRepeat": { + "enum": [ + "NO_REPEAT", + "REPEAT", + "REPEAT_X", + "REPEAT_Y" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "backgroundImageUrl": { + "description": "The url of the background image in the first layer.", + "type": "string" + }, + "backgroundImageXPos": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset", + "description": "Background image position (x, y)." + }, + "backgroundImageYPos": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "backgroundSize": { + "enum": [ + "CONTAIN", + "COVER", + "SIZE_LENGTH", + "SIZE_NONE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "backgroundSizeHeight": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "backgroundSizeWidth": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset", + "description": "Only present (but may be missing) if background_size == SIZE_LENGTH." + }, + "borderColorArgbBottom": { + "format": "uint32", + "type": "integer" + }, + "borderColorArgbLeft": { + "format": "uint32", + "type": "integer" + }, + "borderColorArgbRight": { + "format": "uint32", + "type": "integer" + }, + "borderColorArgbTop": { + "format": "uint32", + "type": "integer" + }, + "borderPixelWidthBottom": { + "format": "uint32", + "type": "integer" + }, + "borderPixelWidthLeft": { + "format": "uint32", + "type": "integer" + }, + "borderPixelWidthRight": { + "format": "uint32", + "type": "integer" + }, + "borderPixelWidthTop": { + "format": "uint32", + "type": "integer" + }, + "borderStyleBottom": { + "enum": [ + "BNONE", + "BHIDDEN", + "INSET", + "GROOVE", + "RIDGE", + "OUTSET", + "DOTTED", + "DASHED", + "SOLID", + "DOUBLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "borderStyleLeft": { + "enum": [ + "BNONE", + "BHIDDEN", + "INSET", + "GROOVE", + "RIDGE", + "OUTSET", + "DOTTED", + "DASHED", + "SOLID", + "DOUBLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "borderStyleRight": { + "enum": [ + "BNONE", + "BHIDDEN", + "INSET", + "GROOVE", + "RIDGE", + "OUTSET", + "DOTTED", + "DASHED", + "SOLID", + "DOUBLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "borderStyleTop": { + "enum": [ + "BNONE", + "BHIDDEN", + "INSET", + "GROOVE", + "RIDGE", + "OUTSET", + "DOTTED", + "DASHED", + "SOLID", + "DOUBLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "clip": { + "$ref": "HtmlrenderWebkitHeadlessProtoRectangle", + "description": "Default value for clip is \"auto\", which is represented here as !has_clip()." + }, + "direction": { + "enum": [ + "LTR", + "RTL" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "display": { + "enum": [ + "BLOCK", + "INLINE", + "INLINE_BLOCK" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "fontFamily": { + "description": "Font and text decorations:", + "type": "string" + }, + "fontSize": { + "format": "int32", + "type": "integer" + }, + "fontStyle": { + "enum": [ + "FONT_NORMAL", + "FONT_ITALIC" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "fontWeight": { + "format": "int32", + "type": "integer" + }, + "foregroundColorArgb": { + "description": "Foreground color encoded as ARGB", + "format": "uint32", + "type": "integer" + }, + "hasBackground": { + "description": "Starting from Chromium, has_background is set when there is a non-empty specification for background_image, whether it be a url, gradient or other cases, such as cross-fade. Besides setting this field, We additionally parse url and gradient cases and populate some of the following background fields.", + "type": "boolean" + }, + "listStyleImageUrl": { + "type": "string" + }, + "listStyleType": { + "enum": [ + "DEFAULT_DISC", + "CIRCLE", + "SQUARE", + "DECIMAL_LIST_STYLE", + "DECIMAL_LEADING_ZERO", + "ARABIC_INDIC", + "BINARY_LIST_STYLE", + "BENGALI", + "CAMBODIAN", + "KHMER", + "DEVANAGARI", + "GUJARATI", + "GURMUKHI", + "KANNADA", + "LOWER_HEXADECIMAL", + "LAO", + "MALAYALAM", + "MONGOLIAN", + "MYANMAR", + "OCTAL", + "ORIYA", + "PERSIAN", + "URDU", + "TELUGU", + "TIBETAN", + "THAI", + "UPPER_HEXADECIMAL", + "LOWER_ROMAN", + "UPPER_ROMAN", + "LOWER_GREEK", + "LOWER_ALPHA", + "LOWER_LATIN", + "UPPER_ALPHA", + "UPPER_LATIN", + "AFAR", + "ETHIOPIC_HALEHAME_AA_ET", + "ETHIOPIC_HALEHAME_AA_ER", + "AMHARIC", + "ETHIOPIC_HALEHAME_AM_ET", + "AMHARIC_ABEGEDE", + "ETHIOPIC_ABEGEDE_AM_ET", + "CJK_EARTHLY_BRANCH", + "CJK_HEAVENLY_STEM", + "ETHIOPIC", + "ETHIOPIC_HALEHAME_GEZ", + "ETHIOPIC_ABEGEDE", + "ETHIOPIC_ABEGEDE_GEZ", + "HANGUL_CONSONANT", + "HANGUL", + "LOWER_NORWEGIAN", + "OROMO", + "ETHIOPIC_HALEHAME_OM_ET", + "SIDAMA", + "ETHIOPIC_HALEHAME_SID_ET", + "SOMALI", + "ETHIOPIC_HALEHAME_SO_ET", + "TIGRE", + "ETHIOPIC_HALEHAME_TIG", + "TIGRINYA_ER", + "ETHIOPIC_HALEHAME_TI_ER", + "TIGRINYA_ER_ABEGEDE", + "ETHIOPIC_ABEGEDE_TI_ER", + "TIGRINYA_ET", + "ETHIOPIC_HALEHAME_TI_ET", + "TIGRINYA_ET_ABEGEDE", + "ETHIOPIC_ABEGEDE_TI_ET", + "UPPER_GREEK", + "UPPER_NORWEGIAN", + "ASTERISKS", + "FOOTNOTES", + "HEBREW", + "ARMENIAN", + "LOWER_ARMENIAN", + "UPPER_ARMENIAN", + "GEORGIAN", + "CJK_IDEOGRAPHIC", + "HIRAGANA", + "KATAKANA", + "HIRAGANA_IROHA", + "KATAKANA_IROHA", + "NONE_LIST_STYLE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "marginBottom": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "marginLeft": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "marginRight": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "marginTop": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset", + "description": "Margin" + }, + "opacity": { + "format": "float", + "type": "number" + }, + "overflowX": { + "enum": [ + "OVISIBLE", + "OHIDDEN", + "OSCROLL", + "OAUTO", + "OOVERLAY", + "OMARQUEE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "overflowY": { + "enum": [ + "OVISIBLE", + "OHIDDEN", + "OSCROLL", + "OAUTO", + "OOVERLAY", + "OMARQUEE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "paddingBottom": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "paddingLeft": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "paddingRight": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset" + }, + "paddingTop": { + "$ref": "HtmlrenderWebkitHeadlessProtoOffset", + "description": "Padding" + }, + "position": { + "enum": [ + "POSITION_STATIC", + "POSITION_RELATIVE", + "POSITION_ABSOLUTE", + "POSITION_FIXED" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "referencedResourceIndex": { + "description": "List of referenced resource indexes for any resources that this style references. (e.g. background images.) (see document.proto)", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "textAlign": { + "enum": [ + "DEFAULT_TASTART", + "LEFT", + "RIGHT", + "CENTER", + "JUSTIFY", + "WEBKIT_LEFT", + "WEBKIT_RIGHT", + "WEBKIT_CENTER", + "TAEND" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "textDecoration": { + "enum": [ + "NONE", + "UNDERLINED", + "LINE_THROUGH" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "textShadowColorArgb": { + "format": "uint32", + "type": "integer" + }, + "visibility": { + "enum": [ + "VISIBLE", + "HIDDEN", + "COLLAPSE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "zIndex": { + "description": "Default value for z-index is \"auto\" which means \"inherit from parent\".", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata": { + "description": "WebkKitFetchMetadata holds additional webkit-specific information for a single resource fetch.", + "id": "HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata", + "properties": { + "devtoolsFrameId": { + "description": "Chromium DevTools frame ID of the frame that initiated this fetch. Only populated in the streaming render service with FETCH_MODE_CLIENT.", + "type": "string" + }, + "targetType": { + "enum": [ + "TARGET_UNSPECIFIED", + "TARGET_MAIN_FRAME", + "TARGET_SUBFRAME", + "TARGET_SUBRESOURCE", + "TARGET_STYLE_SHEET", + "TARGET_SCRIPT", + "TARGET_FONT", + "TARGET_IMAGE", + "TARGET_OBJECT", + "TARGET_MEDIA", + "TARGET_WORKER", + "TARGET_SHARED_WORKER", + "TARGET_PREFETCH", + "TARGET_FAVICON", + "TARGET_XHR", + "TARGET_TEXT_TRACK", + "TARGET_BEACON", + "TARGET_FILE", + "TARGET_MANIFEST", + "TARGET_PING", + "TARGET_RAW", + "TARGET_EVENT_SOURCE" + ], + "enumDescriptions": [ + "", + "", + "", + "Shouldn't really ever see this one.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "HtmlrenderWebkitHeadlessProtoWindowOpenEvent": { + "description": "Corresponds to a call to window.open(). Note that a WindowOpenEvent will be present whether or not the call was successful.", + "id": "HtmlrenderWebkitHeadlessProtoWindowOpenEvent", + "properties": { + "allowed": { + "description": "Whether or not the window was allowed to be opened by the popup blocker. Unless user events are created with a render extension this should be false.", + "type": "boolean" + }, + "url": { + "description": "The URL for the new window. Note that this is the URL after it has been processed by WebKit, so, for example, relative links passed to window.create() will have been made absolute.", + "type": "string" + }, + "windowFeatures": { + "description": "Window features passed to window.open().", + "type": "string" + }, + "windowName": { + "description": "Window name passed to window.open(). If no name is provided this defaults to \"_blank\".", + "type": "string" + } + }, + "type": "object" + }, + "I18nPhonenumbersPhoneNumber": { + "description": "The PhoneNumber object that is used by all LibPhoneNumber API's to fully represent a phone number.", + "id": "I18nPhonenumbersPhoneNumber", + "properties": { + "countryCode": { + "description": "The country calling code for this number, as defined by the International Telecommunication Union (ITU). For example, this would be 1 for NANPA countries, and 33 for France.", + "format": "int32", + "type": "integer" + }, + "countryCodeSource": { + "description": "The source from which the country_code is derived.", + "enum": [ + "UNSPECIFIED", + "FROM_NUMBER_WITH_PLUS_SIGN", + "FROM_NUMBER_WITH_IDD", + "FROM_NUMBER_WITHOUT_PLUS_SIGN", + "FROM_DEFAULT_COUNTRY" + ], + "enumDescriptions": [ + "Default value returned if this is not set, because the phone number was created using parse, not parseAndKeepRawInput. hasCountryCodeSource will return false if this is the case.", + "The country_code is derived based on a phone number with a leading \"+\", e.g. the French number \"+33 1 42 68 53 00\".", + "The country_code is derived based on a phone number with a leading IDD, e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.", + "The country_code is derived based on a phone number without a leading \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is supplied as France.", + "The country_code is derived NOT based on the phone number itself, but from the defaultCountry parameter provided in the parsing function by the clients. This happens mostly for numbers written in the national format (without country code). For example, this would be set when parsing the French number \"01 42 68 53 00\", when defaultCountry is supplied as France." + ], + "type": "string" + }, + "extension": { + "description": "Extension is not standardized in ITU recommendations, except for being defined as a series of numbers with a maximum length of 40 digits. It is defined as a string here to accommodate for the possible use of a leading zero in the extension (organizations have complete freedom to do so, as there is no standard defined). Other than digits, some other dialling characters such as \",\" (indicating a wait) may be stored here.", + "type": "string" + }, + "italianLeadingZero": { + "description": "In some countries, the national (significant) number starts with one or more \"0\"s without this being a national prefix or trunk code of some kind. For example, the leading zero in the national (significant) number of an Italian phone number indicates the number is a fixed-line number. There have been plans to migrate fixed-line numbers to start with the digit two since December 2000, but it has not happened yet. See http://en.wikipedia.org/wiki/%2B39 for more details. These fields can be safely ignored (there is no need to set them) for most countries. Some limited number of countries behave like Italy - for these cases, if the leading zero(s) of a number would be retained even when dialling internationally, set this flag to true, and also set the number of leading zeros. Clients who use the parsing or conversion functionality of the i18n phone number libraries (go/phonenumbers) will have these fields set if necessary automatically.", + "type": "boolean" + }, + "nationalNumber": { + "description": "The National (significant) Number, as defined in International Telecommunication Union (ITU) Recommendation E.164, without any leading zero. The leading-zero is stored separately if required, since this is an uint64 and hence cannot store such information. Do not use this field directly: if you want the national significant number, call the getNationalSignificantNumber method of PhoneNumberUtil. For countries which have the concept of an \"area code\" or \"national destination code\", this is included in the National (significant) Number. Although the ITU says the maximum length should be 15, we have found longer numbers in some countries e.g. Germany. Note that the National (significant) Number does not contain the National (trunk) prefix. Obviously, as a uint64, it will never contain any formatting (hyphens, spaces, parentheses), nor any alphanumeric spellings.", + "format": "uint64", + "type": "string" + }, + "numberOfLeadingZeros": { + "description": "Full description of this field in the comment for italian_leading_zero since this field will only be set when italian_leading_zero is true.", + "format": "int32", + "type": "integer" + }, + "preferredDomesticCarrierCode": { + "description": "The carrier selection code that is preferred when calling this phone number domestically. This also includes codes that need to be dialed in some countries when calling from landlines to mobiles or vice versa. For example, in Columbia, a \"3\" needs to be dialed before the phone number itself when calling from a mobile phone to a domestic landline phone and vice versa. Note this is the \"preferred\" code, which means other codes may work as well.", + "type": "string" + }, + "rawInput": { + "description": "This field is used to store the raw input string containing phone numbers before it was canonicalized by the library. For example, it could be used to store alphanumerical numbers such as \"1-800-GOOG-411\".", + "type": "string" + } + }, + "type": "object" + }, + "ImageBaseThumbnailMetadata": { + "description": "Next ID: 15", + "id": "ImageBaseThumbnailMetadata", + "properties": { + "byteSize": { + "description": "the size of the stored thumbnail", + "format": "int32", + "type": "integer" + }, + "crops": { + "$ref": "ContentAwareCropsIndexing", + "description": "SmartCrop crop-hints By default, this field is not populated." + }, + "deepCrop": { + "$ref": "DeepCropIndexing", + "description": "DeepCrop crop-hints. Usage in thumbnails could be deprecated in favor or deep_crop_pixels (below). By default, this field is not populated." + }, + "deepCropPixels": { + "$ref": "DeepCropPixels", + "description": "DeepCrop signal in pixels, equivalent to deep_crop (above) but with pixels instead of percentages. By default, this field is not populated." + }, + "docid": { + "description": "the Amarna docid of the thumbnail", + "format": "uint64", + "type": "string" + }, + "encryptedDocid": { + "description": "encrypted version of docid", + "type": "string" + }, + "fprint": { + "description": "the fprint of the thumbnail", + "format": "uint64", + "type": "string" + }, + "height": { + "description": "the height of the stored thumbnail", + "format": "int32", + "type": "integer" + }, + "mimeType": { + "description": "The mime_type of the thumbnail (\"image/jpeg\", \"image/png\", etc.).", + "type": "string" + }, + "originalHeight": { + "format": "int32", + "type": "integer" + }, + "originalWidth": { + "description": "Not populated by Amarna/image pipelines, ever. This was apparently introduced by a customer that wished to extend ThumbnailMetadata with this custom data.", + "format": "int32", + "type": "integer" + }, + "type": { + "enum": [ + "THUMBNAIL_TYPE_DEFAULT", + "THUMBNAIL_TYPE_AREA_50K", + "THUMBNAIL_TYPE_400", + "THUMBNAIL_TYPE_800", + "THUMBNAIL_TYPE_ORIGINAL", + "THUMBNAIL_TYPE_ORIGINAL_HQ", + "THUMBNAIL_TYPE_FAVICON_16", + "THUMBNAIL_TYPE_FAVICON_32", + "THUMBNAIL_TYPE_FAVICON_64", + "THUMBNAIL_TYPE_FAVICON_ORIGINAL", + "THUMBNAIL_TYPE_FAVICON_16_DARK", + "THUMBNAIL_TYPE_FAVICON_32_DARK", + "THUMBNAIL_TYPE_FAVICON_64_DARK", + "THUMBNAIL_TYPE_FAVICON_ORIGINAL_DARK", + "THUMBNAIL_TYPE_1080", + "THUMBNAIL_TYPE_1600_HQ", + "THUMBNAIL_TYPE_AREA_300K", + "THUMBNAIL_TYPE_AREA_50K_ALPHA", + "THUMBNAIL_TYPE_AREA_50K_SYNTHETIC_ALPHA", + "THUMBNAIL_TYPE_AREA_2M", + "THUMBNAIL_TYPE_AREA_2M_METADATA", + "THUMBNAIL_TYPE_800_ALPHA_WHITE", + "THUMBNAIL_TYPE_ORIGINAL_ALPHA_WHITE", + "THUMBNAIL_TYPE_ANIMATED_H144", + "THUMBNAIL_TYPE_ORIGINAL_HQ_LICENSED", + "THUMBNAIL_TYPE_TENOR_250K_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_GIF", + "THUMBNAIL_TYPE_TENOR_30K_OPTIMIZED_THUMBNAIL_GIF", + "THUMBNAIL_TYPE_TENOR_45K_OPTIMIZED_90P_GIF", + "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100P_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200P_GIF", + "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100W_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200W_GIF", + "THUMBNAIL_TYPE_TENOR_45K_PREVIEW_GIF", + "THUMBNAIL_TYPE_TENOR_250K_MEDIUM_GIF", + "THUMBNAIL_TYPE_AREA_2M_WEBP", + "THUMBNAIL_TYPE_AREA_2M_WEBP_METADATA", + "THUMBNAIL_TYPE_AREA_2M_AVIF", + "THUMBNAIL_TYPE_AREA_2M_AVIF_METADATA", + "THUMBNAIL_TYPE_AREA_50K_WEBP", + "THUMBNAIL_TYPE_AREA_50K_AVIF", + "THUMBNAIL_TYPE_ORIGINAL_HQ_KG" + ], + "enumDescriptions": [ + "DEPRECATED - use THUMBNAIL_TYPE_AREA_50K if possible. The default thumbnail type is deprecated and no longer served by SFFE. For legacy users (e.g. imagesearch heirloom UI) you must request a downsized THUMBNAIL_TYPE_AREA_50K thumbnail.", + "This is the most common thumbnail type, used in image search results. It is defined to have 50625 pixels (= 225 x 225).", + "This refers to a thumbnail that fits in a 400x400 box.", + "This refers to a thumbnail that fits in a 800x800 box.", + "This refers to re-encoding original image to JPEG at the same size (up to 10000x10000). Output quality may be lower.", + "Re-encode image at the same size as original (up to 10000x10000) but with high-quality (q=90). This was introduced by TYPHOON client and is expected only for very few images in our table (under 10k). If you plan to use this contact amarna-dev@ and/or crt@", + "These refer to favicon thumbnails of 16x16, 32x32 or 64x64. If the original image is an ico file containing multiple embedded images including 16x16, 32x32 or 64x64, these thumbnails are derived from the embedded image of the corresponding size. (If no such embedded image is found, prefer the closest size that's larger. If still no such size exists, prefer largest.) If no such size exists, these thumbnails are rescaled to an image whose maximum dimension is 16, 32 or 64.", + "", + "", + "This type of favicon will preserve the size of the original image.", + "These refer to favicon thumbnails for dark mode. This triggers dark mode on the SVG decoding (and otherwise, the same as the above favicon types)", + "", + "", + "", + "This refers to a thumbnail that fits in a 1080x1080 box.", + "This refers to a thumbnail that fits in a 1600x1600 box and is encoded with high-quality (q=90). Contact amarna-dev@/crt@/bingwang@ for using it.", + "This uses the same MaxAreaSizer as THUMBNAIL_TYPE_AREA_50K. The exact area is defined to be 307200 (= 640 x 480).", + "This is like THUMBNAIL_TYPE_AREA_50K, but with an alpha channel.", + "DEPRECATED - Please do not introduce new requests for this type. It will be eliminated soon. Until then, it will behave like the AREA_50K_ALPHA type -- use that instead.", + "This refers to a thumbnail with at most 2073600 pixels (=1920*1080). The image will be scaled down to 2M while preserving the aspect ratio if it's too large. If the thumbnail is in JPEG format, it is encoded with quality = 85. Besides, it supports alpha channel by default and does not convert lossless formats to JPEG.", + "Similar to THUMBNAIL_TYPE_AREA_2M, but with the source image metadata propagated.", + "In alpha-white thumbs, colors are remapped in RGBA to be more transparent the closer they are to white. This is for use with white-background images, so that the perceived background color can be darkened by rendering over gray. See go/alpha-white-thumbs for details and limitations. Sizing matches non-ALPHA_WHITE equivalents.", + "", + "Height-scaled animated thumb types, encoded as H264 previews. Suffix gives height, e.g. _H144 indicates height 144. Width is a scaled multiple-of-8 value so the thumb has approximately the same aspect ratio as the original. For more info, see http://go/animated-thumbs.", + "New thumbnail type for licensed contents. From a thumbnail generation perspective this behaves similarly to THUMBNAIL_TYPE_ORIGINAL_HQ, but it exists as a separate thumbnail type to enable takedowns requested by owner. WARNING: This type is primarily used by go/licensed-media-service and is subject to policy changes. Please contact g/license-media-service-team before using.", + "Tenor gifs go/tenor-integration-binary-serving-discussion", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Similar to THUMBNAIL_TYPE_AREA_2M but pre-transcoded to WebP and AVIF format, as those two format can be slow to transcode in serving time. Currently only generated for AMP images. These two thumbnails are static images despite that their formats support animation.", + "Similar to THUMBNAIL_TYPE_AREA_2M_WEBP, but with the source image metadata propagated.", + "AVIF is not yet a supported input for SCS serving time thumbnailing, trying to do so will give errors.", + "Similar to THUMBNAIL_TYPE_AREA_2M_AVIF, but with the source image metadata propagated.", + "WebP format. Currently only generated for navboost images.", + "AVIF format. Currently only generated for navboost images.", + "WARNING: This type is dedicated to KG_IMAGE client. http://b/234653726" + ], + "type": "string" + }, + "width": { + "description": "the width of the stored thumbnail", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageBaseVideoPreviewMetadata": { + "description": "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.", + "id": "ImageBaseVideoPreviewMetadata", + "properties": { + "byteSize": { + "description": "Size of the stored preview.", + "format": "int32", + "type": "integer" + }, + "docid": { + "description": "64 bit docid of the original video.", + "format": "uint64", + "type": "string" + }, + "duration": { + "description": "TODO (yzliu): consider using duration_ms as field name since it is number of milliseconds. Duration of the preview in ms.", + "format": "int32", + "type": "integer" + }, + "expirationTimestampMicros": { + "description": "Expiration timestamp of preview in microseconds since epoch.", + "format": "int64", + "type": "string" + }, + "fprint": { + "description": "LINT.ThenChange(//depot/google3/video/crawl/indexing/signal_combiner.cc:video_preview) Fingerprint of the preview.", + "format": "uint64", + "type": "string" + }, + "height": { + "description": "Height of the stored preview.", + "format": "int32", + "type": "integer" + }, + "mimeType": { + "description": "Mime type of the preview (\"video/mp4\").", + "type": "string" + }, + "state": { + "description": "Indicates the state in Venom for this preview type.", + "enum": [ + "STATE_UNKNOWN", + "STATE_DONE", + "STATE_NOT_APPLICABLE", + "STATE_MISSING", + "STATE_DELETED", + "STATE_DIRTY", + "STATE_OBSOLETE", + "STATE_PENDING_PUBLICATION", + "STATE_FAILED" + ], + "enumDescriptions": [ + "", + "Final states (ie states in which we would stay ## unless the client revises the expectations) As far as the relevant service is concerned, the asset has been fully produced.", + "As far as the service is concerned, the asset should not be produced (say, HD for a SD input)", + "STATE_MISSING indicates the asset needs to be created. It is a transient state from STATE_DIRTY. It is also the final state if the asset failed to be created within its allowed number of retries.", + "The asset has been removed. This is the final state for assets that were previously OBSOLETE, or for goals of UNWANTED.", + "Purely transient states, that will be reconciled to a final ## state at some point. The client is not happy with the state of an asset, and wants to get it regenerated.", + "The asset has been produced in the past, but is not needed anymore. We'll try to delete it shortly.", + "The asset is ready to be published but is waiting for other assets in its group. This state is between MISSING/DIRTY and DONE.", + "RESERVED. This state is deprecated." + ], + "type": "string" + }, + "timestamp": { + "description": "Timestamp of start of preview in ms.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "LINT.IfChange", + "enum": [ + "VPREVIEW_TYPE_8K", + "VPREVIEW_TYPE_30K", + "VPREVIEW_TYPE_90K", + "VPREVIEW_TYPE_300K_24FPS", + "VPREVIEW_TYPE_VERTICAL_30K", + "VPREVIEW_TYPE_VERTICAL_90K", + "VPREVIEW_TYPE_540K_ORIGINAL_HQ_LICENSED", + "VPREVIEW_TYPE_90K_SPORT_HIGHLIGHT", + "VPREVIEW_TENOR_250K_PREVIEW", + "VPREVIEW_TENOR_100K_OPTIMIZED_PREVIEW", + "VPREVIEW_TENOR_30K_OPTIMIZED_THUMBNAIL_PREVIEW", + "VPREVIEW_TENOR_45K_OPTIMIZED_90P_PREVIEW", + "VPREVIEW_TENOR_50K_OPTIMIZED_100P_PREVIEW", + "VPREVIEW_TENOR_100K_OPTIMIZED_200P_PREVIEW", + "VPREVIEW_TENOR_50K_OPTIMIZED_100W_PREVIEW", + "VPREVIEW_TENOR_100K_OPTIMIZED_200W_PREVIEW", + "VPREVIEW_TENOR_250K_MEDIUM_PREVIEW", + "VPREVIEW_TENOR_250K_TINY_VIDEO_PREVIEW", + "VPREVIEW_TENOR_250K_NANO_VIDEO_PREVIEW", + "VPREVIEW_TENOR_100K_PREVIEW_MP4", + "VPREVIEW_TENOR_250K_MP4", + "VPREVIEW_TENOR_250K_MP4_AV", + "VPREVIEW_TENOR_160K_TINY_MP4", + "VPREVIEW_TENOR_75K_NANO_MP4", + "VPREVIEW_TENOR_50K_FIXED_100P_MP4", + "VPREVIEW_TENOR_100K_FIXED_200P_MP4", + "VPREVIEW_TENOR_50K_FIXED_100W_MP4", + "VPREVIEW_TENOR_100K_FIXED_200W_MP4" + ], + "enumDescriptions": [ + "This corresponds to 128x72, 10fps.", + "This corresponds to 256x144, 10fps.", + "This corresponds to 384x216, 10fps.", + "This corresponds to 640x360, 24fps.", + "This corresponds to 144x256, 10fps.", + "This corresponds to 216x384, 10fps.", + "This corresponds to 854x480, 24fps. This preview type is used for LMS videos only.", + "This corresponds to 384x216, 10fps previews created with a Sport Highlight specific model. LINT.ThenChange( //depot/google3/video/pipeline/graph/sequences/mp4_moving_thumbnail.go )", + "LINT.IfChange Tenor VPREIVEW is added by cl/237845543 (billzeng) This corresponds to 498*498, max 18fps. Preview for Tenor only.", + "This corresponds to 220*498, max 18fps. Preview for Tenor only.", + "This corresponds to 498*60, max 18fps. Preview for Tenor only.", + "This corresponds to 498*90, max 18fps. Preview for Tenor only.", + "This corresponds to 498*100, max 18fps. Preview for Tenor only.", + "This corresponds to 498*200, max 18fps. Preview for Tenor only.", + "This corresponds to 100*498, max 18fps. Preview for Tenor only.", + "This corresponds to 200*498, max 18fps. Preview for Tenor only.", + "This corresponds to 498*498, max 18fps. Preview for Tenor only.", + "This corresponds to 498*498, max 18fps. Preview for Tenor only.", + "This corresponds to 498*498, max 18fps. Preview for Tenor only.", + "This corresponds to 498*200, max 10fps. Preview for Tenor only.", + "This corresponds to 498*498 max 10fps. Preview for Tenor only.", + "This corresponds to 498*498, max 10fps. Preview for Tenor only.", + "This corresponds to 320*498, max 10fps. Preview for Tenor only.", + "This corresponds to 150*498, max 10fps. Preview for Tenor only.", + "This corresponds to 498*100, max 10fps. Preview for Tenor only.", + "This corresponds to 498*200, max 10fps. Preview for Tenor only.", + "This corresponds to 100*498, max 10fps. Preview for Tenor only.", + "This corresponds to 200*498, max 10fps. Preview for Tenor only. LINT.ThenChange( //depot/google3/image/tenor/eleven/util/format_helpers.cc, //depot/google3/image/tenor/eleven/util/format_helpers_test.cc, //depot/google3/image/tenor/ps1/plugin/data_processing/service/util/transcode_type_translator.cc:preview_type_map, )" + ], + "type": "string" + }, + "width": { + "description": "Width of the stored preview.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageContentFlowProtoProd": { + "description": "The subset of FlowProto that we want to go into production AND be stored in ContentSignals.", + "id": "ImageContentFlowProtoProd", + "properties": { + "starburst": { + "description": "Repeated so that multiple versions can exist in prod simultaneously.", + "items": { + "$ref": "ImageContentStarburstVersionGroup" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageContentQueryBoost": { + "description": "Image content based multipliers. Current usage is in the pamir_section.", + "id": "ImageContentQueryBoost", + "properties": { + "queryboost": { + "items": { + "$ref": "ImageContentQueryBoostQueryBoost" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageContentQueryBoostQueryBoost": { + "id": "ImageContentQueryBoostQueryBoost", + "properties": { + "boost": { + "description": "Score multiplier (fully normalized 1 is nop).", + "format": "float", + "type": "number" + }, + "query": { + "description": "Canonicalized query string.", + "type": "string" + } + }, + "type": "object" + }, + "ImageContentStarburstVersionGroup": { + "id": "ImageContentStarburstVersionGroup", + "properties": { + "descriptorFloat": { + "description": "Raw dense float feature vector.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "descriptorShort": { + "description": "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).", + "format": "byte", + "type": "string" + }, + "enumVersion": { + "enum": [ + "UNKNOWN_VERSION", + "STARBURST_V1", + "STARBURST_V2", + "STARBURST_V3", + "STARBURST_V4", + "STARBURST_VISUAL_V4", + "STARBURST_V5" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "minorVersion": { + "enum": [ + "UNKNOWN_MINOR_VERSION", + "V3_ORIGINAL", + "V3_ENET_EMULATED", + "V3_FNET_EMULATED", + "V3_STARBURST_LITE", + "V4_ORIGINAL", + "V4_STRETCH_RESIZE", + "VISUAL_V4_ORIGINAL", + "V5_ORIGINAL" + ], + "enumDescriptions": [ + "", + "Minor versions for Starburst V3, used to distinguish the original and different emulated versions. See go/starburst-v3-emulation for detail.", + "", + "", + "", + "Minor versions for Starburst V4.", + "V4 with stretch resize, instead of cropping. See b/154565902.", + "Minor versions for Starburst Visual V4.", + "Minor version for Starburst V5." + ], + "type": "string" + }, + "starburstTokens": { + "description": "Starburst tokens.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "version": { + "description": "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.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageData": { + "description": "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: 127", + "id": "ImageData", + "properties": { + "adaboostImageFeaturePorn": { + "description": "Warning: adaboost_image_feature_porn* and imageFeaturePorn fields are DEPRECATED in favor of brain_porn_scores. Please do not use them. Contact safesearch@ for transition advice.", + "format": "float", + "type": "number" + }, + "adaboostImageFeaturePornMinorVersion": { + "format": "int32", + "type": "integer" + }, + "adaboostImageFeaturePornVersion": { + "format": "int32", + "type": "integer" + }, + "animatedImageData": { + "$ref": "ImageRepositoryAnimatedImagePerdocData", + "description": "Present for animated images only: additional animatated image perdoc data." + }, + "brainPornScores": { + "$ref": "ImageSafesearchContentBrainPornAnnotation", + "description": "A [0..1] SafeSearch scores based on image pixels, using Google Brain: porn, csai, violence, medical, and spoof. For porn only, if available prefer final_porn_score as it should be more precise than brain_porn_scores.porn_score." + }, + "brainPornScoresVersion": { + "description": "A string that indicates the version of SafeSearch classifier used to compute brain_porn_scores.", + "type": "string" + }, + "canonicalDocid": { + "description": "This is the image docid used in image search. For ImageData protos coming from Alexandria/Freshdocs, this is a 'required' field that MUST be populated.", + "format": "uint64", + "type": "string" + }, + "clickMagnetScore": { + "description": "A score in (0, 1] to indicate how likely this image is considered as a click magnet based on clicks received from bad queries.", + "format": "float", + "type": "number" + }, + "clipartDetectorScore": { + "description": "Image content based classifier scores.", + "format": "float", + "type": "number" + }, + "clipartDetectorVersion": { + "format": "int32", + "type": "integer" + }, + "codomainStrength": { + "description": "Like is_visible, this is a property of the (web-doc, img_url) pair not just the image. A high codomain_strength indicates high confidence based on collected stats that the image is hosted on a companion domain. If not enough stats are available for codomain strength, this field may be absent in ImageData, and hence the CompositeDoc. Do not place negative values here. Permitted values range between 0 and image_quality_codomain::kMaxCodomainStrength defined in //image/quality/codomain/codomain-stats-utils.h.", + "format": "int32", + "type": "integer" + }, + "colorScore": { + "description": "Colorness scores for the image. Each score represents the amount of a particular color in the image. At the current time, there are 12 colors, so there should always be 0 or 12 values in this array. The 12 colors are black, blue, brown, gray, green, orange, pink, purple, red, teal, white, yellow. The convention is that the scores are stored in alphabetical order, so the first score is black, and the last score is yellow.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "colorScoreVersion": { + "format": "int32", + "type": "integer" + }, + "coloredPixelsFrac": { + "description": "Fraction of the image that contains pixels over a certain saturation threshold: can be used to determine if the image is grayscale or not.", + "format": "float", + "type": "number" + }, + "contentFirstCrawlTime": { + "description": "Earliest known crawl time among all neardups of this image (go/imagecontentage).", + "format": "int32", + "type": "integer" + }, + "corpusSelectionInfo": { + "description": "Corpus scoring info for images indexed through Amarna.", + "items": { + "$ref": "CorpusSelectionInfo" + }, + "type": "array" + }, + "crops": { + "$ref": "ContentAwareCropsIndexing", + "description": "The content-aware cropping information." + }, + "deepCrop": { + "$ref": "DeepCropIndexing", + "description": "DeepCrop based cropping information. See go/creatism/deepcrop for details." + }, + "deepTags": { + "$ref": "CommerceDatastoreImageDeepTags", + "description": "VSS generated deep tags for shopping images." + }, + "docid": { + "description": "fingerprint(non-canonicalized absolute image url) This is *not* the image docid. Use canonical_docid instead. For ImageData protos coming from Alexandria/Freshdocs, this is a 'required' field that MUST be populated. But once again, this is very likely NOT something you need. Use canonical_docid instead.", + "format": "uint64", + "type": "string" + }, + "embeddedMetadata": { + "$ref": "ImageExifImageEmbeddedMetadata", + "description": "the EXIF/IPTC metadata" + }, + "expirationTimestamp": { + "description": "The thumbnail is guaranteed to be kept in the serving system until the expiration timestamp has passed, in microseconds.", + "format": "int64", + "type": "string" + }, + "extendedExif": { + "$ref": "PhotosImageMetadata", + "description": "The EXIF generated by photos backend team's (more specifically FIFE's) thumbnailer library. This exif model is more comprehensive since a dedicated team is constantly improving it and adding new fields over time. This is currently populated by moonshine for selected corpora." + }, + "featuredImageProp": { + "$ref": "ImageMonetizationFeaturedImageProperties", + "description": "Properties used in featured imagesearch project. inspiration_score indicates how well an image is related to products, or how inspirational it is." + }, + "fileFormat": { + "description": "True file format (not extension).", + "enum": [ + "FF_INVALID", + "FF_JPG", + "FF_GIF", + "FF_PNG", + "FF_BMP", + "FF_SVG", + "FF_WEBP", + "FF_ICO", + "FF_CRAW", + "FF_HEIF" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "finalPornScore": { + "description": "A [0..1] porn score based on some image-level features (like content score, referrer statistics, navboost queries, etc.). See class RiflePornScorer for more details.", + "format": "float", + "type": "number" + }, + "finalPornScoreVersion": { + "description": "A string that indicates the version of SafeSearch classifier used to compute final_porn_score.", + "type": "string" + }, + "firstCrawlTime": { + "description": "Earliest known timestamp about this image. Today, this is the timestamp when the content key was generated for this image. The time is in seconds.", + "format": "int32", + "type": "integer" + }, + "firstTimeSeenOnDocSec": { + "description": "The first time this image URL was seen on the containing web page. Only set during web indexing.", + "format": "int32", + "type": "integer" + }, + "flags": { + "description": "Use image_perdoc.h to read/write 'flags'.", + "format": "int32", + "type": "integer" + }, + "flowOutput": { + "$ref": "ImageContentFlowProtoProd", + "description": "The output of various features generated by the Flow framework, most importantly data from Starburst (go/starburst). Do NOT interact with the internals of this proto since they may change over time. Instead, use the existing interfaces that consume FlowProtoProd's directly, e.g., image/mustang/content/image_content_distance.h For more info, please contact image-content-core@." + }, + "h2c": { + "format": "float", + "type": "number" + }, + "h2i": { + "description": "'Hovers to Impressions' and 'Hovers to Clicks' ratios for an image.", + "format": "float", + "type": "number" + }, + "hateLogoDetection": { + "$ref": "ImageUnderstandingIndexingAnnotationGroup", + "description": "Hate logo detections from the VSS logo_recognition module." + }, + "height": { + "description": "Height", + "format": "int32", + "type": "integer" + }, + "imageContentQueryBoost": { + "$ref": "ImageContentQueryBoost", + "description": "Image Content Scored per query boosts. Currently this is filled by the pamir algorithm and populates the pamir_section." + }, + "imageExactBoost": { + "$ref": "ImageExactBoost", + "description": "A set of query fingerprints and confidence scores. There queries are supposed to be relevant to the image with high confidence." + }, + "imageLicenseInfo": { + "$ref": "ImageSearchImageLicenseInfo", + "description": "Indicates license info of this image, which will tell image search users how to use this image legally." + }, + "imageRegions": { + "$ref": "ImageRegionsImageRegions", + "description": "Regions detected within the image (go/images-region-search-edd). Regions contain bounding boxes circumscribing objects of interest in the image, along with object labels. Regions may overlap." + }, + "imagerank": { + "format": "int32", + "type": "integer" + }, + "isIipInScope": { + "description": "IIP in scope signal (go/iip). Set to true if the image is annotated with any iip_in_scope entities (go/iukp-trust-v2).", + "type": "boolean" + }, + "isIndexedByImagesearch": { + "description": "If this image was not selected for indexing by imagesearch, these fields say so and explain why.", + "type": "boolean" + }, + "isMultiframe": { + "description": "True if the original image contains multiple frames (e.g., for animated or stereoscopic images).", + "type": "boolean" + }, + "isUnwantedContent": { + "description": "Field to indicate the image is unwanted for search index. The data is propagated from amarna to alexandria to be annotated in the cdoc. Refer to image/repository/proto/unwanted_content.proto for more info.", + "type": "boolean" + }, + "isVisible": { + "description": "True if the image is inlined on the page (typicially via ) or false if the image is linked to (via an href).", + "type": "boolean" + }, + "largestFaceFrac": { + "description": "Fraction of image covered by the largest face (should match largestFaceFraction, but without scaling). In perdocs, is set only if numberFaces \u003e 0.", + "format": "float", + "type": "number" + }, + "largestFaceFraction": { + "description": "Fraction of image covered by the largest face, scaled by 1000. Warning: Is DEPRECATED in favor of largest_face_frac. Do not use.", + "format": "int32", + "type": "integer" + }, + "lastCrawlTime": { + "description": "Most recent timestamp in seconds when this URL was crawled.", + "format": "int32", + "type": "integer" + }, + "licensedWebImagesOptInState": { + "description": "Indicates the web-master opt-in state of this image, and will be used for Google products to decide usage rights like showing large previews.", + "enum": [ + "IMAGES_OPTIN_NONE", + "IMAGES_OPTIN_FULL", + "PAGE_SNIPPET_CONTROL_SIZE_NONE", + "PAGE_SNIPPET_CONTROL_SIZE_STANDARD", + "PAGE_SNIPPET_CONTROL_SIZE_LARGE", + "IMAGE_TAG_SNIPPET_CONTROL_SIZE_NONE", + "IMAGE_TAG_SNIPPET_CONTROL_SIZE_STANDARD", + "IMAGE_TAG_SNIPPET_CONTROL_SIZE_LARGE" + ], + "enumDescriptions": [ + "DEFAULT", + "", + "Followings are extracted from page snippet restriction. Publisher explicitly requires a no-image treatment.", + "Translates to 50k pixels.", + "Translates to 300k pixels.", + "Followings are extracted from per image tag snippet restriction. Publisher explicitly requires a no-image treatment.", + "Translates to 50k pixels.", + "Translates to 300k pixels." + ], + "type": "string" + }, + "lineartDetectorScore": { + "format": "float", + "type": "number" + }, + "lineartDetectorVersion": { + "format": "int32", + "type": "integer" + }, + "multibangKgEntities": { + "$ref": "ImageDataMultibangEntities" + }, + "nearDupFeatures": { + "format": "byte", + "type": "string" + }, + "nearDupFeaturesSmall": { + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "nearDupFeaturesSmallVersion": { + "description": "The following fields contain information about a smaller and less powerful version of the hash, needed for neardup retrieval. A compressed and an encoded version of the small hash are stored below. The smaller hash may have a few variants to increase recall. NOTE: This hash is generated by V2 hash computation. A compressed version of the small hash. Currently, a 4-byte fingerprint.", + "format": "int32", + "type": "integer" + }, + "nearDupFeaturesVersion": { + "description": "Image content derived data used for finding image near dups. NOTE: This hash is generated by V1 hash computation.", + "format": "int32", + "type": "integer" + }, + "nimaAva": { + "$ref": "ImageRepositoryNimaOutput", + "description": "Productionized Nima AVA score. Both this field and nima_vq were added on the top of nima_ava_score and nima_vq_score because the signals are already integrated with Batch Amarna in image/repository/schema/global_output_tags.h using NimaOutput." + }, + "nimaVq": { + "$ref": "ImageRepositoryNimaOutput", + "description": "Productionized Nima VQ score." + }, + "noIndexReason": { + "items": { + "enum": [ + "NO_INDEX_IMAGE_URL_NOT_SELECTED", + "NO_INDEX_REFERRER_URL_NOT_SELECTED", + "NO_INDEX_X_RAW_IMAGE", + "NO_INDEX_FAVICON", + "NO_INDEX_DETECTED_VIA_CONTENT", + "NO_INDEX_EXTERNAL_VIDEO_THUMBNAIL", + "NO_INDEX_ONSITE_ANCHOR", + "NO_INDEX_RSS_FEED", + "NO_INDEX_REJECTED_BY_IMAGE_SELECTION", + "NO_INDEX_EXPIRED_THUMBNAIL", + "NO_INDEX_REJECTED_BY_IMAGE_SELECTION_V1", + "NO_INDEX_REJECTED_BY_PYTHIA", + "NO_INDEX_EMPTY_THUMBNAIL" + ], + "enumDescriptions": [ + "", + "", + "This enum is set during the transition period for enabling raw image support in image search where we can use the indexing pipeline but UI for presentation is unavailable.", + "This enum is set if the image was extracted as a favicon on the page, and was not gathered from the page for any other reason.", + "This enum is set if the image was detected via its content and was not gathered from the page for any other reason. That is it was added to the image_links_from_content column in the document table.", + "This enum is set if the image is an external video thumbnail from an off-page source such as image anchors.", + "This enum is set if the image is from an on-page anchor.", + "This enum is set if the image is detected from an rss feed.", + "This enum is set if the image was normally selected by imagesearch for indexing, but didn't meet the quality threshold for Image Selection.", + "This enum is set if the image has expired thumbnails or no expiration timestamp is specified.", + "This enum is set if the image was normally selected by imagesearch for indexing, but didn't meet the quality threshold for heuristic image selection (a legacy system, ariane/171870).", + "This enum is set if the image was normally selected by imagesearch for indexing, but didn't meet the quality threshold for image Selection v2 (aka Pythia). See go/image-selection for details.", + "This enum is set if the image has no thumbnails fields found." + ], + "type": "string" + }, + "type": "array" + }, + "numberFaces": { + "description": "Number of faces detected in the image", + "format": "int32", + "type": "integer" + }, + "ocrGoodoc": { + "$ref": "GoodocDocument", + "description": "Pruned OCR Goodoc see vss_aksara_ocr_util.h for the fields copied." + }, + "ocrTaser": { + "$ref": "GoodocDocument", + "description": "Ocr detected by ocr_taser module." + }, + "ocrTextboxes": { + "description": "Text lines detected by OCR engine.", + "items": { + "$ref": "OcrPhotoTextBox" + }, + "type": "array" + }, + "onPageAlternateUrl": { + "description": "For an image not explicitly visible on this page, the following url is the one which most closely matches it.", + "type": "string" + }, + "packedFullFaceInfo": { + "$ref": "FaceIndexing", + "description": "Encodes face number and largest face frac into a small package for storage in mustang. This is calculated directly from FaceDetectionResult." + }, + "personAttributes": { + "$ref": "LensDiscoveryStylePersonAttributes", + "description": "Contains person attributes from the LookNet-Person model and the Style AI Iconic Person Scorer for the most iconic person in a style image." + }, + "personDetectionSignals": { + "$ref": "LensDiscoveryStylePersonDetectionSignals", + "description": "Contains person detection result." + }, + "photoDetectorScore": { + "format": "float", + "type": "number" + }, + "photoDetectorVersion": { + "format": "int32", + "type": "integer" + }, + "pornFlagData": { + "$ref": "PornFlagData", + "description": "Used by the segindexer for combined www+image indices." + }, + "precomputedRestricts": { + "$ref": "PrecomputedRestricts", + "description": "Restricts computed before building a Mustang index." + }, + "rankInNeardupCluster": { + "description": "Rank in near-dup cluster (go/image-rank-in-neardup-cluster). The rank is 1-indexed: rank 1 is the best.", + "format": "int32", + "type": "integer" + }, + "restrictStrings": { + "description": "A string representation of all the restricts associated with this image.", + "items": { + "type": "string" + }, + "type": "array" + }, + "robotedAgents": { + "description": "CSV list of user agents for which this image should be considered roboted. Note: All images are crawled using googlebot-images, this exists for clients that require additional restrictions beyond googlebot-images such as news.", + "type": "string" + }, + "shoppingProductInformation": { + "$ref": "ImageRepositoryShoppingProductInformation", + "description": "The Shoppable Images product information to be annotated in the Cdoc. All fields will be populated except the product location bounding box." + }, + "size": { + "description": "Size in bytes of original (non-thumbnail)", + "format": "int32", + "type": "integer" + }, + "smearedTopWebLandingPageDocids": { + "description": "Web docids that correspond to high ranked smeared landing pages for this image. Used for conditional retrieval of actionable landing pages for image search.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "smearedTopWebLandingPages": { + "items": { + "$ref": "SmearedWebLandingPageEntry" + }, + "type": "array" + }, + "styleAestheticsScore": { + "$ref": "LensDiscoveryStyleAestheticsScoreSignals", + "description": "Aesthetics score of a style image." + }, + "styleImageType": { + "$ref": "LensDiscoveryStyleStyleImageTypeSignals", + "description": "Prediction of a style image type: Stage, Stock, Street or Outfits." + }, + "testingScore": { + "description": "This field is for testing purposes, more information in go/media-dirt-2022.", + "format": "int32", + "type": "integer" + }, + "thumbHeight": { + "format": "int32", + "type": "integer" + }, + "thumbSize": { + "format": "int32", + "type": "integer" + }, + "thumbWidth": { + "description": "Thumbnail width.", + "format": "int32", + "type": "integer" + }, + "thumbnail": { + "items": { + "$ref": "ImageDataThumbnail" + }, + "type": "array" + }, + "unavailableAfterSecs": { + "description": "Time in seconds since epoch after which this image should be considered unavailable.", + "format": "int64", + "type": "string" + }, + "url": { + "description": "Canonicalized absolute image url.", + "type": "string" + }, + "whiteBackgroundScore": { + "format": "float", + "type": "number" + }, + "whiteBackgroundScoreVersion": { + "description": "Image is likely an object on a white background (value on [0,1]).", + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageDataMultibangEntities": { + "description": "Multibang kg entities.", + "id": "ImageDataMultibangEntities", + "properties": { + "entity": { + "items": { + "$ref": "ImageDataMultibangEntitiesMultibangEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageDataMultibangEntitiesMultibangEntity": { + "id": "ImageDataMultibangEntitiesMultibangEntity", + "properties": { + "entityId": { + "description": "Entity ID.", + "type": "string" + }, + "score": { + "description": "Multibang score.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageDataThumbnail": { + "id": "ImageDataThumbnail", + "properties": { + "expirationTimestampMicros": { + "description": "The thumbnail is guaranteed to be kept in the serving system until the expiration timestamp has passed, in microseconds.", + "format": "int64", + "type": "string" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "mimeType": { + "type": "string" + }, + "size": { + "format": "int32", + "type": "integer" + }, + "type": { + "enum": [ + "THUMBNAIL_TYPE_DEFAULT", + "THUMBNAIL_TYPE_AREA_50K", + "THUMBNAIL_TYPE_400", + "THUMBNAIL_TYPE_800", + "THUMBNAIL_TYPE_ORIGINAL", + "THUMBNAIL_TYPE_ORIGINAL_HQ", + "THUMBNAIL_TYPE_FAVICON_16", + "THUMBNAIL_TYPE_FAVICON_32", + "THUMBNAIL_TYPE_FAVICON_64", + "THUMBNAIL_TYPE_FAVICON_ORIGINAL", + "THUMBNAIL_TYPE_FAVICON_16_DARK", + "THUMBNAIL_TYPE_FAVICON_32_DARK", + "THUMBNAIL_TYPE_FAVICON_64_DARK", + "THUMBNAIL_TYPE_FAVICON_ORIGINAL_DARK", + "THUMBNAIL_TYPE_1080", + "THUMBNAIL_TYPE_1600_HQ", + "THUMBNAIL_TYPE_AREA_300K", + "THUMBNAIL_TYPE_AREA_50K_ALPHA", + "THUMBNAIL_TYPE_AREA_50K_SYNTHETIC_ALPHA", + "THUMBNAIL_TYPE_AREA_2M", + "THUMBNAIL_TYPE_AREA_2M_METADATA", + "THUMBNAIL_TYPE_800_ALPHA_WHITE", + "THUMBNAIL_TYPE_ORIGINAL_ALPHA_WHITE", + "THUMBNAIL_TYPE_ANIMATED_H144", + "THUMBNAIL_TYPE_ORIGINAL_HQ_LICENSED", + "THUMBNAIL_TYPE_TENOR_250K_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_GIF", + "THUMBNAIL_TYPE_TENOR_30K_OPTIMIZED_THUMBNAIL_GIF", + "THUMBNAIL_TYPE_TENOR_45K_OPTIMIZED_90P_GIF", + "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100P_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200P_GIF", + "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100W_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200W_GIF", + "THUMBNAIL_TYPE_TENOR_45K_PREVIEW_GIF", + "THUMBNAIL_TYPE_TENOR_250K_MEDIUM_GIF", + "THUMBNAIL_TYPE_AREA_2M_WEBP", + "THUMBNAIL_TYPE_AREA_2M_WEBP_METADATA", + "THUMBNAIL_TYPE_AREA_2M_AVIF", + "THUMBNAIL_TYPE_AREA_2M_AVIF_METADATA", + "THUMBNAIL_TYPE_AREA_50K_WEBP", + "THUMBNAIL_TYPE_AREA_50K_AVIF", + "THUMBNAIL_TYPE_ORIGINAL_HQ_KG" + ], + "enumDescriptions": [ + "DEPRECATED - use THUMBNAIL_TYPE_AREA_50K if possible. The default thumbnail type is deprecated and no longer served by SFFE. For legacy users (e.g. imagesearch heirloom UI) you must request a downsized THUMBNAIL_TYPE_AREA_50K thumbnail.", + "This is the most common thumbnail type, used in image search results. It is defined to have 50625 pixels (= 225 x 225).", + "This refers to a thumbnail that fits in a 400x400 box.", + "This refers to a thumbnail that fits in a 800x800 box.", + "This refers to re-encoding original image to JPEG at the same size (up to 10000x10000). Output quality may be lower.", + "Re-encode image at the same size as original (up to 10000x10000) but with high-quality (q=90). This was introduced by TYPHOON client and is expected only for very few images in our table (under 10k). If you plan to use this contact amarna-dev@ and/or crt@", + "These refer to favicon thumbnails of 16x16, 32x32 or 64x64. If the original image is an ico file containing multiple embedded images including 16x16, 32x32 or 64x64, these thumbnails are derived from the embedded image of the corresponding size. (If no such embedded image is found, prefer the closest size that's larger. If still no such size exists, prefer largest.) If no such size exists, these thumbnails are rescaled to an image whose maximum dimension is 16, 32 or 64.", + "", + "", + "This type of favicon will preserve the size of the original image.", + "These refer to favicon thumbnails for dark mode. This triggers dark mode on the SVG decoding (and otherwise, the same as the above favicon types)", + "", + "", + "", + "This refers to a thumbnail that fits in a 1080x1080 box.", + "This refers to a thumbnail that fits in a 1600x1600 box and is encoded with high-quality (q=90). Contact amarna-dev@/crt@/bingwang@ for using it.", + "This uses the same MaxAreaSizer as THUMBNAIL_TYPE_AREA_50K. The exact area is defined to be 307200 (= 640 x 480).", + "This is like THUMBNAIL_TYPE_AREA_50K, but with an alpha channel.", + "DEPRECATED - Please do not introduce new requests for this type. It will be eliminated soon. Until then, it will behave like the AREA_50K_ALPHA type -- use that instead.", + "This refers to a thumbnail with at most 2073600 pixels (=1920*1080). The image will be scaled down to 2M while preserving the aspect ratio if it's too large. If the thumbnail is in JPEG format, it is encoded with quality = 85. Besides, it supports alpha channel by default and does not convert lossless formats to JPEG.", + "Similar to THUMBNAIL_TYPE_AREA_2M, but with the source image metadata propagated.", + "In alpha-white thumbs, colors are remapped in RGBA to be more transparent the closer they are to white. This is for use with white-background images, so that the perceived background color can be darkened by rendering over gray. See go/alpha-white-thumbs for details and limitations. Sizing matches non-ALPHA_WHITE equivalents.", + "", + "Height-scaled animated thumb types, encoded as H264 previews. Suffix gives height, e.g. _H144 indicates height 144. Width is a scaled multiple-of-8 value so the thumb has approximately the same aspect ratio as the original. For more info, see http://go/animated-thumbs.", + "New thumbnail type for licensed contents. From a thumbnail generation perspective this behaves similarly to THUMBNAIL_TYPE_ORIGINAL_HQ, but it exists as a separate thumbnail type to enable takedowns requested by owner. WARNING: This type is primarily used by go/licensed-media-service and is subject to policy changes. Please contact g/license-media-service-team before using.", + "Tenor gifs go/tenor-integration-binary-serving-discussion", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Similar to THUMBNAIL_TYPE_AREA_2M but pre-transcoded to WebP and AVIF format, as those two format can be slow to transcode in serving time. Currently only generated for AMP images. These two thumbnails are static images despite that their formats support animation.", + "Similar to THUMBNAIL_TYPE_AREA_2M_WEBP, but with the source image metadata propagated.", + "AVIF is not yet a supported input for SCS serving time thumbnailing, trying to do so will give errors.", + "Similar to THUMBNAIL_TYPE_AREA_2M_AVIF, but with the source image metadata propagated.", + "WebP format. Currently only generated for navboost images.", + "AVIF format. Currently only generated for navboost images.", + "WARNING: This type is dedicated to KG_IMAGE client. http://b/234653726" + ], + "type": "string" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageExactBoost": { + "id": "ImageExactBoost", + "properties": { + "navquery": { + "items": { + "$ref": "ImageExactBoostNavQuery" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageExactBoostNavQuery": { + "description": "Navboost query data.", + "id": "ImageExactBoostNavQuery", + "properties": { + "confidence": { + "description": "Associated confidence scores for the image for the query.", + "format": "int32", + "type": "integer" + }, + "imageClickRank": { + "description": "Click-based rank of the image for this query.", + "format": "int32", + "type": "integer" + }, + "navFp": { + "description": "Query fingerprint.", + "format": "uint64", + "type": "string" + }, + "navQuery": { + "description": "The normalized raw query text.", + "type": "string" + }, + "referrerDocid": { + "description": "List of all referrers, sorted by their rank (stored in Moosedog).", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "referrerRank": { + "description": "Rank of the current web doc referrer (stored in docjoins).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageExifIPTCMetadata": { + "description": "This proto holds IPTC metadata. http://www.iptc.org/cms/site/index.html?channel=CH0099 Proto field name is same with IPTC property name except which is clearly stated. Next Id: 63", + "id": "ImageExifIPTCMetadata", + "properties": { + "acquireLicensePage": { + "description": "Page URL about how to acquire this licensable image.", + "type": "string" + }, + "artwork": { + "items": { + "$ref": "ImageExifIPTCMetadataArtwork" + }, + "type": "array" + }, + "contactinfo": { + "$ref": "ImageExifIPTCMetadataContactInfo" + }, + "copyrightNotice": { + "type": "string" + }, + "creator": { + "description": "IPTC authorship \u0026 copyright related fields.", + "items": { + "type": "string" + }, + "type": "array" + }, + "creditLine": { + "type": "string" + }, + "dateCreated": { + "description": "Time (in seconds)", + "format": "int64", + "type": "string" + }, + "dateExpired": { + "format": "int64", + "type": "string" + }, + "dateReleased": { + "format": "int64", + "type": "string" + }, + "description": { + "type": "string" + }, + "event": { + "type": "string" + }, + "headline": { + "type": "string" + }, + "imageSupplier": { + "description": "PLUS field, not used.", + "type": "string" + }, + "instructions": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "licenseUrl": { + "description": "License URL about how to distribute the image.", + "type": "string" + }, + "location": { + "$ref": "ImageExifIPTCMetadataLocation" + }, + "locationCreated": { + "$ref": "ImageExifIPTCMetadataLocationInfo", + "description": "Location of the camera" + }, + "locationShown": { + "description": "Location shown on the image", + "items": { + "$ref": "ImageExifIPTCMetadataLocationInfo" + }, + "type": "array" + }, + "modelReleaseStatus": { + "enum": [ + "MR_UNKNOWN", + "MR_NONE", + "MR_NOT_APPLICABLE", + "MR_UNLIMITED", + "MR_LIMITED_OR_INCOMPLETE" + ], + "enumDescriptions": [ + "", + "http://ns.useplus.org/ldf/vocab/MR-NON", + "http://ns.useplus.org/ldf/vocab/MR-NAP", + "http://ns.useplus.org/ldf/vocab/MR-UMR", + "http://ns.useplus.org/ldf/vocab/MR-LMR" + ], + "type": "string" + }, + "propertyReleaseStatus": { + "enum": [ + "PR_UNKNOWN", + "PR_NONE", + "PR_NOT_APPLICABLE", + "PR_UNLIMITED", + "PR_LIMITED_OR_INCOMPLETE" + ], + "enumDescriptions": [ + "", + "http://ns.useplus.org/ldf/vocab/PR-NON", + "http://ns.useplus.org/ldf/vocab/PR-NAP", + "http://ns.useplus.org/ldf/vocab/PR-UPR", + "http://ns.useplus.org/ldf/vocab/PR-LPR" + ], + "type": "string" + }, + "rightsUsageTerms": { + "type": "string" + }, + "source": { + "type": "string" + }, + "supplementalCategories": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "description": "IPTC description related fields.", + "type": "string" + } + }, + "type": "object" + }, + "ImageExifIPTCMetadataArtwork": { + "description": "Artwork or Object in the Image Details", + "id": "ImageExifIPTCMetadataArtwork", + "properties": { + "title": { + "description": "Other fields omitted.", + "type": "string" + } + }, + "type": "object" + }, + "ImageExifIPTCMetadataContactInfo": { + "id": "ImageExifIPTCMetadataContactInfo", + "properties": { + "address": { + "type": "string" + }, + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "email": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "postalCode": { + "type": "string" + }, + "state": { + "type": "string" + }, + "webUrl": { + "type": "string" + } + }, + "type": "object" + }, + "ImageExifIPTCMetadataLocation": { + "description": "Location of the camera @deprecated: Use location_created instead.", + "id": "ImageExifIPTCMetadataLocation", + "properties": { + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "countryCode": { + "type": "string" + }, + "state": { + "type": "string" + }, + "subLocation": { + "type": "string" + }, + "worldRegion": { + "type": "string" + } + }, + "type": "object" + }, + "ImageExifIPTCMetadataLocationInfo": { + "id": "ImageExifIPTCMetadataLocationInfo", + "properties": { + "city": { + "type": "string" + }, + "country": { + "type": "string" + }, + "countryCode": { + "type": "string" + }, + "state": { + "type": "string" + }, + "subLocation": { + "type": "string" + }, + "worldRegion": { + "type": "string" + } + }, + "type": "object" + }, + "ImageExifImageEmbeddedMetadata": { + "description": "This class holds the EXIf/IPTC meta data Next Id: 104", + "id": "ImageExifImageEmbeddedMetadata", + "properties": { + "altitude": { + "format": "double", + "type": "number" + }, + "aperture": { + "format": "float", + "type": "number" + }, + "author": { + "description": "Text fields EXIF_TAG_ARTIST", + "type": "string" + }, + "author2": { + "description": "EXIF_TAG_XP_AUTHOR", + "type": "string" + }, + "brightness": { + "format": "float", + "type": "number" + }, + "cameraMaker": { + "description": "Device - Camera raw text without normalization", + "type": "string" + }, + "cameraModel": { + "description": "raw text without normalization", + "type": "string" + }, + "cameraSerialNumber": { + "description": "This is the extracted serial number from EXIF (the source depends on camera, most of the cameras store it in makers note tag).", + "type": "string" + }, + "captureTime": { + "description": "Capturing settings in time_t", + "format": "int64", + "type": "string" + }, + "colorSpace": { + "format": "int32", + "type": "integer" + }, + "comments": { + "description": "EXIF_TAG_USER_COMMENT", + "type": "string" + }, + "comments2": { + "description": "EXIF_TAG_XP_COMMENT", + "type": "string" + }, + "continousDriveMode": { + "type": "boolean" + }, + "copyright": { + "description": "EXIF_TAG_COPYRIGHT", + "type": "string" + }, + "deprecatedCity": { + "description": "Location from IPTC @deprecated: Use iptc.location instead.", + "type": "string" + }, + "deprecatedCountry": { + "type": "string" + }, + "deprecatedState": { + "type": "string" + }, + "description": { + "description": "EXIF_TAG_IMAGE_DESCRIPTION", + "type": "string" + }, + "destBearing": { + "format": "double", + "type": "number" + }, + "destBearingRef": { + "description": "Bearing and distance to destination point.", + "format": "double", + "type": "number" + }, + "destDistance": { + "format": "double", + "type": "number" + }, + "destLatitude": { + "description": "GPS location of destination point.", + "format": "double", + "type": "number" + }, + "destLongitude": { + "format": "double", + "type": "number" + }, + "digitalZoomRatio": { + "format": "float", + "type": "number" + }, + "exposureBias": { + "format": "float", + "type": "number" + }, + "exposureProgram": { + "description": "1-8, see EXIF definition", + "format": "int32", + "type": "integer" + }, + "exposureTime": { + "format": "float", + "type": "number" + }, + "flashUsed": { + "type": "boolean" + }, + "focalLength": { + "format": "float", + "type": "number" + }, + "focalLength35mm": { + "description": "convert to match 35mm film camera", + "format": "float", + "type": "number" + }, + "focalPlaneResUnit": { + "format": "int32", + "type": "integer" + }, + "focalPlaneXres": { + "format": "float", + "type": "number" + }, + "focusMode": { + "enum": [ + "MANUAL_FOCUS", + "AF_ONE_SHOT", + "AF_CONTINUOUS", + "AF_AUTO", + "OTHER_FOCUS" + ], + "enumDescriptions": [ + "", + "", + "", + "auto switch between AF_ONE_SHOT and AF_CONTINUOUS", + "" + ], + "type": "string" + }, + "gpsDop": { + "description": "Dilution of precision. HDOP/PDOP depends on measure mode. Find out more at http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)", + "format": "double", + "type": "number" + }, + "gpsMeasureMode": { + "enum": [ + "MEASURE_MODE_2D", + "MEASURE_MODE_3D" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "gpsStatus": { + "enum": [ + "GPS_STATUS_ACTIVE", + "GPS_STATUS_VOID" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "hPositioningError": { + "description": "in meters", + "format": "double", + "type": "number" + }, + "imageHeight": { + "format": "int32", + "type": "integer" + }, + "imageWidth": { + "format": "int32", + "type": "integer" + }, + "imgDirection": { + "description": "GPS Heading 0.00 to 359.99 degrees", + "format": "double", + "type": "number" + }, + "imgDirectionRef": { + "enum": [ + "DirectionRef_True", + "DirectionRef_Magnetic" + ], + "enumDescriptions": [ + "Indicates the reference for giving the direction of the image when it is captured.", + "" + ], + "type": "string" + }, + "iptc": { + "$ref": "ImageExifIPTCMetadata" + }, + "iso": { + "format": "int32", + "type": "integer" + }, + "keywords": { + "description": "EXIF_TAG_XP_KEYWORDS", + "type": "string" + }, + "latitude": { + "description": "GPS location +/- 90 inclusive", + "format": "double", + "type": "number" + }, + "lensId": { + "description": "Device - Lens We use this extended id to identify a lens uniquely. Canon: \"%d %d %d\"=.. Nikon: \"%.2X %.2X %.2X %.2X %.2X %.2X %.2X %.2X\" Don't change the format of the internal lens id because we use them to look up the lens names.", + "type": "string" + }, + "lensMaker": { + "type": "string" + }, + "lightSource": { + "format": "int32", + "type": "integer" + }, + "longFocal": { + "format": "int32", + "type": "integer" + }, + "longitude": { + "description": "+/- 180 inclusive", + "format": "double", + "type": "number" + }, + "maxApertureAtLongFocal": { + "format": "float", + "type": "number" + }, + "maxApertureAtShortFocal": { + "format": "float", + "type": "number" + }, + "meteringMode": { + "description": "1-6, see EXIF definition", + "format": "int32", + "type": "integer" + }, + "modificationTime": { + "description": "in time_t", + "format": "int64", + "type": "string" + }, + "orientation": { + "enum": [ + "ORIENTATION_0_DEG", + "ORIENTATION_MIRROR_0_DEG", + "ORIENTATION_180_DEG", + "ORIENTATION_MIRROR_180_DEG", + "ORIENTATION_MIRROR_270_DEG", + "ORIENTATION_90_DEG", + "ORIENTATION_MIRROR_90_DEG", + "ORIENTATION_270_DEG" + ], + "enumDescriptions": [ + "All rotations are clockwise. Rotations expressed are those required to place the image in the desired orientation. Note that the enum values here are not arbitrary; they are defined in the exif standard. Normal.", + "Mirror horizontally.", + "Rotate 180 degrees.", + "Mirror horizontally then rotate 180", + "(the same as mirror vertically). Mirror horizontally then rotate 270.", + "Rotate 90 degrees.", + "Mirror horizontally then rotate 90.", + "Rotate 270 degrees." + ], + "type": "string" + }, + "shortFocal": { + "format": "int32", + "type": "integer" + }, + "software": { + "description": "EXIF_TAG_SOFTWARE", + "type": "string" + }, + "subject": { + "description": "EXIF_TAG_XP_SUBJECT", + "type": "string" + }, + "subjectDistance": { + "format": "float", + "type": "number" + }, + "subjectLocationX": { + "format": "int32", + "type": "integer" + }, + "subjectLocationY": { + "format": "int32", + "type": "integer" + }, + "title": { + "description": "EXIF_TAG_XP_TITLE", + "type": "string" + }, + "xResolution": { + "description": "pixels per inch", + "format": "float", + "type": "number" + }, + "yResolution": { + "description": "pixels per inch", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageMonetizationFeaturedImageProperties": { + "id": "ImageMonetizationFeaturedImageProperties", + "properties": { + "inspirationScore": { + "description": "How an image is inspirational, [0, 1].", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageMoosedogCrawlState": { + "id": "ImageMoosedogCrawlState", + "properties": { + "code": { + "enum": [ + "VALID_IMAGE", + "INVALID_FETCH_REPLY", + "XROBOTED", + "URL_NOT_CRAWLED", + "PARSE_ERROR", + "INVALID_IMAGE", + "IMS_CRAWL_NOT_MODIFIED", + "EXPIRED_DISCOVERY_CRAWL", + "EXPIRED_FEED_CRAWL", + "EXPIRED_PRIORITY_FEED_CRAWL", + "INVALID_URL", + "VALID_VIDEO", + "VALID_SWF", + "VALID_SILVERLIGHT", + "INVALID_VIDEO", + "TRUNCATED_CONTENTS", + "FAST_CRAWL_LOCK_ACQUIRE_FAILED", + "FAST_CRAWL_TTL_EXPIRED" + ], + "enumDescriptions": [ + "", + "The crawl resulted in an invalid fetch reply. This means that fetchreply did not contain the url or the original crawl date inside it.", + "The url was xroboted.", + "Look at url not_crawled_reason for specific errors.", + "The url was successfully crawled but contained no valid image or video content.", + "The url was successfully crawled but was in a format not currently supported.", + "This was a referesh crawl and there was no modification that needs to be processesed.", + "This is a discovery url that webmirror discarded. Such urls need not be imported.", + "This is a feed url and webmirror expired it.", + "This is a feed url in one of the priority feeds and webmirror expired it.", + "The passed URL was not valid and could not be crawled.", + "This is a valid video, SWF, or Silverlight object.", + "", + "", + "This is an invalid video.", + "This is a large image or video, and only part of it has been fetched.", + "Temporary status for fast crawl failures.", + "" + ], + "type": "string" + }, + "detailedReason": { + "description": "Each of the above not_crawled_reason will have a set of detailed reason defined in crawler/trawler/trawler_enums.proto.", + "format": "int32", + "type": "integer" + }, + "internalStatus": { + "$ref": "UtilStatusProto", + "description": "The status returned when RPCs are used to internally fetch the image (eg. from FIFE)." + }, + "isTerminal": { + "description": "Specifies if the current crawl state is terminal.", + "type": "boolean" + }, + "noIndexAfterTimestamp": { + "description": "Time in seconds since epoch after which this image should be considered unavailable.", + "format": "int64", + "type": "string" + }, + "notCrawledReason": { + "enum": [ + "URL_CRAWLED", + "URL_ERROR", + "URL_ROBOTED", + "URL_UNREACHABLE", + "URL_TIMEOUT", + "URL_REJECTED", + "URL_NOT_FOLLOWED", + "NUM_STATE_TYPES" + ], + "enumDescriptions": [ + "", + "Error fetching; most commonly 404;", + "but many other possible reasons. Roboted out.", + "Fetch error; 5xx; truncated response; etc.", + "Timeout while fetching.", + "Rejected based on capacity or permissions.", + "Redirects/retries-related: we crawled something", + "*** don't forget to update." + ], + "type": "string" + }, + "overrodeTerminalState": { + "description": "When true, it means that a non-terminal state has overwrote a terminal one.", + "type": "boolean" + }, + "repid": { + "description": "The repid for the urls. This repid is the id given to the dupe cluster this url belongs to.", + "format": "byte", + "type": "string" + }, + "robotedAgents": { + "description": "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.", + "type": "string" + }, + "url": { + "description": "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.", + "type": "string" + }, + "urlDeleted": { + "description": "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.", + "type": "boolean" + } + }, + "type": "object" + }, + "ImageMustangImageLinkSelectionInfo": { + "description": "For detailed info, please see go/naive-image-selection", + "id": "ImageMustangImageLinkSelectionInfo", + "properties": { + "webRelevanceScore": { + "description": "score calculated in image selection phase, higher imagelink_selection_score more relevant the link is related to the web page", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "ImageMustangShoppingOffer": { + "description": "A proto buffer to organize shopping offer info from Inventory \u0026 Policy Service.", + "id": "ImageMustangShoppingOffer", + "properties": { + "inferredImageTypes": { + "items": { + "enum": [ + "UNKNOWN", + "MERCHANT_IMAGE", + "ML_INFERRED_IMAGE", + "NEARDUP_INFERRED_IMAGE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "ipsOfferId": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "ImagePerDocData": { + "id": "ImagePerDocData", + "properties": { + "DEPRECATEDEntropyColor": { + "description": "entropy and color values for thumbnail (4 bytes consisting of R, G, B and entropy values)", + "format": "uint32", + "type": "integer" + }, + "filename": { + "description": "about 10 bytes", + "type": "string" + }, + "flags": { + "description": "image_perdoc.h", + "format": "int32", + "type": "integer" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImagePornDebugInfo": { + "description": "Used to store debug information of the overall classifier.", + "id": "ImagePornDebugInfo", + "properties": { + "info": { + "type": "string" + } + }, + "type": "object" + }, + "ImageRegionsImageRegion": { + "description": "A single region within an image. NEXT_ID: 11", + "id": "ImageRegionsImageRegion", + "properties": { + "boundingBox": { + "$ref": "PhotosVisionGroundtruthdbNormalizedBoundingBox", + "description": "The bounding box of the region." + }, + "boundingBoxScore": { + "description": "The confidence score associated with the bounding box.", + "format": "float", + "type": "number" + }, + "id": { + "description": "A unique identifier for the region within the image. The id is unique only among other regions in the image.", + "type": "string" + }, + "isProduct": { + "description": "Set true if the region represents a product, i.e., if any of its labels are on a product labels whitelist. See ImageRegionsConfig for details on the product whitelist.", + "type": "boolean" + }, + "knnScore": { + "description": "The score for this region based on how visually similar its neighbors are.", + "format": "double", + "type": "number" + }, + "labelGroup": { + "$ref": "ImageUnderstandingIndexingLabelGroup", + "description": "The label group corresponding to the first LabelParams listed in ImageRegionsConfig." + }, + "labelVersion": { + "description": "The version string of the labels with which the region was processed.", + "type": "string" + }, + "primaryLabel": { + "$ref": "ImageUnderstandingIndexingLabel", + "description": "The primary label associated with the region. Specifically, the highest-scored whitelisted label associated with the region. See ImageRegionsConfig for details on the whitelist." + }, + "renderType": { + "enum": [ + "UNSET", + "DONT_RENDER", + "RENDER_ONLY_BOUNDING_BOX", + "RENDER_BOUNDING_BOX_AND_PRIMARY_LABEL" + ], + "enumDescriptions": [ + "", + "Do not render this region.", + "Render only the bounding box but not the primary label.", + "Render both the bounding box and the primary label." + ], + "type": "string" + }, + "starburstV4": { + "$ref": "ImageUnderstandingIndexingFeature", + "description": "The starburst v4 features and tokens for the region." + } + }, + "type": "object" + }, + "ImageRegionsImageRegions": { + "description": "An image with regions within it. NEXT_ID: 11", + "id": "ImageRegionsImageRegions", + "properties": { + "finalPornScore": { + "description": "The final_porn_score for the image.", + "format": "float", + "type": "number" + }, + "finalViolenceScore": { + "description": "The final_violence_score for the image.", + "format": "float", + "type": "number" + }, + "flowOutput": { + "$ref": "ImageContentFlowProtoProd", + "description": "The output of various features generated by the Flow framework, most importantly data from Starburst (go/starburst)." + }, + "has300kThumb": { + "description": "True if the image has a 300k thumb.", + "type": "boolean" + }, + "hasNavboost": { + "description": "True if the image has navboost.", + "type": "boolean" + }, + "isIuInappropriate": { + "description": "True if the image is iu-inappropriate.", + "type": "boolean" + }, + "pedoScore": { + "description": "The pedo_score of the image.", + "format": "float", + "type": "number" + }, + "precomputedRestricts": { + "$ref": "PrecomputedRestricts", + "description": "The precomputed restricts for the image." + }, + "racyScore": { + "description": "The racy_score of the image.", + "format": "float", + "type": "number" + }, + "region": { + "description": "The list of regions.", + "items": { + "$ref": "ImageRegionsImageRegion" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositoryAmarnaCloudSpeechSignals": { + "description": "Next Tag: 7", + "id": "ImageRepositoryAmarnaCloudSpeechSignals", + "properties": { + "langWithoutLocale": { + "description": "The language id input for creating this ASR without regional info. Same format as in go/ytlangid. This field is populated in Kronos Amarna Cloud Speech operator and passed to Amarna, but it is cleared before stored in Amarna's metadata table.", + "type": "string" + }, + "modelIdentifier": { + "description": "Identifying which ASR models are used for the result", + "type": "string" + }, + "results": { + "description": "Raw results from Cloud Speech API", + "items": { + "$ref": "ImageRepositorySpeechRecognitionResult" + }, + "type": "array" + }, + "transcriptAsr": { + "$ref": "PseudoVideoData", + "description": "This field contains full (stitched) transcription, word-level time offset , and word-level byte offset. The value of this field is derived from the SpeechRecognitionResult field above." + } + }, + "type": "object" + }, + "ImageRepositoryAmarnaSignalsBlob": { + "id": "ImageRepositoryAmarnaSignalsBlob", + "properties": { + "frameFeatures": { + "$ref": "DrishtiFeatureSetDataSequence" + } + }, + "type": "object" + }, + "ImageRepositoryAmarnaSignalsBlobInfo": { + "id": "ImageRepositoryAmarnaSignalsBlobInfo", + "properties": { + "signalsBlobId": { + "description": "Blob id for AmarnaSignalsBlob (see `Blob proto` section of go/revisit-frame-level-signals-amarna).", + "type": "string" + }, + "signalsBlobUpdateTimestamp": { + "description": "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).", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryAmarnaStatus": { + "description": "This message stores the status and reason why Amarna was unable to provide perdoc information for an image.", + "id": "ImageRepositoryAmarnaStatus", + "properties": { + "reason": { + "enum": [ + "NOT_REJECTED", + "INVALID_MEDIA", + "TERMINAL_CRAWL_ERROR", + "LOW_PRIORITY_REFERRER", + "REMOVED_BY_CLIENT_REQUEST", + "XROBOTED", + "CONTENT_PROCESSING_ERROR", + "MISSING_DOCID", + "ROBOTED", + "UNWANTED_CONTENT", + "NOT_A_VIDEO", + "INDEXING_DELAY" + ], + "enumDescriptions": [ + "The default reason for rejection.", + "The url was crawled successfully, but the content is not an image / video that Amarna can currently parse and index.", + "There was a permanent error crawling this url, other than xrobots.", + "The media item has too many urls associated with it and the priority of this media url is not high enough to be associated with the media item. As Amarna processes other requests it may force a previously associated url to be no longer associated with the item. In this case Amarna will send a message with this status asking the client to remove this url.", + "The url was removed by the client's request.", + "We successfully issued a crawl request to the host, and got roboted out.", + "Contents were crawled successfully, the content type is something Amarna is supposed to handle, processing was attempted, but media annotators failed to generate data for this content.", + "Fairly specific amarna internal consistency error: we last received a an expired feed crawl from this url, but never received the bytes and could not compute a docid..", + "Crawl was disallowed by robots.txt.", + "Deprecated. Don't reuse.", + "", + "" + ], + "type": "string" + }, + "status": { + "enum": [ + "READY", + "REJECTED", + "NOT_READY", + "DEPRECATED_3" + ], + "enumDescriptions": [ + "For media_type == IMAGE: The url was crawled successfully, and the content is of correct media type. Amarna has registered the interest of the corpus and has associated this url with the media item. A receipt of a message with this status will imply to the client that Amarna is ready to serve this media externally. This is the only case when docid will be set. For media_type == VIDEO: This status will be used in all cases except deletions, so Alexandria will always link the contained VideoProperties to the associated web CompositeDocs. This is necessary because the final video indexing decisions are made in Doc-Properties, where the only inputs are the CompositeDocs. For media_type == FAVICON: The url was crawled successfully, and the content is of correct media type. Amarna has registered the interest of the corpus and has associated this url with the media item. A receipt of a message with this status will imply to the client that Amarna is ready to serve this media externally. This is the only case when docid will be set.", + "For media_type == IMAGE: Corpus on receipt of this status should assume that Amarna has initiated a removal of this url and should prepare to delete it. For media_type == VIDEO: This status will be used for deletions, which occur when there are no longer any web pages associated with a video url. By using the REJECTED status, we instruct Alexandria to remove the VideoProperties from the video table. For media_type == FAVICON: Corpus on receipt of this status should assume that Amarna has initiated a removal of this url and should prepare to delete it.", + "For media_type == IMAGE: Media is not ready to be served yet. Amarna is still trying to crawl it. This will be sent only in the immediate mode API or when a MediaUpdate is requested via MediaUpdateRequest. For media_type == VIDEO: Not applicable. For media_type == FAVICON: Media is not ready to be served yet. Amarna is still trying to crawl it or generate thumbnails for it.", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryAnimatedImagePerdocData": { + "description": "Additional animated image data stored in perdoc (ImageData); will only be stored for animated images.", + "id": "ImageRepositoryAnimatedImagePerdocData", + "properties": { + "aggregatedPornScores": { + "$ref": "ImageSafesearchContentBrainPornAnnotation", + "description": "Aggregated porn scores for animated images. Aggregated using max sampling rate / max duration. Note the plan is to fold these scores into existing summarized scores, for cases where these scores are available. See tracking bug b/63580795." + }, + "durationMs": { + "description": "Total duration of animation, in ms.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageRepositoryApiItagSpecificMetadata": { + "description": "The metadata returned with each transcode. Next available field: 9", + "id": "ImageRepositoryApiItagSpecificMetadata", + "properties": { + "expirationTimestampSec": { + "description": "Timestamp (measured in seconds since epoch) after which Amarna will delete the serving transcode.", + "format": "int64", + "type": "string" + }, + "genus": { + "description": "The Venom Genus that this transcode was produced for.", + "enum": [ + "GENUS_UNKNOWN", + "GENUS_YT_HIGH_VALUE_CONTENT", + "GENUS_YT_USER_GENERATED_CONTENT", + "GENUS_GMAIL", + "GENUS_KIDS_HUB", + "GENUS_YOUTUBE_DIRECTOR", + "GENUS_DCLK_VIDEO_ADS", + "GENUS_DAI_PODCAST", + "GENUS_TESTING", + "GENUS_YT_UNPLUGGED_SVOD", + "GENUS_YT_UNPLUGGED_DVR", + "GENUS_HVC_INGESTION", + "GENUS_DRIVE", + "GENUS_YT_LIGHTWEIGHT_VIDEO", + "GENUS_ASK_QNA", + "GENUS_LOCAL_VIDEO", + "GENUS_PLAY_AUDIOBOOKS", + "GENUS_HANGOUTS_CHAT", + "GENUS_VIDEO_INTEREST_FEED", + "GENUS_YT_MUSIC", + "GENUS_RECORDER", + "GENUS_YT_ORIGINAL_CONTENT", + "GENUS_STAMP", + "GENUS_BULLETIN_AUDIO", + "GENUS_CRAWL", + "GENUS_PHOTOS", + "GENUS_MATERIAL_GALLERY", + "GENUS_YT_REFERENCE", + "GENUS_LENSLETS_VIDEOS", + "GENUS_BLOGGER", + "GENUS_PODCASTS", + "GENUS_OCEAN", + "GENUS_LMS", + "GENUS_WEB_VIDEO_ADS", + "GENUS_STUDIO", + "GENUS_YT_TDSD_REFERENCE", + "GENUS_WEB_STORY", + "GENUS_NEST_CAMERA_CLOUD", + "GENUS_AREA120_BLUEBIRD", + "GENUS_ARTS_AND_CULTURE", + "GENUS_DEMO", + "GENUS_KARTO", + "GENUS_CONTRIB_SERVICE_SHARED", + "GENUS_CONTRIB_SERVICE_GEO_UGC" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "Genus for Ad Manager Video Ads (formerly Doubleclick video ads).", + "Genus for DAI podcasts, part of Ad Manager Video Ads.", + "", + "Genera for Unplugged videos. GENUS_YT_UNPLUGGED_SVOD is for Unplugged SVOD contents. GENUS_YT_UNPLUGGED_DVR is for Unplugged DVR contents. Videos created with this genus will be stored in Blobstore (to make per-user clone), and will be removed after a certain period. Besides, we prefer no reruns for such videos.", + "", + "", + "", + "Also known as Stories, or Reels.", + "", + "Genus for local imagery aka Photo/Video On Maps, stored on Google Photos. Contact: local-imagery-team@.", + "", + "Genus for Hangouts Chat (Dynamite).", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Genus for 'A-' References; audio or video references that are not playable on YouTube, and only used as references for ContentID claiming.", + "", + "", + "Genus for Google Podcasts \u0026 Audio News.", + "Genus for Ocean / Play Books.", + "Genus for Licensed Media Service videos.", + "Genus for Web Video Ads.", + "Genus for RichMedia Studio.", + "Genus for TDSD references. These are not playable on YouTube, and are only used for generating ContentID fingerprints.", + "Genus for Kahani Web Stories.", + "Genus for Nest Camera Cloud.", + "Genus for Area120 Bluebird", + "Genus for Google Arts \u0026 Culture.", + "Genus for new Video Processing clients to do initial prototyping before they decide to formally onboard. go/venom-clients#demo-tier", + "Genus for Karto videos.", + "Shared genus for ContribService UGC videos for small clients requesting the same set of common signals. Large ContribService Video clients should have their own genera. go/user-owned-video-content-processing", + "Genus for GEO UGC videos processed by ContribService. go/venom-lite-for-geo-photo-videos" + ], + "type": "string" + }, + "state": { + "description": "Indicates the state in Venom for this transcode type.", + "enum": [ + "STATE_UNKNOWN", + "STATE_DONE", + "STATE_NOT_APPLICABLE", + "STATE_MISSING", + "STATE_DELETED", + "STATE_DIRTY", + "STATE_OBSOLETE", + "STATE_PENDING_PUBLICATION", + "STATE_FAILED" + ], + "enumDescriptions": [ + "", + "Final states (ie states in which we would stay ## unless the client revises the expectations) As far as the relevant service is concerned, the asset has been fully produced.", + "As far as the service is concerned, the asset should not be produced (say, HD for a SD input)", + "STATE_MISSING indicates the asset needs to be created. It is a transient state from STATE_DIRTY. It is also the final state if the asset failed to be created within its allowed number of retries.", + "The asset has been removed. This is the final state for assets that were previously OBSOLETE, or for goals of UNWANTED.", + "Purely transient states, that will be reconciled to a final ## state at some point. The client is not happy with the state of an asset, and wants to get it regenerated.", + "The asset has been produced in the past, but is not needed anymore. We'll try to delete it shortly.", + "The asset is ready to be published but is waiting for other assets in its group. This state is between MISSING/DIRTY and DONE.", + "RESERVED. This state is deprecated." + ], + "type": "string" + }, + "transcodeItag": { + "description": "transcode type which are available for the video.", + "format": "int32", + "type": "integer" + }, + "videoId": { + "$ref": "VideoAssetsVenomVideoId", + "description": "The Venom ID that this transcode was produced for." + }, + "xtagsList": { + "$ref": "ImageRepositoryApiXtagList", + "description": "Indicates xtags if present. Xtag makes the different transcode. For transcode \"MP4_AVCBASE640_AAC/af=sq\" (itag 18 with xtag), \"af=sq\" is the xtag part. This is a different transcode than \"MP4_AVCBASE640_AAC\" (itag 18)." + } + }, + "type": "object" + }, + "ImageRepositoryApiXtag": { + "id": "ImageRepositoryApiXtag", + "properties": { + "name": { + "description": "Names are all stored case-sensitive, and no case-folding is done for comparisons.", + "type": "string" + }, + "value": { + "description": "The value associated with this Xtag. Values are all stored case-sensitive, and no case-folding is done for comparisons.", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryApiXtagList": { + "description": "XtagList -- a collection of Xtag instances with unique names. This would be associated with one specific piece of content.", + "id": "ImageRepositoryApiXtagList", + "properties": { + "xtags": { + "items": { + "$ref": "ImageRepositoryApiXtag" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositoryContentBasedVideoMetadata": { + "description": "Next Tag: 48", + "id": "ImageRepositoryContentBasedVideoMetadata", + "properties": { + "amarnaDocid": { + "description": "A hash of the video bytes used as a key to Amarna's video_metadata table.", + "type": "string" + }, + "aresClassificationRequestTimestamp": { + "description": "Timestamp of the last successful Ares classification request.", + "format": "google-datetime", + "type": "string" + }, + "audioOnly": { + "description": "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.", + "type": "boolean" + }, + "cloudSpeechSignals": { + "$ref": "ImageRepositoryAmarnaCloudSpeechSignals", + "description": "Transcript generated from Cloud Speech API" + }, + "featureSetData": { + "$ref": "DrishtiFeatureSetData", + "description": "Video Understanding Golden features. (go/amarna-video-signals#golden-signals) Note: Golden6 features (names matching \"video_*\") are DEPRECATED. Please migrate to Golden7 (\"VideoFeatures.*\"). For more context, see go/golden7/migrating-from-golden6 and go/amarna-golden-feature-tracker." + }, + "golden7SoapboxSummary": { + "$ref": "DrishtiFeatureSetData", + "description": "Golden7 video-level people features. (go/ypf-video-features)" + }, + "inlinePlayback": { + "$ref": "VideoCrawlVideoInlinePlaybackMetadata", + "description": "Metadata related to Inline playback on the Interest Feed. This field is filled by Hamilton." + }, + "languageIdentification": { + "$ref": "VideoTimedtextS4ALIResults" + }, + "legosAnnotationData": { + "$ref": "VideoLegosLegosAnnotationsSets", + "description": "Legos results" + }, + "lmsPreviewFramePerdocs": { + "$ref": "ImageRepositoryFramePerdocs", + "description": "LMS preview frame perdocs. Timestamps of the frame perdocs are from the original video, not from the preview." + }, + "loudnessData": { + "$ref": "VideoStorageLoudnessData", + "description": "When Transcode itag 140 is requested, MediaAnalyzer (as the part of Viper graph) generates audio info including loudness_data, which is then published to Streamer. For Audio news client, we extract this loudness data from Streamer to this field." + }, + "mediaInfo": { + "$ref": "VideoMediaInfo", + "description": "Information about the media file, such as duration, resolution, and detail about each audio/video stream. Note that it contains no PII." + }, + "representativeFrameData": { + "$ref": "ImageData" + }, + "s3LanguageIdentification": { + "$ref": "ImageRepositoryS3LangIdSignals" + }, + "safesearchVideoContentSignals": { + "$ref": "SafesearchVideoContentSignals", + "description": "Contains SafeSearch video classification outputs which are vertical_name/float pairs." + }, + "searchDocid": { + "description": "64 bit docid used for retrieving video previews.", + "format": "uint64", + "type": "string" + }, + "signalsBlob": { + "$ref": "ImageRepositoryAmarnaSignalsBlob", + "description": "Amarna signals blob that contains large-size signals like VCA frame-level signals." + }, + "signalsBlobInfo": { + "$ref": "ImageRepositoryAmarnaSignalsBlobInfo", + "description": "Information for the amarna signals blob." + }, + "speechProperties": { + "$ref": "IndexingSpeechSpeechPropertiesProto" + }, + "thumbnailQualityScore": { + "$ref": "VideoThumbnailsThumbnailScore", + "description": "Thumbnail quality score predict how visual pleasing a thumbnail is, based on the model trained with deep neural networks.(go/thumb_features_dd) Note the signal currently only available for Youtube videos." + }, + "thumbnailerData": { + "$ref": "VideoPipelineViperThumbnailerColumnData" + }, + "transcodeMetadata": { + "description": "Metadata about each transcode requested.", + "items": { + "$ref": "ImageRepositoryApiItagSpecificMetadata" + }, + "type": "array" + }, + "transcriptAsr": { + "$ref": "PseudoVideoData", + "description": "Speech related metadata" + }, + "truncationInfo": { + "$ref": "ImageRepositoryFileTruncationInfo", + "description": "Data about whether or not the video was truncated." + }, + "unwantedContent": { + "$ref": "ImageRepositoryUnwantedContent", + "description": "If set, video has been deleted using the deletion service (MediaDeletionService)." + }, + "venomId": { + "description": "The video id in the venom pipeline for STAMP purposes. DEPRECATED: Use transcode_metadata or venom_processing_info instead, which includes the ID and contains information for all clients.", + "type": "string" + }, + "venomProcessingInfo": { + "$ref": "ImageRepositoryVenomProcessingInfo", + "description": "Information about the video's status in Venom, including IDs and processing times." + }, + "videoAnchorSet": { + "$ref": "VideoContentSearchVideoAnchorSets", + "description": "Video anchor sets hold set of anchors with multiple anchor types and sequence of VideoAnchor which contains metadata about the anchor, such as thumbnail, perdoc data." + }, + "videoDurationSec": { + "description": "Set from the video header if truncated, or is the verified length if completely crawled.", + "format": "double", + "type": "number" + }, + "videoPornScore": { + "description": "The video porn confidence score extracted from Whisper featureSet: \"video_labels:whisper_v3\", with CR2 label: \"/cr2/1\".", + "format": "float", + "type": "number" + }, + "videoPornScoreV4": { + "description": "The video porn confidence score extracted from WhisperV4 featureSet: \"VideoFeatures.whisper_v4_labels\", with CR2 label: \"/tns/porn\".", + "format": "float", + "type": "number" + }, + "videoPreviewBytes": { + "description": "video_preview_bytes is only exported as virtual dataset by IE VideoUnderstanding and should not be persisted. It will be used by downstream IE functions to push for serving.", + "items": { + "$ref": "ImageRepositoryVideoPreviewsVideoPreview" + }, + "type": "array" + }, + "videoPreviews": { + "description": "video_previews contain the preview metadata but no bytes. It exits for IE and non-IE cases.", + "items": { + "$ref": "ImageBaseVideoPreviewMetadata" + }, + "type": "array" + }, + "videoStreamInfo": { + "$ref": "VideoPipelineViperVSIColumnData", + "description": "Deprecated, please use media_info." + }, + "videoTranscriptAnnotations": { + "$ref": "QualityWebanswersVideoTranscriptAnnotations", + "description": "VideoTranscriptAnnotations holds sentence segmented text and timing information to be used for VideoAnswers (go/video-answers). Note that only punctuated_transcript, timing_info, and lang field are filled, and other fields will be filled in the later stage." + }, + "youtubeProcessingFilter": { + "$ref": "ImageRepositoryYoutubeProcessingFilter", + "description": "Contains lists of reasons why YT videos were filtered from specific processing." + } + }, + "type": "object" + }, + "ImageRepositoryCrawlStatusInfo": { + "description": "Fields for crawl-status-related debugging information.", + "id": "ImageRepositoryCrawlStatusInfo", + "properties": { + "code": { + "enum": [ + "VALID_IMAGE", + "INVALID_FETCH_REPLY", + "XROBOTED", + "URL_NOT_CRAWLED", + "PARSE_ERROR", + "INVALID_IMAGE", + "IMS_CRAWL_NOT_MODIFIED", + "EXPIRED_DISCOVERY_CRAWL", + "EXPIRED_FEED_CRAWL", + "EXPIRED_PRIORITY_FEED_CRAWL", + "INVALID_URL", + "VALID_VIDEO", + "VALID_SWF", + "VALID_SILVERLIGHT", + "INVALID_VIDEO", + "TRUNCATED_CONTENTS", + "FAST_CRAWL_LOCK_ACQUIRE_FAILED", + "FAST_CRAWL_TTL_EXPIRED" + ], + "enumDescriptions": [ + "", + "The crawl resulted in an invalid fetch reply. This means that fetchreply did not contain the url or the original crawl date inside it.", + "The url was xroboted.", + "Look at url not_crawled_reason for specific errors.", + "The url was successfully crawled but contained no valid image or video content.", + "The url was successfully crawled but was in a format not currently supported.", + "This was a referesh crawl and there was no modification that needs to be processesed.", + "This is a discovery url that webmirror discarded. Such urls need not be imported.", + "This is a feed url and webmirror expired it.", + "This is a feed url in one of the priority feeds and webmirror expired it.", + "The passed URL was not valid and could not be crawled.", + "This is a valid video, SWF, or Silverlight object.", + "", + "", + "This is an invalid video.", + "This is a large image or video, and only part of it has been fetched.", + "Temporary status for fast crawl failures.", + "" + ], + "type": "string" + }, + "notCrawledReason": { + "enum": [ + "URL_CRAWLED", + "URL_ERROR", + "URL_ROBOTED", + "URL_UNREACHABLE", + "URL_TIMEOUT", + "URL_REJECTED", + "URL_NOT_FOLLOWED", + "NUM_STATE_TYPES" + ], + "enumDescriptions": [ + "", + "Error fetching; most commonly 404;", + "but many other possible reasons. Roboted out.", + "Fetch error; 5xx; truncated response; etc.", + "Timeout while fetching.", + "Rejected based on capacity or permissions.", + "Redirects/retries-related: we crawled something", + "*** don't forget to update." + ], + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryFileTruncationInfo": { + "description": "Describes our knowledge about whether a stored file is truncated with respect to its original file online.", + "id": "ImageRepositoryFileTruncationInfo", + "properties": { + "originalFileSizeLowerBoundBytes": { + "description": "A lower bound on the original file's size.", + "format": "int64", + "type": "string" + }, + "truncationState": { + "description": "Indicates whether the stored file is equal to the original file (COMPLETE), is only a prefix (TRUNCATED), or that we don't know (UNKNOWN, the default).", + "enum": [ + "UNKNOWN", + "COMPLETE", + "TRUNCATED" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryFrameIdentifier": { + "description": "Identifier for frames associated with a video.", + "id": "ImageRepositoryFrameIdentifier", + "properties": { + "previewFrameZeroVariant": { + "$ref": "ImageRepositoryFrameIdentifierPreviewFrameZeroVariant" + }, + "thumbnailVariant": { + "$ref": "ImageRepositoryFrameIdentifierThumbnailVariant" + }, + "timestampMs": { + "description": "Offset of the frame from the beginning of the video (in milliseconds).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageRepositoryFrameIdentifierPreviewFrameZeroVariant": { + "description": "This variant defines the frame to be the first frame of the video's generated preview.", + "id": "ImageRepositoryFrameIdentifierPreviewFrameZeroVariant", + "properties": { + "previewLength": { + "enum": [ + "UNSPECIFIED", + "THREE_SECONDS", + "SIX_SECONDS" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "xtagList": { + "$ref": "ImageRepositoryApiXtagList", + "description": "All xtags used in the generation of the preview. The same frame generated from the same preview with different xtags will likely have different bytes (such as, for example, resulting from a different aspect ratio)." + } + }, + "type": "object" + }, + "ImageRepositoryFrameIdentifierThumbnailVariant": { + "description": "This variant defines the frame to be a thumbnail of the video.", + "id": "ImageRepositoryFrameIdentifierThumbnailVariant", + "properties": {}, + "type": "object" + }, + "ImageRepositoryFramePerdoc": { + "description": "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).", + "id": "ImageRepositoryFramePerdoc", + "properties": { + "frameIdentifier": { + "$ref": "ImageRepositoryFrameIdentifier" + }, + "perdoc": { + "$ref": "ImageData" + }, + "timestampMsec": { + "description": "Timestamp (in msec) of the frame from the original video DEPRECATED: Use the timestamp_ms field in frame_identifier instead.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageRepositoryFramePerdocs": { + "description": "This proto stores perdocs extracted from video frames.", + "id": "ImageRepositoryFramePerdocs", + "properties": { + "framePerdoc": { + "items": { + "$ref": "ImageRepositoryFramePerdoc" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositoryNimaOutput": { + "id": "ImageRepositoryNimaOutput", + "properties": { + "score": { + "description": "NIMA score.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageRepositoryS3LangIdSignals": { + "description": "Next Tag: 9", + "id": "ImageRepositoryS3LangIdSignals", + "properties": { + "containsSpeech": { + "description": "Whether this audio chunk has speech or not.", + "type": "boolean" + }, + "endSec": { + "format": "int64", + "type": "string" + }, + "langidResult": { + "$ref": "SpeechS3LanguageIdentificationResult", + "description": "S3 langID result. We keep langid_result even if contains_speech = false." + }, + "languageIdentification": { + "$ref": "VideoTimedtextS4ALIResults", + "description": "Converted version of the langid_result field, so that we have the YT compatible version of the langID result." + }, + "modelVersion": { + "description": "The version of the model used for S3 LangID service.", + "type": "string" + }, + "speechFrameCount": { + "format": "int32", + "type": "integer" + }, + "startSec": { + "description": "The audio chunk which corresponds to this langID result expressed as a start_sec and end_sec.", + "format": "int64", + "type": "string" + }, + "totalFrameCount": { + "description": "Count the number of total frames in the audio chunk as well as the number of speech frames.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageRepositoryShoppingProductInformation": { + "description": "A message containing embedding information and localization scores using the VSS product recognition module.", + "id": "ImageRepositoryShoppingProductInformation", + "properties": { + "productSets": { + "description": "Information about versioned product sets found. There will be at most two versions present. The results from the current version of the models used in VSS and the results from the previous version of the models used. Note that not all products may have two version since the model might detect the product in one version and not the other.", + "items": { + "$ref": "ImageRepositoryShoppingProductInformationVersionedProductInformationSet" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositoryShoppingProductInformationBoundingBox": { + "description": "Contains the coordinates of the normalized bounding box.", + "id": "ImageRepositoryShoppingProductInformationBoundingBox", + "properties": { + "h": { + "description": "The vertical height of the bounding box (ymax - ymin + 1), normalized by image height with range [0,1].", + "format": "float", + "type": "number" + }, + "w": { + "description": "The horizontal width of the bound box (xmax - xmin + 1), normalized by image width with range [0,1].", + "format": "float", + "type": "number" + }, + "x": { + "description": "The x coordinate (xmin), normalized by image width with range [0,1).", + "format": "float", + "type": "number" + }, + "y": { + "description": "The y coordinate (ymin), normalized by image height with range [0,1).", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageRepositoryShoppingProductInformationEntity": { + "description": "The recognized entity.", + "id": "ImageRepositoryShoppingProductInformationEntity", + "properties": { + "id": { + "type": "string" + }, + "score": { + "description": "The normalized recognition score between 0 and 1.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageRepositoryShoppingProductInformationProductInformation": { + "description": "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.", + "id": "ImageRepositoryShoppingProductInformationProductInformation", + "properties": { + "categoryId": { + "description": "The possible Merlot ids for the item. There may be more than one if the product detector result corresponds to a collection of merlot ids, which can't be easily grouped up to a common ancestor, for which the detector would still make sense for all the children. E.g. a detected \"chair\" can be either an indoor chair or an outdoor one, however in Merlot the common ancestor of the two is furniture.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "clusterIds": { + "description": "The k-d tree clusters for retrieval. Will be deprecated, use the token_groups instead. To add tokens/cluster_ids from new tokenization model in the future, add it to the token_groups.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "detectionScore": { + "description": "The localization detection score.", + "format": "float", + "type": "number" + }, + "embedding": { + "description": "The serialized embedding values.", + "format": "byte", + "type": "string" + }, + "entities": { + "description": "The recognized entities and scores.", + "items": { + "$ref": "ImageRepositoryShoppingProductInformationEntity" + }, + "type": "array" + }, + "featureType": { + "description": "Feature type (different detectors and embedders) requested.", + "type": "string" + }, + "productLocation": { + "$ref": "ImageRepositoryShoppingProductInformationBoundingBox", + "description": "The bounding box." + }, + "tokenGroups": { + "items": { + "$ref": "ImageRepositoryShoppingProductInformationProductInformationTokenGroup" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositoryShoppingProductInformationProductInformationTokenGroup": { + "description": "The tokens for retrieval.", + "id": "ImageRepositoryShoppingProductInformationProductInformationTokenGroup", + "properties": { + "model": { + "enum": [ + "UNKNOWN", + "KMEANS", + "KMEANSV2", + "KMEANSV3" + ], + "enumDescriptions": [ + "", + "Apparel, homegoods, and PGF V1 tokens.", + "Apparel V2, homegoods V2 (box) and PGF V2 tokens.", + "PGF V3 tokens." + ], + "type": "string" + }, + "tokens": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositoryShoppingProductInformationVersionedProductInformationSet": { + "description": "Store ProductInformation for a given version of the models used in VSS.", + "id": "ImageRepositoryShoppingProductInformationVersionedProductInformationSet", + "properties": { + "modelType": { + "description": "The type of the model.", + "enum": [ + "MODEL_TYPE_UNKNOWN", + "MODEL_TYPE_PRODUCTNET", + "MODEL_TYPE_PRIMI_GENERIC" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "products": { + "description": "List of ProductInformation for this version.", + "items": { + "$ref": "ImageRepositoryShoppingProductInformationProductInformation" + }, + "type": "array" + }, + "version": { + "description": "The version of the models used in VSS. Newer version will have a higher version number.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ImageRepositorySpeechRecognitionAlternative": { + "description": "Alternative hypotheses (a.k.a. n-best list).", + "id": "ImageRepositorySpeechRecognitionAlternative", + "properties": { + "confidence": { + "description": "The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative of a non-streaming result or, of a streaming result where `is_final=true`. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.", + "format": "float", + "type": "number" + }, + "transcript": { + "description": "Transcript text representing the words that the user spoke.", + "type": "string" + }, + "words": { + "description": "A list of word-specific information for each recognized word. Note: When `enable_speaker_diarization` is true, you will see all the words from the beginning of the audio.", + "items": { + "$ref": "ImageRepositoryWordInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositorySpeechRecognitionResult": { + "description": "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.", + "id": "ImageRepositorySpeechRecognitionResult", + "properties": { + "alternatives": { + "description": "May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`). These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most probable, as ranked by the recognizer.", + "items": { + "$ref": "ImageRepositorySpeechRecognitionAlternative" + }, + "type": "array" + }, + "channelTag": { + "description": "For multi-channel audio, this is the channel number corresponding to the recognized result for the audio from that channel. For audio_channel_count = N, its output values can range from '1' to 'N'.", + "format": "int32", + "type": "integer" + }, + "languageCode": { + "description": "The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the language in this result. This language code was detected to have the most likelihood of being spoken in the audio.", + "type": "string" + }, + "resultEndTime": { + "description": "Time offset of the end of this result relative to the beginning of the audio. This field is internal-only and is used to order results based on their timestamps.", + "format": "google-duration", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryUnwantedContent": { + "description": "To indicate whether the image is to be deleted from the repository due to legal reasons.", + "id": "ImageRepositoryUnwantedContent", + "properties": { + "deletionReason": { + "enum": [ + "OTHER", + "CP" + ], + "enumDescriptions": [ + "", + "abusive images involving children." + ], + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryVenomProcessingInfo": { + "id": "ImageRepositoryVenomProcessingInfo", + "properties": { + "venomStatus": { + "description": "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", + "items": { + "$ref": "ImageRepositoryVenomStatus" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositoryVenomStatus": { + "id": "ImageRepositoryVenomStatus", + "properties": { + "acl": { + "$ref": "VideoAssetsVenomACL", + "description": "Venom ACL of the video. Used to check if other systems, such as Ares, are able to process the video." + }, + "deletionTimestampUsec": { + "format": "int64", + "type": "string" + }, + "genus": { + "description": "The Genus (Venom's client ID) that this media belongs to.", + "enum": [ + "GENUS_UNKNOWN", + "GENUS_YT_HIGH_VALUE_CONTENT", + "GENUS_YT_USER_GENERATED_CONTENT", + "GENUS_GMAIL", + "GENUS_KIDS_HUB", + "GENUS_YOUTUBE_DIRECTOR", + "GENUS_DCLK_VIDEO_ADS", + "GENUS_DAI_PODCAST", + "GENUS_TESTING", + "GENUS_YT_UNPLUGGED_SVOD", + "GENUS_YT_UNPLUGGED_DVR", + "GENUS_HVC_INGESTION", + "GENUS_DRIVE", + "GENUS_YT_LIGHTWEIGHT_VIDEO", + "GENUS_ASK_QNA", + "GENUS_LOCAL_VIDEO", + "GENUS_PLAY_AUDIOBOOKS", + "GENUS_HANGOUTS_CHAT", + "GENUS_VIDEO_INTEREST_FEED", + "GENUS_YT_MUSIC", + "GENUS_RECORDER", + "GENUS_YT_ORIGINAL_CONTENT", + "GENUS_STAMP", + "GENUS_BULLETIN_AUDIO", + "GENUS_CRAWL", + "GENUS_PHOTOS", + "GENUS_MATERIAL_GALLERY", + "GENUS_YT_REFERENCE", + "GENUS_LENSLETS_VIDEOS", + "GENUS_BLOGGER", + "GENUS_PODCASTS", + "GENUS_OCEAN", + "GENUS_LMS", + "GENUS_WEB_VIDEO_ADS", + "GENUS_STUDIO", + "GENUS_YT_TDSD_REFERENCE", + "GENUS_WEB_STORY", + "GENUS_NEST_CAMERA_CLOUD", + "GENUS_AREA120_BLUEBIRD", + "GENUS_ARTS_AND_CULTURE", + "GENUS_DEMO", + "GENUS_KARTO", + "GENUS_CONTRIB_SERVICE_SHARED", + "GENUS_CONTRIB_SERVICE_GEO_UGC" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "Genus for Ad Manager Video Ads (formerly Doubleclick video ads).", + "Genus for DAI podcasts, part of Ad Manager Video Ads.", + "", + "Genera for Unplugged videos. GENUS_YT_UNPLUGGED_SVOD is for Unplugged SVOD contents. GENUS_YT_UNPLUGGED_DVR is for Unplugged DVR contents. Videos created with this genus will be stored in Blobstore (to make per-user clone), and will be removed after a certain period. Besides, we prefer no reruns for such videos.", + "", + "", + "", + "Also known as Stories, or Reels.", + "", + "Genus for local imagery aka Photo/Video On Maps, stored on Google Photos. Contact: local-imagery-team@.", + "", + "Genus for Hangouts Chat (Dynamite).", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Genus for 'A-' References; audio or video references that are not playable on YouTube, and only used as references for ContentID claiming.", + "", + "", + "Genus for Google Podcasts \u0026 Audio News.", + "Genus for Ocean / Play Books.", + "Genus for Licensed Media Service videos.", + "Genus for Web Video Ads.", + "Genus for RichMedia Studio.", + "Genus for TDSD references. These are not playable on YouTube, and are only used for generating ContentID fingerprints.", + "Genus for Kahani Web Stories.", + "Genus for Nest Camera Cloud.", + "Genus for Area120 Bluebird", + "Genus for Google Arts \u0026 Culture.", + "Genus for new Video Processing clients to do initial prototyping before they decide to formally onboard. go/venom-clients#demo-tier", + "Genus for Karto videos.", + "Shared genus for ContribService UGC videos for small clients requesting the same set of common signals. Large ContribService Video clients should have their own genera. go/user-owned-video-content-processing", + "Genus for GEO UGC videos processed by ContribService. go/venom-lite-for-geo-photo-videos" + ], + "type": "string" + }, + "insertionResponseTimestampUsec": { + "description": "Time that VideoNotification result was received from Venom.", + "format": "int64", + "type": "string" + }, + "insertionTimestampUsec": { + "format": "int64", + "type": "string" + }, + "lastInsertionAttemptsNum": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "reason": { + "enum": [ + "NONE", + "INVALID", + "WRONG_CRITERIA", + "DISABLED", + "FAILED_INSERTION", + "INSERTION_SKIPPED", + "FAILED_DELETION", + "INCOMPLETE_DOWNLOAD", + "FILTERED", + "NOT_FOUND", + "INSERTION_ATTEMPTS_EXCEEDED", + "ASSET_ALREADY_EXISTS" + ], + "enumDescriptions": [ + "", + "Missing/bad video data.", + "Video doesn't meet criteria for the producer.", + "Met all criteria, but unsent due to flags.", + "RPC failed.", + "Venom insertion skipped because the video has", + "been uploaded successfully to Venom in previous insertion. This is only set when VenomState is INSERTED. RPC failed.", + "Not inserted due to truncated download.", + "Filtered from Venom based on metadata.", + "The video is not found, only applies to YouTube videos.", + "Out of insertion attempts.", + "The assets already exist in Venom." + ], + "type": "string" + }, + "settings": { + "description": "The Settings that were used to customize the Venom request for this media.", + "items": { + "$ref": "VideoAssetsVenomSettings" + }, + "type": "array" + }, + "state": { + "enum": [ + "UNKNOWN_STATE", + "INSERTED", + "RESPONDED", + "NOT_INSERTED", + "DELETED", + "NOT_DELETED" + ], + "enumDescriptions": [ + "", + "Video sent to Venom.", + "Amarna has received a pubsub from Venom.", + "Amarna chose not to send the video to Venom.", + "Video has been deleted.", + "Video should've been deleted, but wasn't." + ], + "type": "string" + }, + "transition": { + "$ref": "VideoAssetsVenomTransition", + "description": "Transition contains the Objective and Outcome of the latest Venom run." + }, + "venomId": { + "$ref": "VideoAssetsVenomVideoId", + "description": "The media's unique identifier within Venom." + }, + "venomMutationGeneration": { + "description": "The generation number returned by Venom.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryVideoIndexingInfo": { + "id": "ImageRepositoryVideoIndexingInfo", + "properties": { + "notIndexedVideoLink": { + "items": { + "$ref": "ImageRepositoryVideoLinkIndexingInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageRepositoryVideoLinkIndexingInfo": { + "id": "ImageRepositoryVideoLinkIndexingInfo", + "properties": { + "crawlStatusInfo": { + "$ref": "ImageRepositoryCrawlStatusInfo", + "description": "Fields for crawl-status-related debugging information." + }, + "url": { + "description": "The video URL.", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryVideoPreviewsDebuggingInfo": { + "id": "ImageRepositoryVideoPreviewsDebuggingInfo", + "properties": { + "lastAmarnaProcessingTime": { + "description": "Last Amarna processing timestamp.", + "format": "google-datetime", + "type": "string" + }, + "processingEngine": { + "description": "The underlying processing engine, like 'viper' or 'kronos'.", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryVideoPreviewsVideoPreview": { + "id": "ImageRepositoryVideoPreviewsVideoPreview", + "properties": { + "content": { + "description": "The actual video preview bytes generated for the video.", + "format": "byte", + "type": "string" + }, + "debuggingInfo": { + "$ref": "ImageRepositoryVideoPreviewsDebuggingInfo", + "description": "Used for debugging only." + }, + "metadata": { + "$ref": "ImageBaseVideoPreviewMetadata", + "description": "The metadata associated with the preview (i.e. the type: 8k, 90k, etc.)" + }, + "previewFrameZero": { + "$ref": "DrishtiVesperVideoThumbnail", + "description": "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." + } + }, + "type": "object" + }, + "ImageRepositoryVideoProperties": { + "id": "ImageRepositoryVideoProperties", + "properties": { + "audioOnly": { + "description": "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.", + "type": "boolean" + }, + "contentBasedMetadata": { + "$ref": "ImageRepositoryContentBasedVideoMetadata", + "description": "Information derived from fetched video bytes." + }, + "crawlState": { + "$ref": "ImageMoosedogCrawlState", + "description": "The raw crawl state." + }, + "firstCrawlTimestampSec": { + "description": "Timestamp of the first time that the video was successfully crawled.", + "format": "int64", + "type": "string" + }, + "firstProcessingTimestampSec": { + "description": "Timestamp when this video's videoProperties is populated for the first time, measured in seconds since epoch.", + "format": "int64", + "type": "string" + }, + "inlinePlayback": { + "$ref": "VideoCrawlVideoInlinePlaybackMetadata", + "description": "DEPRECATED: please use content_based_metadata.inline_playback. Metadata related to Inline playback on the Interest Feed" + }, + "lastCrawlRequestTimestampSec": { + "description": "Timestamp when this video's last crawling is requested, measured in seconds since epoch.", + "format": "int64", + "type": "string" + }, + "lastProcessingTimestampSec": { + "description": "Last timestamp when this video's videoProperties is populated, measured in seconds since epoch.", + "format": "int64", + "type": "string" + }, + "url": { + "description": "This is the video url taken from the key of the Amarna references table row corresponding to this message.", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryWordInfo": { + "description": "Word-specific information for recognized words.", + "id": "ImageRepositoryWordInfo", + "properties": { + "confidence": { + "description": "The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater likelihood that the recognized words are correct. This field is set only for the top alternative of a non-streaming result or, of a streaming result where `is_final=true`. This field is not guaranteed to be accurate and users should not rely on it to be always provided. The default of 0.0 is a sentinel value indicating `confidence` was not set.", + "format": "float", + "type": "number" + }, + "endTime": { + "description": "Time offset relative to the beginning of the audio, and corresponding to the end of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.", + "format": "google-duration", + "type": "string" + }, + "speakerTag": { + "description": "A distinct integer value is assigned for every speaker within the audio. This field specifies which one of those speakers was detected to have spoken this word. Value ranges from '1' to diarization_speaker_count. speaker_tag is set if enable_speaker_diarization = 'true' and only in the top alternative.", + "format": "int32", + "type": "integer" + }, + "startTime": { + "description": "Time offset relative to the beginning of the audio, and corresponding to the start of the spoken word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an experimental feature and the accuracy of the time offset can vary.", + "format": "google-duration", + "type": "string" + }, + "word": { + "description": "The word corresponding to this set of information.", + "type": "string" + } + }, + "type": "object" + }, + "ImageRepositoryYoutubeProcessingFilter": { + "description": "Next available tag: 13", + "id": "ImageRepositoryYoutubeProcessingFilter", + "properties": { + "previewsFilteredReason": { + "items": { + "enum": [ + "UNKNOWN", + "CONTENT_CLAIMS", + "MATURE_CONTENT", + "INVALID_VIDEO_DATA", + "NO_VSI", + "SHORT_DURATION", + "NO_DURATION", + "EMPTY_DATA", + "DELETED", + "OFFICIAL_MUSIC_VIDEO", + "PREMIUM_CONTENT", + "ART_TRACK", + "PHARMA_CHANNEL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "This is set for livestreams, which have a duration of 0.", + "", + "", + "Set if video has ut_video_policy FLAG_OFFICIAL_MUSIC_VIDEO.", + "Set if video has ut_video_policy FLAG_PREMIUM_CONTENT.", + "Set if video has ut_video_policy FLAG_ART_TRACK.", + "Set if the video has a pharma channel ID." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageSafesearchContentBrainPornAnnotation": { + "description": "Don't change the field names. The names are used as sparse feature labels in client projects.", + "id": "ImageSafesearchContentBrainPornAnnotation", + "properties": { + "childScore": { + "description": "The probability that the youngest person in the image is a child.", + "format": "float", + "type": "number" + }, + "csaiScore": { + "description": "This score correlates with potential child abuse. Google confidential!", + "format": "double", + "type": "number" + }, + "iuInappropriateScore": { + "description": "This field contains the probability that an image is inappropriate for Images Universal, according to this policy: go/iupolicy.", + "format": "float", + "type": "number" + }, + "medicalScore": { + "format": "float", + "type": "number" + }, + "pedoScore": { + "format": "float", + "type": "number" + }, + "pornScore": { + "format": "double", + "type": "number" + }, + "racyScore": { + "description": "This score is related to an image being sexually suggestive.", + "format": "float", + "type": "number" + }, + "spoofScore": { + "format": "float", + "type": "number" + }, + "version": { + "description": "This field is an experimental one with a quite vague meaning. Please contact safesearch@ before any meaningful use of it. There is no guarantee it will preserve its behavior in the future.", + "type": "string" + }, + "violenceScore": { + "format": "float", + "type": "number" + }, + "ytPornScore": { + "description": "Deprecated, use porn_score instead. The most recent model version does not produce this anymore.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageSafesearchContentOCRAnnotation": { + "id": "ImageSafesearchContentOCRAnnotation", + "properties": { + "ocrProminenceScore": { + "description": "The score produced by Aksara geometry and spoof score. Describes the 'visibility' or 'importance' of the text on the image [0, 1]", + "format": "float", + "type": "number" + }, + "offensiveScore": { + "description": "The score produced by the sensitive_seti model.", + "format": "float", + "type": "number" + }, + "pornScore": { + "description": "Image OCR racyness/pornyness, computed by porn query classifier.", + "format": "float", + "type": "number" + }, + "prominentOffensiveScore": { + "description": "Same as offensive_score, but weighted by prominence.", + "format": "float", + "type": "number" + }, + "prominentVulgarScore": { + "description": "Same as vulgar_score, but weighted by prominence.", + "format": "float", + "type": "number" + }, + "qbstOffensiveScore": { + "description": "The score produced by offensive salient terms model.", + "format": "float", + "type": "number" + }, + "vulgarI18nBit": { + "description": "Presence of i18n-recognized vulgar term in the OCR.", + "type": "boolean" + }, + "vulgarScore": { + "description": "Image OCR vulgarity, computed by vulgar query classifier.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageSafesearchContentOffensiveSymbolDetection": { + "id": "ImageSafesearchContentOffensiveSymbolDetection", + "properties": { + "matches": { + "items": { + "$ref": "ImageSafesearchContentOffensiveSymbolMatch" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageSafesearchContentOffensiveSymbolMatch": { + "description": "Each entry corresponds to an image containing an offensive symbol.", + "id": "ImageSafesearchContentOffensiveSymbolMatch", + "properties": { + "score": { + "description": "Confidence score of the match. The higher, the more likely to match the symbol.", + "format": "float", + "type": "number" + }, + "type": { + "enum": [ + "INVALID", + "SWASTIKA_WHITE_ON_BLACK", + "SWASTIKA_BLACK_ON_WHITE", + "SWASTIKA_BLACK_ON_WHITE_ROTATED", + "NAZI_YELLOW_BADGE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "ImageSearchImageIndexingInfo": { + "id": "ImageSearchImageIndexingInfo", + "properties": { + "imageLinkSelectionInfo": { + "description": "Image Selection Info", + "items": { + "$ref": "ImageSearchImageSelectionInfo" + }, + "type": "array" + }, + "rejectedNotIndexedImageLink": { + "description": "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).", + "items": { + "$ref": "ImageSearchUnindexedImageLink" + }, + "type": "array" + }, + "selectedNotIndexedImageLink": { + "description": "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).", + "items": { + "$ref": "ImageSearchUnindexedImageLink" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageSearchImageLicenseInfo": { + "description": "The image license info for licensable images(go/Licensable-Images-PRD) This proto in design doc: go/licensable-images-edd", + "id": "ImageSearchImageLicenseInfo", + "properties": { + "acquireLicensePage": { + "description": "Records web page url about how to use the licensed image.", + "type": "string" + }, + "copyrightNotice": { + "description": "Provides copyright info.", + "type": "string" + }, + "copyrightNoticeSourceType": { + "description": "Source type for copyright_notice field.", + "enum": [ + "UNKNOWN_SOURCE", + "SCHEMA_ORG_MARKUP", + "IPTC_METADATA" + ], + "enumDescriptions": [ + "DEFAULT", + "", + "" + ], + "type": "string" + }, + "creator": { + "description": "creator, authors.", + "items": { + "type": "string" + }, + "type": "array" + }, + "creatorSourceType": { + "description": "Source type for creator field.", + "enum": [ + "UNKNOWN_SOURCE", + "SCHEMA_ORG_MARKUP", + "IPTC_METADATA" + ], + "enumDescriptions": [ + "DEFAULT", + "", + "" + ], + "type": "string" + }, + "creditText": { + "description": "Text for crediting persons or organizations.", + "type": "string" + }, + "creditTextSourceType": { + "description": "Source type for credit_text field.", + "enum": [ + "UNKNOWN_SOURCE", + "SCHEMA_ORG_MARKUP", + "IPTC_METADATA" + ], + "enumDescriptions": [ + "DEFAULT", + "", + "" + ], + "type": "string" + }, + "isRetiredCcUrl": { + "description": "Whether this license url is in retired license list, which is from: https://creativecommons.org/retiredlicenses/", + "type": "boolean" + }, + "licenseType": { + "enum": [ + "NO_LICENSE", + "CREATIVE_COMMONS_LICENSE", + "NON_CREATIVE_COMMONS_LICENSE" + ], + "enumDescriptions": [ + "", + "The license URL is formatted as creativecommons.org/... Creative Commons (CC) license is free for content creators to use when making their work available to the public.", + "The provider posts a non-Creative-Commons link with information on how to licence that image." + ], + "type": "string" + }, + "licenseUrl": { + "description": "Records license URL.", + "type": "string" + }, + "safesearchFlags": { + "description": "A bitwise-OR of SafeSearch filtering flags. If present, the flags will be a bitwise-AND between this value and all the classifier_porn::query::Vertical enums. If the value is -1, it indicates there is some error with SafeSearch classifier. The default value 0 means no filtering flags are set.", + "format": "int32", + "type": "integer" + }, + "sourceType": { + "enum": [ + "UNKNOWN_SOURCE", + "SCHEMA_ORG_MARKUP", + "IPTC_METADATA" + ], + "enumDescriptions": [ + "DEFAULT", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "ImageSearchImageSelectionInfo": { + "id": "ImageSearchImageSelectionInfo", + "properties": { + "imageLinkSelectionInfo": { + "$ref": "ImageMustangImageLinkSelectionInfo", + "description": "Image Selection Info." + }, + "url": { + "description": "The image URL.", + "type": "string" + } + }, + "type": "object" + }, + "ImageSearchUnindexedImageLink": { + "id": "ImageSearchUnindexedImageLink", + "properties": { + "amarnaStatus": { + "$ref": "ImageRepositoryAmarnaStatus", + "description": "Insight on why we do not have data for this imagelink." + }, + "crawlStatusInfo": { + "$ref": "ImageRepositoryCrawlStatusInfo", + "description": "Fields for crawl-status-related debugging information." + }, + "url": { + "description": "The image URL.", + "type": "string" + } + }, + "type": "object" + }, + "ImageUnderstandingIndexingAnnotation": { + "description": "Annotation packs various recognition, detection, embedding, and parsing results. One Annotation per bounding box detection.", + "id": "ImageUnderstandingIndexingAnnotation", + "properties": { + "feature": { + "description": "Multiple feature embeddings for this bounding box.", + "items": { + "$ref": "ImageUnderstandingIndexingFeature" + }, + "type": "array" + }, + "labelGroup": { + "description": "Multiple label annotations for this bounding box.", + "items": { + "$ref": "ImageUnderstandingIndexingLabelGroup" + }, + "type": "array" + }, + "roi": { + "$ref": "ImageUnderstandingIndexingImageRegion", + "description": "Detected bounding box. Leave it not set for whole image annotation." + } + }, + "type": "object" + }, + "ImageUnderstandingIndexingAnnotationGroup": { + "id": "ImageUnderstandingIndexingAnnotationGroup", + "properties": { + "annotation": { + "items": { + "$ref": "ImageUnderstandingIndexingAnnotation" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImageUnderstandingIndexingFeature": { + "description": "Image feature embedding proto. It supports various embedding formats: raw bytes, floating point values, and tokens.", + "id": "ImageUnderstandingIndexingFeature", + "properties": { + "bytesValue": { + "description": "Multiple fields can be set. For example for Starburst V3, they can be used to store compressed byte, raw float feature, and tokens, respectively.", + "format": "byte", + "type": "string" + }, + "floatValue": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "imageTemplate": { + "$ref": "PhotosVisionObjectrecImageTemplate", + "description": "Local features." + }, + "int32Value": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "ImageUnderstandingIndexingImageRegion": { + "description": "Image region produced by a detector.", + "id": "ImageUnderstandingIndexingImageRegion", + "properties": { + "box": { + "$ref": "PhotosVisionGroundtruthdbNormalizedBoundingBox", + "description": "Bounding box normalized to [0,1] scale independent on the image size. For example if the original image has the size 1600x1200, the rectangle [200, 200, 800, 600] from the image would have a normalized bounding box [1/8, 1/6, 1/2, 1/2]." + }, + "score": { + "description": "Box confidence score. This is used to store the confidence of the box proposal, not the score associated with any specific labels. The box proposal confidence score is a float number per region between [0, 1] indicating how likely a box contains an \"object\".", + "format": "float", + "type": "number" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "ImageUnderstandingIndexingLabel": { + "description": "A single label with score and meta data.", + "id": "ImageUnderstandingIndexingLabel", + "properties": { + "canonicalText": { + "description": "Human readable text.", + "type": "string" + }, + "entityId": { + "description": "KG entity id.", + "type": "string" + }, + "metaData": { + "description": "Meta data for topicality, visible labels, attribute, etc.", + "items": { + "$ref": "ImageUnderstandingIndexingMetaData" + }, + "type": "array" + }, + "score": { + "description": "Confidence score.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ImageUnderstandingIndexingLabelGroup": { + "description": "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.", + "id": "ImageUnderstandingIndexingLabelGroup", + "properties": { + "label": { + "items": { + "$ref": "ImageUnderstandingIndexingLabel" + }, + "type": "array" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "ImageUnderstandingIndexingMetaData": { + "description": "Meta data useful to annotation Label and Feature with extra information.", + "id": "ImageUnderstandingIndexingMetaData", + "properties": { + "floatValue": { + "format": "float", + "type": "number" + }, + "name": { + "type": "string" + }, + "stringValue": { + "type": "string" + } + }, + "type": "object" + }, + "IndexingBadSSLCertificate": { + "description": "This protobuffer stores bad SSL certificate information for a canonical URL, and meant to be included in DocJoins and push to serving time.", + "id": "IndexingBadSSLCertificate", + "properties": { + "badSslCertificate": { + "$ref": "TrawlerSSLCertificateInfo" + }, + "urlWithBadSslCertificate": { + "description": "The URL where the bad SSL certificate really comes from. Present iff it is different from the source URL, i.e. a redirect target of the source URL).", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "IndexingConverterLocalizedAlternateName": { + "id": "IndexingConverterLocalizedAlternateName", + "properties": { + "annotationSource": { + "enum": [ + "HTTP", + "HTML", + "SITEMAP" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "deviceMatchInfo": { + "description": "Device match info calculated only by URL pattern.", + "enum": [ + "UNKNOWN", + "WWW_TO_WWW", + "WWW_TO_M", + "M_TO_M", + "M_TO_WWW" + ], + "enumDescriptions": [ + "", + "Both canonical and localized url are www version.", + "Canonical is www version but localized url is m version.", + "Both canonical and localized url are m version.", + "Canonical is m version but localized url is www version." + ], + "type": "string" + }, + "ecnFp": { + "description": "Fp96 of webmirror ECN as of the last time the canonical was processed.", + "format": "byte", + "type": "string" + }, + "feedUrl": { + "description": "Populated if annotation_source is SITEMAP.", + "type": "string" + }, + "language": { + "type": "string" + }, + "parsedLanguage": { + "description": "Parsed language and region code from language field.", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "parsedRegion": { + "format": "int32", + "type": "integer" + }, + "url": { + "format": "byte", + "type": "string" + }, + "urlEncoding": { + "description": "see webutil/urlencoding", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingConverterRawRedirectInfo": { + "description": "The proto to be stored in raw_redirect_info column of document table.", + "id": "IndexingConverterRawRedirectInfo", + "properties": { + "rawFinalTargetFromRendering": { + "description": "Final redirect target found from rendering. It is the same as the last element of raw_redirect_chain_from_rendering. It is used as an input source for the indexable fragment detection pipeline and also downstream phases.", + "type": "string" + }, + "rawFinalTargetFromTrawler": { + "description": "This is with-fragment version of redirect_with_contents. This field is populated only if there was a fragment. This field is used by indexing::mobile::GetRedirectTarget() defined in indexing/mobile/internal/smartphone-util.cc, which extracts the redirect target for smartphone optimized pages. The extracted target in turn is served in search results for smartphone users. We need with-fragment version because with-fragment url can return different content than fragment-stripped url. For example, http://www.example.com/m#article=11 and http://www.example.com/m can return different content. These cases are most typical for Ajaxy sites. This fragment does not have to be indexable.", + "type": "string" + }, + "rawRedirectChainFromRendering": { + "$ref": "IndexingConverterRedirectChain", + "description": "Redirect chain generated from redirect events in rendering. At the beginning of it, there could be some redirects from trawler (i.e. could be partial or entire trawler redirect chain), other redirects have their RedirectParams::is_redirect_from_rendering fields set to true. Redirects here have no RedirectChain::Hop::raw_target fields populated, and targets stored in RedirectChain::Hop::target fields are likely cleaned while keeping fragments (also sometimes they could be uncleaned ones because of cleaning failures), fragments could be indexable or non-indexable." + }, + "renderingRedirectLimit": { + "description": "This is used to describe how many redirect hops from Webkit were kept in the raw_redirect_chain_from_rendering. If it is -1, it means it kept all the hops from Webkit in redirect chain.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingConverterRedirectChain": { + "description": "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.", + "id": "IndexingConverterRedirectChain", + "properties": { + "hop": { + "items": { + "$ref": "IndexingConverterRedirectChainHop" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingConverterRedirectChainHop": { + "description": "NOLINT", + "id": "IndexingConverterRedirectChainHop", + "properties": { + "params": { + "$ref": "IndexingConverterRedirectParams" + }, + "rawTarget": { + "description": "Redirect target with fragment. This field is populated only if there was a fragment.", + "type": "string" + }, + "target": { + "description": "Redirect target URL and params of the current hop in the redirect chain.", + "type": "string" + } + }, + "type": "object" + }, + "IndexingConverterRedirectParams": { + "description": "If we detect any server or content based redirect, we will store the characteristics in this message.", + "id": "IndexingConverterRedirectParams", + "properties": { + "delay": { + "description": "The time difference between page loading and redirect occurrence. When missing, it means the redirect happens immediately (i.e. delay = 0). In seconds.", + "format": "int32", + "type": "integer" + }, + "frameTargetDeniesFraming": { + "description": "Populated for SINGLE_FRAME and SINGLE_IFRAME redirects only and indicates that the target url requested not to be framed, by virtue of using the \"X-Frame-Options\" HTTP header.", + "type": "boolean" + }, + "isDownload": { + "description": "Indicates corresponding redirect is a download. This field is only set when rendering redirect chain is used. This field represents the value of corresponding \"RedirectEvent.target_content_downloaded\" field.", + "type": "boolean" + }, + "isRenderingRedirect": { + "description": "Indicates corresponding redirect is from rendering if set to true.", + "type": "boolean" + }, + "metaRedirectFromTrawler": { + "description": "If set, it means that the redirect of type META was detected by Trawler (as opposed to the content processor.) Only makes sense when type is META.", + "type": "boolean" + }, + "type": { + "enum": [ + "PERMANENT", + "TEMPORARY", + "WIKIPEDIA_DEPRECATED", + "JAVASCRIPT", + "META", + "SINGLE_FRAME", + "CRYPTO301", + "LINK_REL_CANONICAL", + "SINGLE_IFRAME", + "WEBKIT", + "META_FRAGMENT", + "SINGLE_CHOICE_300", + "SINGLE_PAGE", + "DATAFILE", + "HTTP_REFRESH", + "HTTP_POST", + "HTML5_HISTORY_API", + "AJAX_CRAWLING" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Deprecated.", + "", + "", + "", + "", + "Like META, but extracted from HTTP headers.", + "Usually caused by JavaScript. The HTTP method", + "of the target URL is POST. The URL in address bar is modified without", + "reloading (usually by Javascript). Similar with DATAFILE. Only used for dup" + ], + "type": "string" + } + }, + "type": "object" + }, + "IndexingConverterRichContentData": { + "description": "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).", + "id": "IndexingConverterRichContentData", + "properties": { + "range": { + "items": { + "$ref": "IndexingConverterRichContentDataRange" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingConverterRichContentDataRange": { + "description": "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.", + "id": "IndexingConverterRichContentDataRange", + "properties": { + "rangeType": { + "enum": [ + "ORIGINAL_AND_PROCESSED", + "ORIGINAL_ONLY", + "PROCESSED_ONLY", + "ORIGINAL_AND_INTERMEDIATE", + "INTERMEDIATE_ONLY" + ], + "enumDescriptions": [ + "no longer generated", + "", + "", + "no longer generated", + "no longer generated" + ], + "type": "string" + }, + "size": { + "description": "Range size when uncompressed, in bytes.", + "format": "int32", + "type": "integer" + }, + "sourceType": { + "description": "The source of this range of content. Present iff 'type' is PROCESSED_ONLY or INTERMEDIATE_ONLY. Note: 'source_type' is not present for ORIGINAL_AND_PROCESSED, ORIGINAL_ONLY, and ORIGINAL_AND_INTERMEDIATE because for those range types the source of their content is the original crawled content.", + "enum": [ + "SEPARATOR", + "FRAME", + "DOMTRACKER_JAVASCRIPT", + "FLASH", + "IFRAME", + "WEBKIT_PHRASES_DEPRECATED", + "WEBKIT_CONTENT_REPLACEMENT" + ], + "enumDescriptions": [ + "No longer generated. It was used for whitespace and tags (e.g. ) added to separate other ranges.", + "No longer generated. It was used for content inserted from a frame.", + "No longer generated. It was used for content generated by DomTracker JavaScript execution.", + "No longer generated. It was used for content generated by executing flash animations.", + "No longer generated. It was used for content inserted from an iframe.", + "No longer generated. It was used for text content inserted from WebKit rendering.", + "Used for content from WebKit rendering replacing all the crawled content." + ], + "type": "string" + }, + "sourceUrl": { + "description": "The source URL of this range of content. Present iff 'source_type' is present and 'source_type' is FRAME or FLASH or IFRAME.", + "type": "string" + }, + "text": { + "description": "The content of the range, compressed with 'text_compression_method'. Present iff 'type' is ORIGINAL_ONLY or ORIGINAL_AND_INTERMEDIATE or INTERMEDIATE_ONLY. Useful to reconstruct the original content or the intermediate content. Note: 'text' is not present for ORIGINAL_AND_PROCESSED and PROCESSED_ONLY because the processed content is already stored separately (in the contents column, and in CompositeDoc.doc.Content.Representation).", + "format": "byte", + "type": "string" + }, + "textCompressionMethod": { + "description": "Method used to compress the 'text' field. May be present only when the 'text' is present.", + "enum": [ + "TEXT_COMPRESSION_NONE", + "TEXT_COMPRESSION_BMDIFF" + ], + "enumDescriptions": [ + "The text is not compressed.", + "The text is BMDiff encoded using the processed content as dictionary." + ], + "type": "string" + } + }, + "type": "object" + }, + "IndexingConverterRobotsInfo": { + "description": "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.", + "id": "IndexingConverterRobotsInfo", + "properties": { + "contentExpiry": { + "description": "time in unix time format after which this content should not be shown in the results. This in inferred from the X-Robots-Tag HTTP header with unavailable_after: Do not use this field directly. There is a column called content_expiration in Alexandria that includes this and other signals.", + "format": "int32", + "type": "integer" + }, + "convertToRobotedReason": { + "enum": [ + "BLOCKING_HOST", + "EMPTY_PAGE", + "MOBILE_IP_RESTRICTED", + "CLOAKING_4XX", + "UNSUPPORTED_PROTOCOL" + ], + "enumDescriptions": [ + "", + "", + "Mobile crawler failed to crawl the webpage, but its crawl status was changed to ROBOTED because it is in mobile whitelist.", + "URL cloaking googlebot with 4xx response.", + "URL redirects to unsupported protocol in trawler, but the protocol is actually visitable on device." + ], + "type": "string" + }, + "disallowedReason": { + "format": "int32", + "type": "integer" + }, + "indexifembeddedReason": { + "description": "IMPORTANT: if you add a new field here, update the MergeRobotsInfo() function to merge the new field.", + "format": "int32", + "type": "integer" + }, + "maxImagePreview": { + "description": "Max image preview restriction applied to this data. A value of THUMBNAIL_UNSPECIFIED can be treated as though there is no restriction.", + "enum": [ + "THUMBNAIL_UNSPECIFIED", + "NONE", + "STANDARD", + "LARGE" + ], + "enumDescriptions": [ + "Not specified, no preview policy-related restrictions apply (but other restrictions like Fair Use still do).", + "Publisher explicitly requires a no-image treatment.", + "Translates to 50k pixels.", + "Translates to 300k pixels." + ], + "type": "string" + }, + "maxSnippetLength": { + "description": "Max snippet preview restriction applied to this data. If this field is zero, it indicates that no snippet data can be displayed, therefore this field should be checked using has_max_snippet_length to determine if it was set.", + "format": "int64", + "type": "string" + }, + "noarchiveReason": { + "format": "int32", + "type": "integer" + }, + "nofollowReason": { + "format": "int32", + "type": "integer" + }, + "noimageframeoverlayReason": { + "format": "int32", + "type": "integer" + }, + "noimageindexReason": { + "format": "int32", + "type": "integer" + }, + "noindexReason": { + "description": "Bit map of RobotedReasons values. When set to a non-zero value, the document should not be indexed or archived etc. based on the name of the tag.", + "format": "int32", + "type": "integer" + }, + "nopreviewReason": { + "format": "int32", + "type": "integer" + }, + "nosnippetReason": { + "format": "int32", + "type": "integer" + }, + "notranslateReason": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingConverterShingleFingerprint": { + "description": "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.", + "id": "IndexingConverterShingleFingerprint", + "properties": { + "metadata": { + "format": "uint64", + "type": "string" + }, + "value": { + "description": "Repeated to allow for fingerprints larger than 64-bits.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingCrawlerIdServingDocumentIdentifier": { + "id": "IndexingCrawlerIdServingDocumentIdentifier", + "properties": { + "doubleIndexingExperimentId": { + "description": "Only for double indexing experiments. This field is set for duplicated documents so that docjoin users will not see duplicated docs.", + "type": "string" + }, + "dupExperimentId": { + "description": "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.", + "type": "string" + }, + "key": { + "description": "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\u0026 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.", + "type": "string" + } + }, + "type": "object" + }, + "IndexingDocjoinerAnchorPhraseSpamInfo": { + "description": "Following signals identify spike of spammy anchor phrases. Anchors created during the spike are tagged with LINK_SPAM_PHRASE_SPIKE.", + "id": "IndexingDocjoinerAnchorPhraseSpamInfo", + "properties": { + "phraseAnchorSpamCount": { + "description": "How many spam phrases found in the anchors among unique domains.", + "format": "float", + "type": "number" + }, + "phraseAnchorSpamDays": { + "description": "Over how many days 80% of these phrases were discovered.", + "format": "float", + "type": "number" + }, + "phraseAnchorSpamDemoted": { + "description": "Total number of demoted anchors.", + "format": "uint32", + "type": "integer" + }, + "phraseAnchorSpamEnd": { + "description": "Time when anchor spam spike ended with padding.", + "format": "uint32", + "type": "integer" + }, + "phraseAnchorSpamFraq": { + "description": "Spam phrases fraction of all anchors of the document.", + "format": "float", + "type": "number" + }, + "phraseAnchorSpamPenalty": { + "description": "Combined penalty for anchor demotion.", + "format": "float", + "type": "number" + }, + "phraseAnchorSpamProcessed": { + "description": "Total number of observed anchors.", + "format": "uint32", + "type": "integer" + }, + "phraseAnchorSpamRate": { + "description": "Average daily rate of spam anchor discovery.", + "format": "float", + "type": "number" + }, + "phraseAnchorSpamStart": { + "description": "Time when anchor spam spike started with padding.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingDocjoinerAnchorSpamInfo": { + "description": "Following structure summarizes output of AnchorSpamPenalizer. Spammy anchors are tagged with LINK_SPAM_PHRASE_PENALIZER and demoted to SPAM locality in anchor-localizer.cc", + "id": "IndexingDocjoinerAnchorSpamInfo", + "properties": { + "anchorEnd": { + "description": "End date of the last anchor of the document.", + "format": "uint32", + "type": "integer" + }, + "anchorFraq": { + "description": "Ratio of spam demoted period to all anchor period.", + "format": "float", + "type": "number" + }, + "anchorStart": { + "description": "Start date of the first anchor of the document.", + "format": "uint32", + "type": "integer" + }, + "demoted": { + "description": "Following field record details of anchor demotion in action. How many anchors were demoted.", + "format": "uint32", + "type": "integer" + }, + "demotedAll": { + "description": "Demoted all anchors in the period or only anchors classified as spam.", + "type": "boolean" + }, + "demotedEnd": { + "description": "End date of the demotion period.", + "format": "uint32", + "type": "integer" + }, + "demotedStart": { + "description": "Start date of the demotion period.", + "format": "uint32", + "type": "integer" + }, + "phraseCount": { + "description": "Following fields record signals used in anchor spam classification. How many spam phrases found in the anchors among unique domains.", + "format": "float", + "type": "number" + }, + "phraseDays": { + "description": "Over how many days 80% of these phrases were discovered.", + "format": "float", + "type": "number" + }, + "phraseFraq": { + "description": "Spam phrases fraction of all anchors of the document.", + "format": "float", + "type": "number" + }, + "phraseRate": { + "description": "Average daily rate of spam anchor discovery.", + "format": "float", + "type": "number" + }, + "processed": { + "description": "Total number of processed anchors.", + "format": "uint32", + "type": "integer" + }, + "sampled": { + "description": "True if anchors were sampled during observation phrase.", + "type": "boolean" + }, + "sources": { + "description": "Detailed information about trusted sources and match computation. Populated only when --anchorspam_penalizer_debug=true.", + "items": { + "$ref": "IndexingDocjoinerAnchorTrustedInfo" + }, + "type": "array" + }, + "spamDebugInfo": { + "description": "Additional debug information about computation of spam probability.", + "type": "string" + }, + "spamPenalty": { + "description": "Combined penalty for anchor demotion.", + "format": "float", + "type": "number" + }, + "spamProbability": { + "description": "Predicted probability of spam.", + "format": "float", + "type": "number" + }, + "trustedDemoted": { + "description": "Number of trusted anchors used in computation of spam probability.", + "format": "uint32", + "type": "integer" + }, + "trustedExamples": { + "description": "Examples of trusted sources.", + "type": "string" + }, + "trustedMatching": { + "description": "Number of trusted anchors with anchor text matching spam terms.", + "format": "uint32", + "type": "integer" + }, + "trustedTarget": { + "description": "Following fields record details about trusted anchors True if is this URL is on trusted source.", + "type": "boolean" + }, + "trustedTotal": { + "description": "Total number of trusted sources for this URL.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingDocjoinerAnchorStatistics": { + "description": "Statistics of the anchors in a docjoin. Next available tag ID: 63.", + "id": "IndexingDocjoinerAnchorStatistics", + "properties": { + "anchorCount": { + "format": "int32", + "type": "integer" + }, + "anchorPhraseCount": { + "description": "The number of unique anchor phrases. Capped by the constant kMaxAnchorPhraseCountInStats (=5000) defined in indexing/docjoiner/anchors/anchor-manager.cc.", + "format": "int32", + "type": "integer" + }, + "anchorSpamInfo": { + "$ref": "IndexingDocjoinerAnchorSpamInfo", + "description": "This structure contains signals and penalties of AnchorSpamPenalizer. It replaces phrase_anchor_spam_info above, that is deprecated." + }, + "anchorsWithDedupedImprovanchors": { + "description": "The number of anchors for which some ImprovAnchors phrases have been removed due to duplication within source org.", + "format": "int32", + "type": "integer" + }, + "badbacklinksPenalized": { + "description": "Whether this doc is penalized by BadBackLinks, in which case we should not use improvanchor score in mustang ascorer.", + "type": "boolean" + }, + "baseAnchorCount": { + "format": "int32", + "type": "integer" + }, + "baseOffdomainAnchorCount": { + "format": "int32", + "type": "integer" + }, + "droppedHomepageAnchorCount": { + "format": "int32", + "type": "integer" + }, + "droppedLocalAnchorCount": { + "format": "int32", + "type": "integer" + }, + "droppedNonLocalAnchorCount": { + "format": "int32", + "type": "integer" + }, + "droppedRedundantAnchorCount": { + "description": "Sum of anchors_dropped in the repeated group RedundantAnchorInfo, but can go higher if the latter reaches the cap of kMaxRecordsToKeep. (indexing/docjoiner/anchors/anchor-loader.cc), currently 10,000", + "format": "int32", + "type": "integer" + }, + "fakeAnchorCount": { + "format": "int32", + "type": "integer" + }, + "forwardedAnchorCount": { + "format": "int32", + "type": "integer" + }, + "forwardedOffdomainAnchorCount": { + "format": "int32", + "type": "integer" + }, + "globalAnchorDelta": { + "description": "Metric of number of changed global anchors computed as, size(union(previous, new) - intersection(previous, new)).", + "format": "int32", + "type": "integer" + }, + "linkBeforeSitechangeTaggedAnchors": { + "format": "int32", + "type": "integer" + }, + "localAnchorCount": { + "format": "int32", + "type": "integer" + }, + "lowCorpusAnchorCount": { + "format": "int32", + "type": "integer" + }, + "lowCorpusOffdomainAnchorCount": { + "format": "int32", + "type": "integer" + }, + "mediumCorpusAnchorCount": { + "format": "int32", + "type": "integer" + }, + "mediumCorpusOffdomainAnchorCount": { + "format": "int32", + "type": "integer" + }, + "minDomainHomePageLocalOutdegree": { + "description": "Minimum local outdegree of all anchor sources that are domain home pages as well as on the same domain as the current target URL.", + "format": "int32", + "type": "integer" + }, + "minHostHomePageLocalOutdegree": { + "description": "Minimum local outdegree of all anchor sources that are host home pages as well as on the same host as the current target URL.", + "format": "int32", + "type": "integer" + }, + "nonLocalAnchorCount": { + "format": "int32", + "type": "integer" + }, + "offdomainAnchorCount": { + "format": "int32", + "type": "integer" + }, + "ondomainAnchorCount": { + "format": "int32", + "type": "integer" + }, + "onsiteAnchorCount": { + "format": "int32", + "type": "integer" + }, + "pageFromExpiredTaggedAnchors": { + "description": "Set in SignalPenalizer::FillInAnchorStatistics.", + "format": "int32", + "type": "integer" + }, + "pageMismatchTaggedAnchors": { + "format": "int32", + "type": "integer" + }, + "penguinEarlyAnchorProtected": { + "description": "Doc is protected by goodness of early anchors.", + "type": "boolean" + }, + "penguinLastUpdate": { + "description": "BEGIN: Penguin related fields. Timestamp when penguin scores were last updated. Measured in days since Jan. 1st 1995.", + "format": "int32", + "type": "integer" + }, + "penguinPenalty": { + "description": "Page-level penguin penalty (0 = good, 1 = bad).", + "format": "float", + "type": "number" + }, + "penguinTooManySources": { + "description": "Doc not scored because it has too many anchor sources. END: Penguin related fields.", + "type": "boolean" + }, + "perdupstats": { + "items": { + "$ref": "IndexingDocjoinerAnchorStatisticsPerDupStats" + }, + "type": "array" + }, + "phraseAnchorSpamInfo": { + "$ref": "IndexingDocjoinerAnchorPhraseSpamInfo", + "description": "Following signals identify spike of spammy anchor phrases. Anchors created during the spike are tagged with LINK_SPAM_PHRASE_SPIKE." + }, + "redundantAnchorForPhraseCapCount": { + "description": "Total anchor dropped due to exceed per domain phrase cap. Equals to sum of anchors_dropped in the repeated group RedundantAnchorInfoForPhraseCap, but can go higher if the latter reaches the cap of kMaxDomainsToKeepForPhraseCap (indexing/docjoiner/anchors/anchor-loader.h), currently 1000.", + "format": "int32", + "type": "integer" + }, + "redundantanchorinfo": { + "items": { + "$ref": "IndexingDocjoinerAnchorStatisticsRedundantAnchorInfo" + }, + "type": "array" + }, + "redundantanchorinfoforphrasecap": { + "items": { + "$ref": "IndexingDocjoinerAnchorStatisticsRedundantAnchorInfoForPhraseCap" + }, + "type": "array" + }, + "scannedAnchorCount": { + "description": "The total number of anchors being scanned from storage.", + "format": "int32", + "type": "integer" + }, + "skippedAccumulate": { + "description": "A count of the number of times anchor accumulation has been skipped for this document. Note: Only used when canonical.", + "format": "int32", + "type": "integer" + }, + "skippedOrReusedReason": { + "description": "Reason to skip accumulate, when skipped, or Reason for reprocessing when not skipped.", + "type": "string" + }, + "spamLog10Odds": { + "description": "The log base 10 odds that this set of anchors exhibits spammy behavior. Computed in the AnchorLocalizer.", + "format": "float", + "type": "number" + }, + "timestamp": { + "description": "Walltime of when anchors were accumulated last.", + "format": "int32", + "type": "integer" + }, + "topPrOffdomainAnchorCount": { + "format": "int32", + "type": "integer" + }, + "topPrOndomainAnchorCount": { + "format": "int32", + "type": "integer" + }, + "topPrOnsiteAnchorCount": { + "description": "According to anchor quality bucket, anchor with pagrank \u003e 51000 is the best anchor. anchors with pagerank \u003c 47000 are all same.", + "format": "int32", + "type": "integer" + }, + "totalDomainPhrasePairsAboveLimit": { + "description": "The following should be equal to the size of the following repeated group, except that it can go higher than 10,000.", + "format": "int32", + "type": "integer" + }, + "totalDomainPhrasePairsSeenApprox": { + "description": "Number of domain/phrase pairs in total -- i.e. how many anchors we would have if the domain/phrase cutoff was set to 1 instead of 200. This is \"approx\" for large anchor clusters because there can be double counting when the LRU cache forgets about rare domain/phrase pairs.", + "format": "int32", + "type": "integer" + }, + "totalDomainsAbovePhraseCap": { + "description": "Number of domains above per domain phrase cap. We see too many phrases in the domains.", + "format": "int32", + "type": "integer" + }, + "totalDomainsSeen": { + "description": "Number of domains seen in total.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingDocjoinerAnchorStatisticsPerDupStats": { + "description": "------------------------------------------------------------------------- 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.", + "id": "IndexingDocjoinerAnchorStatisticsPerDupStats", + "properties": { + "anchorCount": { + "description": "Count of anchors kept from forwarding.", + "format": "int32", + "type": "integer" + }, + "collectType": { + "description": "This is EcnCollectType in anchor-ecn-matcher.h for the latest ECN of this dup: - kCollectNormal = 0, // Normal collection. - kCollectUnforwarded = 1, // Forwarding leader docid match only. - kCollectWhitelisted = 2, // Collected anchors matching whitelist. - kCollectNone = 4 // Skipped ECN anchor cluster.", + "format": "int32", + "type": "integer" + }, + "dupUrl": { + "description": "If missing, the same as the canonical.", + "type": "string" + }, + "offdomainAnchorCount": { + "description": "Count of offdomain anchors.", + "format": "int32", + "type": "integer" + }, + "redundantAnchorCount": { + "description": "Count of redundant anchors.", + "format": "int32", + "type": "integer" + }, + "scannedAnchorCount": { + "description": "The number of anchors being scanned from storage per dupforwarding.", + "format": "int32", + "type": "integer" + }, + "timestamp": { + "description": "Walltime when this was scanned last.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingDocjoinerAnchorStatisticsRedundantAnchorInfo": { + "description": "------------------------------------------------------------------------- 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).", + "id": "IndexingDocjoinerAnchorStatisticsRedundantAnchorInfo", + "properties": { + "anchorsDropped": { + "format": "int64", + "type": "string" + }, + "domain": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "IndexingDocjoinerAnchorStatisticsRedundantAnchorInfoForPhraseCap": { + "id": "IndexingDocjoinerAnchorStatisticsRedundantAnchorInfoForPhraseCap", + "properties": { + "anchorsDropped": { + "format": "int32", + "type": "integer" + }, + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "IndexingDocjoinerAnchorTrustedInfo": { + "description": "This message summarized anchors of one trusted site.", + "id": "IndexingDocjoinerAnchorTrustedInfo", + "properties": { + "matchedScore": { + "description": "Difference in KL-divergence from spam and non-spam anchors. Value \u003e0 indicate that anchor text from this trusted source is similar to anchors classified as spam which means that spammy anchors are legitimate.", + "format": "float", + "type": "number" + }, + "matchedScoreInfo": { + "description": "Detailed debug information about computation of trusted anchors match. Populated only when --anchorspam_penalizer_debug=true", + "items": { + "type": "string" + }, + "type": "array" + }, + "phrasesScore": { + "description": "Count of anchors classified as spam using anchor text.", + "format": "float", + "type": "number" + }, + "site": { + "description": "Site name from anchor.source().site().", + "type": "string" + }, + "text": { + "description": "Tokenized text of all anchors from the site.", + "items": { + "type": "string" + }, + "type": "array" + }, + "trustedScore": { + "description": "Fraction of pages with newsy anchors on the site, \u003e0 for trusted sites.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "IndexingDocjoinerCDocBuildInfo": { + "description": "Holds extra info except annotations and raw cdoc for buildint the final cdoc.", + "id": "IndexingDocjoinerCDocBuildInfo", + "properties": { + "extraMessage": { + "$ref": "Proto2BridgeMessageSet" + } + }, + "type": "object" + }, + "IndexingDocjoinerDataVersion": { + "description": "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.", + "id": "IndexingDocjoinerDataVersion", + "properties": { + "acceleratedShoppingSignal": { + "$ref": "IndexingDocjoinerDataVersionVersionInfo", + "description": "LINT.ThenChange(//depot/google3/indexing/ames/spanner/schema/websearch_main.sdl)" + }, + "localyp": { + "$ref": "IndexingDocjoinerDataVersionVersionInfo" + }, + "localypVersion": { + "type": "string" + }, + "modernFormatContent": { + "$ref": "IndexingDocjoinerDataVersionVersionInfo" + }, + "modernFormatContentVersion": { + "type": "string" + }, + "navboost": { + "$ref": "IndexingDocjoinerDataVersionVersionInfo", + "description": "LINT.IfChange" + }, + "navboostVersion": { + "description": "DEPRECATED", + "type": "string" + }, + "rankembed": { + "$ref": "IndexingDocjoinerDataVersionVersionInfo" + }, + "universalFacts": { + "$ref": "IndexingDocjoinerDataVersionVersionInfo" + }, + "videoScoringSignal": { + "$ref": "IndexingDocjoinerDataVersionVersionInfo" + }, + "videoScoringSignalVersion": { + "type": "string" + }, + "volt": { + "$ref": "IndexingDocjoinerDataVersionVersionInfo" + }, + "voltVersion": { + "type": "string" + } + }, + "type": "object" + }, + "IndexingDocjoinerDataVersionVersionInfo": { + "id": "IndexingDocjoinerDataVersionVersionInfo", + "properties": { + "humanReadableVersion": { + "type": "string" + }, + "timestampMicros": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "IndexingDocjoinerServingTimeClusterId": { + "description": "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.", + "id": "IndexingDocjoinerServingTimeClusterId", + "properties": { + "clusterId": { + "description": "The unique id to distinguish members in cluster. It could be generated in different ways according to reason, e.g. LINK_REL_NEXT_PREVIOUS: it is the fingerprint of the URL of index 0; PAGE_PARAMETER_INFO: it is the fingerprint of pagination pattern (pagination_pattern_fp field in PageParamInfo message).", + "format": "uint64", + "type": "string" + }, + "indexForDebugging": { + "description": "The member index of this document in cluster. Starts from \"0\". Note that indices of pages in a cluster may not be consistent with each other, because we may update them at different points in time. Currently only used for debugging.", + "format": "int32", + "type": "integer" + }, + "reason": { + "description": "The reason why this document is clustered into this cluster.", + "enum": [ + "UNKNOWN", + "LINK_REL_NEXT_PREVIOUS", + "PAGE_PARAMETER_INFO", + "DEPRECATED_DO_NOT_USE_LANGUAGE_REGION_VARIATION", + "SITE_DUP", + "FLIPPED_CANONICAL", + "MOBILE_REDIRECTION_DUP", + "BROKEN_REL_CANONICAL", + "ROBOTED_SAME_HOST", + "DEPRECATED_DO_NOT_USE_SAME_PRE_RENDER_CHECKSUM" + ], + "enumDescriptions": [ + "", + "The documents are clustered together by link rel=next/previous elements.", + "The documents are clustered together by page parameter information.", + "Language/Region variation. No longer used as serving-time-cluster-IDs, handled via it's own fields and twiddler.", + "The documents are clustered together if they belong to sites which are suspected to be identical.", + "The documents are canonicals chosen from the same dup cluster, but at slightly different points in time. This could be because they're serving from different tiers, e.g., daily vs. base, or different segments in teragoogle; or it could simply be a result of non-atomic updates to librarian. While Alexandria guarantees that there will only ever be one canonical, it is possible for an old and a new canonical to be serving at the same time. In such a case, they should share this ID.", + "The documents are clustered together if they are redirected to the same URL on smartphone. This type is only used for smartphone traffic.", + "The documents are connected by a rel=canonical link that has been found invalid by mr-bad-rel-canonicals.", + "The documents that are roboted and belong to the same host and have the same suffix are clustered together. See http://sites/index-dups/clustering/roboted for details.", + "The documents that have same pre-rendering checksum 96bit are clustered together. This is used as a safe guard for the launch of replacing pre-render checksum 96bit with rendered checksum 96bit." + ], + "type": "string" + } + }, + "type": "object" + }, + "IndexingDocjoinerServingTimeClusterIds": { + "description": "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.", + "id": "IndexingDocjoinerServingTimeClusterIds", + "properties": { + "clusterId": { + "description": "The exact cluster metadata for each individual cluster if any.", + "items": { + "$ref": "IndexingDocjoinerServingTimeClusterId" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingDupsComputedLocalizedAlternateNamesLocaleEntry": { + "id": "IndexingDupsComputedLocalizedAlternateNamesLocaleEntry", + "properties": { + "clusterId": { + "description": "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.", + "format": "uint64", + "type": "string" + }, + "deviceMatchInfo": { + "description": "Device match info calculated only by URL pattern.", + "enum": [ + "UNKNOWN", + "WWW_TO_WWW", + "WWW_TO_M", + "M_TO_M", + "M_TO_WWW" + ], + "enumDescriptions": [ + "", + "Both canonical and localized url are www version.", + "Canonical is www version but localized url is m version.", + "Both canonical and localized url are m version.", + "Canonical is m version but localized url is www version." + ], + "type": "string" + }, + "language": { + "description": "Language/Region code. E.g. \"en-US\" or \"de\". Allowed values are language-region codes based on the W3C recommendation http://www.w3.org/TR/html401/struct/dirlang.html#langcodes", + "type": "string" + }, + "url": { + "description": "The alternate url representing the content for a specific language and region (or language only).", + "type": "string" + }, + "urlEncoding": { + "description": "see webutil/urlencoding", + "format": "int32", + "type": "integer" + }, + "urlRegionCode": { + "description": "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", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedCluster": { + "id": "IndexingDupsLocalizedLocalizedCluster", + "properties": { + "boostSourceBlocker": { + "description": "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/local_result_twiddler_v2.cc", + "type": "boolean" + }, + "cluster": { + "items": { + "$ref": "IndexingDupsLocalizedLocalizedClusterCluster" + }, + "type": "array" + }, + "deprecatedHreflangInfo": { + "$ref": "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo", + "description": "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": { + "$ref": "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo" + }, + "documentLanguage": { + "description": "The language of this document (as detected by on-page language detection, not influenced by external anchor signals or other indirect conclusions).", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "hreflangTargetLink": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLinkSets" + }, + "inbodyTargetLink": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLinkSets" + }, + "outlinksTargetLink": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLinkSets" + }, + "sitedupRuleId": { + "description": "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).", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "warningMessage": { + "description": "A warning indicator that a problem has occurred, e.g. cross-domain links being filtered early. The warning is just presented for debugging purposes.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterCluster": { + "id": "IndexingDupsLocalizedLocalizedClusterCluster", + "properties": { + "clusterId": { + "description": "The cluster id, a unique int64 id for the cluster.", + "format": "uint64", + "type": "string" + }, + "clusterType": { + "enum": [ + "UNDEFINED_CLUSTER_TYPE", + "COMPUTED_ORGMAP", + "COMPUTED_URL_PATTERN", + "HREFLANG_ANNOTATION", + "HREFLANG_ANNOTATION_OPTIMISTIC_GUESS", + "HREFLANG_ANNOTATION_FROM_BODY", + "PAGE_OUTLINKS", + "NOT_USED_4", + "NOT_USED_6", + "NOT_USED_8", + "NOT_USED_9" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "deprecatedDebugInfo": { + "description": "Debug Info being attached to each cluster, to understand how it was created. That info is stored in Alexandria, but not available during serving.", + "items": { + "type": "string" + }, + "type": "array" + }, + "filteringEnabled": { + "description": "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).", + "type": "boolean" + }, + "language": { + "description": "The language as represented by the URL, e.g. 'use this document on the cluster for German queries'.", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "regionCode": { + "description": "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", + "format": "int32", + "type": "integer" + }, + "urlRegionCode": { + "description": "Similar to region_code, but always has the value filled in if known. Unknown Region Code", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo": { + "description": "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.", + "id": "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfo", + "properties": { + "fpOutlinks": { + "description": "A fingerprint of all outlink-URLs of this document that have been used as algorithmic input.", + "format": "uint64", + "type": "string" + }, + "lastModifiedInputTimestampMs": { + "description": "The last time the set of outgoing links of this document was modified. This is the input for our calculation.", + "format": "int64", + "type": "string" + }, + "lastProcessedOutputTimestampMs": { + "description": "The last time the cross-validation of the links was done. Between that last timestamp and now, only cached results have been used.", + "format": "int64", + "type": "string" + }, + "linkMember": { + "description": "All verified members of the cluster (including recursive inclusions).", + "items": { + "$ref": "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkMember" + }, + "type": "array" + }, + "unvalidatedOutlink": { + "items": { + "$ref": "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkData" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkData": { + "id": "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkData", + "properties": { + "annotationSource": { + "enum": [ + "HTTP", + "HTML", + "SITEMAP" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "crawlTimestamp": { + "description": "If set, represents the crawl timestamp. If not set, there is no known crawl timestamp for that url.", + "format": "int32", + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkMember": { + "id": "IndexingDupsLocalizedLocalizedClusterLinkBasedClusterInfoLinkMember", + "properties": { + "annotationSource": { + "enum": [ + "HTTP", + "HTML", + "SITEMAP" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "languageCode": { + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterTargetLink": { + "description": "Message containing information about the localized URL linked to from this document in a localized-variation-context.", + "id": "IndexingDupsLocalizedLocalizedClusterTargetLink", + "properties": { + "linkData": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLinkLink" + }, + "metaData": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLinkMetadata" + }, + "targetDocData": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLinkTargetDocData" + }, + "validationStatus": { + "enum": [ + "VALIDATION_UNKNOWN", + "SELFLINK", + "NO_BACKLINK", + "HAS_BACKLINK", + "BLINDLY_TRUSTED", + "BLINDLY_TRUSTED_WITH_BACKLINK" + ], + "enumDescriptions": [ + "", + "Link is a self link to source URL.", + "Link doesn't have a backlink path to source URL.", + "Link has a backlink path to source URL.", + "Link is missing data or was crawled prior to source URL, so its blindly trusted with no verfication of a backlink.", + "The union of BLINDLY_TRUSTED and HAS_BACKLINK." + ], + "type": "string" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterTargetLinkLink": { + "description": "Basic information about the link target, i.e. the URL or the language code it's believed to represent.", + "id": "IndexingDupsLocalizedLocalizedClusterTargetLinkLink", + "properties": { + "annotationSourceInfo": { + "items": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLinkLinkAnnotationSourceInfo" + }, + "type": "array" + }, + "crossDomain": { + "description": "For a link A-\u003eB where B is represented by this proto, cross_domain := Host(A) != Host(B).", + "type": "boolean" + }, + "url": { + "description": "The URL the information in TargetLink refers to.", + "type": "string" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterTargetLinkLinkAnnotationSourceInfo": { + "description": "Message describing where was the link discovered and with what language annotation.", + "id": "IndexingDupsLocalizedLocalizedClusterTargetLinkLinkAnnotationSourceInfo", + "properties": { + "anchorText": { + "description": "Optional field for storing the anchor text the language code was extracted from. Applies to outlinks only.", + "type": "string" + }, + "annotationSource": { + "description": "Information about where the language code was extracted from.", + "enum": [ + "HTTP", + "HTML", + "SITEMAP" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "languageCode": { + "description": "Language code extracted from the URL (hreflang or outlink). One URL can represent multiple language codes, like e.g. de-at and de-ch", + "type": "string" + }, + "sourceFeedUrl": { + "description": "Optional field that stores the feed URL where a Sitemap annotation was discovered. Only populated if annotation_source is SITEMAP.", + "type": "string" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterTargetLinkMetadata": { + "description": "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).", + "id": "IndexingDupsLocalizedLocalizedClusterTargetLinkMetadata", + "properties": { + "firstSeenMs": { + "description": "When was the first time a link seen. Defaults to last crawled timestamp.", + "format": "int64", + "type": "string" + }, + "lastVerifiedMs": { + "description": "When was the last time a link validated. Validation is the process of (re)reading the relevant information for a linked document from its respective row in the document table. Data needed for understanding the correctness of the cluster is copied over to have it available locally.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterTargetLinkSets": { + "id": "IndexingDupsLocalizedLocalizedClusterTargetLinkSets", + "properties": { + "directTargetLink": { + "description": "Direct links are the simplest scenarios where A simply links to B.", + "items": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLink" + }, + "type": "array" + }, + "indirectTargetLink": { + "description": "Repeated field for URLs that are not directly linking to the document TargetLink refers to. We can encounter the following scenario: A -\u003e Links to B -\u003e 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'.", + "items": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLink" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingDupsLocalizedLocalizedClusterTargetLinkTargetDocData": { + "description": "Information about the URLs being validated.", + "id": "IndexingDupsLocalizedLocalizedClusterTargetLinkTargetDocData", + "properties": { + "contentLanguage": { + "description": "The detected on-page content language of the document.", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "crawlStatus": { + "enum": [ + "UNKNOWN", + "CONTENT", + "ROBOTED", + "ERROR" + ], + "enumDescriptions": [ + "Default state.", + "Crawled successfully with contents.", + "Roboted from accessing the page.", + "Fatal server-side error, e.g. 404." + ], + "type": "string" + }, + "crawlTimestampSeconds": { + "description": "The timestamp of the last crawl attempt from crawl_timestamp column.", + "format": "int32", + "type": "integer" + }, + "isCanonical": { + "description": "Whether the URL being validated is canonical at the time of processing.", + "type": "boolean" + }, + "outgoingLinkData": { + "description": "Repeated field for data about the outgoing hreflang links that appear in the document that the currently processed URL refers to.", + "items": { + "$ref": "IndexingDupsLocalizedLocalizedClusterTargetLinkLink" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentEmbeddedContentInfo": { + "description": "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", + "id": "IndexingEmbeddedContentEmbeddedContentInfo", + "properties": { + "compressedDocumentTrees": { + "description": "The document's DOM and render tree produced by WebKit as a side effect of rendering the page. It might be compressed or not. Thus, use indexing::embedded_content::UncompressWebkitDocument to decode it.", + "format": "byte", + "type": "string" + }, + "convertedContents": { + "description": "The converted contents, as produced by the same DocumentUpdater transaction that generated the render tree. Useful whenever one of our users wants to experiment with deriving an annotation from the render tree.", + "type": "string" + }, + "embeddedLinksInfo": { + "$ref": "IndexingEmbeddedContentEmbeddedLinksInfo", + "description": "Information about all external resources needed to render this page, a.k.a. embedded links. This includes .css files, images embedded in a page, external javascripts, iframes etc." + }, + "headlessResponse": { + "$ref": "HtmlrenderWebkitHeadlessProtoRenderResponse", + "description": "The headless response for rendering the document." + }, + "isAlternateSnapshot": { + "description": "Indicate if the snapshot is generated from alternate snapshot. If true, the snapshot will be exported even if the snapshot quality score is low.", + "type": "boolean" + }, + "originalEncoding": { + "description": "The original encoding of the content crawled from trawler. It's the value of enum i18n::encodings::encoding. We put a int32 here instead of encoding proto to maintain the compatibility of \"py_api_version = 1\"", + "format": "int32", + "type": "integer" + }, + "rawRedirectInfo": { + "$ref": "IndexingConverterRawRedirectInfo", + "description": "*** DEPRECATED *** This field is only populated in fresh_doc which is shutting down." + }, + "referencedResource": { + "description": "Information about all external resources used to render this page, a.k.a. embedded links. This includes .css files, images embedded in a page, external javascripts, iframes etc.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoReferencedResource" + }, + "type": "array" + }, + "renderedSnapshot": { + "$ref": "HtmlrenderWebkitHeadlessProtoImage", + "description": "Only exist in dry run mode." + }, + "renderedSnapshotImage": { + "description": "Snapshot image of a rendered html document (possibly encoded as png, jpeg, or webp).", + "type": "string" + }, + "renderedSnapshotMetadata": { + "$ref": "SnapshotSnapshotMetadata", + "description": "A collection of values which are needed by the users of the Kodachrome bigtable." + }, + "renderedSnapshotQualityScore": { + "description": "The quality of the image, 0.0 is the worst, 1.0 is the best. If all dependencies are successfully crawled, the quality should be 1.0. If one or more of the dependencies are unknown, the quality will be lower.", + "format": "double", + "type": "number" + }, + "renderingOutputMetadata": { + "$ref": "IndexingEmbeddedContentRenderingOutputMetadata" + }, + "richcontentData": { + "$ref": "IndexingConverterRichContentData", + "description": "The rich content data to recover the original contents from the converted_contents. Useful for offline content analysis." + } + }, + "type": "object" + }, + "IndexingEmbeddedContentEmbeddedLinksInfo": { + "id": "IndexingEmbeddedContentEmbeddedLinksInfo", + "properties": { + "embedderInfo": { + "$ref": "IndexingEmbeddedContentEmbedderInfo", + "description": "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": { + "items": { + "$ref": "IndexingEmbeddedContentLinkInfo" + }, + "type": "array" + }, + "pageSizeInfo": { + "$ref": "IndexingEmbeddedContentPageSizeInfo", + "description": "Page download size." + }, + "sumHttpResponseLength": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "uncrawledLinkUrl": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentEmbedderInfo": { + "id": "IndexingEmbeddedContentEmbedderInfo", + "properties": { + "importanceAsEmbedder": { + "format": "int32", + "type": "integer" + }, + "linkInfo": { + "$ref": "IndexingEmbeddedContentLinkInfo" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentFetchHostCount": { + "description": "Log how many urls finally goes to trawler on a host in rendering.", + "id": "IndexingEmbeddedContentFetchHostCount", + "properties": { + "counter": { + "items": { + "$ref": "IndexingEmbeddedContentFetchHostCountCounter" + }, + "type": "array" + }, + "host": { + "type": "string" + }, + "num": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentFetchHostCountCounter": { + "id": "IndexingEmbeddedContentFetchHostCountCounter", + "properties": { + "name": { + "type": "string" + }, + "num": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentFetchUrlResponseMetadata": { + "description": "Capsulate all metadata annotated from fetch server. This message will typically go through: - EmbeddedContentFetcher, or - EmbeddedLinkGetter-\u003e DenormalizedContent -\u003e ContentStore. And finally deposit in referenced_resources and link_info.", + "id": "IndexingEmbeddedContentFetchUrlResponseMetadata", + "properties": { + "adsResourceType": { + "enum": [ + "ADS_TYPE_UNKNOWN", + "ADS_TYPE_NON_ADS", + "ADS_TYPE_PATTERN", + "ADS_TYPE_CENTERPIECE_ADS_MATCHER" + ], + "enumDescriptions": [ + "", + "Not ads.", + "Ads by pattern.", + "Ads by centerpiece ads matcher." + ], + "type": "string" + }, + "crawlStatus": { + "description": "The field always exists, and has four options: UNKNOWN, CONTENT, ROBOTED and ERROR, which are defined in indexing.converter.CrawlStatus.", + "format": "int32", + "type": "integer" + }, + "criticalResourceType": { + "enum": [ + "UNKNOWN", + "NON_CRITICAL", + "CONTENT_BASED", + "GEOMETRY_LAYOUT_BASED", + "THREE_WAY", + "MANUAL", + "TARGET_MAIN_FRAME", + "ROBOTED" + ], + "enumDescriptions": [ + "", + "Not critical.", + "Critical in terms of content.", + "Critical in terms of geometry layout.", + "Generated by three-way rendering.", + "Manually marked.", + "", + "Roboted critical resources." + ], + "type": "string" + }, + "fetchWithSmartphoneUa": { + "description": "True if the response is fetched with SMARTPHONE user agent.", + "type": "boolean" + }, + "isAdsResource": { + "type": "boolean" + }, + "isCriticalResource": { + "type": "boolean" + }, + "isTrivialResource": { + "type": "boolean" + }, + "numTrawlerFetches": { + "description": "Number of trawler fetches while fetching this URL. In most cases, this number will be 0 or 1.", + "format": "int32", + "type": "integer" + }, + "rewriteMethod": { + "description": "Used for logging purposes only here.", + "type": "string" + }, + "robotsInfo": { + "$ref": "IndexingConverterRobotsInfo", + "description": "Note that this robots_info should only be used for noindex_reason and will only be present for TARGET_MAIN_FRAME / TARGET_SUBFRAME fetches." + } + }, + "type": "object" + }, + "IndexingEmbeddedContentLinkInfo": { + "description": "Information about one embedded link. Next tag: 18", + "id": "IndexingEmbeddedContentLinkInfo", + "properties": { + "contentLength": { + "description": "Size of the HTTP body (payload of the HTTP response, excluding headers), pre-decompression. Equal to the value of the Content-Length header if any. NOTE: if this proto is converted to from ReferencedResource, we have to use the size of the full HTTP response (i.e. http_response_length) as an approximation, as we could not get the size of HTTP headers.", + "format": "int32", + "type": "integer" + }, + "contentType": { + "format": "int32", + "type": "integer" + }, + "crawlDuration": { + "description": "Time spent downloading this resource, in milliseconds. Not a timestamp!", + "format": "int32", + "type": "integer" + }, + "crawlStatus": { + "description": "Enum values for crawl_status are defined in indexing/converter/proto/converter.proto", + "format": "int32", + "type": "integer" + }, + "crawlTimestamp": { + "format": "int32", + "type": "integer" + }, + "deprecatedRedirect": { + "items": { + "type": "string" + }, + "type": "array" + }, + "fetchSourceInfo": { + "description": "Where this resource comes from.", + "items": { + "$ref": "WirelessTranscoderFetchFetchSourceInfo" + }, + "type": "array" + }, + "fetchStatus": { + "$ref": "TrawlerFetchStatus", + "description": "Fetch status from trawler." + }, + "fetchUrlResponseMetadata": { + "$ref": "IndexingEmbeddedContentFetchUrlResponseMetadata", + "description": "Populated from embedded-content fetch server." + }, + "frd": { + "$ref": "TrawlerFetchReplyData", + "description": "FetchReplyData from trawler." + }, + "httpResponseLength": { + "description": "Size of the full HTTP response (headers and body pre-decompression). Semantically equal to content_length plus size of the HTTP headers.", + "format": "int32", + "type": "integer" + }, + "isCacheable": { + "type": "boolean" + }, + "isRobotedContentFromFastnet": { + "type": "boolean" + }, + "uncompressedContentLength": { + "description": "Size of the HTTP body (payload of the HTTP response, excluding headers), post-decompression. Equal to content_length if the body was not compressed to begin with. NOTE: if this proto is converted to from ReferencedResource, we have to use the size of the full HTTP response as an approximation, as we could not get the size of HTTP headers.", + "format": "int32", + "type": "integer" + }, + "url": { + "format": "byte", + "type": "string" + }, + "webkitFetchMetadata": { + "$ref": "HtmlrenderWebkitHeadlessProtoWebKitFetchMetadata" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentOutputGenerationTimestamps": { + "description": "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", + "id": "IndexingEmbeddedContentOutputGenerationTimestamps", + "properties": { + "documentData": { + "format": "int32", + "type": "integer" + }, + "renderedSnapshot": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentPageSizeInfo": { + "description": "Page download size information.", + "id": "IndexingEmbeddedContentPageSizeInfo", + "properties": { + "numImages": { + "description": "Images are also resources. num_images \u003c= num_resources.", + "format": "int32", + "type": "integer" + }, + "numImagesWithContent": { + "description": "Number of images whose crawl status is CONTENT.", + "format": "int32", + "type": "integer" + }, + "numResources": { + "description": "Numbers below don't include embedder.", + "format": "int32", + "type": "integer" + }, + "numResourcesWithContent": { + "description": "Number of resources whose crawl status is CONTENT.", + "format": "int32", + "type": "integer" + }, + "sumHttpResponseLength": { + "description": "Sum of embedder and all referenced resources.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentRenderCacheStats": { + "description": "Fields used to track cache use in the rendering microservice. Next tag available: 6", + "id": "IndexingEmbeddedContentRenderCacheStats", + "properties": { + "cacheExpireTimestampUsec": { + "description": "When the rendered content would expire from the cache in microseconds.", + "format": "int64", + "type": "string" + }, + "crawledSimhashDistance": { + "format": "int32", + "type": "integer" + }, + "lastRenderedTimestampUsec": { + "description": "The last time the document was rendered, in microseconds. Does not update in case of cache use.", + "format": "int64", + "type": "string" + }, + "renderCache": { + "enum": [ + "UNKNOWN_CACHE", + "CACHE_MISS", + "CACHE_SKIPPED", + "ARECA_CACHE", + "CRAWLED_SIMHASH_CACHE" + ], + "enumDescriptions": [ + "", + "We didn't find this document in any cache.", + "We found this document in the cache and decided not to use the cached version.", + "", + "" + ], + "type": "string" + }, + "renderedSimhashDistance": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentRenderRequestConfigConfigParams": { + "id": "IndexingEmbeddedContentRenderRequestConfigConfigParams", + "properties": { + "virtualTime": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentRenderingFetchStats": { + "description": "Fetch stats during rendering.", + "id": "IndexingEmbeddedContentRenderingFetchStats", + "properties": { + "fetchHostCount": { + "description": "A host-\u003ecount mapping to log how many embedded_links in each host finally goes to trawler during rendering.", + "items": { + "$ref": "IndexingEmbeddedContentFetchHostCount" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentRenderingOutputMetadata": { + "description": "Small values from rendering output. It's stored as a column in alexandria document table. Next tag available: 30", + "id": "IndexingEmbeddedContentRenderingOutputMetadata", + "properties": { + "configParams": { + "$ref": "IndexingEmbeddedContentRenderRequestConfigConfigParams" + }, + "exceptions": { + "description": "The exceptions observed during the rendering. In bit-field encoding of enum values of RenderResponse.RenderingException.", + "format": "int64", + "type": "string" + }, + "experimentalRenderTimeMsec": { + "description": "Total GCU time for rendering the document in millisecond. This data is from render_stats.render_cost_mgcu in RenderResponse proto. Note that this is *experimental* field. Please check with rendering-infra@ if you want to use.", + "format": "int32", + "type": "integer" + }, + "generationTimestamps": { + "$ref": "IndexingEmbeddedContentOutputGenerationTimestamps" + }, + "importance": { + "description": "The importance value of the rendered document.", + "format": "int32", + "type": "integer" + }, + "lastNewContentProbingTimestamp": { + "description": "The timestamp of last new content probing.", + "format": "int32", + "type": "integer" + }, + "newTokensPercentageAfterRendering": { + "description": "Percentage of new tokens in the rendered the document content.", + "format": "double", + "type": "number" + }, + "numNewTokensFoundInRendering": { + "format": "int32", + "type": "integer" + }, + "refresh": { + "type": "boolean" + }, + "renderCacheStats": { + "$ref": "IndexingEmbeddedContentRenderCacheStats", + "description": "A collection of fields to track stats on cache use in the Rendering microservice." + }, + "renderEngine": { + "enum": [ + "UNKNOWN", + "BLINK_HEADLESS", + "CHROME_HEADLESS" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "renderEvent": { + "description": "Different types of events which happened during rendering.", + "items": { + "$ref": "HtmlrenderWebkitHeadlessProtoRenderEvent" + }, + "type": "array" + }, + "renderServerCl": { + "description": "The CL from which the render engine was built.", + "format": "int64", + "type": "string" + }, + "renderTreeQualityScore": { + "format": "double", + "type": "number" + }, + "renderedSnapshotSignature": { + "description": "Short signature (usually less than 1 KB) which captures a perceptual hash on the rendered image. This is used to determine whether successive renderings should be output. See the library in googlen/snapshot/shared/similarity.* for more info about how this value is interpreted and used.", + "format": "byte", + "type": "string" + }, + "renderedTimeUsec": { + "description": "Current time in microseconds the document is going through rendering system. This field is set regardless of whether the document is being rendered or if we are skipping rendering by using a cache.", + "format": "int64", + "type": "string" + }, + "renderingFetchStats": { + "$ref": "IndexingEmbeddedContentRenderingFetchStats" + }, + "selectionResult": { + "$ref": "IndexingEmbeddedContentSelectionResult", + "description": "The corpus selection result. Can be used for offline analysis." + }, + "snapshotQualityScore": { + "description": "These scores are copied from htmlrender_webkit_headless_proto.Document.", + "format": "double", + "type": "number" + }, + "withMissingResources": { + "description": "True if there were any missing resources during the rendering.", + "type": "boolean" + } + }, + "type": "object" + }, + "IndexingEmbeddedContentSelectionResult": { + "description": "Output that indicates a url should be in our corpus.", + "id": "IndexingEmbeddedContentSelectionResult", + "properties": { + "renderEffort": { + "enum": [ + "RENDER_NONE", + "RENDER_SKIP", + "RENDER_TRIVIAL", + "RENDER_LIGHT", + "RENDER_CONTROL", + "RENDER_FULL", + "RENDER_FORCE", + "RENDER_REJECT" + ], + "enumDescriptions": [ + "The enum value is also used as decision priority, so we assign sparse values here for possible future effort.", + "Skip rendering by keeping the old data. DEPRECATED", + "Render with minimum resources, i.e., turn on readonly fetch, turn off js and turn off snapshot.", + "Light weight rendering does not generate snapshot.", + "Light weight rendering but we will try our best during rendering and fetching.", + "Render with standard features: fetching all embedded links, turn on javascript, generate snapshot.", + "Always render. DEPRECATED", + "The url can not be rendered, i.e. pdf." + ], + "type": "string" + }, + "selectorId": { + "description": "Indicate which selector has made the decision.", + "enum": [ + "NO_SELECTOR", + "INELIGIBLE", + "NO_INDEX", + "IMPORTANCE", + "HOME_PAGE", + "LIGHT_WEIGHT", + "SMARTPHONE", + "VIDEO_SIGNAL", + "VIDEO_CLASSIFER", + "PINPOINT_SIGNAL", + "CENTER_PIECE_SIGNAL", + "INDEXABLE_FRAGMENT", + "ESCAPED_FRAGMENT", + "FRAGMENT_REDIRECT", + "META_REFRESH_REDIRECT", + "FORCE", + "FORCE_BY_TIMESTAMP", + "INTEREST", + "IMPORTANCE_PROTECTED", + "NOT_SUPPORTED_CRAWLER_ID", + "BLACK_LIST", + "NEWS_ONLY", + "SAMPLER", + "CONTENT_REPLACEMENT_WHITELIST", + "SMART", + "SMART_RANDOM", + "SMARTPHONE_SMART", + "SMARTPHONE_REJECT", + "SMART_GROUND_TRUTH", + "APP", + "CONTROL_GROUP", + "NAVBOOST_COUNT", + "DEFAULT_LIGHT", + "NEWS" + ], + "enumDescriptions": [ + "", + "REJECT", + "REJECT", + "LIGHT SKIP", + "LIGHT", + "LIGHT DEPRECATED", + "LIGHT REJECT DEPRECATED", + "LIGHT SKIP", + "LIGHT SKIP", + "LIGHT", + "LIGHT", + "LIGHT", + "LIGHT", + "LIGHT", + "LIGHT", + "FORCE_FULL DEPRECATED", + "FORCE_FULL DEPRECATED", + "FULL (dry run)", + "LIGHT DEPRECATED", + "REJECT", + "REJECT", + "REJECT - added for Freshdocs", + "REJECT - added for Freshdocs", + "LIGHT (for temporary experiment) DEPRECATED", + "LIGHT TRIVIAL", + "LIGHT", + "LIGHT TRIVIAL DEPRECATED", + "REJECT", + "LIGHT", + "LIGHT", + "CONTROL", + "LIGHT", + "LIGHT", + "FULL" + ], + "type": "string" + } + }, + "type": "object" + }, + "IndexingMlVerticalVerticalItem": { + "id": "IndexingMlVerticalVerticalItem", + "properties": { + "id": { + "description": "Unique ID.", + "format": "int32", + "type": "integer" + }, + "name": { + "description": "The description name.", + "type": "string" + }, + "petacatId": { + "description": "The corresponding Petacat ID.", + "format": "int32", + "type": "integer" + }, + "probability": { + "description": "The probability of the vertical, whose value is in [0.0, 1.0].", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "IndexingMobileInterstitialsProtoDesktopInterstitials": { + "description": "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.", + "id": "IndexingMobileInterstitialsProtoDesktopInterstitials", + "properties": { + "details": { + "items": { + "$ref": "IndexingMobileInterstitialsProtoDesktopInterstitialsDetails" + }, + "type": "array" + }, + "pipelineEpoch": { + "description": "Epoch of the interstitial offline pipeline generating this signal.", + "type": "string" + }, + "pipelinePattern": { + "description": "If present, pipeline_pattern identifies the cluster of URLs for which the signal value was smeared.", + "type": "string" + }, + "urlTree": { + "$ref": "IndexingUrlPatternUrlTreeUrlTree", + "description": "URL tree of interstitial patterns belong to the host, to be used as site-level signal in Index Signals. A pattern may contain a payload InterstitialPatternPayload, which will indicate the violated interstitial types of this pattern." + }, + "violatesDesktopInterstitialPolicy": { + "description": "Overall policy violation status. If this is true, at least one of the InterstitialSignal below indicates a violation.", + "type": "boolean" + } + }, + "type": "object" + }, + "IndexingMobileInterstitialsProtoDesktopInterstitialsDetails": { + "description": "An optional message that may contain details of the signals computation.", + "id": "IndexingMobileInterstitialsProtoDesktopInterstitialsDetails", + "properties": { + "basicInfo": { + "$ref": "IndexingMobileInterstitialsProtoInterstitialBasicInfo" + }, + "isSmearedSignal": { + "description": "Indicates whether the signal value is \"smeared\", e.g. extrapolated from other URLs.", + "type": "boolean" + } + }, + "type": "object" + }, + "IndexingMobileInterstitialsProtoInterstitialBasicInfo": { + "description": "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.", + "id": "IndexingMobileInterstitialsProtoInterstitialBasicInfo", + "properties": { + "absoluteBox": { + "$ref": "HtmlrenderWebkitHeadlessProtoBox", + "description": "Stores the geometry of detected interstitial in absolute page pixels." + }, + "contentType": { + "enum": [ + "UNSPECIFIED", + "GENERIC", + "APP_INSTALL_PROMO", + "COOKIE", + "ADULT_CONTENT", + "LOGIN", + "HEALTH_CARE_PROFESSIONAL", + "WHITELISTED", + "ADS", + "SUBSCRIPTION" + ], + "enumDescriptions": [ + "", + "Interstitial content analysis was run, but failed to determine a particular content type.", + "Interstitial content appears to promote a mobile app install.", + "Interstitial content appears to be in response to legal obligation to warn users about usage of cookies on the web page.", + "Interstitial content appears to be in response to legal obligation to warn users about adult content on the web page.", + "Interstitial content appears to be asking users to login. Also the page seems to have private content that is not publicly viewable.", + "Interstitial content appears to be asking users whether they are health care professionals.", + "A special type indicating whitelisted content that never violates interstitial policy.", + "Interstitial content appears to be ads.", + "Interstitial content appears to be asking users to subscribe to newsletter." + ], + "type": "string" + }, + "detectionMode": { + "enum": [ + "NORMAL", + "DELAYED", + "AFTER_SCROLL" + ], + "enumDescriptions": [ + "Normal rendering. Default value. For this detection uses the default value of the rendering completion delay FLAGS_webkit_completion_virtual_delay (currently 5 seconds) to detect the overlay interstitials, i.e. the page is analyzed as it appears at 5 seconds after rendering start time.", + "Delayed rendering. For this detection mode, the web page is allowed to run for an extended duration, and then analysed. This detects a common type of overlay interstitials that appear after a longer timeout.", + "After scroll rendering. For this detection mode, the web page is allowed to run for an initial duration, then a user scroll action is emulated, before analysing the page contents. This detects a common type of overlay interstitials that appear after a user scroll action." + ], + "type": "string" + }, + "layoutType": { + "enum": [ + "INTERSTITIAL_LAYOUT_TYPE_UNSPECIFIED", + "OVERLAY", + "SCROLLABLE", + "STANDALONE", + "DENSITY" + ], + "enumDescriptions": [ + "", + "Overlay layout type includes interstitials implemented as popups, typically using CSS z-index to hover above main content and occlude it.", + "Scrollable layout type includes large inline interstitials that are typically inserted before the main content starts, and require the user to scroll past them.", + "Standalone layout type includes interstitials that appear as a separate page, and typically redirect the browser to main content after a delay or a user action.", + "Could be any type of layout. Usually it means it's an interstitial not for its layout but for its content." + ], + "type": "string" + } + }, + "type": "object" + }, + "IndexingMobileVoltCoreWebVitals": { + "description": "Core Web Vitals (https://web.dev/vitals/) carried in VoltSignal: the field data metrics extracted from UKM aggregated 75-percentile data.", + "id": "IndexingMobileVoltCoreWebVitals", + "properties": { + "cls": { + "description": "Cumulative Layout Shift.", + "format": "int64", + "type": "string" + }, + "fid": { + "description": "First Input Delay.", + "format": "int64", + "type": "string" + }, + "inp": { + "format": "int64", + "type": "string" + }, + "lcp": { + "description": "Largest Contentful Paint.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "IndexingMobileVoltVoltPerDocData": { + "description": "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.", + "id": "IndexingMobileVoltVoltPerDocData", + "properties": { + "desktopCwv": { + "$ref": "IndexingMobileVoltCoreWebVitals", + "description": "Desktop Core Wev Vital metrics. NOTE(yunchengz): This field will not be populated in Muppet." + }, + "desktopDisplayUrlIsHttps": { + "type": "boolean" + }, + "displayUrlIsHttps": { + "type": "boolean" + }, + "mobileCwv": { + "$ref": "IndexingMobileVoltCoreWebVitals", + "description": "Mobile Core Web Vital metrics. NOTE(yunchengz): This field will not be populated in Muppet." + } + }, + "type": "object" + }, + "IndexingPrivacyAccessAccessRequirements": { + "id": "IndexingPrivacyAccessAccessRequirements", + "properties": { + "restrictionCategories": { + "items": { + "enum": [ + "UNSPECIFIED", + "CHILD_SAFETY_CONTENT" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingSignalAggregatorAdaptiveIntervalData": { + "description": "State data for AdaptiveFrequencyEstimator", + "id": "IndexingSignalAggregatorAdaptiveIntervalData", + "properties": { + "clicksGoodInterval": { + "format": "double", + "type": "number" + }, + "clicksGoodPriorWeight": { + "format": "double", + "type": "number" + }, + "clicksTotalInterval": { + "format": "double", + "type": "number" + }, + "clicksTotalPriorWeight": { + "format": "double", + "type": "number" + }, + "ctrwiInterval": { + "format": "double", + "type": "number" + }, + "ctrwiPriorWeight": { + "format": "double", + "type": "number" + }, + "dwellsInterval": { + "format": "double", + "type": "number" + }, + "dwellsPriorWeight": { + "format": "double", + "type": "number" + }, + "luDwellsInterval": { + "format": "double", + "type": "number" + }, + "luDwellsPriorWeight": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "IndexingSignalAggregatorAgeWeightedCoverageData": { + "description": "Accumulated coverage data for an url using a constant half-life time. Next tag: 28", + "id": "IndexingSignalAggregatorAgeWeightedCoverageData", + "properties": { + "averageChanceTime": { + "description": "Weighted averged timestamps of the decayed chances.", + "format": "double", + "type": "number" + }, + "chances": { + "description": "Numbers below are all total in the decayed manner. To get rate of impression/clicks, divide by chances.", + "format": "double", + "type": "number" + }, + "clicksBad": { + "format": "double", + "type": "number" + }, + "clicksGood": { + "format": "double", + "type": "number" + }, + "clicksImage": { + "format": "double", + "type": "number" + }, + "clicksTotal": { + "format": "double", + "type": "number" + }, + "clicksUnclassified": { + "format": "double", + "type": "number" + }, + "coverageTimestamp": { + "description": "Epoch seconds at which this weighted coverage data was calculated.", + "format": "int64", + "type": "string" + }, + "ctrWeightedImpressions": { + "format": "double", + "type": "number" + }, + "dwells": { + "description": "Dwells from KnowledgePanel and WebAnswers.", + "format": "double", + "type": "number" + }, + "firstBaseCoverageTimestamp": { + "description": "Epoch seconds at which this url first gets coverage in BASE.", + "format": "int64", + "type": "string" + }, + "firstCoveragePagerankNs": { + "description": "The pagerank when the url was serving for the first time.", + "format": "int32", + "type": "integer" + }, + "firstCoverageTimestamp": { + "description": "Epoch seconds at which this url first gets coverage data.", + "format": "int64", + "type": "string" + }, + "firstseen": { + "format": "int64", + "type": "string" + }, + "impressions": { + "format": "double", + "type": "number" + }, + "intervalData": { + "$ref": "IndexingSignalAggregatorAdaptiveIntervalData", + "description": "Interval Data to track the average time between clicks_total, clicks_good, and ctr_weighted_impression." + }, + "language": { + "format": "int32", + "type": "integer" + }, + "lastDwellDateInDays": { + "description": "Indicates the date when this document received the last KnowledgePanel or WebAnswer dwell. Note: The date is identified in terms of number of days since Epoch.", + "format": "int32", + "type": "integer" + }, + "lastGoodClickDateInDays": { + "description": "Indicates the date when this document received the last good click. Note: The date is identified in terms of number of days since Epoch.", + "format": "int32", + "type": "integer" + }, + "lastImpressionDateInDays": { + "description": "Indicates the date when this document received the last impression. Note: The date is identified in terms of number of days since Epoch.", + "format": "int32", + "type": "integer" + }, + "lastLuDwellDateInDays": { + "description": "Indicates the date when this document received the last LocalUniversal dwell. Note: The date is identified in terms of number of days since Epoch.", + "format": "int32", + "type": "integer" + }, + "lastPseudoImpressionsDateInDays": { + "description": "Indicates the date when this document received the last pseudo-impression. I.e., when it was retrieved as a result but GWS would not show it because of the document's age in the index. Note: The date is identified in terms of number of days since Epoch.", + "format": "int32", + "type": "integer" + }, + "luDwells": { + "description": "Dwells from LocalUniversal.", + "format": "double", + "type": "number" + }, + "repid": { + "description": "Repid in Alexandria pipeline.", + "format": "byte", + "type": "string" + }, + "totalChances": { + "description": "Total number of chances on this urls (not decayed).", + "format": "int64", + "type": "string" + }, + "url": { + "type": "string" + }, + "urlfp": { + "description": "Temporary variable, only used during mapreduce.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "IndexingSignalAggregatorAggregatedScore": { + "description": "Aggregated signal used by NumericSignalAggregator. Next field id: 25", + "id": "IndexingSignalAggregatorAggregatedScore", + "properties": { + "deviation": { + "description": "A number reflecting the deviation of Url scores.", + "format": "double", + "type": "number" + }, + "m2": { + "description": "State variables for West \u0026 Chan variance algorithm used to be stored here directly. Now they are stored inside RunningMeanAndVarianceInternalState.", + "format": "double", + "type": "number" + }, + "maxScoreUrl": { + "$ref": "IndexingSignalAggregatorUrlScore", + "description": "Input UrlScore with max score." + }, + "mean": { + "format": "double", + "type": "number" + }, + "meanScore": { + "description": "Overall stats that are only available in final aggregation results. The aggregated score.", + "format": "double", + "type": "number" + }, + "minScoreUrl": { + "$ref": "IndexingSignalAggregatorUrlScore", + "description": "Input UrlScore with min score." + }, + "numImportantUrls": { + "format": "int64", + "type": "string" + }, + "numUrlsMatched": { + "description": "Final Stats that are also available in intermediate output. Number of Urls matching the class.", + "format": "int64", + "type": "string" + }, + "numUrlsWithSignal": { + "description": "Not every matching url has a signal.", + "format": "int64", + "type": "string" + }, + "patternLayer": { + "description": "Experimental layer of the corresponding pattern.", + "enum": [ + "PRODUCTION", + "EXPERIMENTAL_LAYER_A", + "EXPERIMENTAL_LAYER_B", + "NEXT_LAYER" + ], + "enumDescriptions": [ + "", + "", + "", + "Reserved for the next layer." + ], + "type": "string" + }, + "patternsUsedInMediation": { + "description": "Optionally populated in mediators. A list of patterns that actually contributed to the final mediated signal.", + "items": { + "type": "string" + }, + "type": "array" + }, + "percentile": { + "description": "Score percentile of matching urls. If present, it has N entries for buckets of roughly equal number of urls. N is specified the aggregation. The value is the min score in that bucket.", + "items": { + "format": "double", + "type": "number" + }, + "type": "array" + }, + "runningMeanAndVarianceInternalState": { + "$ref": "IndexingSignalAggregatorRunningMeanAndVarianceInternalState" + }, + "samples": { + "description": "Random samples.", + "items": { + "$ref": "IndexingSignalAggregatorUrlScore" + }, + "type": "array" + }, + "scores": { + "description": "for calculating percentile", + "items": { + "format": "double", + "type": "number" + }, + "type": "array" + }, + "signalId": { + "description": "For debugging purposes, this is an id of the signal associated with this AggregatedScore. For pattern score, this may be the length of the pattern.", + "format": "int32", + "type": "integer" + }, + "singleUrlScore": { + "$ref": "IndexingSignalAggregatorUrlScore", + "description": "If this field presents, it is for a single url. No other field should appear." + }, + "totalScore": { + "description": "summation varaible used to get mean", + "format": "double", + "type": "number" + }, + "totalScoreLow": { + "description": "low-order part of total_score", + "format": "double", + "type": "number" + }, + "totalScoreSqr": { + "description": "summation variable for calculating deviation note, these are now only used for legacy and debugging purposes", + "format": "double", + "type": "number" + }, + "totalScoreSqrLow": { + "description": "low order part of total_score_sq", + "format": "double", + "type": "number" + }, + "totalWeight": { + "description": "for calculating weighted mean/dev", + "format": "double", + "type": "number" + }, + "totalWeightLow": { + "description": "low order part of total_weight", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "IndexingSignalAggregatorRunningMeanAndVarianceInternalState": { + "description": "Internal state of the West \u0026 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 \u0026 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 \u003e= 0 for each i.", + "id": "IndexingSignalAggregatorRunningMeanAndVarianceInternalState", + "properties": { + "m2": { + "description": "The variable which in the Wikipedia page is referred to as M_2: m2 = w_1 * (x_1 - mean)^2 + ... + w_n * (x_n - mean)^2. The algorithm implemented in RunningMeanAndVarianceUtil provides a way to update m2 in a numerically stable way when the data set grows. If total_weight = 0, then m2 is meaningless, and its value is unspecified, except that it must be finite and \u003e= 0.", + "format": "double", + "type": "number" + }, + "mean": { + "description": "Mean of the data set, mean = (w_1 * x_1 + ... + w_n * x_n) / total_weight. The algorithm implemented in RunningMeanAndVarianceUtil provides a way to update this mean in a numerically stable way when the data set grows. If total_weight = 0, then mean is meaningless, and its value is unspecified, except that it must be finite.", + "format": "double", + "type": "number" + }, + "totalWeight": { + "description": "Total weight of the data set, total_weight = w_1 + ... + w_n.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "IndexingSignalAggregatorSccData": { + "id": "IndexingSignalAggregatorSccData", + "properties": { + "parentPattern": { + "$ref": "IndexingSignalAggregatorSccSignal" + }, + "pattern": { + "$ref": "IndexingSignalAggregatorSccSignal", + "description": "The most immediate pattern data." + } + }, + "type": "object" + }, + "IndexingSignalAggregatorSccSignal": { + "id": "IndexingSignalAggregatorSccSignal", + "properties": { + "clicksBad": { + "format": "double", + "type": "number" + }, + "clicksImage": { + "format": "double", + "type": "number" + }, + "clicksTotal": { + "format": "double", + "type": "number" + }, + "debugInfo": { + "description": "For debugging purpose only.", + "items": { + "type": "string" + }, + "type": "array" + }, + "numImageUrls": { + "description": "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.", + "format": "double", + "type": "number" + }, + "numUrls": { + "format": "int64", + "type": "string" + }, + "pattern": { + "description": "For debugging purpose only.", + "type": "string" + } + }, + "type": "object" + }, + "IndexingSignalAggregatorUrlPatternSignals": { + "description": "Contains only the signals necessary to perform per-URL click prediction. Used by Index Selection for scoring. NEXT ID TO USE: 7", + "id": "IndexingSignalAggregatorUrlPatternSignals", + "properties": { + "coverage": { + "$ref": "IndexingSignalAggregatorAgeWeightedCoverageData" + }, + "pagerankScore": { + "$ref": "IndexingSignalAggregatorAggregatedScore" + }, + "patternScore": { + "$ref": "IndexingSignalAggregatorAggregatedScore" + }, + "priorSignal": { + "items": { + "$ref": "IndexingSignalAggregatorUrlPatternSignalsPriorSignal" + }, + "type": "array" + }, + "regexpPatternScore": { + "$ref": "IndexingSignalAggregatorAggregatedScore" + }, + "sccData": { + "$ref": "IndexingSignalAggregatorSccData" + } + }, + "type": "object" + }, + "IndexingSignalAggregatorUrlPatternSignalsPriorSignal": { + "description": "This message provides a container for any signal used in scoring, and allows UrlPatternSignals to extend beyond (regexp_)pattern_score and pagerank_score.", + "id": "IndexingSignalAggregatorUrlPatternSignalsPriorSignal", + "properties": { + "aggregatedScore": { + "$ref": "IndexingSignalAggregatorAggregatedScore" + }, + "priorSignalId": { + "enum": [ + "PRIOR_SIGNAL_PAGERANK", + "PRIOR_SIGNAL_PATTERN", + "PRIOR_SIGNAL_REGEXP_PATTERN", + "PRIOR_SIGNAL_CLICKRANK", + "PRIOR_SIGNAL_LENGTH", + "PRIOR_SIGNAL_SIBYL", + "PRIOR_SIGNAL_TENSORFLOW" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "IndexingSignalAggregatorUrlScore": { + "description": "Representation of numeric signal of a url.", + "id": "IndexingSignalAggregatorUrlScore", + "properties": { + "dsacNumWeeklyPerfRecords": { + "description": "The number of weekly performance records if the UrlScore is extracted from the DSAC data. It should be used in case a URL is no longer served. As of 2014-10-14, this field is for the evaluation purpose only.", + "format": "int32", + "type": "integer" + }, + "eligibleExperimentalLayer": { + "description": "If this field is set, it indicates the url is eligible to be aggregated to one of the experimental layers.", + "enum": [ + "PRODUCTION", + "EXPERIMENTAL_LAYER_A", + "EXPERIMENTAL_LAYER_B", + "NEXT_LAYER" + ], + "enumDescriptions": [ + "", + "", + "", + "Reserved for the next layer." + ], + "type": "string" + }, + "firstServedTimestamp": { + "description": "The timestamp of the first time this document is served anywhere.", + "format": "int64", + "type": "string" + }, + "isImportant": { + "description": "Whether this url has important signal. Used for keeping patterns that match too few URLs but some of them have good clicks.", + "type": "boolean" + }, + "score": { + "description": "score might be missing if the url does not have signal.", + "format": "double", + "type": "number" + }, + "url": { + "description": "url might be missing if we can get it from sstable key.", + "type": "string" + }, + "weight": { + "description": "weight for this url.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "IndexingSpeechSpeechPropertiesProto": { + "description": "The information about spoken content that's based on purely the media resource contents (and not the embedding page or context, etc).", + "id": "IndexingSpeechSpeechPropertiesProto", + "properties": { + "audioDuration": { + "description": "Duration of audio in processed fragment (including non-speech), in seconds.", + "format": "int32", + "type": "integer" + }, + "audioOnly": { + "description": "If true, the media file is audio-only. If false, also has video track(s).", + "type": "boolean" + }, + "estimatedAudioDuration": { + "description": "Estimated duration of audio in the whole file (including non-speech), in seconds. If this is greater than 0, then it will either be equal to audio_duration (when truncated_file is false), or to the length of the content (audio or video) according to the file header (when truncated_file is true).", + "format": "int32", + "type": "integer" + }, + "estimatedAudioDurationConfidence": { + "description": "Our confidence in the duration estimate, on a scale from 0 (not confident) to 1 (very confident). An estimate should have a confidence of at least 0.5 if it is to be shown to users.", + "format": "float", + "type": "number" + }, + "languageCode": { + "description": "The spoken language, see i18n/identifiers/languagecode.h and go/gl2014. This may or may not match the language of the written page. (Examples: \"en\", \"sv\", \"zh-CN\").", + "type": "string" + }, + "numWords": { + "description": "Total number of recognized words in processed fragment.", + "format": "int32", + "type": "integer" + }, + "recognizerAccuracy": { + "description": "Measure of the estimated output accuracy from the speech recognition code, from 0 to 1. Based on word-level confidence and possibly other factors.", + "format": "float", + "type": "number" + }, + "speechDuration": { + "description": "Duration of speech in processed fragment, in seconds.", + "format": "int32", + "type": "integer" + }, + "truncatedFile": { + "description": "If true, we may have processed a truncated file (most likely due to a size-cutoff when crawling). As a result, the audio duration is a lower bound and the other fields reflect only the processed prefix of the file.", + "type": "boolean" + } + }, + "type": "object" + }, + "IndexingUrlPatternUrlTreeBigTreeBranch": { + "description": "Representing a dominating branch of the URL tree.", + "id": "IndexingUrlPatternUrlTreeBigTreeBranch", + "properties": { + "features": { + "$ref": "IndexingUrlPatternUrlTreeUrlFeatures" + }, + "patternId": { + "description": "The fingerprint of the features string.", + "format": "uint64", + "type": "string" + }, + "payload": { + "$ref": "Proto2BridgeMessageSet" + } + }, + "type": "object" + }, + "IndexingUrlPatternUrlTreeUrlFeature": { + "id": "IndexingUrlPatternUrlTreeUrlFeature", + "properties": { + "fingerprint": { + "format": "uint64", + "type": "string" + }, + "fingerprintWithGroupInType": { + "description": "If consider position when calculating fingerprint of url feature.", + "type": "boolean" + }, + "groupInType": { + "description": "Used together w/ type field to group features, for finding features with too many possible values.", + "type": "string" + }, + "type": { + "enum": [ + "HOST_SEGMENT", + "PATH_SEGMENT", + "DOCUMENT_NAME_SEGMENT", + "QUERY_NAME", + "QUERY_VALUE", + "HOST_SEGMENT_COUNT", + "PATH_SEGMENT_COUNT", + "QUERY_COUNT", + "GMAIL_SUBJECT", + "GMAIL_BODY_TEXT", + "GMAIL_BODY_TREE", + "PROTOCOL", + "PACKAGE_ID", + "SCHEME", + "AUTHORITY", + "APP_URI_PATH_SEGMENT", + "APP_URI_PATH_SEGMENT_COUNT", + "APP_URI_DOCUMENT_NAME_SEGMENT", + "APP_URI_QUERY_NAME", + "APP_URI_QUERY_VALUE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "app uri: :////", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "IndexingUrlPatternUrlTreeUrlFeatures": { + "id": "IndexingUrlPatternUrlTreeUrlFeatures", + "properties": { + "feature": { + "items": { + "$ref": "IndexingUrlPatternUrlTreeUrlFeature" + }, + "type": "array" + } + }, + "type": "object" + }, + "IndexingUrlPatternUrlTreeUrlTree": { + "id": "IndexingUrlPatternUrlTreeUrlTree", + "properties": { + "bigBranch": { + "description": "Keeping information for dominating branches separately, to prevent docs on smaller branches from being dropping during sampling.", + "items": { + "$ref": "IndexingUrlPatternUrlTreeBigTreeBranch" + }, + "type": "array" + }, + "debugInfo": { + "$ref": "IndexingUrlPatternUrlTreeUrlTreeDebugInfo" + }, + "key": { + "$ref": "IndexingUrlPatternUrlTreeUrlTreeKey" + }, + "node": { + "description": "node(0) is root.", + "items": { + "$ref": "IndexingUrlPatternUrlTreeUrlTreeNode" + }, + "type": "array" + }, + "retrievalTimestamp": { + "description": "Used in url pattern matcher for cache invalidation.", + "format": "uint32", + "type": "integer" + }, + "site": { + "description": "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.", + "type": "string" + }, + "timestamp": { + "description": "The time when this UrlTree is built, encoded as seconds past the epoch (Jan 1, 1970).", + "format": "int32", + "type": "integer" + }, + "treeInfo": { + "$ref": "Proto2BridgeMessageSet", + "description": "Any additional information." + } + }, + "type": "object" + }, + "IndexingUrlPatternUrlTreeUrlTreeDebugInfo": { + "id": "IndexingUrlPatternUrlTreeUrlTreeDebugInfo", + "properties": { + "innerSimilarity": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "IndexingUrlPatternUrlTreeUrlTreeKey": { + "description": "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", + "id": "IndexingUrlPatternUrlTreeUrlTreeKey", + "properties": { + "crawlerId": { + "enum": [ + "UNKNOWN", + "DESKTOP", + "SMARTPHONE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "domain": { + "type": "string" + }, + "hostname": { + "type": "string" + } + }, + "type": "object" + }, + "IndexingUrlPatternUrlTreeUrlTreeNode": { + "id": "IndexingUrlPatternUrlTreeUrlTreeNode", + "properties": { + "indexOfSubTreeWithSplittingFeature": { + "format": "int32", + "type": "integer" + }, + "indexOfSubTreeWithoutSplittingFeature": { + "format": "int32", + "type": "integer" + }, + "parent": { + "format": "int32", + "type": "integer" + }, + "pathFromRoot": { + "description": "The path from root to current node. This is only used for debugging.", + "type": "string" + }, + "patternId": { + "description": "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.", + "format": "uint64", + "type": "string" + }, + "payload": { + "$ref": "Proto2BridgeMessageSet" + }, + "splittingFeature": { + "$ref": "IndexingUrlPatternUrlTreeUrlFeature" + }, + "splittingFeatureScore": { + "description": "The information gain of content features when selecting this splitting feature to split the node.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "KaltixPerDocData": { + "id": "KaltixPerDocData", + "properties": { + "KaltixRank": { + "description": "approx. 2 bytes for top 1B", + "format": "int32", + "type": "integer" + }, + "LocalKaltixRank": { + "description": "empty for now", + "format": "int32", + "type": "integer" + }, + "SiteKaltixRank": { + "description": "empty for now", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "KeGovernanceTypedRegions": { + "description": "Wrapper message containing list of regions and their corresponding type of region signal to use in data governance.", + "id": "KeGovernanceTypedRegions", + "properties": { + "regionType": { + "description": "The particular type of region should be explicitly set to disambiguate.", + "enum": [ + "UNKNOWN", + "FRONTEND_REGION_CODE", + "TRUSTED_LOCATION_VIEW_REGION_CODE" + ], + "enumDescriptions": [ + "", + "Region code as seen by search frontend (FrontendRequest::region_code). This is based on the user's physical location, and can be overridden by both the region picker in search settings and the gl url param. Among Oolong location views, this corresponds to the unique jurisdiction view, i.e. JurisdictionLocationView::createUnique if the LocationContext is fetched by GWS.", + "This represents a trusted location that is hard to spoof and can be used for legal purposes such as applying restrictions based on the user's \"physical\" location. Among Oolong's location views, this corresponds to TrustedLocationView." + ], + "type": "string" + }, + "regions": { + "description": "Values are go/iii RegionCode in capital case. It is a good practice to keep elements in this list unique, although not enforced. In case of duplicated entries, they'll be treated as if there were only one entry of the same value.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersAnyType": { + "description": "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@.", + "id": "KnowledgeAnswersAnyType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersAttributeType": { + "description": "An attribute type configures a value whose type is intended to be a attribute defined in the schema.", + "id": "KnowledgeAnswersAttributeType", + "properties": { + "attribute": { + "description": "Use in parsing: the value filled with must be in the list of this. If no attribute ids are specified, this value can be filled with any attribute.", + "items": { + "type": "string" + }, + "type": "array" + }, + "pivotEntitySlot": { + "description": "If exist, the attribute will be applied on the given pivot slot. This helps type checking when qrewrite constructs function calls with an attribute-typed slot.", + "type": "string" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersBooleanType": { + "description": "A BooleanType configures a yes/no value.", + "id": "KnowledgeAnswersBooleanType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersCollectionType": { + "description": "A CollectionType configures a value whose type is intended to be a collection.", + "id": "KnowledgeAnswersCollectionType", + "properties": { + "collection": { + "description": "The collection this value is filled with must be one of these collections (denoted by a /collection/* id). If no collections are specified, this value can be filled with any collection.", + "items": { + "type": "string" + }, + "type": "array" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersCompoundType": { + "description": "A CompoundType configures a value composed of multiple answer values.", + "id": "KnowledgeAnswersCompoundType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersContainerType": { + "id": "KnowledgeAnswersContainerType", + "properties": { + "slotNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersDateType": { + "description": "A DateType configures a value whose type is intended to be a date. LINT.IfChange Next id: 16", + "id": "KnowledgeAnswersDateType", + "properties": { + "allowAllRangeResolutions": { + "description": "If true, will allow all resolutions that are ranges.", + "type": "boolean" + }, + "allowAllResolutions": { + "description": "If true, overrides all other options in this message and allows any kind of DateTime annotation.", + "type": "boolean" + }, + "allowAllResolutionsExceptHolidays": { + "description": "If true, will allow all resolutions except holidays.", + "type": "boolean" + }, + "allowAllResolutionsWithout4digit24hrTime": { + "description": "If true, will allow resolutions that aren't contiguous sequences of 4 digits annotated as 24-hr times. These are often mis-interpreted years or postcodes.", + "type": "boolean" + }, + "allowAllResolutionsWithoutTime": { + "description": "If true, will allow resolutions without an explicit hour. Symbolic ranges such as [this evening] are not considered as explicit hour, but the range [1-3pm] is considered as explicit.", + "type": "boolean" + }, + "allowDayResolution": { + "description": "If true, will parse a mention to DateTime of resolution day. This allows parsing strings like \"August 30th\", \"2012-12-25\";", + "type": "boolean" + }, + "allowDayResolutionExceptHolidaysOrOrdinal": { + "description": "If true, will allow day resolutions except holidays or ordinal numbers, such as \"today\", \"December 13\", but \"Christmas\", \"first\" are not allowed.", + "type": "boolean" + }, + "allowHourResolution": { + "description": "If true, will allow resolutions with an explicit hour such as \"8am\", \"5pm\".", + "type": "boolean" + }, + "allowMonthResolution": { + "description": "If true, will parse a mention to DateTime of resolution month. This allows parsing strings like \"this August\", \"2012-12\";", + "type": "boolean" + }, + "allowNowResolution": { + "description": "If true, will allow \"now\" resolutions, but not any other time", + "type": "boolean" + }, + "allowSymbolicTime": { + "description": "If true, will allow symbolic time resolutions such as \"tonight\".", + "type": "boolean" + }, + "allowTimeResolutionsWithoutExplicitTimezone": { + "description": "If true, will allow time resolutions without an explicit timezone.", + "type": "boolean" + }, + "allowYearResolution": { + "description": "If true, will parse a mention to DateTime of resolution year. This allows parsing strings like \"Next year \", \"2010\";", + "type": "boolean" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + }, + "subType": { + "enum": [ + "DATE_TIME_DEFAULT", + "DATE_ONLY", + "DATE_WITH_DAY_OF_WEEK", + "DATE_YEAR_ONLY", + "DATE_MONTH_ONLY" + ], + "enumDescriptions": [ + "By default, formats as precise as possible based on the answer's datetime value. E.g., [oscar award date] -\u003e March 27,2022 at 5:00 PM PDT", + "Only keeps the date even if answer value has the time. E.g., [Top gun release date] -\u003e May 27, 2022", + "Only keeps the date and add the day of the week. E.g., [presidential election vote date] -\u003e Tuesday, November 8, 2022", + "Only keeps the year even if answer value has the full date or time. E.g., [bond movies] -\u003e 1962", + "Only keeps the month even if answer value has the full date or time. E.g., [Obama birth Month] -\u003e August" + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersDependencyType": { + "id": "KnowledgeAnswersDependencyType", + "properties": { + "containerType": { + "$ref": "KnowledgeAnswersContainerType" + }, + "intersectType": { + "$ref": "KnowledgeAnswersIntersectType" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + }, + "sameType": { + "$ref": "KnowledgeAnswersSameType" + }, + "unionType": { + "$ref": "KnowledgeAnswersUnionType" + } + }, + "type": "object" + }, + "KnowledgeAnswersDialogReferentialResolution": { + "description": "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] -\u003e \"his\" is resolved from the Obama entity obama -\u003e \"he\" is resolved from the Obama entity starbucks -\u003e Q2 is resolved from the list of shops", + "id": "KnowledgeAnswersDialogReferentialResolution", + "properties": { + "refersToFullMrf": { + "description": "True iff this ReferentialResolution is part of an intent and refers to the full MRF subtree (rather than just the intent).", + "type": "boolean" + }, + "resolutionType": { + "enum": [ + "NONE", + "SAFT_PRONOUN", + "NOUN_PHRASE", + "LOCAL_SEMANTIC_FUNCTION_MERGE", + "CONTEXTUAL_SUBGRAMMAR_ANNOTATION", + "RIPPLES_LIST_SELECTION" + ], + "enumDescriptions": [ + "No referential resolution.", + "A referential pronoun like \"she\" was used to resolve a matching entity.", + "A phrase like \"this man\" or \"that movie\" was used to resolve a matching entity.", + "Legacy Local SemanticFn logic was used to combine the previous interpretation with the current one.", + "The Location subgrammar produced an annotation from an AttentionalEntity.", + "Ripples performed a list selection when the user issues a query like \"the third one\"." + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersDurationType": { + "description": "A DurationType configures a value whose type is a duration.", + "id": "KnowledgeAnswersDurationType", + "properties": { + "rangeConstraint": { + "$ref": "KnowledgeAnswersRangeConstraint", + "description": "Range constraint limits the set of durations accepted. The values of the range are in milliseconds. Currently, this constraint is only enforced in Loose Parser." + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersEntityType": { + "description": "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: 9", + "id": "KnowledgeAnswersEntityType", + "properties": { + "collection": { + "description": "This field specifies that containing entity must be: - in *any* 'collection' if 'in_all_collections' is false (default) - in *every* 'collection' if 'in_all_collections' is true. The collection field contains strings of the form '/collection/'. If no collections are specified, this value can be filled with any entity. A collection specified as an empty string has a special meaning for Aqua induction, which is that the type includes all entities.", + "items": { + "type": "string" + }, + "type": "array" + }, + "excludedCollection": { + "description": "The entity that this value is filled with must not be any of these collections (denoted by a /collection/* id). This restriction does not affect parsing; it is used only to filter attributes in the extraction flow.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "The entity that this value is filled with must be one of the following explicitly specified KG-ids.", + "items": { + "type": "string" + }, + "type": "array" + }, + "identifier": { + "description": "The entity that this value is filled with must be of the explicit type and/or contain the explicitly specified id. This field can not be used for kg mids, which should directly use the id field above.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryIdentifier" + }, + "type": "array" + }, + "inAllCollections": { + "type": "boolean" + }, + "includeGeolocationData": { + "description": "If this is set to true for a slot and the entity is a location, the latitude and longitude will be available in variables $SlotName_Latitude and $SlotName_Longitude, respectively. The latitude and longitude data comes from KG.", + "type": "boolean" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + }, + "stbrDomain": { + "description": "This field is deprecated. It is not removed completely since this proto was saved with this field in proto text files used by the Grammy tool.", + "items": { + "enum": [ + "UNKNOWN", + "DEFAULT", + "SPORTS", + "FINANCE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentModifiers": { + "description": "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", + "id": "KnowledgeAnswersIntentModifiers", + "properties": { + "alternateLanguage": { + "description": "Language of all of the non-annotation tokens of the query interpretation, if it is different than |language|. This can happen with English smearing, e.g. [height rousseau] will trigger as \"fr\" when issued in fr/FR, but really the language is \"en\". This can also happen when we have extra information about the language model, e.g. language=\"zh\", alternate_language=\"zh-Hant\".", + "type": "string" + }, + "definiteness": { + "enum": [ + "UNKNOWN_DEFINITENESS", + "DEFINITE", + "INDEFINITE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "language": { + "description": "Language of parsed query.", + "type": "string" + }, + "mood": { + "description": "Since there's only IMPERATIVE, consider using Marker.command instead.", + "enum": [ + "UNKNOWN_MOOD", + "IMPERATIVE" + ], + "enumDescriptions": [ + "", + "E.g. [turn on the light] Other possible values: Interrogative, Subjunctive, ..." + ], + "type": "string" + }, + "plurality": { + "enum": [ + "UNKNOWN_PLURALITY", + "SINGULAR", + "PLURAL" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "polarQuestion": { + "description": "Whether or not the question is a polar (yes/no) question.", + "type": "boolean" + }, + "sentiment": { + "$ref": "SentimentSentiment", + "description": "Sentiment analysis attached to an intent implies the sentiment user expressed behind that query. This is generated by the Empathetic Servlet in the QRewrite." + }, + "tense": { + "enum": [ + "UNKNOWN_TENSE", + "PRESENT", + "FUTURE", + "PAST" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryAnnotationLayerSignals": { + "description": "Signals coming from the Annotation Layer of TUIG. See more details at http://go/unified-intent-generation-apis.", + "id": "KnowledgeAnswersIntentQueryAnnotationLayerSignals", + "properties": { + "customVehicleActionArgumentAnnotatorSignals": { + "$ref": "KnowledgeAnswersIntentQueryCustomVehicleActionArgumentAnnotatorSignals" + }, + "freetextAnnotationSignals": { + "$ref": "KnowledgeAnswersIntentQueryFreetextAnnotationSignals" + }, + "nimbleAnnotationSignals": { + "$ref": "KnowledgeAnswersIntentQueryNimbleAnnotationSignals" + }, + "ntprAnnotationSignals": { + "$ref": "KnowledgeAnswersIntentQueryNTPRAnnotationSignals" + }, + "qrefAnnotationSignals": { + "$ref": "KnowledgeAnswersIntentQueryQrefAnnotationSignals" + }, + "semanticAnnotationSignals": { + "$ref": "KnowledgeAnswersIntentQuerySemanticAnnotationSignals" + }, + "teleportArgumentAnnotatorSignals": { + "$ref": "KnowledgeAnswersIntentQueryTeleportArgumentAnnotatorSignals" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgPath": { + "id": "KnowledgeAnswersIntentQueryArgPath", + "properties": { + "components": { + "items": { + "$ref": "KnowledgeAnswersIntentQueryArgPathComponent" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgPathComponent": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryArgPathComponent", + "properties": { + "argName": { + "type": "string" + }, + "index": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgument": { + "description": "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", + "id": "KnowledgeAnswersIntentQueryArgument", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "This field is used inside Aqua and outside Aqua for identifying the token indices and/or byte offsets of this argument" + }, + "heuristicEvalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Eval_data was not derived at parsing time (i.e. is not expected to be produced by the IG), but heuristically determined by matching the ArgumentValue to an annotation/query fragment." + }, + "key": { + "$ref": "KnowledgeAnswersMeaningSchemaSlotKey", + "description": "Slot schema key for this Argument. Note: This is still under development and not available for general use. Contact meaning-platform-eng@ for questions. Note: Currently MeaningSchemaSlotKey proto has both mid and unique_id. In future, only mid will be present in it. We are in the process of moving \"unique_id\" out of it. See (b/168907943). Note: The logged version of intent_query will only have \"mid\" populated in it to save space and avoid data duplication." + }, + "modifiers": { + "$ref": "KnowledgeAnswersIntentModifiers", + "description": "A flattened representation of all intent modifiers that apply to this argument." + }, + "name": { + "description": "Name of this argument. If this Argument is part of a FunctionCall, it must have a name or it is not well-formed. If this Argument is from an Annotator, the name field should be empty.", + "type": "string" + }, + "signals": { + "$ref": "KnowledgeAnswersIntentQueryArgumentSignals", + "description": "Signals associated with this argument." + }, + "value": { + "$ref": "KnowledgeAnswersIntentQueryArgumentValue", + "description": "The value of this argument." + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenance": { + "description": "NextId: 11", + "id": "KnowledgeAnswersIntentQueryArgumentProvenance", + "properties": { + "anaphor": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor", + "description": "If populated, the current query contains an anaphor that refers to the value. For example: U: Weather in Paris. [Weather(location=paris)] G: 65 degrees and sunny. U: How many people live there? [Population(city=paris)] The \"there\" in the current query would have the \"anaphor\" field set. NOTE: after a string rewrite this field will not be populated anymore if the rewrite replaced the anaphor with the corresponding value. For example, if we rewrite [How many people there] to [How many people in Paris], the CurrentQuerySignals for \"paris\" will not contain an \"anaphor\" message anymore in the following turns. It will only contain an eval_data for the span that corresponds to \"paris\" in the query." + }, + "attentionalEntity": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity" + }, + "currentQuery": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery", + "description": "NOTE: PreviousQuery is used for values that originate directly from QRef entities annotated in the user query. AttentionalEntity is used for values that come from the system (entities published by a dialog). These values could also originate from an entity annotated by QRef in the query, but this is not necessarily the case. SearchAnswerValue is used for values that come from the system as part of the answer of the user query. For example: U: Wife of Barack Obama G: Barack Obama's wife is Michelle Obama Here \"Barack Obama\" can have an ArgumentProvenance of PreviousQuery, or AttentionalEntity if a dialog publishes that entity and the interpretation pulls the value from it. \"Michelle Obama\" can have an ArgumentProvenance of SearchAnswerValue, or AttentionalEntity if the dialog publishes that entity and the interpretation pulls the value it." + }, + "injectedContextualSchema": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema" + }, + "previousQuery": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery" + }, + "previousResponseMeaning": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousResponseMeaning" + }, + "previousTaskState": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState" + }, + "searchAnswerValue": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryArgumentProvenanceAttentionalEntity", + "properties": { + "attentionalEntityKey": { + "description": "This key can be used to recover the attentional entity from the corresponding attentional_entities::EntityCache.", + "format": "uint64", + "type": "string" + }, + "mentionProperties": { + "$ref": "AttentionalEntitiesMentionProperties", + "description": "Source information from the AttentionalEntityReader." + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryArgumentProvenanceCurrentQuery", + "properties": { + "evalData": { + "description": "The span(s) in the query where the value comes from. Note that if the argument is split across the current and previous query, this message should *NOT* be populated. Please use PreviousQuery below, populating it's eval-data fields accordingly.", + "items": { + "$ref": "NlpSemanticParsingAnnotationEvalData" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema": { + "description": "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() \u0026 RelatedTo(/m/red))] In this case, both LocalCarListings and Cars are spanless injected contextual schemas.", + "id": "KnowledgeAnswersIntentQueryArgumentProvenanceInjectedContextualSchema", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousQuery", + "properties": { + "currentQueryEvalData": { + "description": "The span(s) in the current query where the value comes from. This is used when the argument spans both the current and previous query. Eg jfk death -\u003e [death, when] spans both queries.", + "items": { + "$ref": "NlpSemanticParsingAnnotationEvalData" + }, + "type": "array" + }, + "evalData": { + "description": "The span(s) in the query where the value comes from.", + "items": { + "$ref": "NlpSemanticParsingAnnotationEvalData" + }, + "type": "array" + }, + "eventId": { + "$ref": "EventIdMessage", + "description": "The event ID of the query where this value was pulled from." + }, + "role": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousQueryRole" + }, + "source": { + "enum": [ + "UNKNOWN", + "QUERY_STRING", + "INTERPRETATION", + "QUERY_JOIN", + "PROMPT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenancePreviousQueryRole": { + "description": "The role that this data played in the previous query.", + "id": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousQueryRole", + "properties": { + "intentId": { + "type": "string" + }, + "slotName": { + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenancePreviousResponseMeaning": { + "id": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousResponseMeaning", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState": { + "description": "Value is derived from previous task state (go/taskstates).", + "id": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskState", + "properties": { + "argumentName": { + "description": "Argument names in the DialogIntentState that the argument corresponds to. This is repeated so it can handle complex argument update paths. (ordered from outermost argument to innermost argument)", + "items": { + "type": "string" + }, + "type": "array" + }, + "currentQueryEvalData": { + "description": "The span(s) in the current query (if any) used to resolve the previous query's DIS. Example: U: Barack Obama G: Do you want his age or his height? U: The first one. G: Age(/m/obama) In this example, the intent is derived from the previous query's DIS, but also needs to be resolved in the current query since the user was presented with multiple options.", + "items": { + "$ref": "NlpSemanticParsingAnnotationEvalData" + }, + "type": "array" + }, + "dialogIntentStateId": { + "description": "The id of the specific DialogIntentState instance that the argument corresponds to.", + "type": "string" + }, + "intentName": { + "description": "Intent name of the DialogIntentState that the argument corresponds to.", + "type": "string" + }, + "listCandidate": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStateListCandidate" + }, + "previousFunctionCall": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStatePreviousFunctionCall" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStateListCandidate": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStateListCandidate", + "properties": { + "candidateIndex": { + "description": "The presented_index of the field_candidate in the DialogIntentState field_signals that the argument corresponds to.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStatePreviousFunctionCall": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryArgumentProvenancePreviousTaskStatePreviousFunctionCall", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor": { + "description": "Signals about an anaphor in the query: for example an occurrence of the pronoun \"it\".", + "id": "KnowledgeAnswersIntentQueryArgumentProvenanceQueryAnaphor", + "properties": { + "evalData": { + "description": "If populated, the spans in the current query where this value was annotated. This is a repeated field because some values can be annotated from a set of discontiguous spans (e.g. some intent phrases), but in most cases this field will contain only one item or it will be empty (for values inferred from context without the use of anaphora).", + "items": { + "$ref": "NlpSemanticParsingAnnotationEvalData" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryArgumentProvenanceSearchAnswerValue", + "properties": { + "eventId": { + "$ref": "EventIdMessage", + "description": "This identifies the SearchAnswerValues where this value was pulled from." + }, + "metadataValueIndex": { + "description": "Each SearchAnswerValue can have a primary value and a list of metadata values. If this index is set, this value was pulled from the metadata value at this index, otherwise it was pulled from the primary value.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "The display text of this answer value. It's taken from the search answer value display text if present, or the canonical name if it's an entity.", + "type": "string" + }, + "valueIndex": { + "description": "The index of the SearchAnswerValue where this value was pulled from.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentSignals": { + "description": "A message representing the signals associated with an argument. NEXT ID TO USE: 57 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/semantic_logging_request_argument_converter.cc?l=58\u0026rcl=322925428. LINT.IfChange", + "id": "KnowledgeAnswersIntentQueryArgumentSignals", + "properties": { + "addedByCloseAnswers": { + "description": "Whether this argument was added by CloseAnswers in Postref. This bit is used to mark the corresponding interpretation/intent query as such by setting is_close_interpretation bit.", + "type": "boolean" + }, + "allowedFuzzyMatch": { + "description": "For this argument, backend performed fuzzy match.", + "type": "boolean" + }, + "annotatedRelationship": { + "description": "Relationships between entities", + "items": { + "$ref": "LogsSemanticInterpretationIntentQueryWebrefEntityRelationship" + }, + "type": "array" + }, + "annotationLayerSignals": { + "$ref": "KnowledgeAnswersIntentQueryAnnotationLayerSignals", + "description": "Signals to facilitate orchestration of TUIG annotations." + }, + "chainId": { + "description": "One or more ChainIds from a ChainAnnotation whose \"organization_mid\" matches the MID. As of 2021-01 multiple chain_ids may be specified if the organization for MID controls multiple chains. See go/chains-lckp-robust-triggering for motivation.", + "items": { + "$ref": "LocalsearchChainId" + }, + "type": "array" + }, + "clusterInfo": { + "$ref": "QualityViewsExtractionClusterInfo", + "description": "If the literal.obj_type of the argument value is ID (Entity), this stores cluster scoring information for that entity, if the entity belongs to a cluster." + }, + "collectionMembership": { + "description": "If the literal.obj_type of the argument value is ID (Entity), this represents the collection that the entity in this argument is a member of.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryCollectionMembership" + }, + "type": "array" + }, + "contextResolution": { + "description": "How this argument was resolved through context from a previous query. Examples: obama -\u003e \"he\" is resolved from the Obama entity starbucks -\u003e Q2 is resolved from the list of shops (Attentional Entities)", + "enum": [ + "NONE", + "SAFT_PRONOUN", + "NOUN_PHRASE", + "LOCAL_SEMANTIC_FUNCTION_MERGE", + "CONTEXTUAL_SUBGRAMMAR_ANNOTATION" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "deprecatedFreebaseType": { + "description": "If the literal.obj_type of the argument value is ID (Entity), this represents freebase types of the entity in this argument.", + "items": { + "type": "string" + }, + "type": "array" + }, + "deprecatedSupportingMid": { + "description": "A list of mids that \"support\" this argument in voting, i.e, results that support these mids will be treated as if they support the argument. This field has been deprecated in favor of related_entity. b/27363861", + "items": { + "type": "string" + }, + "type": "array" + }, + "entityNumber": { + "description": "Signals about what other entities this entity implies / is implied by. This is useful for grounding. Example: b/138388207: suppressing song intents if the artist entity doesn't link to the song title. This value specifies the order of annotations in a QRef annotation chain so they can refer to each other.", + "format": "int32", + "type": "integer" + }, + "entityRelationship": { + "description": "Signals about what other entities this entity implies / is implied by. This is useful for grounding. Example: b/138388207: suppressing song intents if the artist entity doesn't link to the song title.", + "items": { + "$ref": "NlpSemanticParsingQRefAnnotationEntityRelationship" + }, + "type": "array" + }, + "expressionStatus": { + "$ref": "NlpSemanticParsingExpressionStatus", + "description": "Status indicating whether the user has completely expressed the semantics of the argument." + }, + "fromManualSymbolAnnotation": { + "description": "Whether the argument entity comes from a manual graphic symbol annotation. This is later used as a heuristic for poor web result quality.", + "type": "boolean" + }, + "fromSymbolAnnotation": { + "description": "Whether the argument entity comes from a graphic symbol annotation. This is later used as a heuristic for poor web result quality.", + "type": "boolean" + }, + "gaiaId": { + "description": "The gaia id for the entity (person or plus page).", + "format": "uint64", + "type": "string" + }, + "groundingSignals": { + "$ref": "KnowledgeAnswersIntentQueryGroundingSignals" + }, + "isAUngroundedTypeOf": { + "description": "If the argument is entity, the ungrounded type the entity is. For example, the entity argument is /m/0p83l (Jasmine), the value of this field should be \"Plant\" if it is present.", + "type": "string" + }, + "isDefaultValue": { + "description": "If true, the value of the argument is populated with the default value specified by the system if the value can't be inferred from the input query. In IntentConfig case, the default value is specified by using IntentConfig.slot.default_value.", + "type": "boolean" + }, + "isEnum": { + "description": "Set when the argument has an enum value - a normalized_string_type from the intent catalog.", + "type": "boolean" + }, + "isEvalDataHeuristic": { + "description": "Set when the eval_data was not derived at parsing time, but heuristically determined by matching the ArgumentValue to an annotation/query fragment.", + "type": "boolean" + }, + "isGenieAnnotation": { + "description": "Whether this annotation was propagated as part of a Genie rewrite (go/genie-aqua).", + "type": "boolean" + }, + "isIntentgenAnnotation": { + "description": "Whether this argument was annotated by Intentgen QUIK model (go/intentgen-quik)", + "type": "boolean" + }, + "isNimbleAnnotation": { + "description": "Whether this argument was annotated by nimble (go/nimble-annotator)", + "type": "boolean" + }, + "location": { + "$ref": "GeostorePointProto", + "description": "Entity location information (latitude/longitude) from freebase." + }, + "locationMarkersSignals": { + "$ref": "KnowledgeAnswersIntentQueryLocationMarkersSignals", + "description": "The usual semantic role associated with the signal from lightweight tokens attached to this argument span." + }, + "mediaEntitySignals": { + "$ref": "KnowledgeAnswersIntentQueryMediaEntitySignals", + "description": "Signals about the media entity for this argument." + }, + "mergedImpliedEntity": { + "description": "List of QRef implied entities merged into this entity during parsing. Clients should not rely on the order, as it is derivation-dependent.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryImpliedEntity" + }, + "type": "array" + }, + "midEquivalentToCollection": { + "description": "For collection arguments, it is useful to save what was the original mid that qref annotated. For example, if the collection is /collection/films, we'll have the mid for /en/film here (/m/02vxn).", + "type": "string" + }, + "multipleHorizontalListSelectionMatches": { + "description": "Whether there were multiple equally good matches from horizontal_list_selection.", + "type": "boolean" + }, + "muninSignals": { + "$ref": "KnowledgeAnswersIntentQueryMuninSignals", + "description": "Signals derived from Munin Function call annotations." + }, + "onDeviceAnnotationSignals": { + "$ref": "KnowledgeAnswersIntentQueryOnDeviceAnnotationSignals", + "description": "Additional signals for on-device annotations." + }, + "oysterId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The oyster feature id. NOTE: As of Mar 2017, the cell ID field of the feature ID might not be set. See http://b/35447230#comment10" + }, + "parsedDueToExperiment": { + "description": "Experiment ID for experiments that were used to parse this FunctionCall. Empty indicates no experiments used.", + "items": { + "type": "string" + }, + "type": "array" + }, + "personalEntity": { + "description": "Personal entities are compound entities made up of entities and their attributes, where the entities can be compound too. E.g., \"my father's mother\" can have a summary node annotation of \"Mother(Father(Myself))\"", + "items": { + "$ref": "KnowledgeAnswersIntentQueryPersonalEntity" + }, + "type": "array" + }, + "provenance": { + "description": "Information about where the value of this argument came from. For example, it could have been explicitly provided in the query, pulled in from the previous state, or pulled from attentional entities.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenance" + }, + "type": "array" + }, + "qrefConfidenceScore": { + "description": "The QRef confidence score for an entity argument.", + "format": "float", + "type": "number" + }, + "qrefInterpretationIndex": { + "description": "The index of the QueryJoin interpretation from which this annotation is taken. We copy over the value given by nlp.semantic_parsing.annotators.QrefAnnotator. The value will be \"-1\" if the annotation is coming from low confidence Qref annotations. NOTE - this is generated from as QRef's interetation_number.", + "format": "int32", + "type": "integer" + }, + "rawQueryText": { + "description": "A copy of the span of canonical (raw) parser input text corresponding to this annotation.", + "type": "string" + }, + "relatedEntity": { + "description": "List of entities that are semantically related to the argument as well as details of the relationship.", + "items": { + "$ref": "NlpSemanticParsingRelatedEntity" + }, + "type": "array" + }, + "relatednessSignals": { + "$ref": "KnowledgeAnswersIntentQueryRelatednessSignals", + "description": "Relatedness Matrix signals about this argument, e.g., query_popularity." + }, + "resolvedFromContext": { + "description": "Whether this argument was resolved through context from a previous query. Examples: obama -\u003e \"he\" is resolved from the Obama entity starbucks -\u003e Q2 is resolved from the list of shops", + "type": "boolean" + }, + "resolvedFromPronoun": { + "description": "Whether this argument was resolved from a pronoun mention in the query. Eg: [how old was obama when *he* became president]", + "type": "boolean" + }, + "resultSupport": { + "description": "The list of result supports for this Argument.", + "items": { + "$ref": "UniversalsearchNewPackerKnowledgeResultSupport" + }, + "type": "array" + }, + "saftSignals": { + "$ref": "KnowledgeAnswersIntentQuerySaftSignals", + "description": "Signals derived from SAFT." + }, + "shoppingIds": { + "$ref": "KnowledgeAnswersIntentQueryShoppingIds", + "description": "Equivalent shopping ids for the argument." + }, + "supportTransferRules": { + "description": "go/stbr supportthis is an", + "items": { + "$ref": "LogsSemanticInterpretationIntentQuerySupportTransferRule" + }, + "type": "array" + }, + "supportTransferSignals": { + "$ref": "KnowledgeAnswersIntentQuerySupportTransferSignals", + "description": "Support Transfer signals for this entity." + }, + "ungroundedValueType": { + "$ref": "KnowledgeAnswersValueType", + "description": "Type of ungrounded argument. It is exclusively used when simple_value.ungrounded_value is populated." + }, + "webrefEntitiesIndex": { + "description": "Webref entity index for this argument, necessary for interpreting the relationship structure, and the list to index into. Specifically we need this to understand qref implications since they edges are represented with entity indexes.", + "format": "uint32", + "type": "integer" + }, + "webrefListSource": { + "description": "This represents which list entities index refers to.", + "enum": [ + "UNSET", + "INTERPRETATION_LIST", + "ANNOTATION_LIST", + "CANDIDATE_LIST" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryArgumentValue": { + "description": "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 intent_query_proto_test.cc 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: 41", + "id": "KnowledgeAnswersIntentQueryArgumentValue", + "properties": { + "aogSlot": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleAogSlot", + "description": "Custom type used by actions-on-google in-dialog queries. See go/3p-custom-intents-wrt-meaning-catalog" + }, + "appAnnotation": { + "$ref": "NlpSemanticParsingAppAnnotation", + "description": "Device actions custom types." + }, + "audio": { + "$ref": "NlpSemanticParsingModelsMediaAudio" + }, + "calendarEvent": { + "$ref": "AssistantApiCoreTypesCalendarEvent", + "description": "Calendar custom types. Details in go/cal-ref." + }, + "calendarEventWrapper": { + "$ref": "AssistantApiCoreTypesCalendarEventWrapper", + "description": "Details in go/multi-account-event-representation." + }, + "calendarReference": { + "$ref": "QualityQrewriteCalendarReference" + }, + "complexQueriesRewrite": { + "$ref": "QualityGenieComplexQueriesComplexQueriesOutputRewrite", + "description": "Custom type used by Complex Queries. This is populated based on the output of the RPC to the Complex Queries Boq node." + }, + "componentReference": { + "$ref": "RepositoryWebrefComponentReference", + "description": "Component reference between WebrefEntity and Mention. This should only ever be set in argument values in WebrefEntities (e.g. in a QueryJoin). The processing expectation is that the value including the component reference is discarded altogether and replaced by reference target. Use QueryJoinToMeaningStructConverter to perform the replacement. An example value parallel to this reference may exist, but it's meant purely for human consumption and should not be used." + }, + "coreference": { + "$ref": "KnowledgeAnswersIntentQueryCoreference", + "description": "A value that is a coreference or variable binding to some other part of the tree. See go/mrf-variables." + }, + "dateTime": { + "$ref": "NlpSemanticParsingDatetimeDateTime", + "description": "*** Opaque types that are likely to become fully supported: *** Represents: date and time expressions. Annotated by: datetime subgrammar." + }, + "device": { + "$ref": "NlpSemanticParsingModelsMediaCastDeviceAnnotation", + "description": "Media custom types. For example use, see go/valyrian-media-dd." + }, + "deviceId": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "DeviceId custom types. Details in go/reply-broadcast" + }, + "deviceUserIdentity": { + "$ref": "AssistantApiCoreTypesDeviceUserIdentity", + "description": "DeviceUserIdentity custom types. Details in go/reply-broadcast" + }, + "duration": { + "$ref": "NlpSemanticParsingDatetimeDuration", + "description": "Represents: duration expressions (e.g. 5 minutes). Annotated by: datetime subgrammar." + }, + "funcall": { + "$ref": "KnowledgeAnswersIntentQueryFunctionCall", + "description": "*** Fully supported types *** An argument can also be a function call." + }, + "homeAutomationDevice": { + "$ref": "AssistantVerticalsHomeautomationProtoHomeAutomationDevice", + "description": "HomeAutomation custom types. Details in go/smarthome_with_monastery." + }, + "location": { + "$ref": "NlpSemanticParsingLocalLocation", + "description": "Represents: location expressions. Annotated by: location subgrammar." + }, + "media": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotation" + }, + "messageNotification": { + "$ref": "AssistantApiCoreTypesMessageNotification", + "description": "Custom type used by tap-to-read for embedding a MessageNotification message in a GetMessageContent intent." + }, + "money": { + "$ref": "NlpSemanticParsingModelsMoneyMoney", + "description": "Represents: money expressions (e.g. 25$). Annotated by: number subgrammar." + }, + "narrativeNewsProvider": { + "$ref": "NlpSemanticParsingModelsNarrativeNewsNewsProvider", + "description": "Custom type used by NarrativeNews. This is populated by the narrative news provider annotator, and it differs semantically from a mid for a news brand in that it doesn't refer to the field of widely known news brands but rather but to the specific audio news RSS feeds that the narrative news feature serves. (There is of course substantial overlap between those two concepts)" + }, + "number": { + "$ref": "NlpSemanticParsingNumberNumber", + "description": "Represents: number expressions. Annotated by: number subgrammar." + }, + "onDevice": { + "$ref": "NlpSemanticParsingModelsOnDevice", + "description": "OnDevice custom types. Device on which an intent should be fulfilled. Differs semantically from device fields used by Media and HomeAutomation: this is annotated by the on_device subgrammar, and will not output any metadata beyond what the subgrammar outputs. See go/on_device_induction_quality." + }, + "person": { + "$ref": "NlpSemanticParsingModelsPersonPerson", + "description": "Represents: structured person names, including common names and personal contacts. Annotated by: go/person-subgrammar." + }, + "personalIntelligenceEntity": { + "$ref": "NlpSemanticParsingPersonalIntelligenceEntity", + "description": "Entity parsed from manual grammar interpretation in the Personal Intelligence domain." + }, + "productivityListItem": { + "$ref": "AssistantProductivityListItem" + }, + "recurrence": { + "$ref": "NlpSemanticParsingModelsRecurrence", + "description": "Represents: intervals of recurrence for repeated tasks. See go/recurrence-subgrammar Annotated by: recurrence subgrammar." + }, + "reminder": { + "$ref": "QualityActionsReminder" + }, + "sensitiveValue": { + "$ref": "KnowledgeAnswersIntentQuerySensitiveArgumentValueGuard", + "description": "Sensitive value, see go/sensitive-intents and go/a4w-multi-turn-dialog" + }, + "sensitivity": { + "description": "Argument level query sensitivities. 1) Statically defined Sensitivity is copied from IntentSlot at serving time so it can be propagated along with FunctionCall to places where the Intent Catalog is not available. See go/sensitive-intents for details. 2) For the same reason, contextual sensitivites (eg., from AttentionalEntity mentions) are populated here too. See go/tagging-sensitive-ae for details.", + "items": { + "$ref": "KnowledgeAnswersSensitivitySensitivity" + }, + "type": "array" + }, + "shoppingMerchant": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantMerchant" + }, + "shoppingOffer": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantOffer", + "description": "Shopping custom types. See go/sopa-attentional." + }, + "shoppingProduct": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProduct" + }, + "shoppingProductExpression": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductExpression" + }, + "shoppingStore": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantStore" + }, + "simpleValue": { + "$ref": "KnowledgeAnswersIntentQuerySimpleValue", + "description": "When literal is a datetime, it's really just an ISO 8601 datetime string. This case will eventually be replaced with the date_time field, which is more expressive and can also represent recurrences, ranges, etc. Likewise, simple_value will replace the other types of simple values that literal is currently being used to represent." + }, + "timer": { + "$ref": "QualityActionsTimer", + "description": "Productivity custom types. Team: go/productivity-assistance." + }, + "timezone": { + "$ref": "NlpSemanticParsingDatetimeTimeZone", + "description": "Represents: timezone expressions (e.g. Eastern Daylight Time). Annotated by: datetime subgrammar." + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryAttributeSignal": { + "description": "Contains an attribute id and it's completion score.", + "id": "KnowledgeAnswersIntentQueryAttributeSignal", + "properties": { + "attributeId": { + "type": "string" + }, + "score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryCollectionMembership": { + "description": "A message representing the collection membership of an entity.", + "id": "KnowledgeAnswersIntentQueryCollectionMembership", + "properties": { + "collectionId": { + "description": "Human readable id of the collection.", + "type": "string" + }, + "collectionMid": { + "description": "Identifier of the collection, usually a MID (/m/xyz or /g/zyw).", + "type": "string" + }, + "collectionScore": { + "description": "The collection score for a entity.", + "format": "float", + "type": "number" + }, + "score": { + "description": "Different types of scores for the collection. Each score type has at most one score.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryCollectionScore" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryCollectionScore": { + "id": "KnowledgeAnswersIntentQueryCollectionScore", + "properties": { + "scoreType": { + "enum": [ + "UNKNOWN", + "GENERAL" + ], + "enumDescriptions": [ + "", + "The collection score is for general use. It is not context based." + ], + "type": "string" + }, + "scoreValue": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryCoreference": { + "description": "A message representing a coreferenced value defined elsewhere in the meaning struct.", + "id": "KnowledgeAnswersIntentQueryCoreference", + "properties": { + "argPath": { + "$ref": "KnowledgeAnswersIntentQueryArgPath", + "description": "A coreference is represented by an argument path starting from the root of the whole tree to the referenced value." + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryCustomVehicleActionArgumentAnnotatorSignals": { + "description": "Signals associated with CustomVehicleActionArgumentAnnotator annotations.", + "id": "KnowledgeAnswersIntentQueryCustomVehicleActionArgumentAnnotatorSignals", + "properties": { + "additionalAnnotationData": { + "additionalProperties": { + "type": "string" + }, + "description": "Stores any additional data which is required only at the intent fulfilment phase.", + "type": "object" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryFreetextAnnotationSignals": { + "description": "Signals associated with FreetextAnnotator annotations. Empty. The signal being present is enough for the conformance checking library to be able to check.", + "id": "KnowledgeAnswersIntentQueryFreetextAnnotationSignals", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersIntentQueryFunctionCall": { + "description": "A message representing the function call of an answers intent query. Next ID: 19 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", + "id": "KnowledgeAnswersIntentQueryFunctionCall", + "properties": { + "argument": { + "description": "A list of arguments of this function call.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryArgument" + }, + "type": "array" + }, + "catalogVersion": { + "description": "The corresponding meaning catalog version that was used to generate this FunctionCall.", + "format": "int64", + "type": "string" + }, + "contextualSensitivity": { + "description": "Contextual Sensitivity (go/contextual-sensitivity) metadata indicating that a policy- or privacy- sensitive conversation context (previous queries, rewritten user queries, and previous system responses, like attentional entities) is used to generate this FunctionCall. This needs propagation (1) from Interp to DialogIntentState (DIS) (see b/148479837) and (2) from QRewrite/QUS down to Assistant Server's memory finalizer. One can use knowledge/answers/sensitivity/sensitivity_reader.h to parse this proto. NOTE(b/149091449): This is part of the migration of contextual sensitivity protos from Interp sensitivity extension. (nlp::semantic_parsing::sensitivity) to this proto field. See the bug to track the migration progress and for more details.", + "items": { + "$ref": "KnowledgeAnswersSensitivitySensitivity" + }, + "type": "array" + }, + "enabledRemodelings": { + "$ref": "NlpMeaningMeaningRemodelingControl", + "description": "Contains data about which remodelings are being used for this funcall. For more information see go/meaning-remodeling-framework." + }, + "ignoredTokens": { + "description": "A list of token lists that were ignored during parsing because they are known context phrases for this interpretation. For example, for query [tell me how tall height of Obama really], assuming \"tell me\", \"tall\", \"of\", \"really\" are explained and thus ignored, with corresponding prior 0.9, 0.8, 0.7, 0.6, following ignored tokens will be populated: { ignored_tokens { token { ngram: \"tell me\", prior: 0.9} score: 0.9 } ignored_tokens { token { ngram: \"tall\", prior: 0.8} token { ngram: \"of\", prior: 0.7} score: 0.56 // currently score = prior1 * prior2 * ... * prior N } ignored_tokens { token { ngram: \"really\", prior: 0.6} score: 0.6 } } These tokens can serve two purpose: 1) debug info to show why an interpretation is generated; 2) carry the signals for downstream usage. Note: This field is under active development, and significant changes could happen. Please contact porky-pig@ if you want to use it.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryTokens" + }, + "type": "array" + }, + "key": { + "$ref": "KnowledgeAnswersMeaningSchemaKey", + "description": "The primary key for this FunctionCall. Note: This is still under development and not available for general use. Contact meaning-platform-eng@ for questions." + }, + "marker": { + "$ref": "KnowledgeAnswersMarker", + "description": "The marker specifies the purpose of this meaning struct / function call: Is it asking a question, and if yes, for which slot(s)? Is it a command, statement, etc? This corresponds to a (very coarse) notion of dialog acts. In the absence of this field, it will be inferred using the following algorithm (subject to marker applicability rules specified in marker.proto, see also go/requested-slots): 1) Use the underlying Meaning Schema's default marker, if applicable. 2) Assume that the Meaning Struct is polar or a statement. The presence of a marker will affect the value type of this function call." + }, + "modifiers": { + "$ref": "KnowledgeAnswersIntentModifiers", + "description": "A flattened representation of all intent modifiers that apply to this function call." + }, + "name": { + "description": "Name of this function call. The name must be present. If it is omitted, the FunctionCall is not well-formed.", + "type": "string" + }, + "sensitivity": { + "$ref": "KnowledgeAnswersSensitivitySensitivity", + "description": "Intent level query sensitivity (go/sensitive-intents). This metadata comes directly from Intent Catalog, indicating a single-shot query sensitivity without putting context into considerations. Therefore, this requires a one-to-one match with each intent registered in Intent Catalog." + }, + "signals": { + "$ref": "KnowledgeAnswersIntentQueryFunctionCallSignals", + "description": "Signals at the function call level" + }, + "unexplainedTokens": { + "description": "A list of tokens that were ignored during parsing that cannot be explained by context phrases.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryTokens" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryFunctionCallSignals": { + "description": "Next ID: 34", + "id": "KnowledgeAnswersIntentQueryFunctionCallSignals", + "properties": { + "argumentComposingMid": { + "description": "The argument mid that was used to compose the entity for a concept interpretation, along with the intent_composing_mid (one of the intent's equivalent MIDs).", + "type": "string" + }, + "attributeSignals": { + "description": "The attributes from which this intent was generated during execution of AttributeSignalsProvider. |attribute_signals| is only populated for single entity funcalls.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryAttributeSignal" + }, + "type": "array" + }, + "conceptEntityMid": { + "description": "An entity that represents the concept of an entity-attribute intent by being composed of an intent equivalent MID and the argument MID.", + "type": "string" + }, + "confidenceLevel": { + "enum": [ + "UNKNOWN", + "LOW", + "MEDIUM", + "HIGH", + "ALWAYS_TRIGGER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "dedupedFuncalls": { + "description": "FunctionCall-s that this funcall was deduped against.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryFunctionCall" + }, + "type": "array" + }, + "expressionStatus": { + "$ref": "NlpSemanticParsingExpressionStatus", + "description": "Status indicating whether the user has completely expressed their intended semantics. (See go/streaming-nlu-fulfilment-protocol-v1 for more info. )" + }, + "freefolksTrigger": { + "enum": [ + "NONE_FREEFOLKS_TRIGGER", + "LOW_CONF_FREEFOLKS_TRIGGER", + "HIGH_CONF_FREEFOLKS_TRIGGER" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "groundingSignals": { + "$ref": "KnowledgeAnswersIntentQueryGroundingSignals", + "description": "Grounding signals for ranking/filtering, as well as whether to use Grounding Box and PGRP in AnswersRewriter. See comment on GroundingSignals for details." + }, + "highConfidence": { + "description": "Used to indicate that an interpretation is high confidence and triggers different voting behavior. This bit should only be set for verticals. DEPRECATED. Use confidence_level instead.", + "type": "boolean" + }, + "intentAnnotationSources": { + "items": { + "enum": [ + "UNKNOWN_SOURCE", + "ORBIT", + "LEXICON" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "intentComposingMid": { + "description": "An intent_relevant_mid that was used to compose the entity for a concept interpretation, along with argument_composing_mid (the question's argument MID).", + "type": "string" + }, + "intentProvenance": { + "description": "Information about where the value of this intent came from. For example, it could have been explicitly provided in the query, pulled in from the previous dialog state, or pulled from previous queries.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryArgumentProvenance" + }, + "type": "array" + }, + "intentRelevantMid": { + "description": "KG mids of entities that represent this intent. These entities are seen as equivalent to the Intent definition, and are specified in the Intent Catalog as relevant_mid.", + "items": { + "type": "string" + }, + "type": "array" + }, + "isCloseInterpretation": { + "description": "Whether the interpretation was generated using similar queries in POSTREF. In case POSTREF_AQUA generated the same entity-attribute interpretation, this is still set to true.", + "type": "boolean" + }, + "isDisambiguationCardIntent": { + "description": "Denotes whether this is an intent being fulfilled from user tapping a disambiguation card. More info in go/cardea-deck.", + "type": "boolean" + }, + "isDisambiguationIntent": { + "description": "Denotes whether this is a sub-intent of an ambiguous SystemUncertain intent go/intent-disambiguation.", + "type": "boolean" + }, + "isUiCompositionIntent": { + "description": "Denotes this is a sub-intent used for composing an Assistant UI response. The assistant dialog should output ui_composition_shelf in the SystemResponse if it can fulfill the intent. More info in go/davinci-design and go/davinci-di-fulfillment", + "type": "boolean" + }, + "localSignals": { + "$ref": "KnowledgeAnswersIntentQueryLocalSignals", + "description": "Information about Local results to be used in the Packer for Local Categorical derived intent deduplication and conformance." + }, + "osrpJourneyTag": { + "description": "A tag to annotate user's journey (e.g., JourneyFollowCampusUpdates). This will be used for Journey OSRP demo (go/josrp-sprint). !!NOTE!! This field is reserved for Journey OSRP demo, and will be deprecated shortly after its completion. DO NOT USE.", + "type": "string" + }, + "parsedDueToExperiment": { + "description": "Experiments that caused this FunctionCall to parse, without which this would not have parsed.", + "items": { + "type": "string" + }, + "type": "array" + }, + "parsingSignals": { + "$ref": "KnowledgeAnswersIntentQueryParsingSignals", + "description": "Parsing signals for ranking/filtering." + }, + "prefulfillmentRankingScore": { + "description": "Identifies a score, determined before fulfillment but after grounding. Written by the Prefulfillment Ranker, and used as a signal for ACE Ranking.", + "format": "float", + "type": "number" + }, + "prefulfillmentSignals": { + "$ref": "AssistantPrefulfillmentRankerPrefulfillmentSignals", + "description": "All the input signals to the Prefulfillment Ranker." + }, + "referentialResolution": { + "$ref": "KnowledgeAnswersDialogReferentialResolution", + "description": "Describes how this intent was resolved via external data (either elsewhere in the query, or in a previous query)." + }, + "refxSummaryNodeId": { + "description": "The id of the summary node if this funcall represents an mdvc interpretation", + "type": "string" + }, + "resultSupport": { + "description": "The list of result supports for this FunctionCall.", + "items": { + "$ref": "UniversalsearchNewPackerKnowledgeResultSupport" + }, + "type": "array" + }, + "role": { + "enum": [ + "UNKNOWN_ROLE", + "QUERY_INTERPRETATION", + "DERIVED_INTENT" + ], + "enumDescriptions": [ + "", + "MRF expression is from a QI, and represents the user's primary intent.", + "MRF expression is a generated DI." + ], + "type": "string" + }, + "selectedByPrefulfillmentRanking": { + "description": "Identifies whether the Prefulfillment Ranker selected this intent for emission. This is needed temporarily while migrating intent emitters from ACE to QUS/PFR. See go/pfr-intent-emitter for more info", + "type": "boolean" + }, + "shoppingIds": { + "$ref": "KnowledgeAnswersIntentQueryShoppingIds", + "description": "Equivalent shopping ids for the function call." + }, + "signalsFallbackIntents": { + "description": "Additional intents to be used for intent scoring. This field must only be populated when we cannot find a single unified intent. For example, when we compute signals for a LocalEntities function call, this means we could not find a unified intent to capture all the local results. In this case, we add a fallback intent for each local result (e.g. GeoSchool, GeoRestaurant, and GeoBank if those are the results we show).", + "items": { + "$ref": "KnowledgeAnswersIntentQuerySignalComputationFallbackIntent" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryGroundingSignals": { + "description": "Grounding-related signals to be propagated down stream. Next ID: 12", + "id": "KnowledgeAnswersIntentQueryGroundingSignals", + "properties": { + "addedByGrounding": { + "description": "True if the argument was added during grounding. This signal is intended to be used with ArgumentSignals. Note that the added argument's value must be a FunctionCall that only contains resolutions, i.e. grounding cannot add/modify/delete any ungrounded values.", + "type": "boolean" + }, + "groundabilityScore": { + "description": "Score indicating how grounded the intent is, populated by the Grounding Box, used by the pre-fulfillment ranker, see http://go/prefulfillment-ranker.", + "format": "double", + "type": "number" + }, + "numConstraints": { + "description": "Sum of the number of constraints used by the Grounding Box to ground each variable.", + "format": "double", + "type": "number" + }, + "numConstraintsSatisfied": { + "description": "Sum of the number of constraints satisfied for each variable. Depending on the match score for a constraint, this number can be fractional and is in the range [0, num_constraints].", + "format": "double", + "type": "number" + }, + "numGroundableArgs": { + "description": "Number of groundable arguments in the parsed intent.", + "format": "double", + "type": "number" + }, + "numGroundedArgs": { + "description": "Number of arguments that got actually grounded.", + "format": "double", + "type": "number" + }, + "numVariables": { + "description": "Number of arguments, possibly nested, that the Grounding Box tried to ground.", + "format": "double", + "type": "number" + }, + "numVariablesGrounded": { + "description": "Number of arguments, possibly nested, that the Grounding Box was able to ground. This includes ambiguously grounded arguments.", + "format": "double", + "type": "number" + }, + "pgrpOutputFormat": { + "description": "PGRP outputs PROD_INTENT_FACTORY intent format by default. See go/intent-conversion-locations-in-sage. Experimental flags can change or make PGRP output additional intents formatted for PORTMON_FULFILLMENT (e.g. with RDs). This is used by the PortMon/ARM dark launch (go/arm-dark-launch-infra). Longer term, this will be replaced by DGS system-internal transformations (go/if-dgs).", + "enum": [ + "INTENT_FORMAT_UNSPECIFIED", + "PROD_INTENT_FACTORY", + "PORTMON_FULFILLMENT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "usesGroundingBox": { + "description": "If true, then GroundingBox and PGRP are used in AnswersRewriter to process the intent. Other post-processing steps, including IGDP, are adjusted accordingly. Note this will be removed once GroundingBox is fully launched and all prod traffic goes through it. Before that happens, each IG that needs to go through GB and PGRP (post GB ranking pruning) will need to explicitly set this field to true. See http://go/gb-impl and http://go/gb-post-ranker-pruner for details.", + "type": "boolean" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryIdentifier": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryIdentifier", + "properties": { + "id": { + "type": "string" + }, + "idType": { + "enum": [ + "UNKNOWN_ID_TYPE", + "ALARM", + "CALENDAR", + "KG", + "LIST", + "NOTE", + "PROVIDER", + "STOPWATCH", + "TIMER", + "DEVICE", + "ROOM", + "STRUCTURE", + "ZONE", + "REMINDER", + "RECIPE", + "PERSON", + "COMM_ENDPOINT", + "NEWS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "An go/identifier-for-generalized-device generalized device ID", + "An assistant.context.RoomId aka DeviceId.home_graph_device_id", + "An assistant.context.StructureId aka DeviceId.home_graph_device_id", + "An identifier for a zone. See: go/zone-gp and go/smarthome-zones", + "", + "", + "Comms specific id types. go/call-object-iff", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryImpliedEntity": { + "description": "Signals for $QRefImpliedEntities that are merged into entity arguments during parsing.", + "id": "KnowledgeAnswersIntentQueryImpliedEntity", + "properties": { + "annotatedSpan": { + "description": "A copy of the span of canonical (raw) parser input text corresponding to this annotation. Copied from QRefAnnotation.annotated_span.", + "type": "string" + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "This field is used inside Aqua for evaluation purposes." + }, + "isUngroundedValue": { + "description": "TODO (b/143536264): Create a new ImpliedTokens message and remove this. Whether the implied entity is ungrounded value, set to true when the entity doesn't have a KG mid.", + "type": "boolean" + }, + "mid": { + "description": "The KG mid of the implied entity.", + "type": "string" + }, + "qrefConfidenceScore": { + "description": "The QRef confidence (in [0, 1]) of the entity being correctly annotated.", + "format": "float", + "type": "number" + }, + "shoppingIds": { + "$ref": "KnowledgeAnswersIntentQueryShoppingIds", + "description": "All ShoppingIds for this implied entity that need to be copied to IntentQuery (FunctionCall) if this implied entity is used in intent generation. See go/iql-shopping-ids for details." + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryIndexingIQLAttachment": { + "description": "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", + "id": "KnowledgeAnswersIntentQueryIndexingIQLAttachment", + "properties": { + "iqlEncodingVersion": { + "description": "The version of encoder for the IQL FunctionCalls. We bump up the version when, but not limited to, we change how an IQL is converted to a byte array, or the change of byte compression algorithm.", + "format": "uint32", + "type": "integer" + }, + "iqlFuncalls": { + "description": "A compressed byte array that represents IQL FunctionCalls. A list of IQL FunctionCalls are first encoded as a byte array. The byte array is then compressed. For more details on the encoding, see go/iql-in-wma.", + "format": "byte", + "type": "string" + }, + "piannoConfidenceScoreE2": { + "description": "The Pianno confidence scores of all intents of the IQL FunctionCalls. For space reasons this is stored as a [0, 100] integer that represents the confidence up to two decimal points (fixed point). Convert it to confidence_score using the following formula: float pianno_confidence_score = pianno_confidence_score_e2 / 100.0f It should have the same number of elements as the IQL expressions after decoding. For non-Pianno top level intents, this score is 0.", + "items": { + "format": "uint32", + "type": "integer" + }, + "type": "array" + }, + "piannoIqlBitmap": { + "description": "A bit map indicating if the intents in the IQL FunctionCalls are top level intents for Pianno (go/pianno). This is a repeated field. In the event of more than 32 intents, the first uint32/ represents the 1st to the 32nd intents, and the second uint32 represents/ the 33rd to the 64th intents, and so on. Within each uint32, the bits are in reversed order, i.e. the right-most bit of the first uint32 indicating if the first intent in IQL expressions is a top level intent for Pianno. The prevailing (unused) bits of the last uint32 are filled with 0s.", + "items": { + "format": "uint32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryLocalResultSignals": { + "description": "A message that stores signals relating to a Local result.", + "id": "KnowledgeAnswersIntentQueryLocalResultSignals", + "properties": { + "gcidIntent": { + "description": "Geo intents corresponding to the gcids obtained from the Local result.", + "items": { + "type": "string" + }, + "type": "array" + }, + "salientTermSet": { + "$ref": "QualitySalientTermsSalientTermSet", + "description": "Salient terms associated with this Local result based on the result gcids." + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryLocalSignals": { + "description": "A message that stores information about Local results to be used in the Packer for Local Categorical derived intent deduplication and conformance.", + "id": "KnowledgeAnswersIntentQueryLocalSignals", + "properties": { + "localResultSignals": { + "description": "Signals relating to each Local result.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryLocalResultSignals" + }, + "type": "array" + }, + "minSalientTermSimilarity": { + "description": "Minimum salient term similarity between Local results.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryLocationMarkersSignals": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryLocationMarkersSignals", + "properties": { + "type": { + "description": "The type of the lightweight token match.", + "enum": [ + "UNKNOWN", + "SOURCE", + "GOAL" + ], + "enumDescriptions": [ + "", + "The semantic role of the linguist marker is that of \"source\" or \"origin,\" often indicated by the preposition \"from\" in the English language.", + "The semantic role of the linguist marker is that of \"goal\" or \"destination,\" often indicated by the preposition \"to\" in the English language." + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryMediaEntitySignals": { + "description": "Signals about the media entity.", + "id": "KnowledgeAnswersIntentQueryMediaEntitySignals", + "properties": { + "artistTitle": { + "description": "For songs, this is the name of the primary artist, i.e. \"Shallow\" would \"Lady Gaga\" set.", + "type": "string" + }, + "name": { + "description": "Name of the media entity, i.e. \"Lady Gaga\".", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryMuninSignals": { + "description": "Signals derived from Munin Function call annotations.", + "id": "KnowledgeAnswersIntentQueryMuninSignals", + "properties": { + "isIsolated": { + "description": "If the modifier is only a good soft modifier by itself, then we would trigger only if it's the only modifier", + "type": "boolean" + }, + "softModifierCollection": { + "description": "Signals for $ListQueryRuleWithSoftModifier. Collections allowed by the soft modifier.", + "items": { + "type": "string" + }, + "type": "array" + }, + "textIsGenerated": { + "description": "If true, the text for this argument did not come from the query, but was generated somehow else.", + "type": "boolean" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryNTPRAnnotationSignals": { + "description": "Signals associated with NTPRAnnotator annotations. Empty. The signal being present is enough for the conformance checking library to be able to check.", + "id": "KnowledgeAnswersIntentQueryNTPRAnnotationSignals", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersIntentQueryNimbleAnnotationSignals": { + "description": "Signals associated with NimbleAnnotator annotations.", + "id": "KnowledgeAnswersIntentQueryNimbleAnnotationSignals", + "properties": { + "annotationSource": { + "description": "Where the annotation has been read from.", + "enum": [ + "SSTABLE", + "LG", + "TS", + "PRIVATE_SSTABLE" + ], + "enumDescriptions": [ + "Annotation was obtained from SStable.", + "Annotation was obtained from Livegraph snapshot (see go/nimble-from-lg).", + "Annotation was obtained from Topic Server.", + "Annotation was obtained from Private SStable." + ], + "type": "string" + }, + "type": { + "description": "A client-controlled identifier that the client can use to distinguish between different sets of annotations.", + "type": "string" + }, + "version": { + "description": "Version identifier used to isolate different clients from each other. A client should intersect this list of versions with the ones the client is interested in, and use the annotation if the intersection is non-empty.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryOnDeviceAnnotationSignals": { + "description": "Signals coming from on-device annotators.", + "id": "KnowledgeAnswersIntentQueryOnDeviceAnnotationSignals", + "properties": { + "provenance": { + "description": "Provenance of the annotator. Equivalent to the `provenance` field in OnDeviceParserInput::AnnotationInfo. This is used to map from AnnotationInfo to nlp_sage.ScoredAnnotation, since nlp_sage.ScoredAnnotation doesn't have a native `provenance` field. Note in the (very) long term, we'd like to replace ScoredAnnotation with Argument altogether.", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryParsingSignals": { + "description": "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: 4", + "id": "KnowledgeAnswersIntentQueryParsingSignals", + "properties": { + "calibratedParsingScore": { + "description": "A parsing score that is independently calibrated by each parser/IG, used by pre-fulfillment ranker, see http://go/prefulfillment-ranker.", + "format": "double", + "type": "number" + }, + "qrewriteCallPathInfo": { + "$ref": "NlpLoggingQRewriteClientCallPathInfo", + "description": "This proto holds the complete call path info of the QRewrite client (e.g. the QUS's phase like \"RBT\",\"QBT\"; the QUS's candidate type like \"Identity\"; and the ACE's candidate type like \"FuzzyMatcher\")." + }, + "source": { + "description": "The parser that calibrated the parsing score below.", + "enum": [ + "UNKNOWN_PARSING_SOURCE", + "SAGE", + "UNSTRUCTURED_INTENTS", + "NSP" + ], + "enumDescriptions": [ + "", + "Score is calibrated by Sage IG.", + "The FunctionCall is produced by the Unstructured Intent IG. See go/unstructured-intents-ig.", + "The FunctionCall is produced by NSP in TUIG. This is consumed in QUS, to route behavior specific to NSP." + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryPersonalEntity": { + "description": "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", + "id": "KnowledgeAnswersIntentQueryPersonalEntity", + "properties": { + "attributeId": { + "description": "Attribute ID of a personal_summary_node_child.", + "type": "string" + }, + "entityRelationship": { + "items": { + "$ref": "KnowledgeAnswersIntentQueryPersonalEntityEntityRelationship" + }, + "type": "array" + }, + "freebaseMid": { + "description": "The mid of the entity in freebase associated with this span.", + "type": "string" + }, + "personalEntityChild": { + "description": "Every PersonalEntity might itself rescursively contain related Personal Entities, e.g. for, \"my father's mother\" a parent Personal Entity for 'Mother()' contains a child Personal Entity of the form 'Mother(Myself)'.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryPersonalEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryPersonalEntityEntityRelationship": { + "description": "The relationship information from QRef. Only included if the QRefAnnotator is initialised with include_annotated_relationships.", + "id": "KnowledgeAnswersIntentQueryPersonalEntityEntityRelationship", + "properties": { + "entityIndex": { + "description": "The index of the other entity in the relationship.", + "format": "int32", + "type": "integer" + }, + "linkPropertyName": { + "description": "Names of the relationship links.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryQrefAnnotationSignals": { + "description": "Signals associated with Qref annotations.", + "id": "KnowledgeAnswersIntentQueryQrefAnnotationSignals", + "properties": { + "score": { + "description": "Numeric value associated with each annotation within the Qref servlet output.", + "format": "double", + "type": "number" + }, + "trustedNameConfidence": { + "description": "Trusted name confidence signal https://g3doc.corp.google.com/repository/webref/preprocessing/names/tnc_classifier/README.md", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryRelatednessSignals": { + "description": "Relatedness Matrix signals for FunctionCall Arguments.", + "id": "KnowledgeAnswersIntentQueryRelatednessSignals", + "properties": { + "queryPopularity": { + "format": "float", + "type": "number" + }, + "youtubeViews": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQuerySaftSignals": { + "description": "Signals derived from overlapping saft annotations.", + "id": "KnowledgeAnswersIntentQuerySaftSignals", + "properties": { + "entityType": { + "enum": [ + "UNMARKED", + "PERSON", + "NOMINAL_PERSON", + "ORGANIZATION", + "LOCATION", + "OTHER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "isHeadOfIntent": { + "type": "boolean" + }, + "isVerb": { + "description": "Saft often marks verbs as head of intent and we may want to ignore those.", + "type": "boolean" + }, + "number": { + "enum": [ + "UNKNOWN", + "SINGULAR", + "PLURAL" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQuerySemanticAnnotationSignals": { + "description": "Signals associated with nlp_ig::v1::SemanticAnnotator.", + "id": "KnowledgeAnswersIntentQuerySemanticAnnotationSignals", + "properties": { + "category": { + "description": "Name of the subgrammar category this annotation is associated with.", + "type": "string" + }, + "domain": { + "description": "Name of the subgrammar domain.", + "type": "string" + }, + "features": { + "items": { + "$ref": "KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature" + }, + "type": "array" + }, + "score": { + "description": "Numeric value associated with each subgrammar annotation. Used for in-domain ranking inside the Aqua Analyzer. This field is not guaranteed to be in any range. Furthermore, this field should never be compared for annotations with differing 'domain' value. The field is included here for making the Aqua Analyzer work with subgrammar annotations that have been generated in a different Aqua Analyzer (typically by TUIG SemanticAnnotationServlet). TL;DR: Consumers of this message are STRONGLY DISCOURAGED from using this field.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature": { + "description": "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.", + "id": "KnowledgeAnswersIntentQuerySemanticAnnotationSignalsFeature", + "properties": { + "name": { + "type": "string" + }, + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQuerySensitiveArgumentValueGuard": { + "id": "KnowledgeAnswersIntentQuerySensitiveArgumentValueGuard", + "properties": { + "doNotUseDebugOnlyDecryptedValue": { + "$ref": "KnowledgeAnswersIntentQueryArgumentValue", + "description": "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": { + "description": "Encrypted protobuffer of type ArgumentValue.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryShoppingIds": { + "description": "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", + "id": "KnowledgeAnswersIntentQueryShoppingIds", + "properties": { + "aspectClusterIds": { + "description": "A shopping aspect cluster id. These are attributes mined from mentions in web articles.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "brandEntityId": { + "description": "Brand entity id. Brands are fully reconciled with KG entities so there should never be ambiguity as to which brand applies (those would be separate MIDs). ", + "format": "uint64", + "type": "string" + }, + "bxCategoryIds": { + "description": "A category in the shopping browseonomy, a taxonomy of product types that can be found at go/bx. This field is expected to contain the deepest node in the browseonomy that the intent or argument pertains to, which may be an internal node. It does not contain the entire path of categories.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "measures": { + "items": { + "$ref": "KnowledgeAnswersIntentQueryShoppingIdsMeasureValue" + }, + "type": "array" + }, + "merchantIds": { + "description": "List of merchant customer account IDs associated with a merchant entity in KG. NOTE: Soon to be deprecated, see go/merchant_mids_in_indexer design", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "merchantSourceIds": { + "description": "A shopping merchant source id, i.e. the key used to identify Shopping Merchants as they are imported into KG. For reference, these IDs are populated in: * CommerceDB under BusinessIdentification.knowledge_graph.source_id * KG using the /shopping/merchant/id predicate", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "tagIds": { + "description": "Moka attributes of a product. This includes color tags but currently not brand. We allow the possibility for multiple tag ids, as multiple Moka tag ids may map to the same mid, and we may not be able to find a single matching Moka tag. Also, cross-category Moka colors intentionally map a single color mentioned in the query to an expansion of many tags representing points in LAB color space (although this representation is expected to change).", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryShoppingIdsMeasureValue": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryShoppingIdsMeasureValue", + "properties": { + "facetId": { + "format": "int64", + "type": "string" + }, + "value": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQuerySignalComputationFallbackIntent": { + "description": "A message representing an intent to use for intent scoring if the root intent is invalid.", + "id": "KnowledgeAnswersIntentQuerySignalComputationFallbackIntent", + "properties": { + "intent": { + "description": "The intent name of the fallback intent.", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQuerySimpleValue": { + "description": "A message representing a simple literal value.", + "id": "KnowledgeAnswersIntentQuerySimpleValue", + "properties": { + "boolValue": { + "type": "boolean" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "identifier": { + "$ref": "KnowledgeAnswersIntentQueryIdentifier" + }, + "intValue": { + "format": "int64", + "type": "string" + }, + "stringValue": { + "type": "string" + }, + "ungroundedValue": { + "description": "Ungrounded value contains the part of the query (or web snippet, etc.) that was not understood. For more information on this field, see the \"Ungrounded value\" item in the table of contents of go/iql-v1", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQuerySupportTransferSignals": { + "description": "Signals indicating whether this entity received or transferred support (and from which entities).", + "id": "KnowledgeAnswersIntentQuerySupportTransferSignals", + "properties": { + "supportTransferSource": { + "description": "Entities that transferred support to this entity (mids).", + "items": { + "type": "string" + }, + "type": "array" + }, + "supportTransferTarget": { + "description": "Entities that received support from this entity (mids).", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryTeleportArgumentAnnotatorSignals": { + "description": "Signals associated with TeleportArgumentAnnotator annotations. Empty. The signal being present is enough for the conformance checking library to be able to check.", + "id": "KnowledgeAnswersIntentQueryTeleportArgumentAnnotatorSignals", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersIntentQueryToken": { + "description": "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/word_prior_from_examples_lib.cc, and ranges between 0 and 1. Stopwords and intent tokens (primary and component) have a score of 1.0.", + "id": "KnowledgeAnswersIntentQueryToken", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "This field is used inside Aqua and outside Aqua for identifying the token indices and/or byte offsets of this Token." + }, + "ngram": { + "description": "|ngram| should be populated with a string from the raw query, not the normalized tokens. E.g. The ngram in the ignored token for the Height intent on the query [Height of barack obama], will be \"Height\". The ngram in the ignored token for the Videos intent on the query [vidéos] will be \"vidéos\".", + "type": "string" + }, + "parsedDueToExperiment": { + "description": "Experiments that caused this Token to parse, without which this would not have parsed.", + "items": { + "type": "string" + }, + "type": "array" + }, + "prior": { + "format": "float", + "type": "number" + }, + "provenance": { + "enum": [ + "UNKNOWN", + "INTENT_PRIMARY", + "INTENT_COMPONENT", + "STOPWORD", + "CONTEXT_INTENT", + "CONTEXT_ANSWER_TYPE", + "CONTEXT_ENTITY_TYPE", + "PUNCTUATION", + "LOCATION_ALIAS_ANNOTATION", + "OPTIONALIZED" + ], + "enumDescriptions": [ + "We don't know how this token was explained. This will be the provenance for unexplained tokens.", + "This is a PRIMARY or core token in the Intent Annotation. This is currently NOT USED by the LooseParser.", + "This token is a part of the Intent Annotation, one of the tokens that helped us identify the intent of the query and create a parse. eg. [wife] in [who is obama' wife]", + "This token was explained away as safe-to-ignore after the parse. eg. [is] in [who is obama's wife]", + "This token is a context phrase for the intent in the parse. eg. [who] in [who is obama's wife]", + "This token is a context phrase, and indicates how the context phrase was learned for the intent (by sharing context phrases between intents with the same answer type). This is currently NOT USED by the LooseParser.", + "This is currently NOT USED by the LooseParser.", + "This token is punctuation, and so is explained as safe-to-ignore.", + "This token's data was derived directly from an alias-type Location annotation. For example, the Location subgrammar generates an annotation with {type: ALIAS alias_location: HERE} for [where am i] (http://screen/BhuAnCgtujUG9Pu), so LooseParser may use this annotation's byte information in generating tokens downstream.", + "Term is not a hard coded stopword, but online scoring considered it not important for term explanation." + ], + "type": "string" + }, + "provenanceId": { + "description": "Unique identifiers for the provenance of this token, for example, NLP Repository Example IDs.", + "items": { + "type": "string" + }, + "type": "array" + }, + "provenanceLanguage": { + "type": "string" + }, + "synonyms": { + "items": { + "$ref": "KnowledgeAnswersIntentQueryTokenSynonym" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryTokenSynonym": { + "description": "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.", + "id": "KnowledgeAnswersIntentQueryTokenSynonym", + "properties": { + "source": { + "enum": [ + "UNKNOWN", + "SQUERY" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "synonymNgram": { + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntentQueryTokens": { + "description": "Tokens includes a list of tokens, with an aggregated score of the priors of the tokens, if any.", + "id": "KnowledgeAnswersIntentQueryTokens", + "properties": { + "score": { + "description": "Score for this group of tokens is currently product of priors.", + "format": "float", + "type": "number" + }, + "token": { + "items": { + "$ref": "KnowledgeAnswersIntentQueryToken" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersIntersectType": { + "id": "KnowledgeAnswersIntersectType", + "properties": { + "slotNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersMarker": { + "description": "A Marker specifies a Meaning Expression's (i.e. intent FunctionCall) purpose. NOTE: Markers always impact go/intent-resolution semantics.", + "id": "KnowledgeAnswersMarker", + "properties": { + "command": { + "$ref": "KnowledgeAnswersMarkerCommand" + }, + "openQuestion": { + "$ref": "KnowledgeAnswersMarkerOpenQuestion" + }, + "polarQuestion": { + "$ref": "KnowledgeAnswersMarkerPolarQuestion" + }, + "stateOfAffairs": { + "$ref": "KnowledgeAnswersMarkerStateOfAffairs" + } + }, + "type": "object" + }, + "KnowledgeAnswersMarkerCommand": { + "description": "Indicates a command, instructing someone to do something which might be explicit (e.g. [call me]) or implicit (e.g. [can you call me]).", + "id": "KnowledgeAnswersMarkerCommand", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersMarkerOpenQuestion": { + "description": "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", + "id": "KnowledgeAnswersMarkerOpenQuestion", + "properties": { + "slotKey": { + "$ref": "KnowledgeAnswersMeaningSchemaSlotKey", + "description": "Note: This is still under development and not available for general use. Contact meaning-platform-eng@ for questions." + }, + "slotName": { + "description": "One or multiple slots may be requested by the marker. See go/mrf-multiple-output-slots for details on requesting multiple output slots.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersMarkerPolarQuestion": { + "description": "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.", + "id": "KnowledgeAnswersMarkerPolarQuestion", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersMarkerStateOfAffairs": { + "description": "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.", + "id": "KnowledgeAnswersMarkerStateOfAffairs", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersMeaningSchemaKey": { + "description": "The primary key for an intent. Next ID: 3", + "id": "KnowledgeAnswersMeaningSchemaKey", + "properties": { + "deprecatedVersion": { + "description": "The version has been changed to be defined as a horizontal version on the entire meaning catalog instead of per-schema.", + "format": "int64", + "type": "string" + }, + "mid": { + "description": "The minted MID for an intent.", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersMeaningSchemaSlotKey": { + "description": "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", + "id": "KnowledgeAnswersMeaningSchemaSlotKey", + "properties": { + "mid": { + "description": "The minted MID for the slot. This ID uniquely identifies the slot globally.", + "type": "string" + }, + "uniqueId": { + "description": "A stable unique ID for this intent minted from go/uniqueid. NOTE: This is considered a private field used only for internal Intent Catalog purposes (i.e. as a source ID for generating this intent's associated MID). Additionally, this field is only populated on the schema. TODO (b/168907943): Move \"unique_id\" out of MeaningSchemaSlotKey proto message. Note: Please do not use this field. It is going to be moved out of this proto message.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersMeasurementType": { + "description": "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).", + "id": "KnowledgeAnswersMeasurementType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersNormalizedStringType": { + "description": "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.", + "id": "KnowledgeAnswersNormalizedStringType", + "properties": { + "normalizedValue": { + "items": { + "type": "string" + }, + "type": "array" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersNumberType": { + "description": "A NumberType configures a value whose type is intended to be numeric.", + "id": "KnowledgeAnswersNumberType", + "properties": { + "keepAsString": { + "description": "If true, the semantics of the NumberType argument are retained as a string, rather than being converted to a float-type object. This option is particularly useful in cases where leading 0s in the user input are meaningful, e.g. for zip codes or sports jersey numbers. For the user- specified value \"01\", for instance, the PathQuery semantics will be: def $Slot \"01\"", + "type": "boolean" + }, + "rangeConstraint": { + "$ref": "KnowledgeAnswersRangeConstraint", + "description": "Range constraint limits the set of numbers accepted by this type. The constraint applies to all subtypes. Currently, this constraint is only enforced in Loose Parser." + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + }, + "subType": { + "description": "sub_type is a list of the NumberSubTypes which are accepted. If the list is empty, that means all numeric or ordinal values are accepted. If multiple values are specified, then this value accepts any of the sub_types in the list.", + "items": { + "enum": [ + "NONE", + "ORDINAL", + "NUMERIC", + "INTEGER", + "FLOAT" + ], + "enumDescriptions": [ + "Matches either numeric or ordinal values.", + "Matches only ordinal numbers.", + "Matches only numeric values (e.g. \"1\", but not \"1st\" or \"first\"). This matches either integers or floating-point numbers.", + "This matches ONLY integers.", + "This matches ONLY floating-point numbers." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersOpaqueAogType": { + "description": "Custom opaque type used by actions-on-google in-dialog queries. See go/3p-custom-intents-wrt-meaning-catalog", + "id": "KnowledgeAnswersOpaqueAogType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueAppAnnotationType": { + "id": "KnowledgeAnswersOpaqueAppAnnotationType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueAudioType": { + "id": "KnowledgeAnswersOpaqueAudioType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueCalendarEventType": { + "id": "KnowledgeAnswersOpaqueCalendarEventType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueCalendarEventWrapperType": { + "description": "Used for sensitive calendar events that require additional BUILD visibility protection. See go/multi-account-event-representation.", + "id": "KnowledgeAnswersOpaqueCalendarEventWrapperType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueCalendarReferenceType": { + "id": "KnowledgeAnswersOpaqueCalendarReferenceType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueComplexQueriesRewriteType": { + "id": "KnowledgeAnswersOpaqueComplexQueriesRewriteType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueComponentReferenceIndexType": { + "id": "KnowledgeAnswersOpaqueComponentReferenceIndexType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueDeviceIdType": { + "id": "KnowledgeAnswersOpaqueDeviceIdType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueDeviceType": { + "id": "KnowledgeAnswersOpaqueDeviceType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueDeviceUserIdentityType": { + "id": "KnowledgeAnswersOpaqueDeviceUserIdentityType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueHomeAutomationDeviceType": { + "id": "KnowledgeAnswersOpaqueHomeAutomationDeviceType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueLocationType": { + "id": "KnowledgeAnswersOpaqueLocationType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueMediaType": { + "id": "KnowledgeAnswersOpaqueMediaType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueMessageNotificationType": { + "id": "KnowledgeAnswersOpaqueMessageNotificationType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueMoneyType": { + "id": "KnowledgeAnswersOpaqueMoneyType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueNewsProviderType": { + "id": "KnowledgeAnswersOpaqueNewsProviderType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueOnDeviceType": { + "id": "KnowledgeAnswersOpaqueOnDeviceType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaquePersonType": { + "id": "KnowledgeAnswersOpaquePersonType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaquePersonalIntelligenceEntityType": { + "description": "Entity parsed from manual grammar interpretation in the Personal Intelligence domain.", + "id": "KnowledgeAnswersOpaquePersonalIntelligenceEntityType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueProductivityListItemType": { + "id": "KnowledgeAnswersOpaqueProductivityListItemType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueRecurrenceType": { + "id": "KnowledgeAnswersOpaqueRecurrenceType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueReminderType": { + "id": "KnowledgeAnswersOpaqueReminderType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueShoppingMerchantType": { + "id": "KnowledgeAnswersOpaqueShoppingMerchantType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueShoppingOfferType": { + "id": "KnowledgeAnswersOpaqueShoppingOfferType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueShoppingProductExpressionType": { + "id": "KnowledgeAnswersOpaqueShoppingProductExpressionType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueShoppingProductType": { + "id": "KnowledgeAnswersOpaqueShoppingProductType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueShoppingStoreType": { + "id": "KnowledgeAnswersOpaqueShoppingStoreType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueTimerType": { + "id": "KnowledgeAnswersOpaqueTimerType", + "properties": {}, + "type": "object" + }, + "KnowledgeAnswersOpaqueType": { + "description": "Note: OpaqueType is deprecated and addition of new fields is not allowed. 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. 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: 31", + "id": "KnowledgeAnswersOpaqueType", + "properties": { + "aogType": { + "$ref": "KnowledgeAnswersOpaqueAogType" + }, + "appAnnotationType": { + "$ref": "KnowledgeAnswersOpaqueAppAnnotationType" + }, + "audioType": { + "$ref": "KnowledgeAnswersOpaqueAudioType" + }, + "calendarEventType": { + "$ref": "KnowledgeAnswersOpaqueCalendarEventType" + }, + "calendarEventWrapperType": { + "$ref": "KnowledgeAnswersOpaqueCalendarEventWrapperType" + }, + "calendarReferenceType": { + "$ref": "KnowledgeAnswersOpaqueCalendarReferenceType" + }, + "complexQueriesRewriteType": { + "$ref": "KnowledgeAnswersOpaqueComplexQueriesRewriteType" + }, + "componentReferenceType": { + "$ref": "KnowledgeAnswersOpaqueComponentReferenceIndexType" + }, + "deviceIdType": { + "$ref": "KnowledgeAnswersOpaqueDeviceIdType" + }, + "deviceType": { + "$ref": "KnowledgeAnswersOpaqueDeviceType" + }, + "deviceUserIdentityType": { + "$ref": "KnowledgeAnswersOpaqueDeviceUserIdentityType" + }, + "homeAutomationDeviceType": { + "$ref": "KnowledgeAnswersOpaqueHomeAutomationDeviceType" + }, + "locationType": { + "$ref": "KnowledgeAnswersOpaqueLocationType" + }, + "mediaType": { + "$ref": "KnowledgeAnswersOpaqueMediaType" + }, + "messageNotificationType": { + "$ref": "KnowledgeAnswersOpaqueMessageNotificationType" + }, + "moneyType": { + "$ref": "KnowledgeAnswersOpaqueMoneyType" + }, + "narrativeNewsProviderType": { + "$ref": "KnowledgeAnswersOpaqueNewsProviderType" + }, + "onDeviceType": { + "$ref": "KnowledgeAnswersOpaqueOnDeviceType" + }, + "personType": { + "$ref": "KnowledgeAnswersOpaquePersonType" + }, + "personalIntelligenceEntityType": { + "$ref": "KnowledgeAnswersOpaquePersonalIntelligenceEntityType" + }, + "productivityListItemType": { + "$ref": "KnowledgeAnswersOpaqueProductivityListItemType" + }, + "recurrenceType": { + "$ref": "KnowledgeAnswersOpaqueRecurrenceType" + }, + "reminderType": { + "$ref": "KnowledgeAnswersOpaqueReminderType" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + }, + "shoppingMerchantType": { + "$ref": "KnowledgeAnswersOpaqueShoppingMerchantType" + }, + "shoppingOfferType": { + "$ref": "KnowledgeAnswersOpaqueShoppingOfferType" + }, + "shoppingProductExpressionType": { + "$ref": "KnowledgeAnswersOpaqueShoppingProductExpressionType" + }, + "shoppingProductType": { + "$ref": "KnowledgeAnswersOpaqueShoppingProductType" + }, + "shoppingStoreType": { + "$ref": "KnowledgeAnswersOpaqueShoppingStoreType" + }, + "timerType": { + "$ref": "KnowledgeAnswersOpaqueTimerType" + } + }, + "type": "object" + }, + "KnowledgeAnswersPlexityRequirement": { + "description": "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.", + "id": "KnowledgeAnswersPlexityRequirement", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + }, + "simplePlexity": { + "description": "Simple plexity: the slot's filler must allow the specified plexity value, for example it must contain multiple individuals if the plexity is MULTIPLEX.", + "enum": [ + "UNSPECIFIED_PLEXITY", + "UNIPLEX", + "MULTIPLEX", + "ANY_PLEXITY" + ], + "enumDescriptions": [ + "Plexity is unknown or unspecified.", + "Viewed as a single individual. Potential example: the output slot of Ordinal, i.e. the meaning of [the third spielberg movie].", + "Viewed as consisting of multiple individuals or subparts. Example: the Last.list slot \"game in NBA season\" in [last game in NBA season].", + "Either uniplex or multiplex. Example: the Buy.product slot for [buy] in [buy a book], [buy a book and a magazine], [buy everything grimm wrote]." + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersPolarQuestionType": { + "description": "A special type representing a polar question.", + "id": "KnowledgeAnswersPolarQuestionType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersRangeConstraint": { + "id": "KnowledgeAnswersRangeConstraint", + "properties": { + "max": { + "$ref": "KnowledgeAnswersRangeConstraintRangeEndpoint" + }, + "min": { + "$ref": "KnowledgeAnswersRangeConstraintRangeEndpoint" + } + }, + "type": "object" + }, + "KnowledgeAnswersRangeConstraintRangeEndpoint": { + "id": "KnowledgeAnswersRangeConstraintRangeEndpoint", + "properties": { + "isExclusive": { + "description": "If true, then this endpoint's value is not included in the range.", + "type": "boolean" + }, + "value": { + "description": "The value of this endpoint", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "KnowledgeAnswersSameType": { + "id": "KnowledgeAnswersSameType", + "properties": { + "slotName": { + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersSemanticType": { + "description": "A SemanticType configures a value determined by another source, in particular another intent or a semantic frame. See go/unifying-intents and go/framery.", + "id": "KnowledgeAnswersSemanticType", + "properties": { + "includesContainingIntent": { + "description": "Determines whether or not the meaning schema that contains this semantic_type conforms to a function call with the name and arguments taken from the meaning schema. As it refers to the \"containing_intent\", this field should only be set in a semantic_type declared in an intent's type_members field. The behavior of this field is undefined in other cases, for example, declaring the type of an intent slot. On Assistant, we use meaning schemas for argument types to represent both function call values as well as a reusable tool to host other argument values (opaque types, normalized strings, subsets of entities) across intents. Teams need this information to run conformance checks and annotate new data. Example: If the intents below are in the intent catalog, then: - Intent(slot=\"some string\") is conformant, because Type has string_type{} in its type_members. - Intent(slot=Type()) is not conformant, because Type has set semantic_type.includes_containing_intent to false. - Intent(slot=SubType()) is conformant, because type_members is not inherited. { id: \"Intent\" slot: { name: \"slot\" type: { semantic_type { name: \"Type\" }} } } { id: \"Type\" type_members { string_type{} semantic_type { includes_containing_intent: false } } } { id: \"SubType\" parent { id: \"Type\" relationship_type: SUBTYPE } }", + "type": "boolean" + }, + "name": { + "description": "Names of valid sources of the semantics (for example: a frame or an intent).", + "items": { + "type": "string" + }, + "type": "array" + }, + "nameRemodelings": { + "description": "Contains data about current schema remodelings at the SemanticType name level. The \"name\" field contains all possible semantic type names and \"semantic_type_name_remodelings\" acts as an overlay to determine which ones to surface based on which schema remodeling IDs are requested. For more information see go/meaning-remodeling-framework.", + "items": { + "$ref": "NlpMeaningSemanticTypeNameMeaningRemodelings" + }, + "type": "array" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityArgumentEvalPolicy": { + "description": "Policy controlling argument level eval.", + "id": "KnowledgeAnswersSensitivityArgumentEvalPolicy", + "properties": { + "policyName": { + "description": "Optional cannery policy name. If it presents then Intent Scrubber will use the corresponding Cannery rule for argument scrubbing and redaction instead. It should only be used for existing complex argment value types such as HomeAutomationDevice.", + "type": "string" + }, + "redactQuerySpan": { + "description": "Redact corresponding span of the string query.", + "type": "boolean" + }, + "replacement": { + "description": "Customized replacement phrase, if missing ${ArgumentName}_REDACTED is used as default.", + "type": "string" + }, + "scrubArgumentValue": { + "description": "Scrub argument value and signals before saving to eval storage. If not set, 1) inherit the policy from the outer argument if there is one (for nested intents); 2) finally default to type based scrubbing: see go/argument-type-scrubbing.", + "type": "boolean" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityInstruction": { + "description": "Instructions (eg., logging, disambiguation, ads serving) of handling a sensitive intent and its data. LINT.IfChange NextId: 8", + "id": "KnowledgeAnswersSensitivityInstruction", + "properties": { + "argument": { + "$ref": "KnowledgeAnswersSensitivityInstructionArgument" + }, + "intent": { + "$ref": "KnowledgeAnswersSensitivityInstructionIntent" + }, + "legacyAssistantSensitivity": { + "$ref": "SearchPolicyRankableSensitivity", + "description": "This field is for backward compatibility." + }, + "multiAccountAllowed": { + "description": "Controls whether a top-level intent is multi-account approved. NLU will do go/cross-account-understanding only for intents with this bit on. Also, this bit should be propagated to user turn Attentionl Entities to extend protection of cross-account data to next turns. In principle fulfillment services (e.g., Monastery) should only dispatch such intents to multi-account approved fulfillers (schemas), at least when the user has a linked dasher account. The Assistant runtime policy engine should treat a query as dasher data if 1) this bit is true in the string redaction, and 2) the user has a linked dasher account, and apply a more restrictive rule for whitelisting, regardless of the actual account provenance in Sensitivity. Example: [User logged in to their personal gmail account.] Q1: \"Schedule a meeting tiltled okr review at 3pm\". Assistant: \"Should I scheduled it on your xyz@gmail.com account?\" Q2: \"No, add it to my xyz@bigcorp.com account.\" We don't know Q1 is dasher data until Q2. To prevent leaking of Q1 to non-dasher approved binaries, this bit should be used as a proactive measure. It might introduce some over-triggering (e.g., user says \"Yes\" in Q2), but is much better than blindly treating every query as dasher, not considering whether it actually triggers any multi-account capable intents or not (see b/164420114 for example).", + "type": "boolean" + }, + "previousQuery": { + "$ref": "KnowledgeAnswersSensitivityInstructionPreviousQuery" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityInstructionArgument": { + "description": "Slot/Argument level instructions.", + "id": "KnowledgeAnswersSensitivityInstructionArgument", + "properties": { + "eval": { + "$ref": "KnowledgeAnswersSensitivityArgumentEvalPolicy" + }, + "logging": { + "$ref": "KnowledgeAnswersSensitivityLoggingPolicy" + }, + "serving": { + "$ref": "KnowledgeAnswersSensitivityServingPolicy" + }, + "storage": { + "$ref": "KnowledgeAnswersSensitivityStoragePolicy" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityInstructionIntent": { + "description": "Intent level instructions apply to the entire intent and all its argument values.", + "id": "KnowledgeAnswersSensitivityInstructionIntent", + "properties": { + "eval": { + "$ref": "KnowledgeAnswersSensitivityIntentEvalPolicy" + }, + "footprints": { + "$ref": "KnowledgeAnswersSensitivityMyActivityPolicy" + }, + "logging": { + "$ref": "KnowledgeAnswersSensitivityLoggingPolicy" + }, + "serving": { + "$ref": "KnowledgeAnswersSensitivityServingPolicy" + }, + "storage": { + "$ref": "KnowledgeAnswersSensitivityStoragePolicy" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityInstructionPreviousQuery": { + "description": "Instructions for knowledge_context.PreviousQuery. See go/apps-userdata-guidelines.", + "id": "KnowledgeAnswersSensitivityInstructionPreviousQuery", + "properties": { + "logging": { + "$ref": "KnowledgeAnswersSensitivityLoggingPolicy" + }, + "serving": { + "$ref": "KnowledgeAnswersSensitivityServingPolicy" + }, + "storage": { + "$ref": "KnowledgeAnswersSensitivityStoragePolicy" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityIntentEvalPolicy": { + "description": "Policy controlling intent level eval.", + "id": "KnowledgeAnswersSensitivityIntentEvalPolicy", + "properties": { + "allArguments": { + "$ref": "KnowledgeAnswersSensitivityArgumentEvalPolicy", + "description": "Policy for all arguments, so no need to repeat on every argument." + }, + "enabled": { + "description": "Controls whether to enabled limited logging (rpc whitelisting + GWS log query redaction) if the intent wins post-fulfillment ranking.", + "type": "boolean" + }, + "nestedIntentOnly": { + "description": "The eval policy won't apply if the annotated intent is a root. This check is majorly to prevent calling IntentScrubber halfway from InterpretationScrubber via nested intents.", + "type": "boolean" + }, + "scrubEntireIntent": { + "description": "Scrub entire intent before saving to eval storage, leaving only intent name and sensitivity info.", + "type": "boolean" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityLoggingPolicy": { + "description": "Policies controlling the logging.", + "id": "KnowledgeAnswersSensitivityLoggingPolicy", + "properties": { + "scrubArgumentValue": { + "description": "The contents of the argument value should be scrubbed before being written to logs.", + "type": "boolean" + }, + "scrubContext": { + "description": "If this is set to true, this Sensitivity's presence will result in QRewrite to enable AS logging to scrub any discourse context.", + "type": "boolean" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityMyActivityPolicy": { + "description": "Policy controlling MyActivity.", + "id": "KnowledgeAnswersSensitivityMyActivityPolicy", + "properties": { + "myActivityRedactedAction": { + "enum": [ + "UNKNOWN_ACTION", + "REPLY_TO_BROADCAST", + "INITIATE_CALL", + "SEARCH_EMAIL", + "SEND_SMS", + "SEND_MESSAGE", + "SEND_EMAIL", + "SEND_CHAT_MESSAGE", + "VIEW_AGENDA", + "SHOW_CALENDAR_EVENT", + "ADD_CALENDAR_EVENT", + "DELETE_CALENDAR_EVENT", + "MODIFY_CALENDAR_EVENT", + "SEARCH_CALENDAR", + "SEARCH_TEXT_MESSAGE", + "REPLY_TO_MESSAGE", + "REPLY_TO_NOTIFICATION", + "READ_MESSAGE_NOTIFICATION", + "REPLY_TO_READ_MESSAGE_NOTIFICATION", + "SEARCH_GMAIL", + "YOUTUBE_KIDS", + "SEND_DIGITAL_OBJECT", + "SEND_FEEDBACK", + "SHARE_PHOTO", + "SHARE_VIDEO", + "SHARE_MUSIC", + "SHARE_SCREENSHOT", + "SHARE_WEBPAGE", + "REDIAL_CALL", + "RETURN_CALL", + "RETURN_MISSED_CALL", + "ROUTINE", + "DIAL_INTO_MEETING", + "SHARE_DIGITAL_OBJECT", + "COMPOSE_EMAIL", + "FIND_ON_APP_OR_BROWSER", + "KEYBOARD_DICTATION", + "SEARCH_GSUITE", + "JOIN_MEETING", + "CREATE_MEETING", + "CREATE_MEMORY", + "IN_CALL_PUNT", + "TELL_MY_FAMILY", + "ADD_REMINDER", + "SHOW_REMINDER", + "UPDATE_REMINDER", + "DELETE_REMINDER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "myActivityRedactionKey": { + "description": "This field will be translated by footprints and is used to describe the content that was redacted that will be displayed to the user in MyActivity.", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivitySensitivity": { + "description": "Canonical representation of query sensitivites. See go/sensitive-intents for more details.", + "id": "KnowledgeAnswersSensitivitySensitivity", + "properties": { + "accountProvenance": { + "description": "Used to annotate the provenace of cross-account personal data. See go/cross-account-understanding. Sensitivity could be annotated at query, intent, and argument levels. Query and intent could have data from multiple accounts, so this field is repeated. A sensitive knowledge_context.PreviousQuery might be dropped to prevent leaking cross-account data via Genie rewrite. For arguments, the best practice is to not blend multi-account data, and this field should be treated as singular to make ownership clear. When publishing attentional entities, contextual NLU might drop an argument that contains data from a different account for data protection. Mixing multi-account data in one argument will cause data from the primary account to be dropped altogether, which is an unnecessary quality loss.", + "items": { + "$ref": "QualityQrewriteAccountProvenance" + }, + "type": "array" + }, + "instruction": { + "$ref": "KnowledgeAnswersSensitivityInstruction", + "description": "Instruction of handling sensitive intent/argument data. Can be specified in Intent Catalog." + }, + "source": { + "description": "This should be systematically added without requiring the feature developers to add a source. This is for debug purpose as to whether the Sensitivity's trace/path included any of landmark code path helpful for tracing back the sensitivity sources. One should add a new source when one sees fits. It's chronological order as to which source is added first. One should not manually add a source. The same source can be repeated if the Sensitivity object went through the same code path twice.", + "items": { + "enum": [ + "UNKNOWN_SOURCE", + "INTENT_CATALOG", + "GENIE_REWRITER", + "FUNCTION_CALL_ARGUMENT_VALUE", + "ATTENTIONAL_ENTITY", + "PII_DETECTOR", + "DIALOG_STATE", + "ON_DEVICE", + "FUNCTION_CALL", + "END_OF_QREWRITE", + "SYSTEM_RESPONSE", + "DIALOG_INTENT_STATE", + "ANALYZER_POST_PROCESSOR", + "SAGE", + "ANNOTATION_ARGUMENT_VALUE", + "DIALOG_INTENT_STATE_INTENT", + "DIALOG_INTENT_STATE_INTENT_CONTEXTUAL", + "IGDP" + ], + "enumDescriptions": [ + "", + "This is reserved for Intent (FunctionCall.sensitivity) Sensitivity that comes from intent catalog's definition.See go/sensitive-intents.", + "Sensitivity of the current query can be pulled from sensitive context, such as a previous query and attentional entities, by Genie Rewriter. See go/sensitive-ae#heading=h.t81b1cz8i2l2.", + "Sensitivity of the current query can be due to intent_query's Argument.value.sensitivity proto field as opposed to the free-form legacy interp extension's free-form value. Argument.value.sensitivity May be set due to IntentCatalog definition or to inheritance from an attentional entity that replaced the argument's value. In that case, we shall see both sources present in the repeated field. Ex: source: INTENT_CATALOG source: ATTENTIONAL_ENTITY source: FUNCTION_CALL_ARGUMENT_VALUE", + "Sensitivity of the current query can be due to inheriting the sensitivity of either system-turn or user-turn attentional entity. User-turn AE sensitivity may come from intent catalog but becomes AE when AttentionalEntityReader converts the user-turn argument value as an AE. Ex: source: INTENT_CATALOG source: FUNCTION_CALL_ARGUMENT_VALUE source: ATTENTIONAL_ENTITY", + "Until its complete deprecation, the legacy SensitivityMode created by PiiDetector in QRewrite is wrapped around knowledge::answers::Sensitivity and is attached to Interpretation as a repeated extension.", + "Sensitivity can arise due to the current query being a follow-on query in a dialog.", + "This is set if a SensitivityMode is set on device (like Marble) and the server is converting it into a full Sensitivity proto. This includes only previous queries marked by the device.", + "Whether the sensitivity is read from FunctionCall.sensitivity", + "When Interp Sensitivity is finalized before outputing from QRewrite.", + "When Sensitivity is created or tagged based on the system response, such as components in the fulfillment stage.", + "When the sensitivity is copied to DialogIntentState.", + "When the sensitivity is propagated by AnalyzerResponseHackPostProcessor.", + "When the sensitivity is propagated by Sage.", + "When the sensitivity is from Annotation.argument.value.sensitivity.", + "When the sensitivity is from DialogIntentState.intent.sensitivity.", + "When the sensitivity is from DialogIntentState.intent.contextual_sensitivity.", + "When the sensitivity is propagated by IGDP via intent conversion." + ], + "type": "string" + }, + "type": "array" + }, + "type": { + "description": "Sensitivity type. See the enum definition below.", + "enum": [ + "UNKNOWN_TYPE", + "INTENT", + "CONTEXTUAL" + ], + "enumDescriptions": [ + "", + "go/sensitive-intents or cs/f:pii_detector.cc", + "go/contextual-sensitivity" + ], + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityServingPolicy": { + "description": "Policies controlling RPC Whitelist at serving time.", + "id": "KnowledgeAnswersSensitivityServingPolicy", + "properties": { + "enableRpcWhitelist": { + "description": "If this is set to true, QRewrite will enable RPC Whitelist to be applied in Assistant Server and Genie Rewriter.", + "type": "boolean" + } + }, + "type": "object" + }, + "KnowledgeAnswersSensitivityStoragePolicy": { + "description": "Policies controlling the storage.", + "id": "KnowledgeAnswersSensitivityStoragePolicy", + "properties": { + "encryptArgumentValue": { + "description": "The contents of the argument value should be encrypted before being written to a persistent storage (even if the storage has short time-to-live). No-op when specified at intent level.", + "type": "boolean" + }, + "encryptQueryAnnotationData": { + "description": "If this is set true, we encrypt QueryAnnotationDataProto prior to writing it to Footprint ASSISTANT_EPHEMERAL corpus. This enables restricting ACL to the data.", + "type": "boolean" + }, + "scrubAuxiliaryFieldsInConversationSnapshot": { + "description": "If this is set to true, the following fields in ConversationSnapshot are scrubbed: * circulated_state.squery * spoken_query * All client_op arguments |from_assistant| interactions", + "type": "boolean" + } + }, + "type": "object" + }, + "KnowledgeAnswersStateOfAffairsType": { + "description": "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.", + "id": "KnowledgeAnswersStateOfAffairsType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersStringType": { + "description": "A StringType configures a value whose type is intended to be arbitrary text.", + "id": "KnowledgeAnswersStringType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + }, + "singleToken": { + "description": "If true, this value will match a single token. If false, this value will match any nonzero number of tokens.", + "type": "boolean" + } + }, + "type": "object" + }, + "KnowledgeAnswersTimeZoneType": { + "description": "A TimeZoneType configures a value whose type is a timezone.", + "id": "KnowledgeAnswersTimeZoneType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersTrackingNumberType": { + "description": "A TrackingNumberType configures a value whose type is a TrackingNumber.", + "id": "KnowledgeAnswersTrackingNumberType", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + } + }, + "type": "object" + }, + "KnowledgeAnswersTypeTrait": { + "description": "A TypeTrait configures a value that has a property with any of the given trait_id. In practice this means: - any entity that has a metadata ID defined in the KP type_schema, - any intent that has a slot with the given ID. When comparing trait_id to metadata IDs or slot IDs, we lowercase and normalize for comparison.", + "id": "KnowledgeAnswersTypeTrait", + "properties": { + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings", + "description": "Contains data about current schema remodelings at this ValueType level. For more information see go/meaning-remodeling-framework." + }, + "traitId": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersUnionType": { + "id": "KnowledgeAnswersUnionType", + "properties": { + "slotNames": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeAnswersValueType": { + "description": "Specifies the allowed type(s) that a value can have, e.g. for a Slot. For example, having both entity_type 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. Next tag id: 24 LINT.IfChange", + "id": "KnowledgeAnswersValueType", + "properties": { + "anyType": { + "$ref": "KnowledgeAnswersAnyType", + "description": "This type is meant to accept \"any\" type and allow any and all composition. As such, it should not be used for any composition algorithms, e.g. in Loose Parser. See more detailed discussion at go/any-type-in-mrf. This type may appear on an answer_type, implying that the output of that Meaning Schema is allowed to nest in any other slot. However, support for this is NOT implemented in Loose Parser due to risk of overcomposition, but the MRF Conformance checker allows for this. If you are thinking of using this, please contact mrf-team@." + }, + "attributeType": { + "$ref": "KnowledgeAnswersAttributeType" + }, + "booleanType": { + "$ref": "KnowledgeAnswersBooleanType" + }, + "collectionType": { + "$ref": "KnowledgeAnswersCollectionType" + }, + "compoundType": { + "$ref": "KnowledgeAnswersCompoundType" + }, + "dateType": { + "$ref": "KnowledgeAnswersDateType" + }, + "dependencyType": { + "$ref": "KnowledgeAnswersDependencyType", + "description": "Work in progress: Used for configuring dynamic types to allow for type transparency. See: go/type-dependencies" + }, + "durationType": { + "$ref": "KnowledgeAnswersDurationType" + }, + "entityType": { + "$ref": "KnowledgeAnswersEntityType" + }, + "measurementType": { + "$ref": "KnowledgeAnswersMeasurementType" + }, + "normalizedStringType": { + "$ref": "KnowledgeAnswersNormalizedStringType", + "description": "Note that normalized_string_type is NOT supported in the loose parser. A slot with this type will cause the intent to not be parsed." + }, + "numberType": { + "$ref": "KnowledgeAnswersNumberType" + }, + "opaqueType": { + "$ref": "KnowledgeAnswersOpaqueType" + }, + "plexityRequirement": { + "$ref": "KnowledgeAnswersPlexityRequirement" + }, + "pluralityType": { + "enum": [ + "ALL", + "PLURAL_ONLY", + "SINGULAR_ONLY" + ], + "enumDescriptions": [ + "Value can be singular or plural.", + "Value is always plural.", + "Value is always singular." + ], + "type": "string" + }, + "polarQuestionType": { + "$ref": "KnowledgeAnswersPolarQuestionType" + }, + "semanticType": { + "$ref": "KnowledgeAnswersSemanticType" + }, + "slotName": { + "description": "DEPRECATED: see go/type-dependencies. Please reach out to suwu@, dqwang@ if usage is required.", + "type": "string" + }, + "stateOfAffairsType": { + "$ref": "KnowledgeAnswersStateOfAffairsType" + }, + "stringType": { + "$ref": "KnowledgeAnswersStringType" + }, + "timezoneType": { + "$ref": "KnowledgeAnswersTimeZoneType" + }, + "trackingNumberType": { + "$ref": "KnowledgeAnswersTrackingNumberType" + }, + "withTrait": { + "$ref": "KnowledgeAnswersTypeTrait", + "description": "Extra trait information for compound value types. Note: currently the semantics of having both the data type (e.g. \"entity_type\") and \"with_trait\" is an OR operation. Eg. HorizontalDateRestrict has a SetToModify slot that accepts some collections like /collection/films. And also intent queries with_trait date, start_date, etc." + } + }, + "type": "object" + }, + "KnowledgeGraphDateTimeProto": { + "description": "/////////// DATE //////////", + "id": "KnowledgeGraphDateTimeProto", + "properties": { + "days": { + "description": "A day of month, 1-31. If present, year and month must be present as well, and must form a valid date.", + "format": "int32", + "type": "integer" + }, + "hours": { + "description": "Hour of the day, 0-23", + "format": "int32", + "type": "integer" + }, + "microseconds": { + "description": "Microsecond, in the interval [0, 999999]. If present, seconds have to be present as well.", + "format": "int32", + "type": "integer" + }, + "minutes": { + "description": "Minute, 0-59. If present, hours have to be present as well.", + "format": "int32", + "type": "integer" + }, + "months": { + "description": "A month, 1-12. If present, year must be present as well.", + "format": "int32", + "type": "integer" + }, + "seconds": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "tzOffset": { + "description": "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).", + "format": "int64", + "type": "string" + }, + "years": { + "description": "A year.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "KnowledgeGraphNestedStruct": { + "description": "A nested struct is a recursive tree structure for storing a set of triples. more info can be found at go/nested-struct-primer", + "id": "KnowledgeGraphNestedStruct", + "properties": { + "predicateObjs": { + "description": "predicate_objs.pred should be unique within the list.", + "items": { + "$ref": "KnowledgeGraphNestedStructPredicateObjs" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeGraphNestedStructPredicateObjs": { + "id": "KnowledgeGraphNestedStructPredicateObjs", + "properties": { + "objs": { + "items": { + "$ref": "KnowledgeGraphTripleObj" + }, + "type": "array" + }, + "pred": { + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeGraphQualifier": { + "description": "A qualifier represents an extra piece of context about an assertion/fact. See go/qualifiers-in-kg for more details.", + "id": "KnowledgeGraphQualifier", + "properties": { + "pred": { + "description": "The qualifier pred must be a qualifier property defined in KG schema as applying to the predicate of the triple this qualifier is attached to.", + "type": "string" + }, + "value": { + "$ref": "KnowledgeGraphTripleObj" + } + }, + "type": "object" + }, + "KnowledgeGraphQualifierSet": { + "description": "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.", + "id": "KnowledgeGraphQualifierSet", + "properties": { + "qualifiers": { + "items": { + "$ref": "KnowledgeGraphQualifier" + }, + "type": "array" + } + }, + "type": "object" + }, + "KnowledgeGraphTriple": { + "description": "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", + "id": "KnowledgeGraphTriple", + "properties": { + "isNegation": { + "description": "If is_negation is set to true then this triple is considered a statement that the fact is false. This allows for the storage of both what we know to be true and what we know to be false.", + "type": "boolean" + }, + "obj": { + "$ref": "KnowledgeGraphTripleObj", + "description": "obj is the value of a relationship." + }, + "pred": { + "description": "pred is an arbitrary node id representing the predicate (name) of a graph relationship.", + "type": "string" + }, + "provenance": { + "items": { + "$ref": "KnowledgeGraphTripleProvenance" + }, + "type": "array" + }, + "qualifierSets": { + "description": "WARNING: This is currently defined for experimentation purposes only. Please do not set. Data set in this field will not be published to any systems downstream of Livegraph. Together with the SPO of this triple, each qualifier set here represents a different logical assertion/fact.", + "items": { + "$ref": "KnowledgeGraphQualifierSet" + }, + "type": "array" + }, + "sub": { + "description": "sub is an arbitrary node id representing the source entity of a graph relationship.", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeGraphTripleObj": { + "id": "KnowledgeGraphTripleObj", + "properties": { + "boolValue": { + "type": "boolean" + }, + "datetimeValue": { + "$ref": "KnowledgeGraphDateTimeProto" + }, + "doubleValue": { + "format": "double", + "type": "number" + }, + "durationValue": { + "description": "seconds", + "format": "int64", + "type": "string" + }, + "idValue": { + "description": "An id representing an entity (mid or hrid)", + "type": "string" + }, + "int64Value": { + "format": "int64", + "type": "string" + }, + "locale": { + "description": "The language code for the object value. It must be a BCP 47-compliant language tag (b/10005172). See also go/kg-data-l10n.", + "type": "string" + }, + "nestedStructValue": { + "$ref": "KnowledgeGraphNestedStruct" + }, + "protoValue": { + "$ref": "KnowledgeGraphTripleObjProto" + }, + "s2cellId": { + "format": "uint64", + "type": "string" + }, + "stringValue": { + "description": "A UTF-8 string value to be used for the following expected schema types: - /type/rawstring - /type/text - /type/key", + "type": "string" + }, + "uint64Value": { + "format": "uint64", + "type": "string" + }, + "uriValue": { + "description": "A UTF-8 string value to be used for expected type /type/uri - b/68760994.", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeGraphTripleObjProto": { + "id": "KnowledgeGraphTripleObjProto", + "properties": { + "data": { + "description": "The encoded proto data.", + "format": "byte", + "type": "string" + }, + "descriptorFullName": { + "description": "The full name of the proto descriptor, such as 'music.AlbumSummary'.", + "type": "string" + } + }, + "type": "object" + }, + "KnowledgeGraphTripleProvenance": { + "description": "Message containing information about the source of this triple. See go/kg-provenance for an explanation of the fields.", + "id": "KnowledgeGraphTripleProvenance", + "properties": { + "accessRequired": { + "description": "Specifies the contract or legal visibility required to see the Triple. See go/kg-triple-level-access-controls for details and background. Note that we use an int32 here so that we won't lose values when decoding on a stale binary. The int32 references to the enum storage_graph_bfg.Triple.Provenance.AccessRequirement.", + "format": "int32", + "type": "integer" + }, + "creator": { + "description": "Historically, this field was used to encode the Freebase User ID, Google username, or Google MDB group that was responsible for the pipeline that is producing this data. However, there is currently no horizontal validation in place, and as of Q3 2018, this field is used essentially as a free-form string by multiple data providers. NOTE: Do not use this field in new pipelines without first consulting with the OWNERS of this proto. ", + "type": "string" + }, + "datasetMid": { + "description": "The dataset which asserted this data. Must be a valid mid. See go/kg-provenance", + "format": "uint64", + "type": "string" + }, + "isSupportingData": { + "description": "Indicates that the corresponding data is supporting evidence for reconciliation only, and is *not* an assertion that should be visible to other systems or to external users. Note that this also means that no provenances indicating supporting data will be visible in the composed graph. Please see go/supporting-kg-triples-design-doc for additional details and background.", + "type": "boolean" + }, + "lgMetadata": { + "$ref": "StorageGraphBfgLivegraphProvenanceMetadata", + "description": "Internal metadata used by Livegraph and possibly other horizontal KG infra systems. This is not part of the logical triple or its provenance, and contents may not be visible downstream of LG." + }, + "policyMetadata": { + "$ref": "StorageGraphBfgPolicyMetadata", + "description": "Metadata specifying data governance policies. This information will be processed and enforced in KE systems. For more context, see go/ke-triple-dg-policy-and-metadata. WARNING: This field is WIP and please do not populate it without consulting ke-data-governance@." + }, + "process": { + "description": "An identifier for the process that asserted this triple.", + "type": "string" + }, + "restrictions": { + "items": { + "enum": [ + "REQUIRES_CITATION", + "REQUIRES_PCOUNSEL_REVIEW", + "UNRESTRICTED_WITHIN_GOOGLE_NO_3P_USE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "sourceCategory": { + "description": "Used to measure impact of 3P contributions. See go/ke-metrics.", + "enum": [ + "THIRD_PARTY", + "CURATION", + "PARTNER_FEED", + "EXTRACTION" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "sourceDocId": { + "description": "The websearch doc_id of the source_url. Used in conjunction with source_category for measuring 3P contributions.", + "format": "int64", + "type": "string" + }, + "sourceUrl": { + "description": "If the triple was extracted from the web, the source URL where the assertion was found. Used for citation if needed (see restrictions field below).", + "type": "string" + }, + "spiiCertification": { + "$ref": "StorageGraphBfgSpiiCertification", + "description": "A fact about potentially sensitive personal info (http://what/SPII) can be \"certified\" iff it meets specific requirements. See go/kg-spii-certification for details." + } + }, + "type": "object" + }, + "KnowledgeVerticalsWeatherProtoUserSpecifiedLocation": { + "description": "A user specified location to trigger weather for a specific location. Also it can be generalized for other verticals.", + "id": "KnowledgeVerticalsWeatherProtoUserSpecifiedLocation", + "properties": { + "featureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "(Mandatory) Oyster ID." + }, + "latLng": { + "$ref": "GoogleTypeLatLng", + "description": "(Mandatory) Coordinates of the location for which weather is requested." + }, + "locationName": { + "description": "The name to display. If specified it will override the formatted address of \"feature_id\".", + "type": "string" + }, + "timezone": { + "description": "The timezone to display the current conditions observation time. Optional and will override the timezone of \"feature_id\".", + "type": "string" + } + }, + "type": "object" + }, + "LegalCitation": { + "id": "LegalCitation", + "properties": { + "CountryCode": { + "description": "For Courts, the country the court is in. For Statues,? 3 leter country code ISO 3166 alpha2", + "type": "string" + }, + "ParseType": { + "format": "int32", + "type": "integer" + }, + "State": { + "description": "State or province of the court or statue (if applicable) What standard?", + "type": "string" + }, + "Type": { + "description": "DocType", + "format": "int32", + "type": "integer" + }, + "courtdocument": { + "$ref": "LegalCitationCourtDocument" + }, + "law": { + "$ref": "LegalCitationLaw" + } + }, + "type": "object" + }, + "LegalCitationCourtDocument": { + "description": "Information about a published version of the document. Not all references/documents will have this because some will be vendor and/or media neutral.", + "id": "LegalCitationCourtDocument", + "properties": { + "ArguedBefore": { + "description": "One entry per judge who listened to the case in this court", + "items": { + "$ref": "LegalPerson" + }, + "type": "array" + }, + "ArguedDate": { + "$ref": "LegalDate" + }, + "CertiorariCourtName": { + "description": "For an appeal, the name of the lower court that sent this up Abbreviation form? Verbose form?", + "type": "string" + }, + "CertiorariRelationship": { + "format": "int32", + "type": "integer" + }, + "CourtTerm": { + "description": "Usually the name of a month. Not sure really what it means.", + "type": "string" + }, + "DecidedDate": { + "$ref": "LegalDate", + "description": "Various dates related to the generation of document most of these are opinion-centric" + }, + "FiledDate": { + "$ref": "LegalDate" + }, + "MemoID": { + "description": "Not sure what this is. But I've seen it.", + "type": "string" + }, + "ModifiedDate": { + "$ref": "LegalDate" + }, + "Syllabus": { + "description": "A summary of the document or a syllabus for this document", + "type": "string" + }, + "court": { + "$ref": "LegalCitationCourtDocumentCourt" + }, + "opinioninfo": { + "items": { + "$ref": "LegalCitationCourtDocumentOpinionInfo" + }, + "type": "array" + }, + "perdocketinfo": { + "items": { + "$ref": "LegalCitationCourtDocumentPerDocketInfo" + }, + "type": "array" + }, + "pub": { + "items": { + "$ref": "LegalCitationCourtDocumentPub" + }, + "type": "array" + }, + "unknowndate": { + "items": { + "$ref": "LegalCitationCourtDocumentUnknownDate" + }, + "type": "array" + } + }, + "type": "object" + }, + "LegalCitationCourtDocumentCourt": { + "id": "LegalCitationCourtDocumentCourt", + "properties": { + "DisplayName": { + "description": "The name of the court to be displayed to users.", + "type": "string" + }, + "Level": { + "description": "Maybe be redundant with the Name. We can remove this later if we don't find it useful. Court Level", + "format": "int32", + "type": "integer" + }, + "Name": { + "description": "Court id for matching records; \"name\" is a historic misnomer.", + "type": "string" + }, + "OriginalName": { + "description": "The name of the court as taken directly from the source document", + "type": "string" + }, + "namecomponent": { + "items": { + "$ref": "LegalCitationCourtDocumentCourtNameComponent" + }, + "type": "array" + } + }, + "type": "object" + }, + "LegalCitationCourtDocumentCourtNameComponent": { + "description": "The name broken down into its various components, such as core court, state, and district", + "id": "LegalCitationCourtDocumentCourtNameComponent", + "properties": { + "Text": { + "type": "string" + }, + "Type": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "LegalCitationCourtDocumentOpinionInfo": { + "description": "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.", + "id": "LegalCitationCourtDocumentOpinionInfo", + "properties": { + "Bench": { + "format": "int32", + "type": "integer" + }, + "DeliveredBy": { + "$ref": "LegalPerson", + "description": "if Type == PER_CURIAM, then DeliveredBy is unnecessary since it is delivered by the full court. Who delivered the opinion?" + }, + "JoinedBy": { + "$ref": "LegalPerson", + "description": "Who agrees with the opinion" + }, + "Type": { + "description": "OpinionType", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "LegalCitationCourtDocumentPerDocketInfo": { + "description": "Information associated with a docket. Note that multiple dockets can be combined and argued as one and produce a single opinion", + "id": "LegalCitationCourtDocumentPerDocketInfo", + "properties": { + "DocketID": { + "description": "An alpha-numeric (usually, mostly numeric) string used to identify the case by the court", + "type": "string" + }, + "Petitioner": { + "description": "Who is bringing the action? (X in X vs. Y)", + "items": { + "$ref": "LegalPerson" + }, + "type": "array" + }, + "PetitionerCounsel": { + "description": "Who represents the petitioner?", + "items": { + "$ref": "LegalPerson" + }, + "type": "array" + }, + "Respondent": { + "description": "Who is responding to the action? (Y in X vs. Y)", + "items": { + "$ref": "LegalPerson" + }, + "type": "array" + }, + "RespondentCounsel": { + "description": "Who represents the respondent?", + "items": { + "$ref": "LegalPerson" + }, + "type": "array" + }, + "Topic": { + "description": "The \"in re\" or \"matter of\" field.", + "type": "string" + } + }, + "type": "object" + }, + "LegalCitationCourtDocumentPub": { + "id": "LegalCitationCourtDocumentPub", + "properties": { + "Page": { + "description": "Page number", + "type": "string" + }, + "Paragraph": { + "description": "Paragraph number", + "type": "string" + }, + "Reporter": { + "description": "The publisher of the opinion. For example, 'U.S.' - United States Reports 'S. Ct.' - Supreme Court Reporter 'L. Ed. 2d' - Lawyers Edition Second Series", + "type": "string" + }, + "Volume": { + "description": "For documents published by a court reporter. Vendor/Media neutral citations will probably not have this.", + "format": "int32", + "type": "integer" + }, + "Year": { + "description": "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 ().", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "LegalCitationCourtDocumentUnknownDate": { + "description": "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.", + "id": "LegalCitationCourtDocumentUnknownDate", + "properties": { + "Date": { + "$ref": "LegalDate" + }, + "Description": { + "type": "string" + } + }, + "type": "object" + }, + "LegalCitationLaw": { + "id": "LegalCitationLaw", + "properties": { + "RevisionDate": { + "$ref": "LegalDate" + }, + "Status": { + "description": "LawStatus", + "format": "int32", + "type": "integer" + }, + "Type": { + "description": "LawType", + "format": "int32", + "type": "integer" + }, + "collectionname": { + "$ref": "LegalCitationLawCollectionName" + }, + "level": { + "items": { + "$ref": "LegalCitationLawLevel" + }, + "type": "array" + } + }, + "type": "object" + }, + "LegalCitationLawCollectionName": { + "description": "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", + "id": "LegalCitationLawCollectionName", + "properties": { + "Normalized": { + "type": "string" + }, + "Source": { + "type": "string" + } + }, + "type": "object" + }, + "LegalCitationLawLevel": { + "description": "Law have tree-like sturcture (title, section, etc), but the levels and their names are not fixed. e.g., we could have: US Constitution -\u003e Article 3 -\u003e Section 4, OR, US Code -\u003e Title 12 -\u003e Chapter 6 -\u003e Sub-chapter I -\u003e Section 602, OR, US Code -\u003e Title 10 -\u003e Sub-title A -\u003e Part 2 -\u003e Chapter 32 -\u003e Section 523. We use a repeated group to represent this structure. NOTE: Always insert higher levels before lower levels,", + "id": "LegalCitationLawLevel", + "properties": { + "Depth": { + "description": "A counter that specifies the depth of the level in the parse", + "format": "int32", + "type": "integer" + }, + "LevelTypeNormalized": { + "description": "\"SECTION, TITLE, PART, etc.\"", + "type": "string" + }, + "LevelTypeSourceText": { + "description": "\"Section, Sect., §, etc\"", + "type": "string" + }, + "LevelTypeString": { + "description": "deprecated", + "type": "string" + }, + "Name": { + "description": "The name of the chapter/section/etc.", + "type": "string" + }, + "Type": { + "description": "deprecated", + "format": "int32", + "type": "integer" + }, + "Value": { + "description": "\"3\", \"42(a)\", etc", + "type": "string" + } + }, + "type": "object" + }, + "LegalDate": { + "id": "LegalDate", + "properties": { + "Day": { + "format": "int32", + "type": "integer" + }, + "Month": { + "format": "int32", + "type": "integer" + }, + "Year": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "LegalPerson": { + "id": "LegalPerson", + "properties": { + "Description": { + "type": "string" + }, + "LastName": { + "type": "string" + }, + "OtherNames": { + "type": "string" + } + }, + "type": "object" + }, + "LensDiscoveryStyleAestheticsScoreSignals": { + "description": "Aesthetics score of a style image. Check http://go/styleai-indexing-g3doc#aesthetic-model for more details about the Style AI Aesthetics Model.", + "id": "LensDiscoveryStyleAestheticsScoreSignals", + "properties": { + "discretizedAestheticsScore": { + "description": "Aesthetics score discretized into range [0, 100].", + "format": "int32", + "type": "integer" + }, + "version": { + "enum": [ + "VERSION_UNKNOWN", + "AESTHETICS_V1", + "AESTHETICS_V2" + ], + "enumDescriptions": [ + "", + "V1 model is deprecated.", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "LensDiscoveryStyleBoundingBox": { + "description": "Bounding box with absolute integer coordinates.", + "id": "LensDiscoveryStyleBoundingBox", + "properties": { + "x1": { + "format": "int32", + "type": "integer" + }, + "x2": { + "format": "int32", + "type": "integer" + }, + "y1": { + "format": "int32", + "type": "integer" + }, + "y2": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "LensDiscoveryStylePersonAttributes": { + "description": "This message holds person attributes from the LookNet-Person model (go/looknet-person) and the Style AI Iconic Person Scorer (http://go/styleai-indexing-g3doc#iconic-person-scorer) for the most iconic person in a style image. There is an ongoing collaboration with the Human Sensing team on LookNet-Person v3 (go/looknet-person-v3-collaboration) that deals with some of these signals together. Hence, the combined proto definition. Discretization of float values is recommended by CDS for cheaper and more efficient storage. Next ID: 11", + "id": "LensDiscoveryStylePersonAttributes", + "properties": { + "discretizedFaceVisibilityScore": { + "description": "The visibility of the face of the most iconic person in the image discretized into range [0, 100].", + "format": "int32", + "type": "integer" + }, + "discretizedFemaleConfidence": { + "format": "int32", + "type": "integer" + }, + "discretizedMaleConfidence": { + "description": "Male and female confidence scores are discretized into the [0, 100] range.", + "format": "int32", + "type": "integer" + }, + "discretizedPredictedAge": { + "description": "Age prediction is rounded to the first decimal place and multiplied by 10 (e.g. 12.3 -\u003e 123). *** Not populated in Amarna for legal reasons. ***", + "format": "int32", + "type": "integer" + }, + "discretizedVisualSaliencyScore": { + "description": "The area ratio of the most iconic person to the whole image discretized into range [0, 100].", + "format": "int32", + "type": "integer" + }, + "iconicPersonBoundingBox": { + "$ref": "PhotosVisionGroundtruthdbNormalizedBoundingBox", + "description": "Normalized bounding box of the most iconic person in the image. The x,y coordinates are in the range [0, 1]. Deprecated to comply with CDS requirements (b/228535076)." + }, + "personBoundingBox": { + "$ref": "LensDiscoveryStyleBoundingBox", + "description": "Bounding box of the most iconic person in the image." + }, + "personVisibilityScores": { + "$ref": "LensDiscoveryStylePersonAttributesPersonVisibilityScores" + }, + "predictedAgeBucket": { + "description": "Bucketed version of the predicted age.", + "enum": [ + "PERSON_AGE_UNKNOWN", + "PERSON_AGE_YOUNG_ADULT", + "PERSON_AGE_20_29", + "PERSON_AGE_30_49", + "PERSON_AGE_50_64", + "PERSON_AGE_65_74", + "PERSON_AGE_ABOVE_75" + ], + "enumDescriptions": [ + "", + "", + "Between 20 and 29 years old (inclusive).", + "Between 30 and 49 years old (inclusive).", + "Between 50 and 64 years old (inclusive).", + "Between 65 and 74 years old (inclusive).", + "" + ], + "type": "string" + }, + "version": { + "enum": [ + "VERSION_UNKNOWN", + "LOOKNET_PERSON_V2B" + ], + "enumDescriptions": [ + "", + "LookNet-Person v2b uses Person Visibility v1 model's outputs for person visibility predictions." + ], + "type": "string" + } + }, + "type": "object" + }, + "LensDiscoveryStylePersonAttributesPersonVisibilityScores": { + "id": "LensDiscoveryStylePersonAttributesPersonVisibilityScores", + "properties": { + "discretizedPersonVisibilityScore": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "personVisibilityPredictions": { + "description": "Repeated for # of PersonVisibility types.", + "items": { + "$ref": "LensDiscoveryStylePersonAttributesPersonVisibilityScoresPersonVisibilityPrediction" + }, + "type": "array" + } + }, + "type": "object" + }, + "LensDiscoveryStylePersonAttributesPersonVisibilityScoresPersonVisibilityPrediction": { + "id": "LensDiscoveryStylePersonAttributesPersonVisibilityScoresPersonVisibilityPrediction", + "properties": { + "discretizedIconicPersonVisibilityConfidence": { + "description": "Confidence score of the visibility type prediction discretized into range [0, 100].", + "format": "int32", + "type": "integer" + }, + "iconicPersonVisibilityType": { + "description": "Classification of how much of the body of the most iconic person in the image is visible.", + "enum": [ + "PERSON_VISIBILITY_UNKNOWN", + "PERSON_VISIBILITY_HEAD_AND_SHOULDERS_ONLY", + "PERSON_VISIBILITY_HALF_LENGTH", + "PERSON_VISIBILITY_THREE_QUARTER_LENGTH", + "PERSON_VISIBILITY_FULL_LENGTH" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "LensDiscoveryStylePersonDetectionSignals": { + "description": "This message holds bounding boxes of detected people in the image. Next ID: 3", + "id": "LensDiscoveryStylePersonDetectionSignals", + "properties": { + "detectedPersons": { + "description": "Information of all detected people in the image, sorted by decreasing size of the bounding box. We store a maximum of 10 detected people.", + "items": { + "$ref": "LensDiscoveryStylePersonDetectionSignalsDetectedPerson" + }, + "type": "array" + }, + "version": { + "enum": [ + "VERSION_UNKNOWN", + "FASTER_RCNN" + ], + "enumDescriptions": [ + "", + "Faster-RCNN model is used with the LookNet-Person v2b person attributes model. There are plans to upgrade to different person detectors with upcoming LookNet-Person v3 model. PTAL at b/203233422 for more context." + ], + "type": "string" + } + }, + "type": "object" + }, + "LensDiscoveryStylePersonDetectionSignalsDetectedPerson": { + "description": "Holds information about a detected person in the image.", + "id": "LensDiscoveryStylePersonDetectionSignalsDetectedPerson", + "properties": { + "boundingBox": { + "$ref": "LensDiscoveryStyleBoundingBox", + "description": "Bounding box of the detected person." + }, + "normalizedBoundingBox": { + "$ref": "PhotosVisionGroundtruthdbNormalizedBoundingBox", + "description": "Normalized bounding box of the detected person. The x,y coordinates are in the range [0, 1]. Deprecated to comply with CDS requirements (b/228535076)." + } + }, + "type": "object" + }, + "LensDiscoveryStyleStyleImageTypeSignals": { + "description": "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.", + "id": "LensDiscoveryStyleStyleImageTypeSignals", + "properties": { + "styleImageTypePredictions": { + "description": "Repeated for # of StyleImageType types.", + "items": { + "$ref": "LensDiscoveryStyleStyleImageTypeSignalsStyleImageTypePrediction" + }, + "type": "array" + }, + "version": { + "enum": [ + "VERSION_UNKNOWN", + "STYLE_IMAGE_TYPE_V1" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "LensDiscoveryStyleStyleImageTypeSignalsStyleImageTypePrediction": { + "id": "LensDiscoveryStyleStyleImageTypeSignalsStyleImageTypePrediction", + "properties": { + "discretizedStyleImageTypeConfidence": { + "description": "Style image type confidence discretized into range [0, 100].", + "format": "int32", + "type": "integer" + }, + "styleImageType": { + "description": "Predicted style image type.", + "enum": [ + "TYPE_UNKNOWN", + "TYPE_STAGE", + "TYPE_STOCK", + "TYPE_STREET", + "TYPE_OUTFITS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "ListSnippetResponse": { + "description": "Data to generate the list snippets UI.", + "id": "ListSnippetResponse", + "properties": { + "header": { + "$ref": "ListSnippetResponseRow" + }, + "isTable": { + "description": "Should list be formatted as a table?", + "type": "boolean" + }, + "row": { + "items": { + "$ref": "ListSnippetResponseRow" + }, + "type": "array" + }, + "totalRows": { + "description": "The number of rows annotated in the doc, of which 'row' is a subset.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ListSnippetResponseRow": { + "id": "ListSnippetResponseRow", + "properties": { + "column": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "LocalWWWInfo": { + "description": "Next Id: 36", + "id": "LocalWWWInfo", + "properties": { + "address": { + "items": { + "$ref": "LocalWWWInfoAddress" + }, + "type": "array" + }, + "brickAndMortarStrength": { + "format": "double", + "type": "number" + }, + "cluster": { + "items": { + "$ref": "LocalWWWInfoCluster" + }, + "type": "array" + }, + "docid": { + "format": "uint64", + "type": "string" + }, + "geotopicality": { + "$ref": "RepositoryAnnotationsGeoTopicality", + "description": "Information about geo locations, rather than individual businesses." + }, + "hours": { + "items": { + "$ref": "LocalWWWInfoOpeningHours" + }, + "type": "array" + }, + "isLargeChain": { + "description": "Does this LocalWWWInfo represent a widely-distributed chain?", + "type": "boolean" + }, + "isLargeLocalwwwinfo": { + "type": "boolean" + }, + "phone": { + "items": { + "$ref": "LocalWWWInfoPhone" + }, + "type": "array" + }, + "siteSiblings": { + "description": "These are per-document signals independent of any particular address.", + "format": "int32", + "type": "integer" + }, + "url": { + "description": "These are for convenience during intermediate data processing, and should be cleared before the data gets into doc-joins.", + "type": "string" + }, + "wrapptorItem": { + "items": { + "$ref": "LocalWWWInfoWrapptorItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "LocalWWWInfoAddress": { + "description": "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 \u003c= 4 addresses and phone numbers on the document, respectively. This is primarily for space reasons. ", + "id": "LocalWWWInfoAddress", + "properties": { + "addrFprint": { + "format": "uint64", + "type": "string" + }, + "address": { + "$ref": "GeostoreAddressProto" + }, + "latE7": { + "format": "uint32", + "type": "integer" + }, + "lngE7": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "LocalWWWInfoCluster": { + "id": "LocalWWWInfoCluster", + "properties": { + "addrFprint": { + "format": "uint64", + "type": "string" + }, + "annotationConfidence": { + "description": "Confidence score for business mention annotations which is copied from LocalEntityAnnotations::location_confidence.", + "format": "float", + "type": "number" + }, + "clusterdocid": { + "format": "uint64", + "type": "string" + }, + "clusterid": { + "type": "string" + }, + "confidence": { + "description": "Probability that this is the authority page of the business. Same as LocalListing.authority_page_probability, only set for pages with page_type_flags \u0026 AUTHORITY.", + "format": "float", + "type": "number" + }, + "featureType": { + "description": "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).", + "format": "int32", + "type": "integer" + }, + "hours": { + "$ref": "GeostoreTimeScheduleProto", + "description": "Opening hours for the business, from Local attributes and/or extracted annotations." + }, + "hoursSource": { + "enum": [ + "LOCAL", + "EXTRACTED_ONPAGE" + ], + "enumDescriptions": [ + "Data comes from attributes in the Local index.", + "Data comes from annotations on this page." + ], + "type": "string" + }, + "includeInIndex": { + "type": "boolean" + }, + "isPlusbox": { + "description": "TODO(local-universal) Consider deleting is_plusbox once the new scheme that uses make_plusbox_visible rolled out.", + "type": "boolean" + }, + "latitudeE6": { + "format": "int32", + "type": "integer" + }, + "level": { + "description": "DEPRECATED / NO LONGER WRITTEN. URL path level from actual references to this webpage.", + "format": "int32", + "type": "integer" + }, + "longitudeE6": { + "format": "int32", + "type": "integer" + }, + "makePlusboxVisible": { + "description": "A hint for frontend to decide whether this plusbox should be visible or not.", + "type": "boolean" + }, + "menuUrl": { + "description": "Menu link for the business. Currently only comes from Local attributes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "pageTypeFlags": { + "description": "Type of the web reference.", + "format": "int32", + "type": "integer" + }, + "phoneFprint": { + "format": "uint64", + "type": "string" + }, + "phoneNumber": { + "$ref": "TelephoneNumber" + }, + "postalAddress": { + "$ref": "PostalAddress" + }, + "relevance": { + "description": "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 \u0026 WEB_EXTRACTION \u0026\u0026 !AUTHORITY).", + "format": "float", + "type": "number" + }, + "showInSnippets": { + "type": "boolean" + }, + "source": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "LocalWWWInfoOpeningHours": { + "description": "Populated from StoreHoursAnnotations.", + "id": "LocalWWWInfoOpeningHours", + "properties": { + "hours": { + "$ref": "GeostoreTimeScheduleProto" + }, + "hoursFprint": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "LocalWWWInfoPhone": { + "id": "LocalWWWInfoPhone", + "properties": { + "phoneFprint": { + "format": "uint64", + "type": "string" + }, + "phoneNumber": { + "$ref": "TelephoneNumber" + } + }, + "type": "object" + }, + "LocalWWWInfoWrapptorItem": { + "description": "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.", + "id": "LocalWWWInfoWrapptorItem", + "properties": { + "addrFprint": { + "format": "uint64", + "type": "string" + }, + "bizName": { + "type": "string" + }, + "phoneFprint": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "LocalsearchChainId": { + "description": "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.", + "id": "LocalsearchChainId", + "properties": { + "category": { + "description": "The category associated with this chain, currently only used for subchains.", + "type": "string" + }, + "prominentEntityId": { + "description": "The Knowledge Graph (KG) entity of the chain, found and used in chain mining.", + "type": "string" + }, + "sitechunk": { + "description": "The website sitechunk/domain that is owned by the chain.", + "type": "string" + } + }, + "type": "object" + }, + "LocalsearchDocInfo": { + "description": "Next tag: 23", + "id": "LocalsearchDocInfo", + "properties": {}, + "type": "object" + }, + "LocalsearchProtoInternalFoodOrderingActionMetadata": { + "description": "* Proto representing the metadata associated with food ordering internal action. Next ID: 13", + "id": "LocalsearchProtoInternalFoodOrderingActionMetadata", + "properties": { + "actionType": { + "description": "The action type of this action metadata.", + "enum": [ + "UNKNOWN_ACTION_TYPE", + "E2E", + "TOA", + "AUTOBOT", + "PAS" + ], + "enumDescriptions": [ + "Unknown type.", + "Actions lead users to Food Ordering site (orderfood.google.com), powered by end to end partners that signed the full integration contact with Google. This is the default action type for most cases. go/fopa-order-button-placesheet", + "TOA actions lead users to TOA site (eg. https://ordering.app/cuba512/downtown/contact/). go/payfood-entrypoint-experiments", + "Autobot actions lead users to 3p site that support Autobot. go/fo-autobot-triggering", + "PAS actions lead users to Food Ordering site (orderfood.google.com), but powered by PAS partners. Note that if one restaurant is supported by both E2E and PAS partners, the action type should still be E2E. go/fo-pas-integration" + ], + "type": "string" + }, + "hasPrimarilyFoodIntent": { + "description": "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.", + "type": "boolean" + }, + "isOutOfOperationalHours": { + "description": "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.", + "type": "boolean" + }, + "isWhitelistedExternalRestaurant": { + "description": "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", + "type": "boolean" + }, + "nextOpeningTime": { + "description": "Next opening time when the food ordering service will be available. This is only present if the unavailability reason is OUT_OF_OPERATIONAL_HOURS.", + "format": "google-datetime", + "type": "string" + }, + "onlyOrderAheadServicesAvailable": { + "description": "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.", + "type": "boolean" + }, + "serviceInfo": { + "description": "Aggregated service information by service type. Each service type would only have one ServiceInfo. Optional.", + "items": { + "$ref": "LocalsearchProtoInternalFoodOrderingActionMetadataServiceInfo" + }, + "type": "array" + }, + "supportedServiceType": { + "description": "Food ordering service type.", + "enum": [ + "UNKNOWN_TYPE", + "DELIVERY", + "PICKUP", + "ANY_TYPE" + ], + "enumDescriptions": [ + "Default enum value should never be used explicitly as default value field gets cleared from the final response. This can be returned only when all the partners supporting the business are log only partners.", + "Delivery service type.", + "Pick up service type.", + "ANY_TYPE means that there is no restriction on the service type and both delivery/pickup are fine." + ], + "type": "string" + }, + "unavailabilityReason": { + "description": "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.", + "enum": [ + "UNKNOWN_REASON", + "NOT_INTEGRATED_WITH_FOPA", + "OUT_OF_OPERATIONAL_HOURS", + "OUT_OF_SERVICE_AREA", + "PERMANENTLY_CLOSED", + "BLACKLISTED", + "TEMPORARILY_CLOSED" + ], + "enumDescriptions": [ + "Catch-all for unrecognized enum values. See go/protodosdonts.", + "Indicates the restaurant is not integrated with any partner.", + "Indicates that the food ordering service is considered as not available due to out of operational hours. This could only be populated if ignore_operational_hours is set to false in the request (universalsearch/rpc/geo/food_ordering_restriction.proto).", + "Unable to deliver to requested address due to border rules etc.", + "Indicates that the resutaurant is permanently closed.", + "Blacklist file: /googledata/superroot/food_ordering/fopa_blacklisted_chains.txt /googledata/superroot/food_ordering/fopa_blacklisted_restaurants.txt", + "Indicates that the resutaurant is temporarily closed." + ], + "type": "string" + } + }, + "type": "object" + }, + "LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo": { + "description": "Includes all partners that are either open now or supporting order ahead.", + "id": "LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo", + "properties": { + "availablePartnerId": { + "description": "Available partner's id.", + "format": "int64", + "type": "string" + }, + "logOnly": { + "description": "Indicates whether the partner is log only.", + "type": "boolean" + } + }, + "type": "object" + }, + "LocalsearchProtoInternalFoodOrderingActionMetadataServiceInfo": { + "id": "LocalsearchProtoInternalFoodOrderingActionMetadataServiceInfo", + "properties": { + "availablePartnerInfo": { + "description": "Information about Food Ordering partner, which is used for whitelisting the partner in Food Ordering entry points such as Placesheet.", + "items": { + "$ref": "LocalsearchProtoInternalFoodOrderingActionMetadataAvailablePartnerInfo" + }, + "type": "array" + }, + "maxWaitTimeSec": { + "description": "Maximum max_wait_time in second.", + "format": "int64", + "type": "string" + }, + "minDeliveryFee": { + "$ref": "GoogleTypeMoney", + "description": "Only present for delivery case, service fee is not included." + }, + "minWaitTimeSec": { + "description": "Minimum min_wait_time in second.", + "format": "int64", + "type": "string" + }, + "serviceType": { + "description": "Food ordering service type. Please note that only ServiceType.PICKUP and ServiceType.DELIVERY are valid values for this field.", + "enum": [ + "UNKNOWN_TYPE", + "DELIVERY", + "PICKUP", + "ANY_TYPE" + ], + "enumDescriptions": [ + "Default enum value should never be used explicitly as default value field gets cleared from the final response. This can be returned only when all the partners supporting the business are log only partners.", + "Delivery service type.", + "Pick up service type.", + "ANY_TYPE means that there is no restriction on the service type and both delivery/pickup are fine." + ], + "type": "string" + } + }, + "type": "object" + }, + "LogsProtoIndexingCrawlerIdCrawlerIdProto": { + "description": "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.", + "id": "LogsProtoIndexingCrawlerIdCrawlerIdProto", + "properties": { + "country": { + "description": "The country to crawl the country from, defaults to the default non-specified crawling node (which is interpreted by most web-servers as USA). When specified, the crawling will fetch the document from a node in that country instead.", + "enum": [ + "NO_COUNTRY", + "AUSTRALIA", + "CANADA", + "GREAT_BRITAIN", + "MEXICO", + "RUSSIA" + ], + "enumDescriptions": [ + "", + "The countries are sorted by alphabet for convenience.", + "", + "", + "", + "" + ], + "type": "string" + }, + "deviceType": { + "description": "The device type, which maps into the useragent to be set when initiating the fetch-request, e.g. desktop-googlebot vs. smartphone-googlebot.", + "enum": [ + "DESKTOP", + "SMARTPHONE", + "MOBILE", + "JPMOBILE", + "IMAGE", + "VIDEO", + "APP", + "ANDROID_APP", + "IOS_APP", + "PIDGIN" + ], + "enumDescriptions": [ + "", + "SMARTPHONE refers to the Android user agent as used for web browsing on Android. It is used in general to get the version of a webpage as returned to smartphones, being both Android or iOS.", + "MOBILE refers to old-styled mobile phones (WAP browsers). No longer used for new data.", + "JPMOBILE refers to old-styled mobile phones (CHTML, mainly in japan). No longer used for new data.", + "IMAGE/VIDEO are specific user-agents used for the image and video crawl on the web, variations of the GoogleBot, essentially.", + "", + "APP is for app-uris, which is using in Aquarius v1. go/aquarius-design", + "ANDROID_APP and IOS_APP are for universal links, which are using in Calypso / Aquarius universal pipeline. go/v4-indexing", + "", + "PIDGIN is for synthetic docs served using the Horizon pipeline. go/pidgin-design." + ], + "type": "string" + }, + "indexGrowthExptType": { + "description": "Specifies whether the document is a duplicated document from the index growth experiment, detailed at go/indexsize_exp, defaults to not in any experiment.", + "enum": [ + "INDEX_GROWTH_EXPERIMENT_TYPE_DEFAULT", + "INDEX_GROWTH_EXPERIMENT_TYPE_DUPLICATED" + ], + "enumDescriptions": [ + "", + "Denotes a document that is a duplicate." + ], + "type": "string" + }, + "language": { + "description": "The language being set by the crawler. Defaults to UNKNOWN_LANGUAGE which indicates to not apply an accept-language header on the FetchRequest. When a language is specified, on crawling this language is converted into an accept-language header (e.g. GERMAN -\u003e \"Accept-language: de\"). Script variations, e.g. ZH-HANS vs. ZH-HANT, are handled as different enum values (e.g. CHINESE vs. CHINESE_T).", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "languageCode": { + "description": "Language-code used for identifying the locale of the document. 'language' and 'country' above are used for web-based documents, representing the detected language of the document and the country it was crawled from. The language code here, however, rather represents an artifical language_code applied to manually translated webpages (e.g. feeds), for instance for the pidgin-usecase. They are limited to the set of III-codes being supported by the client, yet are beyond the enum in 'language', e.g. to support variants of English across different countries.", + "enum": [ + "LANGCODE_UNKNOWN", + "LANGCODE_EN_US", + "LANGCODE_EN_AU", + "LANGCODE_EN_CA", + "LANGCODE_DE_DE", + "LANGCODE_FR_FR", + "LANGCODE_FR_CA" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "LogsSemanticInterpretationIntentQueryEntityLinkMetadata": { + "description": "Logs version of the repository_webref.EntityLinkMetadata proto Used to represent QRef implications", + "id": "LogsSemanticInterpretationIntentQueryEntityLinkMetadata", + "properties": { + "aggregateFlags": { + "$ref": "LogsSemanticInterpretationIntentQueryLinkKindFlags" + }, + "kindInfo": { + "items": { + "$ref": "LogsSemanticInterpretationIntentQueryLinkKindInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "LogsSemanticInterpretationIntentQueryLinkKindFlags": { + "description": "Logs version of the repository_webref.LinkKindFlags proto Used to represent QRef implications Next available tag: 8", + "id": "LogsSemanticInterpretationIntentQueryLinkKindFlags", + "properties": { + "cluster": { + "enum": [ + "NO_CLUSTER", + "CLUSTER_CHILD_OF", + "CLUSTER_PARENT_OF" + ], + "enumDescriptions": [ + "", + "The main entity is a child of the linked entity.", + "The main entity is a parent of the linked entity." + ], + "type": "string" + }, + "geoContainment": { + "enum": [ + "NO_CONTAINMENT", + "CONTAINED_BY", + "CONTAINS", + "PARTIAL_OVERLAP", + "HAS_STREET_NUMBER", + "LOCATED_ON_STREET" + ], + "enumDescriptions": [ + "", + "The main entity is a geographically contained by", + "the linked entity. The main entity is a geographical container of", + "the linked entity. The main entity partially overlaps with the", + "linked entity. The main entity is a street and contains the", + "street number that is represented by the linked entity. The main entity is a street number and is" + ], + "type": "string" + }, + "implication": { + "enum": [ + "NO_IMPLICATION", + "IMPLIED_BY", + "IMPLIES", + "BIDIRECTIONAL_IMPLICATION", + "UNDERMERGED" + ], + "enumDescriptions": [ + "", + "The main entity is implied by the linked entity.", + "The main entity implies the linked entity.", + "Both entities imply each other.", + "Both entities are the same concept." + ], + "type": "string" + }, + "latentEntity": { + "enum": [ + "NO_LATENT_ENTITY", + "LATENT_ENTITY", + "MANIFEST_ENTITY", + "LATENT_ENTITY_V2", + "MANIFEST_ENTITY_V2" + ], + "enumDescriptions": [ + "There is no latent entity relationship between the entities. Default value, should not be explicitly set.", + "The relationship points to a latent entity. For example, if \"Lionel Messi\" has latent entity \"FC Barcelona\", this should be populated on the relationship from Messi to Barcelona.", + "The reverse of LATENT_ENTITY, e.g. from \"FC Barcelona\" to \"Lionel Messi\".", + "Links pointing to latent entities according to the new hierarchy. See go/refx-latent-entities.", + "Links pointing to manifest entities according to the new hierarchy." + ], + "type": "string" + }, + "mdvc": { + "enum": [ + "NO_MDVC", + "MDVC_SPECIALIZATION_OF", + "MDVC_GENERALIZATION_OF", + "MDVC_DIMENSION_VALUE", + "MDVC_DIMENSION_VALUE_OF", + "MDVC_RESOLUTION", + "MDVC_EXPANDED_OUTPUT" + ], + "enumDescriptions": [ + "", + "(Transitive) descendant in MDVC hierarchy.", + "(Transitive) ancestor in MDVC hierarchy.", + "MDVC attribute.", + "MDVC attribute owner.", + "MDVC resolution.", + "MDVC_EXPANDED_OUTPUT is used to mark the link between annotated entities and the entities that were added by output expansion, e.g. from a car model to the latest model year." + ], + "type": "string" + }, + "property": { + "enum": [ + "NO_PROPERTY", + "EQUIVALENT_TOPIC", + "EQUIVALENT_PROPERTY" + ], + "enumDescriptions": [ + "There is no property relationship between the entities. Default value, should not be explicitly set.", + "The relationship points from a property to its equivalent topic. For example, from /people/person/parents to /m/Parent.", + "The relationship points from a topic to an equivalent property. For example, from /m/Parent to /people/person/parents." + ], + "type": "string" + }, + "resolution": { + "enum": [ + "NO_RESOLUTION", + "MAY_BE_RESOLVED_FROM", + "MAY_RESOLVE_TO", + "RESOLVED_FROM", + "RESOLVES_TO" + ], + "enumDescriptions": [ + "", + "The link type is such that we may add a", + "RESOLVED_FROM attribute to it later. The link type is such that we may add a", + "RESOLVES_TO attribute to it later. The current entity is resolved from the linked", + "entity (e.g. the link goes from to ). The current entity is one of the entities that" + ], + "type": "string" + } + }, + "type": "object" + }, + "LogsSemanticInterpretationIntentQueryLinkKindInfo": { + "description": "Logs version of the repository_webref.LinkKindInfo proto Used to represent QRef implications", + "id": "LogsSemanticInterpretationIntentQueryLinkKindInfo", + "properties": { + "flags": { + "$ref": "LogsSemanticInterpretationIntentQueryLinkKindFlags" + }, + "kcLinkName": { + "type": "string" + }, + "topicPropertyName": { + "type": "string" + } + }, + "type": "object" + }, + "LogsSemanticInterpretationIntentQuerySupportTransferRule": { + "description": "Logs version of the repository_webref.SupportTransferRule proto Non-logs version supports go/stbr", + "id": "LogsSemanticInterpretationIntentQuerySupportTransferRule", + "properties": { + "allowWildcardIntents": { + "type": "boolean" + }, + "domain": { + "type": "string" + }, + "isReverseLink": { + "type": "boolean" + }, + "mentionsOnly": { + "type": "boolean" + }, + "supportShare": { + "type": "boolean" + }, + "targetCollection": { + "type": "string" + }, + "userCountry": { + "type": "string" + }, + "userLanguage": { + "type": "string" + } + }, + "type": "object" + }, + "LogsSemanticInterpretationIntentQueryWebrefEntityRelationship": { + "description": "Logs version of the repository_webref.WebrefEntityRelationship proto Used to represent QRef implications", + "id": "LogsSemanticInterpretationIntentQueryWebrefEntityRelationship", + "properties": { + "entityIndex": { + "format": "int32", + "type": "integer" + }, + "linkMetadata": { + "$ref": "LogsSemanticInterpretationIntentQueryEntityLinkMetadata" + }, + "linkWeight": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "LongStructuredSnippet": { + "description": "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.", + "id": "LongStructuredSnippet", + "properties": { + "entry": { + "items": { + "$ref": "LongStructuredSnippetEntry" + }, + "type": "array" + } + }, + "type": "object" + }, + "LongStructuredSnippetEntry": { + "id": "LongStructuredSnippetEntry", + "properties": { + "header": { + "description": "Is this a header or normal paragraph?", + "type": "boolean" + }, + "text": { + "description": "The text of the header or paragraph.", + "type": "string" + } + }, + "type": "object" + }, + "MajelContactInformationShortcutInformation": { + "description": "The information on whether the contact is related to an app shortcut. Next ID: 2", + "id": "MajelContactInformationShortcutInformation", + "properties": { + "shortcutContactType": { + "enum": [ + "UNSPECIFIED", + "NON_SHORTCUT", + "INDIVIDUAL", + "GROUP" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "ManyboxData": { + "description": "Manybox container message", + "id": "ManyboxData", + "properties": { + "components": { + "$ref": "Proto2BridgeMessageSet" + }, + "dataSummary": { + "description": "a bit vector of the available manybox data types", + "format": "int32", + "type": "integer" + }, + "debug": { + "type": "string" + } + }, + "type": "object" + }, + "MapsQualitySpecialWordsFlags": { + "description": "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/special_words.cc. -- Next available id: 20 --", + "id": "MapsQualitySpecialWordsFlags", + "properties": { + "isCommonWord": { + "description": "Common words E.g.: center, park, etc.", + "type": "boolean" + }, + "isDeconstructible": { + "description": "Whether this special word is part of a name without a separator (like e.g. suffix \"strasse\" in Freigutstrasse).", + "type": "boolean" + }, + "isDirectionalModifier": { + "description": "Directional modifier. E.g.: north, south, etc.", + "type": "boolean" + }, + "isForbiddenWord": { + "description": "Whether geo paths are forbidden to contain this word.", + "type": "boolean" + }, + "isHouseIdIdentifier": { + "description": "A keyword for a house id.", + "type": "boolean" + }, + "isIntersectionConnector": { + "description": "Intersection. E.g.: and, at, corner.", + "type": "boolean" + }, + "isLandmarkIdentifier": { + "description": "An affix that indicates a landmark, e.g. \"opposite\", \"near\" etc.", + "type": "boolean" + }, + "isLanguageIndicator": { + "description": "Language indicator. E.g.: platz in German, straat in Dutch.", + "type": "boolean" + }, + "isNameSynonym": { + "description": "Whether this is a name synonym and should be allowed to be matched on when searching (that is, added to the retrieval query with the name/ prefix).", + "type": "boolean" + }, + "isNotForLegacyStreetNumberDetection": { + "description": "Terms which are not allowed to be used by the legacy street number detection.", + "type": "boolean" + }, + "isNotOptionalizable": { + "description": "Terms which are not allowed to be treated as optional.", + "type": "boolean" + }, + "isNumber": { + "description": "Numbers. E.g.: 1, one, 2, two.", + "type": "boolean" + }, + "isNumberSuffix": { + "description": "E.g. suffixes in French: bis, ter.", + "type": "boolean" + }, + "isOptional": { + "description": "Is this special word optional?", + "type": "boolean" + }, + "isOrdinalNumber": { + "description": "E.g.: 1st, first.", + "type": "boolean" + }, + "isPenalizedIfMissing": { + "description": "Optional terms that should not geocode by themselves.", + "type": "boolean" + }, + "isPersonalTitle": { + "description": "Personal titles (e.g. doctor, professor, general, etc.)", + "type": "boolean" + }, + "isStopWord": { + "description": "E.g.: the, in, near, where.", + "type": "boolean" + }, + "isStreetNumberIdentifier": { + "description": "A keyword that denotes a street number, e.g. \"number\", \"unit\" etc.", + "type": "boolean" + } + }, + "type": "object" + }, + "MapsQualitySpecialWordsProto": { + "description": "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\". ", + "id": "MapsQualitySpecialWordsProto", + "properties": { + "alternate": { + "description": "Alternate versions of this canonical form. This is mainly abbreviations of the canonical form e.g. \"St\", \"NE\", etc. This should be present as it is used in the specified language with the correct capitalization, accents, etc. in UTF-8.", + "items": { + "type": "string" + }, + "type": "array" + }, + "canonical": { + "description": "Canonical versions: the version which is in oyster. This should be present as it is used in the specified language with the correct capitalization, accents, etc. in UTF-8. The canonical can be a single or a multi-token string. There can be several canonicals, e.g. \"center\" and \"centre\" in English.", + "items": { + "type": "string" + }, + "type": "array" + }, + "country": { + "description": "If empty, apply this rule to any country. Otherwise, a list of ISO 3166-1 alpha-2 (2-letter uppercase) country codes that this description applies to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "flags": { + "$ref": "MapsQualitySpecialWordsFlags", + "description": "Boolean flags indicating what type of special word this is." + }, + "language": { + "description": "The III language code of the language that this description applies to. No language means that this applies worldwide. This could be useful for codes like country codes or airport codes or for displayed language neutral icons. A special word with a language code here also applies to the regional variants of that language (e.g. \"en\" applies to \"en-GB\" and \"en-US\" as well).", + "items": { + "type": "string" + }, + "type": "array" + }, + "position": { + "enum": [ + "AFFIX", + "PREFIX", + "SUFFIX" + ], + "enumDescriptions": [ + "", + "the special word comes before the name", + "the special word comes after the name" + ], + "type": "string" + }, + "visibleTypeId": { + "description": "visible_type_id from VisibleTypeProto for visible types converted to the special words. For original special words this field is empty.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "MediaIndexBoundingbox": { + "description": "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.", + "id": "MediaIndexBoundingbox", + "properties": { + "areaFraction": { + "description": "The area of the region as a fraction of the image. The value is in the range (0, 1).", + "format": "float", + "type": "number" + }, + "xmax": { + "format": "float", + "type": "number" + }, + "xmin": { + "format": "float", + "type": "number" + }, + "ymax": { + "format": "float", + "type": "number" + }, + "ymin": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "MediaIndexEntityField": { + "description": "Packages entity id and score together for a given source.", + "id": "MediaIndexEntityField", + "properties": { + "customSource": { + "description": "The custom source should only be a-z[0-9] dashes, underscores, and colons. Special characters should be avoided.", + "type": "string" + }, + "entityId": { + "type": "string" + }, + "quantizedScore": { + "format": "int64", + "type": "string" + }, + "source": { + "enum": [ + "UNKNOWN", + "ICA_LABELS", + "VISUAL_DICTIONARY", + "VISUAL_SEARCH_LANDMARK", + "WEBREF_ANNOTATIONS", + "KG_KP", + "SMEARED_VISUAL_DICTIONARY", + "SMEARED_VISUAL_SEARCH_LANDMARK", + "CURATED_SIGNAL", + "LAVD_BONES", + "ICA_H_TOPICALITY", + "WEBREF_CONFIDENCE", + "LAVD_TRAVEL_SNAPWIRE", + "LAVD_TRAVEL_500PX", + "LAVD_TRAVEL_ALAMY", + "LAVD_TRAVEL_EYEEM", + "LAVD_TRAVEL_SHUTTERSTOCK", + "LAVD_TRAVEL_GETTY", + "PROVIDED_PEOPLE", + "KG_AUTOMOTIVE", + "SMEARED_NAVBOOST", + "KIWI_ENTITY_VISUAL_SCORE", + "KIWI_ENTITY_RANK", + "KIWI_ENTITY_VISUAL_SCORE_EXP", + "KIWI_ENTITY_RANK_EXP" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "MediaIndexFrameIdentifier": { + "description": "Identifier for frames associated with a video.", + "id": "MediaIndexFrameIdentifier", + "properties": { + "previewFrameZeroVariant": { + "$ref": "MediaIndexFrameIdentifierPreviewFrameZeroVariant" + }, + "timestampMs": { + "description": "Offset of the frame from the beginning of the video (in milliseconds).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "MediaIndexFrameIdentifierPreviewFrameZeroVariant": { + "description": "This variant defines the frame to be the first frame of the video's generated preview.", + "id": "MediaIndexFrameIdentifierPreviewFrameZeroVariant", + "properties": { + "previewLength": { + "enum": [ + "UNSPECIFIED", + "THREE_SECONDS", + "SIX_SECONDS" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "xtagList": { + "$ref": "MediaIndexXtagList", + "description": "All xtags used in the generation of the preview. The same frame generated from the same preview with different xtags will likely have different bytes (such as, for example, resulting from a different aspect ratio)." + } + }, + "type": "object" + }, + "MediaIndexRegion": { + "description": "Metadata associated with a region in an image. NEXT_ID: 13", + "id": "MediaIndexRegion", + "properties": { + "boundingBox": { + "$ref": "MediaIndexBoundingbox", + "description": "The bounding box corresponding to the region." + }, + "entityFields": { + "description": "Detected Entities found within this region.", + "items": { + "$ref": "MediaIndexEntityField" + }, + "type": "array" + }, + "labels": { + "$ref": "MediaIndexSparseFloatVector", + "description": "The labels associated with the region encoded as a SparseFloatVector to facilitate dot product computation during sorting. The columns are the fingerprints of the labels and the values are the corresponding confidence scores. The vector is L2 normalized." + }, + "primiApparelFeaturesV2": { + "description": "PRIMI Apparel Features v2 embedding and tokens.", + "format": "byte", + "type": "string" + }, + "primiApparelTokensV2": { + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "primiGenericFeaturesV25": { + "description": "PRIMI Generic Features v2.5 embedding and tokens.", + "format": "byte", + "type": "string" + }, + "primiGenericTokensV25": { + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "starburstFeaturesV4": { + "description": "Starburst v4 embedding and tokens.", + "format": "byte", + "type": "string" + }, + "starburstFeaturesV5": { + "description": "Starburst v5 embedding and tokens.", + "format": "byte", + "type": "string" + }, + "starburstTokensV4": { + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "starburstTokensV5": { + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "starburstV4": { + "$ref": "ImageContentStarburstVersionGroup" + } + }, + "type": "object" + }, + "MediaIndexSparseFloatVector": { + "id": "MediaIndexSparseFloatVector", + "properties": { + "columns": { + "description": "Parallel arrays of column / value. Exactly one of those columns vector should be set. Columns must be in monotonically increasing order.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "columnsInt16": { + "format": "byte", + "type": "string" + }, + "columnsInt32": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "columnsInt64": { + "description": "Columns are fixed integers, used for accelerated parse.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "columnsInt8": { + "format": "byte", + "type": "string" + }, + "values": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "MediaIndexVideoCentroid": { + "description": "Data about the behavior of the video across the pages it is embedded in.", + "id": "MediaIndexVideoCentroid", + "properties": { + "domainScores": { + "items": { + "$ref": "MediaIndexVideoCentroidDomainScore" + }, + "type": "array" + } + }, + "type": "object" + }, + "MediaIndexVideoCentroidDomainScore": { + "description": "See go/video-centroid-domain-score.", + "id": "MediaIndexVideoCentroidDomainScore", + "properties": { + "domain": { + "description": "The domain this score was generated for.", + "type": "string" + }, + "numDocs": { + "description": "Number of pages from the domain used to generate this DomainScore.", + "format": "int32", + "type": "integer" + }, + "score": { + "description": "In general, lower scores indicate the video is appearing on more diverse pages.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "MediaIndexVideoCoreSignals": { + "description": "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.", + "id": "MediaIndexVideoCoreSignals", + "properties": { + "centroid": { + "$ref": "MediaIndexVideoCentroid" + }, + "videoFrames": { + "items": { + "$ref": "MediaIndexVideoFrame" + }, + "type": "array" + } + }, + "type": "object" + }, + "MediaIndexVideoFrame": { + "description": "Data about a frame associated with the video.", + "id": "MediaIndexVideoFrame", + "properties": { + "docid": { + "description": "The canonical docid of the frame.", + "format": "uint64", + "type": "string" + }, + "frameIdentifier": { + "$ref": "MediaIndexFrameIdentifier" + }, + "regions": { + "description": "Metadata associated with regions within this frame.", + "items": { + "$ref": "MediaIndexRegion" + }, + "type": "array" + }, + "starburstFeaturesV4": { + "description": "Starburst v4 embedding and tokens.", + "type": "string" + }, + "starburstTokensV4": { + "description": "Note: due to the migration to Golden7-source Starburst v4 embedding, no starburst_tokens_v4 will be provided in video content corpus (go/video-content-corpus). But this field is kept in case other purposes may still use it in the proto.", + "items": { + "type": "string" + }, + "type": "array" + }, + "thumbnailType": { + "description": "Set of available thumbnail types for this frame. Should be valid image_base.ThumbnailType values (enumerated at http://google3/image/base/thumbnail-type.proto).", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "MediaIndexVideoFrames": { + "description": "Data about multiple video frames associated with the video.", + "id": "MediaIndexVideoFrames", + "properties": { + "videoFrames": { + "items": { + "$ref": "MediaIndexVideoFrame" + }, + "type": "array" + } + }, + "type": "object" + }, + "MediaIndexXtag": { + "id": "MediaIndexXtag", + "properties": { + "name": { + "description": "Names are all stored case-sensitive, and no case-folding is done for comparisons.", + "type": "string" + }, + "value": { + "description": "The value associated with this Xtag. Values are all stored case-sensitive, and no case-folding is done for comparisons.", + "type": "string" + } + }, + "type": "object" + }, + "MediaIndexXtagList": { + "description": "XtagList -- a collection of Xtag instances with unique names. This would be associated with one specific piece of content.", + "id": "MediaIndexXtagList", + "properties": { + "xtags": { + "items": { + "$ref": "MediaIndexXtag" + }, + "type": "array" + } + }, + "type": "object" + }, + "MobilePerDocData": { + "description": "Note: This message is also in the RTUpdate protocol buffer.", + "id": "MobilePerDocData", + "properties": { + "flags": { + "format": "int32", + "type": "integer" + }, + "mobileurl": { + "description": "DEPRECATED: Url of the mobile version of the document. This is set during canonicalization if we do not know that the Web url also serves the mobile version.", + "type": "string" + }, + "transcodedPageScore": { + "description": "DEPRECATED: The transcoded page quality repesented in 7-bits range from 0 to 127.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "MultiscaleFieldPresence": { + "description": "Defines the presence of a field. This can help distinguish between empty vs. not-present annotations.", + "id": "MultiscaleFieldPresence", + "properties": { + "present": { + "description": "Whether the field (data field or pointer) is defined.", + "type": "boolean" + }, + "wellDefined": { + "enum": [ + "WD_UNDEFINED", + "WD_WELL_DEFINED", + "WD_PARTIAL" + ], + "enumDescriptions": [ + "proto3 default value.", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "MultiscaleLayerPresence": { + "description": "Defines the presence of a layer (previously called \"scale\").", + "id": "MultiscaleLayerPresence", + "properties": { + "implicitLength": { + "description": "If the layer is not materialized but things point into it, this gives the effective length.", + "format": "int32", + "type": "integer" + }, + "present": { + "description": "Whether the layer is present.", + "type": "boolean" + } + }, + "type": "object" + }, + "MultiscalePointerIndex": { + "description": "Pointer to a single node in a target scale. `pointer.Index` fields should be annotated with a `(pointer.to)` annotation, indicating what scale they point at.", + "id": "MultiscalePointerIndex", + "properties": { + "index": { + "description": "The index of the node that this pointer points to.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "MultiscalePointerSpan": { + "description": "Pointer to a contiguous range of nodes in a target scale. `pointer.Span` fields should be annotated with a `(pointer.to)` annotation, indicating what scale they point at.", + "id": "MultiscalePointerSpan", + "properties": { + "limit": { + "description": "The exclusive end index for the span of nodes that this pointer points to -- i.e., one plus the index of the last node in the span. Must be greater than or equal to `start`. If equal to `start`, then the target span is empty.", + "format": "int32", + "type": "integer" + }, + "start": { + "description": "The inclusive start index for the span of nodes that this pointer points to -- i.e., the index of the first node in the span.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "MustangReposWwwSnippetsCandidateFeature": { + "description": "CandidateFeature contains a pair of feature name and score for a snippet candidate.", + "id": "MustangReposWwwSnippetsCandidateFeature", + "properties": { + "name": { + "description": "Name corresponds to the names in WebChooserScorer::FeatureNames.", + "type": "string" + }, + "score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "MustangReposWwwSnippetsOrganicListSnippetResponse": { + "description": "Data to generate the list preview for organic list snippets.", + "id": "MustangReposWwwSnippetsOrganicListSnippetResponse", + "properties": { + "header": { + "description": "The texts of header and listing items.", + "type": "string" + }, + "headerTitleRedundancy": { + "description": "The ratio of header tokens covered by title.", + "format": "float", + "type": "number" + }, + "headerUsedInSnippet": { + "description": "If the header being used in organic snippet.", + "type": "boolean" + }, + "items": { + "items": { + "type": "string" + }, + "type": "array" + }, + "originalTotalItems": { + "description": "The number of items in the original list.", + "format": "int32", + "type": "integer" + }, + "radishScore": { + "description": "The score of the radish signal.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "MustangReposWwwSnippetsSnippetCandidate": { + "description": "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.", + "id": "MustangReposWwwSnippetsSnippetCandidate", + "properties": { + "dataSourceType": { + "description": "data_source_type corresponds to the ChosenSnippet::SnippetType enum.", + "format": "int32", + "type": "integer" + }, + "features": { + "items": { + "$ref": "MustangReposWwwSnippetsCandidateFeature" + }, + "type": "array" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "MustangReposWwwSnippetsSnippetsRanklabFeatures": { + "description": "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'.", + "id": "MustangReposWwwSnippetsSnippetsRanklabFeatures", + "properties": { + "browserWidth": { + "description": "Browser width.", + "format": "int32", + "type": "integer" + }, + "candidates": { + "description": "Features for snippets candidates, generated by both old and new scorer. Currently only features for chosen candidate is generated.", + "items": { + "$ref": "MustangReposWwwSnippetsSnippetCandidate" + }, + "type": "array" + }, + "documentLanguage": { + "description": "locale of the document.", + "type": "string" + }, + "queryLanguage": { + "description": "locale of the query,", + "type": "string" + }, + "snippetDataSourceType": { + "description": "Snippet data source.", + "format": "int32", + "type": "integer" + }, + "snippetQueryTermCoverage": { + "description": "Query term coverage in snippets.", + "format": "float", + "type": "number" + }, + "snippets": { + "description": "Snippet features for ranklab models, generated only by snippets scorer v2. In production, only the data for chosen snippet will be recorded.", + "items": { + "$ref": "QualityPreviewRanklabSnippet" + }, + "type": "array" + }, + "titleDataSourceType": { + "description": "Title data source.", + "format": "int32", + "type": "integer" + }, + "titleQueryTermCoverage": { + "description": "Query term coverage in titles.", + "format": "float", + "type": "number" + }, + "titleSnippetQueryTermCoverage": { + "description": "Query term coverage in titles and snippets.", + "format": "float", + "type": "number" + }, + "titles": { + "description": "Per-candidate title features for ranklab models, sorted from the best candidate to the worst candidate (i.e., the first element is the actually selected title).", + "items": { + "$ref": "QualityPreviewRanklabTitle" + }, + "type": "array" + } + }, + "type": "object" + }, + "MustangSnippetsRenderedToken": { + "description": "Tidbit token rendered in generating snippet/title.", + "id": "MustangSnippetsRenderedToken", + "properties": { + "byteOffsetBegin": { + "description": "Byte offset range in the rendered text that corresponds to this token. [byte_offset_begin, byte_offset_end) inclusive", + "format": "int32", + "type": "integer" + }, + "byteOffsetEnd": { + "description": "exclusive", + "format": "int32", + "type": "integer" + }, + "section": { + "description": "Section and TokenPos of the token.", + "enum": [ + "UNKNOWN", + "BODY_WITH_SOFT_TOKEN", + "GWD", + "META" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "tokenPos": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NSRVersionedItem": { + "description": "Message representing a versioned NSR score used for experimentation. This protobuf is copied from quality_nsr::NSRVersionedItem.", + "id": "NSRVersionedItem", + "properties": { + "value": { + "description": "The NSR value corresponding to this version.", + "format": "float", + "type": "number" + }, + "versionId": { + "description": "The version id.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NetFabricRpcVirtualNetworkId": { + "description": "Globally unique identifier for a virtual network.", + "id": "NetFabricRpcVirtualNetworkId", + "properties": { + "id": { + "description": "required", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "NewsReconServiceLrsQ2lrs2EntryPayload": { + "description": "Next ID: 6", + "id": "NewsReconServiceLrsQ2lrs2EntryPayload", + "properties": { + "isDailyMoment": { + "type": "boolean" + }, + "isMomentAnyFlavor": { + "description": "DEPRECATED as in: will be removed shortly.", + "type": "boolean" + }, + "isPlannedMoment": { + "type": "boolean" + }, + "momentRankingScore": { + "format": "int64", + "type": "string" + }, + "outKgFeatureTypes": { + "description": "LRS-level feature types to be sent as triples to KG. The equivalent KG collection will be added to the LRS topic.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NewsReconServiceLrsQ2lrs2QueryToLrsDataset": { + "id": "NewsReconServiceLrsQ2lrs2QueryToLrsDataset", + "properties": { + "entries": { + "description": "At most one entry per (LRS, algo version) pair.", + "items": { + "$ref": "NewsReconServiceLrsQ2lrs2QueryToLrsEntry" + }, + "type": "array" + }, + "timeMillis": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NewsReconServiceLrsQ2lrs2QueryToLrsEntry": { + "description": "Each entry is specific to one LRS, and contains all the information required for matching a query with the LRS. For example: entries { lrs { mid: \"/m/2024WakandaSenateElection\" } qref_entities { mid: \"/m/election\" # The general concept of election debug_index: 0 } qref_entities { mid: \"/m/senate\" debug_index: 1 } qref_entities { mid: \"/m/wakanda\" debug_index: 2 } qref_entities { mid: \"/m/WakandaSenate\" debug_index: 3 } qref_entities { mid: \"/m/2024\" # The year 2024 debug_index: 4 } patterns { pattern: \"TT***\" only_in { regions: \"WK\" # BCP-47 region code for Wakanda } } patterns { pattern: \"TTT**\" } patterns { pattern: \"T**T*\" } algo_version: 7 } The characters in every pattern string match the `qref_entities` pairwise. For example, in the pattern \"TT***\", the first T corresponds to the entity /m/election, the second T to /m/senate, the first star to /m/wakanda. A query matches a pattern if all the entities marked as T (== required) are found by QRef. If QRef also finds entities marked as star (== optional), those entities will be consumed in the LRS interpretation and added to the `QueryToLrsInterpretation.consumed_qref_mids` field. A query matches an entry if either: - QRef found the LRS entity itself in the query. This is the best-case scenario, it happens when the name of the event is well defined (for example \"brexit\") and the query mentions it explicitly; - the query matches any of the patterns defined in the entry. Next id: 8", + "id": "NewsReconServiceLrsQ2lrs2QueryToLrsEntry", + "properties": { + "algoVersion": { + "description": "The value of a `AlgoVersion.Enum` constant.", + "format": "int32", + "type": "integer" + }, + "entryIndex": { + "description": "Index of the entry in the list of entries. This does not need to be populated in the dataset which is written to disk.", + "format": "int32", + "type": "integer" + }, + "internalPayload": { + "$ref": "NewsReconServiceLrsQ2lrs2EntryPayload" + }, + "lrs": { + "$ref": "NewsReconServiceLrsQ2lrs2QueryToLrsEntryEntity" + }, + "patterns": { + "items": { + "$ref": "NewsReconServiceLrsQ2lrs2QueryToLrsEntryPattern" + }, + "type": "array" + }, + "qrefEntities": { + "items": { + "$ref": "NewsReconServiceLrsQ2lrs2QueryToLrsEntryEntity" + }, + "type": "array" + } + }, + "type": "object" + }, + "NewsReconServiceLrsQ2lrs2QueryToLrsEntryEntity": { + "description": "Next id: 7", + "id": "NewsReconServiceLrsQ2lrs2QueryToLrsEntryEntity", + "properties": { + "debugIndex": { + "format": "int32", + "type": "integer" + }, + "debugName": { + "type": "string" + }, + "encodedMid": { + "description": "This does not need to be populated in the dataset which is written to disk.", + "format": "uint64", + "type": "string" + }, + "mid": { + "type": "string" + } + }, + "type": "object" + }, + "NewsReconServiceLrsQ2lrs2QueryToLrsEntryLocaleRestrict": { + "description": "A locale satisfies the restrict if there is any match.", + "id": "NewsReconServiceLrsQ2lrs2QueryToLrsEntryLocaleRestrict", + "properties": { + "regions": { + "description": "BCP-47 region codes, e.g. \"US\". There is a match if the user's locale `.region_subtag()` is found in this set, e.g. the user's locale is \"es-US\".", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NewsReconServiceLrsQ2lrs2QueryToLrsEntryPattern": { + "id": "NewsReconServiceLrsQ2lrs2QueryToLrsEntryPattern", + "properties": { + "onlyIn": { + "$ref": "NewsReconServiceLrsQ2lrs2QueryToLrsEntryLocaleRestrict", + "description": "If set, the pattern only applies if the locale satisifes the restrict." + }, + "pattern": { + "description": "A string containing N characters, where each character is 'T' (required) or '*' (optional), and N is the size of `qref_entities`. Characters match QRef entities pairwise.", + "type": "string" + } + }, + "type": "object" + }, + "NlpLoggingQRewriteClientCallPathInfo": { + "description": "The proto that holds the complete call path info of the QRewrite client (e.g. the QUS's phase like \"RBT\",\"QBT\"; the QUS's candidate type like \"Identity\"; and the ACE's candidate type like \"FuzzyMatcher\"). Next ID: 5 ACE tags", + "id": "NlpLoggingQRewriteClientCallPathInfo", + "properties": { + "qrewriteCandidateId": { + "$ref": "QualityQrewriteCandidateId", + "description": "Indicates the type of candidate rewritten by QRewrite. This field is filled within QRewrite instead of QRewrite clients, and we add this here so this proto is able to hold all tags to form the identifier." + }, + "qusCandidateId": { + "$ref": "QualityQrewriteCandidateId", + "description": "QUS tags Indicates the type of the candidate in QUS that sends the QRewrite request." + }, + "qusClientCallPathInfo": { + "$ref": "NlpLoggingQusClientCallPathInfo", + "description": "Upstream call path before QUS." + }, + "qusPhase": { + "description": "Indicates which QUS phase sends the QRewrite request. Note if the QRewrite response is reused in succeeding phases, this field should not be overridden and it is always the phase that initially sends the RPC.", + "enum": [ + "QU_PHASE_UNSPECIFIED", + "QU_PHASE_REQUEST", + "QU_PHASE_QREWRITE", + "QU_PHASE_QBT", + "QU_PHASE_PROBE_QUERY", + "QU_PHASE_MULTI_ACCOUNT", + "QU_PHASE_CQBT", + "QU_PHASE_QBT_RESOLUTION", + "QU_PHASE_HIGH_PRECISION", + "QU_PHASE_COMBINED_RBT_RESOLUTION", + "QU_PHASE_ANALYZER_INPUT" + ], + "enumDescriptions": [ + "Invalid value to use as a default.", + "Phase in which the QueryUnderstandingRequest for a non-identity Candidate is generated. Produces QueryCandidateInfo.", + "Phase in which QUS calls QRewrite. Produces QRewrite's reply.", + "Phase in which QBT interpretations are ranked. Produces ranked QBT interpretations.", + "Phase in which QUS does a probe query for incomplete search results and produces ranked RBT interpretations on the basis of these. Only runs if understand_mode is PRE_RESULT_AND_PROBE_QUERY.", + "Phase in which QUS does cross-account understanding. Produces AnalyzerResponse whose interpretations contain personal data from multiple accounts.", + "Deprecated, but see go/qus-contextual-ig for original purpose.", + "Phase in which QUS calls resolution service to perform slow intent resolution. Produces resolved intents.", + "Phase in which QUS calls the fast HighPrecision workflow. Only runs if understand_mode is PRE_RESULT_AND_HIGH_PRECISION.", + "Phase in which QUS combines the RBT result and Slow Resolution result. Only runs if understand_mode is PRE_RESULT_AND_PROBE_QUERY_AND_RESOLUTION.", + "Phase in which QUS returns the AnalyzerInput as a separate Phase. It copies the AnalyzerInput from QU_PHASE_QREWRITE and returns it as a QueryUnderstandingStreamingResult for the purpose of logging in ACE. See go/analyzerinput-new-qus-phase." + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpLoggingQusClientCallPathInfo": { + "description": "The proto that holds the complete call path info of the QUS client (e.g. the candidate type like \"Identity\", \"FuzzyMatcher\"; The intent generator like \"QUS_IG\" in ACE).", + "id": "NlpLoggingQusClientCallPathInfo", + "properties": { + "rewriterType": { + "description": "rewriter_type forms part of a unique key to be used to label QUS Requests from ACE. The need to distinguish between the variety of calls from AS into QUS is for two reasons: (a) currently, assistant eval can do NLU Eval only on certain rewrites (b) later AS Hermetic and NLU Eval can be integrated In the furure, the unique key will be expanded to add intent_generator_type or something similar. There are ongoing discussions to confirm these plans", + "enum": [ + "UNKNOWN_REWRITER_TYPE", + "GENIE", + "FUZZY_MATCHER_HC", + "FUZZY_MATCHER", + "FUZZY_MATCHER_ADDITIONAL_1", + "FUZZY_MATCHER_ADDITIONAL_2", + "IDENTITY", + "MONDEGREEN_ASSISTANT", + "MONDEGREEN", + "SYNTHETIC", + "SPEECH_RECOGNITION", + "SPEECH_MISRECOGNITION", + "SPELL_CORRECTION", + "AUTO_TRANSLATION", + "AUTO_TRANSLATION_ARGUMENT_TRANSFER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "Additional FuzzyMatcher branches, see go/afm-additional-branches", + "", + "", + "Mondegreen Assistant is used in Media queries, Mondegreen is used for YouTube/Voz. See go/project-mondegreen-media", + "", + "", + "", + "Rewriter for misrecognition quick-fixes, see go/pop-ranking-misrecognition-rewriter", + "QUS rewriters.", + "", + "Auto Translate with argument transfer. go/missandei-argument-transfer-through-qus" + ], + "type": "string" + }, + "temporaryAceTag": { + "description": "The timestamp when QUS request is built in ACE. For now we don't care about the actual meaning of this tag, and only want to guarantee its uniqueness per QUS call.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NlpMeaningMeaningRemodeling": { + "id": "NlpMeaningMeaningRemodeling", + "properties": { + "deletion": { + "description": "This field can be set to true to indicate that the associated part of the schema is being deleted as part of the remodeling.", + "type": "boolean" + }, + "id": { + "description": "The remodeling ID. Each remodeling has a unique ID that is used to associate changes with that remodeling.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NlpMeaningMeaningRemodelingControl": { + "description": "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.", + "id": "NlpMeaningMeaningRemodelingControl", + "properties": { + "remodelingId": { + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpMeaningMeaningRemodelings": { + "description": "This proto will be added as a field to part of a schema to indicate it is being remodeled.", + "id": "NlpMeaningMeaningRemodelings", + "properties": { + "remodeling": { + "items": { + "$ref": "NlpMeaningMeaningRemodeling" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpMeaningSemanticTypeNameMeaningRemodelings": { + "description": "Associates remodeling data with a semantic type name.", + "id": "NlpMeaningSemanticTypeNameMeaningRemodelings", + "properties": { + "name": { + "description": "Semantic type name.", + "type": "string" + }, + "remodelings": { + "$ref": "NlpMeaningMeaningRemodelings" + } + }, + "type": "object" + }, + "NlpSaftAnnotatedPhrase": { + "description": "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.", + "id": "NlpSaftAnnotatedPhrase", + "properties": { + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Annotation for this phrase." + }, + "phrase": { + "$ref": "NlpSaftPhrase", + "description": "Contains start and end pointers to the token array for this span." + } + }, + "type": "object" + }, + "NlpSaftConstituencyNode": { + "description": "Constituency parse tree node with tokens as the leaf nodes.", + "id": "NlpSaftConstituencyNode", + "properties": { + "child": { + "description": "An arbitrary number of children, ordered from left to right; empty for preterminals. Represented via indices into Document.constituency_node.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "label": { + "description": "The label of the current node.", + "type": "string" + }, + "phrase": { + "$ref": "NlpSaftPhrase", + "description": "A phrase that contains information about the span and the (optional) head token. For terminal nodes the head of the phrase holds the word." + } + }, + "type": "object" + }, + "NlpSaftDocument": { + "description": "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", + "id": "NlpSaftDocument", + "properties": { + "annotatedPhrase": { + "description": "Annotated phrases in the document that are not semantically well-defined mentions of entities.", + "items": { + "$ref": "NlpSaftAnnotatedPhrase" + }, + "type": "array" + }, + "annotations": { + "$ref": "Proto2BridgeMessageSet", + "description": "Generic annotations." + }, + "author": { + "description": "Document author(s).", + "items": { + "type": "string" + }, + "type": "array" + }, + "bylineDate": { + "description": "Document's byline date, if available: this is the date that will be shown in the snippets in web search results. It is stored as the number of seconds since epoch. See segindexer/compositedoc.proto", + "format": "int64", + "type": "string" + }, + "constituencyNode": { + "description": "Constituency parse tree nodes for the sentences in this document.", + "items": { + "$ref": "NlpSaftConstituencyNode" + }, + "type": "array" + }, + "constituencyRoot": { + "description": "The root node of the constituency tree for each sentence. If non-empty, the list of roots will be aligned with the sentences in the document. Note that some sentences may not have been parsed for various reasons; these sentences will be annotated with placeholder \"stub parses\". For details, see //nlp/saft/components/constituents/util/stub-parse.h.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "contentFirstseen": { + "description": "Stores minimum of first time google successfully crawled a document, or indexed the document with contents (i.e, not roboted). It is stored as the number of seconds since epoch. See quality/historical/signals/firstseen/firstseen.proto", + "format": "int64", + "type": "string" + }, + "contentType": { + "description": "Optional document content_type (from webutil/http/content-type.proto). Used for setting the content_type when converting the SAFT Document to a CompositeDoc. Will be inferred if not given here.", + "format": "int32", + "type": "integer" + }, + "contentage": { + "description": "Age of the content of the document. For details, see: quality/historical/shingle/signals/contentage.proto The format has been translated to a canonical timestamp (seconds since epoch).", + "format": "int64", + "type": "string" + }, + "date": { + "description": "Document anchor date in YYYYMMDDhhmmss format.", + "type": "string" + }, + "docid": { + "description": "Identifier for document.", + "type": "string" + }, + "entity": { + "description": "Entities in the document.", + "items": { + "$ref": "NlpSaftEntity" + }, + "type": "array" + }, + "entityLabel": { + "description": "Entity labels used in this document. This field is used to define labels for the Entity::entity_type_probability field, which contains corresponding probabilities. WARNING: This field is deprecated. go/saft-replace-deprecated-entity-type", + "items": { + "type": "string" + }, + "type": "array" + }, + "focusEntity": { + "description": "Focus entity. For lexicon articles, like Wikipedia pages, a document is often about a certain entity. This is the local entity id of the focus entity for the document.", + "format": "int32", + "type": "integer" + }, + "golden": { + "description": "Flag for indicating that the document is a gold-standard document. This can be used for putting additional weight on human-labeled documents in contrast to automatically labeled annotations.", + "type": "boolean" + }, + "httpHeaders": { + "description": "HTTP header for document. If the HTTP headers field is set it should be the complete header including the HTTP status line and the trailing cr/nl. HTTP headers are not required to be valid UTF-8. Per the HTTP/1.1 Syntax (RFC7230) standard, non-ASCII octets should be treated as opaque data.", + "format": "byte", + "type": "string" + }, + "hyperlink": { + "description": "The hyperlinks in the document. Multiple hyperlinks are sorted in left-to-right order.", + "items": { + "$ref": "NlpSaftHyperlink" + }, + "type": "array" + }, + "labeledSpans": { + "additionalProperties": { + "$ref": "NlpSaftLabeledSpans" + }, + "description": "Generic labeled spans (produced by the span labeling framework, go/saft-span-labeling). The map key identifies spans of the same type. By convention, it should be of the form \"team_name/span_type_name\".", + "type": "object" + }, + "language": { + "description": "Document language (default is English). This field's value maps cleanly to the i18n.languages.Language proto enum (i18n::languages::Language in C++).", + "format": "int32", + "type": "integer" + }, + "lastSignificantUpdate": { + "description": "Last significant update of the page content, in the same format as the contentage field, and also derived from ContentAge.last_significant_update in quality/historical/shingle/signals/contentage.proto.", + "format": "int64", + "type": "string" + }, + "measure": { + "description": "Measures in the documents. This covers both time expressions as well as physical quantities.", + "items": { + "$ref": "NlpSaftMeasure" + }, + "type": "array" + }, + "privacySensitive": { + "description": "True if this document contains privacy sensitive data. When the document is transferred in RPC calls the RPC should use SSL_PRIVACY_AND_INTEGRITY security level.", + "type": "boolean" + }, + "relation": { + "description": "Relations between entities in the document.", + "items": { + "$ref": "NlpSaftRelation" + }, + "type": "array" + }, + "rpcError": { + "description": "True if some RPC which touched this document had an error.", + "type": "boolean" + }, + "semanticNode": { + "description": "The semantic nodes for the document represent arbitrary types of higher-level abstractions beyond entity mention coreference and binary relations between entities. These may include: n-ary relations, semantic frames or events. The semantic nodes for a document are the nodes in a directed acyclic graph, with an adjacency list representation.", + "items": { + "$ref": "NlpSaftSemanticNode" + }, + "type": "array" + }, + "subsection": { + "description": "Sub-sections for document for dividing a document into volumes, parts, chapters, sections, etc.", + "items": { + "$ref": "NlpSaftDocument" + }, + "type": "array" + }, + "syntacticDate": { + "description": "Document's syntactic date (e.g. date explicitly mentioned in the URL of the document or in the document title). It is stored as the number of seconds since epoch. See quality/timebased/syntacticdate/proto/syntactic-date.proto", + "format": "int64", + "type": "string" + }, + "text": { + "description": "Raw text contents of document. (In docjoin attachments from the SAFT goldmine annotator this field will be empty.)", + "type": "string" + }, + "title": { + "description": "Optional document title.", + "type": "string" + }, + "token": { + "description": "Tokenization of the document.", + "items": { + "$ref": "NlpSaftToken" + }, + "type": "array" + }, + "topic": { + "items": { + "$ref": "NlpSaftDocumentTopic" + }, + "type": "array" + }, + "trace": { + "description": "Whether to enable component tracing during analysis of this document. See http://go/saft-tracing for details.", + "type": "boolean" + }, + "url": { + "description": "Source document URL.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftDocumentTopic": { + "description": "Document topic(s).", + "id": "NlpSaftDocumentTopic", + "properties": { + "name": { + "description": "Topic name or identifier.", + "type": "string" + }, + "score": { + "description": "Topic score.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "NlpSaftEntity": { + "description": "Named entities in the document.", + "id": "NlpSaftEntity", + "properties": { + "antecedent": { + "description": "Antecedent for entity. This is used to make coreference chains before the mentions in the document are grouped by entity.", + "format": "int32", + "type": "integer" + }, + "entityType": { + "description": "Entity type (e.g. PER, ORG, LOC). WARNING: This field is deprecated. go/saft-replace-deprecated-entity-type", + "type": "string" + }, + "entityTypeProbability": { + "description": "Probability distribution over entity types. These values correspond to Document.entity_label values: doc.entity[e].entity_type_probability[n] is the probability that the correct label for doc.entity[e] is doc.entity_label[n]. These probabilities sum to 1.0 (with possible rounding error). WARNING: This field is deprecated. go/saft-replace-deprecated-entity-type", + "items": { + "format": "double", + "type": "number" + }, + "type": "array" + }, + "gender": { + "description": "Gender for entity.", + "enum": [ + "MASCULINE", + "FEMININE", + "NEUTER", + "PLURAL" + ], + "enumDescriptions": [ + "", + "", + "", + "deprecated on 2014/7/7" + ], + "type": "string" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this entity." + }, + "mention": { + "description": "Mentions of the entity in the document.", + "items": { + "$ref": "NlpSaftMention" + }, + "type": "array" + }, + "name": { + "description": "Representative entity name.", + "type": "string" + }, + "profile": { + "$ref": "NlpSaftEntityProfile", + "description": "Profile for entity." + }, + "referent": { + "$ref": "NlpSaftReferent", + "description": "Referent information for discourse context entities that are not mentioned in the document. These can be merged with mentioned entities during analysis if they are deemed to be coreferent. Entities with referents should not have any mentions if they do not corefer with anything. For example, when adding context entities to an input document prior to SAFT analysis, those entities should have a referent and no mentions." + }, + "representativeMention": { + "description": "Representative mention, as an index into mention.", + "format": "int32", + "type": "integer" + }, + "salience": { + "description": "Score indicating the saliency (centrality) of this entity to the document.", + "format": "double", + "type": "number" + }, + "type": { + "description": "Entity types of the entity. These can include SAFT types (/saft/location, /saft/art, /saft/other/living_thing, etc), collections types (/collection/tv_personalities, /collection/statistical_regions, etc), and more. This refers to the type of the entity itself: in \"She is on TV\", \"She\" refers to a specific actor, with type \"/collection/tv_personalities\". Cf. Mention.Type, which is the type of the referring mention.", + "items": { + "$ref": "NlpSaftEntityType" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSaftEntityProfile": { + "description": "An entity profile contains a summary of the information about a single unique entity. Next available index: 46.", + "id": "NlpSaftEntityProfile", + "properties": { + "alternate": { + "items": { + "$ref": "NlpSaftEntityProfileAlternate" + }, + "type": "array" + }, + "annotations": { + "$ref": "Proto2BridgeMessageSet", + "description": "Generic annotations." + }, + "attribute": { + "description": "List of attributes for the entity.", + "items": { + "$ref": "NlpSaftEntityProfileAttribute" + }, + "type": "array" + }, + "canonicalName": { + "description": "Canonical entity name.", + "type": "string" + }, + "collectionScoreType": { + "enum": [ + "COLLECTION_GIVEN_ENTITY", + "ENTITY_GIVEN_COLLECTION" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "disambiguation": { + "description": "Disambiguation phrase. The combination of entity name and disambiguation phrase should be unique within the corpus.", + "type": "string" + }, + "embedding": { + "description": "Entity embeding vector, representing the entity in a dense low-dimensional embedding space.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "frame": { + "description": "Profile frame in binary SLING encoding.", + "format": "byte", + "type": "string" + }, + "gender": { + "description": "Gender of the entity.", + "enum": [ + "MASCULINE", + "FEMININE", + "NEUTER", + "PLURAL" + ], + "enumDescriptions": [ + "", + "", + "", + "deprecated on 2014/7/7" + ], + "type": "string" + }, + "id": { + "description": "Unique global id for entity.", + "format": "int64", + "type": "string" + }, + "identifier": { + "description": "External identifiers for entity.", + "items": { + "$ref": "NlpSaftIdentifier" + }, + "type": "array" + }, + "keyword": { + "items": { + "$ref": "NlpSaftEntityProfileKeyword" + }, + "type": "array" + }, + "mid": { + "description": "Freebase MID for entity. This field should be the same as FREEBASE_MID identifier for the entity profile.", + "type": "string" + }, + "name": { + "description": "Representative name for entity.", + "type": "string" + }, + "nameLanguage": { + "description": "Language for the name and disambiguation.", + "format": "int32", + "type": "integer" + }, + "nature": { + "description": "Nature of the entity.", + "enum": [ + "UNKNOWN", + "CONCEPT", + "THING", + "ESTABLISHMENT", + "INDIVIDUAL", + "GIVEN_NAME", + "FAMILY_NAME" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "reference": { + "items": { + "$ref": "NlpSaftEntityProfileReference" + }, + "type": "array" + }, + "related": { + "items": { + "$ref": "NlpSaftEntityProfileRelated" + }, + "type": "array" + }, + "type": { + "description": "Entity type.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftEntityProfileAlternate": { + "description": "Alternative names for entity.", + "id": "NlpSaftEntityProfileAlternate", + "properties": { + "count": { + "format": "int32", + "type": "integer" + }, + "form": { + "description": "see nlp/saft/resolution/name-form.h for values", + "format": "int32", + "type": "integer" + }, + "frame": { + "description": "frame in SLING encoding", + "format": "byte", + "type": "string" + }, + "language": { + "format": "int32", + "type": "integer" + }, + "name": { + "type": "string" + }, + "sources": { + "description": "(1 \u003c\u003c SRC_DEFAULT)", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSaftEntityProfileAttribute": { + "id": "NlpSaftEntityProfileAttribute", + "properties": { + "boolValue": { + "description": "Boolean attribute value, e.g. for IsDeceased.", + "type": "boolean" + }, + "floatValue": { + "description": "Double attribute value, e.g. for height/weight.", + "format": "double", + "type": "number" + }, + "intValue": { + "description": "Integer attribute value, e.g. IntId(\"April\").", + "format": "int64", + "type": "string" + }, + "language": { + "description": "Language, in case the attribute value is a string.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "String name of the type of attribute, e.g. /birth/date", + "type": "string" + }, + "typeId": { + "description": "Any id of the type of the attribute, e.g. IntId(/birth/date)", + "format": "int32", + "type": "integer" + }, + "value": { + "description": "String attribute value, e.g. \"April 2010\" or \"3,235,121\".", + "type": "string" + }, + "valueType": { + "description": "The type of the value.", + "enum": [ + "ATTRIBUTE_TYPE_STRING", + "ATTRIBUTE_TYPE_INT", + "ATTRIBUTE_TYPE_FLOAT", + "ATTRIBUTE_TYPE_BOOL", + "ATTRIBUTE_TYPE_DATETIME" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftEntityProfileKeyword": { + "description": "Keywords and key phrases for entity.", + "id": "NlpSaftEntityProfileKeyword", + "properties": { + "count": { + "format": "int32", + "type": "integer" + }, + "language": { + "format": "int32", + "type": "integer" + }, + "score": { + "description": "Score associated with the keyword. For fine-grained types this is a probability.", + "format": "double", + "type": "number" + }, + "term": { + "type": "string" + }, + "type": { + "enum": [ + "CONTEXT", + "MENTION", + "HEADLINE", + "TOPIC", + "TEMPORAL", + "FREEBASE_TYPE", + "FREEBASE_NOTABLE_TYPE", + "FREEBASE_NOTABLE_FOR", + "FINE_TYPE", + "KG_COLLECTION", + "HYPERNYM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftEntityProfileReference": { + "description": "References to entity.", + "id": "NlpSaftEntityProfileReference", + "properties": { + "docid": { + "type": "string" + }, + "entity": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSaftEntityProfileRelated": { + "description": "Related entities.", + "id": "NlpSaftEntityProfileRelated", + "properties": { + "count": { + "description": "Number of occurrences.", + "format": "int32", + "type": "integer" + }, + "inverse": { + "description": "Inverse relations can be marked in a bidirectional graph.", + "type": "boolean" + }, + "relationId": { + "description": "Optional integer id for the relation.", + "format": "int32", + "type": "integer" + }, + "relationIdentifier": { + "$ref": "NlpSaftIdentifier", + "description": "Optional external identifier for the relation." + }, + "score": { + "description": "Score for related entity, i.e. p(e-\u003er | e).", + "format": "float", + "type": "number" + }, + "targetId": { + "description": "Profile id of related entity.", + "format": "int64", + "type": "string" + }, + "targetIdentifier": { + "$ref": "NlpSaftIdentifier", + "description": "Optional external identifier for the target entity." + }, + "targetName": { + "description": "Name of related entity.", + "type": "string" + }, + "type": { + "description": "Type of relation.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftEntityType": { + "description": "A generic type description for an entity.", + "id": "NlpSaftEntityType", + "properties": { + "basedOnMention": { + "description": "This field can be used to specify if the entity type has been annotated or predicted from a specific mention of the entity. However, the entity type does still apply to the entity as a whole, and not just a specific mention.", + "format": "int32", + "type": "integer" + }, + "domain": { + "description": "A domain name for the set that this particular type belongs to.", + "enum": [ + "UNSPECIFIED", + "SAFT", + "SAFT_FINE", + "SAFT_FINE_MENTION", + "COLLECTIONS", + "FREEBASE", + "FIGER", + "ISA" + ], + "enumDescriptions": [ + "", + "Coarse entity types, like \"/saft/organization\".", + "Fine entity types, like \"/saft/organization/education\".", + "Mention-level fine entity types. These are annotated in cases when the entity-level type does not apply to all mentions, like in \"Bob is an animal.\" The based_on_mention value is populated correspondingly.", + "", + "", + "", + "" + ], + "type": "string" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this entity type." + }, + "name": { + "description": "The type name, like \"/saft/person\". See README.entity-types for the inventory of SAFT type tags.", + "type": "string" + }, + "score": { + "description": "A score for this type.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "NlpSaftHyperlink": { + "description": "A link on an HTML page.", + "id": "NlpSaftHyperlink", + "properties": { + "anchorText": { + "description": "Clean anchor text (no HTML markup).", + "type": "string" + }, + "byteEnd": { + "description": "note: inclusive", + "format": "int32", + "type": "integer" + }, + "byteStart": { + "description": "begin/end options are for goldmine AnnotationsFinder to locate the offsets of saft tokens. Start is inclusive by default and end is marked. The indices of the first and last byte covered by the hyperlink.", + "format": "int32", + "type": "integer" + }, + "phrase": { + "$ref": "NlpSaftPhrase", + "description": "The indices of the first and last token covered by the hyperlink." + }, + "url": { + "description": "(Absolute) URL that the links to.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftIdentifier": { + "description": "External identifier. An external identifier is a persistent identifier for an object within a domain.", + "id": "NlpSaftIdentifier", + "properties": { + "domain": { + "description": "Domain for the identifier.", + "enum": [ + "WIKIPEDIA_ARTICLE_NAME", + "WEBREFERENCES_ID", + "FREEBASE_MID", + "WIKIPEDIA_ARTICLE_ID", + "CANONICAL_URL", + "FREEBASE_TOPIC", + "FREEBASE_MID_CHAIN", + "FREEBASE_ID", + "OYSTER_FEATURE_ID", + "WORDNET_SENSE_KEY", + "EXACT_STRING_MATCH", + "GOOGLE_PLAY_ID", + "GOOGLE_PLAY_DEVELOPER", + "GOOGLE_PLAY_TITLE", + "OXFORD_ID", + "NOUN_COMPOUND" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "id of the app on play store", + "name of the developer", + "title of the app", + "", + "" + ], + "type": "string" + }, + "id": { + "description": "Identifier within domain.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftLabeledSpan": { + "description": "A generic span, possibly with an associated label. The span may be defined by either byte-level or token-level boundaries.", + "id": "NlpSaftLabeledSpan", + "properties": { + "byteEnd": { + "description": "note: inclusive", + "format": "int32", + "type": "integer" + }, + "byteStart": { + "description": "The indices of the first and last byte covered by the span.", + "format": "int32", + "type": "integer" + }, + "label": { + "description": "The label associated with the span.", + "type": "string" + }, + "labelScores": { + "additionalProperties": { + "format": "float", + "type": "number" + }, + "description": "Optionally stores alternative labels with associated scores for the span.", + "type": "object" + }, + "score": { + "description": "A score associated with the span.", + "format": "float", + "type": "number" + }, + "tokenEnd": { + "description": "note: inclusive", + "format": "int32", + "type": "integer" + }, + "tokenStart": { + "description": "The indices of the first and last token covered by the span.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSaftLabeledSpans": { + "description": "A list of labeled spans of the same type.", + "id": "NlpSaftLabeledSpans", + "properties": { + "labeledSpan": { + "items": { + "$ref": "NlpSaftLabeledSpan" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSaftMeasure": { + "description": "Measures in the documents. This covers both time expressions as well as physical quantities.", + "id": "NlpSaftMeasure", + "properties": { + "canonical": { + "description": "Canonical value for measurement.", + "format": "double", + "type": "number" + }, + "granularity": { + "description": "Granularity for measurement.", + "format": "double", + "type": "number" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this measure." + }, + "phrase": { + "$ref": "NlpSaftPhrase", + "description": "Phrase containing the measure." + }, + "type": { + "enum": [ + "NUMBER", + "PERCENT", + "ORDINAL", + "DATE", + "TIME", + "PERIOD", + "CURRENCY", + "LENGTH", + "AREA", + "VOLUME", + "MASS", + "TEMPERATURE", + "ANGLE", + "BRIGHTNESS", + "CHARGE", + "DATA", + "DATA_RATE", + "DURATION", + "ENERGY", + "FREQUENCY", + "FUEL_EFFICIENCY", + "POWER", + "PRESSURE", + "SPEED", + "VOLTAGE", + "RESISTANCE", + "FORCE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "unit": { + "type": "string" + }, + "value": { + "description": "Measurement value and unit.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftMention": { + "description": "Mentions of the entity in the document.", + "id": "NlpSaftMention", + "properties": { + "confidence": { + "description": "Estimate of the confidence that this mention is in the correct cluster. Zero means this mention is probably in the wrong cluster, 1 means this mention is probably in the correct cluster. See nlp/saft/components/coreference/coreference-confidence.h for details about what \"correct cluster\" might mean.", + "format": "double", + "type": "number" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this mention." + }, + "kind": { + "enum": [ + "UNSPECIFIED_KIND", + "REFERENTIAL", + "ATTRIBUTIVE", + "MODIFIER" + ], + "enumDescriptions": [ + "", + "referential mention", + "attributive mention", + "modifier mention" + ], + "type": "string" + }, + "nestingRelation": { + "enum": [ + "UNSPECIFIED_RELATION", + "ALIAS", + "NESTED_MODIFIER", + "EPONYM", + "CONJUNCTION", + "IN_CREATIVE_WORK", + "SPECIFIED_HEAD" + ], + "enumDescriptions": [ + "", + "This mention refers to the same entity as the enclosing mention. E.g.: [[Google] Inc.]", + "This mention refers to an entity that is used as a modifier to specify or identify the enclosing mention's entity. E.g.: [[California] DMV]", + "This mention refers to an entity that the enclosing mention's entity is named after. E.g.: [[George Washington] Bridge]", + "This mention refers to an entity that forms a co-equal part that makes up the enclosing mention. E.g.: [[Roe] v [Wade]]", + "The enclosing mention is the name/title of a creative work. E.g.: [[Batman] Returns]", + "The enclosing mention is a specific instance or member of the more general entity identified by this mention. E.g.: [2008 [Winter Olympics]]" + ], + "type": "string" + }, + "phrase": { + "$ref": "NlpSaftPhrase", + "description": "Phrase for the mention." + }, + "resolution": { + "$ref": "NlpSaftMentionResolution", + "description": "Mention-level resolution. This is used for encoding the meaning of the mention rather than the entity. For example, definite references and appositions are resolved to the mid for the concept rather than the entity." + }, + "role": { + "enum": [ + "UNSPECIFIED", + "CONJUNCTION_ITEM" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "type": { + "enum": [ + "NAM", + "NOM", + "PRE", + "PRO", + "CMC", + "NRP", + "VRB", + "IMP" + ], + "enumDescriptions": [ + "name mention (proper noun)", + "nominal mention (common noun)", + "pre-nominal mention", + "pronominal mention", + "conjoined mention construction", + "mention of a non-referential pronoun", + "Verbal mention (head of verb phrase antecedents in discourse deixis).", + "Implicit mention (e.g., elliptical subjects in pro-drop languages). The facet in the phrase indicates its role with respect to the phrase token." + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftMentionResolution": { + "description": "Mention resolution for encoding the concept id (e.g. mid) for a mention.", + "id": "NlpSaftMentionResolution", + "properties": { + "profile": { + "$ref": "NlpSaftEntityProfile", + "description": "Profile for mention information." + }, + "type": { + "enum": [ + "MATCH", + "BROADER_MATCH" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftMorphology": { + "description": "Message that stores information about the morphology of a token.", + "id": "NlpSaftMorphology", + "properties": { + "attrValue": { + "description": "A list of morphology attribute-value pairs.", + "items": { + "enum": [ + "OTHER", + "ATTR_ANIMACY", + "UNSP_ANIMACY", + "ANIMATE", + "INANIMATE", + "IRRATIONAL", + "RATIONAL", + "PERSONAL", + "ATTR_ASPECT", + "UNSP_ASPECT", + "PERFECT", + "IMPERFECT", + "PROGRESSIVE", + "ATTR_CASE", + "UNSP_CASE", + "NOMINATIVE", + "ACCUSATIVE", + "DATIVE", + "GENITIVE", + "PREPOSITIONAL", + "INSTRUMENTAL", + "VOCATIVE", + "ADVERBIAL", + "COMPLEMENTIVE", + "LOCATIVE", + "OBLIQUE", + "PARTITIVE", + "REFLEXIVE_CASE", + "RELATIVE_CASE", + "DIRECT_CASE", + "ERGATIVE", + "ATTR_DEFINITENESS", + "UNSP_DEFINITENESS", + "DEFINITE", + "INDEFINITE", + "ATTR_DEGREE", + "UNSP_DEGREE", + "COMPARATIVE", + "SUPERLATIVE", + "POSITIVE", + "ABSOLUTE_DEGREE", + "RELATIVE_DEGREE", + "ATTR_FORM", + "UNSP_FORM", + "ADNOMIAL", + "AUXILIARY", + "COMPLEMENTIZER", + "FINAL_ENDING", + "GERUND", + "IRREALIS", + "LONG_FORM", + "ORDER_FORM", + "REALIS", + "SHORT_FORM", + "SPECIFIC_FORM", + "ATTR_GENDER_AGR", + "UNSP_GENDER_AGR", + "FEMININE_AGR", + "MASCULINE_AGR", + "NEUTER_AGR", + "ATTR_GENDER", + "UNSP_GENDER", + "FEMININE", + "MASCULINE", + "NEUTER", + "PLURALE_TANTUM", + "COMMON", + "ATTR_MOOD", + "UNSP_MOOD", + "CONDITIONAL_MOOD", + "IMPERATIVE", + "INDICATIVE", + "INTERROGATIVE", + "JUSSIVE", + "SUBJUNCTIVE", + "SUBJUNCTIVE1", + "SUBJUNCTIVE2", + "OPTATIVE", + "ATTR_NUMBER_AGR", + "UNSP_NUMBER_AGR", + "SINGULAR_AGR", + "PLURAL_AGR", + "ATTR_NUMBER", + "UNSP_NUMBER", + "SINGULAR", + "PLURAL", + "DUAL", + "ATTR_PERSON", + "UNSP_PERSON", + "FIRST", + "SECOND", + "THIRD", + "REFLEXIVE_PERSON", + "ATTR_PROPER", + "UNSP_PROPER", + "NOT_PROPER", + "PROPER", + "ATTR_RECIPROCITY", + "UNSP_RECIPROCITY", + "NON_RECIPROCAL", + "RECIPROCAL", + "ATTR_TENSE", + "UNSP_TENSE", + "CONDITIONAL_TENSE", + "FUTURE", + "PAST", + "PRESENT", + "PLUPERFECT", + "IMPERFECT_TENSE", + "ATTR_VOICE", + "UNSP_VOICE", + "ACTIVE", + "CAUSATIVE", + "PASSIVE", + "ATTR_GENDER_ANTECEDENT", + "UNSP_GENDER_ANTECEDENT", + "FEMININE_ANTECEDENT", + "MASCULINE_ANTECEDENT", + "NEUTER_ANTECEDENT", + "ATTR_NUMBER_ANTECEDENT", + "UNSP_NUMBER_ANTECEDENT", + "SINGULAR_ANTECEDENT", + "PLURAL_ANTECEDENT", + "ATTR_HONORIFIC", + "UNSP_HONORIFIC", + "HONORIFIC", + "ATTR_FORMALITY", + "UNSP_FORMALITY", + "FORMAL", + "INFORMAL", + "ATTR_INFLECTION_TYPE", + "UNSP_INFLECTION_TYPE", + "WEAK_INFLECTION", + "STRONG_INFLECTION", + "MIXED_INFLECTION" + ], + "enumDescriptions": [ + "Defaults. not in list", + "Animacy.", + "animacy=unsp_r", + "animacy=anim", + "animacy=inan", + "animacy=irrat", + "animacy=rat", + "animacy=pers", + "Aspect.", + "aspect=unsp_a", + "aspect=perf", + "aspect=imperf", + "aspect=prog", + "Case.", + "case=unsp_c", + "case=nom", + "case=acc", + "case=dat", + "case=gen", + "case=prep", + "case=ins", + "case=voc", + "case=advb", + "case=comp", + "case=loc", + "case=obl", + "case=par", + "case=reflex", + "case=rel", + "case=dir", + "case=erg", + "Definiteness.", + "definiteness=unsp_d", + "definiteness=def", + "definiteness=indef", + "Degree.", + "degree=unsp_d", + "degree=cmp", + "degree=sup", + "degree=pos", + "degree=sup_a", + "degree=sup_r", + "Form.", + "form=unsp_f", + "form=adn", + "form=aux", + "form=compl", + "form=fin", + "form=ger", + "form=irr", + "form=long", + "form=ord", + "form=real", + "form=short", + "form=spcf", + "Gender agreement.", + "gender_agr=unsp_a", + "gender_agr=fem_a", + "gender_agr=masc_a", + "gender_agr=neut_a", + "Gender.", + "gender=unsp_g", + "gender=fem", + "gender=masc", + "gender=neut", + "gender=pl_tantum", + "gender=com", + "Mood.", + "mood=unsp_m", + "mood=cnd", + "mood=imp", + "mood=ind", + "mood=inter", + "mood=jus", + "mood=sub", + "mood=sub1", + "mood=sub2", + "mood=opt", + "Number agreement.", + "number_agr=unsp_a", + "number_agr=sing_a", + "number_agr=plur_a", + "Number.", + "number=unsp_n", + "number=sing", + "number=plur", + "number=dual", + "Person.", + "person=unsp_p", + "person=1", + "person=2", + "person=3", + "person=reflex", + "Proper name.", + "proper=unsp_p", + "proper=false", + "proper=true", + "Reciprocity.", + "reciprocity=unsp_r", + "reciprocity=non-rcp", + "reciprocity=rcp", + "Tense.", + "tense=unsp_t", + "tense=cnd", + "tense=fut", + "tense=past", + "tense=pres", + "tense=plup", + "tense=impf", + "Voice.", + "voice=unsp_v", + "voice=act", + "voice=cau", + "voice=pass", + "Gender antecedent.", + "gender_antecedent=unsp_a", + "gender_antecedent=fem_a", + "gender_antecedent=masc_a", + "gender_antecedent=neut_a", + "Number antecedent.", + "number_antecedent=unsp_a", + "number_antecedent=sing_a", + "number_antecedent=plur_a", + "Honorific.", + "honorific=unsp_h", + "honorific=hon", + "Formality.", + "formality=unsp_f", + "formality=fml", + "formality=ifml", + "Inflection type (also known as Declension)", + "inflection_type=unsp_i", + "inflection_type=weak", + "inflection_type=strong", + "inflection_type=mixed" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSaftPhrase": { + "description": "A document phrase marks a range of tokens in a document as a phrase. The indices are token positions in the document.", + "id": "NlpSaftPhrase", + "properties": { + "end": { + "format": "int32", + "type": "integer" + }, + "facet": { + "enum": [ + "EXPLICIT", + "SUBJ", + "DOBJ" + ], + "enumDescriptions": [ + "explicit phrase, with no implicit facet", + "subject of the phrase token", + "direct object of the phrase token" + ], + "type": "string" + }, + "head": { + "description": "The head token in the phrase is the id of the top-most token within the phrase. It either has an arc from outside the phrase going to it, or it is a root token of the sentence. A value of -1 indicates that the head has not yet been computed for the phrase (not the same semantics as the head of a token!). Note that even when it is uniquely defined, there is no guarantee that the head is set for entities and measurements within a document: you may need to explicitly compute it.", + "format": "int32", + "type": "integer" + }, + "start": { + "description": "First and last token in the phrase. The phrase goes from start to end (inclusive).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSaftReferent": { + "description": "A referent contains information about what a discourse context entity is referring to. It acts like a canonical mention of the entity.", + "id": "NlpSaftReferent", + "properties": { + "distance": { + "description": "Distance of this referent from the markables in the Document. Smaller values imply that the referent is more accessible to be an antecedent for a markable in the Document. The expectation is that this field would increase with every new Document in which this referent is not mentioned.", + "format": "double", + "type": "number" + }, + "explicitness": { + "enum": [ + "NAMED", + "DEFINITE", + "INDEFINITE" + ], + "enumDescriptions": [ + "mentioned by the actual name", + "refers to a particular object, e.g., \"the dog\"", + "groups of objects, e.g., \"dogs\"" + ], + "type": "string" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this referent." + }, + "phrase": { + "$ref": "NlpSaftPhrase", + "description": "Entity name phrase. The phrase indices are relative to the token array above. The phrase should normally cover all the tokens in the name and the head must be set to be the head token of the name." + }, + "prominence": { + "description": "Prominence score for referent. This is roughly equivalent to the number of previous mentions of the referent.", + "format": "double", + "type": "number" + }, + "role": { + "enum": [ + "CONTEXT", + "NARRATOR", + "ADDRESSEE", + "SUBJECT" + ], + "enumDescriptions": [ + "Entity that has been mentioned previously in the discourse context.", + "The narrator of the discourse. This can be coreferent with first-person non-quoted pronouns in the discourse.", + "The recipient of the message in the discourse. This can be coreferent with non-quoted second-person pronouns in the discourse.", + "Prominent subject of the discourse context. This can be coreferent with referential third-person pronouns in the discourse that don't have any other possible antecedents in the discourse." + ], + "type": "string" + }, + "token": { + "description": "Tokenized representation for the canonical name of the referent entity.", + "items": { + "$ref": "NlpSaftToken" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSaftRelation": { + "description": "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", + "id": "NlpSaftRelation", + "properties": { + "identifier": { + "$ref": "NlpSaftIdentifier", + "description": "External identifier for relation." + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this relation." + }, + "kind": { + "enum": [ + "ENTITY", + "ATTRIBUTE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "mention": { + "description": "Mentions of the relation in the document.", + "items": { + "$ref": "NlpSaftRelationMention" + }, + "type": "array" + }, + "score": { + "description": "Relation score.", + "format": "float", + "type": "number" + }, + "source": { + "description": "Source and target entity indices. These are indices into the entity array in the document. If this is an attribute relation the target is the index of a measure in the document.", + "format": "int32", + "type": "integer" + }, + "target": { + "format": "int32", + "type": "integer" + }, + "type": { + "description": "Relation type.", + "type": "string" + }, + "typeId": { + "description": "Relation type id.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSaftRelationMention": { + "description": "Mentions of relations in the document. A relation mention is between a mention of the source entity and a mention of the target entity.", + "id": "NlpSaftRelationMention", + "properties": { + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this relation mention." + }, + "phrase": { + "$ref": "NlpSaftPhrase", + "description": "Phrase in the document that indicates the relation mention." + }, + "source": { + "description": "Source and target mention indices. These are indices into the mention arrays for their respective entities. The target is not used for attributes.", + "format": "int32", + "type": "integer" + }, + "sourceInfo": { + "description": "The info of the source models or systems of the relation mention.", + "items": { + "type": "string" + }, + "type": "array" + }, + "target": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSaftSemanticNode": { + "description": "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", + "id": "NlpSaftSemanticNode", + "properties": { + "arc": { + "description": "The arcs from this node. For example, if this node is the root of a subgraph representing a predicate-argument structure, this node will typically refer to the predicate, and there will typically be one arc per argument.", + "items": { + "$ref": "NlpSaftSemanticNodeArc" + }, + "type": "array" + }, + "confidence": { + "description": "Confidence score for the annotation.", + "format": "float", + "type": "number" + }, + "description": { + "description": "Human-readable description of the information in the subgraph represented by this node. This field is only meant for display purposes.", + "type": "string" + }, + "entity": { + "description": "The entity and mention fields specify a unique entity mention referred to by this semantic node.", + "format": "int32", + "type": "integer" + }, + "implicit": { + "description": "Indicates whether the semantic node is not explicit (grounded) in the text (e.g. pro-drop for a text author or an implicit predicate node for interpreting a compound noun), rather than any explicit phrase or text inside the document.", + "type": "boolean" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this node." + }, + "kind": { + "description": "Encodes the kind of this node and, possibly, the entire subgraph rooted at this node. For example, if this node represents a predicate-argument structure in PropBank, then this node's kind will be PROPBANK, its phrase field will be set to correspond to the span of tokens corresponding to the predicate (such as a verb) and it will have one arc per argument. If the kind is MONOTONIC this node corresponds to a semantic graph node, and arcs correspond to semantic graph edges outgoing from the node. If the kind field is not set, then this node is not directly connected to any type system. In such a case, this node may still optionally have a concrete \"payload\" in the form of references to an entity mention, measure or span of tokens (Phrase) in a SAFT document. The values or existence of the kind field need not be identical in any subgraph. For example, even if this node's kind field is not set, it may still be the destination node of an arc from some other node whose kind field is set.", + "enum": [ + "PROPBANK", + "MONOTONIC", + "FRAMENET", + "OPEN_RELATION", + "PATTERN_CLUSTERS", + "OED_WORD_SENSE", + "EVENT", + "NAME", + "TIME_EXPRESSION", + "MOLECULE", + "WORDNET", + "HYPERNYM", + "DIALOGUE", + "ANAPHOR", + "SENSE_ANTECEDENT", + "NOUN_COMPOUND", + "ISTA" + ], + "enumDescriptions": [ + "", + "Semantic node in the monotonic graphical semantics notation.", + "FrameNet: frame + frame elements.", + "Semantic node representing an open relation extraction.", + "Semantic node representing an event derived from patterns learned from news clusters.", + "Word senses denoted by OED lexids.", + "Semantic node representing an event or event mention.", + "Semantic node representing a proper name.", + "Semantic node representing a time expression.", + "", + "Word senses denoted by WordNet Word Sense.", + "Semantic node representing the hypernym of a mention. Each mention can have multiple hypernyms (each stored in its own SemanticNode), and these hypernyms are not necessarily mutually exclusive. go/hyperpedia, go/contextual-hp-design-doc", + "Semantic node representing a dialogue annotation, indicating lines of direct speech, entities who speak these lines, or entire conversations consisting of these lines and speakers. For a detailed reference on the schema for this annotation, see nlp/descartes/dialogue/proto/dialogue.proto.", + "Semantic node representing an anaphoric phrase whose interpretation depends on another phrase with which it is not coreferent and to which it is linked by an arc. E.g., He bought a blue car and she bought [one] too.", + "Semantic node representing a phrase whose sense (not referent) is the antecedent of an anaphoric phrase such as \"one\". E.g., He bought a [blue car] and she bought one too.", + "Representing the semantic relation between the components of a noun compound chosen from a fixed inventory of abstract relations.", + "Semantic node representing a term in the short-text (iSTA) parse of the document." + ], + "type": "string" + }, + "measure": { + "description": "The index of the measure referred to by this semantic node.", + "format": "int32", + "type": "integer" + }, + "mention": { + "format": "int32", + "type": "integer" + }, + "phrase": { + "$ref": "NlpSaftPhrase", + "description": "Phrase (span of text) for this node. This field does not need to be set, but if it is, this node has a textual \"payload\" corresponding to the specified token span. For example, if this node is the root of a subgraph corresponding to a predicate-argument structure, then the phrase field will be set to be the span of tokens corresponding to the predicate (e.g., a verb)." + }, + "type": { + "description": "Arbitrary type string for this semantic node, or for the subgraph rooted at this node. This type string might come from an external resource, type system or ontology that contains a predefined set of types.", + "type": "string" + }, + "value": { + "description": "Arbitrary value string for this semantic node.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftSemanticNodeArc": { + "description": "An arc contained by a source node pointing to a destination node in a directed acyclic graph.", + "id": "NlpSaftSemanticNodeArc", + "properties": { + "description": { + "description": "Human-readable description of this arc's type (for display purposes).", + "type": "string" + }, + "implicit": { + "description": "Indicates the arc is for an implicit semantic relation between nodes, for example one that does not correspond to a grammatical relation in the text.", + "type": "boolean" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Application-specific information about this arc." + }, + "semanticNode": { + "description": "Index of the semantic node pointed to by this arc.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "Arc type (akin to an edge label, or semantic operator).", + "type": "string" + } + }, + "type": "object" + }, + "NlpSaftToken": { + "description": "A document token marks a span of bytes in the document text as a token or word. Next available index: 16.", + "id": "NlpSaftToken", + "properties": { + "breakLevel": { + "enum": [ + "NO_BREAK", + "SPACE_BREAK", + "LINE_BREAK", + "SENTENCE_BREAK", + "PARAGRAPH_BREAK", + "SECTION_BREAK", + "CHAPTER_BREAK" + ], + "enumDescriptions": [ + "No separation between tokens.", + "Tokens separated by space.", + "Tokens separated by line break.", + "Tokens separated by sentence break.", + "Tokens separated by paragraph break.", + "Tokens separated by section break.", + "Tokens separated by chapter break." + ], + "type": "string" + }, + "breakSkippedText": { + "description": "Whether the break skipped over non-tag text (excluding script/style).", + "type": "boolean" + }, + "category": { + "description": "Coarse-grained word category for token. See README.categories for category inventory.", + "type": "string" + }, + "end": { + "format": "int32", + "type": "integer" + }, + "head": { + "description": "Head of this token in the dependency tree: the id of the token which has an arc going to this one. If it is the root token of a sentence, then it is set to -1.", + "format": "int32", + "type": "integer" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Annotation for this token." + }, + "label": { + "description": "Label for dependency relation between this token and its head. See README.labels for label inventory.", + "type": "string" + }, + "lemma": { + "description": "Word lemma. This is only filled if the lemma is different from the word form.", + "type": "string" + }, + "morph": { + "$ref": "NlpSaftMorphology", + "description": "Morphology information." + }, + "scriptCode": { + "description": "A string representation (typically four letters, sometimes longer) of the token's Unicode script code, based on BCP 47/CLDR, capitalized according to ISO 15924. See i18n/identifiers/scriptcode.h for details.", + "type": "string" + }, + "start": { + "description": "[start, end] describe the inclusive byte range of the UTF-8 encoded token in document.text. End gives the index of the last byte, which may be a UTF-8 continuation byte, and the length in bytes is end - start + 1. begin/end options are for goldmine AnnotationsFinder to locate the offsets of saft tokens. Start is inclusive by default and end is marked.", + "format": "int32", + "type": "integer" + }, + "tag": { + "description": "Part-of-speech tag for token. See README.tags for tag inventory.", + "type": "string" + }, + "tagConfidence": { + "description": "Confidence score for the tag prediction -- should be interpreted as a probability estimate that the tag is correct.", + "format": "float", + "type": "number" + }, + "textProperties": { + "format": "uint32", + "type": "integer" + }, + "word": { + "description": "Token word form. This may not be identical to the original. For example, in goldmine annotation we do UTF-8 normalization and punctuation normalization. The punctuation normalization includes inferring the directionality of straight doublequotes -- that is, we map \" to open quote (``) or close quote (''), and sometimes we get it wrong. SAFT processing in other contexts (such as queries in qrewrite) involves different normalizations.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitArticleData": { + "description": "A copy of the text of an article along with references to internal figures and external citations, datasets, etc. Next available ID: 19", + "id": "NlpSciencelitArticleData", + "properties": { + "analyzedText": { + "$ref": "NlxDataSchemaScaleSet", + "description": "All the text in this article, separated into Sections and Paragraphs. See nlp_sciencelit.ScaleSetExtensions for the extensions to ScaleSet used." + }, + "articleId": { + "items": { + "$ref": "NlpSciencelitArticleId" + }, + "type": "array" + }, + "citation": { + "description": "All references from this article (Bibliography).", + "items": { + "$ref": "NlpSciencelitCitationData" + }, + "type": "array" + }, + "earliestPubDate": { + "description": "The result of selecting the earliest date from various metadata (PMC, PubMed Metadata, scholar citations).", + "type": "string" + }, + "metadata": { + "$ref": "NlpSciencelitArticleMetadata" + }, + "nonAbstractWordCount": { + "format": "int64", + "type": "string" + }, + "parsedFrom": { + "description": "Path of the source document from which this was parsed.", + "type": "string" + }, + "pubDate": { + "description": "All dates from the PMC article metadata Year/Mon/Day.", + "items": { + "$ref": "NlpSciencelitPubDate" + }, + "type": "array" + }, + "referencedBlock": { + "description": "All figure captions within this article.", + "items": { + "$ref": "NlpSciencelitReferencedBlock" + }, + "type": "array" + }, + "scholarCitation": { + "$ref": "ScienceCitation", + "description": "Citation for this article." + }, + "scholarDocument": { + "description": "DocJoins with full text article.", + "items": { + "$ref": "CompositeDoc" + }, + "type": "array" + }, + "scholarSignal": { + "$ref": "ScienceIndexSignal", + "description": "May also add the Scholar index signal information:" + }, + "source": { + "description": "Source of this article data (e.g., PubMed, scholar index, other source.).", + "type": "string" + }, + "title": { + "type": "string" + }, + "wordCount": { + "description": "Number of words in the entire article and everywhere outside of abstract sections.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitArticleId": { + "description": "Article IDs associated with an article (e.g., PMID, DOI, PMC).", + "id": "NlpSciencelitArticleId", + "properties": { + "id": { + "type": "string" + }, + "idType": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitArticleMetadata": { + "description": "Next available ID: 20.", + "id": "NlpSciencelitArticleMetadata", + "properties": { + "abstract": { + "$ref": "NlpSciencelitTokenizedText", + "description": "Abstract of article from metadata." + }, + "articleId": { + "items": { + "$ref": "NlpSciencelitArticleId" + }, + "type": "array" + }, + "author": { + "description": "Author of article.", + "items": { + "$ref": "NlpSciencelitAuthor" + }, + "type": "array" + }, + "dataset": { + "description": "Datasets referenced from this article.", + "items": { + "$ref": "NlpSciencelitDataset" + }, + "type": "array" + }, + "dateStr": { + "description": "Most recent date YYYY-MM-DD.", + "type": "string" + }, + "deleted": { + "description": "Citation for flagged for deletion by source.", + "type": "boolean" + }, + "heading": { + "description": "Mesh Terms.", + "items": { + "$ref": "NlpSciencelitMeshHeading" + }, + "type": "array" + }, + "issue": { + "type": "string" + }, + "journal": { + "description": "Title of journal. For books: Journal = Publisher Volume = Collection", + "type": "string" + }, + "language": { + "type": "string" + }, + "lastRevisedDateStr": { + "description": "Last entry revision date YYYY-MM-DD.", + "type": "string" + }, + "metadataSource": { + "items": { + "enum": [ + "UNKNOWN", + "PUBMED", + "PMC", + "SCHOLAR", + "CORD" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "parsedFrom": { + "description": "Source Pubmed/Medline XML file.", + "type": "string" + }, + "pmid": { + "description": "PMID of article (for non-pubmed data, this is the docid).", + "type": "string" + }, + "publicationType": { + "items": { + "$ref": "NlpSciencelitPublicationType" + }, + "type": "array" + }, + "scamRestrictTokens": { + "$ref": "ResearchScamV3Restrict", + "description": "Optional ScaM restrict tokens to be added to all GFVs generated from this article's data." + }, + "title": { + "description": "Title of article.", + "type": "string" + }, + "url": { + "description": "URL(s) for the document. If possible, order by decreasing desirability.", + "items": { + "type": "string" + }, + "type": "array" + }, + "volume": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitAuthor": { + "id": "NlpSciencelitAuthor", + "properties": { + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitCitationData": { + "description": "Next available ID: 8", + "id": "NlpSciencelitCitationData", + "properties": { + "articleId": { + "items": { + "$ref": "NlpSciencelitArticleId" + }, + "type": "array" + }, + "author": { + "items": { + "$ref": "NlpSciencelitAuthor" + }, + "type": "array" + }, + "externalLink": { + "type": "string" + }, + "fullText": { + "type": "string" + }, + "reference": { + "description": "Reference used in text (e.g., PMC rid).", + "type": "string" + }, + "scholarCitation": { + "$ref": "ScienceCitation", + "description": "Scholar citation information from scholar index." + }, + "title": { + "description": "Optional information about the publication.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitDataset": { + "id": "NlpSciencelitDataset", + "properties": { + "association": { + "enum": [ + "UNKNOWN", + "DATABANK", + "CITATION", + "MATCH" + ], + "enumDescriptions": [ + "", + "Associated DataBank marked up by PubMed https://www.nlm.nih.gov/bsd/medline_databank_source.html", + "Scholar citation from the article to the dataset Extracted from ScholarCitations in science_search dataset metadata", + "Dataset likely created together with the article Extracted from MatchingArticle in science_search dataset metadata" + ], + "type": "string" + }, + "datasetMetadata": { + "$ref": "ResearchScienceSearchReconciledMetadata" + } + }, + "type": "object" + }, + "NlpSciencelitMeshHeading": { + "description": "A full Mesh Heading containing a descriptor and optionally multiple qualifiers. https://www.nlm.nih.gov/bsd/licensee/elements_descriptions.html#meshheadinglist", + "id": "NlpSciencelitMeshHeading", + "properties": { + "meshDescriptor": { + "$ref": "NlpSciencelitSubjectHeading" + }, + "meshQualifier": { + "items": { + "$ref": "NlpSciencelitSubjectHeading" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSciencelitPubDate": { + "description": "Pubdate extracted from PMC article metadata.", + "id": "NlpSciencelitPubDate", + "properties": { + "dateStr": { + "type": "string" + }, + "pubType": { + "description": "\"ppub\" for a print ISSN and \"epub\" for an electronic ISSN.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitPublicationType": { + "id": "NlpSciencelitPublicationType", + "properties": { + "name": { + "description": "Display name for the publication type, e.g. \"Journal Article\"", + "type": "string" + }, + "ui": { + "description": "MeSH unique identifiers for publication types, e.g. \"D016428\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitReferencedBlock": { + "description": "Data associate with the ReferencesBlock. Next available ID: 5", + "id": "NlpSciencelitReferencedBlock", + "properties": { + "caption": { + "$ref": "NlpSciencelitTokenizedText", + "description": "Caption tokens - all text in the caption other than the block." + }, + "reference": { + "description": "Reference used from the text to point to this figure.", + "type": "string" + }, + "title": { + "$ref": "NlpSciencelitTokenizedText", + "description": "Title tokens - these come from a block within a caption." + }, + "type": { + "description": "Type of figure (table, figure, etc.).", + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitRetrievalQueryEncodingDebugInfo": { + "id": "NlpSciencelitRetrievalQueryEncodingDebugInfo", + "properties": { + "scamQueryEncoding": { + "$ref": "ResearchScamGenericFeatureVector", + "description": "The query encoding sent to scam for retrieval." + } + }, + "type": "object" + }, + "NlpSciencelitRetrievalSearchResultDebugInfo": { + "description": "Returned by Delver API in SearchResult.debug_info.", + "id": "NlpSciencelitRetrievalSearchResultDebugInfo", + "properties": { + "articleData": { + "$ref": "NlpSciencelitArticleData", + "description": "Only set if RequestOptions.debug_return_article_data is true." + }, + "goldDocid": { + "items": { + "type": "string" + }, + "type": "array" + }, + "goldSnippets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "isGold": { + "description": "Not set by server; only used by evals.", + "type": "boolean" + }, + "rerankingScore": { + "description": "See SearchResultInternal.reranking_score.", + "format": "float", + "type": "number" + }, + "reverseRerankingOrder": { + "description": "See SearchResultInternal.reverse_reranking_order.", + "format": "int32", + "type": "integer" + }, + "sectionIrScore": { + "additionalProperties": { + "format": "float", + "type": "number" + }, + "description": "See SearchResultInternal.section_ir_score.", + "type": "object" + } + }, + "type": "object" + }, + "NlpSciencelitRetrievalSearchResultSetDebugInfo": { + "description": "Optionally returned by Delver API in the response's debug_info field.", + "id": "NlpSciencelitRetrievalSearchResultSetDebugInfo", + "properties": { + "queryEncoding": { + "$ref": "NlpSciencelitRetrievalQueryEncodingDebugInfo" + }, + "scamResponse": { + "$ref": "ResearchScamQueryResponse" + } + }, + "type": "object" + }, + "NlpSciencelitRetrievalSnippetDebugInfo": { + "description": "Returned by Delver API in Snippet.debug_info.", + "id": "NlpSciencelitRetrievalSnippetDebugInfo", + "properties": { + "goldHighlightSentenceIndices": { + "description": "Which highlights have sentence overlap with gold snippets. Not ordered. Might only be set for the first gold highlight.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "highlightIdxToOverlap": { + "additionalProperties": { + "format": "float", + "type": "number" + }, + "description": "Map of highlight index to best overlap with any gold snippet [0,1].", + "type": "object" + }, + "highlightIdxToSentenceOverlap": { + "additionalProperties": { + "format": "float", + "type": "number" + }, + "description": "Map of highlight index to best overlap with any gold sentence [0,1].", + "type": "object" + }, + "isGold": { + "description": "Not set by server; only used by certain evals. Might only be set for the first gold snippet.", + "type": "boolean" + }, + "offsetWithinSection": { + "description": "Byte index of text within the full section text (or within title).", + "format": "int32", + "type": "integer" + }, + "sectionIndex": { + "description": "Section within the document. -1 if title.", + "format": "int32", + "type": "integer" + }, + "sectionIrScore": { + "description": "IR score of the section the snippet is coming from.", + "format": "float", + "type": "number" + }, + "snippetBleuScore": { + "description": "BLEU score for the entire snippet.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "NlpSciencelitSubjectHeading": { + "description": "A subject heading from Mesh", + "id": "NlpSciencelitSubjectHeading", + "properties": { + "id": { + "type": "string" + }, + "majorTopic": { + "type": "boolean" + }, + "term": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSciencelitTokenizedText": { + "description": "Tokenized text with optional original representation.", + "id": "NlpSciencelitTokenizedText", + "properties": { + "text": { + "type": "string" + }, + "token": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingAnnotationEvalData": { + "description": "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", + "id": "NlpSemanticParsingAnnotationEvalData", + "properties": { + "additionalSpans": { + "description": "Additional spans after the first. Empty in all additional_spans.", + "items": { + "$ref": "NlpSemanticParsingAnnotationEvalData" + }, + "type": "array" + }, + "numBytes": { + "format": "int32", + "type": "integer" + }, + "numTokens": { + "format": "int32", + "type": "integer" + }, + "startByte": { + "description": "Byte position within the utterance. Safe to use across different components of the NLU stack as long as said components have access to the same query.", + "format": "int32", + "type": "integer" + }, + "startToken": { + "description": "Token position. This is cleared when normalizing examples for storage because tokenization changes over time. DO NOT use these two fields across components that use different tokenizations.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingAppAnnotation": { + "description": "The App annotator annotates potential app name in the parser's input and outputs the proto with the details about app(s).", + "id": "NlpSemanticParsingAppAnnotation", + "properties": { + "appInfo": { + "description": "The app_info is to store specific information about installed/uninstalled apps annotated by app annotator servlet. It contains app name, package name, confidence, and source.", + "items": { + "$ref": "QualityActionsAppInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingDateTimeAnnotation": { + "description": "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", + "id": "NlpSemanticParsingDateTimeAnnotation", + "properties": { + "dateType": { + "enum": [ + "UNKNOWN_DATE_TYPE", + "TODAY", + "TOMORROW", + "WEEKEND", + "WEEK" + ], + "enumDescriptions": [ + "", + "", + "", + "A whole weekend, from Friday to Monday.", + "A whole week, from Sunday to the next Sunday." + ], + "type": "string" + }, + "endDate": { + "items": { + "type": "string" + }, + "type": "array" + }, + "endTime": { + "items": { + "type": "string" + }, + "type": "array" + }, + "endWeekday": { + "enum": [ + "UNKNOWN_DAY", + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "rawText": { + "type": "string" + }, + "startDate": { + "description": "NOTE: None of these are co-indexed. If the query is 'morning', there could be multiple start_time's, start_date's, end_date's, and end_time's, and they do not correspond to one another in any structured way.", + "items": { + "type": "string" + }, + "type": "array" + }, + "startTime": { + "items": { + "type": "string" + }, + "type": "array" + }, + "startWeekday": { + "enum": [ + "UNKNOWN_DAY", + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "timeType": { + "enum": [ + "UNKNOWN_TIME_TYPE", + "MORNING", + "AFTERNOON", + "EVENING", + "NIGHT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeAbsoluteDateTime": { + "description": "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#: 21.", + "id": "NlpSemanticParsingDatetimeAbsoluteDateTime", + "properties": { + "allowPersonal": { + "description": "allow_personal determines if personal datetimes are allowed to be used in the resolution of the personal datetime. If allow_personal is false and a personal date exists, the entire parse will be thrown out.", + "type": "boolean" + }, + "day": { + "format": "int32", + "type": "integer" + }, + "deleted11": { + "description": "Deprecated fields. Do NOT use.", + "enum": [ + "NONE", + "YEAR", + "YEAR_MONTH", + "YEAR_MONTH_DAY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "holiday": { + "$ref": "NlpSemanticParsingDatetimeHoliday", + "description": "season, quarters and holidays will be soon handled as fetched relative datetimes and will be removed from the AbsoluteDateTime message." + }, + "hour": { + "description": "Time is 24-hour military time.", + "format": "int32", + "type": "integer" + }, + "hourState": { + "enum": [ + "UNAMBIGUOUS", + "AMBIGUOUS", + "CHANGEABLE" + ], + "enumDescriptions": [ + "", + "", + "Changeable means that by itself, the hour should be unambiguous, but it can be changed through context. Eg. \"09:00\" vs \"09:00pm\"." + ], + "type": "string" + }, + "isBc": { + "description": "|is_bc| is true if and only the date is Before Christ/Common Era. If |is_bc| is true, only year is meaningful in this proto, as Gregorian calendar is only meaningful for A.D. date/times.", + "type": "boolean" + }, + "minute": { + "format": "int32", + "type": "integer" + }, + "modifier": { + "description": "For expressions such as \"around 2 pm\".", + "enum": [ + "NO_MOD", + "BEFORE", + "AFTER", + "ON_OR_BEFORE", + "ON_OR_AFTER", + "LESS_THAN", + "MORE_THAN", + "EQUAL_OR_LESS", + "EQUAL_OR_MORE", + "START", + "MID", + "END", + "APPROX", + "ADD", + "SUBTRACT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Identifies additive or subtractive duration quantities as in [10 more min].", + "" + ], + "type": "string" + }, + "month": { + "enum": [ + "NO_MONTH", + "JANUARY", + "FEBRUARY", + "MARCH", + "APRIL", + "MAY", + "JUNE", + "JULY", + "AUGUST", + "SEPTEMBER", + "OCTOBER", + "NOVEMBER", + "DECEMBER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "nonGregorianDate": { + "$ref": "NlpSemanticParsingDatetimeNonGregorianDate", + "description": "If present then: 1) the incoming non-Gregorian datetime will be converted to Gregorian. 2) exported DateTimeProperty fields will contain the converted Gregorian datetime. 3) DateTimeProperty.source_calendar will be set to the calendar-system that was used to specify the non-Gregorian date." + }, + "partialSecond": { + "format": "double", + "type": "number" + }, + "properties": { + "$ref": "NlpSemanticParsingDatetimeDateTimeProperty" + }, + "quarter": { + "enum": [ + "INVALID_QUARTER", + "FIRST_QUARTER", + "SECOND_QUARTER", + "THIRD_QUARTER", + "FOURTH_QUARTER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "rangeModifier": { + "description": "Modifier that return the appropriate subrange. For more information, see the description of RangeOfDateTimeModifier. Example: * *early* 2020 * *early* on March 20th When a point have a range_modifier field, the resolution library will expand the point into the widest range in contains. For example, in the case of a single date point like \"April 22nd, 2022\", the point will be transformed into a range with: - \"begin: April 22nd 2022 00:00:00h\" - \"end: April 22nd 2022 23:59:59h\" The modifier will then be applied over that range.", + "enum": [ + "RANGE_MODIFIER_NONE", + "RANGE_MODIFIER_EARLY", + "RANGE_MODIFIER_MIDDLE", + "RANGE_MODIFIER_LATE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "season": { + "enum": [ + "INVALID_SEASON", + "SPRING", + "SUMMER", + "FALL", + "WINTER", + "EARLY_SPRING", + "MID_SPRING", + "LATE_SPRING", + "EARLY_SUMMER", + "MID_SUMMER", + "LATE_SUMMER", + "EARLY_FALL", + "MID_FALL", + "LATE_FALL", + "EARLY_WINTER", + "MID_WINTER", + "LATE_WINTER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Deprecated values. Do not use.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "second": { + "format": "int32", + "type": "integer" + }, + "timezone": { + "description": "A string representation of the timezone information, see i18n/identifiers/timezones.{h,cc}.", + "type": "string" + }, + "weekday": { + "description": "The |weekday| field is populated to indicate that a day-of-the-week is explicitly mentioned in an absolute date utterance, such as [Tuesday, July 6th, 2021]. Note that when a day-of-the-week is included in other, non-absolute-date expressions, such as [on Tuesday], then this this field is not populated (and in fact an AbsoluteDateTime is not used at all.) Note: This field is populated only when the original expression contains a day-of-the-week. It is not populated by the grounding library to indicate that the date happens to be a Tuesday. Examples: * \"Tuesday, July 6th 2021\" --\u003e the day of the week is part of an absolute date expression, so this field is populated: point { year: 2021 month: JULY day: 6 weekday: TUESDAY } * \"on Tuesday\" --\u003e the day of the week is not part of an absolute date expression, so it is interpreted as a relative datetime: relative { fetched { target { weekday: TUESDAY } } }", + "enum": [ + "NO_DAY_OF_WEEK", + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "WEEKEND" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "Sometimes resembles Monday etc. E.g., \"2nd weekend.\"" + ], + "type": "string" + }, + "year": { + "description": "Date.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeDateTime": { + "description": "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.", + "id": "NlpSemanticParsingDatetimeDateTime", + "properties": { + "compositionElement": { + "$ref": "NlpSemanticParsingDatetimeDateTime", + "description": "For temporal expressions that consist of components with different types, the elements in the composition are nested according to the order they should be grounded/resolved. For example, \"tomorrow at 8am\" has a relative component [tomorrow] and an absolute datetime component [8am] so the annotation will be represented in the following way, indicating that the relative datetime for tomorrow should be grounded first, and then resolve the actual 8am point for that given date: point { hour: 8 hour_state: UNAMBIGUOUS properties { time_format: AM_PM_TOKEN } } composition_element { relative { fetched { ordinal: 1 target { unit: DAY } base_type: CURRENT_DATETIME } } grounding_stage: UNGROUNDED } grounding_stage: UNGROUNDED_COMPOSITION The composition_element field will be populated only when the grounding_stage is set to UNGROUNDED_COMPOSITION and it will hold the nested DateTime value for the rest the compositional expression. More details in: go/datetime-resolution-decoupling." + }, + "deleted7": { + "description": "Deprecated fields. Do NOT use.", + "type": "boolean" + }, + "deleted8": { + "type": "boolean" + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "This field of the DateTime message should not in general be used by outside clients of the grammar. It is intended to be used internally in Aqua for evaluation purposes. The rationale is that token counts depend on the particular tokenization used in Aqua which may be different from the one used by the client and may change from time to time. Outside clients should not create a dependency on the current tokenization used in Aqua." + }, + "groundingStage": { + "enum": [ + "UNKNOWN_GROUNDING_STAGE", + "UNGROUNDED", + "UNGROUNDED_COMPOSITION", + "RESOLVED", + "PARTIALLY_GROUNDED", + "FULLY_GROUNDED" + ], + "enumDescriptions": [ + "Default value of DateTime messages for which it is unknown if they are representing a datetime expression as it was explicitly expressed in a document/user query or if it is representing a complete \u0026 unambiguous datetime value.", + "DateTime messages that are created to represent an explicit datetime expression as it was expressed in a document/user query have their grounding_stage field assigned to UNGROUNDED. Even if the user's query contains an expression referring to a complete \u0026 unambiguous datetime value, it is expected that every interpretation generation parser will still create them having the grounding stage as UNGROUNDED and apply the grounding logic implemented in the DateTimeGrounder class.", + "When a datetime expression expressed in a document/user query is a composition of other simpler datetime expressions (e.g. \"monday morning next week\" is the composition \"next week(monday(morning))\") it is parsed into a nested composition of DateTime messages which have their grounding_stage fields as UNGROUNDED_COMPOSITION except for the inner-most message which will be set to UNGROUNDED. The grounding logic will compose them and ground their compositions cascading the grounding logic in bottom-up.", + "During the grounding process, DateTime messages that were resolved but not completed yet will have their grounding_stage field as RESOLVED. This is mainly for internal handling during the grounding process, it is not expected to have DateTime messages with their grounding_stage as RESOLVED being used in a final interpretation.", + "During the grounding process, it may happen that we have an intermediate DateTime message that has a subcomponent already resolved, in that case its grounding_stage field will be PARTIALLY_GROUNDED. This is mainly for internal handling during the grounding process, it is not expected to have DateTime messages with their grounding_stage as PARTIALLY_GROUNDED being used in a final interpretation.", + "DateTime messages which were fully grounded (composed, resolved and completed) with DateTimeGrounder class will have FULLY_GROUNDED as their grounding stage. Every DateTime message used in a final interpretation is expected to have its grounding_stage field to be FULLY_GROUNDED." + ], + "type": "string" + }, + "point": { + "items": { + "$ref": "NlpSemanticParsingDatetimeAbsoluteDateTime" + }, + "type": "array" + }, + "properties": { + "$ref": "NlpSemanticParsingDatetimeResolutionProperties" + }, + "range": { + "description": "Note that there is a difference between this scenario and an ambiguous date/time expression. The latter is resolved to multiple proto messages, not multiple values within one proto message. To be concrete, consider \"Monday\" in \"Monday football\". It is ambiguous and can be reasonably resolved to \"Monday last week,\" \"Monday this week\" and \"Monday next week.\" The 3 values are represented as 3 separate DateTime messages, not 3 values within one DateTime message.", + "items": { + "$ref": "NlpSemanticParsingDatetimeRange" + }, + "type": "array" + }, + "recurrent": { + "$ref": "NlpSemanticParsingDatetimeRecurrent" + }, + "relative": { + "$ref": "NlpSemanticParsingDatetimeRelativeDateTime" + }, + "span": { + "$ref": "NlpSemanticParsingDatetimeSpan", + "description": "See comments of Span." + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeDateTimeProperty": { + "description": "DateTimeProperty contains various metadata about the DateTime interpretation. Next field: 13", + "id": "NlpSemanticParsingDatetimeDateTimeProperty", + "properties": { + "dateFormat": { + "enum": [ + "DEFAULT_DATE_FORMAT", + "NUM_MONTH_DAY", + "NUM_DAY_MONTH" + ], + "enumDescriptions": [ + "", + "Numerical month followed by day: 5/6 = 6th of May", + "Numerical day followed by month: 5/6 = 5th of June" + ], + "type": "string" + }, + "expandYearToCurrent": { + "type": "boolean" + }, + "hourStatus": { + "enum": [ + "HOUR_NONE", + "HOUR_UNAMBIGUOUS", + "HOUR_AMBIGUOUS_ORIGINAL", + "HOUR_AMBIGUOUS_INFERRED" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "inferredDateValue": { + "enum": [ + "NONE", + "YEAR", + "YEAR_MONTH", + "YEAR_MONTH_DAY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "metadata": { + "description": "Note: this may be changed to a repeated field in the future.", + "enum": [ + "NO_METADATA", + "HOLIDAY", + "ORDINAL", + "WEEKEND", + "DECADE", + "MONTH", + "DAY_OF_WEEK", + "YEAR_NUMBER", + "MONTH_YEAR", + "PERSONAL", + "SEASON", + "WEE_HOURS_INFERRED", + "PROACTIVE_DEFAULT_TIME", + "PROACTIVE_DEFAULT_DATE", + "PROACTIVE_DEFAULT_DATETIME", + "HOUR_NUMBER", + "ASTRONOMICAL_EVENT", + "RECURRENT_UNKNOWN_FREQUENCY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "personalReferenceMetadata": { + "$ref": "CopleyPersonalReferenceMetadata", + "description": "Metadata about the personal reference if the date was generated from a personal reference." + }, + "relationToReference": { + "enum": [ + "UNDEFINED", + "CLOSEST_FUTURE", + "CLOSEST_PAST", + "OTHER_FUTURE", + "OTHER_PAST" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "relative": { + "$ref": "NlpSemanticParsingDatetimeRelativeDateTime", + "description": "Expresses the relative DateTime query that gave rise to these grounded semantics." + }, + "sourceCalendar": { + "enum": [ + "GREGORIAN", + "BUDDHIST", + "CHINESE", + "COPTIC", + "ETHIOPIC", + "HEBREW", + "INDIAN_NATIONAL", + "ISLAMIC", + "JAPANESE", + "PERSIAN", + "ISLAMIC_UMALQURA" + ], + "enumDescriptions": [ + "Selected values from ECalType in third_party/icu/source/i18n/calendar.cpp", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "sourceTypeList": { + "$ref": "CopleySourceTypeList", + "description": "If the annotation was created by using personal data, we record the provenance for that data here." + }, + "timeFormat": { + "items": { + "enum": [ + "DEFAULT", + "SEPARATED_HMS", + "AM_PM_TOKEN", + "WITH_TIMEWORD" + ], + "enumDescriptions": [ + "", + "e.g. \"7:15\"", + "e.g. \"7pm\"", + "e.g. \"7 o'clock\"" + ], + "type": "string" + }, + "type": "array" + }, + "timezoneIsExplicit": { + "description": "True iff the timezone value in AbsoluteDateTime is explicit in the annotated text or not. In the following examples the timezone is explicit: Query Timezone -------------------------- -------- 10pst Pacific Standard Time 10 utc UTC 10 sydney time Australia Eastern Time", + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeDuration": { + "description": "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.", + "id": "NlpSemanticParsingDatetimeDuration", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "This field of the Duration message should not in general be used by outside clients of the grammar. It is intended to be used internally in Aqua for evaluation purposes. The rationale is that token counts depend on the particular tokenization used in Aqua which may be different from the one used by the client and may change from time to time. Outside clients should not create a dependency on the current tokenization used in Aqua." + }, + "modifier": { + "description": "For expressions such as \"about 2 hrs\".", + "enum": [ + "NO_MOD", + "BEFORE", + "AFTER", + "ON_OR_BEFORE", + "ON_OR_AFTER", + "LESS_THAN", + "MORE_THAN", + "EQUAL_OR_LESS", + "EQUAL_OR_MORE", + "START", + "MID", + "END", + "APPROX", + "ADD", + "SUBTRACT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Identifies additive or subtractive duration quantities as in [10 more min].", + "" + ], + "type": "string" + }, + "quantity": { + "$ref": "NlpSemanticParsingDatetimeQuantity" + }, + "span": { + "$ref": "NlpSemanticParsingDatetimeSpan", + "description": "See comments of Span." + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeEvent": { + "description": "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.", + "id": "NlpSemanticParsingDatetimeEvent", + "properties": { + "moonEvent": { + "$ref": "NlpSemanticParsingDatetimeMoonEventInfo" + }, + "sunEvent": { + "enum": [ + "INVALID_SUN_EVENT", + "SUNRISE", + "SUNSET", + "DAWN", + "DUSK" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": { + "enum": [ + "INVALID_EVENT", + "ASTRONOMICAL_EVENT" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeFetchedRelativeDateTime": { + "description": "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", + "id": "NlpSemanticParsingDatetimeFetchedRelativeDateTime", + "properties": { + "baseType": { + "enum": [ + "UNKNOWN", + "CURRENT_DATETIME", + "EXPLICIT_PRONOUN" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "count": { + "description": "How many to fetch (e.g. [next weekend] vs. [next two weeks])", + "format": "uint32", + "type": "integer" + }, + "metadata": { + "description": "Can be used to tag relative datetime expressions with metadata information in the grammar.", + "enum": [ + "NO_METADATA", + "HOLIDAY", + "ORDINAL", + "WEEKEND", + "DECADE", + "MONTH", + "DAY_OF_WEEK", + "YEAR_NUMBER", + "MONTH_YEAR", + "PERSONAL", + "SEASON", + "WEE_HOURS_INFERRED", + "PROACTIVE_DEFAULT_TIME", + "PROACTIVE_DEFAULT_DATE", + "PROACTIVE_DEFAULT_DATETIME", + "HOUR_NUMBER", + "ASTRONOMICAL_EVENT", + "RECURRENT_UNKNOWN_FREQUENCY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "ordinal": { + "description": "Encodes expressions like next (+1), last (-1), after next (+2), this (0).", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "range": { + "$ref": "NlpSemanticParsingDatetimeRange", + "description": "The restriction range on which fetching is operated, e.g., \"April\" in \"first Tuesday in/of April.\" If this field is missing, the operation is done relative to the base_type (or if not given, to the query's reference datetime). When the fetching operation is performed relative to a reference time point, positive ordinal values represent upcoming instances from the reference point, negative ordinal values represent previous instances from the reference point. Similarly, ordinal=0 represents a reference to the \"current instance\", which may vary depending on the target. E.g. \"this week\" is simply defined as the week range that contains the current reference time point, but \"this \" can be ambiguous and its resolution will depend on language/locale conventions (\"this monday\" in some languages refers to the closest upcoming instance of Monday, while in other languages it represents the Monday instance within the current week)." + }, + "rangeModifier": { + "description": "Modifier that return the appropriate subrange. For more information, see the description of RangeOfDateTimeModifier. Example: * *early* next week * *late* next Monday", + "enum": [ + "RANGE_MODIFIER_NONE", + "RANGE_MODIFIER_EARLY", + "RANGE_MODIFIER_MIDDLE", + "RANGE_MODIFIER_LATE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "relativeRange": { + "$ref": "NlpSemanticParsingDatetimeResolutionProperties", + "description": "If the underlying range comes from a relative datetime expression, encode the expression here instead." + }, + "target": { + "$ref": "NlpSemanticParsingDatetimeTargetToFetch", + "description": "The target to be fetched. This could be a named day-of-week or month (e.g., \"Monday\", \"April\"), or a date/time unit (e.g., \"day\", \"week\", \"month\")." + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeHoliday": { + "description": "List of holidays that are not fixed absolute or relative dates on the Gregorian calendar.", + "id": "NlpSemanticParsingDatetimeHoliday", + "properties": { + "nonFixed": { + "description": "There are 3 types of holidays supported by the datetime subgrammar: 1) NonFixedHolidayEnum: e.g., \"easter\", \"chinese new year\". 2) FetchedRelativeDateTime: e.g., \"Thanksgiving\" =\u003e [4th Thursday of November] 3) HolidayByMonthDay: e.g., \"xmas\" =\u003e [December 25] Each holiday of the first type is resolved by a C++ function; the 2nd and 3rd type of holidays are mapped to AbsoluteDateTime and FetchedRelativeDateTime, respectively, in grammar and are not needed to be represented in proto.", + "enum": [ + "UNKNOWN_NON_FIXED_HOLIDAY", + "EASTER", + "CHINESE_NEW_YEAR", + "ORTHODOX_EASTER", + "MARDI_GRAS", + "ASH_WEDNESDAY", + "GOOD_FRIDAY", + "EASTER_MONDAY", + "PENTECOST", + "CORPUS_CRISTI", + "WHIT_MONDAY", + "PALM_SUNDAY", + "MAUNDY_THURSDAY", + "ASCENSION_DAY", + "GREAT_PRAYER_DAY", + "HOLY_SATURDAY", + "PENTECOST_EVE", + "MOTHERING_SUNDAY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeMoonEventInfo": { + "id": "NlpSemanticParsingDatetimeMoonEventInfo", + "properties": { + "phase": { + "enum": [ + "UNKNOWN_MOON_PHASE", + "NEW_MOON", + "WAXING_CRESCENT", + "FIRST_QUARTER_PHASE", + "WAXING_GIBBOUS", + "FULL_MOON", + "WANING_GIBBOUS", + "LAST_QUARTER_PHASE", + "WANING_CRESCENT" + ], + "enumDescriptions": [ + "Northern hemisphere | Southern hemisphere X | X", + "🌑 | 🌑", + "🌒 | 🌘", + "🌓 | 🌗", + "🌔 | 🌖", + "🌕 | 🌕", + "🌖 | 🌔", + "🌗 | 🌓", + "🌘 | 🌒" + ], + "type": "string" + }, + "type": { + "enum": [ + "INVALID_MOON_EVENT", + "MOONRISE", + "MOONSET" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeNonGregorianDate": { + "description": "Non-Gregorian dates are similar to AbsoluteDateTime, but use non-Gregorian calendars.", + "id": "NlpSemanticParsingDatetimeNonGregorianDate", + "properties": { + "chineseMonth": { + "enum": [ + "UNKNOWN_CHINESE_MONTH", + "FIRST_MONTH", + "SECOND_MONTH", + "THIRD_MONTH", + "FOURTH_MONTH", + "FIFTH_MONTH", + "SIXTH_MONTH", + "SEVENTH_MONTH", + "EIGHTH_MONTH", + "NINTH_MONTH", + "TENTH_MONTH", + "ELEVENTH_MONTH", + "TWELFTH_MONTH" + ], + "enumDescriptions": [ + "", + "Note1: month names in the enum match ChineseCalendar from ICU libraries. Note2: Chinese calendar has leap months called \"閏月\" (Rùnyuè) which are added every 33 months. It is normally referred with the same name as the previous month by adding the prefix \"閏\", e.g.: \"閏六月\". In ICU library leap months are numbered the same as the month they follow, similarly no leap months are added to the enum below. More details on the different names of the chinese calendar months: https://en.wikipedia.org/wiki/Chinese_calendar#Names_of_months \"一月\", also traditionally \"正月\" (Zhēngyuè): Start Month.", + "\"二月\", also traditionally \"杏月\" (Xìngyuè): Apricot Month.", + "\"三月\", also traditionally \"桃月\" (Táoyuè): Peach Month.", + "\"四月\", also traditionally \"槐月\" (Huáiyuè): Locust Tree Month.", + "\"五月\", also traditionally \"蒲月\" (Púyuè): Sweet Sedge Month.", + "\"六月\", also traditionally \"荷月\" (Héyuè): Lotus Month.", + "\"七月\", also traditionally “蘭月” (Lányuè): Orchid Month.", + "\"八月\", also traditionally \"桂月\" (Guìyuè): Osmanthus Month.", + "\"九月\", also traditionally \"菊月\" (Júyuè): Chrysanthemum Month.", + "\"十月\", also traditionally \"阳月\" (Yángyuè): Yang Month.", + "\"十一月\", also traditionally \"冬月\" (Dōngyuè): Winter Month.", + "\"十二月\", also traditionally \"腊月\" (Làyuè): Preserved Month." + ], + "type": "string" + }, + "day": { + "description": "The day is the offset within the month, same as in Gregorian calendars.", + "format": "int32", + "type": "integer" + }, + "hebrewMonth": { + "enum": [ + "UNKNOWN_HEBREW_MONTH", + "TISHRI", + "HESHVAN", + "KISLEV", + "TEVET", + "SHEVAT", + "ADAR_1", + "ADAR", + "NISAN", + "IYAR", + "SIVAN", + "TAMUZ", + "AV", + "ELUL" + ], + "enumDescriptions": [ + "", + "Note: month names match HebrewCalendar from ICU libraries.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "islamicMonth": { + "enum": [ + "UNKNOWN_ISLAMIC_MONTH", + "MUHARRAM", + "SAFAR", + "RABI_AL_AWWAL", + "RABI_AL_THANI", + "JUMADA_AL_AWWAL", + "JUMADA_AL_THANI", + "RAJAB", + "SHABAN", + "RAMADAN", + "SHAWWAL", + "ZUL_QAADAH", + "ZUL_HIJJAH" + ], + "enumDescriptions": [ + "", + "Note: month names do *not* match ICU libraries.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "year": { + "description": "The year is relative to the calendar (e.g. 5777 for Hebrew calendar).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeQuantity": { + "id": "NlpSemanticParsingDatetimeQuantity", + "properties": { + "modifier": { + "description": "For internal use - DateTime subgrammar users should look at Duration.modifier. = MORE in [3 more days].", + "enum": [ + "NO_MOD", + "BEFORE", + "AFTER", + "ON_OR_BEFORE", + "ON_OR_AFTER", + "LESS_THAN", + "MORE_THAN", + "EQUAL_OR_LESS", + "EQUAL_OR_MORE", + "START", + "MID", + "END", + "APPROX", + "ADD", + "SUBTRACT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Identifies additive or subtractive duration quantities as in [10 more min].", + "" + ], + "type": "string" + }, + "number": { + "description": "= 3 in \"3 milliseconds\".", + "format": "double", + "type": "number" + }, + "numberSpan": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "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": { + "description": "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.", + "items": { + "$ref": "NlpSemanticParsingDatetimeQuantity" + }, + "type": "array" + }, + "unit": { + "description": "= MILLISECOND in \"3 milliseconds\".", + "enum": [ + "NO_UNIT", + "NANOSECOND", + "MICROSECOND", + "MILLISECOND", + "SECOND", + "MINUTE", + "HOUR", + "DAY", + "WEEK", + "TEN_DAY", + "HALF_MONTH", + "MONTH", + "QUARTER", + "HALF_YEAR", + "YEAR", + "DECADE", + "CENTURY", + "MILLENNIUM", + "NIGHT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeRange": { + "description": "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.", + "id": "NlpSemanticParsingDatetimeRange", + "properties": { + "begin": { + "$ref": "NlpSemanticParsingDatetimeAbsoluteDateTime", + "description": "Deprecated fields. Do NOT use." + }, + "beginRelative": { + "$ref": "NlpSemanticParsingDatetimeRelativeDateTime" + }, + "duration": { + "$ref": "NlpSemanticParsingDatetimeQuantity", + "description": "if |duration| is set, one field from start or finish must be populated, but not both. |exclusive| value is still relevant to decide if the endpoints of the range are included in the range (value defined in the start/finish fields as well as the datetime value resulting of offseting the duration over the given range endpoint)." + }, + "end": { + "$ref": "NlpSemanticParsingDatetimeAbsoluteDateTime" + }, + "endRelative": { + "$ref": "NlpSemanticParsingDatetimeRelativeDateTime" + }, + "exclusive": { + "type": "boolean" + }, + "finish": { + "$ref": "NlpSemanticParsingDatetimeDateTime" + }, + "fuzzyRange": { + "enum": [ + "NO_FUZZY_RANGE", + "FUZZY_RANGE_MORNING", + "FUZZY_RANGE_AFTERNOON", + "FUZZY_RANGE_EVENING", + "FUZZY_RANGE_NIGHT", + "FUZZY_RANGE_EVE", + "FUZZY_RANGE_DAYTIME", + "FUZZY_RANGE_DAWN", + "FUZZY_RANGE_DUSK", + "FUZZY_RANGE_NIGHTTIME", + "FUZZY_RANGE_EARLY_MORNING", + "FUZZY_RANGE_MID_MORNING", + "FUZZY_RANGE_LATE_MORNING", + "FUZZY_RANGE_EARLY_AFTERNOON", + "FUZZY_RANGE_MID_AFTERNOON", + "FUZZY_RANGE_LATE_AFTERNOON", + "FUZZY_RANGE_EARLY_EVENING", + "FUZZY_RANGE_MID_EVENING", + "FUZZY_RANGE_LATE_EVENING", + "FUZZY_RANGE_LATE_NIGHT", + "DELETED_11" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Deprecated values. Do not use.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "metadata": { + "enum": [ + "NO_METADATA", + "HOLIDAY", + "ORDINAL", + "WEEKEND", + "DECADE", + "MONTH", + "DAY_OF_WEEK", + "YEAR_NUMBER", + "MONTH_YEAR", + "PERSONAL", + "SEASON", + "WEE_HOURS_INFERRED", + "PROACTIVE_DEFAULT_TIME", + "PROACTIVE_DEFAULT_DATE", + "PROACTIVE_DEFAULT_DATETIME", + "HOUR_NUMBER", + "ASTRONOMICAL_EVENT", + "RECURRENT_UNKNOWN_FREQUENCY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "properties": { + "$ref": "NlpSemanticParsingDatetimeResolutionProperties" + }, + "rangeModifier": { + "description": "Modifier that return the appropriate subrange. For more information, see the description of RangeOfDateTimeModifier. Example: * *late* morning", + "enum": [ + "RANGE_MODIFIER_NONE", + "RANGE_MODIFIER_EARLY", + "RANGE_MODIFIER_MIDDLE", + "RANGE_MODIFIER_LATE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "start": { + "$ref": "NlpSemanticParsingDatetimeDateTime", + "description": "|start| and |finish| are inclusive unless exclusive field is true. the values in start and finish can be an absolute point, a relative or another range. Recurrences and repeated values are not expected/allowed." + }, + "symbolicValue": { + "description": "The field is set if the range is the result of resolving/grounding a relative datetime expression referring to a part of the day. E.g. \"morning\", \"afternoon\", \"evening\", \"night\", \"tonight\", etc.", + "enum": [ + "NO_SYMBOLIC_DATETIME", + "SYMBOLIC_MORNING", + "SYMBOLIC_AFTERNOON", + "SYMBOLIC_EVENING", + "SYMBOLIC_NIGHT", + "DELETED_5" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Deprecated fields. Do not use." + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeRecurrent": { + "description": "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.", + "id": "NlpSemanticParsingDatetimeRecurrent", + "properties": { + "countRestriction": { + "description": "How many times it repeats.", + "format": "int32", + "type": "integer" + }, + "exception": { + "description": "An arbitrary exception to the recurrence. This can be an absolute point, a relative, a range or a recurrent expression. Examples: * \"every Tuesday except for July 13th 2021\" * \"every Tuesday except for July 13th and November 2nd\" * \"every second Monday except during the summer\" * \"everyday except Thursdays\" * \"every Friday, except from October 1st to October 22nd\"", + "items": { + "$ref": "NlpSemanticParsingDatetimeDateTime" + }, + "type": "array" + }, + "frequency": { + "description": "|frequency| is used to represent the frequency of the recurrence over a given recurrent period. E.g. \"twice a week\", \"once a month\". An unknown frequency is represented with 0, as in just \"repeating\".", + "format": "uint32", + "type": "integer" + }, + "metadata": { + "enum": [ + "NO_METADATA", + "HOLIDAY", + "ORDINAL", + "WEEKEND", + "DECADE", + "MONTH", + "DAY_OF_WEEK", + "YEAR_NUMBER", + "MONTH_YEAR", + "PERSONAL", + "SEASON", + "WEE_HOURS_INFERRED", + "PROACTIVE_DEFAULT_TIME", + "PROACTIVE_DEFAULT_DATE", + "PROACTIVE_DEFAULT_DATETIME", + "HOUR_NUMBER", + "ASTRONOMICAL_EVENT", + "RECURRENT_UNKNOWN_FREQUENCY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "period": { + "description": "|period| and |unit| specify how often |start_point| or |start_range| repeats. |period| should not be 0.", + "format": "uint32", + "type": "integer" + }, + "rangeRestriction": { + "$ref": "NlpSemanticParsingDatetimeRange" + }, + "relativeRangeRestriction": { + "$ref": "NlpSemanticParsingDatetimeRelativeDateTime" + }, + "restriction": { + "$ref": "NlpSemanticParsingDatetimeDateTime", + "description": "A recurrent expression can be restricted by either a datetime |restriction| or |count_restriction| below. The restriction datetime can be expressed as an explicit range a relative datetime expression, a datetime point or a recurrent datetime. E.g. \"every monday [next month]\", \"every second tuesday [this year]\", etc. If |period| is \u003e 0 and |restriction| is not set, repeat indefinitely. Note that this can support recurrent expressions as |restriction| as well. For example in the expression \"every monday on [every other month]\" where [every other month] is a restriction expressed as a recurrent datetime." + }, + "start": { + "description": "|start| is used to represent the starting points, ranges or relative datetims in a recurrent expression, for example: \"every morning\", (range) \"everyday at 5 pm\", (point) \"every second monday\" (relative) |start| should never contain a recurrent element.", + "items": { + "$ref": "NlpSemanticParsingDatetimeDateTime" + }, + "type": "array" + }, + "startPoint": { + "description": "DO NOT USE: deprecated fields soon to be removed.", + "items": { + "$ref": "NlpSemanticParsingDatetimeAbsoluteDateTime" + }, + "type": "array" + }, + "startRange": { + "items": { + "$ref": "NlpSemanticParsingDatetimeRange" + }, + "type": "array" + }, + "startRelative": { + "items": { + "$ref": "NlpSemanticParsingDatetimeRelativeDateTime" + }, + "type": "array" + }, + "target": { + "$ref": "NlpSemanticParsingDatetimeTargetToFetch", + "description": "The target to be fetched. This could be a named day-of-week or month (e.g., \"Monday\", \"April\"), or a date/time unit (e.g., \"day\", \"week\", \"month\")." + }, + "timeInterval": { + "$ref": "NlpSemanticParsingDatetimeQuantity", + "description": "|time_interval| is a time amount or duration, used to described the time interval between the instances of the recurrence. (e.g. \"every 3 hours\", \"every 35 minutes\", \"every 2 months and 15 days\", etc)" + }, + "unit": { + "enum": [ + "NO_UNIT", + "NANOSECOND", + "MICROSECOND", + "MILLISECOND", + "SECOND", + "MINUTE", + "HOUR", + "DAY", + "WEEK", + "TEN_DAY", + "HALF_MONTH", + "MONTH", + "QUARTER", + "HALF_YEAR", + "YEAR", + "DECADE", + "CENTURY", + "MILLENNIUM", + "NIGHT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeRelativeDateTime": { + "description": "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", + "id": "NlpSemanticParsingDatetimeRelativeDateTime", + "properties": { + "fetched": { + "$ref": "NlpSemanticParsingDatetimeFetchedRelativeDateTime" + }, + "metadata": { + "enum": [ + "NO_METADATA", + "HOLIDAY", + "ORDINAL", + "WEEKEND", + "DECADE", + "MONTH", + "DAY_OF_WEEK", + "YEAR_NUMBER", + "MONTH_YEAR", + "PERSONAL", + "SEASON", + "WEE_HOURS_INFERRED", + "PROACTIVE_DEFAULT_TIME", + "PROACTIVE_DEFAULT_DATE", + "PROACTIVE_DEFAULT_DATETIME", + "HOUR_NUMBER", + "ASTRONOMICAL_EVENT", + "RECURRENT_UNKNOWN_FREQUENCY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "modifier": { + "description": "When a relative datetime which resolves into a range is being used as the endpoint of a range (begin_relative/end_relative), its begin/end will be taken accordingly unless this modifier indicates the opposite: begin_relative with relative range and modifier == AFTER means that its end will be taken as the beginning of the resulting range. Similarly, end_relative with a relative range and modifier == BEFORE means that its begin will be taken as the end of the resulting range. E.g. \"after next month\" will be a range with a begin_relative that will take the end of \"next month\" as its starting point (exclusive). values other than AFTER and BEFORE in the specific conditions explained here will be ignored and have no effect in the resolution of RelativeDateTimes.", + "enum": [ + "NO_MOD", + "BEFORE", + "AFTER", + "ON_OR_BEFORE", + "ON_OR_AFTER", + "LESS_THAN", + "MORE_THAN", + "EQUAL_OR_LESS", + "EQUAL_OR_MORE", + "START", + "MID", + "END", + "APPROX", + "ADD", + "SUBTRACT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Identifies additive or subtractive duration quantities as in [10 more min].", + "" + ], + "type": "string" + }, + "shifted": { + "$ref": "NlpSemanticParsingDatetimeShiftedRelativeDateTime" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeResolutionProperties": { + "description": "Encapsulates metadata about the query span resolved here.", + "id": "NlpSemanticParsingDatetimeResolutionProperties", + "properties": { + "meridiem": { + "description": "Simple enum container for exporting meridiem mentions.", + "enum": [ + "INVALID_MERIDIEM", + "AM", + "PM" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "metadata": { + "description": "Encodes whether the datetime was phrased in a specific way, see enum above.", + "enum": [ + "NO_METADATA", + "HOLIDAY", + "ORDINAL", + "WEEKEND", + "DECADE", + "MONTH", + "DAY_OF_WEEK", + "YEAR_NUMBER", + "MONTH_YEAR", + "PERSONAL", + "SEASON", + "WEE_HOURS_INFERRED", + "PROACTIVE_DEFAULT_TIME", + "PROACTIVE_DEFAULT_DATE", + "PROACTIVE_DEFAULT_DATETIME", + "HOUR_NUMBER", + "ASTRONOMICAL_EVENT", + "RECURRENT_UNKNOWN_FREQUENCY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "relative": { + "$ref": "NlpSemanticParsingDatetimeRelativeDateTime", + "description": "Expresses the relative DateTime query that gave rise to these grounded semantics." + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeShiftedRelativeDateTime": { + "id": "NlpSemanticParsingDatetimeShiftedRelativeDateTime", + "properties": { + "base": { + "$ref": "NlpSemanticParsingDatetimeAbsoluteDateTime", + "description": "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": { + "enum": [ + "UNKNOWN", + "CURRENT_DATETIME", + "EXPLICIT_PRONOUN" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "metadata": { + "description": "Can be used to tag relative datetime expressions with metadata information in the grammar.", + "enum": [ + "NO_METADATA", + "HOLIDAY", + "ORDINAL", + "WEEKEND", + "DECADE", + "MONTH", + "DAY_OF_WEEK", + "YEAR_NUMBER", + "MONTH_YEAR", + "PERSONAL", + "SEASON", + "WEE_HOURS_INFERRED", + "PROACTIVE_DEFAULT_TIME", + "PROACTIVE_DEFAULT_DATE", + "PROACTIVE_DEFAULT_DATETIME", + "HOUR_NUMBER", + "ASTRONOMICAL_EVENT", + "RECURRENT_UNKNOWN_FREQUENCY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "relativeBase": { + "$ref": "NlpSemanticParsingDatetimeResolutionProperties" + }, + "shiftAmount": { + "$ref": "NlpSemanticParsingDatetimeQuantity" + }, + "shiftPast": { + "description": "If true, shifting to the past; if false, shifting to the future.", + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeSpan": { + "description": "The byte offset and text of a span.", + "id": "NlpSemanticParsingDatetimeSpan", + "properties": { + "numBytes": { + "format": "int32", + "type": "integer" + }, + "startByte": { + "description": "0-based start byte offset of the span.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "The text of the span: a substring of ParserInput's canonical_input.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeTargetToFetch": { + "description": "Next field: 9", + "id": "NlpSemanticParsingDatetimeTargetToFetch", + "properties": { + "event": { + "$ref": "NlpSemanticParsingDatetimeEvent" + }, + "fuzzyRange": { + "enum": [ + "NO_FUZZY_RANGE", + "FUZZY_RANGE_MORNING", + "FUZZY_RANGE_AFTERNOON", + "FUZZY_RANGE_EVENING", + "FUZZY_RANGE_NIGHT", + "FUZZY_RANGE_EVE", + "FUZZY_RANGE_DAYTIME", + "FUZZY_RANGE_DAWN", + "FUZZY_RANGE_DUSK", + "FUZZY_RANGE_NIGHTTIME", + "FUZZY_RANGE_EARLY_MORNING", + "FUZZY_RANGE_MID_MORNING", + "FUZZY_RANGE_LATE_MORNING", + "FUZZY_RANGE_EARLY_AFTERNOON", + "FUZZY_RANGE_MID_AFTERNOON", + "FUZZY_RANGE_LATE_AFTERNOON", + "FUZZY_RANGE_EARLY_EVENING", + "FUZZY_RANGE_MID_EVENING", + "FUZZY_RANGE_LATE_EVENING", + "FUZZY_RANGE_LATE_NIGHT", + "DELETED_11" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Deprecated values. Do not use.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "month": { + "enum": [ + "NO_MONTH", + "JANUARY", + "FEBRUARY", + "MARCH", + "APRIL", + "MAY", + "JUNE", + "JULY", + "AUGUST", + "SEPTEMBER", + "OCTOBER", + "NOVEMBER", + "DECEMBER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "quarter": { + "enum": [ + "INVALID_QUARTER", + "FIRST_QUARTER", + "SECOND_QUARTER", + "THIRD_QUARTER", + "FOURTH_QUARTER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "reference": { + "enum": [ + "INVALID", + "CURRENT_DATETIME", + "CURRENT_TIME", + "CURRENT_DATE", + "RECENT", + "LATEST", + "NEXT_DAY", + "PREVIOUS_DAY", + "DAY_AFTER_NEXT", + "DAY_BEFORE_PREVIOUS" + ], + "enumDescriptions": [ + "", + "Returns a full described value for \"now\". It populates year, month, day, hour, minute and seconds.", + "Returns a described value for the current time without the date component. It populates hour, minute and seconds (no DATE elements).", + "Returns a described value for \"today\". It populates year, month and day (no TIME elements).", + "This value is used for references to the fuzzy range of recent time or to subset of the last elements of a list sorted by their temporal relation.", + "This value is used for references to the last element of a list sorted by their temporal relation.", + "Returns a described value for \"tomorrow\". It populates year, month and day (no TIME elements).", + "Returns a described value for \"yesterday\". It populates year, month and day (no TIME elements).", + "Returns a described value for \"the day after tomorrow\". Note: this is one word in many languages (e.g. \"übermorgen\", \"明後日\") It populates year, month and day (no TIME elements).", + "Returns a described value for \"the day before yesterday\". Note: this is one word in many languages (e.g. \"anteayer\", \"προχθές\") It populates year, month and day (no TIME elements)." + ], + "type": "string" + }, + "season": { + "enum": [ + "INVALID_SEASON", + "SPRING", + "SUMMER", + "FALL", + "WINTER", + "EARLY_SPRING", + "MID_SPRING", + "LATE_SPRING", + "EARLY_SUMMER", + "MID_SUMMER", + "LATE_SUMMER", + "EARLY_FALL", + "MID_FALL", + "LATE_FALL", + "EARLY_WINTER", + "MID_WINTER", + "LATE_WINTER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Deprecated values. Do not use.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "unit": { + "description": "Unnamed target: \"week\", \"month\" etc. E.g., \"1st week of April\".", + "enum": [ + "NO_UNIT", + "NANOSECOND", + "MICROSECOND", + "MILLISECOND", + "SECOND", + "MINUTE", + "HOUR", + "DAY", + "WEEK", + "TEN_DAY", + "HALF_MONTH", + "MONTH", + "QUARTER", + "HALF_YEAR", + "YEAR", + "DECADE", + "CENTURY", + "MILLENNIUM", + "NIGHT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "weekday": { + "description": "Named target: only one of the following is expected.", + "items": { + "enum": [ + "NO_DAY_OF_WEEK", + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "WEEKEND" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "Sometimes resembles Monday etc. E.g., \"2nd weekend.\"" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingDatetimeTimeZone": { + "id": "NlpSemanticParsingDatetimeTimeZone", + "properties": { + "timezone": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingEntitySourceData": { + "id": "NlpSemanticParsingEntitySourceData", + "properties": { + "entitySources": { + "description": "Indicates backends from which parts of an entity were retrieved.", + "items": { + "enum": [ + "UNKNOWN_ENTITY_SOURCE", + "QREF_PERSONAL_WALDREF", + "QREF_PERSONAL_TOPIC_SERVER", + "MYENTITIES_MODEL_T" + ], + "enumDescriptions": [ + "", + "Indicates that an entity was retrieved from personal waldref.", + "Indicates that metadata from personal topic server was attached to an entity.", + "Indicates that an entity was retrieved from Model T." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingExpressionStatus": { + "description": "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.", + "id": "NlpSemanticParsingExpressionStatus", + "properties": { + "status": { + "enum": [ + "EXPRESSION_STATUS_UNSPECIFIED", + "PARTIAL", + "COMPLETE", + "LIKELY_COMPLETE" + ], + "enumDescriptions": [ + "Expression state is unspecified.", + "The user is in the process of expressing the intent/argument and has only partially communicated the semantics. As a result, the semantics are partially expressed.", + "The semantics have been completely expressed and the user is unlikely to modify it without further prompting.", + "The perception models believe it is likely, but not certain that the user has finished expressing their thought. This signal as a lower latency and lower precision than the COMPLETE status." + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalAmenities": { + "description": "A list of amenity constraints. There is an implicit AND relationship between the different constraints.", + "id": "NlpSemanticParsingLocalAmenities", + "properties": { + "type": { + "description": "Applied amenity constraints. Nothing should be inferred about the ordering of the values in this field.", + "items": { + "enum": [ + "UNKNOWN_TYPE", + "AIR_CONDITIONED", + "BAR", + "BEACH", + "BREAKFAST", + "FREE_BREAKFAST", + "FREE_PARKING", + "FREE_WIFI", + "GYM", + "HEATED_POOL", + "HOT_TUB", + "IN_ROOM_HOT_TUB", + "INDOOR_POOL", + "KID_FRIENDLY", + "NON_SMOKING", + "PET_FRIENDLY", + "POOL", + "RESTAURANT", + "SMOKING", + "TRUCK_PARKING", + "WIFI", + "DEAL", + "LAST_MINUTE", + "ALL_INCLUSIVE", + "PARKING", + "SPA", + "FREE_PET_FRIENDLY", + "WIFI_IN_ROOM", + "ALL_INCLUSIVE_ONLY", + "ROOM_SERVICE", + "OUTDOOR_POOL", + "HAS_24_HOUR_FRONT_DESK", + "FREE_GYM", + "MASSAGE", + "SAUNA", + "KIDS_ACTIVITIES", + "KIDS_CLUB", + "SUITE", + "BALCONY", + "BATHTUB", + "HOUSEKEEPING", + "DAILY_HOUSEKEEPING", + "DOG_FRIENDLY", + "THERMAL_POOL", + "TREADMILL", + "PRIVATE_BEACH", + "VIEW_OF_CITY", + "VIEW_OF_GARDEN", + "VIEW_OF_LAKE", + "VIEW_OF_LANDMARK", + "VIEW_OF_OCEAN", + "VIEW_OF_POOL", + "VIEW_OF_VALLEY", + "CASINO", + "KITCHEN", + "AVAILABLE_FOR_ESSENTIAL_WORKERS", + "FREE_CANCELLATION" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Breakfast is provided without an extra fee.", + "Parking is provided without an extra fee.", + "Wifi is provided without an extra fee.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "All inclusive is available as a meal option.", + "", + "", + "Pets are accepted without an extra fee.", + "Wifi service is available in the rooms.", + "All inclusive is the only meal option.", + "", + "", + "", + "Gym is available without an extra fee.", + "", + "", + "", + "", + "", + "", + "", + "", + "Housekeeping services are provided daily.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalBasicLocation": { + "description": "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).", + "id": "NlpSemanticParsingLocalBasicLocation", + "properties": { + "element": { + "items": { + "$ref": "NlpSemanticParsingLocalLocationElement" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalBusinessType": { + "description": "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", + "id": "NlpSemanticParsingLocalBusinessType", + "properties": { + "airline": { + "type": "boolean" + }, + "airport": { + "type": "boolean" + }, + "bank": { + "type": "boolean" + }, + "bikeSharingStation": { + "type": "boolean" + }, + "busStop": { + "type": "boolean" + }, + "clothingStore": { + "type": "boolean" + }, + "cuisineGcid": { + "description": "If the element implies a cuisine type then we include the gcid string when available. Currently this happens for BUSINESS_CATEGORY type. The field is repeated to model categories like \"mandarin buffet restaurant\" with multiple cuisine gcid's: mandarin_restaurant and buffet_restaurant.", + "items": { + "type": "string" + }, + "type": "array" + }, + "departmentStore": { + "type": "boolean" + }, + "drugDropOff": { + "type": "boolean" + }, + "electricVehicleChargingStation": { + "type": "boolean" + }, + "electronicStore": { + "type": "boolean" + }, + "emergency": { + "description": "This field is used to determine the emergency type of the element, which is specified by the grammar parse in (http://cs/file:googledata/localsearch/quality/grammar/local_patterns.asciipb). e.g. \"coronavirus_treatment_locations\" TODO(b/151330576) Deprecate the emergency field and replace with normal triggering.", + "type": "string" + }, + "foodPantry": { + "type": "boolean" + }, + "gasStation": { + "type": "boolean" + }, + "groceryStore": { + "type": "boolean" + }, + "hairdresser": { + "type": "boolean" + }, + "hardwareStore": { + "type": "boolean" + }, + "hospital": { + "type": "boolean" + }, + "hotel": { + "description": "Also youth hostels, guest houses, etc.", + "type": "boolean" + }, + "parking": { + "type": "boolean" + }, + "petStore": { + "type": "boolean" + }, + "pharmacy": { + "type": "boolean" + }, + "qrefTransitStation": { + "description": "This is used for transit stations annotated by QRef. The transit_station business_type above is only used for business categories, and therefore is used downstream to find nearby stations rather than a particular station, and so cannot be present in a Location that is a specific station from QRef. For these cases, this business_type is used instead. e.g. \"grand central\" \"millbrae station\" \"union station\" will have business_type qref_transit_station", + "type": "boolean" + }, + "restaurant": { + "description": "Also bars and cafes", + "type": "boolean" + }, + "retail": { + "type": "boolean" + }, + "school": { + "description": "Pre-k to high school", + "type": "boolean" + }, + "shoppingCenter": { + "type": "boolean" + }, + "soupKitchen": { + "type": "boolean" + }, + "sportStore": { + "type": "boolean" + }, + "subwayStation": { + "type": "boolean" + }, + "telecom": { + "type": "boolean" + }, + "toyStore": { + "type": "boolean" + }, + "trainStation": { + "type": "boolean" + }, + "transitLine": { + "description": "A particular line in a transit system, e.g., \"3 train\", \"Red Line\", \"Cirle Line\", etc.", + "type": "boolean" + }, + "transitOperator": { + "description": "Operator of a transit line, e.g., \"MTA\", \"BART\", \"CTA\", etc.", + "type": "boolean" + }, + "transitStation": { + "description": "The different types of transit station business types will be used to figure out which vehicle types to use when querying Tripfinder's SearchStations service. The stations in that backend seem to be divided into HEAVY_RAIL, SUBWAY, and TRAM. There isn't a very reliable division between intercity rail and commuter rail -- Amtrak, LIRR, PATH, and NJ Transit are all classified as HEAVY_RAIL. That's why in these types we make a distinction between train and subway, and not train and muni_rail, (unlike TransitMode in the TravelAction proto).", + "type": "boolean" + }, + "university": { + "description": "Also colleges", + "type": "boolean" + }, + "vehicleType": { + "description": "All of the vehicle types serviced by this business or business category. e.g. VEHICLE_TYPE_RAIL and VEHICLE_TYPE__BUS for \"transit stop\". This allows downstream to serve different result types for transit station categories in different languages. e.g. In en-US \"train station\" seeks both railway station and subway station results. But the equivalent word in French/Italian/German seeks only railway stations.", + "items": { + "enum": [ + "VEHICLE_TYPE_ANY", + "VEHICLE_TYPE_RAIL", + "VEHICLE_TYPE_METRO_RAIL", + "VEHICLE_TYPE_SUBWAY", + "VEHICLE_TYPE_TRAM", + "VEHICLE_TYPE_MONORAIL", + "VEHICLE_TYPE_HEAVY_RAIL", + "VEHICLE_TYPE_COMMUTER_TRAIN", + "VEHICLE_TYPE_HIGH_SPEED_TRAIN", + "VEHICLE_TYPE_LONG_DISTANCE_TRAIN", + "VEHICLE_TYPE_BUS", + "VEHICLE_TYPE_INTERCITY_BUS", + "VEHICLE_TYPE_TROLLEYBUS", + "VEHICLE_TYPE_SHARE_TAXI", + "VEHICLE_TYPE_FERRY", + "VEHICLE_TYPE_CABLE_CAR", + "VEHICLE_TYPE_GONDOLA_LIFT", + "VEHICLE_TYPE_FUNICULAR", + "VEHICLE_TYPE_SPECIAL", + "VEHICLE_TYPE_HORSE_CARRIAGE", + "VEHICLE_TYPE_AIRPLANE" + ], + "enumDescriptions": [ + "ABSTRACT", + "ABSTRACT Metropolitan railway transport, mostly for local transit.", + "ABSTRACT", + "Subways run mainly or completely underground.", + "Trams run mainly or completely along streets.", + "Monorails run on track consisting of a single rail, e.g. suspended monorail.", + "Heavy rail is rail transit that consists of larger vehicles, typically to transport more people across longer distances.", + "Commuter trains connect the city with the suburbs. They tend to stop often and run short distances.", + "High speed trains operate at much higher speed than normal trains. They can also run long distances. Typically with speeds upwards of 200 km/h. Examples are TGV, ICE, Shinkansen.", + "Long distance trains connect multiple cities/regions of a country or even multiple countries. They run faster, but not high-speed. Typically speeds under 200 km/h.", + "Buses cover mass transit over roads.", + "A bus that connects cities to each other.", + "A bus powered by electricity obtained from overhead wires by means of a pole.", + "Share taxi is sort of bus transport with ability to drop off and pick up passengers anywhere on it route. Generally share taxi uses minibus vehicles.", + "Ferries are a means of transit over water, often operated on regular, frequent, return services.", + "Cable cars are a form of transit used in the mountains.", + "An aerial lift (colloquially called \"gondola lift\") is a means of cable transport in which cabins, cars, gondolas or open chairs are hauled above the ground by means of one or more cables. Examples: gondola lift, aerial tramway. Funicular is a cable railway in which a pair of tram-like vehicles use each other as counter balance to ascend and descend.", + "", + "Used for easter eggs.", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "venue": { + "description": "Stadiums, theaters, cinemas, etc.", + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalChainMemberConstraint": { + "description": "ChainMemberConstraint for chain filtering enabled queries.", + "id": "NlpSemanticParsingLocalChainMemberConstraint", + "properties": { + "chainIds": { + "description": "Specifies which parent chain mids to filter by.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalCompoundLocation": { + "id": "NlpSemanticParsingLocalCompoundLocation", + "properties": { + "joiner": { + "$ref": "NlpSemanticParsingLocalJoiner" + }, + "location1": { + "$ref": "NlpSemanticParsingLocalLocation" + }, + "location2": { + "$ref": "NlpSemanticParsingLocalLocation", + "description": "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." + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalContactLocation": { + "description": "Contact information for the |contact_location| field in LocationElement.", + "id": "NlpSemanticParsingLocalContactLocation", + "properties": { + "contact": { + "$ref": "NlpSemanticParsingModelsCommunicationRecipient", + "description": "Contact as a location." + }, + "contactType": { + "$ref": "NlpSemanticParsingModelsCommunicationPhoneType", + "description": "The type of contact address (home, work, etc)." + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalCuisineConstraint": { + "description": "Constraint for cuisine type, such as \"chinese\", \"italian\", \"thai\", \"burgers\", etc.", + "id": "NlpSemanticParsingLocalCuisineConstraint", + "properties": { + "cuisineGcid": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalEvChargingStationSpeedConstraint": { + "description": "There is an implicit AND relation if multiple EVCS constraint types are specified.", + "id": "NlpSemanticParsingLocalEvChargingStationSpeedConstraint", + "properties": { + "chargingSpeed": { + "enum": [ + "UNKNOWN_CHARGING_SPEED", + "FAST_CHARGING_SPEED" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalExtent": { + "id": "NlpSemanticParsingLocalExtent", + "properties": { + "nonSpecificValue": { + "description": "True for values like \"a few\".", + "type": "boolean" + }, + "units": { + "enum": [ + "METER", + "KILOMETER", + "FOOT", + "YARD", + "MILE", + "BLOCK", + "MINUTE", + "HOUR", + "OTHER_UNITS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "unitsString": { + "description": "String representation, e.g., for debug.", + "type": "string" + }, + "value": { + "description": "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.", + "format": "double", + "type": "number" + }, + "valueString": { + "description": "Can hold numbers as well as \"a few\".", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalGcidConstraint": { + "id": "NlpSemanticParsingLocalGcidConstraint", + "properties": { + "gcid": { + "description": "GCID - with the 'gcid:' prefix.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalHotelType": { + "description": "Hotel Type used by the hotels team to differentiate sub classes of accommodations. For any questions please contact hotel-search-quality@. Next ID: 48", + "id": "NlpSemanticParsingLocalHotelType", + "properties": { + "allInclusiveResort": { + "description": "Basic accommodation types variations.", + "type": "boolean" + }, + "beachResort": { + "type": "boolean" + }, + "bedAndBreakfast": { + "type": "boolean" + }, + "boutiqueHotel": { + "type": "boolean" + }, + "businessHotel": { + "type": "boolean" + }, + "cabin": { + "description": "Other accommodation types.", + "type": "boolean" + }, + "campsite": { + "type": "boolean" + }, + "capsuleHotel": { + "type": "boolean" + }, + "casinoAccommodation": { + "type": "boolean" + }, + "castleHotel": { + "type": "boolean" + }, + "chalet": { + "type": "boolean" + }, + "commonLodgingHouse": { + "type": "boolean" + }, + "condoHotel": { + "type": "boolean" + }, + "conventionHotel": { + "type": "boolean" + }, + "cottage": { + "type": "boolean" + }, + "ecoHotel": { + "type": "boolean" + }, + "extendedStayHotel": { + "type": "boolean" + }, + "farmstay": { + "type": "boolean" + }, + "gite": { + "type": "boolean" + }, + "golfResort": { + "type": "boolean" + }, + "guestRanch": { + "type": "boolean" + }, + "guesthouse": { + "type": "boolean" + }, + "hostel": { + "type": "boolean" + }, + "hotel": { + "description": "Basic accommodation types.", + "type": "boolean" + }, + "houseboat": { + "type": "boolean" + }, + "inn": { + "type": "boolean" + }, + "japaneseInn": { + "description": "Japanese accommodation types.", + "type": "boolean" + }, + "japaneseInnWithHotSpring": { + "type": "boolean" + }, + "lodge": { + "type": "boolean" + }, + "lodging": { + "type": "boolean" + }, + "loveHotel": { + "type": "boolean" + }, + "motel": { + "type": "boolean" + }, + "mountainHut": { + "type": "boolean" + }, + "other": { + "description": "Any other lodging related type.", + "type": "boolean" + }, + "pension": { + "type": "boolean" + }, + "resort": { + "type": "boolean" + }, + "safariLodge": { + "type": "boolean" + }, + "seasideResort": { + "type": "boolean" + }, + "servicedApartment": { + "type": "boolean" + }, + "skiResort": { + "type": "boolean" + }, + "suite": { + "type": "boolean" + }, + "vacationApartment": { + "type": "boolean" + }, + "vacationHouse": { + "type": "boolean" + }, + "vacationRental": { + "description": "Vacation rental accommodation types.", + "type": "boolean" + }, + "villa": { + "type": "boolean" + }, + "wellnessAndSpaAccommodation": { + "type": "boolean" + }, + "youthHostel": { + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalHyperReliableData": { + "description": "Message containing information about hyper-reliable categories. go/local-hyper-reliable", + "id": "NlpSemanticParsingLocalHyperReliableData", + "properties": { + "commodityStrength": { + "description": "Whether a location is a commodity (distance is an important metric), neutral or non-commodity (distance is not important). Commodity locations are \"atm\", \"gas station\", etc. Non-commodity locations are \"restaurant\", \"hotel\", etc, and all others are neutral. The value is 1 for commodity queries, 0 for non-commodity queries, no-value for neutral queries (when the field doesn't exist in the grammar). The reason it is a float is to prepare for future changes when we expand the signal value from discrete classes to a score, and the score will be in the range of [0,1].", + "format": "float", + "type": "number" + }, + "gcidsynsOverride": { + "items": { + "$ref": "NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride" + }, + "type": "array" + }, + "hyperReliable": { + "type": "boolean" + }, + "retrievalGcids": { + "description": "Categories used for retrieval and used in Artemis diversity tiers as restricts. See https://ariane.googleplex.com/launch/190585 for details.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride": { + "description": "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.", + "id": "NlpSemanticParsingLocalHyperReliableDataGCIDSynsOverride", + "properties": { + "gcidScore": { + "format": "float", + "type": "number" + }, + "hyperReliableGcid": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalImplicitLocalCategory": { + "description": "Flags indiciating the specific implicit intent, e.g. dining, travel, etc. Next ID = 13", + "id": "NlpSemanticParsingLocalImplicitLocalCategory", + "properties": { + "airport": { + "type": "boolean" + }, + "bank": { + "type": "boolean" + }, + "chargingStation": { + "type": "boolean" + }, + "gasStation": { + "type": "boolean" + }, + "gym": { + "type": "boolean" + }, + "hairSalon": { + "type": "boolean" + }, + "hospital": { + "type": "boolean" + }, + "hotel": { + "type": "boolean" + }, + "laundromat": { + "type": "boolean" + }, + "movieTheater": { + "type": "boolean" + }, + "postOffice": { + "type": "boolean" + }, + "spa": { + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalJoiner": { + "id": "NlpSemanticParsingLocalJoiner", + "properties": { + "numBytes": { + "format": "int32", + "type": "integer" + }, + "numBytesForConversion": { + "format": "int32", + "type": "integer" + }, + "startByte": { + "description": "The raw input span corresponding to this joiner.", + "format": "int32", + "type": "integer" + }, + "startByteForConversion": { + "description": "Byte data added for conversion between this proto and IntentQuery in LooseParser. Must not be used for downstream triggering.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "The original joiner string from the tokenized query. Particularly important if the type is OTHER.", + "type": "string" + }, + "type": { + "enum": [ + "IN", + "NEAR", + "NEAREST", + "BETWEEN", + "JUNCTION", + "UNION", + "OTHER_JOINER", + "EMPTY_JOINER" + ], + "enumDescriptions": [ + "Includes \"on\", as in \"Subway on Main St.\".", + "E.g., \"A Starbucks near my location\"", + "E.g., \"Starbucks closest to my home\"", + "Includes \"on the way from X to Y\".", + "E.g., \"El Camino and Shoreline\"", + "E.g., \"Palo Alto or Menlo Park\"", + "Catch-all for strange relations", + "Sometimes there is an implicit joiner that we would like to model. E.g., in [main and 16th Starbucks] we want to have the compound location \"main and 16th\" so there is an empty joiner between \"16th\" and \"Starbucks\". The intention is that when using EMPTY_JOINER at least one of location_1 and location_2 should not be a basic location. In other words, we do not want to create a compound location that spans a sequence of location elements without joiners." + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalLocalResultId": { + "description": "This message holds all info the local assistant team will need to lookup a LocalResult in search.", + "id": "NlpSemanticParsingLocalLocalResultId", + "properties": { + "featureId": { + "$ref": "GeostoreFeatureIdProto" + }, + "geocodingAddress": { + "description": "The full address of the result. This should be a verbose address string that geocodes reliably.", + "type": "string" + }, + "kgMid": { + "description": "The knowledge graph reference of the result.", + "type": "string" + }, + "position": { + "$ref": "GeostorePointProto", + "description": "The position of the result." + }, + "rect": { + "$ref": "GeostoreRectProto", + "description": "The position of the result, if it can't be expressed as a pointproto." + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalLocation": { + "description": "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", + "id": "NlpSemanticParsingLocalLocation", + "properties": { + "basicLocation": { + "$ref": "NlpSemanticParsingLocalBasicLocation", + "description": "Exactly one of the location types should be populated." + }, + "compoundLocation": { + "$ref": "NlpSemanticParsingLocalCompoundLocation" + }, + "contactLocation": { + "$ref": "NlpSemanticParsingLocalContactLocation", + "description": "DEPRECATED. Instead, use LocationElement.contact_location." + }, + "isMerged": { + "description": "True if the location is merged, for example by CombineLocationsFn.", + "type": "boolean" + }, + "locationConstraint": { + "description": "The constraint includes various constraints on the location such as amenities, price range, ratings, or attributes such as new, cheap, etc. These constraints are a part of the location but are not modeled as location elements and are not included in the location text. The (debatable) motivation is that they do not stand on their own and are not an intrinsic part of the location. Note on texts and spans. For a location such as \"kid friendly hotels with an indoor pool\" we expect to get a basic location with a single location element and two constraints: - For the location element: - Both text and span match \"hotels\" - For the first constraint: - Both text and span match \"kid friendly\" - For the second constraint: - Both text and span match \"indoor pool\" - For the full location: - text: \"hotels\" - span covers \"kid friendly hotels with an indoor pool\"", + "items": { + "$ref": "NlpSemanticParsingLocalLocationConstraint" + }, + "type": "array" + }, + "numBytes": { + "format": "int32", + "type": "integer" + }, + "resolvedLocalResult": { + "$ref": "QualityDialogManagerLocalResult", + "description": "A LocalResult corresponding to the location the user specified, populated by local dialog (generally following a search). This field will only be set if the location is unambiguous, possibly following a series of disambiguation turns of dialog." + }, + "startByte": { + "description": "The span, in the raw input, which corresponds to this location, expressed as a byte offset and byte size. This allows the extraction of the location string as it appears in the raw text.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "A string representation of the location. Depending on the annotators and the location itself the string may represent the raw query, the pre-processed query, or something else. As a non-trivial example, for [target address mountain view] we will generate the text \"target mountain view\" without \"address\". We make a best-effort to come up with a good string, but make no formal guarantees. You should never present this text directly to outside users.", + "type": "string" + }, + "userSpecifiedLocation": { + "$ref": "KnowledgeVerticalsWeatherProtoUserSpecifiedLocation", + "description": "A location info including featureId and lat/lng that uniquely identifies the location the user specified." + }, + "vicinityLocation": { + "$ref": "NlpSemanticParsingLocalVicinityLocation" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalLocationConstraint": { + "description": "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: 23.", + "id": "NlpSemanticParsingLocalLocationConstraint", + "properties": { + "amenities": { + "$ref": "NlpSemanticParsingLocalAmenities", + "description": "LINT.IfChange" + }, + "chainMember": { + "$ref": "NlpSemanticParsingLocalChainMemberConstraint" + }, + "cuisine": { + "$ref": "NlpSemanticParsingLocalCuisineConstraint" + }, + "evcsSpeedConstraint": { + "$ref": "NlpSemanticParsingLocalEvChargingStationSpeedConstraint" + }, + "gcidConstraint": { + "$ref": "NlpSemanticParsingLocalGcidConstraint", + "description": "Used for GCID filter. Unlike other grammar, for now this is populated in Superroot (currently based on QBLD classification, and an allowlist of GCID)." + }, + "hyperReliableData": { + "$ref": "NlpSemanticParsingLocalHyperReliableData", + "description": "Some constraints are also hyper-reliable, such as [brunch] and [coffee]." + }, + "menuItem": { + "$ref": "NlpSemanticParsingLocalMenuItem" + }, + "new": { + "type": "boolean" + }, + "numBytes": { + "format": "int32", + "type": "integer" + }, + "open24Hours": { + "type": "boolean" + }, + "price": { + "$ref": "NlpSemanticParsingLocalPriceConstraint" + }, + "quality": { + "$ref": "NlpSemanticParsingLocalQualityConstraint" + }, + "rooms": { + "$ref": "NlpSemanticParsingLocalRoomConstraint" + }, + "scalableAttribute": { + "$ref": "NlpSemanticParsingLocalScalableAttribute" + }, + "service": { + "$ref": "NlpSemanticParsingLocalServiceConstraint" + }, + "startByte": { + "description": "The span, in the raw input, which corresponds to this constraint, expressed as a byte offset and byte size.", + "format": "int32", + "type": "integer" + }, + "text": { + "type": "string" + }, + "ungroundedConstraint": { + "description": "Experimental, may change.", + "type": "boolean" + }, + "unspecified": { + "description": "Used to remove all constraints, e.g. [forget all the filters]", + "type": "boolean" + }, + "vaccineType": { + "description": "Used for vaccine refinement: go/covid-vaccine-refinement.", + "enum": [ + "UNKNOWN_VACCINE_TYPE", + "COVAXIN", + "JOHNSON_AND_JOHNSON", + "MODERNA", + "OXFORD_ASTRAZENECA", + "PFIZER", + "SPUTNIK", + "ZYCOV_D", + "COVISHIELD", + "CORBEVAX", + "PFIZER_BOOSTER", + "MODERNA_BOOSTER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "visitHistory": { + "$ref": "NlpSemanticParsingLocalVisitHistoryConstraint" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalLocationElement": { + "description": "Next ID: 26", + "id": "NlpSemanticParsingLocalLocationElement", + "properties": { + "aliasIcon": { + "description": "For elements with a NICKNAME alias location, this field will hold all matching alias icons, which are used in search to resolve the location.", + "items": { + "$ref": "PersonalizationMapsAliasIcon" + }, + "type": "array" + }, + "aliasLocation": { + "description": "The following fields (alias_location, qref_location, and saft_location) should have at most one non-empty value between them.", + "enum": [ + "UNDEFINED", + "HERE", + "HOME", + "WORK", + "NICKNAME", + "NEXT_DESTINATION" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "businessType": { + "$ref": "NlpSemanticParsingLocalBusinessType", + "description": "Set only when type is BUSINESS_NAME or BUSINESS_CATEGORY." + }, + "contactLocation": { + "$ref": "NlpSemanticParsingLocalContactLocation" + }, + "dialogReferents": { + "description": "This will hold semantics from the dialog_referents subgrammar with offsets and indices relating to a list of results shown to the user. This field is repeated while in the future we could support multiple item list selection. i.e. [the starbucks] where multiple entries in the results will be indicated here", + "items": { + "$ref": "NlpSemanticParsingModelsDialogReferentsDialogReferents" + }, + "type": "array" + }, + "directionalModifier": { + "description": "Set only when type is DIRECTIONAL_MODIFIER.", + "enum": [ + "NORTH", + "SOUTH", + "EAST", + "WEST", + "NORTHEAST", + "SOUTHEAST", + "NORTHWEST", + "SOUTHWEST", + "DOWNTOWN", + "INBOUND", + "UPTOWN", + "OUTBOUND", + "CLOCKWISE", + "COUNTERCLOCKWISE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "genericLocation": { + "description": "DEPRECATED. See basic_location.element.type == LOCATION_REFERENT to determine this instead. Populated by a type VISITED local action, this field is used to indicate a location element is a general-case $PT_visited_location string.", + "type": "boolean" + }, + "hotelType": { + "$ref": "NlpSemanticParsingLocalHotelType", + "description": "Set only when business_type is hotel." + }, + "hyperReliableData": { + "$ref": "NlpSemanticParsingLocalHyperReliableData" + }, + "implicitLocalCategory": { + "$ref": "NlpSemanticParsingLocalImplicitLocalCategory" + }, + "localResultId": { + "$ref": "NlpSemanticParsingLocalLocalResultId", + "description": "A field used to store the ID of a specific location entity, especially one not extracted via QRef. For example, - a location selected by the users via a dialog follow-up query like [the second one]. Will only be populated in the LocalSemanticsServlet, not in the grammar. - a location resolved based on a full search, e.g., following the geocoding step for a directions query. This field is also used by NoramlizeLocationForFingerprinting as the canonical place to store FeatureIds." + }, + "numBytes": { + "format": "int32", + "type": "integer" + }, + "number": { + "description": "Represents zip codes, street numbers, etc. that were detected directly by the grammar (and not, e.g., by QRef). DEPRECATED. We ran into problems with zip codes having leading zeroes. Now we store numbers only in the text field.", + "format": "int32", + "type": "integer" + }, + "personalReferenceLocation": { + "$ref": "NlpSemanticParsingPersonalReferenceAnnotation", + "description": "A collection of QRefAnnotations repesenting Reference and Resolution data for Personal References. See go/copley-local and go/copley-annotator." + }, + "qrefLocation": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "saftLocation": { + "$ref": "NlpSemanticParsingSaftMentionAnnotation" + }, + "source": { + "enum": [ + "GRAMMAR", + "QREF", + "SAFT", + "GENIE", + "DIALOG", + "NIMBLE", + "ATTENTIONAL_ENTITY", + "LES", + "UNGROUNDED" + ], + "enumDescriptions": [ + "A location element defined in the grammar itself.", + "A location element from the QRef annotator.", + "A location element from the Saft annotator.", + "A location element from the Genie annotator.", + "A location element from the DialogField annotator.", + "A location element from the Nimble annotator.", + "A location element from attentional entities.", + "Important note: LES is being DEPRECATED as of May 29th 2014. It should not be used, and will not be returned from production after June 15th. A location element from the LES annotator.", + "A location element produced by the ungrounded_location model. This is a machine learned model which produces text spans corresponding to locations; unlike QRef or SAFT, it does not give any further semantics (such as mid, collection, type) beyond the text span. See nlp/semantic_parsing/models/ungrounded_location for details." + ], + "type": "string" + }, + "startByte": { + "description": "The byte span, in the raw query, which corresponds to this location element.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "A string representation of the location element. Typical, this field will be populated by the MakeLocationElementFn semantic function with the substring of the raw_query defined by start_byte and num_bytes. However, the field can also be populated explicitly in the grammar, in which case MakeLocationElementFn leaves it alone.", + "type": "string" + }, + "transitLineNumber": { + "description": "Train number associated with /collection/geo/transit_line. Populated when user requests specific instance of a transit line. For example, long distance trains in India have two numbers for each train, one for up direction and other for down. And user use these numbers in queries along with name to specify the specific trip of the train. More details in go/number-transit-line-queries.", + "type": "string" + }, + "type": { + "enum": [ + "PLACE_NAME", + "BUSINESS_NAME", + "BUSINESS_CATEGORY", + "ALIAS", + "GEO_MODIFIER", + "DIRECTIONAL_MODIFIER", + "NUMBER_MODIFIER", + "DETERMINER", + "ZIP_CODE", + "PERSONAL_MODIFIER", + "TEXT", + "PUNCTUATION", + "STREET_NAME", + "HIGHWAY_NAME", + "OLC", + "CONTACT", + "CONTACT_AND_ALIAS", + "PERSONAL_PLACE_NAME", + "PERSONAL_REFERENCE", + "UNGROUNDED_LOCATION", + "LATITUDE_LONGITUDE", + "DIALOG_REFERENT", + "LOCATION_REFERENT" + ], + "enumDescriptions": [ + "E.g., \"Manhattan\", \"Ohio\"", + "E.g., \"Target\", \"NYU\", \"Gary Danko\"", + "E.g., \"gas station\", \"Chinese restaurant\"", + "Special locations recognized in the grammar itself: \"here\", \"home\", \"work\".", + "Geographical modifier such as \"west\", \"southeastern\", \"downtown\", \"metro\". E.g., for \"west Palo Alto\" we create a location element \"west\" (followed by another location element \"Palo Alto\").", + "Route directions such as \"north\", \"northbound\". E.g., for \"north I-96\" we create a location element \"north\" (plus another location element \"I-96\").", + "Numbers that follow or precede a location. E.g., \"90210\" from \"beverly hills 90210\", \"10\" from \"10 downing street\".", + "Determiners like \"a\", \"an\", and \"the\". E.g., \"a mcdonald's\", \"the grand canyon\".", + "An explicit zip code, e.g., \"zip code 77079\"", + "Modifier that often goes with a business category or an alias, e.g., \"our hotel\", \"my barber\", \"my current location\".", + "Used only for locations generated from $Text.", + "", + "Note(12/08/2014): STREET_NAME used to be covered by PLACE_NAME. We are planning to start generating this type in January 2015. E.g., \"Oak St.\", \"17th\"", + "HIGHWAY_NAME used to be covered partially by STREET_NAME. As of January '17 we want to separate locations like \"Highway 70\" or \"70\" for traffic intent.", + "", + "Indicates a contact's location. It could be either a contact name (e.g. \"Larry Page\") or a specific location for contact (e.g. \"Larry's home\").", + "A location element that is both a contact and an alias location.", + "Personal places (e.g., \"our hotel\", \"my parking spot\") which are annotated with a personal collection by QRef, indicating they refer to a specific location from a user's personal data. Part of the go/copley effort.", + "References to personal places (e.g., \"our hotel\", \"my parking spot\") which are annotated with a personal collection by QRef. They may or may not contain resolutions to/ locations from a user's personal data. Part of the go/copley effort.", + "Location that comes from the ungrounded_location model. See comment for the UNGROUNDED LocationElementSource above.", + "Location that comes from a latitude, longitude pair, e.g. (40.7415 N, 74.0034 W)", + "Phrase that refers generally to results or items. These element types are intended to be more generic than those below and will be semantically derived from a simple set of rules involving mostly preterminals. Examples include, but are not limited to: \"one,\" \"item,\" \"result.\"", + "Phrase that refers to generic places. These element types are intended to be more generic than those above and will be semantically derived from a simple set of rules involving mostly preterminals. Examples include, but are not limited to: \"places,\" \"spots,\" \"locations.\"" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalMenuItem": { + "description": "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].", + "id": "NlpSemanticParsingLocalMenuItem", + "properties": { + "menuItemId": { + "description": "This ID corresponds to the name of the menu item in the query. For example [restaurants that serve thai curry] has menu_item_id = \"thai curry\".", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalPriceConstraint": { + "id": "NlpSemanticParsingLocalPriceConstraint", + "properties": { + "cheap": { + "type": "boolean" + }, + "currencyCode": { + "description": "The currency codes are expected to be string from the list in i18n/identifiers/currencycode.*", + "type": "string" + }, + "expensive": { + "type": "boolean" + }, + "maxPrice": { + "format": "double", + "type": "number" + }, + "minPrice": { + "format": "double", + "type": "number" + }, + "moderatelyPriced": { + "type": "boolean" + }, + "unspecified": { + "description": "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].", + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalQualityConstraint": { + "description": "Quality constraints about the establishment. In the future we can add to this message Zagat ratings, user reviews, etc. Next ID: 6.", + "id": "NlpSemanticParsingLocalQualityConstraint", + "properties": { + "best": { + "type": "boolean" + }, + "highlyRated": { + "type": "boolean" + }, + "starType": { + "enum": [ + "HOTEL_CLASS", + "USER_RATING" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "stars": { + "$ref": "NlpSemanticParsingLocalStarRatings" + }, + "unspecified": { + "description": "The user mentioned something about quality, but didn't mention a specific constraint. This is used to indicate an intent to remove all quality constraints, in queries like [forget the rating].", + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalRoomConstraint": { + "description": "Constraints for the occupancy of a hotel or vacation rental.", + "id": "NlpSemanticParsingLocalRoomConstraint", + "properties": { + "minNumBathrooms": { + "description": "It is possible to have fractional bathrooms.", + "format": "double", + "type": "number" + }, + "minNumBedrooms": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalScalableAttribute": { + "description": "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\"", + "id": "NlpSemanticParsingLocalScalableAttribute", + "properties": { + "attributeId": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalServiceConstraint": { + "id": "NlpSemanticParsingLocalServiceConstraint", + "properties": { + "serviceType": { + "enum": [ + "SERVICE_TYPE_UNSPECIFIED", + "ACCESS", + "BRUNCH", + "DELIVERY", + "DRIVE_THROUGH", + "KITCHEN", + "HAPPY_HOUR", + "PICKUP", + "SENIOR_ONLY", + "TAKEOUT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalStarRatings": { + "description": "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.", + "id": "NlpSemanticParsingLocalStarRatings", + "properties": { + "five": { + "type": "boolean" + }, + "four": { + "type": "boolean" + }, + "fourAndAHalf": { + "type": "boolean" + }, + "one": { + "type": "boolean" + }, + "oneAndAHalf": { + "type": "boolean" + }, + "orFewer": { + "type": "boolean" + }, + "orMore": { + "description": "If this field is set, exactly one of the star classes above should be set, and the interpretation should be that at least that many stars should be present.", + "type": "boolean" + }, + "three": { + "type": "boolean" + }, + "threeAndAHalf": { + "type": "boolean" + }, + "two": { + "type": "boolean" + }, + "twoAndAHalf": { + "type": "boolean" + }, + "unspecified": { + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalVicinityLocation": { + "id": "NlpSemanticParsingLocalVicinityLocation", + "properties": { + "base": { + "$ref": "NlpSemanticParsingLocalLocation", + "description": "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": { + "description": "The text between the extent and the base, e.g., for \"50 miles from here\" the connector is \"from\".", + "type": "string" + }, + "extent": { + "$ref": "NlpSemanticParsingLocalExtent" + } + }, + "type": "object" + }, + "NlpSemanticParsingLocalVisitHistoryConstraint": { + "description": "Constraint for visited, as in if a location has been visited before.", + "id": "NlpSemanticParsingLocalVisitHistoryConstraint", + "properties": { + "visitedType": { + "enum": [ + "UNKNOWN_VISITED_TYPE", + "VISITED", + "NOT_VISITED" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsCommunicationPhoneType": { + "description": "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.", + "id": "NlpSemanticParsingModelsCommunicationPhoneType", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "isAnnotatedFromText": { + "description": "Whether the annotation is from $Text.", + "type": "boolean" + }, + "normalizedText": { + "description": "Normalized (canonicalized) text, e.g. \"mobile\".", + "type": "string" + }, + "originalText": { + "description": "Original text in query, e.g. \"cell\".", + "type": "string" + }, + "rawText": { + "description": "DEPRECATED. Used original_text instead.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsCommunicationRecipient": { + "description": "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.", + "id": "NlpSemanticParsingModelsCommunicationRecipient", + "properties": { + "calendarEvent": { + "$ref": "AssistantApiCoreTypesCalendarEvent" + }, + "calendarEventWrapper": { + "$ref": "AssistantApiCoreTypesCalendarEventWrapper" + }, + "contact": { + "$ref": "NlpSemanticParsingModelsPersonPerson", + "description": "Contact details (e.g. gaia_id, phone, etc). Replaces 'focus_name' above." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "isAnnotatedFromText": { + "type": "boolean" + }, + "nameAnnotationSource": { + "description": "Deprecated in favor of recipient.contact.name_annotation_source.", + "enum": [ + "UNKNOWN_NAME_ANNOTATOR", + "FOCUS_NAME", + "DEVICE_CONTACT", + "SAFT_PERSON", + "NAME_DETECTION_PERSON", + "NAME_PERSON", + "MANUAL_RULES", + "SAFT_POS", + "TEXT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "SAFT part-of-speech, like a noun (call skipper) or an adjective (call beautiful).", + "" + ], + "type": "string" + }, + "numberAnnotationSource": { + "enum": [ + "UNKNOWN_NUMBER_ANNOTATOR", + "PHONE_NUMBER_ANNOTATOR", + "NUMBER_ANNOTATOR", + "MANUAL" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "rawText": { + "description": "NOTE: for CONTACT recipient, this is *NOT* the real raw text of the recipient span of historical reasons. Major differences includes: - stripping possessive suffix, e.g. \"John's\" -\u003e \"John\" - stripping prefix/suffix/title, e.g. \"Mr. John\" -\u003e \"John\" - uninflect name for languages like Russian, e.g. \"Андрею\" -\u003e \"Андрей\" Currently this is the same as .contact.name, and is used as the string shown to the user on clientside UI. If you're looking for real raw text, use .contact.raw_text", + "type": "string" + }, + "recipientType": { + "enum": [ + "CONTACT", + "BUSINESS", + "EMAIL_ADDRESS", + "PHONE_NUMBER", + "AMBIGUOUS", + "CALENDAR_EVENT", + "CALENDAR_EVENT_WRAPPER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "relationship": { + "$ref": "NlpSemanticParsingModelsCommunicationRelationshipArgument", + "description": "A reference to a person by relationship name. eg. my father." + }, + "sensitiveNumBytes": { + "format": "int32", + "type": "integer" + }, + "sensitiveStartByte": { + "description": "The beginning and end of the recipient name that should be removed before logging.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsCommunicationRelationshipArgument": { + "description": "A relationship contact.", + "id": "NlpSemanticParsingModelsCommunicationRelationshipArgument", + "properties": { + "alias": { + "description": "The alias of the relationship in the query, e.g. \"mom\".", + "type": "string" + }, + "canonical": { + "description": "The canonical format of the relationship, e.g. \"Mother\".", + "type": "string" + }, + "canonicalLexicalMid": { + "description": "Mid for an entity that has lexical data (a LexiconEntry). See https://g3doc.corp.google.com/nlp/generation/g3doc/lexical_data.md for for more information about lexical data. This is the canonical mid for this entity (eg. it would be /m/0lbxz for \"mother\" in EN even if user referred to \"mom\").", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsDevice": { + "description": "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\"", + "id": "NlpSemanticParsingModelsDevice", + "properties": { + "deviceName": { + "$ref": "NlpSemanticParsingModelsDeviceName", + "description": "The name of the device (Nexus 5, Nexus 10, etc)." + }, + "deviceType": { + "description": "The type of the device (phone, tablet, watch, etc).", + "enum": [ + "UNKNOWN", + "PHONE", + "TABLET", + "WATCH" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsDeviceName": { + "description": "The name of the device (Nexus 5, Nexus 10, etc).", + "id": "NlpSemanticParsingModelsDeviceName", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "rawText": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsDialogReferentsDialogReferents": { + "description": "Will be used by dialog_referent subgrammar to emit types annotations from DialogReferentsAnnotator and $DialogReferentOrdinal rules.", + "id": "NlpSemanticParsingModelsDialogReferentsDialogReferents", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData" + }, + "field": { + "$ref": "NlpSemanticParsingModelsDialogReferentsListSelection", + "description": "The field mentioned in the user's utterance, if any." + }, + "index": { + "description": "Used for a grammar mention of an index.", + "format": "int32", + "type": "integer" + }, + "next": { + "$ref": "NlpSemanticParsingModelsDialogReferentsDialogReferents", + "description": "Represents a tied referent in a different field of the same label" + }, + "selection": { + "description": "The requested value(s) for selection from a list of alternatives.", + "items": { + "$ref": "NlpSemanticParsingModelsDialogReferentsListSelection" + }, + "type": "array" + }, + "taskMention": { + "description": "Set when the user's utterance refers to the (an) overall task/goal of the dialog (e.g. \"the meeting starts at 10 am\" mentions the goal, \"meeting\"). The field is repeated in case the user ambiguously identifies a task (two tasks named 'meeting').", + "items": { + "$ref": "NlpSemanticParsingModelsDialogReferentsListSelection" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsDialogReferentsListSelection": { + "description": "Represents the user's selection from a list of alternatives.", + "id": "NlpSemanticParsingModelsDialogReferentsListSelection", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData" + }, + "id": { + "description": "A unique identifier that is the canonical value for the chosen list item. If we are selecting among fields, this is the field_id specified in the corresponding DialogField.", + "type": "string" + }, + "looseOffsetRestriction": { + "description": "If true, semantic function should look at watch actions in the following display entity if the first one is not playable. This is useful for \"Play it\" on entity page.", + "type": "boolean" + }, + "offset": { + "description": "The offset within the list, if know. If the list of values wasn't known (e.g. from the discourse context) then the offset is a zero-based mapping of the ordinal value of the selection (\"first one\" maps to zero; \"last one\" to minus one).", + "format": "int32", + "type": "integer" + }, + "rawText": { + "description": "When the user selects a list value by name then this is the matched text from the utterance. Note that, if the list of values is known, then the aqua annotator should have mapped it to an offset.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaAlbumTitle": { + "description": "Example: \"The White Album\"", + "id": "NlpSemanticParsingModelsMediaAlbumTitle", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "favorite": { + "description": "If true, indicates the user wants their favorite album. Like [play my favorite album my Eminem]", + "type": "boolean" + }, + "first": { + "description": "If true, indicates the user wants the first album. Like [play adele's first album]", + "type": "boolean" + }, + "isFromFastPath": { + "description": "Is annotated by Nimble for the media Fast Path.", + "type": "boolean" + }, + "latest": { + "description": "If true, indicates the user wants the latest album. Like, [play adele's latest album]", + "type": "boolean" + }, + "playMore": { + "description": "More from this album.", + "type": "boolean" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"The White Album.\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaAudio": { + "description": "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) http://schema.org/MusicRecording Next ID: 22", + "id": "NlpSemanticParsingModelsMediaAudio", + "properties": { + "album": { + "$ref": "NlpSemanticParsingModelsMediaAlbumTitle" + }, + "artist": { + "$ref": "NlpSemanticParsingModelsMediaMusicArtist" + }, + "book": { + "$ref": "NlpSemanticParsingModelsMediaBook", + "description": "Like an audio book. \"Listen to (moby dick) audiobook\"" + }, + "dateTime": { + "$ref": "NlpSemanticParsingDatetimeDateTime", + "description": "A date time constraint for audio entity, for example, \"jazz station 1980\"." + }, + "episodeConstraint": { + "description": "Constraining the query to some detail about the episode. Example: \"listen to episode (13) of this american life with (mike birbiglia)\" would have the 2 constraints in parens.", + "items": { + "$ref": "NlpSemanticParsingModelsMediaEpisodeConstraint" + }, + "type": "array" + }, + "game": { + "$ref": "NlpSemanticParsingModelsMediaGame", + "description": "Soundtrack or theme song (see score_type param that indicates whether the user refers to a soundtrack or a theme song) of the game. \"Play soundtrack from (Deus Ex Human Revolution)\"." + }, + "genericMusic": { + "$ref": "NlpSemanticParsingModelsMediaGenericMusic" + }, + "genre": { + "$ref": "NlpSemanticParsingModelsMediaMusicGenre" + }, + "movie": { + "$ref": "NlpSemanticParsingModelsMediaMovie", + "description": "Soundtrack or theme song (see score_type param that indicates whether the user refers to a soundtrack or a theme song) of the movie. E.g. \"Play (Let It Go) from (Disney's Frozen)\"" + }, + "newsTopic": { + "$ref": "NlpSemanticParsingModelsMediaNewsTopic", + "description": "News topic. \"Listen to news about (Ukraine)\"" + }, + "noExplicitAudio": { + "description": "True when the query does not contains an explict audio name. E.g. When user says \"play\" or \"listen to\".", + "type": "boolean" + }, + "playlist": { + "$ref": "NlpSemanticParsingModelsMediaMusicPlaylist" + }, + "podcast": { + "$ref": "NlpSemanticParsingModelsMediaPodcast", + "description": "Podcast feeds. \"Listen to (This American Life)\"" + }, + "radio": { + "$ref": "NlpSemanticParsingModelsMediaRadio" + }, + "radioNetwork": { + "$ref": "NlpSemanticParsingModelsMediaRadioNetwork", + "description": "E.g. \"play NPR radio\", \"Play BBC radio\"." + }, + "rawText": { + "description": "The query for backends to use in search. e.g. for an user query of \"play kids song video on tv\" from assistant, this field would be \"kids song\". Note: there is no guarantee this field is populated; when it is not, backends should fall back to \"raw_text\" fields in song, artist, album etc.", + "type": "string" + }, + "scoreType": { + "description": "If any of movie, game or tv show fields is populated this field indicates specific score type requested in the query. E.g. for [play soundtrack from frozen] this field is SOUNDTRACK, for [play frozen song] this field is THEME_SONG.", + "enum": [ + "UNKNOWN", + "SOUNDTRACK", + "THEME_SONG" + ], + "enumDescriptions": [ + "", + "The query indicates that the user is asking for a soundtrack (full album) from movie, game or tv show. E.g. [play soundtrack from frozen].", + "The query indicates that the user is asking for a theme song from movie, game or tv show. E.g. [play godfather theme song]." + ], + "type": "string" + }, + "seasonConstraint": { + "$ref": "NlpSemanticParsingModelsMediaSeasonConstraint", + "description": "Constraining the query to some detail about the season. Example: \"listen to season 2 of serial\"" + }, + "song": { + "$ref": "NlpSemanticParsingModelsMediaSong" + }, + "tag": { + "description": "Optional tags associated with how the media entity should be played. For example, this can be set to SEED_RADIO to signify that the user wants to play a radio station seeded by the entity.", + "items": { + "enum": [ + "UNKNOWN_TAG", + "SEED_RADIO", + "VIDEO_TAG", + "TOP_TRACKS", + "RECORDED", + "LIVE", + "FOLLOWED_BY_SEED_RADIO" + ], + "enumDescriptions": [ + "", + "Deeplink is for seed radio of the media content.", + "Deeplink is for video version of the media content. NOTE: this tag is meaningful only in the context of media that has video video and other versions, e.g. a song can be played audio-only or with video. This tag is not meaningful for video content, e.g. movies, and thus should NOT be used for video-only media content.", + "Deeplink is for top tracks for music artist.", + "Deeplink is for recorded (DVR) content.", + "Deeplink is for live content.", + "Deeplink is for music followed by radio mix." + ], + "type": "string" + }, + "type": "array" + }, + "tvShow": { + "$ref": "NlpSemanticParsingModelsMediaTVShow", + "description": "Soundtrack or theme song (see score_type param that indicates whether the user refers to a soundtrack or a theme song) of the tv show. E.g. \"Play soundtrack from (Friends)\"." + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaAudiobookInfo": { + "description": "Metadata for an audiobook.", + "id": "NlpSemanticParsingModelsMediaAudiobookInfo", + "properties": { + "audiobookMid": { + "description": "The MID of the audiobook entity (/book/book_edition).", + "type": "string" + }, + "authors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "bookMid": { + "description": "The MID of the book entity (/book/book) which this audiobook is associated with.", + "type": "string" + }, + "narrators": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaBook": { + "description": "Example: \"East of Eden\"", + "id": "NlpSemanticParsingModelsMediaBook", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "isAnnotatedFromText": { + "description": "Annotation comes from a text annotator. Needed to boost recall. Typically need to be verified in superroot, and have separate scoring.", + "type": "boolean" + }, + "latest": { + "description": "If true, indicates the user wants the latest book. Like, [play Dan Brown's latest book]", + "type": "boolean" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"East of Eden\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaCastDeviceAnnotation": { + "description": "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", + "id": "NlpSemanticParsingModelsMediaCastDeviceAnnotation", + "properties": { + "castDeviceSource": { + "enum": [ + "COMMON_DEVICE_NAME", + "PERSONAL_DEVICE", + "DEVICE_TYPE" + ], + "enumDescriptions": [ + "Device comes from common's name of user's device.", + "Device comes from user's data.", + "Device comes from device types." + ], + "type": "string" + }, + "castDeviceType": { + "description": "This field is populated when the user says [play X on $cast_device] and we know the type of $cast_device but cannot identify the exact device.", + "enum": [ + "UNKNOWN", + "CHROMECAST", + "AUDIOCAST", + "CHIRP", + "TV", + "SPEAKER", + "CAR", + "ORIGINATING_DEVICE", + "SMART_DISPLAY" + ], + "enumDescriptions": [ + "", + "E.g., chromecast.", + "E.g., audiocast.", + "E.g., chirp, Google Home.", + "E.g., TV.", + "E.g., speaker.", + "E.g., car. /////////////////////////////// NOTE: DO NOT USE THIS FIELD // ///////////////////////////////", + "E.g., \"here\", \"this device\" or \"locally\"", + "E.g., Google Home Hub, Smart Display." + ], + "type": "string" + }, + "creationTimestampMs": { + "description": "The timestamp that the device is linked with the user in milliseconds. This is inherited from the corresponding assistant DeviceSettings as is.", + "format": "int64", + "type": "string" + }, + "deviceId": { + "description": "DEPRECATED: Please use device_identifier instead.", + "type": "string" + }, + "deviceIdentifier": { + "$ref": "AssistantApiCoreTypesDeviceId", + "description": "The identification of the device. This field is populated when the user says [play X on $device_name] and $device_name matches one of the devices linked to user's account. } oneof Media Device" + }, + "name": { + "type": "string" + }, + "quantification": { + "$ref": "NlpSemanticParsingModelsMediaQuantification", + "description": "This field is populated when the user metioned quantification in the query. E.g., \"2\" or \"all\"." + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaCost": { + "description": "Represents a localized price. Next ID: 3", + "id": "NlpSemanticParsingModelsMediaCost", + "properties": { + "currencyCode": { + "description": "Contains the standard code for the given type of currency. The value must represent a valid i18n_identifiers::CurrencyCode.", + "type": "string" + }, + "price": { + "description": "Contains the price in a particular currency.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaDeeplinkInfo": { + "description": "Provider deeplink and associated metadata, in particular restrictions on platform and user's subscription. Next ID: 18", + "id": "NlpSemanticParsingModelsMediaDeeplinkInfo", + "properties": { + "actionType": { + "description": "The type of the deeplink. Sometimes the deeplink is not only used for playing media, but also used for other actions. For example, the deeplink could be for playing a movie trailer from YouTube or recording a movie from YouTube TV.", + "enum": [ + "UNSPECIFIED", + "PLAY", + "PLAY_TRAILER", + "RECORD" + ], + "enumDescriptions": [ + "", + "The deeplink is used to play a media. This should be the default in most cases.", + "The deeplink is used to play a trailer.", + "The deeplink is used to record a media." + ], + "type": "string" + }, + "blacklistedCountry": { + "description": "The upper-case, III country code, e.g., \"US\", in which the deeplink cannot play. For possible values, see: google3/i18n/identifiers/regioncode.h google3/java/com/google/i18n/identifiers/RegionCode.java For details on converting to and from ISO country codes, see http://iii-howto#GettingCanonRegionCodes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "country": { + "description": "The upper-case, III country code, e.g., \"US\", in which the deeplink can play. If unset or has \"earth\" (b/72566951), means the deeplink can be used world-wide except in |blacklisted_country| list. For possible values, see: google3/i18n/identifiers/regioncode.h google3/java/com/google/i18n/identifiers/RegionCode.java For details on converting to and from ISO country codes, see http://iii-howto#GettingCanonRegionCodes.", + "items": { + "type": "string" + }, + "type": "array" + }, + "deeplink": { + "description": "Deeplink to the media. This deeplink is meant to be send to the provider app on available platforms without any modifications. Required.", + "type": "string" + }, + "deeplinkForExecution": { + "description": "Some providers give us an opaque, unstable deeplink to use at execution-time. E.g. see http://go/collab-ranking-nl-uri#heading=h.ndmdfw388tk3 Such a deeplink is not useful for logging, caching, comparing to other candidate deeplinks, etc. So most fulfillment code will want the traditional, stable deeplink that can be interpreted, parsed, cached, etc (found in the \"deeplink\" field, above). But this opaque, unstable deeplink (if non-empty) must be included in the music initiation clientop.", + "type": "string" + }, + "incompatibleWithCredentials": { + "description": "Indicate whether the deeplink is compatible with credentials. If true, CCS will not send the credentials to cast app. Currently this field is only used for voice-follow on cases on smart displays.", + "type": "boolean" + }, + "offer": { + "description": "List of offers that allow user to access the deeplink, that is if the list contains PREMIUM_SUBSCRIPTION and BASIC_SUBSCRIPTION users that have either premium or basic subscription can use the deeplink. If the list is empty it means that there are no subscription restrictions.", + "items": { + "enum": [ + "UNKNOWN_SUBSCRIPTION", + "NO_ACCOUNT_REQUIRED", + "FREE", + "BASIC_SUBSCRIPTION", + "PREMIUM_SUBSCRIPTION", + "PAY_PER_USE" + ], + "enumDescriptions": [ + "", + "When this value is specified, it indicates that the content is available for free. An account on the providers platform is not required to play the content.", + "When this value is specified, it indicates that the content is available for free. An account on the providers platform is required to play the content.", + "When this value is specified, it indicates that the contents is available to all users with a subscription to that provider. This is the case, for example, with Video On Demand (VOD) or for music services such as Google Play Music All Access.", + "When this value is specified, it indicates that some subscribers may not be to access the content w/o a more expensive tier. This is the case, for example, with Pay TV services like Flix.", + "When this value is specified, it indicates that there is at least one content offer that requires payment (either to rent or to buy). In this case, there will be paid_offer_detail that defines the specific offer type and cost." + ], + "type": "string" + }, + "type": "array" + }, + "paidOfferDetail": { + "description": "This field is only used when \"offer\" includes a PAY_PER_USE. When \"offer\" includes a PAY_PER_USE, paid_offer_detail will contain offers for BUY and RENT offer_types with associated cost info.", + "items": { + "$ref": "NlpSemanticParsingModelsMediaPaidOfferDetail" + }, + "type": "array" + }, + "platform": { + "description": "List of platforms that support the deeplink. If the list is empty it means that there are no platform restrictions.", + "items": { + "enum": [ + "UNKNOWN_PLATFORM", + "ANDROID_PLATFORM", + "CAST_AUDIO", + "CAST_VIDEO", + "IOS_PLATFORM", + "DESKTOP_WEB", + "MOBILE_WEB", + "CHROMECAST", + "ANDROID_TV", + "KAIOS_PLATFORM", + "MEDIA_3P_DEVICE" + ], + "enumDescriptions": [ + "", + "", + "", + "Corresponds to /m/0wf0rgl.", + "", + "", + "", + "Corresponds to /g/11cn_9bsrr.", + "", + "", + "Deprecated. Part of the consolidation process. See go/consolidation-1p-3p for more details. Deeplinks to be used on media 3rd party device, including Smart TV apps, and other media description devices, e.g. Sonos Speaker and Telstra." + ], + "type": "string" + }, + "type": "array" + }, + "score": { + "description": "Document scores which are used for ranking action links. Document scores might come from CDOC in Raffia or other indexing systems. For example, for web pages, the score shows how likely the web page (composite doc) which generated this link refers to the given entity or how close a particular entity is with the given composite doc. For the larger design, please see go/ma_dedup. For PACIFIC_COLLAB_RANKING deeplink, the score is the normalized confidence score returned by partner for fulfillment candidate. For pivot candidates, the score is calculated with the index of the alternative results.", + "format": "double", + "type": "number" + }, + "subscriptionPackageName": { + "description": "Name of subscription packages which are granted access to this deeplink. This is to match exactly the end users authentication system. This is to be used if the offer is BASIC_SUBSCRIPTION or PREMIUM_SUBSCRIPTION. There can be multiple packages -- the user needs only to authenticate with a single package. For more information please see: go/subscription-package", + "items": { + "type": "string" + }, + "type": "array" + }, + "tag": { + "description": "Tags associated with the content played by this deeplink. In the common case, the deeplink is supposed to specify a music entity within the provider's inventory, and the provider app should decide the actual content based on the user's account profile (e.g., for a deeplink to an artist, playing tracks from the artist or similar artists, and for a song, playing the official album recording of the song). But in some cases, the deeplink belong to special content. For example, for an artist a seed radio based on the artist, and a live or karaoke version of a song. We use this field to mark such special content types.", + "items": { + "enum": [ + "UNKNOWN_TAG", + "SEED_RADIO", + "VIDEO_TAG", + "TOP_TRACKS", + "RECORDED", + "LIVE", + "FOLLOWED_BY_SEED_RADIO" + ], + "enumDescriptions": [ + "", + "Deeplink is for seed radio of the media content.", + "Deeplink is for video version of the media content. NOTE: this tag is meaningful only in the context of media that has video video and other versions, e.g. a song can be played audio-only or with video. This tag is not meaningful for video content, e.g. movies, and thus should NOT be used for video-only media content.", + "Deeplink is for top tracks for music artist.", + "Deeplink is for recorded (DVR) content.", + "Deeplink is for live content.", + "Deeplink is for music followed by radio mix." + ], + "type": "string" + }, + "type": "array" + }, + "validTimeWindow": { + "$ref": "NlpSemanticParsingModelsMediaDeeplinkInfoTimeWindow", + "description": "A time window in which the deeplink is valid. If not set, the deeplink is considered valid." + }, + "vuiId": { + "description": "DEPRECATED: This field is ignored by understanding and fulfillment.", + "type": "string" + }, + "youtubeDeeplinkInfo": { + "$ref": "NlpSemanticParsingModelsMediaYouTubeDeeplinkInfo", + "description": "Additional info specific to YouTube Deeplink (if applicable)." + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaDeeplinkInfoTimeWindow": { + "description": "Represents a time window expressed as a time range.", + "id": "NlpSemanticParsingModelsMediaDeeplinkInfoTimeWindow", + "properties": { + "endTimestamp": { + "description": "Time in seconds since epoch.", + "format": "int64", + "type": "string" + }, + "startTimestamp": { + "description": "Time in seconds since epoch.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaDescription": { + "description": "Example: \"the episode with all of the comedians\". A free-form text description of a media.", + "id": "NlpSemanticParsingModelsMediaDescription", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "rawText": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaEpisodeConstraint": { + "description": "Example: \"latest\" would constrain the episode to a certain ordinal.", + "id": "NlpSemanticParsingModelsMediaEpisodeConstraint", + "properties": { + "absoluteIndex": { + "description": "The absolute index of the episode. 1 is the first element and -1 is the last element in the sequence, -2 is the second-to-last element, and so on. Examples: \"first episode\" =\u003e 1 \"3rd episode\" =\u003e 3 \"last episode\" =\u003e -1", + "format": "int32", + "type": "integer" + }, + "dateTime": { + "$ref": "NlpSemanticParsingDatetimeDateTime", + "description": "Date/time of the message. This could be an absolute date/time (e.g. find my message from monday) or a date/time range (e.g. find my message in the past four hours). This constrains *when* the episode came out." + }, + "description": { + "$ref": "NlpSemanticParsingModelsMediaDescription", + "description": "A description of the episode. Example: For the query: [listen to this american life about cars] the description would be \"cars\"" + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "rawText": { + "type": "string" + }, + "relativeIndex": { + "description": "The relative index of the episode. Examples: \"previous episode\" =\u003e -1 \"current episode\" =\u003e 0 \"next episode\" =\u003e 1", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaFrequency": { + "description": "Defines a frequency for a terrestrial radio station. For instance, 99.1 FM, 730 AM, etc. Next ID: 4", + "id": "NlpSemanticParsingModelsMediaFrequency", + "properties": { + "band": { + "description": "The broadcast band used by the radio station.", + "enum": [ + "AM", + "FM", + "DAB", + "UNSET" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "value": { + "description": "Frequency in MHz (for FM) and KHz (for AM).", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaGame": { + "description": "Example: \"Deus Ex Human Revolution\"", + "id": "NlpSemanticParsingModelsMediaGame", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "isAnnotatedFromText": { + "description": "Annotation comes from a text annotator. Needed to boost recall. Typically need to be verified in superroot, and have separate scoring.", + "type": "boolean" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"Deus Ex Human Revolution\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaGenericMusic": { + "description": "Example: \"my library\", \"some music\".", + "id": "NlpSemanticParsingModelsMediaGenericMusic", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator. Deprecated - generic music deeplinks should be added to the Provider config, not to the grammar." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "newMusic": { + "description": "New music.", + "type": "boolean" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"my tracks\"", + "type": "string" + }, + "type": { + "enum": [ + "UNKNOWN", + "MUSIC", + "LIBRARY", + "PROVIDER_SPECIFIC", + "PLAY_PROVIDER", + "RESUME_PROVIDER", + "NEW_MUSIC", + "STREAM", + "HISTORY", + "POSTS", + "LIKES", + "TRACKS", + "ALBUMS", + "ARTISTS", + "THUMBPRINT_RADIO", + "SOMETHING_ELSE", + "FLOW", + "SHUFFLE_RADIO", + "PLAYLISTS", + "RECENTLY_PLAYED" + ], + "enumDescriptions": [ + "LINT.IfChange", + "E.g., \"some music\", \"music\"", + "E.g, \"my library\", \"my tracks\".", + "E.g., \"Thumbprint radio\", \"I'm-Feeling-Lucky radio\".", + "E.g., \"play $provider”.", + "E.g., “resume $provider”.", + "E.g., “play latest music”.", + "E.g., \"play stream\"", + "E.g., \"play my history\"", + "E.g., \"play my posts\"", + "E.g., \"play my likes\" Currently it's not used. \"play my likes\" is mapped to \"play my library\".", + "E.g., \"play my tracks\"", + "E.g., \"play my albums\"", + "E.g., \"play my artists\"", + "E.g., \"play Thumbprint radio\" Pandora specific.", + "E.g., \"play something else\".", + "E.g., \"play flow\" Deezer specific.", + "E.g., \"play shuffle radio\" Pandora specific.", + "E.g., \"play my playlists\"", + "E.g., \"show recently played music\" LINT.ThenChange(//depot/google3/java/com/google/chrome/dongle/pints/proto/provider_capability.proto)" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaLatLng": { + "description": "An object representing a latitude/longitude pair. More info in https://cs.corp.google.com/piper///depot/google3/google/type/latlng.proto", + "id": "NlpSemanticParsingModelsMediaLatLng", + "properties": { + "latitude": { + "description": "The latitude in degrees. It must be in the range [-90.0, +90.0].", + "format": "double", + "type": "number" + }, + "longitude": { + "description": "The longitude in degrees. It must be in the range [-180.0, +180.0].", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaMediaAnnotation": { + "description": "Annotation for media entities. Next ID: 17", + "id": "NlpSemanticParsingModelsMediaMediaAnnotation", + "properties": { + "artistName": { + "description": "Name of the artist (if applicable). Used for songs and albums.", + "type": "string" + }, + "audiobookInfo": { + "$ref": "NlpSemanticParsingModelsMediaAudiobookInfo", + "description": "Additional info specific to an audiobook (if applicable)." + }, + "contentType": { + "description": "Type of the media content. This field is not always populated, but only when this annotation is used to represent an individual media item, e.g., when it is the value of an intent argument storing a media object to play.", + "enum": [ + "MEDIA_CONTENT_TYPE_UNSPECIFIED", + "MUSIC_TRACK", + "MUSIC_ARTIST", + "MUSIC_ALBUM", + "PUBLIC_PLAYLIST", + "PERSONAL_PLAYLIST", + "MUSIC_PERSONALIZED_MIX", + "MUSIC_GENRE_MIX", + "MUSIC_SEED_RADIO", + "MUSIC_STATION", + "RADIO_STATION", + "RADIO_NETWORK", + "PODCAST_SERIES", + "PODCAST_GENERIC", + "PODCAST_GENRE", + "PODCAST_TOPIC", + "PODCAST_RESUME", + "PODCAST_EPISODE", + "VIDEO", + "MUSIC_VIDEO", + "VIDEO_RECOMMENDED_PLAYLIST", + "MUSIC_VIDEO_PERSONALIZED_PLAYLIST", + "TV_SHOW", + "TV_SHOW_SEASON", + "TV_SHOW_EPISODE", + "MOVIE", + "YOUTUBE_CHANNEL", + "TV_CHANNEL", + "SPORTS_TEAM_GAME", + "AUDIO_BOOK", + "AUDIO_STORY", + "YOUTUBE_VIDEO_PLAYLIST", + "TV_ARTIST", + "NEWS", + "VIDEO_GAME", + "DIRECTOR", + "ACTOR", + "MOVIE_SERIES" + ], + "enumDescriptions": [ + "", + "A song track (e.g. \"Bad Romance\") or radio seeded by the track.", + "A playlist that consists of songs by specific music artist or band (e.g. \"Lady Gaga\") or radio seeded by artist or band.", + "A playlist that consists of songs from specific music album (e.g. \"The Fame Monster\") or radio seeded by album.", + "A playlist publicly available (e.g. \"Today's Top Hits\") or radio seeded by playlist. Playlists always contain finite and defined set of songs. PUBLIC_PLAYLIST is the core concept of providers such as Spotify.", + "A user-created playlist. (e.g. \"My working out playlist\")", + "A music mix personalized for user. (e.g. MyMix from YouTube Music or \"I'm feeling lucky\" radio by Google Play Music)", + "A music mix seeded by genre. (e.g. \"Heavy Metal radio\")", + "An auto-generated \"radio\" mix, seeded by some music entity or even a query. For example: \"working out radio\". Prefer more specific content types (e.g. MUSIC_GENRE_MIX) if possible, to give finer grained TTS. DEPRECATED: This content type is deprecated, use MUSIC_STATION instead.", + "Music station (e.g. \"Today's Hip Hop and Pop Hits\"). Stations can have infinite number of songs (at least from user's perspective) and content that dynamically changes. MUSIC_STATION is the core concept of providers such as Google Play Music and Pandora. NOTE: do not confuse with RADIO_STATION, unlike radio stations music stations provide active streaming experience where user can navigate to the next song.", + "A radio station. This could be terrestrial or an internet radio station. (e.g. 88.5 FM, KQED)", + "A radio network. (e.g. \"NPR\")", + "A podcast. (e.g. \"This American Life\")", + "Used for \"play a podcast\".", + "Used for \"play a comedy podcast\".", + "Used for \"play a podcast about meditation\".", + "Used for \"play my podcast\" query.", + "Used for playing a specific episode.", + "A single video. (e.g. \"Star Wars: The Force Awakens trailer\")", + "Music video or videos. (e.g. \"Gangam style video\")", + "Video recommendations playlist. (e.g. fetched from Recommended feed on YouTube)", + "Music video playlist. (e.g. MyMix from YouTube)", + "A TV show. (e.g. \"John Oliver: Last Week Tonight\")", + "Season of a TV show (e.g. \"Game of Thrones season 5\").", + "Episode of a TV show (e.g. \"Game of Thrones season 5 episode 5\").", + "A movie. (e.g. \"The Goodfellas\")", + "A YouTube channel. (e.g. AngryJoeShow)", + "TV channel (e.g. \"Showtime Women\", \"ESPN2HD\").", + "Sports game of a given team or teams (e.g. \"Warriors game\", \"Warriors at Magic game\")", + "An audio book.", + "An audio story.", + "A YouTube video playlist. Note: Not a music playlist returned from YT music search.", + "TV artist: comedian, TV host etc. (e.g. \"Conan O'Brien\").", + "News audio or video.", + "A video game (e.g. \"Skyrim\"). Note(shohs): As of Q4'18, this content type is not supported as a top-level content type to fulfill a query; rather, it is only used at the entity level to support queries such as \"play Skyrim soundtrack\".", + "TV or film director. (e.g. \"James Cameron\").", + "Actor: TV, film actor etc. (e.g. \"Tom Cruise\").", + "Movie series. (e.g. \"Home Alone\")." + ], + "type": "string" + }, + "image": { + "description": "Images of the media.", + "items": { + "$ref": "AssistantApiCoreTypesImage" + }, + "type": "array" + }, + "name": { + "description": "Name of the media. Required.", + "type": "string" + }, + "newsInfo": { + "$ref": "NlpSemanticParsingModelsMediaNewsInfo", + "description": "Additional info specific to a news audio/video stream (if applicable)." + }, + "personalDataIngestionEngine": { + "description": "The personal ingestion engine.", + "enum": [ + "UNKNOWN_INGESTION_ENGINE", + "PINTS", + "PACIFIC" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "playlistVisibility": { + "description": "Visibility setting of the retrieved playlist.", + "enum": [ + "UNSPECIFIED", + "VISIBILITY_PUBLIC", + "VISIBILITY_PRIVATE", + "VISIBILITY_UNLISTED" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "podcastInfo": { + "$ref": "NlpSemanticParsingModelsMediaPodcastInfo", + "description": "Additional info specific to podcast stream (if applicable)." + }, + "primaryEntityMid": { + "type": "string" + }, + "providerInfo": { + "description": "List of providers and their deeplinks.", + "items": { + "$ref": "NlpSemanticParsingModelsMediaMediaProviderInfo" + }, + "type": "array" + }, + "purchaseInfo": { + "$ref": "NlpSemanticParsingModelsMediaPurchaseInfo", + "description": "Purchase info for purchased or preordered movies, episodes, seasons, tv shows." + }, + "radioInfo": { + "$ref": "NlpSemanticParsingModelsMediaRadioInfo", + "description": "Only one of these fields should be set depending on the type of the content. oneof content_specific_info { Additional info specific to a radio station (if applicable)." + }, + "rentalInfo": { + "$ref": "NlpSemanticParsingModelsMediaRentalInfo", + "description": "Rental info for rented movies." + }, + "source": { + "enum": [ + "UNKNOWN_SOURCE", + "USER_CREATED", + "FAVORITES", + "RECENT", + "PUBLIC", + "USER_OWNED", + "PROVIDER_CURATED", + "CLIENT_REPORTED" + ], + "enumDescriptions": [ + "", + "Media created by user.", + "Media in user favorites.", + "Media from recent user's playbacks.", + "Public media.", + "Public media owned by user, e.g. via purchase.", + "Content curated by provider", + "Content reported by the Assistant client." + ], + "type": "string" + }, + "youtubePlaylistInfo": { + "$ref": "NlpSemanticParsingModelsMediaYouTubePlaylistInfo", + "description": "Additional info specific to YouTube playlist (if applicable)." + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaMediaAnnotationList": { + "description": "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.", + "id": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "properties": { + "annotation": { + "items": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotation" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaMediaProviderInfo": { + "description": "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", + "id": "NlpSemanticParsingModelsMediaMediaProviderInfo", + "properties": { + "deeplinkInfo": { + "description": "Deeplinks provided by the provider. If empty it indicates that the media is unavailable with the provider, e.g. due to country restrictions or limited catalog.", + "items": { + "$ref": "NlpSemanticParsingModelsMediaDeeplinkInfo" + }, + "type": "array" + }, + "kgProviderKey": { + "description": "The unique and reverse unique provider enumerator in KG (e.g., \"ORANGE_SPAIN\" for /g/11h6nkfyrm). It is more stable than the KG mid. See go/kema-api#keys. Some mids cannot have the enumerator property due to historical reason (e.g., multiple media providers were created for iTunes and only \"\"/g/11fhyxjwt5\" has provider enumerator as \"ITUNES_NEW\" in KG). These entities need to have hard-coded key (e.g., \"/m/019g58\" has key \"ITUNES\") kept outside of KG.", + "type": "string" + }, + "mediaId": { + "description": "Media ID of a MediaItem in a MediaBrowseTree (MBT). This field is used to play a specific media item from MBT using playFromMediaId API.", + "type": "string" + }, + "providerMid": { + "description": "The machine ID (MID) of the media provider.", + "type": "string" + }, + "providerName": { + "description": "The name of the media provider.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaMovie": { + "description": "Example: \"Casablanca\"", + "id": "NlpSemanticParsingModelsMediaMovie", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "isAnnotatedFromText": { + "description": "Annotation comes from a text annotator. Needed to boost recall. Typically need to be verified in superroot, and have separate scoring.", + "type": "boolean" + }, + "isFromFastPath": { + "description": "Is annotated by Nimble for the media Fast Path.", + "type": "boolean" + }, + "providerMetadata": { + "items": { + "$ref": "NlpSemanticParsingModelsMediaProviderMetadata" + }, + "type": "array" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"Casablanca\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaMusicArtist": { + "description": "Example: \"The Beatles\"", + "id": "NlpSemanticParsingModelsMediaMusicArtist", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "favorite": { + "description": "If true, indicates the user wants their favorite album. Like [play my favorite album my Eminem]", + "type": "boolean" + }, + "isFromFastPath": { + "description": "Is annotated by Nimble for the media Fast Path.", + "type": "boolean" + }, + "playMore": { + "description": "More from this artist.", + "type": "boolean" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"The Beatles\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaMusicGenre": { + "description": "Example: \"British Invasion\"", + "id": "NlpSemanticParsingModelsMediaMusicGenre", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "playMore": { + "description": "More from this genre.", + "type": "boolean" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"British Invasion\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaMusicPlaylist": { + "description": "Example: \"gym playlist\"", + "id": "NlpSemanticParsingModelsMediaMusicPlaylist", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "isAnnotatedFromText": { + "description": "Annotation comes from a text annotator. Needed to boost recall. Typically need to be verified in superroot, and have separate scoring.", + "type": "boolean" + }, + "longtailMood": { + "description": "If the model is confident that this is a bizarre long-tail mood-based playlist, it can send a signal to downstream systems (that might do things like generate random music) Example: * [play music for brushing my teeth with the lights off on tuesday] This is pretty much an 'easter egg' -- it is not critical.", + "type": "boolean" + }, + "normalizedText": { + "description": "Optional, some canonical name for the playlist.", + "type": "string" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation", + "description": "Needed for proto conformance in Semantic Parsing." + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"80s remix\" (tokenized)", + "type": "string" + }, + "special": { + "enum": [ + "NONE", + "THUMBS_UP", + "LAST_ADDED", + "FREE_AND_PURCHASED" + ], + "enumDescriptions": [ + "", + "Auto playlists defined by the Google Play Music app. [play thumbs up songs]", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaNewsInfo": { + "id": "NlpSemanticParsingModelsMediaNewsInfo", + "properties": { + "docid": { + "description": "The docid of the news result from News360 backend.", + "format": "uint64", + "type": "string" + }, + "newsContentType": { + "description": "Indicates how the type of the news result.", + "enum": [ + "NEWS_CONTENT_TYPE_UNSPECIFIED", + "AMP_ARTICLE_ONLY" + ], + "enumDescriptions": [ + "Default value. This value is unused.", + "News is an Amp textual article. The page has no video or audio." + ], + "type": "string" + }, + "publicationTime": { + "$ref": "AssistantApiTimestamp", + "description": "Publication time of the news, in seconds (unix epoch)." + }, + "publisher": { + "description": "The publisher of the news.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaNewsTopic": { + "description": "Example: \"ukraine\" in a query like \"read me news about Ukraine\"", + "id": "NlpSemanticParsingModelsMediaNewsTopic", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "rawText": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaPaidOfferDetail": { + "description": "Represents BUY and RENT offers and associated cost info. Next ID: 3", + "id": "NlpSemanticParsingModelsMediaPaidOfferDetail", + "properties": { + "cost": { + "description": "Represents the price of this offer according to the locale and region.", + "items": { + "$ref": "NlpSemanticParsingModelsMediaCost" + }, + "type": "array" + }, + "paidOfferType": { + "description": "Specifies the type of offer.", + "enum": [ + "UNKNOWN_PAID_OFFER_TYPE", + "RENT", + "BUY" + ], + "enumDescriptions": [ + "", + "When this value is specified, it indicates that the content is available to rent for a limited time period. The price for renting this content is indicated in the 'cost' field.", + "When this value is specified, it indicates that the content can be purchased and permanently owned. The price for purchasing this content is indicated in the 'cost' field." + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaPodcast": { + "description": "Example: \"This American Life\"", + "id": "NlpSemanticParsingModelsMediaPodcast", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "isAnnotatedFromText": { + "description": "Annotation comes from a text annotator. Needed to boost recall. Typically need to be verified in superroot, and have separate scoring.", + "type": "boolean" + }, + "normalizedText": { + "description": "Optional, some canonical name for the playlist.", + "type": "string" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"this american life\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaPodcastInfo": { + "id": "NlpSemanticParsingModelsMediaPodcastInfo", + "properties": { + "clusterId": { + "description": "An internal identifier for the wernicke database that identifies a cluster of multiple sources for a particular podcast.", + "type": "string" + }, + "episodeGuid": { + "description": "GUID of the given podcast episode.", + "type": "string" + }, + "feedUrl": { + "description": "The url for the rss feed providing this podcast.", + "type": "string" + }, + "podcastRecsFeatures": { + "$ref": "SuperrootPodcastsRecommendationsPodcastRecsFeatures", + "description": "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" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaProviderMetadata": { + "description": "Provider metadata associated with video.", + "id": "NlpSemanticParsingModelsMediaProviderMetadata", + "properties": { + "deeplinkUrl": { + "description": "URL like https://www.netflix.com/title/70305883 -- this is used as a deeplink to play the video.", + "type": "string" + }, + "providerMid": { + "description": "Provider MID.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaPurchaseInfo": { + "id": "NlpSemanticParsingModelsMediaPurchaseInfo", + "properties": { + "orderType": { + "enum": [ + "ORDER_TYPE_UNSPECIFIED", + "PREORDER", + "REGULAR" + ], + "enumDescriptions": [ + "", + "Entitlements will be granted after content is available.", + "Entitlements will be granted immediately after purchase. For regular order." + ], + "type": "string" + }, + "purchaseTimestampSec": { + "description": "The time at which the item is purchased.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaQuantification": { + "description": "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}.", + "id": "NlpSemanticParsingModelsMediaQuantification", + "properties": { + "lexical": { + "enum": [ + "NONE", + "ALL" + ], + "enumDescriptions": [ + "", + "E.g., \"all spakers\"." + ], + "type": "string" + }, + "number": { + "description": "Numerical quantification. E.g., \"three speakers\".", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaRadio": { + "description": "Example: \"107.7 the bone\"", + "id": "NlpSemanticParsingModelsMediaRadio", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "favorite": { + "description": "If true, indicates the user wants their favorite radio station to be played. Ex: [play my favorites on radio]", + "type": "boolean" + }, + "frequency": { + "$ref": "NlpSemanticParsingModelsMediaFrequency", + "description": "This proto may only be partially filled depending on the query. ## Some examples (all of them have open_intent): ## | Query |radio.raw_text|radio.frequency.band|radio.frequency.value| |[play kqed fm]| [kqed fm] | [fm] | N/A | |[play 88.5 fm]| [88.5 fm] | [fm] | 88.5 | | [play 88.5 | [88.5] | N/A | 88.5 | ## | [play fm] | [fm] | [fm] | N/A |" + }, + "isAnnotatedFromText": { + "description": "Annotation comes from a text annotator. Needed to boost recall. Typically need to be verified in superroot, and have separate scoring.", + "type": "boolean" + }, + "isFromFastPath": { + "description": "Is annotated by Nimble for the media Fast Path.", + "type": "boolean" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"107.7\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaRadioInfo": { + "description": "Metadata for a radio station (both terrestrial and internet). Next ID: 4", + "id": "NlpSemanticParsingModelsMediaRadioInfo", + "properties": { + "frequency": { + "$ref": "NlpSemanticParsingModelsMediaFrequency", + "description": "Frequency of the terrestrial radio station." + }, + "location": { + "$ref": "NlpSemanticParsingModelsMediaLatLng", + "description": "Location of the radio station." + }, + "popularity": { + "description": "Popularity of the radio station. This will be used in ranking of the radio stations. This value should be between 0 (least popular) and 5 (most popular).", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaRadioNetwork": { + "description": "Example: \"npr\", \"bbc\", etc.", + "id": "NlpSemanticParsingModelsMediaRadioNetwork", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"npr\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaRentalInfo": { + "id": "NlpSemanticParsingModelsMediaRentalInfo", + "properties": { + "activatePeriodSec": { + "description": "Time period for users to continue watching.", + "format": "int64", + "type": "string" + }, + "grantPeriodSec": { + "description": "Time period for users to begin watching.", + "format": "int64", + "type": "string" + }, + "purchaseTimestampSec": { + "description": "The time at which the item is purchased.", + "format": "int64", + "type": "string" + }, + "validUntilTimestampSec": { + "description": "Time until which ownership is granted", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaSeasonConstraint": { + "description": "Example: \"season 2\" of serial", + "id": "NlpSemanticParsingModelsMediaSeasonConstraint", + "properties": { + "absoluteIndex": { + "description": "The absolute index of the season. 1 is the first element and -1 is the last element in the sequence, -2 is the second-to-last element, and so on. Examples: \"first season\" =\u003e 1 \"3rd season\" =\u003e 3 \"last season\" =\u003e -1", + "format": "int32", + "type": "integer" + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "rawText": { + "type": "string" + }, + "relativeIndex": { + "description": "The relative index of the season. Examples: \"previous season\" =\u003e -1 \"current season\" =\u003e 0 \"next season\" =\u003e 1", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaSong": { + "description": "Example: \"Hey Jude\"", + "id": "NlpSemanticParsingModelsMediaSong", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "favorite": { + "description": "If true, indicates the user wants their favorite album. Like [play my favorite song]", + "type": "boolean" + }, + "first": { + "description": "If true, indicates the user wants the first song. Like [play adele's first song]", + "type": "boolean" + }, + "isAnnotatedFromText": { + "description": "Annotation comes from a text annotator. Needed to boost recall. Typically need to be verified in superroot, and have separate scoring.", + "type": "boolean" + }, + "isFromFastPath": { + "description": "Is annotated by Nimble for the media Fast Path.", + "type": "boolean" + }, + "latest": { + "description": "If true, indicates the user wants the latest song. Like, [play adele's latest song]", + "type": "boolean" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation", + "description": "Optional, indicates this reference came from QRef." + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"Hey Jude.\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaTVShow": { + "description": "Example: \"Breaking Bad\"", + "id": "NlpSemanticParsingModelsMediaTVShow", + "properties": { + "annotationList": { + "$ref": "NlpSemanticParsingModelsMediaMediaAnnotationList", + "description": "Annotations from custom media annotator." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "isFromFastPath": { + "description": "Is annotated by Nimble for the media Fast Path.", + "type": "boolean" + }, + "providerMetadata": { + "items": { + "$ref": "NlpSemanticParsingModelsMediaProviderMetadata" + }, + "type": "array" + }, + "qref": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "rawText": { + "description": "Required, corresponds to the raw text, like \"Breaking Bad\"", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaYouTubeDeeplinkInfo": { + "description": "Provide the deeplink information specific to YouTube PMAs. Next ID: 3", + "id": "NlpSemanticParsingModelsMediaYouTubeDeeplinkInfo", + "properties": { + "clickTrackingId": { + "description": "See go/yt-clicktracking. Serialized youtube.api.innertube.InnerTubeClickTrackingProto.", + "type": "string" + }, + "uploaderChannelId": { + "description": "For YouTube Channels, by default the deeplink is set to be the playlist of all uploads from the channel. This field is used for YouTube in-app browse when we need the YouTube channel's main page url. We will use the uploader_channel_id to construct the needed channel deeplink.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMediaYouTubePlaylistInfo": { + "id": "NlpSemanticParsingModelsMediaYouTubePlaylistInfo", + "properties": { + "numVidsPlayableInWoodstock": { + "description": "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.", + "format": "int64", + "type": "string" + }, + "videoCount": { + "description": "Total number of videos present in the retrieved playlist.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMoneyCurrency": { + "id": "NlpSemanticParsingModelsMoneyCurrency", + "properties": { + "freebaseMid": { + "description": "KG Currency mid", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsMoneyMoney": { + "description": "Represent a money quantity", + "id": "NlpSemanticParsingModelsMoneyMoney", + "properties": { + "amount": { + "$ref": "NlpSemanticParsingNumberNumber" + }, + "currency": { + "$ref": "NlpSemanticParsingModelsMoneyCurrency" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsNarrativeNewsNewsProvider": { + "description": "Corresponds to an entry in our hand-curated Nimble table of providers.", + "id": "NlpSemanticParsingModelsNarrativeNewsNewsProvider", + "properties": { + "data": { + "$ref": "QualityActionsNewsProviderAnnotationData", + "description": "Annotation data for the provider." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua and must not be used by outside clients!!" + }, + "rawText": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsOnDevice": { + "description": "OnDevice describes the device(s) to perform an action. This message type can be imported in action messages as an argument.", + "id": "NlpSemanticParsingModelsOnDevice", + "properties": { + "device": { + "description": "The device(s) to perform an action.", + "items": { + "$ref": "NlpSemanticParsingModelsDevice" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsPersonPerson": { + "id": "NlpSemanticParsingModelsPersonPerson", + "properties": { + "alternativeNameInfo": { + "description": "Alternative names like \"John\" for \"Joan\", with info such as RecognitionAlternateSource indicating where is it from.", + "items": { + "$ref": "QualityQrewriteAlternativeNameInfo" + }, + "type": "array" + }, + "alternativeNames": { + "description": "Alternative names, e.g., names with similar pronunciation, Kathy and Cathy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "annotationSource": { + "items": { + "enum": [ + "PERSONAL_CONTACT", + "RELATIONSHIP", + "NAMES", + "NAME_DETECTION", + "SAFT", + "PERSONAL_KNOWLEDGE_GRAPH", + "PRESENCE_PEOPLE_SEARCH", + "LOOSE_TEXT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "This will eventually subsume PERSONAL_CONTACT and RELATIONSHIP too. Reach out to pkg-eng@ for questions.", + "Person names from Presence / People Search project (go/presence-people-search-intent). Contact search-ugc-ny@ for questions.", + "Ungrounded annotation from loose text parsing. See go/call-ambiguous-in-initiate-call." + ], + "type": "string" + }, + "type": "array" + }, + "contactData": { + "description": "Contact metadata. Only available for personal contact.", + "items": { + "$ref": "QualityQrewritePersonalContactData" + }, + "type": "array" + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua. Must not be used by outside clients!!" + }, + "isPersonGroupReference": { + "description": "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.", + "type": "boolean" + }, + "isPersonalContact": { + "description": "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).", + "type": "boolean" + }, + "name": { + "description": "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\"", + "type": "string" + }, + "normalizedText": { + "description": "Normalized text produced by annotator. Some annotators generate a normalized version to help better match with contact list.", + "type": "string" + }, + "pkgSemantics": { + "$ref": "NlpSemanticParsingQRefAnnotation", + "description": "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" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsRecurrence": { + "description": "Recurrence rule for specifying date- and time-based repetition for tasks. Next id: 12.", + "id": "NlpSemanticParsingModelsRecurrence", + "properties": { + "dailyPattern": { + "$ref": "NlpSemanticParsingModelsRecurrenceDailyPattern", + "description": "Optional. Specifies when in the day the task should occur. Applies to all frequencies DAILY and greater. If absent, the repeating tasks are considered \"all day\" type." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "This field of the Recurrence message should not in general be used by outside clients of the grammar. It is intended to be used internally in Aqua for evaluation purposes. The rationale is that token counts depend on the particular tokenization used in Aqua which may be different from the one used by the client and may change from time to time. Outside clients should not create a dependency on the current tokenization used in Aqua." + }, + "every": { + "description": "Multiplier on the frequency of the recurrence. Use this to specify patterns that recur every X days, months, years, etc. Example: [remind me to call mom every 2nd week]. Default is 1 (every day, every month, every year). Floating point numbers are understood and rounded to the nearest integer. E.g. \"every 2.8 months\" =\u003e (every 3)", + "format": "int32", + "type": "integer" + }, + "frequency": { + "description": "Required. The high-level frequency of the recurrence.", + "enum": [ + "DAILY", + "WEEKLY", + "MONTHLY", + "YEARLY", + "UNKNOWN" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "Frequency is set to UNKNOWN when there's no explicit unit of recurrence. Example: [set a repeating alarm]." + ], + "type": "string" + }, + "monthlyPattern": { + "$ref": "NlpSemanticParsingModelsRecurrenceMonthlyPattern", + "description": "Specify a monthly recurrence. Valid and required for MONTHLY frequencies only." + }, + "numInstancesInFrequency": { + "description": "How many times the task should be repeated within the frequency interval. Floating point numbers are understood and rounded to the nearest integer. E.g. \"3.8 times per week\" =\u003e (num_instances_in_frequency 4)", + "format": "int32", + "type": "integer" + }, + "recurrenceEnd": { + "$ref": "NlpSemanticParsingModelsRecurrenceRecurrenceEnd", + "description": "Required. The end condition for the recurrence." + }, + "recurrenceStart": { + "$ref": "NlpSemanticParsingModelsRecurrenceRecurrenceStart", + "description": "Required. The start of the recurrence." + }, + "time": { + "$ref": "NlpSemanticParsingDatetimeDateTime", + "description": "Optional time included with some types of recurrence phrases, such as \"every morning\"." + }, + "weeklyPattern": { + "$ref": "NlpSemanticParsingModelsRecurrenceWeeklyPattern", + "description": "Specify a weekly recurrence. Valid and required for WEEKLY frequencies only." + }, + "yearlyPattern": { + "$ref": "NlpSemanticParsingModelsRecurrenceYearlyPattern", + "description": "Specify a yearly recurrence. Valid only for YEARLY frequencies." + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsRecurrenceDailyPattern": { + "description": "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).", + "id": "NlpSemanticParsingModelsRecurrenceDailyPattern", + "properties": { + "dayPeriod": { + "$ref": "NlpSemanticParsingDateTimeAnnotation" + }, + "timeOfDay": { + "$ref": "NlpSemanticParsingDateTimeAnnotation" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsRecurrenceMonthlyPattern": { + "description": "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.", + "id": "NlpSemanticParsingModelsRecurrenceMonthlyPattern", + "properties": { + "lastDay": { + "description": "Special flag to indicate the last day of the month, equivalent to setting month_day to -1. Deprecated, use month_day=-1 instead.", + "type": "boolean" + }, + "lastWeek": { + "description": "Special flag to indicate a week_day in the last week of the month, as this cannot be captured by week_day_number. Deprecated, use week_day_number=-1 instead.", + "type": "boolean" + }, + "monthDay": { + "description": "Absolute day of the month (if positive) or relative day from the end of the month (if negative). Example: 2nd and 20th of the month [2, 20]. Example: Last day of the month [-1]. Positive values should correspond to actual calendar day number (indexing starts at 1).", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "weekDay": { + "description": "For capturing the nth weekday of the month. Use together with week_day_number or last_week to specify n.", + "enum": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "weekDayNumber": { + "description": "The nth occurrence of week_day to match. I.e. For 3rd Wednesday of the month, week_day = WEDNESDAY and week_day_number = 3. Values beyond the end of the month are skipped. If negative, this is interpreted as the nth-to-last occurrence of the week day in the month. I.e. for last Thursday of the month, week_day = THURSDAY and week_day_number = -1.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsRecurrenceRecurrenceEnd": { + "description": "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.", + "id": "NlpSemanticParsingModelsRecurrenceRecurrenceEnd", + "properties": { + "autoRenew": { + "description": "Should be used in cases where the size of the recurrence is infinite (no end date specified), in which case we rely on an offline process to extend. Set by server only, setting it on a new recurrence will throw an exception.", + "type": "boolean" + }, + "autoRenewUntil": { + "$ref": "NlpSemanticParsingDateTimeAnnotation", + "description": "Used in cases where the recurrence is too large to create in a single transaction. In this case we create a manageable number of instances initially and rely on an offline process to continually extend the recurrence until this date. Set by server only, setting it on a new recurrence will throw an exception." + }, + "endDateTime": { + "$ref": "NlpSemanticParsingDateTimeAnnotation" + }, + "endMillis": { + "description": "Deprecated - prefer end_date_time.absolute_time_ms.", + "format": "int64", + "type": "string" + }, + "numOccurrences": { + "description": "Note that auto-renewing is not supported in conjunction with num_occurrences. Therefore we impose a hard limit of 1000 when using this field.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsRecurrenceRecurrenceStart": { + "description": "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.", + "id": "NlpSemanticParsingModelsRecurrenceRecurrenceStart", + "properties": { + "startDateTime": { + "$ref": "NlpSemanticParsingDateTimeAnnotation", + "description": "Only the year/month/day portion are used to find the start date of the recurrence. To specify a time or period of each instance, use DailyPattern." + }, + "startMillis": { + "description": "Deprecated - prefer start_date_time.absolute_time_ms.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsRecurrenceWeeklyPattern": { + "description": "Pattern for a WEEKLY recurrence. You must specify at least one week_day.", + "id": "NlpSemanticParsingModelsRecurrenceWeeklyPattern", + "properties": { + "weekDay": { + "description": "Set of weekdays the recurrence applies to.", + "items": { + "enum": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "weeklyPatternEnd": { + "enum": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "weeklyPatternStart": { + "enum": [ + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY", + "SUNDAY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsRecurrenceYearlyPattern": { + "description": "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 ", + "id": "NlpSemanticParsingModelsRecurrenceYearlyPattern", + "properties": { + "monthlyPattern": { + "$ref": "NlpSemanticParsingModelsRecurrenceMonthlyPattern", + "description": "The monthly pattern to recur." + }, + "yearMonth": { + "description": "The months of the year to apply the pattern.", + "items": { + "enum": [ + "JANUARY", + "FEBRUARY", + "MARCH", + "APRIL", + "MAY", + "JUNE", + "JULY", + "AUGUST", + "SEPTEMBER", + "OCTOBER", + "NOVEMBER", + "DECEMBER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantBrandPhrase": { + "description": "A brand can be any combination of text or mid.", + "id": "NlpSemanticParsingModelsShoppingAssistantBrandPhrase", + "properties": { + "mid": { + "type": "string" + }, + "rawText": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantMerchant": { + "description": "A merchant that sells products.", + "id": "NlpSemanticParsingModelsShoppingAssistantMerchant", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "This field should not be used by clients of the grammar. It is intended to be used internally in Aqua for metric and regression tests." + }, + "localMerchantId": { + "description": "Merchant Center identifier for LIA merchants.", + "format": "int64", + "type": "string" + }, + "mcid": { + "items": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantMerchantMerchantCenterId" + }, + "type": "array" + }, + "merchantId": { + "description": "Merchant Center identifier for GSX merchants. Deprecated: use MerchantCenterId.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "mid": { + "description": "Optional. Knowledge Graph identifier for the merchant.", + "type": "string" + }, + "name": { + "description": "A name for the merchant. Example: Walmart", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantMerchantMerchantCenterId": { + "description": "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.", + "id": "NlpSemanticParsingModelsShoppingAssistantMerchantMerchantCenterId", + "properties": { + "id": { + "format": "int64", + "type": "string" + }, + "isGsx": { + "type": "boolean" + }, + "isLocal": { + "type": "boolean" + }, + "isPla": { + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantOffer": { + "description": "A product for sale from a particular merchant, possibly available at a specific store.", + "id": "NlpSemanticParsingModelsShoppingAssistantOffer", + "properties": { + "docid": { + "description": "The offer document id as used in Shopping's metadata.", + "format": "uint64", + "type": "string" + }, + "merchant": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantMerchant", + "description": "The merchant selling the product." + }, + "price": { + "$ref": "NlpSemanticParsingModelsMoneyMoney", + "description": "The price of the product sold by the merchant." + }, + "product": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProduct", + "description": "The product for sale." + }, + "store": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantStore", + "description": "Optional. The physical store where the product can be purchased." + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantPhrase": { + "description": "A phrase parsed from a user query.", + "id": "NlpSemanticParsingModelsShoppingAssistantPhrase", + "properties": { + "brand": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantBrandPhrase" + }, + "offer": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantOffer" + }, + "product": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductPhrase" + }, + "unrecognized": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantUnrecognizedPhrase" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantProduct": { + "description": "A product that can be purchased.", + "id": "NlpSemanticParsingModelsShoppingAssistantProduct", + "properties": { + "catalogId": { + "description": "The shopping catalog identifier.", + "format": "uint64", + "type": "string" + }, + "maxPrice": { + "$ref": "NlpSemanticParsingModelsMoneyMoney", + "description": "The highes price this product is available for." + }, + "mediaProduct": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductMediaProduct", + "description": "TODO(ppoudyal) Add logging for media_product." + }, + "mid": { + "description": "Optional. Knowledge Graph identifier for the product.", + "type": "string" + }, + "minPrice": { + "$ref": "NlpSemanticParsingModelsMoneyMoney", + "description": "The lowest price this product is available for." + }, + "title": { + "description": "Title of the product. Example: Moto X Blue 64GB Note: This refers to only the catalog title not user specified phrase", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantProductClassification": { + "description": "Whether the product being described fits into specific categories (e.g., \"video games\").", + "id": "NlpSemanticParsingModelsShoppingAssistantProductClassification", + "properties": { + "bookConfidence": { + "description": "TODO(ppoudyal) Expand confidence to cases where the product phrase might be a book/movie/video_game but isn't just a title The score (between 0 - 1) measuring the confidence that product", + "format": "float", + "type": "number" + }, + "isVideoGame": { + "description": "TODO(ppoudyal) Deprecate is_video_game once the score covers all cases covered by $VideoGameProductPhrase The product phrase contains a video game title.", + "type": "boolean" + }, + "movieConfidence": { + "description": "phrase mentions a book title The score (between 0 - 1) measuring the confidence that product", + "format": "float", + "type": "number" + }, + "videoGameConfidence": { + "description": "phrase mentions a movie title The score (between 0 - 1) measuring the confidence that product", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantProductExpression": { + "description": "An expression parsed from a user query that describes a product or set of products.", + "id": "NlpSemanticParsingModelsShoppingAssistantProductExpression", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "This field should not be used by clients of the grammar. It is intended to be used internally in Aqua for metric and regression tests." + }, + "grammaticalGender": { + "enum": [ + "UNKNOWN_GENDER", + "FEMININE", + "MASCULINE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "grammaticalNumber": { + "enum": [ + "UNKNOWN_NUMBER", + "PLURAL", + "SINGULAR", + "DUAL" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "phrases": { + "description": "Ordered list of phrases that the user used to describe a product.", + "items": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantPhrase" + }, + "type": "array" + }, + "productClassification": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductClassification" + }, + "shoppingListItemInfo": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantShoppingListItemInfo", + "description": "Associated shopping list item info. Only set when the product is come from a shopping list item." + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantProductMediaProduct": { + "description": "A media product that can be purchased", + "id": "NlpSemanticParsingModelsShoppingAssistantProductMediaProduct", + "properties": { + "author": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue", + "description": "The author of the media" + }, + "genre": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue", + "description": "The genre of the media" + }, + "mediaTitle": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue", + "description": "The title of the media Example: The assasin's creed" + }, + "orderInSeries": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue", + "description": "Order in media series (series title is given by the product title)" + }, + "topic": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue", + "description": "The topic of the media" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue": { + "id": "NlpSemanticParsingModelsShoppingAssistantProductMediaProductMediaAttributeValue", + "properties": { + "mid": { + "description": "The knowledge graph identifier for the attribute", + "type": "string" + }, + "rawText": { + "description": "Raw text of the media attribute (eg. author)", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantProductPhrase": { + "description": "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", + "id": "NlpSemanticParsingModelsShoppingAssistantProductPhrase", + "properties": { + "metadata": { + "$ref": "NlpSemanticParsingModelsShoppingAssistantProduct" + }, + "rawText": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantShoppingListItemInfo": { + "id": "NlpSemanticParsingModelsShoppingAssistantShoppingListItemInfo", + "properties": { + "itemId": { + "type": "string" + }, + "listId": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantStore": { + "description": "A merchant's physical store.", + "id": "NlpSemanticParsingModelsShoppingAssistantStore", + "properties": { + "id": { + "description": "Local store identifier.", + "format": "uint64", + "type": "string" + }, + "location": { + "$ref": "NlpSemanticParsingLocalLocation", + "description": "The location of the store." + }, + "name": { + "description": "A name for the store. Example: Walmart - Cranberry", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingModelsShoppingAssistantUnrecognizedPhrase": { + "description": "A span in a user query that could not be identified as any other type of `Phrase`.", + "id": "NlpSemanticParsingModelsShoppingAssistantUnrecognizedPhrase", + "properties": { + "rawText": { + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingNumberFractionNumber": { + "id": "NlpSemanticParsingNumberFractionNumber", + "properties": { + "denominator": { + "$ref": "NlpSemanticParsingNumberSimpleNumber" + }, + "numerator": { + "$ref": "NlpSemanticParsingNumberSimpleNumber", + "description": "Fields for fraction numbers" + }, + "precision": { + "description": "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", + "format": "int32", + "type": "integer" + }, + "wholeNumber": { + "$ref": "NlpSemanticParsingNumberSimpleNumber", + "description": "This field is set only for mixed fraction" + } + }, + "type": "object" + }, + "NlpSemanticParsingNumberNumber": { + "description": "Next ID: 9", + "id": "NlpSemanticParsingNumberNumber", + "properties": { + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Span info of the annotation - mostly used for evaluation purpose. Note: this data must never be used outside Aqua because it relies on the internal tokenization used in Aqua that could change over time." + }, + "fractionNumber": { + "$ref": "NlpSemanticParsingNumberFractionNumber" + }, + "isSpelledOut": { + "description": "An optional field that holds whether the number_type number is a normalized spelled-out number or not. This field will not be set in cases when this information is not available.", + "type": "boolean" + }, + "modifier": { + "description": "NumberModifier is used to capture when the expression is not an absolute number, but a number expression to represent an increase/decrease/comparison. E.g. [10 more percent], [5 less].", + "enum": [ + "UNKNOWN", + "ADD", + "SUBTRACT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "normalizedValue": { + "description": "Contains a normalized string representation of the numeric value that has: * No digit grouping delimiter (e.g. \",\" in english). * Decimal mark (if present) as \".\" (dot). For fraction_number, this contains the floating point representation of the fraction. The number of digits after the decimal point is defined in the precision field of fraction_number.proto.", + "type": "string" + }, + "rawText": { + "description": "The raw text of the annotation.", + "type": "string" + }, + "simpleNumber": { + "$ref": "NlpSemanticParsingNumberSimpleNumber" + }, + "spelledOutType": { + "description": "We expect this field to be set only when is_spelled_out is true.", + "enum": [ + "UNKNOWN_SPELLED_OUT_TYPE", + "FULL_NUMBER", + "LIST_OF_SINGLE_DIGITS", + "SHORTHAND", + "COMBINED" + ], + "enumDescriptions": [ + "", + "A fully spelled out number. e.g: [two], [half], [one hundred forty five], [one point twenty five].", + "A list of spelled out single digits with more than 1 element. e.g: [two oh], [one four five], [six oh nine], [one point five five].", + "A shorthand number form. e.g: [1K], [1m].", + "An interpretation that combines two or more of the other forms with or without written (non spelled-out) forms, or one of the other forms combined with written forms. e.g: [1 hundred], [one forty five], [one point two fifteen], [twenty oh two], [one hundred twenty two point two two], [one twenty two point two two], [one two two point 22]." + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingNumberSimpleNumber": { + "description": "Next ID: 8", + "id": "NlpSemanticParsingNumberSimpleNumber", + "properties": { + "decimalMark": { + "description": "The type of decimal mark that was present before normalization. Note: different locales may use different decimal marks.", + "enum": [ + "NO_DELIMITER", + "DOT", + "COMMA", + "SPACE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "groupingDelimiter": { + "description": "The type of digit grouping delimiter that was present before normalization. Note: different locales may use different digit grouping delimiters.", + "enum": [ + "NO_DELIMITER", + "DOT", + "COMMA", + "SPACE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "groupingSystem": { + "description": "We expect this field to be set only when grouping_delimiter is set.", + "enum": [ + "UNKNOWN_GROUPING_SYSTEM", + "GROUPBY_3_DIGITS", + "GROUPBY_4_DIGITS", + "GROUPBY_INDIAN_SYSTEM" + ], + "enumDescriptions": [ + "", + "Western languages group by thousands: 10^3, 10^6 ...", + "East Asian languages prefer grouping by myriads: 10^4, 10^8, ...", + "The Indian system is more complex because of the Stravinskian alternation between lakhs and crores." + ], + "type": "string" + }, + "normalizedValue": { + "description": "Contains a normalized string representation of the numeric value that has: * No digit grouping delimiter (e.g. \",\" in english). * Decimal mark (if present) as \".\" (dot). This field is kept for backward compatibility. The field is also available in number.proto", + "type": "string" + }, + "prefix": { + "description": "Stores prefix output by the GRM number grammar (http://b/28623478).", + "type": "string" + }, + "suffix": { + "description": "Stores suffix output", + "type": "string" + }, + "type": { + "enum": [ + "UNKNOWN_NUMBER_TYPE", + "INT", + "FLOAT", + "ORDINAL", + "PERCENTAGE" + ], + "enumDescriptions": [ + "", + "An integer number: [2], [1,000], [one hundred five].", + "Floating point number: [0.2], [3.14], [1,000.1].", + "Ordinal number: [2nd], [twenty third].", + "Percentage: [5%], [50 percent], [five percent]." + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingPersonalIntelligenceEntity": { + "description": "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.", + "id": "NlpSemanticParsingPersonalIntelligenceEntity", + "properties": { + "airlineConfig": { + "$ref": "TravelFlightsAirlineConfig", + "description": "Used if the entity is an airline with an airline annotation." + }, + "evalData": { + "$ref": "NlpSemanticParsingAnnotationEvalData", + "description": "Required, but should only be used inside Aqua. Must not be used by outside clients!!" + }, + "name": { + "description": "raw string representation", + "type": "string" + }, + "qrefAnnotation": { + "$ref": "NlpSemanticParsingQRefAnnotation" + } + }, + "type": "object" + }, + "NlpSemanticParsingPersonalReferenceAnnotation": { + "description": "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.", + "id": "NlpSemanticParsingPersonalReferenceAnnotation", + "properties": { + "reference": { + "$ref": "NlpSemanticParsingQRefAnnotation", + "description": "A Copley Personal Reference represents a user's reference to a something that could be personal entity, e.g. \"my hotel\", \"mom\", \"brunch\"." + }, + "resolutions": { + "description": "A Copley Personal Resolution represents the resolution of a Reference, e.g. if the user has a reservation at The Kendall Hotel, the reference \"my hotel\" could be resolved to The Kendall Hotel, and there would be a QRefAnnotation containing the mid and other data. It is possible for there to be zero resolutions for a given reference.", + "items": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingProtoActionsOnGoogleAogSlot": { + "description": "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", + "id": "NlpSemanticParsingProtoActionsOnGoogleAogSlot", + "properties": { + "entityId": { + "description": "ID of the entity of this slot.", + "type": "string" + }, + "numBytes": { + "description": "Number of bytes of this slot in resolved query.", + "format": "int32", + "type": "integer" + }, + "original": { + "description": "Part of input text, matched by that slot. In the case of composite slots, each slot should have its own original.", + "type": "string" + }, + "parameterName": { + "description": "Name of parameter of this slot.", + "type": "string" + }, + "slotList": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleSlotList", + "description": "Represents a \"list parameter\". Each parameter may be declared as a list and have multiple slot values, referenced by a single alias. Each slot value in a list may contain multiple possible values. For example: aqua return 3 dates if the year is not specified in a query - one for the current year, one for the past year, and one for the following year. If user defines a list parameter with type @sys.date, and the query contains multiple dates - we should return a list of possible values for each date from the query, i.e. it will be a list of list of dates." + }, + "slotMap": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleSlotMap", + "description": "Represents a structured value. Used in composite entities. Composite entities can have arbitrary structure." + }, + "startByte": { + "description": "Start byte position of this slot in resolved query.", + "format": "int32", + "type": "integer" + }, + "value": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleSlotValue", + "description": "One or more possible values. This field does not represent a list parameter." + } + }, + "type": "object" + }, + "NlpSemanticParsingProtoActionsOnGoogleDateTime": { + "description": "Represents datetime. It can be @sys.date, @sys.time or, in some cases, @sys.date-time. 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.", + "id": "NlpSemanticParsingProtoActionsOnGoogleDateTime", + "properties": { + "date": { + "$ref": "GoogleTypeDate", + "description": "Date value. Note, that month and day are 1 based. If this DateTime is a PARTIAL datetime, then fields have value -1, which means these fields are inferred rather than derived directly from query." + }, + "property": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleDateTimeProperty", + "description": "Property of this DateTime value that can be used to match user specification of parameters, e.g. date.recent." + }, + "time": { + "$ref": "GoogleTypeTimeOfDay", + "description": "Time value. Only hours and minutes are used. Hours are in 24h format." + }, + "timeZone": { + "$ref": "GoogleTypeTimeZone", + "description": "Timezone field specified only if this DateTime has type TIME or DATETIME." + } + }, + "type": "object" + }, + "NlpSemanticParsingProtoActionsOnGoogleDateTimeProperty": { + "description": "Represents properties about a matched DateTime value. Will only be populated for @sys.date-time, @sys.date and @sys.time.", + "id": "NlpSemanticParsingProtoActionsOnGoogleDateTimeProperty", + "properties": { + "datetimeType": { + "description": "Since datetime is a superset of date, time and date\u0026time, this field is used to indicate which type the associated DateTime object belongs to.", + "enum": [ + "UNSPECIFIED_TYPE", + "DATE", + "TIME", + "DATETIME" + ], + "enumDescriptions": [ + "Default type.", + "Date-only.", + "Time-only.", + "Date \u0026 time." + ], + "type": "string" + }, + "relativeDatetimeType": { + "description": "The relative relationship between this DateTime value and DateTime\u0026Timezone info provided in ClassifyRequest.", + "enum": [ + "UNSPECIFIED_RELATIVE_TYPE", + "RECENT", + "FUTURE_OR_NOW", + "PARTIAL" + ], + "enumDescriptions": [ + "Default type.", + "date-time.recent", + "date-time", + "date-time.partial" + ], + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingProtoActionsOnGoogleSlotList": { + "description": "Oneof doesn't allow list, this message is used to inject list as a possible value into Slot.", + "id": "NlpSemanticParsingProtoActionsOnGoogleSlotList", + "properties": { + "slots": { + "items": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleAogSlot" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingProtoActionsOnGoogleSlotMap": { + "description": "Oneof doesn't allow maps, this message is used to inject map as a possible value into Slot.", + "id": "NlpSemanticParsingProtoActionsOnGoogleSlotMap", + "properties": { + "slots": { + "additionalProperties": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleAogSlot" + }, + "type": "object" + } + }, + "type": "object" + }, + "NlpSemanticParsingProtoActionsOnGoogleSlotValue": { + "description": "Contains one or more possible values.", + "id": "NlpSemanticParsingProtoActionsOnGoogleSlotValue", + "properties": { + "values": { + "items": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleSlotValueSingleValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingProtoActionsOnGoogleSlotValueSingleValue": { + "description": "Represents an actual value.", + "id": "NlpSemanticParsingProtoActionsOnGoogleSlotValueSingleValue", + "properties": { + "dateTimeValue": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleDateTime", + "description": "Represents date or time." + }, + "stringValue": { + "description": "Represents a string value.", + "type": "string" + }, + "typeValue": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleTypedValue", + "description": "This field is only populated by on-device Heron. This field should not be populated by any other service." + } + }, + "type": "object" + }, + "NlpSemanticParsingProtoActionsOnGoogleTypedValue": { + "description": "Used by on-device Heron. Contains information about the type of slot value returned.", + "id": "NlpSemanticParsingProtoActionsOnGoogleTypedValue", + "properties": { + "boolValue": { + "description": "Represents a boolean value.", + "type": "boolean" + }, + "dateTimeValue": { + "$ref": "NlpSemanticParsingProtoActionsOnGoogleDateTime", + "description": "Represents date or time." + }, + "numberValue": { + "description": "Represents number value. In accordance to ParamValue fields(https://source.corp.google.com/piper///depot/google3/third_party/java_src/appactions/proto/app_actions_data.proto;rcl=431529042;l=12)", + "format": "double", + "type": "number" + }, + "stringValue": { + "description": "Represents a string value.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingQRefAnnotation": { + "description": "The QRefAnnotator annotates spans of input with freebase-ids and collection-information. NEXT ID TO USE: 41", + "id": "NlpSemanticParsingQRefAnnotation", + "properties": { + "addedByCloseAnswers": { + "description": "Whether this qref annotation was created by CloseAnswers on Postref. Annotations of this type don't correspond to a particular mention of the entity on the query but rather to an interpretation of the full query.", + "type": "boolean" + }, + "annotatedSpan": { + "description": "A copy of the span of canonical (raw) parser input text corresponding to this annotation.", + "type": "string" + }, + "attributeId": { + "description": "Attribute ID of a personal_summary_node_child.", + "type": "string" + }, + "clusterId": { + "description": "The ID of the cluster (set entity) this entity belongs to.", + "type": "string" + }, + "clusterSetScore": { + "description": "Cluster set qref confidence score.", + "format": "double", + "type": "number" + }, + "clusterSiblingMid": { + "description": "The set of mids that are members of the same cluster.", + "items": { + "type": "string" + }, + "type": "array" + }, + "collectionMembership": { + "items": { + "$ref": "NlpSemanticParsingQRefAnnotationCollectionMembership" + }, + "type": "array" + }, + "confidenceScore": { + "description": "The confidence (in [0, 1]) of the entity being correctly annotated.", + "format": "double", + "type": "number" + }, + "deprecatedEquivalentMids": { + "description": "DEPRECATED: Equivalent ids (e.g. de-duped mids) for this entity.", + "items": { + "type": "string" + }, + "type": "array" + }, + "deprecatedMdvcSupportingMid": { + "description": "DEPRECATED: Higher level id's that support the given id. This field has been deprecated in favor of related_entity. b/27363861", + "items": { + "type": "string" + }, + "type": "array" + }, + "displayName": { + "description": "Copy the display info. This can be used by annotators to give grammars a canonical name for an entity. For instance, the media grammar could use it to output the same canonical name for \"rock music\" and \"rock\".", + "type": "string" + }, + "entityNumber": { + "description": "The index of the entity from which this annotation is obtained, within the WebrefEntities message in the interpretation defined by interpretation_number, above.", + "format": "int32", + "type": "integer" + }, + "entityRelationship": { + "description": "The relationship information from QRef. Only included if the QRefAnnotator is initialised with include_annotated_relationships.", + "items": { + "$ref": "NlpSemanticParsingQRefAnnotationEntityRelationship" + }, + "type": "array" + }, + "entitySourceData": { + "$ref": "NlpSemanticParsingEntitySourceData", + "description": "Holds information about the backends which contributed to this entity." + }, + "freebaseMid": { + "description": "The mid of the entity in freebase associated with this span.", + "type": "string" + }, + "gaiaId": { + "description": "The Gaia ID for this entity. This is populated generally for people and businesses.", + "format": "uint64", + "type": "string" + }, + "globalProductClusterId": { + "description": "The shopping global product cluster id(s) of the annotated entity (in KG, the key(s) of type /business/variant_cluster).", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "interpretationNumber": { + "description": "The index of the QueryJoin interpretation from which this annotation was obtained. This field is not used for entities coming from low-confidence annotations, since such entities are not included in any interpretation.", + "format": "int32", + "type": "integer" + }, + "isMdvcDimension": { + "description": "True if this entity is an mdvc dimension of some other annotated entity. Only included if the QRefAnnotator is initialised with include_annotated_relationships.", + "type": "boolean" + }, + "isNimbleAnnotation": { + "description": "Whether this annotation originates from nimble. (go/nimble-annotator)", + "type": "boolean" + }, + "location": { + "$ref": "GeostorePointProto", + "description": "The center point of this location. This is either directly provided by the FeatureProto.center field or the centroid using the points of the polygon in the FeatureProto." + }, + "locationType": { + "description": "The location type of the entity, as an int32 representing a TypeCategory enum value. For example, this could be TYPE_LOCALITY (37) or TYPE_COUNTRY (33). We store this type as an int because including FeatureProto would cause java/com/google/ads/adh/pipeline/bigquery:ProtoCatalog to become too large, resulting in OOM errors.", + "format": "int32", + "type": "integer" + }, + "lowConfidence": { + "description": "Whether this entity is low confidence. Not used. Currently whitelisted entities below min_confidence threshold are marked as low confidence and maybe not trusted by downstreams.", + "type": "boolean" + }, + "matchedLightweightToken": { + "items": { + "$ref": "RepositoryWebrefLightweightTokensMatchedLightweightToken" + }, + "type": "array" + }, + "mdvcChild": { + "description": "Nested annotations that represent subparts of the given mdvc full annotation. An MDVC full annotation is outputted as the summary node as the root node, and all the children of it as leaves (mdvc_child). QRef outputs a graph of relationships between the mdvc enties, and for mdvc full the aquatator nests the relevant children inside the summary node's proto.", + "items": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "type": "array" + }, + "mdvcVerticals": { + "description": "The set of verticals this summary node belongs to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "mergedImpliedEntity": { + "description": "A list of any implied entities merged into this annotation during parsing. Order is derivation-dependent.", + "items": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "type": "array" + }, + "merlotCategory": { + "items": { + "$ref": "NlpSemanticParsingQRefAnnotationMerlotCategoryData" + }, + "type": "array" + }, + "otherMetadata": { + "$ref": "Proto2BridgeMessageSet", + "description": "Metadata to be passed through from the AnnotationContext API." + }, + "oysterId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The geo oyster_id of the entity, relevant only for locations. Only included if the QRefAnnotator is initialised with include_oyster_id." + }, + "personalSummaryNodeChild": { + "description": "Personal summary nodes are compound entities made up of entities and their attributes, where the entities can be compound too. E.g., \"my father's mother\" can have a summary node annotation of \"Mother(Father(Myself))\".", + "items": { + "$ref": "NlpSemanticParsingQRefAnnotation" + }, + "type": "array" + }, + "productLineId": { + "description": "The shopping product line id(s) of the annotated /business/shopping_product_line entity.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "referenceScore": { + "description": "The confidence (in [0, 1]) that the annotation is reference that implies another entity. (eg \"my hotel\" in \"navigate to my hotel\" is reference to explicit hotel from user hotel reservation).", + "format": "float", + "type": "number" + }, + "relatedEntity": { + "description": "Mids related to the given entity", + "items": { + "$ref": "NlpSemanticParsingRelatedEntity" + }, + "type": "array" + }, + "resolutionScore": { + "description": "The confidence (in [0, 1]) that the annotation was created on an implicit mention (eg my hotel) as opposed to an explicit mention (eg: the westin copley square)", + "format": "float", + "type": "number" + }, + "sourceTypeList": { + "$ref": "CopleySourceTypeList", + "description": "If the annotation was created by using personal data, we record the provenance for that data here." + }, + "subCluster": { + "items": { + "$ref": "NlpSemanticParsingQRefAnnotationSubCluster" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingQRefAnnotationCollectionMembership": { + "id": "NlpSemanticParsingQRefAnnotationCollectionMembership", + "properties": { + "collectionId": { + "description": "Identifier of the collection. Usually something like \"/collection/us_states\".", + "type": "string" + }, + "collectionScore": { + "description": "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.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "NlpSemanticParsingQRefAnnotationEntityRelationship": { + "id": "NlpSemanticParsingQRefAnnotationEntityRelationship", + "properties": { + "entityIndex": { + "description": "The index of the other entity in the relationship.", + "format": "int32", + "type": "integer" + }, + "impliedBy": { + "description": "True if this entity is implied by the other (includes geo contains).", + "type": "boolean" + }, + "implies": { + "description": "True if this entity implies the other (includes geo contained by).", + "type": "boolean" + }, + "linkPropertyName": { + "description": "Names of the relationship links.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingQRefAnnotationMerlotCategoryData": { + "description": "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.", + "id": "NlpSemanticParsingQRefAnnotationMerlotCategoryData", + "properties": { + "categoryId": { + "format": "int32", + "type": "integer" + }, + "confidence": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "NlpSemanticParsingQRefAnnotationSubCluster": { + "description": "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.", + "id": "NlpSemanticParsingQRefAnnotationSubCluster", + "properties": { + "clusterId": { + "type": "string" + }, + "clusterSetScore": { + "format": "double", + "type": "number" + }, + "clusterSiblingMid": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlpSemanticParsingRelatedEntity": { + "description": "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 }", + "id": "NlpSemanticParsingRelatedEntity", + "properties": { + "clusterSupportTransferRelation": { + "description": "Denotes whether or not the related entity is derived from cluster support transfer.", + "enum": [ + "NO_CLUSTER_SUPPORT", + "CLUSTER_SUPPORT" + ], + "enumDescriptions": [ + "Indicates the entity has not received support from a MDVC.", + "Indicates the entity has received support from a MDVC." + ], + "type": "string" + }, + "composedFromRelation": { + "description": "Denotes whether or not the related entity composes a compound entity together with other related entities.", + "enum": [ + "NONE_COMPOSED_FROM", + "COMPOSED_FROM" + ], + "enumDescriptions": [ + "Indicates the entity does not compose the other entity.", + "Indicates the entity composes a compound entity." + ], + "type": "string" + }, + "equivalentRelation": { + "description": "Whether or not the given mid is related to the other mid. Equivalent mids are usually mutually exclusive with other kinds of relations.", + "enum": [ + "NO_EQUIVALENT", + "EQUIVALENT", + "MUNIN_SYNONYM", + "SYNONYM" + ], + "enumDescriptions": [ + "Not equivalent.", + "Equivalent to the other entity.", + "The related entity is a synonym added to Munin interpretation.", + "The related entity is a synonym." + ], + "type": "string" + }, + "mdvcRelation": { + "description": "The mdvc relation with the related mid.", + "enum": [ + "NO_MDVC", + "GENERALIZATION_OF", + "SPECIALIZATION_OF", + "HAS_DIMENSION_VALUE", + "IS_DIMENSION_OF" + ], + "enumDescriptions": [ + "Not an MDVC relation.", + "This mid is a generalization of the other mid (and the other mid is a specialization of this mid).", + "This mid is a specialization of the other mid (and the other mid is a generalization of this mid).", + "This mid has the other mid as a dimension (or attribute) (and the other mid is a dimension of this mid)", + "This mid is a dimension (or attribute) of the other mid (and the other mid has this mid as dimension)." + ], + "type": "string" + }, + "mid": { + "description": "Mid that is related.", + "type": "string" + }, + "supportTransferRelation": { + "description": "Denotes whether or not there was support transfer between the two entities.", + "enum": [ + "NO_SUPPORT_TRANSFER", + "SUPPORT_TRANSFER_TARGET", + "SUPPORT_TRANSFER_SOURCE", + "MENTION_TRANSFER_TARGET", + "MENTION_TRANSFER_SOURCE", + "SUPPORT_SHARE_TARGET", + "SUPPORT_SHARE_SOURCE" + ], + "enumDescriptions": [ + "No support transfer occurred.", + "We transferred support to this entity.", + "We received support from this entity.", + "We transferred support for a mention to this entity.", + "We received support for a mention from this entity.", + "We shared support with this entity.", + "We received shared support from this entity." + ], + "type": "string" + }, + "targetIsStbrSource": { + "description": "Set if the related entity is the source of an STBR rule and the target is not this one.", + "type": "boolean" + } + }, + "type": "object" + }, + "NlpSemanticParsingSaftCoreference": { + "description": "Identifies a coreference mention (pronoun or nominal) resolved to an entity.", + "id": "NlpSemanticParsingSaftCoreference", + "properties": { + "category": { + "description": "Categories can be either a $PronounMention or $NominalMention.", + "type": "string" + }, + "rawText": { + "description": "The substring of the raw query spanned by this annotation.", + "type": "string" + }, + "referentText": { + "description": "The name of the entity this mentions refers to.", + "type": "string" + } + }, + "type": "object" + }, + "NlpSemanticParsingSaftMeasure": { + "description": "Identifies a measure, like '53 pounds' in a query.", + "id": "NlpSemanticParsingSaftMeasure", + "properties": { + "category": { + "description": "Defines the category of measure, like $Mass.", + "type": "string" + }, + "rawText": { + "description": "The substring of the raw query spanned by this annotation.", + "type": "string" + }, + "value": { + "description": "The numerical value of the measure.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "NlpSemanticParsingSaftMentionAnnotation": { + "description": "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.", + "id": "NlpSemanticParsingSaftMentionAnnotation", + "properties": { + "coreference": { + "$ref": "NlpSemanticParsingSaftCoreference", + "description": "Annotations for spans that are resolved coreference mentions." + }, + "entity": { + "$ref": "NlpSemanticParsingSaftSpan", + "description": "Annotations for spans like \"san francisco giants\"." + }, + "measure": { + "$ref": "NlpSemanticParsingSaftMeasure", + "description": "Annotations for spans \"53 pounds\"." + }, + "title": { + "$ref": "NlpSemanticParsingSaftSpan", + "description": "Annotations for spans like \"the president of the United States\"." + } + }, + "type": "object" + }, + "NlpSemanticParsingSaftSpan": { + "description": "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.", + "id": "NlpSemanticParsingSaftSpan", + "properties": { + "category": { + "description": "Categories can be either syntactic (NNS for fine-grained-POS) or semantics ($Mass for measures).", + "type": "string" + }, + "rawText": { + "description": "The substring of the raw query spanned by this annotation.", + "type": "string" + } + }, + "type": "object" + }, + "NlxDataSchemaByte": { + "description": "A single byte, such as that from a utf8-encoded character sequence.", + "id": "NlxDataSchemaByte", + "properties": { + "document": { + "$ref": "MultiscalePointerIndex", + "description": "The document that contains this character." + } + }, + "type": "object" + }, + "NlxDataSchemaCharacter": { + "description": "A single Unicode character.", + "id": "NlxDataSchemaCharacter", + "properties": { + "document": { + "$ref": "MultiscalePointerIndex", + "description": "The document that contains this character." + }, + "paragraph": { + "$ref": "MultiscalePointerIndex", + "description": "The paragraph that contains this character." + }, + "sentence": { + "$ref": "MultiscalePointerIndex", + "description": "The sentence that contains this character." + }, + "text": { + "description": "The character itself. Must contain valid UTF-8. Must be exactly one Unicode character.", + "type": "string" + }, + "token": { + "$ref": "MultiscalePointerIndex", + "description": "The token that contains this character." + } + }, + "type": "object" + }, + "NlxDataSchemaDocument": { + "description": "A single document.", + "id": "NlxDataSchemaDocument", + "properties": { + "author": { + "description": "The author(s) of this document.", + "items": { + "$ref": "MultiscalePointerIndex" + }, + "type": "array" + }, + "bytes": { + "$ref": "MultiscalePointerSpan", + "description": "The bytes in this document." + }, + "characters": { + "$ref": "MultiscalePointerSpan", + "description": "The characters in this document." + }, + "id": { + "description": "The identifier of this document.", + "type": "string" + }, + "languageCode": { + "description": "A set of BCP-47 codes indicating the language(s) of this document.", + "items": { + "type": "string" + }, + "type": "array" + }, + "languageSpans": { + "$ref": "MultiscalePointerSpan", + "description": "The language spans in this document." + }, + "mentions": { + "$ref": "MultiscalePointerSpan", + "description": "The mentions in this document." + }, + "paragraphs": { + "$ref": "MultiscalePointerSpan", + "description": "The paragraphs in this document." + }, + "sentences": { + "$ref": "MultiscalePointerSpan", + "description": "The sentences in this document." + }, + "text": { + "description": "The text of this document. Must contain valid UTF-8.", + "type": "string" + }, + "tokens": { + "$ref": "MultiscalePointerSpan", + "description": "The tokens in this document." + }, + "url": { + "description": "The url of this document.", + "type": "string" + } + }, + "type": "object" + }, + "NlxDataSchemaEntity": { + "description": "An entity, which may occur multiple times in the text.", + "id": "NlxDataSchemaEntity", + "properties": { + "gender": { + "description": "Entity gender. Default label set is 'masculine', 'feminine', or 'neuter'. (Perhaps in the future we can split 'neuter' into 'inanimate', 'unknown', and 'non-binary'.)", + "type": "string" + }, + "mid": { + "description": "Machine identifier, such as those from the Freebase database (or similar entity database).", + "type": "string" + }, + "name": { + "description": "Free-form entity name.", + "type": "string" + }, + "type": { + "description": "Entity type, typically something like person/location/organization. The schema for types is not specified. If this entity has a MID, use the mid field instead or in conjunction with the type.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlxDataSchemaLanguageSpan": { + "description": "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.", + "id": "NlxDataSchemaLanguageSpan", + "properties": { + "bytes": { + "$ref": "MultiscalePointerSpan", + "description": "The bytes in this span." + }, + "characters": { + "$ref": "MultiscalePointerSpan", + "description": "The characters in this span." + }, + "document": { + "$ref": "MultiscalePointerIndex", + "description": "The document that contains this span." + }, + "languageCode": { + "description": "A set of BCP-47 codes indicating the language(s) of this span of text.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "NlxDataSchemaMention": { + "description": "A mention of an entity. A single entity might be mentioned multiple times.", + "id": "NlxDataSchemaMention", + "properties": { + "bytes": { + "$ref": "MultiscalePointerSpan", + "description": "The bytes in this mention." + }, + "document": { + "$ref": "MultiscalePointerIndex", + "description": "The document that contains this mention." + }, + "entity": { + "$ref": "MultiscalePointerIndex", + "description": "The entity that this mention refers to." + }, + "kind": { + "description": "Mention kind, typically 'referential', 'attributive', or 'modifier'.", + "type": "string" + }, + "text": { + "description": "The mention text itself. Must contain valid UTF-8.", + "type": "string" + }, + "tokens": { + "$ref": "MultiscalePointerSpan", + "description": "The token(s) in this mention. This may not be present, or have zero length if representing an implicit mention, as in the prodrop case." + }, + "type": { + "description": "Mention type, typically 'named' (for name mentions) or 'nominal'. More types include 'pronominal', 'conjoined' for conjoined mention construction, and 'non-referential' for non-referential pronoun mentions.", + "type": "string" + } + }, + "type": "object" + }, + "NlxDataSchemaParagraph": { + "description": "A single paragraph.", + "id": "NlxDataSchemaParagraph", + "properties": { + "bytes": { + "$ref": "MultiscalePointerSpan", + "description": "The bytes in this paragraph." + }, + "characters": { + "$ref": "MultiscalePointerSpan", + "description": "The characters in this paragraph." + }, + "document": { + "$ref": "MultiscalePointerIndex", + "description": "The document that contains this paragraph." + }, + "sentences": { + "$ref": "MultiscalePointerSpan", + "description": "The sentences in this paragraph." + }, + "text": { + "description": "The text of this paragraph. Must contain valid UTF-8.", + "type": "string" + }, + "tokens": { + "$ref": "MultiscalePointerSpan", + "description": "The tokens in this paragraph." + } + }, + "type": "object" + }, + "NlxDataSchemaScaleSet": { + "description": "Standard NLX data schema.", + "id": "NlxDataSchemaScaleSet", + "properties": { + "byte": { + "items": { + "$ref": "NlxDataSchemaByte" + }, + "type": "array" + }, + "byteDocumentPresence": { + "$ref": "MultiscaleFieldPresence", + "description": "Metadata for which layer (scale) fields are present. WARNING: CURRENT USAGE IS AD HOC, DO NOT RELY ON THESE BEING POPULATED CORRECTLY. This should improve in v2." + }, + "bytePresence": { + "$ref": "MultiscaleLayerPresence", + "description": "Metadata for which layers (scales) are present. WARNING: CURRENT USAGE IS AD HOC, DO NOT RELY ON THESE BEING POPULATED CORRECTLY. This should improve in v2." + }, + "character": { + "items": { + "$ref": "NlxDataSchemaCharacter" + }, + "type": "array" + }, + "characterDocumentPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "characterParagraphPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "characterPresence": { + "$ref": "MultiscaleLayerPresence" + }, + "characterSentencePresence": { + "$ref": "MultiscaleFieldPresence" + }, + "characterTextPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "characterTokenPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "document": { + "items": { + "$ref": "NlxDataSchemaDocument" + }, + "type": "array" + }, + "documentAuthorPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentBytesPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentCharactersPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentIdPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentLanguageCodePresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentLanguageSpansPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentMentionsPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentParagraphsPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentPresence": { + "$ref": "MultiscaleLayerPresence" + }, + "documentSentencesPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentTextPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentTokensPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "documentUrlPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "entity": { + "items": { + "$ref": "NlxDataSchemaEntity" + }, + "type": "array" + }, + "entityGenderPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "entityMidPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "entityNamePresence": { + "$ref": "MultiscaleFieldPresence" + }, + "entityPresence": { + "$ref": "MultiscaleLayerPresence" + }, + "entityTypePresence": { + "$ref": "MultiscaleFieldPresence" + }, + "languageSpan": { + "items": { + "$ref": "NlxDataSchemaLanguageSpan" + }, + "type": "array" + }, + "languageSpanBytesPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "languageSpanCharactersPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "languageSpanDocumentPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "languageSpanLanguageCodePresence": { + "$ref": "MultiscaleFieldPresence" + }, + "languageSpanPresence": { + "$ref": "MultiscaleLayerPresence" + }, + "mention": { + "items": { + "$ref": "NlxDataSchemaMention" + }, + "type": "array" + }, + "mentionBytesPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "mentionDocumentPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "mentionEntityPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "mentionKindPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "mentionPresence": { + "$ref": "MultiscaleLayerPresence" + }, + "mentionTextPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "mentionTokensPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "mentionTypePresence": { + "$ref": "MultiscaleFieldPresence" + }, + "paragraph": { + "items": { + "$ref": "NlxDataSchemaParagraph" + }, + "type": "array" + }, + "paragraphBytesPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "paragraphCharactersPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "paragraphDocumentPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "paragraphPresence": { + "$ref": "MultiscaleLayerPresence" + }, + "paragraphSentencesPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "paragraphTextPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "paragraphTokensPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "sentence": { + "items": { + "$ref": "NlxDataSchemaSentence" + }, + "type": "array" + }, + "sentenceBytesPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "sentenceCharactersPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "sentenceDocumentPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "sentenceParagraphPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "sentencePresence": { + "$ref": "MultiscaleLayerPresence" + }, + "sentenceTextPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "sentenceTokensPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "token": { + "items": { + "$ref": "NlxDataSchemaToken" + }, + "type": "array" + }, + "tokenBytesPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenCharactersPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenDependencyHeadPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenDependencyLabelPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenDependencyPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenDocumentPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenParagraphPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenPosPresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenPresence": { + "$ref": "MultiscaleLayerPresence" + }, + "tokenSentencePresence": { + "$ref": "MultiscaleFieldPresence" + }, + "tokenTextPresence": { + "$ref": "MultiscaleFieldPresence" + } + }, + "type": "object" + }, + "NlxDataSchemaSentence": { + "description": "A single sentence or utterance.", + "id": "NlxDataSchemaSentence", + "properties": { + "bytes": { + "$ref": "MultiscalePointerSpan", + "description": "The bytes in this sentence." + }, + "characters": { + "$ref": "MultiscalePointerSpan", + "description": "The characters in this sentence." + }, + "document": { + "$ref": "MultiscalePointerIndex", + "description": "The document that contains this sentence." + }, + "paragraph": { + "$ref": "MultiscalePointerIndex", + "description": "The paragraph that contains this sentence." + }, + "text": { + "description": "The text of this sentence. Must contain valid UTF-8.", + "type": "string" + }, + "tokens": { + "$ref": "MultiscalePointerSpan", + "description": "The tokens in this sentence." + } + }, + "type": "object" + }, + "NlxDataSchemaToken": { + "description": "A word, punctuation mark, or other small piece of text.", + "id": "NlxDataSchemaToken", + "properties": { + "bytes": { + "$ref": "MultiscalePointerSpan", + "description": "The bytes in this token." + }, + "characters": { + "$ref": "MultiscalePointerSpan", + "description": "The characters in this token." + }, + "dependency": { + "$ref": "NlxDataSchemaTokenDependencyEdge", + "description": "DEPRECATED: PLEASE USE dependency_head AND dependency_label FIELDS. One edge of the dependency parse." + }, + "dependencyHead": { + "$ref": "MultiscalePointerIndex", + "description": "The head of this token. By default, the root of the sentence is its own head; it should also have deprel as 'root'." + }, + "dependencyLabel": { + "description": "Relation label for this dependency. Generally this should be using the Universal Dependencies label format, using fine-grained labels like nsubj:pass.", + "type": "string" + }, + "document": { + "$ref": "MultiscalePointerIndex", + "description": "The document that contains this token." + }, + "paragraph": { + "$ref": "MultiscalePointerIndex", + "description": "The paragraph that contains this token." + }, + "pos": { + "description": "Coarse part-of-speech tag.", + "type": "string" + }, + "sentence": { + "$ref": "MultiscalePointerIndex", + "description": "The sentence that contains this token." + }, + "text": { + "description": "The text of this token. Must contain valid UTF-8.", + "type": "string" + } + }, + "type": "object" + }, + "NlxDataSchemaTokenDependencyEdge": { + "description": "DEPRECATED: PLEASE USE dependency_head AND dependency_label FIELDS. One edge of the dependency parse.", + "id": "NlxDataSchemaTokenDependencyEdge", + "properties": { + "deprel": { + "description": "Relation label for this dependency. Generally this should be using the Universal Dependencies label format, using fine- grained labels like nsubj:pass.", + "type": "string" + }, + "head": { + "$ref": "MultiscalePointerIndex", + "description": "The head of this token. By default, the root of the sentence is its own head; it should also have deprel as 'root'." + } + }, + "type": "object" + }, + "OceanDataDocinfoWoodwingItemMetadata": { + "description": "Metadata describing an 'item' (article) in a Woodwing file.", + "id": "OceanDataDocinfoWoodwingItemMetadata", + "properties": { + "author": { + "type": "string" + }, + "category": { + "type": "string" + }, + "description": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "OceanDocInfo": { + "description": "Ocean data in docserver results (whole documents)", + "id": "OceanDocInfo", + "properties": { + "docTag": { + "$ref": "OceanDocTag", + "description": "data returned with search docresults (snippets)" + } + }, + "type": "object" + }, + "OceanDocTag": { + "description": "============\u003e Next available number: 102 (ksridhara) \u003c================", + "id": "OceanDocTag", + "properties": { + "DEPRECATEDApplicationDate": { + "description": "this is in ONIX format.", + "type": "string" + }, + "DEPRECATEDIssueDate": { + "description": "this is in ONIX format.", + "type": "string" + }, + "DEPRECATEDPatentAssignee": { + "type": "string" + }, + "DEPRECATEDPatentNumber": { + "description": "patent-specific fields. ALL DEPRECATED, moved into PatentSpecific group, above.", + "type": "string" + }, + "DEPRECATEDPublisherPercentVisible": { + "description": "Percent rights granted by publisher. This should only be set, and definitely should only be considered, if source_type == BoundVolumeSource::PUBLISHER. '0' may mean we have no info on publisher rights so we have to just assume 0%. Deprecated as this is taken into account by viewability", + "format": "int32", + "type": "integer" + }, + "authors": { + "description": "TODO(leonid) Deprecate these Authors string for front end.", + "type": "string" + }, + "availableDownloads": { + "description": "A bitmap containing all available download formats (values defined in AvaialableDownloadFormats enum) NOTE: Only populated for Volume level docs", + "format": "int32", + "type": "integer" + }, + "blockSnippet": { + "type": "boolean" + }, + "bookspecific": { + "$ref": "OceanDocTagBookSpecific" + }, + "catalogspecific": { + "$ref": "OceanDocTagCatalogSpecific" + }, + "contentType": { + "description": "The content type of the document. See BoundVolumeSource::ContentType in ocean/data/volume_types.protodevel for possible values.", + "format": "int32", + "type": "integer" + }, + "contributor": { + "items": { + "$ref": "OceanDocTagContributor" + }, + "type": "array" + }, + "coverPage": { + "description": "cover page (PrintedAsSeen string), to generate results snippet thumbnail image urls", + "type": "string" + }, + "coverPageSize": { + "$ref": "OceanImageSize", + "description": "The size (in pixels) of the full-resolution clean images used for the cover page. The width and height will be zero if no image for that page." + }, + "editors": { + "description": "Editors string for front end.", + "type": "string" + }, + "encryptedExpressionId": { + "type": "string" + }, + "encryptedVolumeId": { + "type": "string" + }, + "geoRestrict": { + "description": "DEPRECATED! Being replaced in favor of viewability, below. geo restrict info (from OceanRights::geo_restrict) In CAv2: geo restrict info (from ocean::VolumeImprintRights::geo_restrict)", + "items": { + "type": "string" + }, + "type": "array" + }, + "goodTextDetail": { + "description": "Text quality as defined in CA_VolumeScoreResult::OACapabilities::TextQualityAssessment Note - This is only populated if good_text() and is_ge_quality() are true", + "format": "int32", + "type": "integer" + }, + "grantableLocale": { + "description": "List of locales for which this book can be bought from a publisher, and read as a Google eBook. Each locale is a lowercase, two-letter country-code (eg \"ca\"), and is copied from PublisherGrantability.Locale.locale, defined in ocean/data/docinfo/volume_viewability.proto.", + "items": { + "type": "string" + }, + "type": "array" + }, + "isGeQuality": { + "description": "Set to true if volume has ge quality", + "type": "boolean" + }, + "isLandingPage": { + "description": "whether this a landing page chosen at indexing time.", + "type": "boolean" + }, + "magazinespecific": { + "$ref": "OceanDocTagMagazineSpecific" + }, + "metadataCoverExists": { + "description": "metadata_cover_exists will be set if there's a metadata-provided cover thumbnail. the thumbnail will be used for scanless books or when a scanned book is in metadata-only view.", + "type": "boolean" + }, + "metadataCoverSize": { + "$ref": "OceanImageSize", + "description": "The size (in pixels) of the metadata cover image." + }, + "newspaperspecific": { + "$ref": "OceanDocTagNewspaperSpecific" + }, + "numPages": { + "description": "Number of pages in this volume (usually as specified in metadata)", + "format": "int32", + "type": "integer" + }, + "objectionableContentBitmap": { + "description": "A bitmap indicating whether content may be objectionable NOTE: Only populated for volume level docs", + "format": "int32", + "type": "integer" + }, + "pageNumber": { + "description": "page_number of the page (OceanTypes::PageNumberType) In CAv2: page_number of the page ocean::PageNumber::T", + "format": "int32", + "type": "integer" + }, + "pageid": { + "description": "pageid of the page (OceanTypes::PageIdType)", + "format": "int32", + "type": "integer" + }, + "pagerank": { + "description": "the page rank value of the book page", + "format": "double", + "type": "number" + }, + "patentspecific": { + "$ref": "OceanDocTagPatentSpecific" + }, + "price": { + "$ref": "OceanGEPrice", + "description": "Price information for a volume (per locale). Note existence of a price for a locale implies that the book is sellable for that locale." + }, + "printedPageNumber": { + "description": "printed page number (OceanPrintedPageNumber; from OceanPageInfoMap::Page::printed_page_number)", + "type": "string" + }, + "refPageUrl": { + "description": "the URL of the reference page (About this book)", + "type": "string" + }, + "searchInBookUrl": { + "description": "the URL for the \"search in book\"", + "type": "string" + }, + "segmentTime": { + "format": "int32", + "type": "integer" + }, + "sourceType": { + "description": "The source type of the document. See BoundVolumeSource::SourceType in ocean/data/volume_types.protodevel for possible values.", + "format": "int32", + "type": "integer" + }, + "structuredPageNumber": { + "description": "In CAv2 only: structured page number (printed number as we understand it) (result of ocean::StructuredPageNumberProto::AppendToString)", + "type": "string" + }, + "subTitle": { + "description": "Sub title string for front end", + "type": "string" + }, + "subjectBitmap": { + "description": "Bitmap indicating top-level subjects associated with this document. See ocean/metadata/subjects/util.h for more detail.", + "format": "byte", + "type": "string" + }, + "thumbnailUrl": { + "description": "the URL of the cover page.", + "type": "string" + }, + "title": { + "description": "Title string for front end.", + "type": "string" + }, + "urlKey": { + "description": "Bibkey to be used as part of the URL (to make them persistent in some sense). This is obtained by doing a GetURLKey() on the bibdata which returns the main bibkey associated with the volume based on priority. This is parseable into an OceanVolumeBibKey (ocean/metadata/bibkeys.h) Note: This should ideally be a required field longer term but for now keeping it optional for compatibility. In case of this being absent, we don't include the key in the URL (just use volumeId as before). Note: For content type books, this key is supplemented by other bibkeys for this volumes(the field is aux_bibkeys)", + "type": "string" + }, + "usingActualCover": { + "description": "using_actual_cover will be set if we are using the actual cover of the book (instead of the table of content, etc.). This is particularly useful to identify books where we inserted a generated cover via Coverups.", + "type": "boolean" + }, + "viewability": { + "$ref": "OceanVolumeViewability", + "description": "Volume viewability, which defines how/if the volume should be displayed in various locales." + }, + "volumeType": { + "format": "int32", + "type": "integer" + }, + "volumeVersion": { + "description": "The version of the volume (serialized form). ONLY populated for Volume level docs", + "type": "string" + }, + "workcluster": { + "$ref": "OceanDocTagWorkCluster" + } + }, + "type": "object" + }, + "OceanDocTagBookSpecific": { + "description": "Book specific fields. ", + "id": "OceanDocTagBookSpecific", + "properties": { + "auxBibkeys": { + "description": "These are other bibkeys for this book beside the url_key, which is the primary key. For example, a book may have ISBN, OCLC num etc. In that case ISBN is the url_key and the OCLC number is the auxillary bibkey. The aux_bibkeys should have the same form as the url_key", + "items": { + "type": "string" + }, + "type": "array" + }, + "imprint": { + "type": "string" + }, + "numRatingHalfStars": { + "format": "int32", + "type": "integer" + }, + "numberingrange": { + "items": { + "$ref": "OceanDocTagBookSpecificNumberingRange" + }, + "type": "array" + }, + "partnerId": { + "description": "publisher id, if available", + "format": "int64", + "type": "string" + }, + "productEditionNumber": { + "description": "Set if the book is one of several editions or versions. Used by OFE to show numbered editions. The value is copied from clustering information. See also ocean/metadata/proto/bibdata_components.proto The value there is from metadata records by ocean/metadata/parsing/parse_utils.cc, and is a 1-based value.", + "format": "int32", + "type": "integer" + }, + "publicationDate": { + "description": "In the format yyyy.mm.dd, or possibly just yyyy.", + "type": "string" + }, + "publisherName": { + "type": "string" + }, + "subject": { + "description": "Subject (from Bisac)", + "type": "string" + } + }, + "type": "object" + }, + "OceanDocTagBookSpecificNumberingRange": { + "description": "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\")", + "id": "OceanDocTagBookSpecificNumberingRange", + "properties": { + "endNumbering": { + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "numberType": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "numberingSchema": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "startNumbering": { + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "OceanDocTagCatalogSpecific": { + "description": "catalog-specific fields.", + "id": "OceanDocTagCatalogSpecific", + "properties": { + "latest": { + "description": "Is this the latest issue of this catalog series? This is required to filter results if the latest restrict is on.", + "type": "boolean" + }, + "publicationDate": { + "description": "time_t date corresponding to the catalog publication date. Approximate when the catalog does not have an exact \"date\" of publication, e.g. For \"Spring 2002\", year, month and day are 2002, 03 and 21, respectivley. This value is used to compare catalog issues to determine the latest. The value is stored in seconds-since-epoch, 1/1/1970. This is not a problem for catalogs because we are not dealing with any catalogs from before the 70's.", + "format": "int32", + "type": "integer" + }, + "publicationTimeToDisplay": { + "description": "String to be displayed as catalog publication time, e.g. \"Spring 2002\".", + "type": "string" + } + }, + "type": "object" + }, + "OceanDocTagContributor": { + "description": "The composite descriptor of the contributors that should be known to search and front end. Both fields are required. Replaces authors and editors strings.", + "id": "OceanDocTagContributor", + "properties": { + "name": { + "type": "string" + }, + "type": { + "description": "ContributionType enum from ocean/metadata/metadata_enums.proto Note that we pick only the \"highest-ranking\" contribution (i.e. writer and editor would collapse to \"writer\".", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "OceanDocTagMagazineSpecific": { + "description": "Magazine-specific fields. See https://www.corp.google.com/eng/designdocs/scanning/magazines/designdoc.html for magazine design doc.", + "id": "OceanDocTagMagazineSpecific", + "properties": { + "displayDate": { + "description": "A human-readable date for display in the UI. Unlike \"publication_date_\" above, this should not be parsed into structured data, but should only be displayed as is.", + "type": "string" + }, + "issueDescription": { + "description": "Description specific to a magazine issue, such as featured articles and article summaries.", + "type": "string" + }, + "issueEnd": { + "format": "int32", + "type": "integer" + }, + "issueStart": { + "format": "int32", + "type": "integer" + }, + "item": { + "description": "Items within a magazine issue.", + "items": { + "$ref": "OceanDataDocinfoWoodwingItemMetadata" + }, + "type": "array" + }, + "otherNumberingEnd": { + "format": "int32", + "type": "integer" + }, + "otherNumberingSchema": { + "description": "NOTE: These should to be values from MetadataNumberingSchema; when this becomes a proto2, we can use MetadataEnums values.", + "format": "int32", + "type": "integer" + }, + "otherNumberingStart": { + "description": "For season or quarter dates.", + "format": "int32", + "type": "integer" + }, + "pageToItem": { + "description": "For each page of a magazine, maps to the item index of \"item\".", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "publicationDateEnd": { + "type": "string" + }, + "publicationDateStart": { + "type": "string" + }, + "serialTitle": { + "description": "This is used to render the metadata line of the snippet and should be present in all magazine documents.", + "type": "string" + }, + "serialVolumeid": { + "format": "int64", + "type": "string" + }, + "volume": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "OceanDocTagNewspaperSpecific": { + "description": "Newspaper-specific fields.", + "id": "OceanDocTagNewspaperSpecific", + "properties": { + "articleRollCoords": { + "description": "Newspaper Article Roll Coordinates used to figure out the location of the article wrt the page. It is of the form x,y.", + "type": "string" + }, + "newspaperDate": { + "description": "Atlantis specific. Deprecated.", + "format": "double", + "type": "number" + }, + "newspaperName": { + "type": "string" + }, + "newspaperUrl": { + "description": "Atlantis specific. Deprecated.", + "type": "string" + }, + "publicationDate": { + "description": "These fields are only populated for Santorini (newspapers on goovols) formatted newspapers, not for Atlantis: YYYY.MM.DD format.", + "type": "string" + }, + "publisher": { + "description": "Atlantis specific. Deprecated.", + "type": "string" + } + }, + "type": "object" + }, + "OceanDocTagPatentSpecific": { + "description": "Patent specific fields. Currently empty, but need to move the fields below into here at a later date", + "id": "OceanDocTagPatentSpecific", + "properties": { + "applicationDate": { + "description": "this is in ONIX format.", + "type": "string" + }, + "contentLanguage": { + "description": "2-letter language of the document such as \"en\" or \"fr\" This field was created for plumbing in the OFE API intl patent flow, and is probably not otherwise filled in.", + "type": "string" + }, + "docType": { + "format": "int32", + "type": "integer" + }, + "documentNumber": { + "description": "Just the number, no bibkey prefix. Called 'doc number' b/c it could be patent number for patents, application number for applications.", + "type": "string" + }, + "domesticClassification": { + "description": "US and Int'l patent classification codes for \"related patents\".", + "items": { + "type": "string" + }, + "type": "array" + }, + "internationalClassification": { + "items": { + "type": "string" + }, + "type": "array" + }, + "issueDate": { + "description": "this is in ONIX format.", + "type": "string" + }, + "patentAssignee": { + "type": "string" + }, + "publicationNumber": { + "description": "For applications, the 'publication number' Something like US20071234567A1: 'US' prefix, 4 digit year, 7 digit serial number, 2 character code, all stuck together.", + "type": "string" + }, + "relativeThumbnailPath": { + "description": "Path identifying the image used for the thumbnail of this patent. e.g. \"EP1234567B1/imgf0001.png\" The client is expected to fill in the rest of the url such as: https://patentimages.storage.googleapis.com/thumbnails/EP1234567B1/imgf0001.png", + "type": "string" + }, + "tenCharUsClassification": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "OceanDocTagWorkCluster": { + "description": "Details of the work cluster for this Volume.", + "id": "OceanDocTagWorkCluster", + "properties": { + "clusterSize": { + "format": "int32", + "type": "integer" + }, + "workId": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "OceanGEMoney": { + "description": "A container proto to store prices for GE", + "id": "OceanGEMoney", + "properties": { + "amountInMicros": { + "description": "amount in micros. 1 is represented 1000000", + "format": "int64", + "type": "string" + }, + "currencyCode": { + "description": "The currency codes come from google3/i18n/identifiers/currencycode.h.", + "type": "string" + } + }, + "type": "object" + }, + "OceanGEPrice": { + "description": "GE sale related data", + "id": "OceanGEPrice", + "properties": { + "locale": { + "items": { + "$ref": "OceanGEPriceLocale" + }, + "type": "array" + } + }, + "type": "object" + }, + "OceanGEPriceLocale": { + "id": "OceanGEPriceLocale", + "properties": { + "locale": { + "description": "The two character ISO country code", + "type": "string" + }, + "offerPrice": { + "$ref": "OceanGEMoney", + "description": "Price used for sale by the OFE" + }, + "onSaleTimeSecs": { + "description": "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).", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "OceanImageSize": { + "description": "Size info of an image.", + "id": "OceanImageSize", + "properties": { + "height": { + "description": "pixels", + "format": "int32", + "type": "integer" + }, + "width": { + "description": "pixels", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "OceanLocaleViewability": { + "description": "How a volume may be viewed in a particular locale. Next available ID: 25 (ikkwong)", + "id": "OceanLocaleViewability", + "properties": { + "accessRights": { + "$ref": "OceanVolumeAccessRights", + "description": "These capture \"commercial\" contract related access rights provided by partners for a volume." + }, + "allowAddingFrontmatterToPreview": { + "description": "Are we allowed to add all the front matter to the preview in addition to the preview amount that is from percent_book_shown? This means the front matter becomes freely previewable and does not count towards the previewable amount based on the percentage.", + "type": "boolean" + }, + "allowContinuousBrowse": { + "description": "By default, we allow continuous browse. PFE provides a means for partners to opt out entirely or just specific books.", + "type": "boolean" + }, + "allowRetailSyndication": { + "description": "whether OFE should display this volume in syndicated search results", + "type": "boolean" + }, + "bibkey": { + "description": "The bibkey upon which this viewability information is based.", + "type": "string" + }, + "canDisplayAds": { + "description": "Whether we can show ads with this book in this locale.", + "type": "boolean" + }, + "canDownloadEpub": { + "description": "In future, we will generate epub iff can_download_epub = true irrespective of viewability or download pdf state.", + "type": "boolean" + }, + "canDownloadPdf": { + "description": "In future, we will generate PDF iff can_download_pdf = true irrespective of viewability.", + "type": "boolean" + }, + "canShowLibraryLinks": { + "description": "Whether to show library links for the books in this imprint.", + "type": "boolean" + }, + "canShowPhotos": { + "description": "Whether we can show photos for this book in this locale.", + "type": "boolean" + }, + "canUseMetadataCover": { + "description": "It should be OK to use metadata covers normally, but we allow publishers to explicitly disallow them.", + "type": "boolean" + }, + "clientId": { + "description": "The client who provided the rights for this bibkey, and who should receive revenue derived from this book in this locale. This will only be present when we receive explicit rights from a publisher.", + "type": "string" + }, + "computedAccessRights": { + "$ref": "OceanVolumeComputedAccessRights", + "description": "Volume related access rights that are computed by Goovols Syncher from partner and book metadata. This complements VolumeAccessRights. This message is used to capture \"commerical\" contracts that are computed from other sources. Any future computed rights that are not related to volume access should go into a new message." + }, + "dates": { + "$ref": "OceanLocaleViewabilityDates" + }, + "displayDetails": { + "$ref": "OceanVolumeDisplayDetails", + "description": "Volume display specific attributes are kept in display_details" + }, + "metadataViewMayIncludeInfoFromScans": { + "description": "This only applies when view_type == VIEW_METADATA and controls whether we're allowed to include scanned info (keywords, toc, etc). in the metadata-view. For books in metadata view because they have been opted out, this would be false.", + "type": "boolean" + }, + "metadataViewSampleAllowed": { + "description": "This only applies when view_type == VIEW_METADATA and controls whether we're allowed to include a text sample even for a metadata view book.", + "type": "boolean" + }, + "percentBookShown": { + "description": "How much of the book can be viewed in this locale. Will be 100 for VIEW_FULL; 0 for VIEW_SNIPPET_, VIEW_NONE and VIEW_METADATA; and some value between 0 and 100 (exclusive) for VIEW_PARTIAL.", + "format": "int32", + "type": "integer" + }, + "publicDomain": { + "description": "If present, this is the rights policy's determination of the public domain status. (Of course, this determination is generally conservative (i.e. false negatives are likely), though exactly how conservative may depend on parameters to the rights policy.) If absent, public domain status can be inferred from view_type and view_reason, but that isn't quite perfectly reliable: view_type should always be VIEW_FULL for public domain, but view_reason might be REASON_PUBLIC_DOMAIN (definitely public domain, obviously), some other value, or absent. In the future, new viewabilities should always have this field whenever possible.", + "type": "boolean" + }, + "sourcedetails": { + "$ref": "OceanLocaleViewabilitySourceDetails" + }, + "viewReason": { + "description": "The reason for the view_type.", + "enum": [ + "REASON_UNKNOWN", + "REASON_NO_SOURCE", + "REASON_KILLED", + "REASON_CONTENT_TYPE", + "REASON_SCANLESS", + "REASON_OPTED_OUT", + "REASON_QUALITY", + "REASON_INSUFFICIENT_PAGES", + "REASON_PARTNER", + "REASON_REFERENCE", + "REASON_COPYRIGHT", + "REASON_PUBLIC_DOMAIN", + "REASON_NEW_COURTESY", + "REASON_LIBRARY_RESTRICT", + "REASON_INDEXING_OVERRIDE", + "REASON_UPLIFTED", + "REASON_OUTSTANDING_QUESTIONS", + "REASON_NO_VALID_SCANJOBS", + "REASON_OPEN_ACCESS_DEPRECATED" + ], + "enumDescriptions": [ + "", + "Don't know the source of the volume:", + "Volume was killed:", + "This content type always has this view_type:", + "", + "", + "Insufficient scan quality:", + "Insufficient number of image pages:", + "Partner-specified view:", + "Metadata view: copyrighted reference doc:", + "Snippet view: still under copyright:", + "Full view: public domain (unspecified reason):", + "New book; metadata view as publisher courtesy:", + "Library partner doesn't allow snippets:", + "Overridden in indexing:", + "Copyright holder explicitly allowed this:", + "Human QA questions for the book have been queued but not answered:", + "", + "Deprecated. We keep these in case there still is production data that contains the value. Source is OPEN_ACCESS." + ], + "type": "string" + }, + "viewType": { + "description": "The viewability specified for this locale.", + "enum": [ + "VIEW_NONE", + "VIEW_METADATA", + "VIEW_SNIPPET", + "VIEW_FIXED", + "VIEW_PARTIAL", + "VIEW_FULL" + ], + "enumDescriptions": [ + "The user cannot view any information about the book.", + "The user cannot view pages at all, but can view metadata about the book.", + "The user cannot view entire pages, but only snippets extracted from pages.", + "The user can view only fixed pages from the book. The fixed pages generally contain first 10% for book content (chapter 1 in most cases). (ignore TOC, preface etc.) Keeping it in between snippet \u0026 partial", + "The user can view only some fraction of the pages from the book. The exact set of allowed pages is determined separately.", + "The user has unrestricted access to all pages of the book." + ], + "type": "string" + } + }, + "type": "object" + }, + "OceanLocaleViewabilityDates": { + "description": "Viewability related dates.", + "id": "OceanLocaleViewabilityDates", + "properties": { + "effectiveDate": { + "description": "If specified, the LocaleViewability will become effective on this date. This field is used to allow pre-indexing of future books which will become viewable and searchable according to the LocaleViewability on the specified date. Before the effective date, the volume will have scanless-like VIEW_METADATA viewability. For details, see the design document at http://go/oceanviewabilityeffectivedate. The date is expressed as the number of seconds since the Unix epoch.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "OceanLocaleViewabilitySourceDetails": { + "description": "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.", + "id": "OceanLocaleViewabilitySourceDetails", + "properties": { + "imprint": { + "$ref": "OceanVolumeImprint" + } + }, + "type": "object" + }, + "OceanPerDocData": { + "description": "Per-doc data in the Ocean index. Ocean indexing details are in https://www/eng/designdocs/scanning/ocean-indexing.html", + "id": "OceanPerDocData", + "properties": { + "flags": { + "description": "rights, mask-availability, porn, etc.", + "format": "uint64", + "type": "string" + }, + "numPages": { + "format": "int32", + "type": "integer" + }, + "pageNumber": { + "description": "1-based", + "format": "int32", + "type": "integer" + }, + "pageid": { + "format": "int32", + "type": "integer" + }, + "volumeid": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "OceanVolumeAccessRights": { + "id": "OceanVolumeAccessRights", + "properties": { + "allowAutoGeneratedText": { + "description": "If false, then we can only provide text layer generated from publisher provided epub.", + "type": "boolean" + }, + "canShowInfoCards": { + "description": "Whether we can show info cards inside this book.", + "type": "boolean" + }, + "canShowPhotos": { + "description": "Whether we can show photos inside this book.", + "type": "boolean" + }, + "numAdeDeviceAllowed": { + "description": "Maximum number of Adobe Digital Editions device per sale item allowed. 0 means no download allowed. -1 means unlimited download.", + "format": "int32", + "type": "integer" + }, + "numAdobeIdAllowed": { + "description": "Maximum number of Adobe id per sale item allowed. 0 means no download allowed. -1 means unlimited download.", + "format": "int32", + "type": "integer" + }, + "numDownloadsAllowed": { + "description": "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.", + "format": "int32", + "type": "integer" + }, + "numSimultaneousAccess": { + "description": "Number of readers can read the Google eBooks simultaneously", + "format": "int32", + "type": "integer" + }, + "offlineDownload": { + "description": "Download type for offline reading", + "enum": [ + "NO_DOWNLOAD", + "DRM_FREE_DOWNLOAD", + "ACS4_DOWNLOAD" + ], + "enumDescriptions": [ + "The user cannot download any form of epub/pdf for offline reading. Some publishers like MacMillan does not want to allow ACS4 downloads, so iff the following bit is set then we don't allow any epub/pdf downloads for offline reading.", + "The user can download DRM free version of epub/pdf for offline reading.", + "The user can dlownload ACS4 encrypted epub/pdf for offline reading." + ], + "type": "string" + }, + "percentCopyable": { + "description": "How much of a volume we allow user to extract as text (for copy+paste)", + "format": "int32", + "type": "integer" + }, + "percentPrintable": { + "description": "How much of a volume we allow user to print", + "format": "int32", + "type": "integer" + }, + "restrictOnlyToText": { + "description": "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.", + "type": "boolean" + }, + "sellFixedLayoutAsImageOnly": { + "description": "Whether we sell fixed layout as image only.", + "type": "boolean" + }, + "textToSpeech": { + "description": "Whether text to speech is allowed", + "type": "boolean" + }, + "treatAsPublicDomain": { + "description": "Whether we treat this book as public domain.", + "type": "boolean" + } + }, + "type": "object" + }, + "OceanVolumeComputedAccessRights": { + "description": "Volume related access rights that are computed by Goovols Syncher from partner and book metadata. This complements VolumeAccessRights. Next available ID: 4 (kblass)", + "id": "OceanVolumeComputedAccessRights", + "properties": { + "canFamilyShare": { + "description": "Whether this book can be shared with family members.", + "type": "boolean" + }, + "panelizationFeatureInternalOnly": { + "description": "Whether the panelization feature is enabled for internal users only.", + "type": "boolean" + }, + "viewableInternalOnly": { + "description": "Whether the book is viewable for internal users only.", + "type": "boolean" + } + }, + "type": "object" + }, + "OceanVolumeDisplayDetails": { + "description": "This message describes display attributes. The attributes which are applicable to OFE not indexing (mustang), should be added in this proto.", + "id": "OceanVolumeDisplayDetails", + "properties": { + "ccLicense": { + "description": "The creative commons license specified, Please refer ocean.CreativeCommonsLicenseType.Type for enum values Not exposed in Partner Frontend anymore.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "OceanVolumeImprint": { + "description": "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.", + "id": "OceanVolumeImprint", + "properties": { + "accessRights": { + "$ref": "OceanVolumeAccessRights", + "description": "These capture \"commercial\" contract related access rights provided by partners for a volume." + }, + "adsId": { + "description": "Id used in the google ads system", + "type": "string" + }, + "allowAddingFrontmatterToPreview": { + "description": "Are we allowed to add all the front matter to the preview in addition to the preview amount that is from percent_book_shown?", + "type": "boolean" + }, + "allowContinuousBrowse": { + "description": "By default, we allow continuous browse. PFE provides a means for partners to opt out entirely or just specific books. This will be deprecated once UpdateVolumesReqHandler returns VolumeViewability.", + "type": "boolean" + }, + "allowRetailSyndication": { + "description": "By default, we allow retailer syndication. PFE provides a means for partner to opt out. This will be deprecated once UpdateVolumesReqHandler returns VolumeViewability.", + "type": "boolean" + }, + "author": { + "description": "Beware: the author strings are not in fixed format..these can be comma separated or 'and' separated or have extra terms like 'et al' and sometimes have weird ones like 'no author' as these are fed in via a somewhat flexible free text tool.", + "type": "string" + }, + "bibkey": { + "description": "Commercial info comes with book identifiers like ISBN(or some bibkey), Title, Author. Passing these along as well with the commercials for better book identification/link up with rights.", + "type": "string" + }, + "buyTheBookText": { + "description": "Text to display in the buy-the-book blurb", + "type": "string" + }, + "buyTheBookUrl": { + "description": "ISBN/ISSN-parameterized URL to the imprint's site for buying a book. For ISBN-parameterized links, the ISBN value will be substituted in the cannonical 13-digit form.", + "type": "string" + }, + "canDownloadEpub": { + "description": "iff true volume is available as Google Edition. This will be deprecated once UpdateVolumesReqHandler returns VolumeViewability.", + "type": "boolean" + }, + "canDownloadPdf": { + "description": "iff true and VIEW_TYPE=FULL_VIEW, then we will allow PDF download This will be deprecated once UpdateVolumesReqHandler returns VolumeViewability.", + "type": "boolean" + }, + "canShowLibraryLinks": { + "description": "Whether to show library links for the books in this imprint. This will be deprecated once UpdateVolumesReqHandler returns VolumeViewability.", + "type": "boolean" + }, + "canUseMetadataCover": { + "description": "It should be OK to use metadata covers normally, but we allow publishers to explicitly disallow them. This will be deprecated once UpdateVolumesReqHandler returns VolumeViewability.", + "type": "boolean" + }, + "disableOtherBuyTheBookLinks": { + "description": "Whether to disable other btb links for the books in this imprint. Show only btb link from this partner and remove everything else.", + "type": "boolean" + }, + "displayDetails": { + "$ref": "OceanVolumeDisplayDetails", + "description": "Volume display specific attributes are kept in display_details This will be deprecated once UpdateVolumesReqHandler returns VolumeViewability." + }, + "geBibkey": { + "description": "The ISBN supplied by publisher (or Google) for the Google Edition e-book. One day it should be an attribute of the tome cluster.", + "type": "string" + }, + "imprintId": { + "description": "The imprint id from the ocean devel db for this imprint.", + "format": "int64", + "type": "string" + }, + "imprintName": { + "type": "string" + }, + "imprintUrl": { + "description": "URL to the imprint's website, to go to upon a click on the logo", + "type": "string" + }, + "logoHeight": { + "format": "int32", + "type": "integer" + }, + "logoLocation": { + "description": "URL/location for the imprint's logo to display", + "type": "string" + }, + "logoWidth": { + "description": "The logo image's geometry", + "format": "int32", + "type": "integer" + }, + "percentBookShown": { + "description": "Percentage of book we are allowed to display This will be deprecated once UpdateVolumesReqHandler returns VolumeViewability.", + "format": "int32", + "type": "integer" + }, + "promotionalText": { + "type": "string" + }, + "promotionalUrl": { + "description": "We may allow imprints to run promotional campaigns. The following fields capture the blurb to display and the URL (ISBN-parameterized) link to provide.", + "type": "string" + }, + "publishedImprintName": { + "description": "Sometimes the Publisher/Imprint Name the book is published under is different from the current name and we may have this information.", + "type": "string" + }, + "pviRowid": { + "description": "Need a unique identifier for PFE records, using PVI ID", + "format": "int64", + "type": "string" + }, + "title": { + "type": "string" + }, + "useBibdata": { + "description": "Some records are deactivated, suppressed or excluded; we still want to hear about them, but we aren't going to be using their bibdata", + "type": "boolean" + }, + "verticalType": { + "enum": [ + "BOOK", + "JOURNAL", + "MAGAZINE", + "NEWSPAPER" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "OceanVolumeViewability": { + "id": "OceanVolumeViewability", + "properties": { + "DEPRECATEDDefaultViewType": { + "format": "int32", + "type": "integer" + }, + "defaultViewability": { + "$ref": "OceanLocaleViewability", + "description": "The viewability for any locale that is not explicitly listed." + }, + "inViewabilityLimbo": { + "description": "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", + "type": "boolean" + }, + "locale": { + "items": { + "$ref": "OceanVolumeViewabilityLocale" + }, + "type": "array" + }, + "updatedByIndexer": { + "description": "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.", + "type": "boolean" + } + }, + "type": "object" + }, + "OceanVolumeViewabilityLocale": { + "id": "OceanVolumeViewabilityLocale", + "properties": { + "DEPRECATEDViewType": { + "format": "int32", + "type": "integer" + }, + "locale": { + "description": "The two-character ISO country code for the locale.", + "type": "string" + }, + "viewability": { + "$ref": "OceanLocaleViewability", + "description": "The viewability specified for this locale." + } + }, + "type": "object" + }, + "OcrPhotoBoundingBox": { + "description": "Bounding box of patch containing line, word or symbol.", + "id": "OcrPhotoBoundingBox", + "properties": { + "angle": { + "description": "Angle of rotation of (in degrees, clockwise is positive) of the box about the top-left corner.", + "format": "float", + "type": "number" + }, + "curvedBox": { + "$ref": "OcrPhotoCurvedBoundingBox", + "description": "Sequence of rotated boxes that tightly enclose the text." + }, + "height": { + "description": "Box height (bottom pixels at top + height - 1).", + "format": "int32", + "type": "integer" + }, + "left": { + "description": "x coordinate of top-left corner", + "format": "int32", + "type": "integer" + }, + "top": { + "description": "y coordinate of top-left corner", + "format": "int32", + "type": "integer" + }, + "width": { + "description": "Box width (rightmost pixels at left + width - 1).", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "OcrPhotoCurve": { + "description": "Copy of ocr/goodoc/layout-common.proto:CurvedBoundingBox, temporary duplicated here to allow for on-device builds.", + "id": "OcrPhotoCurve", + "properties": { + "points": { + "description": "The sequence of points that approximate the curve.", + "items": { + "$ref": "OcrPhotoCurvePoint" + }, + "type": "array" + } + }, + "type": "object" + }, + "OcrPhotoCurvePoint": { + "id": "OcrPhotoCurvePoint", + "properties": { + "x": { + "format": "double", + "type": "number" + }, + "y": { + "description": "NOTE: if we wish to support perspective (varying thickness), later on we could extend this message with a thickness field. In that case, CurvedBoundingBox.thickness() would be used as a default if !Point.has_thickness().", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "OcrPhotoCurvedBoundingBox": { + "id": "OcrPhotoCurvedBoundingBox", + "properties": { + "midLineCurve": { + "$ref": "OcrPhotoCurve", + "description": "The curve of points along the middle of the text line." + }, + "thickness": { + "description": "If top_to_bottom is true, this is the width of the curved box. Otherwise, it is the height of the curved box.", + "format": "double", + "type": "number" + }, + "topToBottom": { + "description": "If true, the curve is interpreted as top to bottom of the line image. Otherwise, it is from left to right.", + "type": "boolean" + } + }, + "type": "object" + }, + "OcrPhotoTextBox": { + "description": "Text with bounding box.", + "id": "OcrPhotoTextBox", + "properties": { + "blockId": { + "description": "ID of the text block that this line belongs to.", + "format": "int32", + "type": "integer" + }, + "box": { + "$ref": "OcrPhotoBoundingBox", + "description": "Text bounding box." + }, + "contentType": { + "description": "Content type for this box.", + "enum": [ + "TEXT", + "HANDWRITTEN_TEXT", + "IMAGE", + "LINE_DRAWING", + "SEPARATOR", + "UNREADABLE_TEXT", + "FORMULA", + "HANDWRITTEN_FORMULA", + "NOT_ANNOTATED", + "SIGNATURE", + "UNKNOWN", + "CUSTOM" + ], + "enumDescriptions": [ + "printed text", + "", + "", + "", + "e.g. a dividing line", + "An entity that's recognizably text, but that can't be read. For example, this can be used for human-generated evaluation data where the human evaluator wasn't able to read the text, couldn't input it, or there was too much text to read.", + "Formula: a mathematical or chemical formula.", + "Same as FORMULA, but handwritten.", + "Signifies that we may not rely on annotations of this type in this region. For example, NOT_ANNOTATED paragraph means that we should ignore other entities within this region, allowing any engine results. Commonly known as 'DO NOT CARE'. See cl/244428520 for discussion.", + "Signature or intitals.", + "Note that due to the fact that the default value is TEXT, parsing a ContentType with an unsupported value will result in TEXT, not UNKNOWN.", + "This entity has content of a user defined type, for example social security number or address. The recognizer_script_id field below may be used to communicate information to mutators about how to handle this entity. If some custom entities require more information for proper handling we can add an Any field." + ], + "type": "string" + }, + "symbolWidths": { + "description": "Optional width of characters in the text.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "text": { + "description": "Text string.", + "type": "string" + } + }, + "type": "object" + }, + "OfficialPagesOfficialKey": { + "description": "This proto is used as the key for official pages data. WARNING WARNING WARNING WARNING WARNING PAY ATTENTION HERE! The query field contains a specially NORMALIZED query, NOT a raw one. You can get a normalized query in several ways: 1. from an squery with NormalizedQueryFromSquery 2. from a CJK-segmented and punctuation-stripped query with NormalizeText (NOTE: navboost queries are already CJK-segmented and punctuation-stripped, you can just pass them to NormalizeText) 3. from user text/query with CanonicalizeText (this will do the CJK segmenting, punctuation stripping and character normalization for you) All of these functions are in ./utils/external-utils.h", + "id": "OfficialPagesOfficialKey", + "properties": { + "country": { + "type": "string" + }, + "language": { + "format": "int32", + "type": "integer" + }, + "query": { + "type": "string" + } + }, + "type": "object" + }, + "OfficialPagesQuerySet": { + "id": "OfficialPagesQuerySet", + "properties": { + "queries": { + "items": { + "$ref": "OfficialPagesOfficialKey" + }, + "type": "array" + }, + "queryCountryLanguageFingerprints": { + "description": "This is the fingerprint of the OfficialKey queries in the queries field. The index of a fingerprint in this field corresponds to the index of the fingerprinted query in the queries field. The fingerprint is produced with the QueryCountryLanguageFingerprint function in external-utils.h", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "OrionDocEntitiesProto": { + "id": "OrionDocEntitiesProto", + "properties": { + "docid": { + "format": "uint64", + "type": "string" + }, + "encodedEntity": { + "description": "This is encoded using EntityCandidate::Encode", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "PairwiseQScoringData": { + "id": "PairwiseQScoringData", + "properties": { + "confidenceValue": { + "format": "float", + "type": "number" + }, + "value": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "PairwiseQVersionedItem": { + "description": "Message representing a versioned PairwiseQ scores used for experimentation. This protobuf is copied from quality_nsr_pairwiseq::PairwiseQVersionedItem.", + "id": "PairwiseQVersionedItem", + "properties": { + "confidenceValue": { + "description": "The PairwiseQ confidence value corresponding to this version.", + "format": "float", + "type": "number" + }, + "value": { + "description": "The PairwiseQ value corresponding to this version.", + "format": "float", + "type": "number" + }, + "versionId": { + "description": "The version id.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "PeoplestackFlexorgsProtoInternalExternal": { + "id": "PeoplestackFlexorgsProtoInternalExternal", + "properties": { + "application": { + "description": "All evaluations are done within the context of a given application, e.g., \"Gmail\" and should not be reused in other apps.", + "enum": [ + "UNKNOWN_APPLICATION", + "GPLUS", + "GPLUS_WEB", + "GPLUS_ARES_FEATURE_PROVIDER", + "GPLUS_PHOTOS", + "GPLUS_HANGOUT", + "GPLUS_EVENTS", + "GPLUS_SQUARES", + "GPLUS_NOTIFICATIONS", + "GPLUS_GAMES", + "GPLUS_WHATS_HOT", + "GPLUS_LOCAL", + "GPLUS_PLUS_PAGES", + "GPLUS_PLUS_PAGES_RSS", + "GPLUS_PROFILE", + "GPLUS_FIND_PEOPLE", + "GPLUS_PHOTO_EDITOR", + "GPLUS_SOCIALCAST", + "GPLUS_INTERACTION_EVENTS", + "GPLUS_ENTITY_TRANSFER", + "GPLUS_LIS", + "GPLUS_DRAWBRIDGE", + "GPLUS_DASHER", + "GPLUS_DASHER_TAKEOUT", + "PAISA_MERCHANT_CONSOLE", + "GEO_DATA_UPLOAD_STAGING", + "GEO_DATA_UPLOAD", + "GOOGLE_PLAY_SERVICES", + "GOOGLE_SETTINGS", + "THIRD_PARTY", + "PICASA_PHOTOS", + "GMAIL_HANGOUT", + "FOUNTAIN", + "FOUNTAIN_YOUTUBE", + "YOUTUBE_LEGACY_COMMENT_MIGRATION", + "FOUNTAIN_YOUTUBE_DISCUSS", + "FOUNTAIN_YOUTUBE_MESSAGES", + "YOUTUBE_AUTOSHARES", + "FOUNTAIN_YOUTUBE_LEGACY_GDATA", + "YOUTUBE_CHOWN_PIPELINE", + "FOUNTAIN_YOUTUBE_ACTIVITY_LOG", + "FOUNTAIN_YOUTUBE_ADMIN", + "YOUTUBE_HELD_COMMENT_EXPIRY", + "ONEMARKET_CALENDAR", + "FOCUS_FRONTEND", + "URL_SHAREBOX", + "READER", + "GOOGLE_MAIL", + "PLUS_SHARE", + "YOUTUBE", + "CHECKIN", + "FRAMES", + "PHOTOS_CHROMEAPP", + "MOBILE_BASIC", + "GLASSWARE", + "GAMES", + "THIRD_PARTY_STREAM_EVERYWHERE_SINGLE_POST_WIDGET", + "PLAY_STORE", + "GMAIL_INBOX_POSTS", + "GMAIL_RECENT_POSTS", + "SIDECAR", + "GOOGLE_QUICK_SEARCH_BOX", + "WALLET", + "FRAMELESS_SHAREBOX", + "YOUTUBE_CAPTURE", + "YOUTUBE_WATCH_PAGE_SHARE", + "YOUTUBE_REACTR", + "YOUTUBE_MANGO", + "YOUTUBE_REACTR_TAKEOUT", + "YOUTUBE_COMMENTS_NOTIFICATION", + "YOUTUBE_COMMENTS_TIMED", + "YOUTUBE_COMMENTS_ENGAGEMENT_P13N", + "YOUTUBE_COMMENTS_LEGAL_TAKEOUT", + "YOUTUBE_COMMENTS_INDEXING", + "YOUTUBE_COMMENTS_NEWEST_FIRST", + "YOUTUBE_SUBSCRIPTIONS_FEEDS", + "GHUB_COMMENTS", + "GOOGLE_KEEP", + "VEGA", + "SOCIAL_REVIEWS", + "PLAY_MOVIES", + "GMAIL", + "GMAIL_GO", + "HELPOUTS", + "MAPS", + "MAPS_ENGINE_MOBILE", + "CALENDAR", + "PLAY_NEWSSTAND", + "FITNESS", + "WEAR_HEALTH", + "WEAR_HEALTH_PROVISIONING", + "PLAY_BOOKS", + "INSTORE", + "PLAY_MUSIC", + "GOOGLE_CHROME", + "LOCATION_FLARE", + "NEWS_WEATHER", + "PROMOTED_POSTS", + "CLOUD_PRINT", + "CLOUD_DEVICES", + "CPANEL", + "DRIVE", + "CLASSROOM", + "STORIES", + "GOOGLE_ANALYTICS", + "LOCATION_SAMPLE", + "BIGTOP", + "GOOGLE_CAST", + "AUTHZEN", + "PARENTS", + "SEARCH", + "NEWS", + "DOCS", + "PHOTOS", + "PHOTOS_TAKEOUT", + "SIMBA_MOBILE", + "GOOGLE_JOBS", + "CLOUD_PLATFORM", + "CLOUD_PLATFORM_WEB", + "FIREFOX_BROWSER", + "MOVIEMAKER", + "MOVIEMAKER_PHOTOS", + "GOOGLE_STARS", + "SNAPSEED", + "BLOGGER", + "DEVICE_POLICY", + "DOUBLECLICK_CREATIVE_PREVIEW", + "UNICORN", + "ADWORDS_MOBILE", + "FAMILY_COMPASS", + "AUTH_GRANT_CREDENTIAL", + "HALLWAY", + "FAMILY_CAMERA", + "ENDER", + "MAPS_VIEWS", + "TABLESCAPE", + "TOPAZ", + "FIBER", + "ATARI", + "RIDEMATCH", + "GMONEY", + "GOOGLE_EXPRESS", + "CONSUMER_PHOTO_EDITOR", + "JETSTREAM", + "SOCIAL_SERENDIPITY", + "ONE_TODAY", + "PROFILES", + "SOCIAL_POLLS", + "SPACES", + "ADWORDS_EXPRESS", + "IDENTITY", + "IDENTITY_FRONTEND_VISUAL_ELEMENTS", + "YOUTUBE_BACKSTAGE", + "YOUTUBE_BACKSTAGE_ADMIN", + "YOUTUBE_UNPLUGGED", + "YOUTUBE_MUSIC", + "HUB", + "ANDROID_EDU_PROVISIONING", + "ANDROID_WEAR", + "CHROMECAST", + "ONTHEGO", + "ADSENSE", + "PROJECT_FI", + "JAM", + "HUDDLE", + "CAR_APP", + "TAILORMADE", + "ACTIVITY_LOG", + "SPACES_ACTIVITY_LOG", + "PHOTOS_ACTIVITY_LOG", + "MEMEGEN", + "SOCIETY", + "SOCIETY_CHAT", + "HIGHLIGHT", + "YOUTUBE_LIVE", + "YOUTUBE_LIVE_ACTIVITY_LOG", + "YOUTUBE_LIVE_TAKEOUT", + "CARDBOARD_CAMERA", + "PLAY_DEVELOPER_CONSOLE", + "MIXX", + "CHROME_REMOTE_DESKTOP", + "HOT_LANE", + "CONTACTS", + "CONTACTSHEET", + "HOVERCARD", + "DORY", + "SPECTRUM", + "DYNAMITE", + "DASHER_USER_HUB", + "CULTURAL", + "BOOND", + "EXPEDITIONS", + "PHOTO_ALBUM_ARCHIVE", + "GAMMAGO", + "FIREBALL", + "SUPPLY_CHAIN_CENTRAL", + "PAISA", + "SANDCLOCK", + "ACCOUNT_SETTINGS_MOBILE", + "GOOGLE_VOICE", + "WING_MARKETPLACE", + "CHIME", + "LIFESCIENCE_FRONTENDS", + "WYLO_TODAY", + "NAKSHA_CONSUMER", + "ENTERPRISE_ENROLLMENT", + "IMPROV", + "TRANSLATE", + "SOCIAL_ENGAGE", + "CORPCAM", + "ANDROID_CONTACTS", + "CURATOR", + "TRAVEL_BOOKING", + "SOCIAL_DISCOVERY", + "GPOST", + "PAIDTASKS", + "PRIMER", + "LOCAL_DISCOVERY", + "BASELINE", + "QUARTZ", + "DPANEL", + "TRIPS", + "HOME_SERVICES", + "SOCIALGOOD", + "LOUPE", + "UGC_LIVE_COMMENTS", + "FAMILY_LINK", + "G3DOC", + "MOMA", + "DASHER_ADMIN_CONSOLE", + "DASHER_COMMERCE_CONSOLE", + "TRAVEL_VACATIONS", + "TRENDS", + "TASKS", + "VIMES", + "SECURITY_EVENT_MANAGER", + "VR_EVA", + "MINDSEARCH", + "MINDSEARCH_ADMIN", + "ANDROID_AUTO", + "CLOUDCAST_TEXTCHAT", + "APPS_ASSISTANT_OVERLAY", + "SEARCH_CONSOLE", + "CHROME_WEB_STORE", + "SAVE", + "FOOD_ORDERING", + "SOCIAL_RECOVERY", + "ANDROID_ONBOARD_WEB", + "WEAR_HOME", + "FACT_CHECK_EXPLORER", + "ALLO", + "FAMILY_LINK_HELPER", + "PROXY_GAL_PROVIDER", + "ONEGOOGLE", + "ONEGOOGLE_ASYNC", + "WICKED", + "SHEETS", + "SLIDES", + "ASSISTANT_EXPLORE_WEB", + "ASSISTANT_SETTINGS_WEB_UI", + "ANDROID_DIALER", + "KLOPFKLOPF", + "LAGEPLAN", + "SCIENCE_JOURNAL", + "HIRE", + "ZANDRIA", + "DASHER_RESELLER_FRONTEND", + "ZOOMSIGHTS", + "UGC_LIVE_COMMENTS_TAKEOUT", + "GUARDIAN", + "GUARDIAN_CORP", + "GOOGLE_MY_BUSINESS", + "PRESTO_ALP", + "PRESTO_FE", + "KIDS_HOME", + "OPA", + "SUBSCRIBEWITHGOOGLE_CLIENT", + "REVEAL", + "ANDROID_NATIVE_ONBOARDING", + "AMP_ACTIONS", + "SPOT", + "MEDICAL_SCRIBE", + "MEDICAL_SCRIBE_TASKING", + "DASHER_RULES_FRONTEND", + "ANDROID_TV_LAUNCHERX", + "ANDROID_TV_SETUP_WIZARD", + "SOS_LIVE_COMMENTS", + "GMAIL_LOCKER_UI", + "POLYGLOT", + "PLX", + "GROUPS_UI", + "MSV", + "WOLVERINE", + "MIC", + "FORMS", + "ARCORE", + "ANDROID_EMERGENCY", + "LENSLET", + "MEDICAL_LABELING", + "G_SUITE_ADD_ONS", + "LOCATION_HISTORY_CONSENT_ANDROID_LIBRARY", + "PAYMENTS_WEB_5", + "APPS_PLATFORM_CONSOLE", + "INTROSPECT", + "NGA", + "SUPPLY_CHAIN_HW_CHP2", + "DUC_COMPANION", + "AUTOMON", + "TV_LIVE_COMMENTS", + "GUP_PEEPS", + "FOCUS_SYNC_ADAPTER_V1", + "NOVA", + "NOVA_STAGING", + "DASHER_DATA_CLASSIFICATION_FRONTEND", + "GOOGLE_ADMIN", + "MESSAGE_PROCESSOR", + "EMAIL_PROCESSOR", + "ENGAGE_PIPELINE", + "AUTO_DOC_PROBER", + "DOC_PROBER", + "FRAMES_DELETE_SYNC", + "EMBEDS_MIGRATION", + "SOCIAL_REVIEWS_SYNC", + "GUNS", + "POSTBOX_ONEOFF", + "PLUS_API_ONEOFF", + "STANZA_ACTIVITY_POST_DELETE_SYNC", + "GRAPH_PROBER", + "STANZA_PERIODIC", + "MADISON_PERIODIC", + "PAPYRUS_PERIODIC", + "PHOTOS_BACKEND", + "REDBOX_BACKEND", + "PHOTOS_FIFE", + "ABUSEIAM", + "ARES", + "STREAM_INDEXING", + "STANZA_INDEXING", + "STANZA", + "STANZA_MOONSHINE_INDEXING", + "STREAM_ACTIONS", + "STREAM_CONFIG", + "STREAM_SERVICE", + "STREAM_DELETE", + "KWYJIBO", + "STANZA_TEST", + "TEST_APPLICATION", + "SOCIAL_ANNOTATION_SERVICE", + "ANNOTATION_SERVICE_STANZA_LISTENER", + "SBE_PLAYGROUND", + "EXPO", + "ANDROID_VR_HOME", + "YOUTUBE_BLARNEY_STONE", + "SOCIAL_EVENTS", + "EMERGENCY_ASSIST", + "ADS_INTEGRITY_ENFORCER", + "ADS_INTEGRITY_ENFORCEMENT_MANAGER", + "ADS_INTEGRITY_EXPLORER", + "ADS_INTEGRITY_REVIEWER", + "GPLUS_COLLEXION_PIPELINE", + "GPLUS_OFFLINE", + "PAPYRUS", + "YOUTUBE_ADMIN", + "YOUTUBE_ADMIN_REVIEW_QUEUE_PACING", + "YOUTUBE_TNS_VERTICAL_MANAGER", + "YOUTUBE_DECIDER", + "YOUTUBE_TNS_ACTION", + "YOUTUBE_EXTERNAL_LINKS", + "FOCUS_BACKEND_BATCH", + "TEAMSPACES", + "ASSISTANT_OPA", + "TRASNLATION_MEMORY_MANAGER", + "THREADIT", + "RESOURCE_SYMPHONY", + "L10N_INFRA_SHARED", + "WORK_TRACKER", + "ARIANE", + "COLAB_INTERNAL", + "COLAB_EXTERNAL", + "TALENT_GROW", + "ROCKET_LABS", + "MY_GOOGLE_FAMILIES", + "DATA_STUDIO", + "LEGAL_CONTRACTS", + "BRIEF", + "HARDWARE_MFG_DATA_VENUS", + "BETTERBUG", + "DCMS", + "PLAY_BOOKS_PUBENG", + "YAQS", + "PROSPER", + "CAMPAIGN_AUTOMATION_TOOL", + "HIRING", + "DATACENTER_SOFTWARE", + "MARKETING_WORKFLOWS", + "YOUTUBE_PARENT_TOOLS", + "RELIABILITY_INSIGHTS_PST", + "CUSTOMER_CARE_PORTAL", + "FUSION", + "PRODUCTION2020_UIE", + "SPEAKEASY", + "DEPRECATED_QUICKSTART_FLUME", + "DUO_CLIENT", + "ALBERT", + "PEOPLE_PLAYGROUND", + "GPLUS_POST_RECOMMENDER", + "IMAGES", + "GOOGLE_STORE", + "GCONNECT_MUSTARD", + "MADDEN", + "MOBDOG", + "GBOARD", + "RECORDER", + "UNMAPPED_LEGACY_GPLUS_SOURCE", + "PODIUM", + "GSA_FUSE", + "HONEYPHISH", + "SOCIAL_ANNOTATION_SERVICE_BACKFILL", + "CONTACT_HR", + "PAISA_WANDER", + "NEXTGENRETAIL_SELF_ORDER", + "UNSET_APPLICATION", + "UNKNOWN_FIRST_PARTY_APPLICATION", + "WABEL", + "VIDEO_HANGOUT", + "VIDEO_HANGOUT_LITE", + "VIDEO_HANGOUT_GVC", + "VIDEO_HANGOUT_PRESENT", + "VIDEO_HANGOUT_HOA", + "VIDEO_HANGOUT_TEE", + "VIDEO_HANGOUT_SDK", + "VIDEO_HANGOUT_ENVOY", + "BABEL", + "BABEL_NOVA", + "WABEL_MEDIACALL", + "HANGOUT_START_PAGE", + "EXPRESS_LANE", + "MEETINGS_ANDROID", + "EXPRESS_LANE_BOQ", + "RTC_FLEET_MGMT", + "STAX", + "RIGEL", + "PHOTOS_SCANNER", + "PHOTOS_LIBRARY_API", + "PHOTOS_PARTNER_API", + "VAULT", + "PROF", + "TOTAL", + "TOTAL_ZERO_PARTY", + "TOTAL_FIRST_PARTY", + "TOTAL_THIRD_PARTY", + "TOTAL_INTERNAL", + "TOTAL_UNKNOWN", + "TOTAL_MINUS_YOUTUBE", + "TOTAL_FIRST_PARTY_WITH_PRIMARY_INTENT_TO_SHARE_TO_GPLUS", + "TOTAL_FIRST_PARTY_WITH_SECONDARY_INTENT_TO_SHARE_TO_GPLUS", + "TOTAL_GPLUS", + "TOTAL_SOCIAL_APPS", + "CROWD_COMPUTE", + "KHAZANA", + "LIGHTER_GMM", + "LIGHTER_GMB", + "MYACTIVITY", + "BLOG_COMPASS", + "CONCORD", + "NAVSTAR", + "SETTINGS_INTELLIGENCE", + "TOPAZ_TEAMS", + "GEMAGENT", + "DUMBLEDORE", + "GOOGLE_ONE", + "NBU_GCONNECT_KIMCHI", + "FASTDASH", + "AQUARIUS_LAPIS", + "DASHER_REPORTING", + "GCONNECT_PICARD", + "GOOGLE_JACQUARD", + "GOOGLE_GO", + "BUGANIZER", + "DOCOS_MENTIONS", + "TRIX_WAFFLE", + "SHARE_SERVICE", + "ANDROID_SAFETY", + "CLOUDCAST_TEXTCHAT_TAKEOUT", + "ASSISTANT_GO", + "FLOURISH", + "ALECS", + "NANDHI", + "GOOGLE_RECORDER", + "CONTACT_STORE", + "PROFILE_CARD", + "ESPRESSO", + "PEOPLE_COMPANION", + "PHOTOS_GO", + "YETI", + "BLOOM", + "FIELD_OFFICER", + "URBAN_MOBILITY", + "FAMILYCARE", + "INTUITIVE_PLATFORM", + "NBU_CRICKET_WORLD_CUP", + "INTEGRATION_PLATFORM", + "CROS_SCALING_STAGING", + "CROS_SCALING_PROD", + "ASSISTANT_PROACTIVE_SUGGESTIONS", + "PRIVACY_ONE", + "PAISA_MERCHANT", + "ASSISTJS", + "TRAVEL_HOTELIER", + "PHOTOS_KINDYGRAM", + "ANDROID_MESSAGES", + "TRAVEL_HOTEL_EDITOR", + "VISTAAR", + "VISTAAR_DEV", + "GSUITE_GROWTH", + "ELDAR", + "GMB_ANDROID", + "SHOPPING_LIST", + "EARTH", + "PAISA_CREDIT_INSTANT_LOAN", + "ASSISTANT_GO_WEB", + "SHOWTIME_EVENTS", + "KONARK", + "EXO_REFSERVER", + "MONITORING_PLATFORM", + "AUTOCAP", + "PAYMENTS_ORCHESTRATION", + "GMB_IOS", + "ASSISTANT_KAIOS", + "ADMOB_MOBILE", + "SCREENERS", + "MILTON", + "GHIRE", + "TRANSLATE_COMMUNITY_UI", + "ROAD_MAPPER", + "NEST", + "ROLLOUTS_UI", + "SHOPPING_PROPERTY", + "SHOPPING_PROPERTY_NONPROD", + "PAYMENTS_MERCHANT_VERTICALS_GAS", + "PAISA_MOVIES", + "HUB_CALL", + "WAYMO_SIMULATION_RESULTS", + "GSUITE_WORKFLOWS", + "FINANCE_WORKFLOWS", + "PAYMENTS_MERCHANT_VERTICALS_PARKING_UI", + "TRAVEL", + "GABBLE", + "APPS_EDU", + "MYFI", + "CHOMCHOM", + "ASSISTANT_TOOLCHAIN", + "YOUTUBE_ANSIBLE", + "YOUTUBE_CI_KAPLA", + "GANTRY", + "PAYMENTS_MERCHANT_CONSOLE", + "SPLINTER", + "KINTARO", + "MDM_ADMIN_CONSOLE", + "PAYMENTS_CONSUMER_CORE", + "INCIDENT_MANAGEMENT", + "ONEGOOGLE_MOBILE", + "ANURA", + "FINANCE_FGC", + "PODCASTS_MANAGER", + "FILES", + "YOUTUBE_POST_API", + "GSUITE_HUB", + "TV_LAUNCHER", + "PAIDTASKS_FRONTEND", + "ONE_REVIEWER_TOOL", + "MEET_QUALITY_TOOL", + "TRAVEL_PLANNING", + "MEET", + "PAISA_FOOD", + "TINYTASK_TASKER", + "FIELDOFFICER", + "LENS_WEB", + "HERALD", + "PAISA_MICROAPPS_WEB", + "BUG_OBSERVER", + "ATLAS", + "DHARMA", + "SNIPIT", + "PREMIUM_ASSISTANT", + "ONEREVIEWERTOOL", + "CORONADO", + "SYSTEM1", + "PUMICE", + "BACKLIGHT", + "GLOSSARY_MANAGER", + "UPGRADEPARTY", + "ONEDEV_WORKFLOW", + "AVALANCHE", + "KORMO_SEEKER", + "ASSISTANT_PROFILE_YOURPEOPLE", + "SMART_DISPLAY_WEB", + "DESKBOOKING", + "PAYMENTS_MERCHANT_VERTICALS_FOOD", + "VALUABLES_MERCHANT_CENTER", + "OFFSEC", + "SCHEDULE", + "PAISA_SOCIAL_CAMPAIGNS", + "WORDFLOW", + "HEALTH_PLANFORCARE", + "DEEPMIND_ALPHASCHEDULE", + "HOOLICHAT_UI", + "YOUTUBE_CREATOR_STUDIO", + "BRICKS", + "PAYMENTS_MERCHANT_DATA_BUSINESS_INSIGHT", + "RECALL", + "NEST_GREENENERGY", + "FRAP", + "PAYMENTS_MERCHANT_VERTICALS_GROCERY", + "REVIEWS_WIDGET_API", + "INCIDENTFLOW", + "AREA120_PROMODAY", + "PINPOINT", + "TRANSCONSOLE", + "MARKETPLACE", + "SPORK" + ], + "enumDescriptions": [ + "Cannot just use UNKNOWN because enum values use C++ scoping rules. Therefore, \"UNKNOWN\" must be unique within \"apps.people.logs.proto\".", + "G+ application Generic app that represents all G+ applications that don't have specific app below. Because of this, this value does NOT represent all G+ applications in analytics data: Clients interested in analytics data for all G+ applications (for example, both GPLUS and GPLUS_WEB), should generally use the synthetic values defined later in this enum, like TOTAL_GPLUS. Replacement for \"s:oz\".", + "G+ web application (codename Tau: go/tauplus) App that represents all G+ traffic coming from boq web. This is meant to replace the application id GPLUS for web traffic when Oz is completely deprectaed.", + "Feature provider for go/ares", + "Photos app within G+ such as lighthouse. Replacement for \"s:lh2\".", + "Hangout app within G+ Replacement for \"s:talk\" that is used for hangout requests.", + "Events app within G+. Replacement for \"s:events\".", + "Squares(community) app within G+. Replacement for \"s:squares\".", + "Notifications app within G+. Replacement for \"s:notifications\".", + "Games activities. Replacement for \"s:gadgets:*\" (source_id).", + "Explore app within G+.", + "Local app within G+.", + "+Pages app within G+.", + "RSS to +Page syndicator.", + "Profile app within G+.", + "Find People app within G+.", + "Edit photos within Photos within G+, see also http://go/snapseed", + "G+ consumption stream integration with Chromecast. see also http://go/+socialcast", + "G+ For Work Interaction Event Sync. go/kerr-prd and go/gplus_interaction_event_sync.", + "G+ Entity Transfer. See go/gplus-entity-transfer-design.", + "G+ LIS. See b/77638423.", + "G+ Drawbridge. See go/drawbridge-dd.", + "Currents (G+ for Enterprise) App An alternative to GPLUS that indicates this is in a build for Currents.", + "Domain Wide Takeout (go/dwt-d3doc) for Currents/G+. See go/g+-takeout-filters. Note that GPLUS_DASHER_TAKEOUT is G+ and Currents agnostic, even though GPLUS_DASHER refers to Currents only.", + "Paisa Merchant Console http://go/paisa Team contact: paisa-merchant-eng-blr@google.com", + "GEO_DATA_UPLOADS is an internal-use-only staging corpus for geo_data_upload (above). See go/gdu-design-1.2", + "GEO_DATA_UPLOADS consists of discussions between 3rd parties and Google about uploaded data. See go/gdu-design-1.2", + "Google Play services, used when doing background tasks like log posting and background sync that aren't initiated by any external app.", + "Google Settings app.", + "Third party clients who use apiary to work with G+. Replacement for \"s:chili\".", + "External First party. Picasa photos app.", + "The G+ widget served off Oz and rendered in gmail for hangout integration. Replacement for \"s:oz:gadget-gmail\".", + "The G+ widget served off Oz and rendered in any page EXCEPT Youtube. Replacement for \"s:fountain\".", + "The comment widget served off youtube video page. Replacement for \"s:fountain:youtube\".", + "Legacy youtube video watch page comments. See go/stollen for details.", + "The G+ widget served off Oz and rendered in youtube channel discuss page. It's the \"DISTILLER\" project. Replacement for \"s:fountain:youtube:channel\".", + "YouTube private messages built on top of distiller comments. Replacement for \"s:fountain:youtube:private\".", + "Public posts generated automatically if a YT user who has been merged with their G+ account uploads a public video. Replacement for request_header.application_id=\"s:oz\" and mutate_data.activity.stream_id.source_id= \"a:ext:client.sharebox.261207059221.", + "Used for comment writes sent to the legacy YouTube GData API by clients that have not switched to the G+ commenting API.", + "Used for the Youtube channel ownership pipeline. Replacement for \"s:youtube:distiller\". go/youtube-chown-pipeline", + "Used for youtube's comment history page.", + "Used for youtube comments admin pages.", + "Used for comment expiry. go/ytc-studio-held-comment-expiry", + "Onemarket Calendar Team contact: omc-team@google.com", + "Focus Frontend which is serving G+ profile. Replacement for \"s:focus\".", + "URL sharebox served off Oz on /share and rendered in 1P/3P, on both desktop \u0026 mobile. For mobile sharebox, this app id is set in //java/com/google/apps/people/oz/sharebox/client/mobile/shell.js", + "Google Reader. Replacement for \"s:reader\".", + "Google Email. Replacement for \"s:google_mail\".", + "Plusone Application. Replace for \"s:plusshare\".", + "Connection with G+ through YouTube. e.g. YT mobile native apps.", + "Checkin within G+. Replacement for \"s:friendview:checkin\" (source_id).", + "Oz Frames. Replacement for \"s:frames\".", + "Pulsar native app.", + "Mobile basic traffic for clients hitting \"plus.google.com/app/basic\".", + "The Google Glass Mirror API: https://developers.google.com/glass/. Replacement for \"s:glass\".", + "Play Games related clients. (e.g. Games destination app.)", + "Embeddable widgets, part of Stream Everywhere project. http://go/streameverywheredesign", + "Google Play Store.", + "Interactive email notifications in Gmail.", + "Right hand side widget in Gmail.", + "Third party \"sidecar\" widgets. http://go/embeddedstreamsdesign DEPRECATED, DO NOT USE.", + "Google Quick Search Box. https://sites.google.com/a/google.com/android-qsb.", + "Google Wallet (Android and iOS clients).", + "Sharebox that is populated via URL params, suitable for use in a popup. This sharebox is accessible to 3p, although in practice it is mostly used by 1p. https://sites.google.com/a/google.com/es-sharing/", + "YouTube Capture (iOS client). http://go/kubrik", + "Posts generated from the share window launched by share menu on the YouTube watch page. yt-social-dev@", + "Youtube Real-time group chat, also known as 'Reactr'. http://go/reactr Team contact: reactr-dev@google.com.", + "YouTube Go - android app for the next billion users. http://go/ytgo Team contact: mango-eng@google.com", + "YouTube Reactr Takeout. See b/69636706 http://go/reactr Team contact: reactr-dev@google.com.", + "Youtube Comments go/ytcci Team contact: yt-comments-team@google.com", + "Youtube Comments: Timed Comments go/ytcci Team contact: yt-comments-team@google.com", + "Youtube Comments: Engagements go/ytcci Team contact: yt-comments-team@google.com", + "Youtube Comments: Comments legal takeout go/ytcci Team contact: yt-comments-team@google.com", + "Youtube Comments: Top comments indexing go/ytcci Team contact: yt-comments-team@google.com", + "Youtube Comments: Newest First. go/ytcci Team contact: yt-comments-team@google.com", + "Youtube Comments: Subscription notifications go/ytn-inbox-comment-decoration Team contact: yt-notifications@google.com", + "Comments for gHub Finance. Team contact: introspect-eng@google.com", + "Google Keep. https://sites.google.com/a/google.com/keep/", + "Vega / Google+ for Business (Android and iOS clients). http://go/vega", + "Reviews (Local and others) sr-eng@", + "Google Play Movies \u0026 TV, Android app. Team contact: videosapp-android@google.com.", + "Gmail", + "Hub as Gmail Go", + "Google Helpouts http://go/tee-team", + "Google Maps Mobile: http://go/gmm Desktop: http://go/tactile", + "Google Maps Engine Mobile http://go/gmemobile", + "Calendar Android: https://sites.google.com/a/google.com/android-calendar/ Desktop: https://sites.google.com/a/google.com/timely/", + "Google Play Newsstand http://go/dots Team contact: gnews-infra@google.com.", + "Google Fitness http://go/heart Team contact: android-fitness-eng@google.com.", + "Google Health http://go/wear-health Team contact: wear-health@google.com.", + "Google Wear Health Provisioning http://go/wear-health Team contact: wear-health@google.com.", + "Google Play Books (Android and iOS clients) http://go/android-books http://go/ios-books", + "Google Instore http://go/instore-wallet", + "Google Play Music (Android and iOS clients) http://go/android-music Team contact: music-app-eng@google.com", + "Google Chrome iOS: http://go/blingy (bling-team@google.com)", + "Location Flare http://go/location-flare", + "Google News Weather Android App http://go/android-core-utilities Team contact: android-news-eng@google.com.", + "Promoted Posts http://go/promotedposts", + "Cloud Print http://go/cloudprinting Team contact: cloudprint-team@google.com", + "Cloud Devices http://go/cloud-devices Team contact: cloud-devices-team@google.com", + "CPanel (Google Admin) for Enterprise http://go/cpanel-mobile Team contact: cpanel-mobile-eng@google.com", + "Google Drive http://go/docs-site Android part: http://go/cakemix Team contact: cakemix-eng@google.com", + "Classroom http://go/homeroom Team contact: homeroom-eng@google.com", + "Google+ Stories aka Boswell go/bozdd Team contact: boswell-eng@google.com", + "Google Analytics Android Client http://go/giant-site Team contact: ga-mobile-app-eng@", + "Sample app for Location team Team contact: location-lon@google.com", + "BigTop Android https://wiki.corp.google.com/twiki/bin/view/Main/BigtopAndroid", + "Google Cast Android Client http://go/dongle Team contact: eureka-setup-team@", + "Authzen http://go/authzen Team contact: authzen-team@google.com", + "Google Parental Supervision Android Client http://go/parentapp DEPRECATED, DO NOT USE.", + "Google Search", + "Google News", + "Google Docs NOTE: Docs is a separate app from DRIVE.", + "Google Photos standalone experience (not included with the G+ app). http://go/photos Team contact: photos-backend@google.com", + "Google Photos Takeout export http://go/photos Team contact: photos-backend@google.com", + "Simba android client http://sites/simba", + "Google Jobs android client http://go/garage-wiki Team contact: garage-android@google.com", + "Google Cloud Platform Android and iOS apps http://go/vespa Team contact: vespa-eng@google.com", + "Google Cloud Platform Android web app http://go/pantheon Team contact: pantheon-client@google.com", + "Shares integrated into Firefox browser. Contact: carnold@mozilla.com, sharekit-eng@google.com", + "MovieMaker component of G+. http://go/aamovie Contact: photos-movies@google.com", + "MovieMaker component of Photos. http://go/aamoive Contact: photos-movies@google.com", + "Google Stars Android Client (go/stars) Team contact: collecting-eng@google.com", + "Edit photos, consumer app. see http://go/snapseed Team contact: snapseed-eng@google.com", + "Blogger for Android http://go/bloggerandroid Team contact: blogger-tech@google.com", + "Google Apps Device Policy for Enterprise http://go/mdm Team contact: mdm-eng@google.com", + "Doubleclick Creative Preview app http://go/audition Team contact: mob-h5-eng@google.com", + "Unicorn kids app http://go/unicorn-infra Team contact: unicorn-infra-eng@google.com DEPRECATED, DO NOT USE.", + "AdWords mobile app for Android http://go/awm Team contact: awm-eng@google.com", + "Unicorn Family Compass http://go/family-compass Team contact: family-compass-eng@google.com DEPRECATED, DO NOT USE.", + "Android grant credential Team contact: android-auth-eng@google.com", + "Hallway mobile app for Android and iOS http://go/hallway-prd Team contact: adventurelabs-eng@google.com", + "Unicorn Family Camera http://go/family-camera Team contact: unicorn-famcam-eng@google.com DEPRECATED, DO NOT USE.", + "Ender http://go/ender Team contact: ender-eng@google.com", + "Google Maps Views (Mostly deprecated, but lives as SVApp server) http://go/streetview-apps Team contact: streetview-apps@google.com", + "Tablescape app (internally codenamed FoodEyes) http://go/tablescape Team contact: foodeyes-team@google.com", + "Enterprise Topaz http://go/topaz Team contact: topaz-team@google.com", + "gFiber app http://go/fiberapp Team contact: gfiber-mobile-android@google.com", + "Atari app (The next Google Sites) http://go/atari http://go/atari-mobile Team contact: atari-mobile@google.com", + "Ridematch app http://go/ridematch Team contact: ridematch-team@google.com", + "Google GMoney (Android and iOS clients).", + "Google Express app (Android) http://go/sameday Team contact: gsx-mobilemall@google.com", + "Consumer photo editor http://go/photo-editing Team contact: photos-editing@google.com", + "Jetstream consumer app http://go/jetstream-team and http://go/jetstream Team contact: jetstream-team@google.com", + "Social Serendipity (Social content in Google Now) http://go/serendipity Team contact: serendipity-team@google.com", + "One Today by Google http://go/onetoday Team contact: onetoday-eng@google.com", + "Google Profiles - SmartProfiles for viewing, Me View for editing. http://sites/profiles Team contact: people-frontend-team@google.com", + "Social Polls - surfaced in G+ site/app http://go/es-polls Team contact: es-polls@google.com", + "Spaces App http://go/spaces Team contact: spaces-eng@google.com", + "AdWords Express App http://go/awxv2 Team contact: boost-eng@google.com", + "iOS Identity Library http://go/ios-id Team contact: ios-id-library-team@google.com", + "Identity Frontend. http://go/idfe Team contact: id-fe-infra@google.com.", + "Youtube Backstage. http://go/backstage Team contact: yt-posts-team@google.com.", + "Youtube Backstage Admin Service. http://go/backstage-admin-service Team contact: yt-posts-team@google.com.", + "YouTube Unplugged http://go/unplugged-eng Team contact: yt-unplugged-eng@google.com", + "Youtube Music http://go/music Team contact: woodstock-ios-eng@google.com", + "Android Enterprise Hub App http://go/afwhub Team contact: afwhub@google.com", + "Android Education Device Initializer App. http://go/android-edu-platform Team contact: android-edu-platform-eng@google.com", + "Android Wear app. http://go/clockwork Contact: ewol@, flerda@, clockwork-eng@", + "Chromecast app. http://go/cast-apps Team contact: cast-apps-eng@google.com", + "OnTheGo app. http://go/onthego Team contact: otg-eng@google.com", + "Google AdSense app. Team contact: publisher-android-app@google.com", + "Project Fi app. http://go/nova-eng Team contact: tycho-atlas@google.com", + "Karma team's Jam app. http://go/jam Team contact: karma-eng@google.com", + "Huddle app. http://go/huddle Team contact: huddle-eng@google.com", + "Chauffeur Car app. http://go/chauffeur Team contact: chauffeur-ux-eng@google.com", + "Tailormade app. http://go/tailormade Team contact: tailormade-eng@google.com", + "Activity Log - surfaced in G+ site/app. Currently for G+ only but may expand to support other apps. http://go/activitylog-design Team contact: sps-activitylog@google.com", + "Activity Log in the Spaces product. http://go/activity-log-spaces-dd Team contact: spaces-team@google.com", + "Activity Log in the Google Photos product. http://go/envelope-comments-design-doc Team contact: photos-backend@google.com", + "Memegen! https://memegen.googleplex.com Team contact: memgegen-team@google.com", + "Society App http://go/society Team contact: society-team@google.com", + "Society chat application. http://go/society Team contact: society-team@google.com", + "Search Highlight http://go/seng-highlight Team contact: search-engagement-team@google.com", + "YouTube Live Chat. http://go/livechat-redesign Team contact: yt-live-chat@google.com", + "YouTube Live Activity log. http://go/live-chat-history-design Team contact: yt-live-chat@google.com", + "YouTube Live Takeout. http://go/livechat-takeout Team contact: yt-live-chat@google.com", + "Cardboard camera app http://go/cyclops Team contact: tp-cyclops@google.com", + "Google Play Developer Console http://go/foxcub Team contact: play-apps-devex@google.com", + "Google+ Mixx UI. http://go/mixx Team contact: jeffschiller@google.com", + "Chrome Remote Desktop app http://go/chromoting Team contact: chromoting-team@google.com", + "Hot Lane, Enterprise Meetings App http://go/hotlane Team contact: hangout-enterprise-eng@google.com", + "Web Contacts UI. http://go/web-contacts Team contact: contactsplus-eng@google.com", + "Contactsheet (Web, Android, iOS). http://go/peopleweb-docs Team contact: smartprofile-eng@google.com, contactsheet@google.com", + "Hovercard (Web). http://go/peopleweb-docs Team contact: contactsplus-eng@google.com", + "Dory is a tool for crowdsourcing and ranking user-submitted questions, suggestions, and ideas.", + "Spectrum app. http://go/spectrum-site Team contact: speedtest-eng@google.com", + "Dynamite App http://go/dynamite Team contact: dynamite-eng@google.com", + "Enterprise end user UI http://go/novitas Team contact: novitas-eng@google.com", + "Google Arts \u0026 Culture app. http://go/ci-mobile Team contact: ci-mobile-eng@google.com", + "Boond app http://go/village-mobile Team contact: village@google.com", + "Expeditions app http://go/vr-expeditions Team contact: vr-expeditions@google.com", + "Photo Album Archive app http://go/albumarchive Team contact: social-parc-eng@google.com", + "GammaGo app http://go/gammago Team contact: gammax-mobile-eng@google.com", + "Fireball message app. contact: fireball-android@google.com", + "Supply Chain Central http://go/scc-site Team contact: scc-infra@google.com", + "Paisa app http://go/paisa Team contact: paisa-eng@google.com", + "SandClock app http://go/sandclock Team contact: sandclock-eng@google.com", + "Account Settings Mobile http://go/asm Team contact: myaccount-mobile-eng@google.com", + "The telephony application! Contact voice-team@ or voice-fe@", + "Wing Marketplace http://go/xwma Team contact: wing-commerce-mobile-team@google.com", + "Chime http://go/chime Team contact: chime-team@google.com", + "Verily Lifescience Frontends http://go/csp-eng Team contact: csp-eng@google.com", + "Where You Left Off (WYLO) Today extension for iOS http://go/wylo-dd Team contact: tempeh@google.com", + "Naksha Consumer Android App (Areo) http://go/naksha-android Team contact: naksha-dev@google.com", + "Enterprise enrollment app for Chromebooks http://go/eeapp Team contact: bootstrap-dev@google.com", + "Improv (Material Gallery) mobile app. http://go/material-gallery Team contact: gallery-eng@google.com", + "Google Translate http://go/translate-eng Team contact: translate-team@google.com", + "Social G+ Engage http://go/social-engage Team contact:social-engage-eng@google.com", + "CorpCam http://go/corpcam Team contact: plus-ios-team@google.com", + "Android Contacts http://go/android-contacts Team contact: android-contacts-eng@google.com", + "Curator app. http://go/curator Team contact: curator-eng@google.com", + "Travel Booking. http://go/travel-booking Team contact: travel-booking-eng@google.com", + "People ranking and discovery. http://go/das Team contact: es-disco-eng@google.com", + "GPost (Pony Express) http://go/gpost Team contact: gpost-eng@google.com docs: http://go/gpost-android-analytics", + "Paidtasks (Google Opinion Rewards, Google Surveys) http://go/402 Team contact: 402-eng@google.com docs: http://g3doc/paidtasks/app/README.md", + "Primer http://go/primerapp Team contact: vkes@google.com", + "Local Discovery social features http://go/local-stream Team contact: dgajda@google.com, local-discovery-team@google.com", + "Baseline http://go/baseline-android Team contact: verily-mobile-team@google.com", + "Opa on Quartz http://go/opa Team contact: lmirelmann@google.com, opa-quartz-team@google.com", + "Device Management Panel http://go/dpanel-eng Team contact: dpanel-eng@google.com", + "Google Trips http://go/otg Team contact: oace@", + "Google home services http://go/homeservices Team contact: sab-eng@google.com", + "Social Good / donations http://go/socialgood Team contact: socialgood-eng-team@google.com", + "Camera by Google photos Team contact: loupe-eng@google.com", + "Live comments in sport onebox", + "Family Link http://go/familylink Team contact: familylink-eng@google.com", + "g3doc comments http://go/g3doc-comments", + "Moma http://go/moma-site", + "Dasher Admin Console. There is a separate id for DASHER_USER_HUB = 535 http://go/novitas Team contact: novitas-eng@google.com", + "Dasher Commerce Console. http://go/job314 Team contact: job314-eng@google.com", + "Travel Vacations. http://go/travel-vacations Team contact: travel-packages-eng@google.com", + "Trends http://go/trends Team contact: trends-narrator@google.com", + "Tasks http://go/accomplice Team contact: tasks-eng@google.com", + "Vimes http://go/vimes-doc Team contact: vimes-eng@google.com", + "Security Event Manager http://go/sem-doc Team contact: sem-eng@google.com", + "Eva, the wally camera companion app http://go/wally-camera Team contact: tp-wally@google.com", + "Mindsearch-QA: http://go/mindsearch and g/sbe-mindsearch.", + "Power user for Mindsearch: http://go/mindsearch and http://go/ms-sbe-power-options Team contact: mindsearch-team@google.com", + "Android Auto http://go/android-auto Team contact: gearhead-team@google.com", + "Application for live chat when playing games. go/yeti-gg.", + "Application for the Apps Assistant Overlay. http://go/awr Team contact: awr@google.com", + "Search Console. http://go/wmx Team contact: wmx-fe@google.com", + "Chrome Web Store http://go/cws Team contact: webstore-eng@google.com", + "Saves (http://go/saves) Team contact: saves-web-eng@google.com", + "Food Ordering http://go/fopa Team contact: fopa-eng@google.com", + "Social Recovery http://go/social-recovery-update Team contact: aczeskis@google.com", + "Android Onboard Website (Growth MWeb) http://go/android-mweb-dd Team contact: campaign-il@google.com", + "Android Wear (Clockwork) http://go/clockwork Team contact: clockwork-eng@google.com", + "Fact Check Explorer web app http://go/fc-explorer Team contact: fact-checking-dev@google.com", + "Allo app http://go/allo Team contact: allo-discuss@google.com", + "Family Link Helper companion app for kids/teens http://go/familylink Team contact: familylink-eng@google.com", + "Proxy Gal Provider. http://go/gal-provider-migration Team contact: contacts-sync-eng@google.com", + "OneGoogle bar (web). http://go/og Team contact: og-team@google.com", + "OneGoogle async widgets (web). http://go/og-stack-redesign Team contact: og-team@google.com", + "Wicked video uploads http://go/wicked-prd Team contact: wicked-team@google.com", + "Google Sheets NOTE: Sheets is a separate app from DRIVE.", + "Google Slides NOTE: Slides is a separate app from DRIVE.", + "Assistant Explore Web http://go/assistant-agents-web Team contact: assistant-explore-eng@google.com", + "Assistant Settings Web http://go/assistant-settings-web-ui-design Team contact: assistant-settings-web-eng-team@google.com", + "Android Dialer app http://go/dialer Team contact: android-dialer@google.com", + "Klopfklopf Roomtablet app. see http://go/klopfklopf Team contact: klopfklopf-eng@google.com", + "Klopfklopf Hallwaytablet app. see http://go/lageplan Team contact: lageplan-eng@google.com", + "Science Journal app. see http://go/sciencejournal Team contact: science-journal@google.com", + "Hire app. http://go/hire-mobile Team contact: bebop-mobile-dev@google.com", + "Poly (Zandria) app. http://poly.google.com/ Team contact: poly-team@google.com", + "Dasher Reseller Frontend. http://g3doc/ccc/hosted/g3doc/teams/reseller/ Team contact: dasher-reseller-eng@google.com", + "Zoomsights. http://go/zs-prd-tt-v2 Team contact: zoomsights-eng@google.com", + "Live comments for take out Team contact: search-ugc@google.com", + "Patient Guardian http://go/patient-guardian-site Team contact: g4c-eng@google.com", + "Patient Guardian http://go/patient-guardian-site Team contact: g4c-eng@google.com", + "Google My Business (go/gmb) Team contact: geomerchant-data-measurement@google.com", + "Presto Ads Landing Page (go/alp-v0) Team contact: sb-ads@google.com", + "Presto consumer FE http://go/presto-eng Team contact: geomerchant-presto@google.com", + "Kids Home app for young kids android home experience Team contact: hogsmeade-eng@google.com", + "Google assistant (OPA) app http://go/opa Team contact: opa-android-eng@google.com", + "Subscribe with Google Client (SwG) http://go/swg Team contact: swg-eng@google.com", + "Lookout app http://go/reveal Team contact: reveal-eng@google.com", + "Android Native Onboarding http://go/android-onboarding-dd Team contact: growth-il-eng@google.com", + "AMP Actions go/aog-amp-actions Team contact: aog-amp-actions@google.com", + "Spot app go/spot Team contact: spot-eng@google.com", + "Medical Scribe go/medical-scribe Team contact: medical-scribe-frontend-eng@google.com", + "Medical Scribe Tasking go/medical-scribe-tasking-overview Team contact: medical-scribe-tasking@google.com", + "Dasher Rules Platform go/project-raven Team contact: rules-platform-eng@google.com", + "Android TV LauncherX app go/launcherx Team contact: atv-launcher-engineering@google.com", + "Android TV Setup Wizard app go/atv-eng-setup Team contact: android-tv-setup-team-eng@google.com", + "Live comments in Google search results page when an SOS Alert is triggered go/ugc-live-comments-for-crisis Team contact: google-sos-eng@google.com", + "Gmail Locker UI go/gmail-locker Team contact: locker-eng@google.com", + "Google-built translation editor. go/polyglot Team contact: polyglot-team@google.com", + "Plx go/plx Team contact: plx-explorer-team@google.com", + "Google Groups Frontend http://go/groups-doc Team contact: groups-eng-team@google.com", + "Managed Street View Collection app go/msvApp Team contact: streetview-apps@google.com", + "Google voice for enterprise go/wolverine Team contact: wonlverine-eng@", + "G Suite Alert Center (MIC) go/project-mic Team contact: mic-eng@google.com", + "Google Forms go/freebird Team contact: freebird-eng@google.com", + "ARCore go/arcore Team contact: arcore-team@google.com", + "Deprecated. Use ANDROID_SAFETY.", + "Google Lens 1p Lenslets go/lenslets-g3doc Team contact: lenslets-eng@google.com", + "Medical Labeling go/maple Team contact: maple-eng@google.com", + "G Suite Add-on go/gsuite-addons Team contact: gsuite-addons-eng@google.com", + "Android library for Location History consent, part of Mobile Consent Flows. go/lohiboshe, go/consent-flows Team contact: consent-flows-team@google.com", + "Payments Platform Web UI http://go/payments-web-5 Team contact: payments-web-infra-eng@google.com", + "Cattery (Apps Developer Platform Console UI server) go/cattery-g3 Team contact: cattery-eng@google.com", + "Source of truth for Alphabet legal entities go/legal-entities Team contact: introspect-eng@google.com", + "Nga Suggestion Resolution Team contact: nga-app-integration", + "Hot Orders Ui Team contact: hw17eng@google.com", + "Duc Companion Team contact: duc-eng", + "Automon http://go/automon Team contact: monitoring-platform-team@google.com", + "TV Live comments in Google search results page for TV program/episode. go/tv-live-comments-dd Team contact: tvm-features@google.com", + "Guppeeps Team contact: gup-tech-apps-eng@google.com", + "Proxy for focus sync adapter. Team contact: contacts-sync-eng@google.com", + "Nova / Google Fi Team contact: fi-growth-eng@google.com", + "", + "Dasher Data Classification Platform go/dasher-data-classification Team contact: smarttags-eng@google.com", + "App for debugging G+ user data go/googleadmin. Replacement for \"s:googleadmin\".", + "Different apps that are run by the notifications team. Replacement for \"s:messageprocessor\".", + "Replacement for \"s:emailprocessor\".", + "Replacement for \"s:reengagement:pipeline\".", + "Stream backend monitoring tool go/lorelei101.", + "", + "FrameService delete synchronization flume job. The ASBE requests use \"s:frames\" (as do online frames requests).", + "Embeds migration flume job. Covers the multiple MR's for that project (V0 -\u003e V1, V1 -\u003e V2, diffing, verifying ...). At any point in time only one of the jobs should be running. Doesn't issue any rpc requests.", + "SocialReviews sync flume job. Synchronizes reviews from zipit to ASBE.", + "Guns notifications delivery.", + "One-off flumes run by the PostBox team. Team contact: es-postbox@google.com.", + "One-off flumes run by the G+ API team. Team contact: plus-api-core@google.com.", + "Stanza delete synchronization flume job.", + "Social graph index monitoring tool. go/graphprober.", + "Stanza periodic flume jobs. Team contact: stanza-team.", + "Madison accounts periodic flume jobs. http://go/madison-accounts Team contact: madison-eng", + "Papyrus periodic flume jobs. Team contact: papyrus-team", + "Photos-backend flume jobs. Team contact: photos-backend", + "Redbox storage backend go/redbox", + "Photos FIFE flume jobs. Team contact: fife-eng", + "Classifies abuse. Replaced by Ares (see below). go/abuseiam", + "Classifies abuse go/ares", + "Sends cliends Goops notifications. go/streamindexing", + "Computes Additional KV Pairs for Stanza's go/stanza-indexing", + "Stanza service: go/stanza. Team contact: stanza-team.", + "Stanza moonshine indexing. Team contact: es-stream-delivery", + "StreamActions service: go/streamactionsservice Team contact: stream-team", + "StreamConfig service: go/socialstreamconfigservice Team contact: stream-team", + "Stream service: go/stream-service Team contact: stream-team", + "Stream delete service: go/delete-stream Team contact: stream-team", + "Legal Investigations Support matter management http://go/kwyjibo", + "Test stanzas for internal integration tests. Clients who want to prototype on Stanza should use SBE_PLAYGROUND instead. Team contact: stanza-team", + "Use for test applications and unit tests", + "AnnotationServiceV2, see go/as2-design. Team contact: social-stream-delivery", + "Stanza Listener for AnnotationServiceV2: go/as2-design Team contact: social-stream-delivery", + "Stanza App for clients to prototype on. Team contact: stanza-team", + "Expo uses the Yenta autocomplete lib (go/EXPO, go/yenta). Team contact: weaver-expo@google.com, yenta-team@google.com", + "Android VR Home app. http://go/vr-home", + "YouTube BlarneyStone; automated abuse and moderation classification http://go/blarneystone", + "Social Events http://go/social-events Team contact: eventsapp@google.com", + "Deprecated name for http://go/pomeroy.", + "Deprecated name for ENFORCEMENT_MANAGER DEPRECATED, DO NOT USE.", + "Ads Integrity's Enforcement Manager client (go/hidoc)", + "Ads Integrity's Explorer client (go/hidoc)", + "Ads Integrity's Reviewer client (go/hidoc)", + "G+ Collections pipeline. This application id is used for internal cleanup. Please DO NOT use it for frontend or backend logging. Team contact: es-collections-eng@google.com.", + "Application used by G+-owned pipelines. Contact: plus-server-eng@.", + "Papyrus service (go/papyrus). Team contact: papyrus-team", + "App for administration of Youtube entities at admin.youtube.com Team contact: yt-force@google.com", + "App for Youtube Review Infra Pacing. Team contact: yt-review-queue-eng@google.com", + "App for Youtube Vertical Manager. Team contact: youtube-tns-vm-team@google.com", + "YouTube Decider (go/yt-tns-dna) Team contact: yt-force-decision-platform@google.com", + "Application for actions enforcing TnS policies due to TnS violations. It's used in both the read and write path (go/yt-tns-dna). Team contact: yt-force-decision-platform@google.com", + "YouTube External Links (go/abusivelinks). Team contact: youtube-url-defenses@google.com", + "Batch jobs run by the Focus Backend team (go/fbs) Team contact: focus-backend-eng@google.com", + "Teamspaces Team contact: teamspaces-eng@google.com", + "Assistant Opa Team contact: assistant-a4w-client@google.com", + "Translation Memory Manager Team contact: tm-team-core@google.com", + "Threadit Team contact: paulmalolepsy@google.com", + "Resource Symphony Team contact: fdo-fe-eng@google.com", + "L10n Infra Shared Team contact: tm-team-core@google.com", + "Work Tracker Team contact: planr-eng@google.com", + "Ariane Team contact: launch-team@google.com", + "Colab Internal Team contact: colab-team@google.com", + "Colab External Team contact: colab-team@google.com", + "Talent Grow Team contact: grow-eng@google.com", + "Rocket Labs Team contact: traditionalgti-coach-dev-team@google.com", + "My Google Families Team contact: id-iff-eng@google.com", + "Data Studio Team contact: ga-lego-fe-eng@google.com", + "Legal Contracts Team contact: nala-eng@google.com", + "Brief Api Team contact: brief-team@google.com", + "Hardware Mfg Data Venus Team contact: cte-data-eng@google.com", + "Betterbug Team contact: betterbug-team@google.com", + "Dcms Team contact: dcms@google.com", + "Play Books Pubeng Team contact: playbooks-pubeng-core@google.com", + "Yaqs Team contact: yaqs-eng@google.com", + "Prosper Team contact: corp-comp-eng@google.com", + "Campaign Management Tool Team contact: subhamidipati@google.com", + "Hiring Team contact: bellalewis@google.com", + "Datacenter Software Team contact: talos-eng@google.com", + "Marketing Workflows Team contact: mw-workflow-eng@google.com", + "Youtube Parent Tools Team contact: yt-pegasus-web@google.com", + "Reliability Insights Pst Team contact: rel360-platform-team@google.com", + "Customer Care Portal Team contact: xpp-eng@google.com", + "Test Fusion Team contact: fusion-team@google.com", + "Production2020 Uie Team contact: p2020-ui-excellence-team@google.com", + "Speakeasy Team contact: speakeasy-eng@google.com", + "", + "Duo Client Team contact: duo-eng@google.com", + "Project albert (go/albert-frontend) Team contact: albert-eng@google.com", + "People Playground (go/people-playground-design) Team contact: project-buffet@google.com", + "Recommended posts pipeline (go/topics-web-gplus) Team contact: stream-ranking-team@google.com", + "Image Search http://go/images Team contact: images-ui-eng@google.com", + "Google Store http://go/smashberry Team contact: smashberry-eng@google.com", + "NBU GConnect Mustard http://go/mustard Team contact: gconnect-mustard-eng@google.com", + "Madden (http://go/madden) Team contact: madden-eng@google.com", + "MobDog (http://go/mobdog) Team contact: ph-eng@google.com", + "GBOARD (http://go/gboard) Team contact: gboard-eng@google.com", + "Recorder (http://go/recorder) Team contact: recorder-eng-team@google.com", + "All legacy g+ posts which currently does not have an application to map to.", + "Podium (http://go/podium)", + "FUSE targets at younger user base who is extensively using Visual/Photo and location as input for searching. go/fuse-sbe-v0-integration. Team Contact: igsa-visual@google.com", + "Honeyphish (http://go/honeyphish)", + "Offline backfill job for annotations generated by go/asv2.", + "Pops Support (Contact HR) go/contacthr-design Team contact: boq-contacthr-eng@google.com", + "Paisa Wander (http://go/paisa-tools) Team Contact: paisa-tools@google.com", + "NextGen Retail Self Order (go/nextgenretail) Team Contact: nextgenretail-eng@google.com", + "Application not set by client. Only used internally.", + "First Party Application which is not mapped to the already defined enums.", + "DEPRECATED DO NOT USE.", + "VIDEO_HANGOUT represents the gcomm application (javascript/apps/gcomm). Hangout Video Calls (rtc-eng@).", + "Legacy (lite) hangouts (rtc-eng@).", + "GVC hangouts calls (gvc-team@).", + "go/present hangouts (gvc-team@).", + "Hangouts on Air (rtc-audience@).", + "Helpouts Hangouts (tee-team@).", + "Shoe SDK (etnu@).", + "Envoy (go/envoy). Contact: noahric@, envoy-eng@.", + "Babel's chat client (aka Hangouts Chat).", + "Babel's Nova client. Used for NOVA related logging through BABEL. Contact: mlei@", + "Media calling embedded in Wabel. Contact: efernandez@, dalesat@", + "Hangouts landing page (hangouts.google.com). Contact: jdudder@, jchord@", + "Express Lane (go/express-lane) Contact: efernandez@, pauldean@, qaz@", + "Enterprise Meetings App for Android http://go/thor-android Team contact: c4w-mobile-eng@google.com", + "Express Lane on Boq. Contact: efernandez@, pauldean@, qaz@, segu@", + "Hangout Meet Hardware management Team contact: rtc-fleet-mgmt-eng@google.com --------------------------- END HANGOUT APPLICATIONS ----------------------", + "Stax database (go/stax). Contact: stax-eng@", + "Hangouts Immersive Client. Contact: pawong@, plancarte@", + "Scanner app. http://go/photos-scanner Team contact: photos-draper-eng@google.com", + "Photos Library API http://go/photos-3p-g3docs Team contact: photos-3p-eng@google.com", + "Photos Library API http://go/photos-3p-g3docs Team contact: photos-3p-eng@google.com", + "Vault (go/vault) Team contact: vault-eng@", + "Course Kit (go/prof) Team contact: prof-eng@", + "TOTAL is for all application traffic.", + "TOTAL_ZERO_PARTY is for all traffic from plus.google.com or its counterparts such as the native mobile G+ app or mobile web.", + "TOTAL_FIRST_PARTY is all non-G+ Google properties, such as Gmail and YouTube.", + "TOTAL_THIRD_PARTY is all third-party site traffic.", + "TOTAL_INTERNAL is all Google-internal traffic. e.g. prober, monitoring, mapreduces.", + "TOTAL_UNKNOWN is all unknown traffic.", + "TOTAL_MINUS_YOUTUBE is all traffic excluding any traffic from YOUTUBE.", + "TOTAL_FIRST_PARTY_WITH_PRIMARY_INTENT_TO_SHARE_TO_GPLUS is all first party traffic with primary intent to share to Google+. All applications that belong to TOTAL_FIRST_PARTY and do not belong to TOTAL_FIRST_PARTY_WITH_SECONDARY_INTENT_TO_SHARE_TO_GPLUS belong to this category.", + "TOTAL_FIRST_PARTY_WITH_SECONDARY_INTENT_TO_SHARE_TO_GPLUS is all first party traffic with no primary intent to share to Google+. The applications that belong to the category are defined in google3/logs/lib/social/content_creation/blacklist_apps.pb.", + "TOTAL_GPLUS is all variations of gplus app under TOTAL_SOCIAL_APPS", + "TOTAL_SOCIAL_APPS is all core social Google apps.", + "CROWD_COMPUTE is a Google-internal crowd-sourcing platform.", + "KHAZANA is an NBU app for document organization. http://go/khazana Team contact: khazana-eng@google.com", + "Lighter is a cross-platform messaging platform to enable applications to build rich in-app messaging experiences. GMM (Google Maps for Mobile) chatting is built on top of Lighter. Team contact: sbe-lighter@google.com", + "Lighter is a cross-platform messaging platform to enable applications to build rich in-app messaging experiences. GMB (Google My Business) chatting is built on top of Lighter. Team contact: sbe-lighter@google.com", + "MYACTIVITY is myactivity.google.com http://go/myactivity Team contact: footprints-team@google.com", + "BLOG_COMPASS is an app that helps bloggers manage their site and find topics to write about. http://go/blog-compass Team: blog-compass@google.com", + "CONCORD measures business and product usage metrics across Google Cloud Platform. http://go/concord Team: concord-dev@google.com", + "Navstar is an app that helps googlers to understand how users are interacting with Search \u0026 Assistant features. http://go/navstar2 Team: navstar-eng@google.com", + "Settings Intelligence is an app that contains updatable module for Pixel Settings. http://go/hacking-on-settings Team: android-settings-core@google.com", + "Topaz teams is a team under Topaz (aka Google Cloud Search) with a mission to externalize the Teams product we have here at Google under Moma. http://go/topaz-teams Team: topaz-teams-eng@google.com", + "Google Endpoint Management Android Agent go/emm-extension Team: mdm-core-eng@google.com", + "DUMBLEDORE is an app that helps kids learn through relevant interest based informal interactions across Google's products http://go/dumbledore Team: dumbledore-team", + "Google One is a subscriptions plan that unlocks premium experiences across Google products. go/googleone Team: subscriptions", + "NBU GConnect Kimchi Google Station Partner Console http://go/gstation-partner-console Team: mdb.nbu-gconnect-kimchi-team@google.com", + "FASTDASH is a near real-time reporting system that processes front-end logs go/fastdash Team:fastdash-infra", + "Clockwork (Aquarius Lapis) go/aquarius-eng Team: aquarius-eng@google.com", + "Dasher Reporting go/dasher-reporting-g3doc Team: dasher-bip-eng@google.com", + "NBU GConnect Picard http://go/gconnect-picard Team contact: gstation-web@google.com", + "go/jacquard", + "Google go http://go/googlego Team: googleit-eng-team@google.com", + "Used in Buganizer.", + "Used in Docos Mentions.", + "Used in Trix Waffle. go/trixwaffle.", + "Used in Share Service. go/apps-share", + "Android Safety go/android-safety-g3doc", + "Yeti text chat for Takeout. go/yeti-takeout-integration Team contact: yeti-textchat@google.com", + "Assistant Go http://go/goopa Team: assistant-lite-android-eng@google.com", + "Flourish App. go/flourish", + "ALECS go/project-mic Team contact: mic-eng@google.com", + "Nandhi Test Scheduler Team contact: people-sharing-engprod@google.com", + "Audio Recorder Team contact: pixel-apps-recorder@google.com", + "ContactStore traffic with unknown client.", + "Profile Card go/yt-profile-card-prd Team contact: yt-identity-core", + "Espresso Team contact: readiness-devs", + "People Companion http://go/people-companion-dd Team contact: contactsplus-eng@google.com", + "Photos Go (go/photos-go) Team contact: photos-go-eng", + "yeti go/yeti Team contact: yeti-analytics-eng", + "Bloom go/bloom Team contact: bloom-edu-eng@google.com", + "Vantage Field go/vantage-field Team contact: vantage-dispatch-eng@google.com", + "Google Roads \u0026 Transit go/urbanmobility Team contact: urban-mobility-eng@google.com", + "Google Health Familycare go/hydrangea Team contact: health-familycare-apps-eng@google.com", + "Intuitive Platform go/intuitive Team contact: ml4nt-dev@google.com", + "Paisa microapps cricket. go/wc-2019 Team contact: payments-microapps-pek-team@google.com", + "Integration Platform Team contact: cloud-crm-platform-eng@prod.google.com", + "CrOS Scaling \u0026 Services staging apps generic commenting service. go/cros3 Team contact: chromeos-peng-eng@google.com.", + "CrOS Scaling \u0026 Services prod apps generic commenting service go/cros3 Team contact: chromeos-peng-eng@google.com.", + "Assistant Proactive Suggestions. go/opacros-proactive-design Team contact: assistant-proactive-suggestions-team@google.com", + "Privacy One Suite of Applications go/privacy-one Team contact: privacy-one-dev-team@google.com", + "Paisa app http://go/paisa Team contact: paisa-eng@google.com", + "Assist JS go/aog-assistjs-logging Team contact: aog-amp-actions@google.com", + "Hotelier go/hotelier-frontend Team contact: hotels-hotelier-eng@google.com", + "Photos Kindygram (Photos for Edu) app go/kindy Team contact: kindygram-eng@google.com", + "Messages SMS/MMS/RCS messaging app for Android go/messages Team contact: am-shell-team@google.com", + "HKB hotel editor go/hkb Team contact: hkb-eng@google.com", + "Vistaar web app go/vistaar Team contact: vistaar-eng@google.com", + "Vistaar web app, non-prod instances go/vistaar Team contact: vistaar-eng@google.com", + "G Suite Growth go/dasher-growth Team contact: dasher-growth-eng@google.com", + "Eldar go/eldar Team contact: eldar-dev@google.com", + "GMB Android client http://go/gmb-android Team contact: gmb-android@google.com", + "Shopping List go/shoppinglist Team contact: shoppinglist-eng@google.com", + "Earth Team contact: earth-ios", + "Instant Loans Microapp go/instant-loans-ui-v2-dd Team contact: paisa-credit-eng@google.com", + "Assistant Go Web (Citadel) go/goopa-citadel Team contact: assistant-nbu-android-eng@googoe.com", + "Showtime Team contact: ecp-platform-team", + "Admin Console - Compliance Center (go/konark) go/konark Team contact: konark-eng@google.com", + "Exo Refserver go/exo Team contact: exo-core@google.com", + "Monitoring Platform go/monitoring-platform Team contact: monitoring-platform-team@google.com", + "Autocap go/autocap Team contact: capmgmt-team@google.com", + "Payments Orchestration go/orchestration Team contact: payments-platform-discuss@google.com", + "Google My Business iOS http://go/gmb Team contact: geomerchant-data-measurement@google.com", + "Assistant on KaiOS go/nbu-dcf-dd Team contact: assistant-nbu-features-eng@google.com", + "AdMob companion app go/admob-mobile-dd Team contact: admob-mobile-app-eng", + "Health Screeners app go/screeners-prd Team contact: health-screeners-dev@google.com", + "Meetings intelligence http://go/meetings-intelligence Team contact: meetings-intelligence-eng@google.com", + "gHire go/ghire, go/ghire-g3doc Team contact: rp2-crm-eng@google.com", + "Translate Community go/translate-community Team contact: translate-community@google.com", + "Road Mapper http://go/road-mapper Team contact: maps-ugc-mtwr@google.com", + "Nest Team contact: vkandamath@google.com", + "Rollouts UI go/releases-rollouts Team contact: releases-rollouts-ui@google.com", + "Shopping Property go/compass-infra Team contact: compass-infra@google.com", + "Shopping Property non prod environment. go/compass-infra Team contact: compass-infra@google.com", + "Payments Gas Microapp http://go/gas-microapp-engdoc Team contact: microapps-transportation-eng@google.com", + "Paisa Movies Microapp go/microapp-movies-prd Team contact: mdb.paisa-movies-dev@google.com", + "Hub Call Team contact: voice-fe-ios@google.com", + "Waymo simulation results dashboard go/waymo-sim-results Team contact: chauffeur-sw-quality-eng@google.com", + "Gsuite Workflow Team contact: apps-workflow-editor-eng-team@google.com", + "Corp Eng Finance Workflows Team contact: introspect-eng@google.com", + "Payments Parking Microapp go/gpay-microapp-parking Team contact: spots-parking-team@google.com", + "Travel Team contact: mayflower-eng@google.com", + "Gabble: *G*oogle *A*ssistant *B*ig *BL*uetooth *E*valuator An internal-only Android application to expedite Bluetooth feature development for the Assistant Auto team. See go/morris-bt for more information. Team contact: gabble-app-eng@google.com", + "Prof (go/prof) and Originality (go/originality). Team contact: prof-eng@google.com, plagiarism-eng@google.com", + "MyFi go/myfi Team contact: sumer-myfi-eng@google.com", + "Chomchom content first experience app. go/chomchom-deck Team contact: chomchom-eng@google.com", + "Assistant Toolchain - Dialog Central Team contact: dialog-central-eng@google.com", + "YouTube Ansible - Abuse platform, go/ansible Team contact: yt-kapla-ansible@google.com", + "YouTube Community Inteligence Kapla integration. b/186151755. Team contact: yt-kapla-team@google.com, yt-kapla-ansible@google.com", + "Gantry Team contact: gmscore-gantry-team@google.com", + "Payments merchant console (go/merchant-console-design) Team contact: merchant-console-infra-eng@google.com", + "Ta'veren - Splinter Team contact: taveren-team@google.com", + "Kintaro Team contact: kintaro-eng@google.com", + "MDM Admin Console Team contact: mdm-eng@google.com", + "Payments consumer core products. Team contact: gpay-android-eng@google.com", + "Incidentflow Team contact: im-tools-eng@google.com", + "OneGoogle Mobile. http://go/og Team contact: og-mobile@google.com", + "Anura App Team contact: anura-eng@google.com", + "FGC Google Finance (go/sumer-fgc) Team contact: fgc-eng@google.com", + "Podcasts Manager Team contact: speakachu-team@google.com", + "Files by Google Team contact: files-eng@google.com", + "YouTube Post API Team contact: yt-post-api-eng@google.com", + "GSuite Hub Team contact: g/hub-eng", + "ATV Analytics Watson go/atv-analytics-design-launcher Team contact: atv-analytics-team@google.com", + "New paidtasks (Surveys) frontend go/402surveys2 Team contact: 402-surf@google.com", + "One Reviewer Tool Team contact: onereviewertool-eng@google.com", + "Meet Quality Tool go/thor-mqt Team contact: rtc-upsight-team@google.com", + "", + "Google Meet http://go/thor-eng Team contact: hangout-enterprise-eng@google.com", + "Paisa Nearby Merchant go/gpay_nearby_prd Team contact: nbu-paisa-merchants-verticals-team@google.com", + "", + "Vantage Field go/vantage-field Team contact: vantage-dispatch-eng@google.com", + "Lens Web (go/lens-web). Team contact: lens-web@google.com.", + "Herald app (go/herald-g3doc) Team contact: herald-eng@google.com", + "Paisa Microapps Web Projects. Includes landing page, microtab and other web related projects. go/microapps, go/microapp-landing-page, go/microapps-store Team contact: microapps-platform-team@google.com", + "BugObserver go/bugobserver-help, bugobserver-eng@google.com", + "Atlas Team contact: atlas-eng@google.com", + "Dharma Initiative go/dharma Team contact: dharma-team@google.com", + "Snipit Team contact: snipit-dev@google.com", + "Premium Assistant (go/premium-assistant) Team contact: premium-assistant-eng@google.com", + "OneReviewerTool (go/ORT-doc) Team contact: onereviewertool-eng@google.com", + "Coronado Team contact: rpui-eng-team@google.com", + "Intake go/systemone Team contact: system1-team@google.com", + "Pumice Team contact: pumice-team@google.com", + "Backlight Team contact: jsuite-eng@google.com", + "Glossary Manager Team contact: tm-team-core@google.com", + "Google Growth - UpgradeParty go/upgradeparty Team contact: google-growth-eng@google.com", + "Onedev Workflow Team contact: one-developer-workflow+people-stack@google.com", + "Avalanche Team contact: cpe-surveys-eng@google.com", + "Kormo Team contact: kormo-eng@google.com", + "Assistant Profile Yourpeople Team contact: assistant-family-eng@google.com", + "Smart Display Web go/sdweb Team contact: sdweb-eng@google.com", + "Deskbooking Team contact: desktopia-open@google.com", + "Food Vertical go/payments-merchant-verticals Team contact: nextgenretail-eng@google.com", + "Valuables Merchant Center go/valuables-merchant-ui Team contact: tp2-valuables@google.com", + "Offsec Team contact: redgate@google.com", + "Staffing Works Schedule Tool go/schedule-docs Team contact: rp2-schedule-eng@google.com", + "Paisa social campaigns platform. go/gpay-campaign-generalization Team contact: pc-social@google.com", + "Wordflow Team contact: wordflow-eng@google.com", + "Plan-for-Care web immersive (go/p4c-immersive-design) Team contact: care-planning-eng@google.com", + "DeepMind AlphaSchedule (go/alphaschedule-docs) Team contact: deepmind-alphaschedule-eng@google.com", + "Hoolichat go/hoolichat Team contact: hoolichat-eng@google.com", + "Youtube Creator Studio Team contact: creator-studio-eng@google.com", + "Bricks Team contact: mdb.cloudx-bricks-team@google.com", + "Payments Merchant Business Insight (go/mechant-business-insight-home).", + "Recall https://recall.googleplex.com Team contact: recall@google.com", + "Nest Green Energy Web go/apollo-web-ui", + "Frap go/frap-docs Team contact: frap-eng@google.com", + "Payments Grocery Microapp go/grocery-deals Team contact: spots-grocery-team@google.com", + "Reviews Widget API go/reviews-widget Team contact: wugc@google.com", + "go/incidentflow Team contact: im-tools-eng@google.com", + "Area 120 - PromoDay go/promoday Team Contact: area120-promoday-eng@google.com", + "Pinpoint go/jsuite-pinpoint Team contact: backlight-eng@google.com", + "Translation Console go/transconsole Team contact: transconsole-eng@google.com", + "Google Workspace Marketplace go/gsm-eng Team contact: gsm-team@google.com", + "Drive desktop Photos uploader go/spork-prd Team contact: spork-eng@google.com" + ], + "type": "string" + }, + "stateStatus": { + "description": "* There can be multiple states based on the context: 1. AUTOCOMPLETE + Gmail - context 1 2. AUTOCOMPLETE + Chat/Dynamite - context 2 3. \"SOME OTHER ACTION\" + Gmail - context 3 A client should identify whether a patrticular context is present in the list and only if one is found - use the state that goes alogn with the context, otherwise the client should default to whatever is the safe assumption about \"internality/externality\" the application should be making (likely, consider everything not explicitly \"internal\" as \"external\").", + "items": { + "$ref": "PeoplestackFlexorgsProtoInternalExternalStateStatus" + }, + "type": "array" + } + }, + "type": "object" + }, + "PeoplestackFlexorgsProtoInternalExternalStateStatus": { + "id": "PeoplestackFlexorgsProtoInternalExternalStateStatus", + "properties": { + "contextType": { + "enum": [ + "INTERNAL_EXTERNAL_CONTEXT_UNSPECIFIED", + "AUTOCOMPLETE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "state": { + "enum": [ + "INTERNAL_EXTERNAL_STATE_UNSPECIFIED", + "INTERNAL", + "EXTERNAL", + "NOT_APPLICABLE" + ], + "enumDescriptions": [ + "", + "", + "", + "Meant for scenarios where client-sides need to know if External information was truly missing, meaning the contact came from a source other than Server (i.e device contacts, user entered, etc), or if the server intentionally did not populate the attribute (i.e. non-Dasher). This value will never be set by the server, and instead, the client will use it to create an artificial payload the first time it receives a server contact that doesn't have external data. That way the client will know downstream that external state doesn't apply" + ], + "type": "string" + } + }, + "type": "object" + }, + "PerDocData": { + "description": "=========================================================================== # Make sure you read the comments in the bottom before you add any new field. NB: As noted in the comments, this protocol buffer is used in both indexing and serving. In mustang serving implementations we only decode perdocdata during the search phase, and so this protocol should only contain data used during search. See mustang/repos_www/attachments.proto:{MustangBasicInfo,MustangContentInfo} for protocols used during search and/or docinfo. Next available tag deprecated, use this (and look for commented out fields): blaze-bin/net/proto_compiler/protocol-compiler --freetags \\ indexer/perdocdata/perdocdata.proto Next tag: 217", + "id": "PerDocData", + "properties": { + "BlogData": { + "$ref": "BlogPerDocData" + }, + "BookCitationData": { + "$ref": "BookCitationPerDocData", + "description": "the book citation data for each web page, the average size is about 10 bytes" + }, + "DEPRECATEDAuthorObfuscatedGaia": { + "description": "The obfuscated google profile gaia id(s) of the author(s) of the document. This field is deprecated, use the string version.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "DEPRECATEDQuarantineWhitelist": { + "type": "boolean" + }, + "DocLevelSpamScore": { + "description": "The document spam score is represented as a 7-bits, going from 0 to 127.", + "format": "int32", + "type": "integer" + }, + "Event": { + "description": "Free form debug info. NB2: consider carefully what to save here. It's easy to eat lots of gfs space with debug info that nobody needs...", + "items": { + "$ref": "PerDocDebugEvent" + }, + "type": "array" + }, + "GibberishScore": { + "description": "The gibberish score is represented in 7 bits, going from 0 to 127.", + "format": "int32", + "type": "integer" + }, + "GroupsData": { + "$ref": "GroupsPerDocData", + "description": "16 bytes of groups2 data: used only in groups2 index" + }, + "IsAnchorBayesSpam": { + "description": "Is this document considered spam by the anchor bayes classifier?", + "type": "boolean" + }, + "KeywordStuffingScore": { + "description": "The keyword stuffing score is represented in 7 bits, going from 0 to 127.", + "format": "int32", + "type": "integer" + }, + "MobileData": { + "$ref": "MobilePerDocData", + "description": "Additional metadata for lowend mobile documents in the Google index." + }, + "OriginalContentScore": { + "description": "The original content score is represented as a 7-bits, going from 0 to 127. Only pages with little content have this field. The actual original content score ranges from 0 to 512. It is encoded with quality_q2::OriginalContentUtil::EncodeOriginalContentScore(). To decode the value, use quality_q2::OriginalContentUtil::DecodeOriginalContentScore().", + "format": "int32", + "type": "integer" + }, + "PremiumData": { + "$ref": "PremiumPerDocData", + "description": "Additional metadata for Premium document in the Google index." + }, + "QuarantineInfo": { + "description": "bitmask of QuarantineBits (or'd together) used to store quarantine related information. For example: QUARANTINE_WHITELIST | QUARANTINE_URLINURL.", + "format": "int32", + "type": "integer" + }, + "ScaledExptIndyRank": { + "description": "DEPRECATED ---------------------------------------------------------------- Please do not use these fields in any new code. experimental", + "format": "int32", + "type": "integer" + }, + "ScaledExptIndyRank2": { + "description": "experimental", + "format": "int32", + "type": "integer" + }, + "ScaledExptIndyRank3": { + "description": "experimental", + "format": "int32", + "type": "integer" + }, + "ScaledExptSpamScoreEric": { + "format": "int32", + "type": "integer" + }, + "ScaledExptSpamScoreYoram": { + "format": "int32", + "type": "integer" + }, + "ScaledIndyRank": { + "description": "The independence rank is represented as a 16-bit integer, which is multiplied by (max_indy_rank / 65536) to produce actual independence rank values. max_indy_rank is typically 0.84.", + "format": "int32", + "type": "integer" + }, + "ScaledLinkAgeSpamScore": { + "description": "End DEPRECATED ------------------------------------------------------------ Link age score is represented as a 7-bit integer, going from 0 to 127.", + "format": "int32", + "type": "integer" + }, + "ScaledSpamScoreEric": { + "format": "int32", + "type": "integer" + }, + "ScaledSpamScoreYoram": { + "description": "Spamscores are represented as a 7-bit integer, going from 0 to 127.", + "format": "int32", + "type": "integer" + }, + "ScienceData": { + "$ref": "SciencePerDocData", + "description": "science data - used only in scholar index" + }, + "SpamWordScore": { + "description": "The spamword score is represented in 7-bits, going from 0 to 127.", + "format": "int32", + "type": "integer" + }, + "TagPageScore": { + "description": "Tag-site-ness of a page, repesented in 7-bits range from 0 to 100. Smaller value means worse tag page.", + "format": "int32", + "type": "integer" + }, + "ToolBarData": { + "$ref": "ToolBarPerDocData" + }, + "WhirlpoolDiscount": { + "format": "float", + "type": "number" + }, + "appsLink": { + "$ref": "QualityCalypsoAppsLink", + "description": "AppsLink contains Android application IDs in outlinks. It is used to improve results ranking within applications universal. See http://go/apps-universal for the project details." + }, + "asteroidBeltIntents": { + "$ref": "QualityOrbitAsteroidBeltDocumentIntentScores", + "description": "For indexing Asteroid Belt intent scores. See go/asteroid-belt for details." + }, + "authorObfuscatedGaiaStr": { + "items": { + "type": "string" + }, + "type": "array" + }, + "biasingdata": { + "$ref": "BiasingPerDocData" + }, + "biasingdata2": { + "$ref": "BiasingPerDocData2", + "description": "A replacement for BiasingPerDocData that is more space efficient. Once this is live everywhere, biasingdata will be deprecated." + }, + "bodyWordsToTokensRatioBegin": { + "description": "The body words over tokens ratios for the beginning part and whole doc. NB: To save space, field body_words_to_tokens_ratio_total is not set if it has the same value as body_words_to_tokens_ratio_begin (e.g., short docs).", + "format": "float", + "type": "number" + }, + "bodyWordsToTokensRatioTotal": { + "format": "float", + "type": "number" + }, + "brainloc": { + "$ref": "QualityGeoBrainlocBrainlocAttachment", + "description": "Brainloc contains location information for the document. See ariane/273189 for details." + }, + "commercialScore": { + "description": "A measure of commerciality of the document Score \u003e 0 indicates document is commercial (i.e. sells something) Computed by repository/pageclassifiers/parsehandler-commercial.cc", + "format": "float", + "type": "number" + }, + "compressedQualitySignals": { + "$ref": "CompressedQualitySignals" + }, + "compressedUrl": { + "description": "Compressed URL string used for SETI.", + "format": "byte", + "type": "string" + }, + "contentAttributions": { + "$ref": "ContentAttributions" + }, + "countryInfo": { + "$ref": "CountryCountryAttachment", + "description": "This field stores the country information for the document in the form of CountryAttachment." + }, + "crawlPagerank": { + "description": "This field is used internally by the docjoiner to forward the crawl pageranks from original canonicals to canonicals we actually chose; outside sources should not set it, and it should not be present in actual docjoins or the index.", + "format": "int32", + "type": "integer" + }, + "crawlerIdProto": { + "$ref": "LogsProtoIndexingCrawlerIdCrawlerIdProto", + "description": "For crawler-ID variations, the crawling context applied to the document. See go/url, and the description in google3/indexing/crawler_id" + }, + "crowdingdata": { + "$ref": "CrowdingPerDocData" + }, + "datesInfo": { + "description": "Stores dates-related info (e.g. page is old based on its date annotations). Used in FreshnessTwiddler. Use encode/decode functions from quality/timebased/utils/dates-info-helper-inl.h", + "format": "int64", + "type": "string" + }, + "desktopInterstitials": { + "$ref": "IndexingMobileInterstitialsProtoDesktopInterstitials", + "description": "Contains desktop interstitials signal for VOLT ranking change." + }, + "domainAge": { + "description": "16-bit", + "format": "int32", + "type": "integer" + }, + "eventsDate": { + "description": "Date for Events. A web page might list multiple events with different dates. We only take one date (start date) per event.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "extraData": { + "$ref": "Proto2BridgeMessageSet", + "description": "This field is available only in the docjoins: it is cleared before building per-doc data in both Mustang and Teragoogle. (MessageSet is inefficient in space for serving data) Use this for all new fields that aren't needed during serving. Currently this field contains: * UrlSignals for the document level spam classifier (when the doclevelspamscore is set). * PerDocLangidData and realtimespam::ClassifierResult for the document level fresh spam classifier (when the doc-level fresh spam score is generated). * MicroblogDocQualitySignals for document-level microblog spam classifier. This only exists in Firebird for now. * spam_buckets::BucketsData for a document-structure hash" + }, + "fireflySiteSignal": { + "$ref": "QualityCopiaFireflySiteSignal", + "description": "Contains Site signal information for Firefly ranking change. See http://ariane/313938 for more details." + }, + "freshboxArticleScores": { + "description": "Stores scores of freshness-related classifiers: freshbox article score, live blog score and host-level article score. The encoding/decoding API is in quality/freshness/freshbox/goldmine/freshbox_annotation_encoder.h. To use this field, you MUST join g/pq-classifiers-announce and add your use case at http://shortn/_RYXS2lX2IV.", + "format": "uint32", + "type": "integer" + }, + "freshnessEncodedSignals": { + "description": "Stores freshness and aging related data, such as time-related quality metrics predicted from url-pattern level signals. Use the encoding decoding API in quality/freshness/docclassifier/aging/encoded-pattern-signals.h", + "format": "int64", + "type": "string" + }, + "fringeQueryPrior": { + "$ref": "QualityFringeFringeQueryPriorPerDocData", + "description": "Contains encoded FringeQueryPrior information. Unlikely to be meaningful for anyone other than fringe-ranking team. Contact fringe-ranking team if any questions, but do NOT use directly without consulting them." + }, + "geodata": { + "description": "geo data; approx 24 bytes for 23M U.S. pages", + "type": "string" + }, + "homePageInfo": { + "format": "int32", + "type": "integer" + }, + "homepagePagerankNs": { + "description": "The page-rank of the homepage of the site. Copied from the cdoc.doc().pagerank_ns() of the homepage.", + "format": "int32", + "type": "integer" + }, + "hostAge": { + "description": "The earliest firstseen date of all pages in this host/domain. These data are used in twiddler to sandbox fresh spam in serving time. It is 16 bit and the time is day number after 2005-12-31, and all the previous time are set to 0. If this url's host_age == domain_age, then omit domain_age Please use //spam/content/siteage-util.h to convert the day between epoch second. Regarding usage of Sentinel values: We would like to check if a value exists in scoring bundle while using in Ranklab AST. For this having a sentinel value will help us know if the field exists or has a sentinel value (in the case it does not exist). 16-bit", + "format": "int32", + "type": "integer" + }, + "hostNsr": { + "description": "Site rank computed for host-level sitechunks. This value encodes nsr, site_pr and new_nsr. See NsrUtil::ConvertNsrDataToHostNsr and go/nsr.", + "format": "uint32", + "type": "integer" + }, + "imagedata": { + "$ref": "ImagePerDocData" + }, + "inNewsstand": { + "description": "This field indicates whether the document is in the newsstand corpus.", + "type": "boolean" + }, + "isHotdoc": { + "description": "Set by the FreshDocs instant doc joiner. See //indexing/instant/hotdocs/README and http://go/freshdocs-hotdocs.", + "type": "boolean" + }, + "kaltixdata": { + "$ref": "KaltixPerDocData" + }, + "knexAnnotation": { + "$ref": "SocialPersonalizationKnexAnnotation", + "description": "For indexing k'nex annotations for FreshDocs." + }, + "languages": { + "description": "Plausible languages in order of decreasing plausibility. Language values are small, IE \u003c 127 so this should compress to one byte each.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "lastSignificantUpdate": { + "description": "Last significant update of the document. This is sourced from the quality_timebased.LastSignificantUpdate proto as computed by the LSUSelector from various signals. The value is a UNIX timestamp in seconds.", + "format": "int64", + "type": "string" + }, + "lastSignificantUpdateInfo": { + "description": "Metadata about last significant update. Currently this only encodes the quality_timebased.LastSignificantUpdate.source field which contains the info on the source of the signal. NOTE: Please do not read the value directly. Use helpers from quality/timebased/lastsignificantupdate/lsu-helper.h instead.", + "format": "int64", + "type": "string" + }, + "launchAppInfo": { + "$ref": "QualityRichsnippetsAppsProtosLaunchAppInfoPerDocData", + "description": "Info on how to launch a mobile app to consume this document's content, if applicable (see go/calypso)." + }, + "liveResultsData": { + "$ref": "WeboftrustLiveResultsDocAttachments" + }, + "localizedCluster": { + "$ref": "IndexingDupsLocalizedLocalizedCluster", + "description": "Information on localized clusters, which is the relationship of translated and/or localized pages." + }, + "noimageframeoverlayreason": { + "description": "If not 0, we should not show the image in overlay mode in image snippets", + "format": "int32", + "type": "integer" + }, + "nsrDataProto": { + "$ref": "QualityNsrNsrData", + "description": "Stripped site-level signals, not present in the explicit nsr_* fields, nor compressed_quality_signals." + }, + "nsrIsCovidLocalAuthority": { + "description": "This field is propagated to shards. In addition, it is populated at serving time by go/web-signal-joins.", + "type": "boolean" + }, + "nsrIsElectionAuthority": { + "description": "This field is propagated to shards. It will also be populated at serving time by go/web-signal-joins (see b/168114815).", + "type": "boolean" + }, + "nsrIsVideoFocusedSite": { + "description": "This field is propagated to shards. It will also be populated at serving time by go/web-signal-joins (see b/170607253). Bit indicating whether this site is video-focused, but not hosted on any major known video hosting domains.", + "type": "boolean" + }, + "nsrSitechunk": { + "description": "SiteChunk computed for nsr. It some cases it can use more information than just url (e.g. youtube channels). See NsrAnnotator for details. If sitechunk is longer than --populate_nsr_sitechunk_max_length (default=100), it will not get populated. This field might be compressed and needs to be decoded with NsrUtil::DecodeNsrSitechunk. See go/nsr-chunks for more details. This field contains only nontrivial primary chunks.", + "type": "string" + }, + "numUrls": { + "description": "Total number of urls encoded in the url section = # of alternate urls + 1", + "format": "int32", + "type": "integer" + }, + "oceandata": { + "$ref": "OceanPerDocData", + "description": "28 bytes per page, only in the Ocean index" + }, + "onsiteProminence": { + "description": "Onsite prominence measures the importance of the document within its site. It is computed by propagating simulated traffic from the homepage and high craps click pages. It is a 13-bit int.", + "format": "uint32", + "type": "integer" + }, + "origin": { + "format": "int32", + "type": "integer" + }, + "originalTitleHardTokenCount": { + "description": "The number of hard tokens in the title.", + "format": "int32", + "type": "integer" + }, + "pageTags": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "pagerank": { + "description": "Experimental pageranks (DEPRECATED; only pagerank in MustangBasicInfo is used).", + "format": "float", + "type": "number" + }, + "pagerank0": { + "format": "float", + "type": "number" + }, + "pagerank1": { + "format": "float", + "type": "number" + }, + "pagerank2": { + "format": "float", + "type": "number" + }, + "pageregions": { + "description": "String that encodes the position ranges for different regions of the document. See \"indexer/pageregion.h\" for an explanation, and how to decode the string", + "type": "string" + }, + "phildata": { + "$ref": "PhilPerDocData" + }, + "productSitesInfo": { + "$ref": "QualityProductProductSiteData", + "description": "This field stores information about product sites." + }, + "queriesForWhichOfficial": { + "$ref": "OfficialPagesQuerySet", + "description": "The set of (query, country, language) triples for which this document is considered to be the official page. For example, www.britneyspears.com would be official for (\"britney spears\", \"us\", 0) and others (0 is English)." + }, + "rosettaLanguages": { + "description": "Top two document language BCP-47 codes as generated by the RosettaLanguageAnnotator in the decreasing order of probability.", + "items": { + "type": "string" + }, + "type": "array" + }, + "rsApplication": { + "$ref": "RepositoryAnnotationsRdfaRdfaRichSnippetsApplication", + "description": "Application information associated to the document." + }, + "saftLanguageInt": { + "description": "Top document language as generated by SAFT LangID. For now we store bare minimum: just the top 1 language value, converted to the language enum, and only when different from the first value in 'languages'.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "scaledSelectionTierRank": { + "description": "Selection tier rank is a language normalized score ranging from 0-32767 over the serving tier (Base, Zeppelins, Landfills) for this document. This is converted back to fractional position within the index tier by scaled_selection_tier_rank/32767.", + "format": "int32", + "type": "integer" + }, + "scienceDoctype": { + "description": "Scholar/Science Document type: \u003c0 == not a Science Document -- default 0 == Science doc fully visible \u003e0 == Science doc but limited visibility, the number is the visible terms", + "format": "int32", + "type": "integer" + }, + "scienceHoldingsIds": { + "description": "Deprecated 2016/01/14.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "semanticDate": { + "description": "SemanticDate, estimated date of the content of a document based on the contents of the document (via parsing), anchors and related documents. Date is encoded as a 32-bits UNIX date (1970 Jan 1 epoch). Confidence is encoded using a SemanticDate specific format. For details of encoding, please refer to quality/freshness/docclassifier/semanticdate/public/semantic_date.proto", + "format": "int32", + "type": "integer" + }, + "semanticDateConfidence": { + "description": "DEPRECATED: semantic_date_confidence replaced by semantic_date_info.", + "format": "int32", + "type": "integer" + }, + "semanticDateInfo": { + "description": "Info is encoded using a SemanticDate specific format. Contains confidence scores for day/month/year components as well as various meta data required by the freshness twiddlers.", + "format": "int32", + "type": "integer" + }, + "servingTimeClusterIds": { + "$ref": "IndexingDocjoinerServingTimeClusterIds", + "description": "A set of cluster ids which are generated in Alexandria and used to de-dup results at serving time." + }, + "shingleInfo": { + "$ref": "ShingleInfoPerDocData" + }, + "smartphoneData": { + "$ref": "SmartphonePerDocData", + "description": "Additional metadata for smartphone documents in the Google index." + }, + "smearingMaxTotalOffdomainAnchors": { + "format": "int32", + "type": "integer" + }, + "socialgraphNodeNameFp": { + "description": "For Social Search we store the fingerprint of the SG node name. This is used in one of the superroot's PRE_DOC twiddlers as a lookup key for the full Social Search data. PRE_DOC = twiddlers firing before the DocInfo request is sent to the mustang backend.", + "format": "uint64", + "type": "string" + }, + "spamCookbookAction": { + "$ref": "SpamCookbookAction", + "description": "Actions based on Cookbook recipes that match the page." + }, + "spamMuppetSignals": { + "$ref": "SpamMuppetjoinsMuppetSignals", + "description": "Contains hacked site signals which will be used in query time joins. As of Oct'19, the field is stored in a separate corpus. It'll only be populated for in-flight requests between retrieve and full-score in perdocdata. So no extra storage is needed on muppet side." + }, + "spamrank": { + "description": "The spamrank measures the likelihood that this document links to known spammers. Its value is between 0 and 65535.", + "format": "int32", + "type": "integer" + }, + "spamtokensContentScore": { + "description": "For SpamTokens content scores. Used in SiteBoostTwiddler to determine whether a page is UGC Spam. See go/spamtokens-dd for details.", + "format": "float", + "type": "number" + }, + "timeSensitivity": { + "description": "Encoded Document Time Sensitivity signal.", + "format": "uint32", + "type": "integer" + }, + "titleHardTokenCountWithoutStopwords": { + "description": "Number of hard tokens originally in title without counting the stopwords.", + "format": "int32", + "type": "integer" + }, + "toolbarPagerank": { + "description": "A copy of the value stored in /namespace/indexing/wwwglobal//fakepr/* for this document. A value of quality_bakery::FakeprUtils::kUnknownToolbarPagerank indicates that we don't have toolbar pagerank for this document. A value between 0 and 10 (inclusive) means that this is the toolbar pagerank of the page. Finally, if this value is not set it means that the toolbar pagerank is equivalent to: quality_bakery::FakeprUtils::EstimatePreDemotionFromPagerankNearestSeeds( basic_info.pagerank_ns()) called on the MustangBasicInfo attachment for the same document.", + "format": "int32", + "type": "integer" + }, + "topPetacatTaxId": { + "description": "Top petacat of the site. Used in SiteboostTwiddler to determine result/query matching.", + "format": "int32", + "type": "integer" + }, + "topPetacatWeight": { + "format": "float", + "type": "number" + }, + "travelGoodSitesInfo": { + "$ref": "QualityTravelGoodSitesData", + "description": "This field stores information about good travel sites." + }, + "trendspamScore": { + "description": "For now, the count of matching trendspam queries.", + "format": "int32", + "type": "integer" + }, + "tundraClusterId": { + "description": "This field is propagated to shards. Stores clustering information on a site level for the Tundra project.", + "format": "int32", + "type": "integer" + }, + "uacSpamScore": { + "description": "The uac spam score is represented in 7 bits, going from 0 to 127. Threshold is 64. Score \u003e= 64 is considered as uac spam.", + "format": "int32", + "type": "integer" + }, + "urlAfterRedirectsFp": { + "description": "These two fingerprints are used for de-duping results in a twiddler. They should only be populated by freshdocs, and will only be present for documents that are chosen to be canonicals in a cluster whose previous canonical is also in the index. Additionally, url_after_redirects_fp is only present if it is different from a fingerprint of the URL.", + "format": "uint64", + "type": "string" + }, + "urlPoisoningData": { + "$ref": "UrlPoisoningData", + "description": "Contains url poisoning data for suppressing spam documents." + }, + "v2KnexAnnotation": { + "$ref": "QualitySherlockKnexAnnotation", + "description": "For indexing v2 k'nex, see/go/knex-v2-doc-annotation for details." + }, + "videoCorpusDocid": { + "format": "uint64", + "type": "string" + }, + "videoLanguage": { + "$ref": "QualityVidyaVideoLanguageVideoLanguage", + "description": "Audio-based language classified by Automatic Language Identification (only for watch pages)." + }, + "videodata": { + "$ref": "VideoPerDocData" + }, + "voltData": { + "$ref": "IndexingMobileVoltVoltPerDocData", + "description": "Contains page UX signals for VOLT ranking change. See http://ariane/4025970 for more details." + }, + "watchpageLanguageResult": { + "$ref": "WatchpageLanguageWatchPageLanguageResult", + "description": "Language classified by the WatchPageLanguage Model (go/watchpage-language). Only present for watch pages." + }, + "webmirrorEcnFp": { + "format": "uint64", + "type": "string" + }, + "webrefEntities": { + "$ref": "RepositoryWebrefWebrefMustangAttachment", + "description": "WebRef entities associated to the document. See go/webref for details." + }, + "ymylHealthScore": { + "description": "Stores scores of ymyl health classifier as defined at go/ymyl-classifier-dd. To use this field, you MUST join g/pq-classifiers-announce and add your use case at http://shortn/_nfg9oAldou.", + "format": "uint32", + "type": "integer" + }, + "ymylNewsScore": { + "description": "Stores scores of ymyl news classifier as defined at go/ymyl-classifier-dd. To use this field, you MUST join g/pq-classifiers-announce and add your use case at http://shortn/_nfg9oAldou.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "PerDocDebugEvent": { + "description": "Free form debug information from various components.", + "id": "PerDocDebugEvent", + "properties": { + "Message": { + "description": "depends on the source", + "type": "string" + }, + "Source": { + "description": "source tag, helps interpret value/message", + "type": "string" + }, + "Timestamp": { + "description": "seconds since the epoch", + "format": "int32", + "type": "integer" + }, + "Value": { + "description": "depends on the source", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "PersonalizationMapsAliasAliasId": { + "description": "A unique association of an AliasType and a number to identify this alias.", + "id": "PersonalizationMapsAliasAliasId", + "properties": { + "subId": { + "description": "A unique identifier for this alias, this identifier is unique to the type of this Alias. This means that aliases of different types can have the same sub_id, hence always use the full AliasId message to refer to an alias, not this field only. Because HOME and WORK aliases are unique, aliases of type HOME or WORK always have sub_id 0.", + "format": "uint64", + "type": "string" + }, + "type": { + "enum": [ + "UNKNOWN_ALIAS_TYPE", + "HOME", + "WORK", + "CONTACT", + "NICKNAME" + ], + "enumDescriptions": [ + "", + "", + "", + "CONTACT is only for internal use by Maps Personalization Server. SetAlias and DeleteAlias RPCs will not accept this type.", + "Alias is an user-entered string stored in nickname field." + ], + "type": "string" + } + }, + "type": "object" + }, + "PersonalizationMapsAliasIcon": { + "description": "A subset of an Alias that is stored on kansas max. It is used in Search for alias resolution and in Maps to show icons quickly on basetiles.", + "id": "PersonalizationMapsAliasIcon", + "properties": { + "aliasId": { + "$ref": "PersonalizationMapsAliasAliasId", + "description": "The id of the alias associated with this point. This is used to query for details for the info window and to display different icons depending on the AliasType contained in this message." + }, + "droppedPinS2cellId": { + "description": "If this is a dropped pin alias, the leaf (level 30) S2 cell ID corresponding to the aliased lat/lng. Calculated once and stored here so that it can safely be used as an identifier across clients without risk of rounding differences leading to different values.", + "format": "uint64", + "type": "string" + }, + "featureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The featureid that was associated with the alias when it was saved. If this is not set the lat/lng in 'point' is the aliased entity, i.e. this is a dropped pin alias." + }, + "featureName": { + "description": "For non-address feature aliases (e.g. businesses), the name of the feature (formatted from the FeatureProto) when it was saved.", + "type": "string" + }, + "featureType": { + "description": "The type of the feature associated with the alias.", + "enum": [ + "TYPE_ANY", + "TYPE_TRANSPORTATION", + "TYPE_ROUTE", + "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE", + "TYPE_HIGHWAY", + "TYPE_HIGHWAY_1", + "TYPE_HIGHWAY_2", + "TYPE_HIGHWAY_3", + "TYPE_HIGHWAY_4", + "TYPE_HIGHWAY_5", + "TYPE_HIGHWAY_6", + "TYPE_HIGHWAY_7", + "TYPE_HIGHWAY_8", + "TYPE_HIGHWAY_9", + "TYPE_BICYCLE_ROUTE", + "TYPE_TRAIL", + "TYPE_SEGMENT", + "TYPE_ROAD", + "TYPE_RAILWAY", + "TYPE_STANDARD_TRACK", + "TYPE_JR_TRACK", + "TYPE_NARROW_TRACK", + "TYPE_MONORAIL_TRACK", + "TYPE_SUBWAY_TRACK", + "TYPE_LIGHT_RAIL_TRACK", + "TYPE_BROAD_TRACK", + "TYPE_HIGH_SPEED_RAIL", + "TYPE_TROLLEY_TRACK", + "TYPE_FERRY", + "TYPE_FERRY_BOAT", + "TYPE_FERRY_TRAIN", + "TYPE_VIRTUAL_SEGMENT", + "TYPE_INTERSECTION", + "TYPE_TRANSIT", + "TYPE_TRANSIT_STATION", + "TYPE_BUS_STATION", + "TYPE_TRAMWAY_STATION", + "TYPE_TRAIN_STATION", + "TYPE_SUBWAY_STATION", + "TYPE_FERRY_TERMINAL", + "TYPE_AIRPORT", + "TYPE_AIRPORT_CIVIL", + "TYPE_AIRPORT_MILITARY", + "TYPE_AIRPORT_MIXED", + "TYPE_HELIPORT", + "TYPE_SEAPLANE_BASE", + "TYPE_AIRSTRIP", + "TYPE_CABLE_CAR_STATION", + "TYPE_GONDOLA_LIFT_STATION", + "TYPE_FUNICULAR_STATION", + "TYPE_SPECIAL_STATION", + "TYPE_HORSE_CARRIAGE_STATION", + "TYPE_MONORAIL_STATION", + "TYPE_SEAPORT", + "TYPE_TRANSIT_STOP", + "TYPE_TRANSIT_TRIP", + "TYPE_TRANSIT_DEPARTURE", + "TYPE_TRANSIT_LEG", + "TYPE_TRANSIT_LINE", + "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE", + "TYPE_TRANSIT_TRANSFER", + "TYPE_SEGMENT_PATH", + "TYPE_ROAD_SIGN", + "TYPE_INTERSECTION_GROUP", + "TYPE_PATHWAY", + "TYPE_RESTRICTION_GROUP", + "TYPE_TOLL_CLUSTER", + "TYPE_POLITICAL", + "TYPE_COUNTRY", + "TYPE_ADMINISTRATIVE_AREA", + "TYPE_ADMINISTRATIVE_AREA1", + "TYPE_US_STATE", + "TYPE_GB_COUNTRY", + "TYPE_JP_TODOUFUKEN", + "TYPE_ADMINISTRATIVE_AREA2", + "TYPE_GB_FORMER_POSTAL_COUNTY", + "TYPE_GB_TRADITIONAL_COUNTY", + "TYPE_ADMINISTRATIVE_AREA3", + "TYPE_ADMINISTRATIVE_AREA4", + "TYPE_ADMINISTRATIVE_AREA5", + "TYPE_ADMINISTRATIVE_AREA6", + "TYPE_ADMINISTRATIVE_AREA7", + "TYPE_ADMINISTRATIVE_AREA8", + "TYPE_ADMINISTRATIVE_AREA9", + "TYPE_COLLOQUIAL_AREA", + "TYPE_RESERVATION", + "TYPE_LOCALITY", + "TYPE_GB_POST_TOWN", + "TYPE_JP_GUN", + "TYPE_JP_SHIKUCHOUSON", + "TYPE_JP_SUB_SHIKUCHOUSON", + "TYPE_COLLOQUIAL_CITY", + "TYPE_SUBLOCALITY", + "TYPE_US_BOROUGH", + "TYPE_GB_DEPENDENT_LOCALITY", + "TYPE_JP_OOAZA", + "TYPE_JP_KOAZA", + "TYPE_JP_GAIKU", + "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY", + "TYPE_JP_CHIBAN", + "TYPE_JP_EDABAN", + "TYPE_SUBLOCALITY1", + "TYPE_SUBLOCALITY2", + "TYPE_SUBLOCALITY3", + "TYPE_SUBLOCALITY4", + "TYPE_SUBLOCALITY5", + "TYPE_NEIGHBORHOOD", + "TYPE_CONSTITUENCY", + "TYPE_DESIGNATED_MARKET_AREA", + "TYPE_SCHOOL_DISTRICT", + "TYPE_LAND_PARCEL", + "TYPE_DISPUTED_AREA", + "TYPE_POLICE_JURISDICTION", + "TYPE_STATISTICAL_AREA", + "TYPE_CONSTITUENCY_FUTURE", + "TYPE_PARK", + "TYPE_GOLF_COURSE", + "TYPE_LOCAL_PARK", + "TYPE_NATIONAL_PARK", + "TYPE_US_NATIONAL_PARK", + "TYPE_US_NATIONAL_MONUMENT", + "TYPE_NATIONAL_FOREST", + "TYPE_PROVINCIAL_PARK", + "TYPE_PROVINCIAL_FOREST", + "TYPE_CAMPGROUNDS", + "TYPE_HIKING_AREA", + "TYPE_BUSINESS", + "TYPE_GOVERNMENT", + "TYPE_BORDER_CROSSING", + "TYPE_CITY_HALL", + "TYPE_COURTHOUSE", + "TYPE_EMBASSY", + "TYPE_LIBRARY", + "TYPE_SCHOOL", + "TYPE_UNIVERSITY", + "TYPE_EMERGENCY", + "TYPE_HOSPITAL", + "TYPE_PHARMACY", + "TYPE_POLICE", + "TYPE_FIRE", + "TYPE_DOCTOR", + "TYPE_DENTIST", + "TYPE_VETERINARIAN", + "TYPE_TRAVEL_SERVICE", + "TYPE_LODGING", + "TYPE_RESTAURANT", + "TYPE_GAS_STATION", + "TYPE_PARKING", + "TYPE_POST_OFFICE", + "TYPE_REST_AREA", + "TYPE_CASH_MACHINE", + "TYPE_CAR_RENTAL", + "TYPE_CAR_REPAIR", + "TYPE_SHOPPING", + "TYPE_GROCERY", + "TYPE_TOURIST_DESTINATION", + "TYPE_ECO_TOURIST_DESTINATION", + "TYPE_BIRD_WATCHING", + "TYPE_FISHING", + "TYPE_HUNTING", + "TYPE_NATURE_RESERVE", + "TYPE_TEMPLE", + "TYPE_CHURCH", + "TYPE_GURUDWARA", + "TYPE_HINDU_TEMPLE", + "TYPE_MOSQUE", + "TYPE_SYNAGOGUE", + "TYPE_STADIUM", + "TYPE_BAR", + "TYPE_MOVIE_RENTAL", + "TYPE_COFFEE", + "TYPE_GOLF", + "TYPE_BANK", + "TYPE_DOODLE", + "TYPE_GROUNDS", + "TYPE_AIRPORT_GROUNDS", + "TYPE_BUILDING_GROUNDS", + "TYPE_CEMETERY", + "TYPE_HOSPITAL_GROUNDS", + "TYPE_INDUSTRIAL", + "TYPE_MILITARY", + "TYPE_SHOPPING_CENTER", + "TYPE_SPORTS_COMPLEX", + "TYPE_UNIVERSITY_GROUNDS", + "TYPE_DEPRECATED_TARMAC", + "TYPE_ENCLOSED_TRAFFIC_AREA", + "TYPE_PARKING_LOT", + "TYPE_PARKING_GARAGE", + "TYPE_OFF_ROAD_AREA", + "TYPE_BORDER", + "TYPE_BUILDING", + "TYPE_GEOCODED_ADDRESS", + "TYPE_NATURAL_FEATURE", + "TYPE_TERRAIN", + "TYPE_SAND", + "TYPE_BEACH", + "TYPE_DUNE", + "TYPE_ROCKY", + "TYPE_ICE", + "TYPE_GLACIER", + "TYPE_BUILT_UP_AREA", + "TYPE_VEGETATION", + "TYPE_SHRUBBERY", + "TYPE_WOODS", + "TYPE_AGRICULTURAL", + "TYPE_GRASSLAND", + "TYPE_TUNDRA", + "TYPE_DESERT", + "TYPE_SALT_FLAT", + "TYPE_WATER", + "TYPE_OCEAN", + "TYPE_BAY", + "TYPE_BIGHT", + "TYPE_LAGOON", + "TYPE_SEA", + "TYPE_STRAIT", + "TYPE_INLET", + "TYPE_FJORD", + "TYPE_LAKE", + "TYPE_SEASONAL_LAKE", + "TYPE_RESERVOIR", + "TYPE_POND", + "TYPE_RIVER", + "TYPE_RAPIDS", + "TYPE_DISTRIBUTARY", + "TYPE_CONFLUENCE", + "TYPE_WATERFALL", + "TYPE_SPRING", + "TYPE_GEYSER", + "TYPE_HOT_SPRING", + "TYPE_SEASONAL_RIVER", + "TYPE_WADI", + "TYPE_ESTUARY", + "TYPE_WETLAND", + "TYPE_WATER_NAVIGATION", + "TYPE_FORD", + "TYPE_CANAL", + "TYPE_HARBOR", + "TYPE_CHANNEL", + "TYPE_REEF", + "TYPE_REEF_FLAT", + "TYPE_REEF_GROWTH", + "TYPE_REEF_EXTENT", + "TYPE_REEF_ROCK_SUBMERGED", + "TYPE_IRRIGATION", + "TYPE_DAM", + "TYPE_DRINKING_WATER", + "TYPE_CURRENT", + "TYPE_WATERING_HOLE", + "TYPE_TECTONIC", + "TYPE_WATERING_HOLE_DEPRECATED", + "TYPE_VOLCANO", + "TYPE_LAVA_FIELD", + "TYPE_FISSURE", + "TYPE_FAULT", + "TYPE_LAND_MASS", + "TYPE_CONTINENT", + "TYPE_ISLAND", + "TYPE_ATOLL", + "TYPE_OCEAN_ROCK_EXPOSED", + "TYPE_CAY", + "TYPE_PENINSULA", + "TYPE_ISTHMUS", + "TYPE_ELEVATED", + "TYPE_PEAK", + "TYPE_NUNATAK", + "TYPE_SPUR", + "TYPE_PASS", + "TYPE_PLATEAU", + "TYPE_RIDGE", + "TYPE_RAVINE", + "TYPE_CRATER", + "TYPE_KARST", + "TYPE_CLIFF", + "TYPE_VISTA", + "TYPE_DIGITAL_ELEVATION_MODEL", + "TYPE_UPLAND", + "TYPE_TERRACE", + "TYPE_SLOPE", + "TYPE_CONTOUR_LINE", + "TYPE_PAN", + "TYPE_UNSTABLE_HILLSIDE", + "TYPE_MOUNTAIN_RANGE", + "TYPE_UNDERSEA", + "TYPE_SUBMARINE_SEAMOUNT", + "TYPE_SUBMARINE_RIDGE", + "TYPE_SUBMARINE_GAP", + "TYPE_SUBMARINE_PLATEAU", + "TYPE_SUBMARINE_DEEP", + "TYPE_SUBMARINE_VALLEY", + "TYPE_SUBMARINE_BASIN", + "TYPE_SUBMARINE_SLOPE", + "TYPE_SUBMARINE_CLIFF", + "TYPE_SUBMARINE_PLAIN", + "TYPE_SUBMARINE_FRACTURE_ZONE", + "TYPE_CAVE", + "TYPE_ROCK", + "TYPE_ARCHIPELAGO", + "TYPE_POSTAL", + "TYPE_POSTAL_CODE", + "TYPE_POSTAL_CODE_PREFIX", + "TYPE_PREMISE", + "TYPE_SUB_PREMISE", + "TYPE_SUITE", + "TYPE_POST_TOWN", + "TYPE_POSTAL_ROUND", + "TYPE_META_FEATURE", + "TYPE_DATA_SOURCE", + "TYPE_LOCALE", + "TYPE_TIMEZONE", + "TYPE_BUSINESS_CHAIN", + "TYPE_PHONE_NUMBER_PREFIX", + "TYPE_PHONE_NUMBER_AREA_CODE", + "TYPE_BUSINESS_CORRIDOR", + "TYPE_ADDRESS_TEMPLATE", + "TYPE_TRANSIT_AGENCY", + "TYPE_FUTURE_GEOMETRY", + "TYPE_EVENT", + "TYPE_EARTHQUAKE", + "TYPE_HURRICANE", + "TYPE_WEATHER_CONDITION", + "TYPE_TRANSIENT", + "TYPE_ENTRANCE", + "TYPE_CARTOGRAPHIC", + "TYPE_HIGH_TENSION", + "TYPE_SKI_TRAIL", + "TYPE_SKI_LIFT", + "TYPE_SKI_BOUNDARY", + "TYPE_WATERSHED_BOUNDARY", + "TYPE_TARMAC", + "TYPE_WALL", + "TYPE_PICNIC_AREA", + "TYPE_PLAY_GROUND", + "TYPE_TRAIL_HEAD", + "TYPE_GOLF_TEEING_GROUND", + "TYPE_GOLF_PUTTING_GREEN", + "TYPE_GOLF_ROUGH", + "TYPE_GOLF_SAND_BUNKER", + "TYPE_GOLF_FAIRWAY", + "TYPE_GOLF_HOLE", + "TYPE_DEPRECATED_GOLF_SHOP", + "TYPE_CAMPING_SITE", + "TYPE_DESIGNATED_BARBECUE_PIT", + "TYPE_DESIGNATED_COOKING_AREA", + "TYPE_CAMPFIRE_PIT", + "TYPE_WATER_FOUNTAIN", + "TYPE_LITTER_RECEPTACLE", + "TYPE_LOCKER_AREA", + "TYPE_ANIMAL_ENCLOSURE", + "TYPE_CARTOGRAPHIC_LINE", + "TYPE_ESTABLISHMENT", + "TYPE_ESTABLISHMENT_GROUNDS", + "TYPE_ESTABLISHMENT_BUILDING", + "TYPE_ESTABLISHMENT_POI", + "TYPE_ESTABLISHMENT_SERVICE", + "TYPE_CELESTIAL", + "TYPE_ROAD_MONITOR", + "TYPE_PUBLIC_SPACES_AND_MONUMENTS", + "TYPE_STATUE", + "TYPE_TOWN_SQUARE", + "TYPE_LEVEL", + "TYPE_COMPOUND", + "TYPE_COMPOUND_GROUNDS", + "TYPE_COMPOUND_BUILDING", + "TYPE_COMPOUND_SECTION", + "TYPE_TERMINAL_POINT", + "TYPE_REGULATED_AREA", + "TYPE_LOGICAL_BORDER", + "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES", + "TYPE_UNKNOWN" + ], + "enumDescriptions": [ + "ABSTRACT", + "ABSTRACT", + "A route is any section of road (or rails, etc.) that has a name. This includes city streets as well as highways. Road segments can belong to multiple routes (e.g. El Camino, CA-82).", + "DEPRECATED", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "A designated bicycle route, whose segments may consist of any combination of bicycle paths, bicycle lanes, or city streets.", + "A designated trail, which may consist of paved walkways, dirt paths, fire road, streets or highways, etc.", + "ABSTRACT", + "", + "Railroads use several different incompatible track types.", + "", + "", + "", + "", + "", + "", + "", + "", + "Tracks for streetcars, cable-cars, etc. Ferries are services that are part of the road network but are not roads. They typically involve fares and scheduled departure times.", + "ABSTRACT", + "The vast majority of ferries are ferry boats.", + "Also called a \"car transport\", a ferry train is a rail service that carries passengers and their vehicles across undrivable terrain. The Channel Tunnel (\"Chunnel\") is the most famous example, but they are also common in the Alps where they connect neighboring valleys otherwise separated by impassable mountains.", + "Any plausible 1-dimensional path through a 2+ dimensional space, for the purposes of making graph-search-based routing possible. Such segments can be used to model paths through parking lots, squares, floors of buildings and other areas.", + "An intersection consists of a collection of segments that terminate at the same location. This is topological definition: it may not match what a typical user would think of as an \"intersection\". See TYPE_INTERSECTION_GROUP, below, for more information. Each segment terminating at an intersection has an \"endpoint type\" that specifies how that segment is terminated: stop sign, yield sign, three-way light, etc.", + "ABSTRACT", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "A transit line is a collection of transit legs, associated with some invariant properties of the trips that run over the legs. See also transitline.proto", + "TYPE_TRANSIT_AGENCY was moved to 0xC91. This deprecated enum value still exists for debugging purposes only.", + "DEPRECATED", + "ABSTRACT", + "Road sign features have names, point geometry, etc. They also have segment_path data (see below) which lists the segments that refer to the sign. See segment.proto for the reference from the segment to the road sign.", + "Our TYPE_INTERSECTION feature, above, models 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. This TYPE_INTERSECTION_GROUP is used to model the user's concept of a complex intersection.", + "RESERVED", + "A restriction group describes a set of segment restrictions that belong together and have a name or an associated event. See also restriction_group.proto", + "A toll cluster is either a single point on a segment (represented as a point at the end of the segment that has ENDPOINT_TOLL_BOOTH set) or a group of points on various road segments in MapFacts that represents one or more lanes passing through a toll fixture that all go to the same routing destination. Each toll cluster should have at most a single price per payment method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has different prices for multiple routing destinations, drivers need to be in the correct lane before passing through the toll fixture and hence such a fixture is represented by multiple toll clusters. A toll cluster does not necessarily represent a real-world entity, e.g. a particular plaza/structure as perceived by humans. This is because a plaza can be represented by more than one toll cluster. We require toll clusters to have names, but they might be non-unique. For example, a plaza might be represented by multiple toll clusters that may have the same plaza name. For further details, please see go/toll-cluster-schema.", + "ABSTRACT", + "", + "ABSTRACT", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "e.g. Silicon Valley", + "A reservation is a region collectively held or governed by indigenous people and officially recognized by the country’s government at the federal or state level. A reservation may be fully contained within an administrative feature or partially contained within two or more. These regions are referred to by different categorical names depending on country and even by state, including but not limited to: “Indian Reservations”, “Indian Reserves”, “Land Claim Settlement Lands”, “Indian Lands”, “Treaty Lands”, “Indigenous Territories”, etc. A reservation is not a historic indigenous territory boundary or a region which has applied for land rights but has not yet received official recognition.", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "An entity widely considered to be a city, that may itself be made up of smaller political entities, some of which are cities/towns/villages themselves. For example, the colloquial view of Sydney, Australia actually comprises many smaller cities, but is regarded as a city itself. This type is not suitable for modeling official metro-/micropolitan or other statistical areas.", + "ABSTRACT", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "Designated Market Areas (or DMAs) are used by marketing and ratings companies (such as the Nielsen Media Research company) to describe geographical regions (such as the greater New York metropolitan area) that are covered by a set of television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In the United States, DMAs should have a DMA numeric ID name, tagged with the FLAG_DESIGNATED_MARKET_AREA_ID flag.", + "", + "", + "Eventually we'll have more data for disputed areas (e.g., who makes claims on the area, who has de facto control, etc.). For the moment, we just define a type so we can simply mark areas as disputed.", + "Boundaries representing the jurisdiction of a particular police station.", + "An area used for aggregating statistical data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a third nibble so we can add an abstract parent above it later if need be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as TYPE_STATISTICAL_AREA1).", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "A line representing the boundary between two features. See border.proto for details.", + "DEPRECATED", + "An association of a point with an address, with no other information.", + "ABSTRACT", + "Expanses of land that share common surface attributes. These areas would look more or less uniform from a high altitude.", + "", + "", + "", + "", + "", + "", + "Terrain that looks populated.", + "Terrain that is covered in vegetation.", + "", + "", + "", + "", + "", + "", + "A flat expanse of salt left by the evaporation of a body of salt water.", + "Features can be TYPE_WATER if we don't have enough information to properly type the body of water. TYPE_WATER is also used as the type for child features that compose a TYPE_RIVER feature.", + "One of the large salt-water bodies that covers most of the globe.", + "An ocean subdivision formed by a coastal indentation. Includes coves and gulfs.", + "An open body of water formed by a slight coastal indentation.", + "", + "An ocean subdivision more or less confined by land and islands.", + "A long narrow ocean subdivision. Includes sounds.", + "", + "", + "An inland body of standing water.", + "A lake that dries up part of the year.", + "An artificial body of water, possibly created by a dam, often used for irrigation or house use.", + "", + "An inland body of moving water, or parts associated with it in which there is little or no current (backwater).", + "", + "A branch which flows away from the main river. Includes deltas.", + "A place where two or more rivers join.", + "", + "A place where ground water flows naturally out of the ground.", + "", + "", + "A river that dries up part of the year.", + "A dry riverbed that occasionally receives flashfloods.", + "A place at the end of a river where fresh and salt water mix. Includes tidal creeks and limans.", + "Land that is usually flooded. Includes bogs, marshes, flats, moors, and swamps.", + "", + "A shallow place where water may be waded through.", + "A narrow passage used by boats. Normally artificial.", + "A deep place near a shore where ships commonly drop anchor.", + "A deep part in a body of water that is suitable for navigation. Includes narrows.", + "Rocks, coral, sandbars, or other features beneath the surface of the water that pose a hazard to passing ships. Includes shoals.", + "A relatively shallow zone of the back reef located closest to the shore, that may be exposed at low tide.", + "A small section of rocks, coral, sandbars, or other features beneath the surface of the water that forms part of a reef.", + "The full extent of the reef complex.", + "A submerged rock in the water.", + "Man-made (and sometimes natural) channels used to move water. This type was used for both dam structures and water that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for dam structures and TYPE_RESERVOIR for water.", + "DEPRECATED", + "", + "Includes overfalls.", + "A natural depression filled with water where animals come to drink.", + "ABSTRACT This type is incorrectly under TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now fixed. See TYPE_WATERING_HOLE for the replacement.", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "", + "An exposed rock in the water.", + "A small, low-elevation, sandy island formed on the surface of coral reefs", + "A stretch of land projecting into water. Includes capes and spits.", + "A strip of land connecting two larger land masses, such as continents.", + "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.", + "Elevations that have a distinctive peak.", + "A peak or ridge of a mountain that extends through a glacier.", + "A subsidiary peak of a mountain.", + "A route over an otherwise difficult to traverse feature. Includes saddle.", + "Elevations that are flat on top. Includes mesas and buttes.", + "A ridge is a geographical feature consisting of a chain of mountains or hills that form a continuous elevated crest with a single ridgeline for some distance.", + "Steep declines usually carved by erosion. Includes valleys, canyons, ditches, and gorges.", + "Depressions causes by impact, explosion, and sometimes sink-holes.", + "Topography formed on limestone and gypsum by dissolution with sinkholes, caves, etc.", + "A vertical or nearly vertical slope. Includes escarpments.", + "An elevated place that is notable for having a good view. Raster digital elevation data. This is not a type to be used by providers or consumed by clients.", + "RESERVED", + "Land along streams higher than the alluvial plain or stream terrace.", + "", + "Land not so steep as a cliff, but changing elevation. Includes slides.", + "All the points on the polygon are at the same elevation.", + "A near-level shallow, natural depression or basin, usually containing an intermittent lake, pond, or pool.", + "", + "A series of mountains or hills ranged in a line and connected by high ground. Mountain ranges usually consist of many smaller ridges. For example, the Himalayas, the Andes. the Alps, etc.", + "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.", + "includes peaks, ranges, and spurs", + "", + "includes saddles", + "", + "", + "includes trenches and troughs", + "", + "", + "", + "", + "", + "Don't use 0xA7. Use 8 bits for additional types under TYPE_NATURAL_FEATURE, so we don't run out of space. The following are miscellaneous natural features that don't fit any of the categories above.", + "", + "A feature representing a group or chain of islands. ", + "ABSTRACT", + "This is the type for postal codes which are complete and independent enough that there should be a feature for them (e.g. US 5-digit ZIP codes). For even more detailed suffixes that further subdivide a postal code (such as the +4 component in US ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX address component. When a range or set of postal codes share the same geographical area, e.g. because a precise subdivision does not exist or this subdivision is unknown, this type is used for each individual postal code.", + "A prefix portion of a postal code which does not meet the requirements for TYPE_POSTAL_CODE, but which is useful to search for, for example UK outcodes.", + "DEPRECATED", + "DEPRECATED This is deprecated and we want to use TYPE_COMPOUND_SECTION instead.", + "DEPRECATED", + "The term \"post town\" is used for a locality-like-entity that is only used for postal addresses.", + "DEPRECATED", + "ABSTRACT", + "Every data source used in constructing a data repository has a corresponding feature that provides more information about that data source. The extra information is stored in the optional data_source field below.", + "A locale feature provides region specific conventions such as preferred language and formatting details for time, date, and currency values. Locales aren't necessary defined by physical geographic features, so they are classified as meta-features.", + "A timezone feature is used to specify the region covering an international timezone. When a point is covered by multiple timezone features, the most specific one can be used to compute the local time at this point. Most specific implies a much smaller region or the one that is closer to the center. A feature's timezone can be specified in the repeated related_timezone field.", + "A business chain feature is used to represent a chain, e.g. Starbucks, McDonald's, etc. Other features representing specific stores/franchises of this chain may refer to one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly reserved to commercial chains but can also be used to model organizations such as the Red Cross or the United Nations.", + "A phone number prefix feature is used to specify the region where phone numbers (typically fixed-line numbers) must begin with a certain prefix. Any phone number prefix down to any level of granularity could be represented by this type.", + "A phone number area code is a prefix which also coincides with the area code, or national destination code, of a particular region.", + "A Business Corridor is a dense cluster of semantically similar establishments. TYPE_BUSINESS_CORRIDOR features are distinguished from TYPE_COLLOQUIAL_AREA features because the corridors are not under the political hierarchy, are allowed to be nameless, and may not correspond to well-known real world locations. For more details, see go/geo-corridors-schema.", + "An address template feature provides region-specific conventions for structuring addresses. These features aren't necessarily defined by physical geographic features, so they are classified as meta-features.", + "A transit agency operates a number of lines, typically all in the same city, region or country. See also transitagency.proto", + "A feature whose geometry is planned to replace the geometry on another feature.", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "RESERVED", + "A portal of entry or exit to another feature. Examples: - Subway station entrance. - Parking lot entrance.", + "Cartographic features are used to capture real-world objects for which there is no current desire to model any specific attributes. These are only useful to make the map tiles look pretty.", + "DEPRECATED", + "Also see skitrail.proto", + "Also see skilift.proto", + "Also see skiboundary.proto", + "", + "Starting with TYPE_TARMAC, we use longer IDs, so that we can expand the number of feature types under TYPE_CARTOGRAPHIC.", + "Use TYPE_COMPOUND_GROUND and appropriate gcids for the next two.", + "DEPRECATED", + "DEPRECATED", + "", + "Sub-types within a golf course.", + "", + "", + "", + "", + "Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop for golf shops instead.", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "Subtype within a zoo - a cage or fenced-off or otherwise delineated area containing animals.", + "A line for a cartographic detail. For example the international date line. Such features should have polyline geometry.", + "ABSTRACT This type is being replaced by TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2", + "DEPRECATED This type has been replaced by TYPE_COMPOUND_BUILDING. For further details, see go/oyster-compounds", + "DEPRECATED", + "An establishment which has a address (a.k.a. location or storefront). Note that it *may* also have a service area (e.g. a restaurant that offers both dine-in and delivery). This type of business is also known as a \"hybrid\" Service Area Business. Establishment POIs can be referenced by TYPE_COMPOUND features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the reciprocal relation of the RELATION_OCCUPIES.", + "A business without a storefront, e.g. a plumber. It would normally not have a place that a customer could visit to receive service, but it would have an area served by the business. Also known as a \"pure\" Service Area Business. NOTE(tcain): Using value 0xD441, since we could find ourselves with a need to differentiate service areas from online-only at this level in the future, but still benefit from being able to group those under a common parent, disjoint from TYPE_ESTABLISHMENT_POI.", + "The root of types of features that are in the sky, rather than on the earth. There will eventually be a hierarchy of types here.", + "Features responsible for monitoring traffic on roads (usually for speed). Includes cameras at particular points as well as monitors that cover larger spans. Features of this type should have a corresponding gcid that specifies the correct subtype (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was originally named as TYPE_ROAD_CAMERA.", + "ABSTRACT", + "Note that this type does not distinguish the nature of the statue (religious, historical, memorial, tourist, ...).", + "Open space used for events, gathering, or as market-place.", + "A feature used to represent a logical level, e.g. floor.", + "ABSTRACT", + "e.g. campus, compound, parcel.", + "e.g. single family dwelling, office building.", + "e.g. suite, room, hallway, cubicle.", + "A terminal point represents a good location for a user to meet a taxi, ridesharing vehicle, or general driver.", + "An area controlled in some way by an authoritative source, such as a government-designated COVID containment zone. Features of this type should have one or more gcids corresponding to their specific regulation.", + "RESERVED", + "DEPRECATED", + "A feature of completely unknown type. This should only be used when absolutely necessary. One example in which this type is useful is in the Chinese importer, which must heuristically segment addresses into components - it often does not know what types to make those components. Please note that the Oyster address formatter does not currently support address components of TYPE_UNKNOWN well." + ], + "type": "string" + }, + "formattedAddress": { + "description": "One-line geocoded address that this lat/lng represents at the time this alias was created by the user.", + "type": "string" + }, + "nickname": { + "description": "Free-text alias if alias type is NICKNAME. Otherwise unset. Limited to 40 characters.", + "type": "string" + }, + "point": { + "$ref": "GeostorePointProto", + "description": "lat/lng the icon is to be shown at." + }, + "stickerId": { + "description": "The id of the sticker asset chosen by the user to replace the default asset for the alias.", + "format": "uint32", + "type": "integer" + }, + "syntheticFeature": { + "description": "If the feature associated with the alias has synthetic_geometry.", + "type": "boolean" + }, + "timestamp": { + "description": "[INTERNAL ONLY] Last update of bigtable by kansas, in microseconds. Volatile only and not saved in kansas column. inmemory only because \u003e= 16.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "PersonalizationSettingsApiProtoLocalDiscoveryLocalDiscoverySettingsMetadata": { + "description": "Metadata related to LocalDiscoverySettings,e.g., dietary_restriction, cuisine and ingredient.", + "id": "PersonalizationSettingsApiProtoLocalDiscoveryLocalDiscoverySettingsMetadata", + "properties": { + "opaRecipesContext": { + "$ref": "PersonalizationSettingsApiProtoLocalDiscoveryOpaRecipesContext", + "description": "Contexts regarding the preferences from OPA_RECIPES." + }, + "uiEntryPoint": { + "description": "The UI entry point from which the entity preference was set.", + "enum": [ + "UNKNOWN_ENTRY_POINT", + "GEO_DISCOVERY", + "OPA_SETTINGS", + "OPA_RECIPES", + "OPA_RESTAURANTS" + ], + "enumDescriptions": [ + "", + "go/geo-preference-feedback-mvp. cschill@", + "https://screenshot.googleplex.com/gnKDdHrG9p3. glwang@, jdlevine@, encyclomedia@", + "https://screenshot.googleplex.com/X4dRwGipeGt. assistant-recipe-recs@", + "assistant-recipe-recs@" + ], + "type": "string" + } + }, + "type": "object" + }, + "PersonalizationSettingsApiProtoLocalDiscoveryOpaRecipesContext": { + "description": "LINT.IfChange Contexts regarding the preferences from OPA_RECIPES. For example, users can click a recipes and say they don't like one cuisine. OpaRecipesContext will contain the doc_id/url of that recipes.", + "id": "PersonalizationSettingsApiProtoLocalDiscoveryOpaRecipesContext", + "properties": { + "docId": { + "description": "The recipe doc id where the setting comes from.", + "type": "string" + }, + "url": { + "description": "The recipe url where the setting comes from.", + "type": "string" + } + }, + "type": "object" + }, + "PhilPerDocData": { + "id": "PhilPerDocData", + "properties": { + "PhilString": { + "description": "phil data , approx 70 bytes for top 500M", + "type": "string" + }, + "PhilVersion": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "PhotosAnimationMetadata": { + "id": "PhotosAnimationMetadata", + "properties": { + "durationMs": { + "description": "The duration of the animation or movie (not including any looping), in milliseconds. If there is only a single frame (and thus not animated), the duration will be 0.", + "format": "int64", + "type": "string" + }, + "numFrames": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "PhotosDynamicDepthMetadata": { + "description": "Metadata pertaining to nested Dynamic Depth metadata. Currently this message is used to indicate the presence of dynamic depth.", + "id": "PhotosDynamicDepthMetadata", + "properties": {}, + "type": "object" + }, + "PhotosFourCMetadata": { + "id": "PhotosFourCMetadata", + "properties": { + "caption": { + "type": "string" + }, + "copyright": { + "type": "string" + }, + "creator": { + "items": { + "type": "string" + }, + "type": "array" + }, + "credit": { + "type": "string" + } + }, + "type": "object" + }, + "PhotosGDepthMetadata": { + "description": "Metadata in the GDepth XMP block. Note that GDepth::Data is not copied into this message.", + "id": "PhotosGDepthMetadata", + "properties": { + "far": { + "description": "Depth map far plane distance.", + "format": "float", + "type": "number" + }, + "format": { + "description": "Depth map format.", + "type": "string" + }, + "imageHeight": { + "description": "Depth map source image height.", + "format": "int32", + "type": "integer" + }, + "imageWidth": { + "description": "Depth map source image width.", + "format": "int32", + "type": "integer" + }, + "mime": { + "description": "Depth map mime type.", + "type": "string" + }, + "near": { + "description": "Depth map near plane distance.", + "format": "float", + "type": "number" + }, + "units": { + "description": "Depth map units of distance.", + "type": "string" + } + }, + "type": "object" + }, + "PhotosImageMetadata": { + "description": "Next tag value: 381.", + "id": "PhotosImageMetadata", + "properties": { + "DEPRECATEDBlendingtype": { + "type": "string" + }, + "DEPRECATEDGpstimestamp": { + "description": "This field was originally marked incorrectly as optional (rather than repeated). In order to fix it, the first field has been marked as deprecated and replaced with a field with a new name and tag number.", + "format": "float", + "type": "number" + }, + "DEPRECATEDIscolor": { + "format": "int32", + "type": "integer" + }, + "DEPRECATEDLargestvalidinteriorrectheight": { + "format": "int32", + "type": "integer" + }, + "DEPRECATEDLargestvalidinteriorrectleft": { + "format": "int32", + "type": "integer" + }, + "DEPRECATEDLargestvalidinteriorrecttop": { + "format": "int32", + "type": "integer" + }, + "DEPRECATEDLargestvalidinteriorrectwidth": { + "format": "int32", + "type": "integer" + }, + "DEPRECATEDProcess": { + "format": "int32", + "type": "integer" + }, + "actionadvised": { + "type": "string" + }, + "addlmodelinfo": { + "type": "string" + }, + "advisory": { + "items": { + "type": "string" + }, + "type": "array" + }, + "altitude": { + "format": "double", + "type": "number" + }, + "animationMetadata": { + "$ref": "PhotosAnimationMetadata" + }, + "aperturefnumber": { + "format": "float", + "type": "number" + }, + "aperturevalue": { + "format": "float", + "type": "number" + }, + "artworkorobject": { + "items": { + "type": "string" + }, + "type": "array" + }, + "audioduration": { + "type": "string" + }, + "audiooutcue": { + "type": "string" + }, + "audiosamplingrate": { + "type": "string" + }, + "audiosamplingresolution": { + "type": "string" + }, + "audiotype": { + "type": "string" + }, + "author": { + "type": "string" + }, + "authorposition": { + "type": "string" + }, + "autoenhance": { + "description": "Indicates whether auto-enhance has been applied to the image.", + "type": "boolean" + }, + "baseurl": { + "type": "string" + }, + "bitDepth": { + "description": "The number of bits per pixel used to express a color. Most images have 8-bit depth and Photos/thumbnailer currently do not support more than 8 bits (except RAW).", + "format": "int32", + "type": "integer" + }, + "bitspersample": { + "description": "Start of reflected fields. These do not duplicate the above fields.", + "format": "int32", + "type": "integer" + }, + "brightnessvalue": { + "format": "float", + "type": "number" + }, + "burstuuid": { + "type": "string" + }, + "cameraid": { + "type": "string" + }, + "cameramake": { + "description": "Exif camera make", + "type": "string" + }, + "cameramodel": { + "description": "Exif camera model", + "type": "string" + }, + "caption": { + "description": "Caption embedded in IPTC", + "type": "string" + }, + "captionwriter": { + "type": "string" + }, + "capturesoftware": { + "type": "string" + }, + "category": { + "type": "string" + }, + "ccdwidth": { + "format": "float", + "type": "number" + }, + "celllength": { + "format": "int32", + "type": "integer" + }, + "cellwidth": { + "format": "int32", + "type": "integer" + }, + "certificate": { + "type": "string" + }, + "chromasubsampling": { + "description": "A typed representation that translates the values from ycbcrsubsampling.", + "enum": [ + "UNKNOWN_CHROMA_SUBSAMPLING", + "YCBCR410", + "YCBCR411", + "YCBCR420", + "YCBCR422", + "YCBCR444" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "ciadrcity": { + "type": "string" + }, + "ciadrctry": { + "type": "string" + }, + "ciadrextadr": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ciadrpcode": { + "type": "string" + }, + "ciadrregion": { + "type": "string" + }, + "ciemailwork": { + "type": "string" + }, + "citelwork": { + "type": "string" + }, + "city": { + "type": "string" + }, + "ciurlwork": { + "type": "string" + }, + "colormap": { + "format": "int32", + "type": "integer" + }, + "colorprofile": { + "description": "Indicates whether or not the source image had an embedded color profile.", + "type": "boolean" + }, + "colorspace": { + "format": "int32", + "type": "integer" + }, + "compressedbitsperpixel": { + "format": "float", + "type": "number" + }, + "compressionlevel": { + "format": "int32", + "type": "integer" + }, + "contact": { + "type": "string" + }, + "contentlocationcode": { + "items": { + "type": "string" + }, + "type": "array" + }, + "contentlocationname": { + "items": { + "type": "string" + }, + "type": "array" + }, + "contrast": { + "format": "int32", + "type": "integer" + }, + "contributor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "copyrightnotice": { + "type": "string" + }, + "country": { + "type": "string" + }, + "countrycode": { + "type": "string" + }, + "coverage": { + "type": "string" + }, + "createdate": { + "type": "string" + }, + "credits": { + "type": "string" + }, + "croppedareaimageheightpixels": { + "format": "int32", + "type": "integer" + }, + "croppedareaimagewidthpixels": { + "format": "int32", + "type": "integer" + }, + "croppedarealeftpixels": { + "format": "int32", + "type": "integer" + }, + "croppedareatoppixels": { + "format": "int32", + "type": "integer" + }, + "customrendered": { + "format": "int32", + "type": "integer" + }, + "cvterm": { + "items": { + "type": "string" + }, + "type": "array" + }, + "date": { + "type": "string" + }, + "datecreated": { + "type": "string" + }, + "datesent": { + "type": "string" + }, + "datetime": { + "type": "string" + }, + "datetimedigitized": { + "type": "string" + }, + "daylightsavings": { + "description": "0 = no daylight savings, 1 = daylight savings enabled. Note that this field only represents whether the setting in the camera was turned on or off. It must not be used to modify the timestamp of the photo. That is, the capture time is already completely determined by exif_time, timezoneoffset and timezoneminutes.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "destination": { + "items": { + "type": "string" + }, + "type": "array" + }, + "destinationLatitude": { + "description": "+/- 90 inclusive", + "format": "double", + "type": "number" + }, + "destinationLongitude": { + "description": "+/- 180 inclusive", + "format": "double", + "type": "number" + }, + "digimageguid": { + "type": "string" + }, + "digitalsourcefiletype": { + "type": "string" + }, + "digitalsourcetype": { + "type": "string" + }, + "digitalzoomratio": { + "format": "float", + "type": "number" + }, + "distance": { + "format": "float", + "type": "number" + }, + "dynamicDepthMetadata": { + "$ref": "PhotosDynamicDepthMetadata", + "description": "DynamicDepth (go/dynamic-depth) metadata is described in the metadata of sub-images in the container. The presence of this field can be used to determine that an image is in the dynamic depth format." + }, + "editorialupdate": { + "type": "string" + }, + "editstatus": { + "type": "string" + }, + "envelopenumber": { + "type": "string" + }, + "envelopepriority": { + "type": "string" + }, + "event": { + "type": "string" + }, + "exif4c": { + "$ref": "PhotosFourCMetadata", + "description": "4C metadata (caption, copyright, creator, credit) specific to each of the three metadata segments (EXIF, XMP, IPTC). These are used to keep separate the 4C data from each segment so that we can properly preserve the per-segment 4C data on write (when PreserveLevel is set appropriately)." + }, + "exifTime": { + "description": "Timestamp embedded in the image. The value comes from the first valid date-time field extracted from the metadata in the order: 1) datecreated (ie. DateTimeOriginal) 2) datetimedigitized (ie. DateTimeDigitized) 3) datetime (ie. DateTime or last modified date) The type of this field is equivalent to a time_t (ie. number of seconds since the epoch - 00:00 hours, Jan 1, 1970) except that it is an int64 rather than an int.", + "format": "int64", + "type": "string" + }, + "exifTimeUtc": { + "description": "The exif_time_utc field is a UTC-based alternative to the exif_time field, which is in local time, rather than UTC. If they were not separate, clients would be unable to distinguish if the source were UTC- or local-based.", + "format": "int64", + "type": "string" + }, + "exifTimeUtcSource": { + "description": "The exif_time_utc_source indicates the source from which the exif_time_utc field is calculated.", + "enum": [ + "EXIF_TIME_SOURCE_UNKNOWN", + "GPS_DATE_TIME_STAMP" + ], + "enumDescriptions": [ + "", + "The value is calculated from the GPSTimeStamp and GPSDateStamp fields." + ], + "type": "string" + }, + "expirationdate": { + "type": "string" + }, + "expirationtime": { + "type": "string" + }, + "exposurebias": { + "format": "float", + "type": "number" + }, + "exposureindex": { + "format": "float", + "type": "number" + }, + "exposurelockused": { + "type": "boolean" + }, + "exposuremode": { + "format": "int32", + "type": "integer" + }, + "exposureprogram": { + "format": "int32", + "type": "integer" + }, + "exposuretime": { + "format": "float", + "type": "number" + }, + "extrasamples": { + "format": "int32", + "type": "integer" + }, + "fillorder": { + "format": "int32", + "type": "integer" + }, + "firmware": { + "type": "string" + }, + "firstphotodate": { + "type": "string" + }, + "fixtureidentifier": { + "type": "string" + }, + "flashcompensation": { + "format": "float", + "type": "number" + }, + "flashenergy": { + "format": "float", + "type": "number" + }, + "flashreturn": { + "format": "int32", + "type": "integer" + }, + "flashused": { + "format": "int32", + "type": "integer" + }, + "focallength": { + "format": "float", + "type": "number" + }, + "focallengthin35mmfilm": { + "format": "int32", + "type": "integer" + }, + "focalplaneunits": { + "format": "float", + "type": "number" + }, + "focalplanexres": { + "format": "float", + "type": "number" + }, + "format": { + "type": "string" + }, + "freebytecounts": { + "format": "int64", + "type": "string" + }, + "freeoffsets": { + "format": "int32", + "type": "integer" + }, + "fullpanoheightpixels": { + "format": "int32", + "type": "integer" + }, + "fullpanowidthpixels": { + "format": "int32", + "type": "integer" + }, + "function": { + "type": "boolean" + }, + "gaincontrol": { + "format": "int32", + "type": "integer" + }, + "gaudiomime": { + "type": "string" + }, + "gcameraburstid": { + "description": "A unique String. The property should be present and identical for all images that make up a burst. It should be unique across devices (UUID recommended). Unlike GCreations:CameraBurstId, we should use images with this property to create auto collages and animations.", + "type": "string" + }, + "gcameraburstprimary": { + "description": "A value of 1 indicates that this was the primary (“best shot”) at capture time. Within Photos we should only treat this image as the best shot if the user hasn’t made an explicit choice. Defining the initial primary allows consistency between OEMs, Photos clients, and the Photos backend. This value is optional, cameras are not required to set it on any photo in a burst. Clients will default to the 0th frame, but may run an algorithm to pick a better default.", + "format": "int32", + "type": "integer" + }, + "gcameradisableautocreation": { + "description": "The possible values are: “Animation”, “Collage”, “Pano”, “Movies”. Photos will avoid creating the listed types using the containing image or video. The property is optional. The property can be included multiple times to disable creation of multiple different types.", + "items": { + "type": "string" + }, + "type": "array" + }, + "gcameramicrovideo": { + "description": "The following XMP metadata are used specifically for MicroVideo. More information about MicroVideo format can be found at go/photos-microvideo-format A value of 1 indicates that this file was a MicroVideo at capture time. Otherwise, this is not a MicroVideo (not set or 0).", + "format": "int32", + "type": "integer" + }, + "gcameramicrovideooffset": { + "description": "The offset in bytes from the end of the file to the point where the appended mp4 begins (equivalent to the length of the compressed mp4). This field might be provided in the original MicroVideo from client, but it might become invalid when the image component is edited, so it is expected that the thumbnailer will validate it and find the correct value (by scanning through the JPEG) if it is invalid. In other words, only a valid offset should be returned by thumbnailer.", + "format": "int32", + "type": "integer" + }, + "gcameramicrovideopresentationtimestampus": { + "description": "The presentation timestamp in microseconds of the video frame corresponding to the image still. Value may be -1 to denote unset/unspecified.", + "format": "int32", + "type": "integer" + }, + "gcameramicrovideoversion": { + "description": "Indicates the file format version of the MicroVideo (initially 1).", + "format": "int32", + "type": "integer" + }, + "gcameramotionphoto": { + "description": "An indication that this item should be treated as a Motion Photo. 0 -\u003e Not Motion Photo, 1 -\u003e Motion Photo, everything else is undefined per the spec. If it's a motion photo, the previous gcamera fields should be ignored.", + "format": "int32", + "type": "integer" + }, + "gcameramotionphotopresentationtimestampus": { + "description": "The presentation timestamp in microseconds of the video frame corresponding to the image still. Value may be -1 to denote unset/unspecified.", + "format": "int32", + "type": "integer" + }, + "gcameramotionphotoversion": { + "description": "Indicates the Motion Photo version of the spec (initially 1).", + "format": "int32", + "type": "integer" + }, + "gcameraspecialtypeid": { + "description": "Camera creations metadata. The opaque id string created by the OEM. For bursts, this field should not be present. Instead, the two properties below will allow Photos to identify and provide special treatment for bursts.", + "type": "string" + }, + "gcreationscameraburstid": { + "type": "string" + }, + "gcreationstype": { + "description": "String representation of creation type. Should be one of {\"GCameraCollage\", \"GCameraAnimation\", \"GCameraGroupSmiles\", \"GPhotosCollage\", \"GPhotosAnimation\"}.", + "type": "string" + }, + "gdepthMetadata": { + "$ref": "PhotosGDepthMetadata" + }, + "gimagemime": { + "type": "string" + }, + "gpsdatestamp": { + "description": "This is in UTC time. Format is YYYY:mm:dd.", + "type": "string" + }, + "gpsdestbearing": { + "format": "float", + "type": "number" + }, + "gpsdestbearingref": { + "type": "string" + }, + "gpsdestdistance": { + "format": "float", + "type": "number" + }, + "gpsdestdistanceref": { + "type": "string" + }, + "gpsdestlatitude": { + "format": "float", + "type": "number" + }, + "gpsdestlatituderef": { + "type": "string" + }, + "gpsdestlongitude": { + "format": "float", + "type": "number" + }, + "gpsdestlongituderef": { + "type": "string" + }, + "gpsdifferential": { + "format": "int32", + "type": "integer" + }, + "gpsdop": { + "format": "float", + "type": "number" + }, + "gpsimgdirection": { + "format": "float", + "type": "number" + }, + "gpsimgdirectionref": { + "type": "string" + }, + "gpsmapdatum": { + "type": "string" + }, + "gpsmeasuremode": { + "type": "string" + }, + "gpssatellites": { + "type": "string" + }, + "gpsspeed": { + "format": "float", + "type": "number" + }, + "gpsspeedref": { + "type": "string" + }, + "gpsstatus": { + "type": "string" + }, + "gpstime": { + "description": "This is in UTC Time. Contains three floats: hour, minute and second. Supports subsecond resolution.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "gpstrack": { + "format": "float", + "type": "number" + }, + "gpstrackref": { + "type": "string" + }, + "grayresponsecurve": { + "format": "int32", + "type": "integer" + }, + "grayresponseunit": { + "format": "int32", + "type": "integer" + }, + "hasAlpha": { + "description": "The image has an alpha channel (potential transparency). If the image is decoded, this will be updated to indicate whether there is any active transparency. Formats supporting alpha: png, webp, gif, heif.", + "type": "boolean" + }, + "headline": { + "type": "string" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "hostcomputer": { + "type": "string" + }, + "identifier": { + "items": { + "type": "string" + }, + "type": "array" + }, + "imagenumber": { + "type": "string" + }, + "imageorientation": { + "type": "string" + }, + "imagetype": { + "type": "string" + }, + "initialhorizontalfovdegrees": { + "format": "float", + "type": "number" + }, + "initialverticalfovdegrees": { + "format": "float", + "type": "number" + }, + "initialviewheadingdegrees": { + "format": "int32", + "type": "integer" + }, + "initialviewpitchdegrees": { + "format": "int32", + "type": "integer" + }, + "initialviewrolldegrees": { + "format": "int32", + "type": "integer" + }, + "instructions": { + "type": "string" + }, + "intellectualgenre": { + "type": "string" + }, + "interoperabilityindex": { + "type": "string" + }, + "iptc4c": { + "$ref": "PhotosFourCMetadata" + }, + "iptclastedited": { + "type": "string" + }, + "ismpformat": { + "description": "The image is a Multi-Picture Object.", + "type": "boolean" + }, + "isoequivalent": { + "format": "int32", + "type": "integer" + }, + "keyword": { + "items": { + "type": "string" + }, + "type": "array" + }, + "label": { + "type": "string" + }, + "language": { + "items": { + "type": "string" + }, + "type": "array" + }, + "languageidentifier": { + "type": "string" + }, + "lastphotodate": { + "type": "string" + }, + "latitude": { + "description": "GPS Info: +/- 90 inclusive", + "format": "double", + "type": "number" + }, + "lens": { + "type": "string" + }, + "lensid": { + "type": "string" + }, + "lensinfo": { + "type": "string" + }, + "lightsource": { + "format": "int32", + "type": "integer" + }, + "location": { + "type": "string" + }, + "locationshown": { + "items": { + "type": "string" + }, + "type": "array" + }, + "longitude": { + "description": "+/- 180 inclusive", + "format": "double", + "type": "number" + }, + "marked": { + "type": "boolean" + }, + "maxaperturevalue": { + "format": "float", + "type": "number" + }, + "maxavailheight": { + "format": "int32", + "type": "integer" + }, + "maxavailwidth": { + "format": "int32", + "type": "integer" + }, + "maxsamplevalue": { + "format": "int32", + "type": "integer" + }, + "metadatadate": { + "type": "string" + }, + "meteringmode": { + "format": "int32", + "type": "integer" + }, + "microvideooriginaloffset": { + "description": "This is similar to gcameramicrovideooffset, except it stores the unverified value that was provided in the motion photo file. This field is not part of the XMP or spec. It is used to ensure we preserve data from the original file when offset is modified.", + "format": "int32", + "type": "integer" + }, + "mimeType": { + "description": "Mime type of image", + "format": "int32", + "type": "integer" + }, + "minormodelagedisclosure": { + "type": "string" + }, + "minsamplevalue": { + "format": "int32", + "type": "integer" + }, + "mode": { + "format": "int32", + "type": "integer" + }, + "modelage": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "modelreleaseid": { + "items": { + "type": "string" + }, + "type": "array" + }, + "modelreleasestatus": { + "type": "string" + }, + "modifydate": { + "type": "string" + }, + "motionphotovideodataboxheader": { + "description": "The Motion Photo Video Data (MPVD) box header of a HEIF motion photo. It is used for reconstructing the original moton photo bytes. See go/photos-be-heic-motion-photos for more details.", + "format": "byte", + "type": "string" + }, + "nickname": { + "type": "string" + }, + "objectattributereference": { + "items": { + "type": "string" + }, + "type": "array" + }, + "objectcycle": { + "type": "string" + }, + "objecttypereference": { + "type": "string" + }, + "offsettime": { + "type": "string" + }, + "offsettimedigitized": { + "type": "string" + }, + "offsettimeoriginal": { + "type": "string" + }, + "organisationinimagecode": { + "items": { + "type": "string" + }, + "type": "array" + }, + "organisationinimagename": { + "items": { + "type": "string" + }, + "type": "array" + }, + "orientation": { + "description": "Exif camera orientation. \"1\" means \"no rotation\".", + "format": "int32", + "type": "integer" + }, + "originatingprogram": { + "type": "string" + }, + "owner": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ownername": { + "type": "string" + }, + "panoramaMetadata": { + "$ref": "PhotosPanoramaMetadata" + }, + "personinimage": { + "items": { + "type": "string" + }, + "type": "array" + }, + "photometricinterpretation": { + "format": "int32", + "type": "integer" + }, + "planarconfiguration": { + "format": "int32", + "type": "integer" + }, + "poseheadingdegrees": { + "format": "float", + "type": "number" + }, + "posepitchdegrees": { + "format": "float", + "type": "number" + }, + "poserolldegrees": { + "format": "float", + "type": "number" + }, + "primarychromaticities": { + "format": "float", + "type": "number" + }, + "productid": { + "items": { + "type": "string" + }, + "type": "array" + }, + "programversion": { + "type": "string" + }, + "projectiontype": { + "type": "string" + }, + "propertyreleaseid": { + "items": { + "type": "string" + }, + "type": "array" + }, + "propertyreleasestatus": { + "type": "string" + }, + "publisher": { + "items": { + "type": "string" + }, + "type": "array" + }, + "rating": { + "format": "float", + "type": "number" + }, + "redeyemode": { + "type": "boolean" + }, + "referenceblackwhite": { + "format": "float", + "type": "number" + }, + "referencedate": { + "items": { + "type": "string" + }, + "type": "array" + }, + "referencenumber": { + "items": { + "type": "string" + }, + "type": "array" + }, + "referenceservice": { + "items": { + "type": "string" + }, + "type": "array" + }, + "relatedimagefileformat": { + "type": "string" + }, + "relatedimageheight": { + "format": "int64", + "type": "string" + }, + "relatedimagewidth": { + "format": "int64", + "type": "string" + }, + "relatedsoundfile": { + "type": "string" + }, + "relation": { + "items": { + "type": "string" + }, + "type": "array" + }, + "releasedate": { + "type": "string" + }, + "releasetime": { + "type": "string" + }, + "resolutionunit": { + "format": "int32", + "type": "integer" + }, + "rotate": { + "description": "being returned to caller Use values defined in \"MIME_TYPE\" This field is deprecated. Rotation is now accomplished via ImageInfo.exif_orientation and ImageInfo.edit_list. Number of degrees (0, 90, 180,", + "format": "int32", + "type": "integer" + }, + "rowsperstrip": { + "format": "int64", + "type": "string" + }, + "samplesperpixel": { + "format": "int32", + "type": "integer" + }, + "saturation": { + "format": "int32", + "type": "integer" + }, + "scene": { + "items": { + "type": "string" + }, + "type": "array" + }, + "scenecapturetype": { + "format": "int32", + "type": "integer" + }, + "sensingmethod": { + "format": "int32", + "type": "integer" + }, + "sensorheight": { + "format": "float", + "type": "number" + }, + "sensorwidth": { + "format": "float", + "type": "number" + }, + "serialnumber": { + "type": "string" + }, + "serviceidentifier": { + "type": "string" + }, + "sharpness": { + "format": "int32", + "type": "integer" + }, + "shutterspeedvalue": { + "format": "float", + "type": "number" + }, + "software": { + "type": "string" + }, + "source": { + "type": "string" + }, + "sourcephotoscount": { + "format": "int32", + "type": "integer" + }, + "spectralsensitivity": { + "type": "string" + }, + "state": { + "type": "string" + }, + "stitchingsoftware": { + "type": "string" + }, + "stripbytecounts": { + "format": "int64", + "type": "string" + }, + "stripoffsets": { + "format": "int64", + "type": "string" + }, + "subjectarea": { + "format": "int32", + "type": "integer" + }, + "subjectcode": { + "items": { + "type": "string" + }, + "type": "array" + }, + "subjectdistancerange": { + "format": "int32", + "type": "integer" + }, + "subjectlocation": { + "format": "int32", + "type": "integer" + }, + "subjectreference": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sublocation": { + "type": "string" + }, + "subsectime": { + "type": "string" + }, + "subsectimedigitized": { + "type": "string" + }, + "subsectimeoriginal": { + "type": "string" + }, + "supplementalcategory": { + "items": { + "type": "string" + }, + "type": "array" + }, + "thresholding": { + "format": "int32", + "type": "integer" + }, + "thumbnailerBuildCl": { + "description": "The build CL for the version of thumbnailer that built this image.", + "format": "int32", + "type": "integer" + }, + "timesent": { + "type": "string" + }, + "timezoneminutes": { + "description": "Remaining minutes of offset.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "timezoneoffset": { + "description": "The elements in the timezone and daylight savings field arrays correspond to the following date/time fields: 0) datecreated (ie. DateTimeOriginal) 1) datetime (ie. DateTime or last modified date) 2) datetimedigitized (ie. DateTimeDigitized) If the field does not exist, then there is no valid time zone information for that date/time field. Offset in hours.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "title": { + "type": "string" + }, + "transmissionreference": { + "type": "string" + }, + "type": { + "items": { + "type": "string" + }, + "type": "array" + }, + "uniqueid": { + "description": "For unique hash:", + "type": "string" + }, + "uno": { + "type": "string" + }, + "urgency": { + "type": "string" + }, + "url": { + "type": "string" + }, + "usageterms": { + "type": "string" + }, + "usepanoramaviewer": { + "description": "GPano-related fields. A handful of these have been deprecated due to a change in the spec since its initial design.", + "type": "boolean" + }, + "version": { + "type": "string" + }, + "webstatement": { + "type": "string" + }, + "whitebalance": { + "format": "int32", + "type": "integer" + }, + "whitepoint": { + "format": "float", + "type": "number" + }, + "width": { + "description": "width and height are before any rotation (including EXIF orientation).", + "format": "int32", + "type": "integer" + }, + "xmp4c": { + "$ref": "PhotosFourCMetadata" + }, + "xresolution": { + "format": "float", + "type": "number" + }, + "ycbcrcoefficients": { + "format": "float", + "type": "number" + }, + "ycbcrpositioning": { + "format": "int32", + "type": "integer" + }, + "ycbcrsubsampling": { + "format": "int32", + "type": "integer" + }, + "yresolution": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "PhotosPanoramaMetadata": { + "id": "PhotosPanoramaMetadata", + "properties": { + "sphericalPanorama": { + "type": "boolean" + }, + "vr180Panorama": { + "description": "True if the image is a VR180 image. See go/3d180 for details.", + "type": "boolean" + } + }, + "type": "object" + }, + "PhotosVisionGroundtruthdbNormalizedBoundingBox": { + "description": "Bounding box coordinates are relative to the width and height of the image. For example, if image is 100x200 and NormalizedBoundingBox is , the bounding box coordinates will be (10, 40) to (50, 180). Note parts of the bounding box may fall outside the image.", + "id": "PhotosVisionGroundtruthdbNormalizedBoundingBox", + "properties": { + "xmax": { + "format": "float", + "type": "number" + }, + "xmin": { + "format": "float", + "type": "number" + }, + "ymax": { + "format": "float", + "type": "number" + }, + "ymin": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecFeatureVector": { + "id": "PhotosVisionObjectrecFeatureVector", + "properties": { + "floatData": { + "description": "For single precision floating point data", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecGeoLocation": { + "description": "The geo-location of a single point, or of the \"center\" of a group of points.", + "id": "PhotosVisionObjectrecGeoLocation", + "properties": { + "altitudeMeters": { + "description": "Altitude of the point above the earth's surface, in meters.", + "format": "double", + "type": "number" + }, + "countryCode": { + "description": "Country code string.", + "type": "string" + }, + "fromGps": { + "description": "Indicates if the lat/lon above is assumed to come from a GPS device.", + "type": "boolean" + }, + "lat": { + "description": "Latitude in degrees north. Values south of the equator are negative.", + "format": "double", + "type": "number" + }, + "latErrorBound": { + "description": "When applied to a single point, represents the estimated error bounds of manual geotagging. The estimate is based on size of the bounding box of the map used for manual geotagging. When applied to a group of points, the error bounds represent the dispersion around the group center (lat/lon above). The dispersion in this case is computed as half the interquartile range. Reference: http://en.wikipedia.org/wiki/Interquartile_range (lat +/- lat_error_bound, lng +/- lng_error_bound).", + "format": "double", + "type": "number" + }, + "lon": { + "description": "Longitude in degrees east. Values west of 0 deg are negative.", + "format": "double", + "type": "number" + }, + "lonErrorBound": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecGlobalFeature": { + "description": "Global feature for the image.", + "id": "PhotosVisionObjectrecGlobalFeature", + "properties": { + "additionalInfo": { + "description": "Optional info provided by the feature extractor.", + "format": "byte", + "type": "string" + }, + "featureVector": { + "$ref": "PhotosVisionObjectrecFeatureVector" + }, + "quantizedFeatureVector": { + "$ref": "PhotosVisionObjectrecQuantizedFeatureVector" + }, + "tag": { + "description": "Tag for this global feature. E.g., \"DELG\", \"SBv4\" or \"DELG_region1\".", + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecImageTemplate": { + "description": "ImageTemplate contains local and/or global features generated from one image. User-defined members can be set to any value within the constraints outlined below. Algorithms usually pass these through without evaluation, unless documented otherwise. Next id: 29", + "id": "PhotosVisionObjectrecImageTemplate", + "properties": { + "authorName": { + "description": "Name of the author or image source. User-defined. Must be NULL-terminated.", + "type": "string" + }, + "corpus": { + "description": "Identifier for which corpus the image belongs to. Currently Cyclone uses this field in: - photos_vision_objectrec.SpatialMatcherRequest.residual_template to select which spatial matcher should be applied to the candidate matches - photos_vision_objectrec.CustomCorpusQuantizer to map a custom corpus to one or more posting lists", + "type": "string" + }, + "geoLocation": { + "$ref": "PhotosVisionObjectrecGeoLocation", + "description": "The geolocation of the image. Assumed to represent the location where the photo was taken from." + }, + "globalFeature": { + "items": { + "$ref": "PhotosVisionObjectrecGlobalFeature" + }, + "type": "array" + }, + "imageHeight": { + "format": "int32", + "type": "integer" + }, + "imageId": { + "description": "Unique identifier for the image used to compute this template.", + "format": "int64", + "type": "string" + }, + "imageUrl": { + "description": "URL or filename of the image used to compute this template. User-defined. Must contain only ASCII characters and be NULL-terminated.", + "type": "string" + }, + "imageWidth": { + "description": "Dimension of the image used to compute this template.", + "format": "int32", + "type": "integer" + }, + "info": { + "format": "byte", + "type": "string" + }, + "objectInfo": { + "description": "Tags pertaining to this image. User-defined. Must be NULL-terminated.", + "items": { + "type": "string" + }, + "type": "array" + }, + "objectName": { + "description": "Name of the object/scene depicted. User-defined. Must contain only ASCII characters and be NULL-terminated.", + "type": "string" + }, + "opaqueData": { + "description": "Opaque template data. May be used to pass through additional data from template sources to processing modules, that is not already covered by other members of this PB. It is the responsibility of processing modules to verify that the data is in a compatible format.", + "format": "byte", + "type": "string" + }, + "roi": { + "$ref": "PhotosVisionObjectrecROI", + "description": "Region-of-interest: The bounding box of the object or scene depicted in the image." + }, + "subset": { + "items": { + "$ref": "PhotosVisionObjectrecImageTemplateSubSet" + }, + "type": "array" + }, + "version": { + "description": "Feature version.", + "type": "string" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecImageTemplateSubSet": { + "description": "Each SubSet contains LocalDescriptors of a specific type. The type indicates which algorithm has been used to generate the descriptors. No enum is defined for the descriptor_type. For most applications it is sufficient to know if two descriptors are of the same or a different type, while ignoring the details of their generation. The descriptor type '0' is reserved and must not be used.", + "id": "PhotosVisionObjectrecImageTemplateSubSet", + "properties": { + "descriptor": { + "items": { + "$ref": "PhotosVisionObjectrecLocalDescriptor" + }, + "type": "array" + }, + "descriptorType": { + "format": "int32", + "type": "integer" + }, + "isBinaryDescriptor": { + "description": "Used to indicate if the descriptor is binary or not. When decompressing feature this is useful to decide calling different decompression functions.", + "type": "boolean" + }, + "numDescriptors": { + "description": "Used to store the number of descriptors for statistical purposes, if the descriptors themselves are not stored.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecLocalDescriptor": { + "description": "LocalDescriptor holds interest point data and an optional local descriptor vector.", + "id": "PhotosVisionObjectrecLocalDescriptor", + "properties": { + "affineMatrix": { + "$ref": "PhotosVisionObjectrecMatrix2D", + "description": "Optional affine matrix. Supersedes scale and orientation if present. r' = affine_matrix.r + (x,y) defines an affine transform from the normalized image patch (in which the interest point is centered at the origin with scale 1) to the image. If the affine matrix is set, the following approximations are recommended: scale = sqrt(0.5 * (xx*xx + xy*xy + yx*yx + yy*yy)); orientation = atan2(yx - xy, xx + yy); If not present, the affine matrix can be computed from scale and orientation as: xx = scale * cos(orientation); xy = scale * -sin(orientation); yx = scale * sin(orientation); yy = scale * cos(orientation);" + }, + "data": { + "format": "byte", + "type": "string" + }, + "dataFactor": { + "description": "data_factor and data represent the local descriptor vector in a compressed format, using only 8 bit per value. Each byte of the data string yields one component of the local descriptor by bit-casting it to an int8 and multiplying it by data_factor. Protocol buffers do not support int8 directly.", + "format": "float", + "type": "number" + }, + "featureVector": { + "$ref": "PhotosVisionObjectrecFeatureVector", + "description": "Unquantized feature vector (float)." + }, + "opaqueData": { + "description": "Opaque descriptor data. May be used to pass through descriptor data from descriptor sources to processing modules, that is not already covered by data/data_factor and/or cannot be expressed as a vector of numbers. It is the responsibility of processing modules to verify that the data is in a compatible format.", + "format": "byte", + "type": "string" + }, + "orientation": { + "description": "Orientation is optional, as some interest point detectors don't compute it. The range of orientation is [-pi,pi).", + "format": "float", + "type": "number" + }, + "scale": { + "description": "Each interest point must have a characteristic scale \u003e 0.", + "format": "float", + "type": "number" + }, + "strength": { + "description": "The strength or weight, indicating the relative significance of this point.", + "format": "float", + "type": "number" + }, + "x": { + "description": "The position in the image with sub-pixel accuracy. The center of the upper left pixel has coordinates (0.0, 0.0). Thus the range for x and y is (-0.5, width - 0.5) x (-0.5, height - 0.5).", + "format": "float", + "type": "number" + }, + "y": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecMatrix2D": { + "description": "A 2x2 float matrix.", + "id": "PhotosVisionObjectrecMatrix2D", + "properties": { + "xx": { + "format": "float", + "type": "number" + }, + "xy": { + "format": "float", + "type": "number" + }, + "yx": { + "format": "float", + "type": "number" + }, + "yy": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecQuantizedFeatureVector": { + "description": "Quantized/compressed feature vector (8 bit per value). Can be decoded by multiplying data_factor to each data byte.", + "id": "PhotosVisionObjectrecQuantizedFeatureVector", + "properties": { + "data": { + "format": "byte", + "type": "string" + }, + "dataFactor": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "PhotosVisionObjectrecROI": { + "description": "A region of interest in the image.", + "id": "PhotosVisionObjectrecROI", + "properties": { + "xMax": { + "format": "int32", + "type": "integer" + }, + "xMin": { + "format": "int32", + "type": "integer" + }, + "yMax": { + "format": "int32", + "type": "integer" + }, + "yMin": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "PornFlagData": { + "description": "A protocol buffer to store the url, referer and porn flag for a url. and an optional image score. Next available tag id: 50.", + "id": "PornFlagData", + "properties": { + "adaboostContentScore": { + "description": "Content score - computed on the image pixel data only. Additionally, we store a version and minor version number of the model which was used to compute this score. Note: these fields are copies of adaboost_image_feature_porn* in ImageData.", + "format": "float", + "type": "number" + }, + "adaboostContentScoreMinorVersion": { + "format": "int32", + "type": "integer" + }, + "adaboostContentScoreVersion": { + "format": "int32", + "type": "integer" + }, + "coclickBrainScores": { + "$ref": "ImageSafesearchContentBrainPornAnnotation", + "description": "Aggregated brain_porn_scores for navboost co-clicked images. Historical: this signal is deprecated and no longer populated as of 2020-12-01. Refer to b/172897542 for more information." + }, + "csaiScore": { + "description": "Score predicting how likely an image is offensive or suggestive about CSAI (child sexual abuse imagery).", + "format": "float", + "type": "number" + }, + "debugInfo": { + "description": "DebugInfo stores debug information from the overall classifier. This allows for instance to update counters related to blacklisting without running the full classifier again.", + "items": { + "$ref": "ImagePornDebugInfo" + }, + "type": "array" + }, + "finalOffensiveScore": { + "description": "Final offensive score based on image salient terms and image OCR vulgar and offensive scores.", + "format": "float", + "type": "number" + }, + "finalViolenceScore": { + "description": "Final violence score based on some image signals (brain pixel score, co-clicked images violence score, navboost queries score, etc.).", + "format": "float", + "type": "number" + }, + "finalViolenceScoreVersion": { + "description": "A string that indicates the version of SafeSearch classifier used to compute final_violence_score.", + "type": "string" + }, + "imageEntitiesViolenceScore": { + "format": "float", + "type": "number" + }, + "imageStats": { + "description": "PornStatsImage is repeated even though we use only a single version, to help with rolling out new versions with miminum risk. Multiple versions should exist only for a short window of time. Once the new version is rolled out, the data for older versions should no longer be generated.", + "items": { + "$ref": "PornStatsImage" + }, + "type": "array" + }, + "largestFaceFrac": { + "description": "largest face, scaled by 1000 This field is same as ImageData.largest_face_frac.", + "format": "float", + "type": "number" + }, + "largestFaceFraction": { + "format": "int32", + "type": "integer" + }, + "numberFaces": { + "description": "number of faces", + "format": "int32", + "type": "integer" + }, + "ocrAnnotation": { + "$ref": "ImageSafesearchContentOCRAnnotation", + "description": "Information about image OCR text. For details see image/safesearch/content/public/ocr_annotation.proto." + }, + "ocrVulgarScore": { + "description": "Vulgar score of the text found by OCR in the image.", + "format": "float", + "type": "number" + }, + "offensiveSymbolDetection": { + "$ref": "ImageSafesearchContentOffensiveSymbolDetection", + "description": "QuimbyCongas-based detection of offensive symbols in the image (currently swastika and Nazi yellow badge)." + }, + "overallPornScore": { + "description": "Overall porn score that determines the porn restricts used during image search retrieval.", + "format": "float", + "type": "number" + }, + "photodnaHash": { + "description": "Binary version of the PhotoDNA hash (144 bytes long). If not set (has_photodna_hash() == false) it means that it was not computed, if empty (has_photodna_hash() == true \u0026\u0026 photodna_hash() == \"\") it means that the computation failed (cannot be computed for images smaller than 50 x 50).", + "format": "byte", + "type": "string" + }, + "pornWithHighConfidence": { + "description": "This field is set to true when we are pretty confident that the image is porn (with higher precision than the img_porn_moderate restrict). In particular, it means that the image might be demoted for non-porn queries when SafeSearch is Off.", + "type": "boolean" + }, + "propAnyPornFlag": { + "description": "OR of the prop_porn_flag and prop_softporn_flag.", + "type": "boolean" + }, + "propPornFlag": { + "description": "Text classifier properties for the referrer page.", + "type": "boolean" + }, + "propSoftpornFlag": { + "type": "boolean" + }, + "qbstOffensiveScore": { + "description": "QBST-based image offensive score, Navboost based", + "format": "float", + "type": "number" + }, + "qbstSpoofScore": { + "description": "QBST-based image spoof score, Navboost based, unrelated to the pixel-based score in PornAnnotation.", + "format": "float", + "type": "number" + }, + "queryStats": { + "$ref": "ClassifierPornQueryStats", + "description": "Query statistics from Navboost logs. For more details see classifier/porn/proto/image_porn_classifier_signals.proto." + }, + "queryTextViolenceScore": { + "description": "Aggregated navboost query violence score.", + "format": "float", + "type": "number" + }, + "referer": { + "description": "url of the referer page", + "type": "string" + }, + "referrerCounts": { + "$ref": "ClassifierPornReferrerCounts", + "description": "Information about referrers and their porn classification. For details see classifier/porn/proto/image_porn_classifier_signals.proto." + }, + "semanticSexualizationScore": { + "description": "Starburst-based score predicting sexualization level of the image.", + "format": "float", + "type": "number" + }, + "starburstPornScore": { + "description": "Additional SafeSearch signals that are used to compute final scores.", + "format": "float", + "type": "number" + }, + "starburstViolenceScore": { + "format": "float", + "type": "number" + }, + "textStats": { + "description": "PornStatsText is repeated even though we use only a single version, to help with rolling out new versions with miminum risk. Multiple versions should exist only for a short window of time. Once the new version is rolled out, the data for older versions should no longer be generated.", + "items": { + "$ref": "PornStatsText" + }, + "type": "array" + }, + "url": { + "description": "url of the image", + "type": "string" + }, + "urlPornScores": { + "$ref": "ClassifierPornAggregatedUrlPornScores", + "description": "Information about the URL porn scores for image URLs associated with this image." + } + }, + "type": "object" + }, + "PornStatsImage": { + "description": "Site aggregated image content signals are captured in this protocol buffer. This is versioned. Not all fields are present in each version. It is important to document all the fields that are used in each version here.", + "id": "PornStatsImage", + "properties": { + "imageCount": { + "description": "image content score data", + "format": "uint64", + "type": "string" + }, + "siteKey": { + "type": "string" + }, + "version": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "PornStatsText": { + "description": "Site aggregated text signals are captured in this protocol buffer. This is versioned. Not all fields are present in each version. It is important to document all the fields that are used in each version here.", + "id": "PornStatsText", + "properties": { + "anyPornPageCount": { + "format": "uint64", + "type": "string" + }, + "pageCount": { + "format": "uint64", + "type": "string" + }, + "siteKey": { + "type": "string" + }, + "version": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "PostalAddress": { + "description": "Next free ID: 32", + "id": "PostalAddress", + "properties": { + "addressLine": { + "description": "These correspond to the \"AddressLine\" elements in xAL, which are used to hold unstructured text. This is an addendum to the structured values; when the address is formatted, the provided lines are prepended to the formatted version of the street component fields for Western countries, and appended for CJK countries. These lines are in display order. Formerly users of PostalAddress were discouraged from mixing address_line with structured address elements. Mixing is now encouraged if address_line has to be used at all.", + "items": { + "type": "string" + }, + "type": "array" + }, + "administrativeAreaName": { + "description": "Top-level administrative subdivision of this country. Examples: US state, IT region, UK constituent nation, JP prefecture.", + "type": "string" + }, + "countryName": { + "description": "Name corresponding to country code. Optional. This can usually be inferred from country_name_code.", + "type": "string" + }, + "countryNameCode": { + "description": "xAL does not specify a scheme for country codes. We strongly recommend ISO 3166-1-alpha-2 (two letter codes, as used in DNS) if you use this field. (Use \"GB\", not \"UK\".)", + "type": "string" + }, + "dependentLocalityName": { + "description": "Dependent locality or sublocality. Used for UK dependent localities, or neighborhoods or boroughs in other locations. If trying to represent a UK double-dependent locality, include both the double-dependent locality and the dependent locality in this field, e.g. \"Whaley, Langwith\".", + "type": "string" + }, + "dependentThoroughfareName": { + "description": "Dependent thoroughfares are used to define UK-style dependent thoroughfares, and secondary streets in addresses in other locales, including intersections. Formatting is locale-dependent.", + "type": "string" + }, + "firmName": { + "description": "NEW: The firm or organization. This goes at a finer granularity than address_lines in the address. Omit if not needed.", + "type": "string" + }, + "isDisputed": { + "description": "Required to support the suppression of country names from formatted results for addresses within geo-politically disputed areas. Note that we cannot achieve this by not setting the country, as this would prevent us from selecting a suitable formatting template. Addresses converted from Oyster, by the standard conversion libraries, will have this field set if the address lies within a geo-politically disputed area (ie, contained within features of type TYPE_DISPUTED_AREA) even if the disputed area itself is not a visible part of the formatted address. An example of a disputed area is \"No Man's Land\" near Jerusalem which has the flag FLAG_NEVER_DISPLAY set for all its names. See: go/disputed-areas-2014 for more information.", + "type": "boolean" + }, + "languageCode": { + "description": "Language of the address. May affect address formatting for multi- lingual countries. Also allows storing multilingual location names as repeated PostalAddress. Not in xAL. Use language codes which are accepted by i18n_identifiers::LanguageCodeCoverter::FromOther(). Examples include \"en\" and \"de-CH\".", + "type": "string" + }, + "localityName": { + "description": "Locality. This is something of a fuzzy term, but it generally refers to the city/town portion of an address. In regions of the world where localities are not well defined or do not fit into this structure well (for example, Japan), leave locality_name empty and use address_line. Examples: US city, IT comune, UK post town.", + "type": "string" + }, + "postBoxNumber": { + "description": "This corresponds to PostBoxNumber in xAL format. In xAL format, it's nested inside PostBox, which also contains a \"Type\" field to distinguish between PO Box, Private Bag etc. Current support in this proto is for PO Box only. Note that although this is modelled as a string, it should have the number only, with any necessary punctuation (such as \"-\"). For example, for \"P.O. Box 123\", this field would hold \"123\" - the template displaying this would prepend P.O. Box when formatting if necessary.", + "type": "string" + }, + "postalCodeNumber": { + "description": "Despite the name, postal_code_number values are frequently alphanumeric. Examples: \"94043\", \"SW1W\", \"SW1W 9TQ\".", + "type": "string" + }, + "postalCodeNumberExtension": { + "description": "Used for postal-code suffixes, such as the 4-digit extension of a US ZIP+4 code.", + "type": "string" + }, + "premiseName": { + "description": "The \"premise\" is something like a house or building.", + "type": "string" + }, + "recipientName": { + "description": "NEW: The recipient. This goes at a finer granularity than address_lines in the address. Not present in xAL. Omit if not needed.", + "type": "string" + }, + "sortingCode": { + "description": "This corresponds to the SortingCode sub-element of the xAL PostalServiceElements element. Use is very country-specific. Where it is used, the value is either a string like \"CEDEX\", optionally followed by a number (e.g. \"CEDEX 7\"), or just a number alone, representing the \"sector code\" (Jamaica), \"delivery area indicator\" (Malawi) or \"post office indicator\" (e.g. Côte d'Ivoire).", + "type": "string" + }, + "subAdministrativeAreaName": { + "description": "Second-level administrative subdivision of this country. Examples: US county, IT province, UK county.", + "type": "string" + }, + "subPremiseName": { + "description": "The \"subpremise\" is something like an apartment or suite. xAL offers more structured premise and subpremise values, but we don't.", + "type": "string" + }, + "thoroughfareName": { + "description": "Name of thoroughfare. Intersections should be represented with this field or address_line. Examples: \"Amphitheatre Parkway\", \"N Shoreline Blvd \u0026 Charleston Rd\"", + "type": "string" + }, + "thoroughfareNumber": { + "description": "Thoroughfare numbers (street numbers) can be very complex indeed. xAL defines fancy structures like \"ThoroughfareNumberRange\" to represent the details, but we haven't included that yet. It is worth noting that this needs to be a string, not a number. Example: \"1600\"", + "type": "string" + } + }, + "type": "object" + }, + "PrecomputedRestricts": { + "description": "The restricts that are computed before building a Mustang index.", + "id": "PrecomputedRestricts", + "properties": { + "restricts": { + "items": { + "enum": [ + "INVALID", + "COLOR_BLACK", + "COLOR_BLUE", + "COLOR_BROWN", + "COLOR_GRAY", + "COLOR_GREEN", + "COLOR_ORANGE", + "COLOR_PINK", + "COLOR_PURPLE", + "COLOR_RED", + "COLOR_TEAL", + "COLOR_WHITE", + "COLOR_YELLOW", + "HAS_SIMILAR", + "ALL", + "CLIPART", + "CLIPART_HR", + "LINEART", + "PHOTO", + "ANIMATED", + "TRANSPARENT", + "PANORAMIC", + "STOCK", + "MONO", + "TOLERANT_GRAY", + "COLOR", + "NOT_UNIVERSAL", + "PORTRAIT", + "FACES_ONE", + "FACES_TWO", + "FACES_SEVERAL", + "FACES_MANY", + "FACE_MALE", + "FACE_FEMALE", + "_img_porn_moderate", + "_img_porn_strict", + "_img_porn_very_strict", + "_image_aspect_16x10", + "_image_aspect_16x9", + "_image_aspect_4x3", + "_image_aspect_square", + "_image_aspect_nearsquare", + "_image_aspect_tall", + "_image_aspect_xtall", + "_image_aspect_wide", + "_image_aspect_xwide", + "_image_size_atleast_400x300", + "_image_size_atleast_640x480", + "_image_size_atleast_800x600", + "_image_size_atleast_1024x768", + "_image_size_atleast_1280x800", + "_image_size_atleast_1440x900", + "_image_size_atleast_2MP", + "_image_size_atleast_4MP", + "_image_size_atleast_6MP", + "_image_size_atleast_8MP", + "_image_size_atleast_10MP", + "_image_size_atleast_12MP", + "_image_size_atleast_15MP", + "_image_size_atleast_20MP", + "_image_size_atleast_40MP", + "_image_size_atleast_70MP", + "_image_size_atleast_140MP", + "_image_size_icon", + "_image_size_small", + "_image_size_medium", + "FILETYPE_JPG", + "FILETYPE_GIF", + "FILETYPE_PNG", + "FILETYPE_BMP", + "FILETYPE_SVG", + "FILETYPE_WEBP", + "FILETYPE_ICO", + "FILETYPE_CRAW", + "FILETYPE_HEIF", + "CC_LICENSE", + "NON_CC_LICENSE", + "BEST", + "ICON", + "SMALL", + "MEDIUM", + "LARGE", + "XLARGE", + "XXLARGE", + "_imagehuge", + "DEPRECATED_65", + "DEPRECATED_72" + ], + "enumDescriptions": [ + "", + "The image has dominant colors.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This restrict will be set if the image has similar images in the similar-image index.", + "Misnamed - semantically means \"not tiny\".", + "Genre restricts.", + "", + "", + "", + "", + "", + "", + "Restriction on images coming from stock photograph sites.", + "Earlier chrominance measures.", + "", + "Refers to the FULL_COLOR type defined in image_perdoc.h.", + "Not allowed to appear in Images Universal.", + "Has at least one large face in the image.", + "Face-quantity restricts. The detected faces that contribute toward this count (1) are larger than some minimal size (different from the PORTRAIT criterion) and (2) have been verified by color (for color images: face has skin-color; for non-color images: always true).", + "", + "", + "", + "Face-classifier restricts. Computed over the union of all detected faces, so an image can have both FACE_MALE and FACE_FEMALE. These restricts only get applied if the face is frontal with high confidence, age is detected and is at least 13 years old. The precision should be around 98-99%.", + "", + "Porn restricts.", + "", + "", + "Aspect ratio restricts.", + "", + "", + "", + "", + "", + "", + "", + "", + "New size restricts.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Filetype restricts (should correspond to FileFormat, below).", + "", + "", + "", + "", + "", + "", + "", + "", + "Restricts about image license types.", + "", + "--- The restricts below are on the \"to deprecate\" list. --- Misnamed - semantically means \"somewhat large\".", + "Earlier size restricts.", + "", + "", + "", + "", + "", + "\"HUGE\" does not work for this enum because the symbol in the generated C++ file causes compilation problems; so, it is written in verbatim mode.", + "Deprecated fields; place here to prevent reuse. For testing, they must have the \"DEPRECATED_\" prefix.", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "PremiumPerDocData": { + "description": "Per-doc data for premium documents in the Google index.", + "id": "PremiumPerDocData", + "properties": { + "Currency": { + "description": "type froogle/currency/currency.h", + "format": "int32", + "type": "integer" + }, + "Date": { + "description": "publishing date (seconds since 1970,", + "format": "int64", + "type": "string" + }, + "Entitlement": { + "description": "entitlement data", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "IsArchival": { + "description": "True if a free document is archival in nature.", + "type": "boolean" + }, + "IsEntitled": { + "description": "User is entitled to see the premium content for free.", + "type": "boolean" + }, + "Price": { + "description": "price * 100 if available", + "format": "int32", + "type": "integer" + }, + "Publication": { + "description": "negative values for prior dates) FP of the Premium publication name", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "Proto2BridgeMessageSet": { + "description": "This is proto2's version of MessageSet.", + "id": "Proto2BridgeMessageSet", + "properties": {}, + "type": "object" + }, + "PseudoVideoData": { + "description": "Available tags: 14+", + "id": "PseudoVideoData", + "properties": { + "AsrModel": { + "description": "ASR model MPM version.", + "type": "string" + }, + "DocKey": { + "description": "This should be the MustangDocId, we need to figure out how to generate a uint64 given the int64 we have in data_set", + "format": "uint64", + "type": "string" + }, + "Lang": { + "description": "Language of the recognizer used to generate transcript.", + "type": "string" + }, + "MustangDocId": { + "description": "This is the videodocid associate to the http://video.google.com/videoplay?docid= NUMBER", + "type": "string" + }, + "Url": { + "description": "URL for document.", + "type": "string" + }, + "s3Mode": { + "type": "string" + }, + "s3ModelInfoLabel": { + "description": "S3 ASR model info.", + "type": "string" + }, + "transcript": { + "$ref": "PseudoVideoDataTranscript" + } + }, + "type": "object" + }, + "PseudoVideoDataTranscript": { + "description": "A time-coded transcription of the document's audio track.", + "id": "PseudoVideoDataTranscript", + "properties": { + "Text": { + "description": "The complete transcription text.", + "type": "string" + }, + "timestamp": { + "items": { + "$ref": "PseudoVideoDataTranscriptTimestamp" + }, + "type": "array" + } + }, + "type": "object" + }, + "PseudoVideoDataTranscriptTimestamp": { + "description": "Mapping of time/character correspondences. Used to map found snippets to the time and thumbnail nearest that snippet.", + "id": "PseudoVideoDataTranscriptTimestamp", + "properties": { + "CharOffset": { + "format": "int32", + "type": "integer" + }, + "Confidence": { + "description": "quantized to values in range 0-127", + "format": "int32", + "type": "integer" + }, + "TimeOffset": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "PtokenPToken": { + "description": "PToken expresses policy-relevant properties of the data objects being processed and stored in Google's production systems. See go/ptoken to learn more. Next ID: 8", + "id": "PtokenPToken", + "properties": { + "compoundPtokenData": { + "format": "byte", + "type": "string" + }, + "ptokenData": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsAppInfo": { + "description": "Information of the app to be annotated for the query. It contains the name of the app, the package name associated with it. It also contains the confidence associated with {app, package} pair. This confidence is calculated from different signals like navboost, ranking etc. which later is used for ranking the apps for a particular query. The source of this app information is also indicated. This app info can either be from installed app (collected from device content) or from the fastmap. LINT.IfChange", + "id": "QualityActionsAppInfo", + "properties": { + "androidIntent": { + "description": "The list of android intents that the app is capable of executing.", + "items": { + "type": "string" + }, + "type": "array" + }, + "appName": { + "description": "This is the string matched from the query.", + "type": "string" + }, + "category": { + "$ref": "QualityActionsAppUnderstandingCategory", + "description": "Category of this package." + }, + "confidence": { + "format": "float", + "type": "number" + }, + "displayName": { + "description": "This is the display name of the app as shown below the app icon.", + "type": "string" + }, + "fallbackUrl": { + "description": "URL for the website associated with this app.", + "type": "string" + }, + "packageName": { + "description": "Note that the package_name could be empty for two reasons: - The AppInfo is annotated by device content. - The ngram exists in app name fastmap, but there are a lot of packages associated with it. e.g., there could be a lot of apps for app name \"recipes app\".", + "type": "string" + }, + "source": { + "description": "For the future source, use the field in source_data.source().", + "enum": [ + "UNKNOWN_SOURCE", + "DEVICE_CONTENT", + "FASTMAP", + "NAVBOOST", + "MARMOT", + "WHITELIST", + "PLAY_APPS_SEARCH", + "ASSISTANT_DEVICE_MODEL_CONTEXT", + "DEVICE_ATTRIBUTE", + "TELEPORT_SEARCH", + "FOREGROUND_SEARCH", + "IMPLICIT_SEARCH", + "MEDIA_PROVIDER", + "TELEPORT", + "AGGRESSIVE_IMPLICIT_SEARCH", + "EMPTY_SEARCH" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Whitelisted apps directly injected into the grammar or annotator.", + "", + "Apps are annotated from Assistant AppCapabilities, which will come from Device Model.", + "Apps are annotated from device attribute.", + "Used by TeleportIntentGenerator for queries such as Search $Entity on $APP.", + "Used by TeleportIntentGenerator for queries such searchy queries that fit the current foreground app. Example: [running shoes] with Amazon in the foreground.", + "Used by TeleportIntentGenerator for queries with special keywords such as [funny cat videos] (with the keyword being videos).", + "Used by go/ump-provider-annotation to annotate media providers.", + "Apps annotated by Teleport, coming from the AgentAnnotator.", + "Used by TeleportIntentgenerator for queries such as \"install amazon\" to be directed for PlayStore. Search frames should directly trigger on this intent.", + "Used by the TeleportIntentGenerator such as \"search on amazon\". We will ask the user what they are searching for." + ], + "type": "string" + }, + "sourceData": { + "items": { + "$ref": "QualityActionsAppInfoSourceData" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityActionsAppInfoSourceData": { + "description": "This deprecates the above: * confidence=3 * source=4 This allows us to merge AppInfo data per package_name.", + "id": "QualityActionsAppInfoSourceData", + "properties": { + "allowListSourceData": { + "$ref": "QualityActionsAppInfoSourceDataAllowListSourceData" + }, + "confidence": { + "description": "Confidence from navboost.", + "format": "float", + "type": "number" + }, + "install": { + "description": "Number of installs from marmot.", + "format": "int64", + "type": "string" + }, + "isCategorical": { + "type": "boolean" + }, + "mediaProviderSourceData": { + "$ref": "QualityActionsAppInfoSourceDataMediaProviderSourceData" + }, + "source": { + "enum": [ + "UNKNOWN_SOURCE", + "DEVICE_CONTENT", + "FASTMAP", + "NAVBOOST", + "MARMOT", + "WHITELIST", + "PLAY_APPS_SEARCH", + "ASSISTANT_DEVICE_MODEL_CONTEXT", + "DEVICE_ATTRIBUTE", + "TELEPORT_SEARCH", + "FOREGROUND_SEARCH", + "IMPLICIT_SEARCH", + "MEDIA_PROVIDER", + "TELEPORT", + "AGGRESSIVE_IMPLICIT_SEARCH", + "EMPTY_SEARCH" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Whitelisted apps directly injected into the grammar or annotator.", + "", + "Apps are annotated from Assistant AppCapabilities, which will come from Device Model.", + "Apps are annotated from device attribute.", + "Used by TeleportIntentGenerator for queries such as Search $Entity on $APP.", + "Used by TeleportIntentGenerator for queries such searchy queries that fit the current foreground app. Example: [running shoes] with Amazon in the foreground.", + "Used by TeleportIntentGenerator for queries with special keywords such as [funny cat videos] (with the keyword being videos).", + "Used by go/ump-provider-annotation to annotate media providers.", + "Apps annotated by Teleport, coming from the AgentAnnotator.", + "Used by TeleportIntentgenerator for queries such as \"install amazon\" to be directed for PlayStore. Search frames should directly trigger on this intent.", + "Used by the TeleportIntentGenerator such as \"search on amazon\". We will ask the user what they are searching for." + ], + "type": "string" + }, + "teleportSourceData": { + "$ref": "AssistantTeleportTeleportNicknameSignals", + "description": "Signals present when the source is TELEPORT." + } + }, + "type": "object" + }, + "QualityActionsAppInfoSourceDataAllowListSourceData": { + "description": "Additional signals when the source is ATV's allow list.", + "id": "QualityActionsAppInfoSourceDataAllowListSourceData", + "properties": { + "preReleaseMode": { + "description": "Whether the app is in the pre-release stage and only available for testing.", + "type": "boolean" + }, + "unknownAppDeviceCompatibility": { + "description": "Whether app compatibility is unknown. This field is needed for apps like apple tv that have different package names on different devices. Play Gateway Service (PGS) lookup is needed to validate that the app is available on the user's device. go/app-fulfillment-quality", + "type": "boolean" + } + }, + "type": "object" + }, + "QualityActionsAppInfoSourceDataMediaProviderSourceData": { + "description": "The MEDIA_PROVIDER source can further specify information about the content served by the app.", + "id": "QualityActionsAppInfoSourceDataMediaProviderSourceData", + "properties": { + "providerKey": { + "description": "The unique provider key/enumeration string as used in KG. See also /base/mediaasset/provider/provider_enumerator.", + "type": "string" + }, + "providerType": { + "description": "The type of content served by the App. See also chrome.dongle.pints.ProviderType.", + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsAppUnderstandingCategory": { + "description": "Category that this app falls into.", + "id": "QualityActionsAppUnderstandingCategory", + "properties": { + "category": { + "enum": [ + "MUSIC", + "GAME", + "NEWS", + "VIDEO", + "CHAT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "confidence": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityActionsCustomizedNotification": { + "id": "QualityActionsCustomizedNotification", + "properties": { + "buttons": { + "description": "Buttons on the notification", + "items": { + "$ref": "QualityActionsCustomizedNotificationButton" + }, + "type": "array" + }, + "surfaceType": { + "description": "Surface type for the notification", + "enum": [ + "UNSPECIFIED", + "PHONE", + "SMART_DISPLAY" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "tapAction": { + "$ref": "QualityActionsCustomizedNotificationPayload", + "description": "Tap action on the notification body. This overwrites the default tap action on reminder trigger notification (which on mobile, is the reminders hub page)." + }, + "text": { + "description": "Notification text", + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsCustomizedNotificationButton": { + "id": "QualityActionsCustomizedNotificationButton", + "properties": { + "label": { + "description": "REQUIRED. text for the button label", + "type": "string" + }, + "tapAction": { + "$ref": "QualityActionsCustomizedNotificationPayload", + "description": "REQUIRED. tap action for the button" + } + }, + "type": "object" + }, + "QualityActionsCustomizedNotificationPayload": { + "id": "QualityActionsCustomizedNotificationPayload", + "properties": { + "url": { + "description": "Currently for payload we only support raw string url. More structured options may be added in the future", + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsNewsProviderAnnotationData": { + "description": "Aqua annotation data for news provider. This proto is added as an extension to NimbleAnnotationData.semantics_proto for nimble annotation.", + "id": "QualityActionsNewsProviderAnnotationData", + "properties": { + "providers": { + "items": { + "$ref": "QualityActionsNewsProviderAnnotationDataProvider" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityActionsNewsProviderAnnotationDataProvider": { + "description": "NextId: 6", + "id": "QualityActionsNewsProviderAnnotationDataProvider", + "properties": { + "locales": { + "description": "List of supported locales for this provider. Must follow the format from go/iii, e.g.: 'en', 'en-US', 'en-GB', etc. Short forms without regions codes, such as, 'en' match all possible regions: en-US, en-GB, en-IN, etc.", + "items": { + "type": "string" + }, + "type": "array" + }, + "officialName": { + "description": "The official name of the provider. Used in TTS and should be localized.", + "type": "string" + }, + "officialNamePronunciation": { + "description": "TTS hint for the pronunciation of the name. Should be left blank unless TTS performs poorly on official_name. Example: Without hinting, TTS mispronounces \"The Daily 202\" as \"the daily two hundred and two\". Feeding tts the string \"the daily two oh two\" produces correct TTS.", + "type": "string" + }, + "providerId": { + "description": "The provider id used for news source URL lookup in Kansas. See b/27250779 for details.", + "format": "int32", + "type": "integer" + }, + "score": { + "description": "A score of how confident the annotated span is a news provider. For example, a high score is assigned for span \"bbc news\", but a low score for span \"bbc\", which only triggers narrative news aqua parse for a query with explicit news intent, e.g [play news from bbc].", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "QualityActionsReminder": { + "description": "Next id: 30", + "id": "QualityActionsReminder", + "properties": { + "archived": { + "description": "OPTIONAL. True if the reminder is archived. Not present implies false.", + "type": "boolean" + }, + "archivedTime": { + "$ref": "AssistantApiDateTime", + "description": "OPTIONAL. The time when this reminder is archived. Deprecated. Use `archived_timestamp` instead." + }, + "archivedTimestamp": { + "description": "OPTIONAL. When the reminder was completed (only present when archived == true). Maps to apps_intelligence.dialog.Task's complete_time field.", + "format": "google-datetime", + "type": "string" + }, + "asyncInteractionType": { + "description": "REQUIRED. async_interaction_type of the reminder trigger notification ", + "enum": [ + "TYPE_UNSPECIFIED", + "ASSISTANT_EXPLORE_LINKS", + "REMINDER", + "REMINDER_ASSIGNABLE_NOTIFY", + "REMINDER_CHIRP", + "REMINDER_DRAGONGLASS", + "REMINDER_LOCATION_BASED", + "SHARED_REMINDER", + "SHARED_REMINDER_LOCATION_BASED", + "REMINDER_FORESIGHT", + "REMINDER_FORESIGHT_TAP_TO_PAYLOAD", + "REMINDER_FORESIGHT_LONG_ANSWER", + "REMINDER_FORESIGHT_WHEN_IS", + "REMINDER_FORESIGHT_UPCOMING_DATES", + "REMINDER_FORESIGHT_PORKY_PIG", + "REMINDER_SNAPSHOT_CALENDAR_EVENT", + "REMINDER_SNAPSHOT_PKG_ANNIVERSARY", + "REMINDER_SNAPSHOT_PKG_BIRTHDAY", + "REMINDER_SNAPSHOT_PKG_MY_BIRTHDAY", + "REMINDER_ARIS", + "REMINDER_LOCATION_BASED_ARIS", + "REMINDER_SHARED_ARIS", + "REMINDER_FORESIGHT_WHEN_IS_ARIS", + "REMINDER_FORESIGHT_PORKY_PIG_ARIS", + "REMINDER_FORESIGHT_TAP_TO_PAYLOAD_ARIS", + "REMINDER_FORESIGHT_LONG_ANSWER_ARIS", + "REMINDER_FORESIGHT_ARIS", + "REMINDER_CHIRP_ARIS", + "REMINDER_DRAGONGLASS_ARIS", + "REMINDER_PROACTIVE_API", + "REMINDER_POST_TASK_MIGRATION", + "CROSS_SURFACE", + "CROSS_SURFACE_MOVIE_SHOWTIMES", + "CROSS_SURFACE_EVENTS", + "CROSS_SURFACE_SPORTS_LEAGUE_STANDINGS", + "CROSS_SURFACE_THIRD_PARTY_HANDOFF", + "CROSS_SURFACE_SPORTS_TEAM_STANDINGS", + "CROSS_SURFACE_EXPLICIT_SEND_TO_PHONE", + "CROSS_SURFACE_LOCAL_CATEGORICAL", + "CROSS_SURFACE_LOCAL_DIRECTIONS", + "CROSS_SURFACE_LOCAL_DISTANCE", + "CROSS_SURFACE_MEDIA_SONG_DETAILS", + "CROSS_SURFACE_MEDIA_ARTIST_DETAILS", + "CROSS_SURFACE_TRANSLATION", + "CROSS_SURFACE_SHOPPING_LIST", + "CROSS_SURFACE_LOCAL_PHONE_NUMBER", + "CROSS_SURFACE_LOCAL_SHOPPING", + "CROSS_SURFACE_LOCAL_STATION_KP", + "CROSS_SURFACE_LOCAL_TAXI_DIRECTIONS", + "CROSS_SURFACE_TRANSACTIONS_THIRD_PARTY", + "CROSS_SURFACE_TRANSACTIONS", + "CROSS_SURFACE_TRANSACTIONS_ASYNC_RESUME", + "CROSS_SURFACE_REMOTE_DEVICE_ACTIONS_AUTH", + "CROSS_SURFACE_DONATIONS", + "CROSS_SURFACE_FOOD_ORDERING", + "CROSS_SURFACE_NOTES_AND_LISTS", + "CROSS_SURFACE_DIETARY_RESTRICTIONS", + "CROSS_SURFACE_AE_ACCOUNT_LINKING", + "BTW_VM_UPGRADE", + "BTW_NOTIFY", + "BTW_TOPICAL_TOUR", + "BTW_FAMILY_BELL", + "BTW_WARM_WORDS", + "EDIT_DIETARY_PREFERENCES", + "GOOGLE_NOW", + "GOOGLE_NOW_CHROMEOS", + "PRICE_DROP", + "PROACTIVE_FLIGHT", + "PROACTIVE_FLIGHT_DELAYED_CANCELLED", + "PROACTIVE_FLIGHT_WEATHER", + "PROACTIVE_FLIGHT_LANDING", + "PROACTIVE_HOTEL", + "PROACTIVE_PACKAGE", + "PROACTIVE_BILL", + "PROACTIVE_COUPON_EXPIRES_SOON", + "PROACTIVE_PPT", + "ZEROSTATE_BILL", + "PROACTIVE_EVENT", + "PROACTIVE_TRANSPORT", + "PROACTIVE_INFERRED_REMINDER", + "GROCERY_DELIVERY", + "GROCERY_PICKUP", + "PROACTIVE_SMARTSPACE", + "NARRATIVE_NEWS", + "BROADCAST_CUSTOM", + "BROADCAST_CANNED", + "REPLY_BROADCAST_PHONE", + "REPLY_BROADCAST_CHIRP", + "TELL_MY_FAMILY", + "TELL_MY_FAMILY_ALLOW_GUEST_USE", + "FAMILY_CHECK_IN", + "SUBSCRIPTIONS_WEATHER", + "SUBSCRIPTIONS_WEATHER_CURRENT_CONTEXT", + "SUBSCRIPTIONS_NEWS", + "SUBSCRIPTIONS_FUN_CONTENT", + "SUBSCRIPTIONS_JOKE", + "SUBSCRIPTIONS_OTHER", + "SUBSCRIPTIONS_DAILY_PHRASES", + "SUBSCRIPTIONS_ANIMAL_OF_THE_DAY", + "KEEP_SUBSCRIPTIONS_WEATHER", + "KEEP_SUBSCRIPTIONS_NEWS", + "KEEP_SUBSCRIPTIONS_FUN_CONTENT", + "KEEP_SUBSCRIPTIONS_JOKE", + "KEEP_SUBSCRIPTIONS_OTHER", + "KEEP_SUBSCRIPTIONS_DAILY_PHRASES", + "PROACTIVE_SPORTS_UPDATE", + "GROWTH", + "GROWTH_AUTOMOBILE_PAYFORGAS_PROMO", + "MOBILE_ACTIVATION", + "SIMON_ACTIONS", + "SIMON_WEB_ANSWERS", + "SIMON_CURRENCY", + "SIMON_WEATHER", + "SIMON_ACTIONS_TRAINING_DATA", + "HOMEBOY", + "WHERE_IS_MY_FAMILY_LIFE360", + "WHERE_IS_PERSON_GEO", + "FEATURE_AWARENESS_COMMUNICATION_HABITS", + "FEATURE_AWARENESS_MUSIC_HABITS", + "PHOTO_FRAME_SETUP_PROMOTIONAL", + "ASSISTANT_PIE_SWIPE_EDUCATION", + "ASSISTANT_PIE_OPEN_APP", + "ASSISTANT_PIE_AGGRESSIVE", + "ASSISTANT_PIE_HOMESCREEN_ENTRY_POINT", + "ROUTINES", + "ROUTINES_ALARM_DISMISSAL_TRIGGER_TIP", + "ROUTINES_CLOUD_EXECUTION_REPORT", + "ROUTINES_SCHEDULED_MANIFOLD", + "ROUTINES_LOCATION_TRIGGER", + "ROUTINES_LOCATION_NOTIFICATION", + "ROUTINES_SCHEDULED_ON_PHONE_NOTIFICATION", + "ROUTINES_TRIGGER_ON_MOBILE", + "ROUTINE_HOME_APP_CARDS", + "ROUTINES_DISABLE_COMMUTE_ACTION_TIP", + "ROUTINE_SPECIAL_NEWS_OPT_IN_TIP", + "ROUTINES_WFH_ROUTINE_TIP", + "ROUTINES_ELECTION_NEWS_OPT_IN_TIP", + "ROUTINE_ALARM_DISMISSAL_TRIGGER_NOT_TRIGGERED", + "ROUTINES_SCHEDULE_DISCOVERY", + "ROUTINES_PROMOTE_GM", + "ROUTINES_PROMOTE_GN", + "ROUTINES_PROMOTE_DISMISS_ALARM", + "FAMILY_BELL", + "IFTTT", + "LIVE_CARD_SETTINGS", + "LIVE_CARD_INSTALL_ASSISTANT", + "LIVE_CARD_DISCLOSURE", + "LIVE_CARD_TERMS_AND_CONDITIONS", + "LIVE_CARD_WEB_ANSWERS", + "LIVE_CARD_HEALTH", + "LIVE_CARD_NEWS", + "LIVE_CARD_RESERVE_HOTEL", + "LIVE_CARD_SHOPPING_SETTINGS", + "LIVE_CARD_SHOPPING_VIEW_CART", + "LIVE_CARD_MAPS_DIRECTIONS", + "LIVE_CARD_ATTRIBUTION", + "LIVE_CARD_HANDOFF_ACTIVITY", + "LIVE_CARD_HANDOFF_LINK_ACCOUNT", + "LIVE_CARD_HANDOFF_PLAY_STORE_PURCHASE", + "LIVE_CARD_KP_ANSWERS", + "LIVE_CARD_BLUELINK_TTS", + "LIVE_CARD_VOICE_RETRAIN", + "LIVE_CARD_ENABLE_PERSONAL_RESULTS", + "LIVE_CARD_ENABLE_DEVICE_CONTACTS", + "LIVE_CARD_INFORMATIONAL", + "LIVE_CARD_HELP_PAGES", + "LIVE_CARD_SHOPPING_LIST", + "LIVE_CARD_SPEEDDIAL_MISSING_CONTACT", + "LIVE_CARD_SPEEDDIAL_PROMO_UNVERIFIED_USER", + "LIVE_CARD_SPEEDDIAL_REMOVE_CONTACTS", + "LIVE_CARD_SPEEDDIAL_SHOW_CONTACTS", + "LIVE_CARD_REVIEW_SUMMARY", + "LIVE_CARD_LINE_SETTINGS", + "LIVE_CARD_LOCATE_DEVICE_NOTIFICATION_SETTINGS", + "LIVE_CARD_APP_INTERACTION_SETTINGS", + "SHARE_MEETING", + "SHARE_MEETING_LIVE_CARD", + "LINK_ZOOM", + "CREATE_DUO_GROUP", + "PRIVACY_ACTIONS", + "LIVE_CARD_FAMILY_BELL", + "LIVE_CARD_FAMILY_BELL_IOS", + "FAMILY_BELL_RING", + "FAMILY_BELL_GET_READY", + "THIRD_PARTY_ORDER_STATUS_UPDATE", + "THIRD_PARTY_ALERT", + "THIRD_PARTY_SUBSCRIPTION", + "THIRD_PARTY_SMART_DISPLAY_CARD", + "PROFILE_GRANT_NOTIFICATION", + "PROFILE_TELL_ME_MORE_NOTIFICATION", + "HOME_AUTOMATION_DEVICE_NOTIFICATION", + "CHANGE_DEFAULT_MEDIA_PROVIDER", + "DOWNLOAD_NOT_INSTALLED_PROVIDER", + "PROMOTE_PLAY_RADIO_ROUTINE", + "MEDIA_CROSS_DEVICE_PROMOTION", + "MEDIA_LINK_3P_PROVIDER_NOTIFICATION", + "MEDIA_PREFERRED_PODCAST_PROVIDER_NOTIFICATION", + "MEDIA_INITIATION", + "VOICE_DELIGHT_DELAYED_ACTION", + "WRAPPED_REMOTE_INTERACTION", + "ASYNC_INTERACTION", + "REENGAGEMENT_NOTIFICATION", + "BLUE_GINGER_RESPONSE", + "BLUE_GINGER_SURVEY", + "SMARTHOME_DOORBELL", + "SMARTHOME_ALARM", + "SMARTHOME_ASYNCHRONOUS", + "SMARTHOME_BROADCAST", + "SMARTHOME_FOLLOW_UP", + "SMARTHOME_PHONES", + "COMMUNICATION_MISSED_CALL", + "VUI_CONSENT_MISSING_DI", + "VUI_CONSENT_MISSING_THIRD_PARTY_DISCLOSURE", + "WEB_ANSWERS_NOTIFICATION", + "PERSONAL_INTELLIGENCE_NOTIFICATION", + "PERSONAL_INTELLIGENCE_LIVE_CARD", + "LENS_REMINDER", + "AUTOBOT_TRANSACTION", + "AUTOBOT_CSAT", + "IQS_NOTIFICATION", + "ASSISTANT_SURVEY", + "ASSISTANT_SURVEY_IMPORTANCE_MIN", + "ASSISTANT_SURVEY_PRIORITY_LOW", + "WHEREABOUTS_CHECKIN", + "TRAVEL_ASSISTANT_FLIGHT_CHECKIN", + "DIALER_AUTH", + "MODES_POI", + "HEADY_CONCISE_ANSWERS_ATTRIBUTION", + "HEADY_CONCISE_ANSWERS_EXPLORATION", + "HEADY_ELENCHUS_ATTRIBUTION", + "HEADY_ELENCHUS_EXPLORATION", + "HEADY_GENERATED_ANSWERS_ATTRIBUTION", + "HEADY_GENERATED_ANSWERS_EXPLORATION", + "HEADY_INTERACTIVE_QUESTIONS_ATTRIBUTION", + "HEADY_INTERACTIVE_QUESTIONS_EXPLORATION", + "HEADY_KP_DESCRIPTION_ATTRIBUTION", + "HEADY_KP_DESCRIPTION_EXPLORATION", + "HEADY_READ_WEBANSWER_ATTRIBUTION", + "HEADY_READ_WEBANSWER_EXPLORATION", + "HEADY_SMART_PUNTS_WEBANSWERS", + "HEADY_TELLMEMORE_ATTRIBUTION", + "HEADY_TELLMEMORE_EXPLORATION", + "HEADY_VOICE_SUGGESTIONS_ATTRIBUTION", + "HEADY_VOICE_SUGGESTIONS_EXPLORATION", + "HEADY_WEBANSWERS_LIST_ATTRIBUTION", + "HEADY_WEBANSWERS_LIST_EXPLORATION", + "COMMUNICATION_VIDEO_MESSAGE", + "HEALTH_ASSISTANT_ADD_GOAL_PARTNER", + "HEALTH_ASSISTANT_SUGGEST_GOAL_PARTNER", + "HEALTH_ASSISTANT_EDUCATIONAL", + "HEALTH_ASSISTANT_GOAL_REMINDER", + "HEALTH_ASSISTANT_WEATHER_REMINDER", + "HEALTH_ASSISTANT_GOAL_FOLLOWUP", + "HEALTH_ASSISTANT_ORGANIZATIONAL", + "HEALTH_ASSISTANT_WEEKLY_REPORT", + "HEALTH_ASSISTANT_WEEKLY_FEEDBACK", + "ASSISTANT_SPEAKERS_MOBILE_NOTIFICATION", + "ASSISTANT_SPEAKERS_ACTION_RENDER_HARD", + "ASSISTANT_SPEAKERS_CHURNOUT_ANSWER_OTHER", + "ASSISTANT_SPEAKERS_CHURNOUT_DEVICE_MEDIA_CONTROL", + "ASSISTANT_SPEAKERS_CHURNOUT_ALARM", + "ASSISTANT_SPEAKERS_CHURNOUT_LIST", + "ASSISTANT_SPEAKERS_CHURNOUT_PERSONALITY_CURATED_CONTENT", + "ASSISTANT_SPEAKERS_ONBOARD", + "ASSISTANT_SPEAKERS_ONBOARD_ANSWER", + "ASSISTANT_SPEAKERS_ONBOARD_VOLUME_CONTROL", + "ASSISTANT_SPEAKERS_ONBOARD_ALARM", + "ASSISTANT_SPEAKERS_ONBOARD_LIST", + "ASSISTANT_SPEAKERS_ONBOARD_JOKE", + "ASSISTANT_SPEAKERS_ONBOARD_ACTION_RENDER", + "ALARM_EXPIRATION", + "SCREENLESS_WCYD_PERSONALIZED_SUGGESTION_EXPLANATION_LIVECARD", + "FAMILY_SHARING", + "SUPPORT_ARTICLE", + "LOCKSCREEN_PERSONAL_RESULTS_SETTING", + "ASSISTANT_ON_LOCKSCREEN_SETTING", + "MULTI_DEVICE_NOTIFICATION_FEEDBACK", + "MULTI_DEVICE_FEEDBACK_CHIRP", + "DRAGONGLASS_SPORT_MODULE", + "DEVICES_PLATFORM", + "DRAGONGLASS_CONCIERGE_CARD", + "BLUE_STEEL_SETUP", + "ZEROSTATE_VIP_BIRTHDAY", + "ZEROSTATE_ANNIVERSARY", + "ZEROSTATE_OWN_BIRTHDAY", + "ZEROSTATE_VIP_BIRTHDAY_ONE_WEEK_BEFORE", + "ZEROSTATE_VIP_BIRTHDAY_ONE_DAY_BEFORE", + "ZEROSTATE_STARRED_CONTACT_BIRTHDAY_ONE_WEEK_BEFORE", + "ZEROSTATE_STARRED_CONTACT_BIRTHDAY_ONE_DAY_BEFORE", + "ZEROSTATE_OWN_BIRTHDAY_ONE_WEEK_BEFORE", + "ZEROSTATE_OWN_BIRTHDAY_ONE_DAY_BEFORE", + "ZEROSTATE_CALENDAR_ANNIVERSARY", + "ZEROSTATE_CALENDAR_VIP_BIRTHDAY_ONE_WEEK_BEFORE", + "ZEROSTATE_CALENDAR_VIP_BIRTHDAY_ONE_DAY_BEFORE", + "ASSISTANT_FAMILY_READ_ALONG", + "BEQUT", + "ASSISTJS_ACTIONS_LINKS", + "ZEROSTATE_INTEPRETER_DOWNLOAD_PACK", + "PROACTIVE_API", + "TRANSACTIONS_VOICE_MATCH_OPTIN", + "TRANSACTIONS_VOICE_MATCH", + "TRANSACTIONS_VOICE_MATCH_OPTIN_FOR_GAMES", + "LIVE_CARD_XTALK", + "DO_IT_AGAIN", + "DO_IT_AGAIN_WEATHER", + "DO_IT_AGAIN_GOOGLE_HOME", + "DO_IT_AGAIN_FREQUENT_ACTIONS", + "DO_IT_AGAIN_BOOSTED", + "DO_IT_AGAIN_CROSS_DEVICE", + "DO_IT_AGAIN_INITIAL", + "DO_IT_AGAIN_CONFIRMATION", + "SUBSCRIPTIONS_DO_IT_AGAIN", + "CALENDAR_MEETING_MISSING_ROOM", + "CALENDAR_NEWLY_ADDED_MEETING", + "FOOD_REORDERING", + "HEALTH_AND_FITNESS_MEDITATION", + "HEALTH_AND_FITNESS_SLEEP_COACHING", + "HEALTH_AND_FITNESS_WELLNESS_SETTING", + "ZEROSTATE_ON_MY_WAY_HOME", + "ZEROSTATE_ON_MY_WAY_HOME_DISCOVERY", + "SMART_DISPLAY_WEB_URL_CLICK", + "GEO_TRAFFIC_TO_PLACE", + "GEO_TIME_TO_LEAVE", + "GEO_TTL_CALENDAR_EVENT", + "GEO_TTL_RESERVED_RESTAURANT", + "GEO_TTL_RESERVED_SOCIAL_EVENT", + "GEO_TTL_FLIGHT_PASSENGER_DEPARTURE", + "GEO_AAP_GROCERY_STORE", + "GEO_AAP_BEAUTY_WELLNESS", + "GEO_AAP_RESTAURANT", + "GEO_AAP_TRANSIT", + "GEO_AAP_APP_RECOMMENDATIONS", + "GEO_AAP_HYBRID_HOTSEAT", + "GEO_AAP_LANDMARK", + "GEO_AAP_SHOPPING_CENTER", + "GEO_AAP_HOTEL", + "GEO_AAP_RESTAURANT_DEAL", + "GEO_AAP_CHAIN_DEAL", + "GEO_AAP_EXPERIMENT", + "APP_ACTIONS_SHORTCUTS", + "APP_ACTIONS_HEADSUP_NOTIFICATION", + "APP_ACTIONS_PERSONAL_INVENTORY_NOTIFICATION", + "WARM_WORDS_TRIGGERING_SURVEY", + "PHOX_NEW_MOVIE_RECOMMENDATION", + "PHOX_NEW_TASK_RECOMMENDATION", + "GSA_NLS_PERMISSION", + "UPDATE_STICKY_NOTES", + "INDIAN_PREMIER_LEAGUE_PROMO_CAMPAIGN", + "FELA_CAMPAIGN_INTRO", + "FELA_CAMPAIGN_REENGAGEMENT", + "FELA_CAMPAIGN_WON", + "LOBBY_HIGHLIGHTS", + "MORRIS_OOBE", + "MORRIS_OOBE_FROM_GMM_OPT_IN", + "MORRIS_OOBE_FROM_GMM_NOT_NOW", + "MORRIS_DRIVING_SCREEN_OOBE_NEW_USER", + "MORRIS_DRIVING_SCREEN_OOBE_ALL_PERMISSIONS", + "MORRIS_DRIVING_SCREEN_OOBE_AR_PERMISSION", + "MORRIS_DRIVING_SCREEN_OOBE_NA_PERMISSION", + "MORRIS_DRIVING_SCREEN_OOBE_BT_PERMISSION", + "MORRIS_DRIVING_SCREEN_AR", + "MORRIS_DRIVING_SCREEN_BT", + "MORRIS_MICRO", + "AAE_ENABLE_CONTACT_UPLOAD_PERMISSION", + "PHOX_OPTIN_DISCOVERABILITY", + "VM_UPGRADE_PUNT", + "INVITE_GUEST_USER", + "FAMILY_NUDGE_SHARED_REMINDERS", + "BIOGRAPHER_PROACTIVE", + "ASPIRE_REMINDER", + "ASPIRE_CONNECT", + "ASPIRE_CELEBRATE", + "PRIVACY_GROWTH", + "LOCATE_DEVICE", + "BIRTHDAY_COUNTDOWN", + "PROACTIVE_RECIPES", + "CUSTOM_PRONUNCIATION_CONTACT_NO_MATCH", + "CUSTOM_PRONUNCIATION_CALL_HANG_UP", + "AE_USER_ONBOARDING_NETFLIX", + "AE_USER_ONBOARDING_ZOOM", + "SNAPSHOT_MORNING_PROMO_CAMPAIGN", + "PROACTIVE_API_WHAT_CAN_YOU_DO", + "VOICE_ENROLLMENT_ON_DEVICE", + "ENABLE_ACCOUNT_AGENDA_QUERIES", + "CREATE_EVENT_EDUCATIONAL", + "ZEROSTATE_CONVERSATION_STARTERS", + "ZEROSTATE_REFRESH_MAGICAL", + "UNUSED_DEVICE_CLEANUP", + "REMOTE_VEHICLE_ACTION_SETUP_PROMOTION", + "FAMILY_NUDGE_ELVIS", + "AADC_MINOR_MOMENT", + "PAYMENTS_SETTINGS", + "SMARTSPACE_HOLIDAY_ALARMS", + "CROSS_DEVICE_TIMER", + "CROSS_DEVICE_TIMER_FCM_PING", + "MEMORY_AWARENESS", + "MEMORY_SHORTCUT", + "MEMORY_TAP_SAVE", + "SHELDON_DISCLOSURE", + "PROACTIVE_API_FASTTRACK", + "UNIT_TESTING" + ], + "enumDescriptions": [ + "", + "Support \"Send to device\" in assistant explore. See: go/assistant_explore_links_prd.", + "Reminders.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is deprecated. Use CROSS_SURFACE_TRANSACTIONS instead.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Smartspace notifications from the Assistant ZeroState.", + "Notifications from the Narrative News feature.", + "Notifications from broadcast feature. go/broadcast-design", + "", + "", + "", + "Notifications from Tell My Family feature. go/tell-my-family", + "Notification to allow Family managers to allow guest use by deeplinking to assistant settings. go/tell-my-family-allow-guest-notification", + "Notifications from Villager feature.", + "Subscriptions-specific types.", + "", + "", + "", + "", + "", + "", + "", + "Notifications that are sent just before we cancel an unused subscription of the user. See http://go/automatically-cancel-assistant-subscriptions for more information.", + "", + "", + "", + "", + "", + "Interest-based notifications.", + "If", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Pie notifications coming from various usecases.", + "", + "", + "", + "Notifications from the Routines feature.", + "", + "", + "Notifications from the Scheduled Routines feature with Manifold.", + "Notifications from the Location Based Routines Triggers feature.", + "", + "Notifications from Scheduled Routines on phone", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Notifications from IFTTT.", + "Live cards-specific types. Cards instructing the user to set up something in assistant-settings.", + "Cards instructing the user to install assistant.", + "Cards with terms of service / privacy policy which must be reviewed and acknowledged before continuing with the user's intent.", + "Cards with terms and conditions that aren't explicitly requested by the user, but which provide additional information relevant to the user's intent.", + "Cards with web answers to user questions.", + "Cards with information about health conditions.", + "Cards with news items.", + "Cards for reserving hotels.", + "Cards leading the user to Shopping settings.", + "Cards leading the user to their Shopping carts.", + "Cards with directions on Google Maps.", + "Cards showing the source of some content.", + "Cards representing all kinds of activities: go/agent-activity-api", + "Cards instructing the user to link a 3P account for handoffs.", + "Cards leading the user to complete digital purchases on their phones.", + "Cards with answers to KP queries.", + "Cards with bluelink sent by go/bluelink-tts.", + "Cards instructing the user to retrain their voice model.", + "Cards instructing the user to enable personal results.", + "Cards and notifications instructing the user to enable the \"contact info from your devices\" account flag.", + "A catch-all interaction type for live cards coming from Geppetto.", + "A live card that takes users to google help pages.", + "A live card that takes users to their shopping list.", + "A live card that links to Assistant Settings lets user add missing contacts to speed dial.", + "A live card that links to Assistant Settings lets user enable speed dial contacts, but with throttling (b/151226137, #6 in go/help-comm-punts).", + "A live card that links to Assistant Settings lets user delete speed dial contacts.", + "A live card that links to Assistant Settings lets user see the list of speed dial contacts.", + "Cards for review summary response.", + "Cards instructing the user to set up LINE settings for assistant interaction.", + "Cards instructing the user to turn on notification settings for GHA app on iPhone so that they could use Assistant to find the phone.", + "Cards for pointing users to the assistant app-integration settings.", + "Notifications with meeting information.", + "Cards with meeting information.", + "Notifications with Zoom linking instructions.", + "Cards for create duo group instruction.", + "Privacy actions notifications", + "Family Bell Live Card notifications", + "Family Bell Live Card notifications specifically for iOS", + "Notification to allow family bell to ring on mobile devices.", + "Get Ready Bell Card notification for Smart Displays", + "3P-specific notifications. Status updates for transactions.", + "Alerts.", + "Subscriptions.", + "Cards (push notifications to smart displays).", + "Notification resulted from user granting profile permission to 3P.", + "Notification resulted from user ask \"tell me more\" about profile grant.", + "Device notification for Home Automation: go/assistant-device-notifications.", + "Notification sent to notify users to change default media provider in Assistant Settings. See go/change-dmp-dd for more details.", + "", + "", + "Media specific notifications. Notification sent to promote Media Assistant on phones for existing Chirp/Jasper users. go/media-cross-device-promotion.", + "Notification sent to notify users link their 3p music account in Assistant Settings. See go/media-notif-link-3p-account for more details.", + "Notification sent to notify users to choose a preferred podcast provider in Assistant Settings. See b/159824581 for more details.", + "", + "A delayed action sent by voice delight.", + "An interaction sent to a remote device using a PushMessage.", + "An push message wrapping an interaction that's resulting from an asynchronous cloud execution. The resulting notification might have ui elements like buttons etc.", + "Notifications for re-engagement.", + "Notification sent when final answer ready for users' query on assistant.", + "Notification sent to users some time after service to do a survey.", + "", + "", + "", + "", + "", + "", + "Notification sent when the user missed a call on Dragonglass devices: go/missed-calls-on-jasper.", + "", + "", + "", + "", + "", + "", + "", + "", + "Notification for HomeIntelligenceService(IQS) go/iqs-notification-sink", + "", + "Deprecated! use ASSISTANT_SURVEY_PRIORITY_LOW Similar to ASSISTANT_SURVEY but used by Android TV to set android_tv_importance to IMPORTANCE_MIN.", + "Similar to ASSISTANT_SURVEY but used by Android TV to set android_tv_notification_priority to PRIORITY_LOW.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Notifications from Health Assistant. See go/assistant-notifications-for-health-assistant-prd.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Birthday notifications from the Assistant ZeroState.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Interpreter download pack notifications from the Assistant ZeroState.", + "", + "Notifications from AoG Transactions", + "Notifications from AoG Transactions placed using Voice Match.", + "Notifications from AoG Transactions triggered when users complete playing 3P games.", + "Cards showing the source of 3rd party content qouted in xTalk.", + "Do-It-Again notifications.", + "", + "", + "", + "", + "", + "These Do It Again interaction types are deprecated and exist only because small portion of users is still receiving the notifications they have set up in a live experiment.", + "", + "", + "", + "", + "", + "", + "", + "", + "On my way home notifications from the Assistant ZeroState.", + "On my way home discovery notifications.", + "", + "Traffic to place notifications (commute driving) from Maps. PRD(go/ga-notifications-prd)", + "Time to leave notifications from Maps. PRD(go/ga-notifications-prd)", + "Calendar event time to leave notifications from Maps. PRD(go/ga-notifications-prd)", + "Restaurant reservation Time to leave notifications from Maps. PRD(go/ga-notifications-prd)", + "Restaurant reservation Time to leave notifications from Maps. PRD(go/ga-notifications-prd)", + "Restaurant reservation Time to leave notifications from Maps. PRD(go/ga-notifications-prd)", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Notifications of the App Actions team for creating a app shortcut.", + "Notifications of the App Actions team to notify users about how to use the features of App Actions. PRD (go/app-integration-order-food) UX (go/app-integration-in-product-discovery)", + "Notifications of the App Actions team to notify users about the use of their personal on device data. Design doc: go/personal-inventory-notification UX: go/icing-notification-demo", + "Notification to get user feedback about warm words triggering.", + "Notification for a new movie recommendation found in photos.", + "Notification for a new task recommendation found in photos.", + "Notification to request GsaNotificationListener permission.", + "Notification to update the sticky notes cards on dragonglass.", + "", + "", + "", + "", + "", + "Notification to ask users to complete the Morris OOBE and use Morris in their next drive.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Notification to enable contact upload from paired device.", + "", + "", + "", + "", + "Notification to promote Assistant memory.", + "", + "", + "", + "", + "", + "Notification for Birthday Countdown on DragonGlass.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AADC.", + "", + "", + "", + "Temporary solution for sending empty notification as FCM ping", + "Memory/Stash go/memory-awareness-notification-prd", + "", + "", + "Notification for legally-required disclosure of Sheldon project. go/sheldon-notification-prd.", + "Notification configured through FastTrack UI: http://fasttrack.", + "NOTE: This should always stay at the bottom of the list." + ], + "type": "string" + }, + "attachment": { + "description": "OPTIONAL. Attachments associated with this Reminder. If the attachment has different behavior on different surfaces (e.g., deeplinks), specify multiple attachments here, and specify the surface types and links in the inner fields. There should be at most one attachment for each surface.", + "items": { + "$ref": "AssistantRemindersAttachment" + }, + "type": "array" + }, + "bareTitle": { + "description": "OPTIONAL. Populated only for assignable reminders (E.g. \"buy milk\"). It will be used in the post-execution card-rendering. If not poulated, i.e. in non-assignable mode, caller should fallback to use $title.", + "type": "string" + }, + "clientId": { + "description": "OPTIONAL. The reminders \"client\" id. This ID uniquely identifies a reminder instance and may be generated by any client that writes to our Reminder backend.", + "type": "string" + }, + "clientType": { + "$ref": "QualityDialogManagerReminderClientType", + "description": "REQUIRED. The type of this attachment. This is used for frontends (e.g., Hubpage) to customize UX. And also for customized VE logging." + }, + "createTime": { + "$ref": "AssistantApiDateTime", + "description": "OPTIONAL. The create time of this reminder. This field is propagated only for the reminders fetched from backend. " + }, + "createTimestamp": { + "description": "OPTIONAL. The create time of this reminder. This field is propagated only only for the reminders fetched from backend.", + "format": "google-datetime", + "type": "string" + }, + "creator": { + "$ref": "QualityActionsReminderPerson", + "description": "OPTIONAL. Creator of a reminder (owned by the current user). Used in shared reminder RUD operations." + }, + "customizedNotificationCard": { + "description": "OPTIONAL. Contains fields needed to build the customized notification card ", + "items": { + "$ref": "QualityActionsCustomizedNotification" + }, + "type": "array" + }, + "datetime": { + "$ref": "AssistantApiDateTime", + "description": "A representation of the Gregorian calendar date and timezone-relative time a reminder is scheduled for. This contains the date and time of either a single reminder or the upcoming instance of a recurring reminder." + }, + "description": { + "description": "OPTIONAL. Full-length description of the reminder.", + "type": "string" + }, + "id": { + "description": "DEPRECATED. Use `client_id` or `server_id` instead.", + "type": "string" + }, + "location": { + "$ref": "QualityActionsReminderLocation" + }, + "log": { + "$ref": "AssistantLogsReminderLog", + "description": "OPTIONAL. Associated logs to be plumbed through along with a reminder." + }, + "memoryPayload": { + "$ref": "AssistantRemindersMemoryPayload", + "description": "OPTIONAL. Memory record payload which is associated with this reminder. This will be set for all Assistant reminders created after the first launch of the Reminder Memory integration, see go/reminders-memory for more details. Also, this might apply to all other types of reminders." + }, + "notifying": { + "description": "OPTIONAL. True if the reminder is notifying on the device that is making the request to the server.", + "type": "boolean" + }, + "personalReferenceMetadata": { + "$ref": "CopleySourceTypeList", + "description": "OPTIONAL. Populated if the reminder is based off of a personal reference, e.g. [my hotel] when the user has a hotel reservation. Contains the information needed for suggestion chip attribution, e.g. a link back to the email reservation." + }, + "recipient": { + "$ref": "QualityActionsReminderPerson", + "description": "OPTIONAL. Recipient of a reminder (created by the current user). Used for shared reminder CRUD operations." + }, + "recurrence": { + "$ref": "QualityActionsReminderRecurrenceInfo" + }, + "serverId": { + "description": "OPTIONAL. The reminders backend \"server\" id. Only filled in some scenarios, e.g. to generate the reminders hubpage detailed-reminder view.", + "type": "string" + }, + "symbolicTime": { + "enum": [ + "UNSET", + "MORNING", + "AFTERNOON", + "EVENING", + "NIGHT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "title": { + "description": "REQUIRED. The main textual representation of the reminder with the final title. For assignable reminders, this would be e.g. \"From John: buy milk\".", + "type": "string" + }, + "updateTimestamp": { + "description": "OPTIONAL. The last updated time of this reminder. This field is propagated only for the reminders fetched from ARIS (go/aris-dd).", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsReminderLocation": { + "description": "A representation of reminder-triggering locations. They may be specific, resolved locations, non-specific location groups, or personal aliases. Next id: 12", + "id": "QualityActionsReminderLocation", + "properties": { + "categoryInfo": { + "$ref": "QualityActionsReminderLocationCategoryInfo" + }, + "chainInfo": { + "$ref": "QualityActionsReminderLocationChainInfo" + }, + "customLocationType": { + "description": "Optional additional information about the types of the custom location. This field is not stored in backend, and is only used to plumb NLP information to fulfillment UI.", + "enum": [ + "UNKNOWN_TYPE", + "BUSINESS", + "PLACE", + "ADDRESS" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "displayAddress": { + "description": "An address string that is suitable for displaying to the user in an application interface. It can be detailed, or brief. e.g. \"80 Absolute Ave, Unit 1708, Mississauga, ON\" e.g. \"151 Charles Street West\"", + "type": "string" + }, + "geoFeatureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "Filled if location_type is CUSTOM and this is a resolved instance of a business (not for specific address locations)." + }, + "lat": { + "format": "double", + "type": "number" + }, + "lng": { + "format": "double", + "type": "number" + }, + "locationType": { + "enum": [ + "UNKNOWN", + "HOME", + "WORK", + "CHAIN", + "CATEGORICAL", + "CUSTOM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "name": { + "description": "Descriptive name, e.g. \"43rd st new york\", a user-edited place name (e.g. \"Gym\"), or a reverse geocoded business name. This can be any string.", + "type": "string" + }, + "personalLocationMetadata": { + "$ref": "CopleySourceTypeList", + "description": "Deprecated in favor of Reminder.personal_reference_metadata." + }, + "ttsAddress": { + "description": "A localized, shortened version of the address, suitable for TTS. This originates in the LocationFrame.", + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsReminderLocationCategoryInfo": { + "description": "If LocationType is CATEGORICAL, this is info about the category. For example, the category \"Grocery Stores\" includes chains such as Safeway and Whole Foods.", + "id": "QualityActionsReminderLocationCategoryInfo", + "properties": { + "displayName": { + "description": "A (localized) display string describing the category. This is s generic string describing the category, and may be different than the term the user actually said, e.g. name: \"supermarket\", display_name: \"Grocery Stores\"", + "type": "string" + }, + "locationCategory": { + "enum": [ + "UNKNOWN_CATEGORY", + "GROCERY_STORES", + "ELECTRONICS_STORES", + "HARDWARE_STORES", + "PET_STORES", + "PHARMACIES", + "SHOPPING_CENTERS", + "SPORTING_GOODS_STORES", + "TOY_STORES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsReminderLocationChainInfo": { + "description": "If LocationType is CHAIN, this is info about the chain.", + "id": "QualityActionsReminderLocationChainInfo", + "properties": { + "chainMid": { + "description": "The freebase mid of the chain entity.", + "type": "string" + }, + "chainName": { + "description": "The geostore.NameProto.text (corresponding to the user's language) at the time of reminder creation. In most cases, this is the same as name, but there may be corner cases where they differ, e.g. name: \"bestbuy\", chain_name: \"Best Buy\".", + "type": "string" + }, + "featureId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The (corporate entity) chain's MapFacts feature id." + } + }, + "type": "object" + }, + "QualityActionsReminderPerson": { + "description": "A representation of a person other than the current user, who may have created the reminder for the current user, or will receive it from them.", + "id": "QualityActionsReminderPerson", + "properties": { + "displayName": { + "description": "REQUIRED. Their full name, which will be shown/spoken when referring to this person informally, e.g. \"You have 2 reminders from Dave Smith.\"", + "type": "string" + }, + "emailAddress": { + "description": "OPTIONAL. Their email address.", + "type": "string" + }, + "gaiaId": { + "description": "REQUIRED. Their gaia id (used by the backend for CRUD operations).", + "format": "int64", + "type": "string" + }, + "givenName": { + "description": "REQUIRED. Their given name, which will be shown/spoken when referring to this person informally, e.g. \"You have 2 reminders from Dave.\"", + "type": "string" + }, + "photoUrl": { + "description": "OPTIONAL. The URL of the photo. This field is read from photo field from go/people-api. Also see go/khdgk for URL formats. This field might be missing if user does not have photo URL available.", + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsReminderRecurrenceInfo": { + "description": "Recurrence rule for specifying time-based repeating reminders.", + "id": "QualityActionsReminderRecurrenceInfo", + "properties": { + "clientId": { + "description": "OPTIONAL. Client-assigned-id for the recurring reminder", + "type": "string" + }, + "recurrence": { + "$ref": "AssistantApiRecurrence", + "description": "The recurrence pattern." + }, + "recurrenceId": { + "description": "An id which uniquely identifies a recurrence series. ", + "type": "string" + }, + "serverId": { + "description": "REQUIRED. Server-assigned-id for the recurring reminder", + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsRingtone": { + "description": "Ringtone information used for the notification of timer and alarm.", + "id": "QualityActionsRingtone", + "properties": { + "pauseDuration": { + "$ref": "AssistantApiDuration", + "description": "The delay between each two sounds." + }, + "soundUrl": { + "description": "The sound urls will be used to play.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityActionsRoom": { + "description": "The room in which an alarm or timer resides", + "id": "QualityActionsRoom", + "properties": { + "homegraphId": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "QualityActionsTimer": { + "description": "Conceptually, timers are clocks that count down from an initial duration and notify 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.", + "id": "QualityActionsTimer", + "properties": { + "creationTime": { + "$ref": "AssistantApiTimestamp", + "description": "The time when this timer was created" + }, + "device": { + "$ref": "AssistantApiSettingsDeviceSettings", + "description": "Identifies the device this timer belongs to." + }, + "expireTime": { + "description": "When not paused: the time the timer is (or was) scheduled to expire, in milliseconds since the Unix epoch. This should be deprecated and replaced by the expire_timer_time with DateTime type once DateTime proto includes unix timestamp (b/63636831).", + "format": "int64", + "type": "string" + }, + "expireTimerTime": { + "$ref": "NlpSemanticParsingDatetimeDateTime", + "description": "This is currently being only used only for the response generation when the user describe the expired datatime as a search constraint. We will used it for everything else once that for filtering once DateTime proto includes unix timestamp (b/63636831) and expire_time is deprecated." + }, + "id": { + "description": "A string key used as an identifier to this timer, unique for a given Provider.", + "type": "string" + }, + "label": { + "description": "The label, provided by a user, associated with this timer.", + "type": "string" + }, + "lastUpdated": { + "$ref": "AssistantApiTimestamp", + "description": "The time when this timer was last updated (creation, paused, resumed, etc.)" + }, + "originalDuration": { + "description": "The duration of the timer when it was started, in milliseconds.", + "format": "int64", + "type": "string" + }, + "originalTimerDuration": { + "$ref": "NlpSemanticParsingDatetimeDuration", + "description": "The duration set for the timer. The DateTimeModifier field is ignored. This field is currently only experimental until we switch the Dialog code and gramnar to the new format." + }, + "provider": { + "$ref": "AssistantApiCoreTypesProvider", + "description": "The provider that owns this alarm. For Android, this includes the app that owns this alarm, where an intent should be sent to modify it." + }, + "remainingDuration": { + "description": "When PAUSED: the remaining duration in milliseconds.", + "format": "int64", + "type": "string" + }, + "remainingTimerDuration": { + "$ref": "NlpSemanticParsingDatetimeDuration", + "description": "The duration remained for the timer. This is needed because there is no expiration date for paused timer. The DateTimeModifier field is ignored. This field is currently only experimental until we switch the Dialog code and gramnar to the new format." + }, + "ringtone": { + "$ref": "QualityActionsRingtone", + "description": "The ringtone will be played when the timer fires, it will replace the beep sound if it is not empty." + }, + "ringtoneTaskMetadata": { + "$ref": "AssistantApiCoreTypesGovernedRingtoneTaskMetadata", + "description": "Ringtone Task Metadata information used to generate sound for firing the timer." + }, + "room": { + "$ref": "QualityActionsRoom", + "description": "Contains info about the room the timer is in" + }, + "status": { + "description": "The current status of the timer.", + "enum": [ + "UNKNOWN_TIMER_STATUS", + "RUNNING", + "PAUSED", + "EXPIRED", + "RESET" + ], + "enumDescriptions": [ + "", + "The timer is currently counting down.", + "The timer is currently paused.", + "The timer has expired (and has notified the user).", + "The timer is paused at its initial duration (countdown_state is not set)." + ], + "type": "string" + }, + "vibrate": { + "description": "Whether or not the device will vibrate when the timer fires.", + "type": "boolean" + } + }, + "type": "object" + }, + "QualityAuthorityTopicEmbeddingsVersionedItem": { + "description": "Proto populated into shards and copied to superroot. Message storing a versioned TopicEmbeddings scores. This is copied from TopicEmbeddings in docjoins.", + "id": "QualityAuthorityTopicEmbeddingsVersionedItem", + "properties": { + "pageEmbedding": { + "format": "byte", + "type": "string" + }, + "siteEmbedding": { + "description": "Compressed site/page embeddings.", + "format": "byte", + "type": "string" + }, + "siteFocusScore": { + "description": "Number denoting how much a site is focused on one topic.", + "format": "float", + "type": "number" + }, + "siteRadius": { + "description": "The measure of how far page_embeddings deviate from the site_embedding.", + "format": "float", + "type": "number" + }, + "versionId": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityCalypsoAppsLink": { + "id": "QualityCalypsoAppsLink", + "properties": { + "applicationId": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityCopiaFireflySiteSignal": { + "description": "Proto message containing site-level signal for search stack. Because firefly_stats.proto depends on \"//segindexer:compositedoc_proto\", we cannot make perdocdata contain it.", + "id": "QualityCopiaFireflySiteSignal", + "properties": { + "dailyClicks": { + "format": "int64", + "type": "string" + }, + "dailyGoodClicks": { + "format": "int64", + "type": "string" + }, + "dataTimeSec": { + "format": "int64", + "type": "string" + }, + "firstBoostedTimeSec": { + "format": "int64", + "type": "string" + }, + "impressionsInBoostedPeriod": { + "format": "int64", + "type": "string" + }, + "latestBylineDateSec": { + "format": "int64", + "type": "string" + }, + "latestFirstseenSec": { + "format": "int64", + "type": "string" + }, + "numOfArticles8": { + "format": "int64", + "type": "string" + }, + "numOfArticlesByPeriods": { + "description": "number of articles (lattice article score is 0.8 or more) sliced by 30 days (num_of_articles_by_periods[0] is the newest).", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "numOfGamblingPages": { + "format": "int64", + "type": "string" + }, + "numOfUrls": { + "format": "int64", + "type": "string" + }, + "numOfUrlsByPeriods": { + "description": "number of urls sliced by 30 days (num_of_urls_by_periods[0] is the newest).", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "recentImpForQuotaSystem": { + "format": "int64", + "type": "string" + }, + "siteFp": { + "description": "Hash value of the site. This will be used by our experiment and analysis.", + "format": "uint64", + "type": "string" + }, + "totalImpressions": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "QualityDialogManagerExternalIds": { + "description": "Various external IDs that we may have for a given LocalResult. These IDs can map to the corresponding result in other Google systems (KnowledgeGraph) or in third-party systems (OpenTable).", + "id": "QualityDialogManagerExternalIds", + "properties": { + "blueGingerSupportedServices": { + "$ref": "BlueGingerClientVisibleProtoBlueGingerSupportedServices", + "description": "This field tells us whether this LocalResult supports any of the services that Blue Ginger offers." + }, + "knowledgeGraphMid": { + "type": "string" + }, + "maddenSupportedActions": { + "$ref": "GeoOndemandAssistantSupportedActions", + "description": "Google-internal actions supported by go/madden for this LocalResult." + }, + "openTableRestaurantId": { + "type": "string" + } + }, + "type": "object" + }, + "QualityDialogManagerLocalIntentOptions": { + "id": "QualityDialogManagerLocalIntentOptions", + "properties": { + "intent": { + "description": "LINT.ThenChange( //depot/google3/googledata/nlp/generation/messages/assistant/\\ dialog_LOCAL_LocalAssistantSchema/\\ dialog.LOCAL.LocalAssistantSchema_zxx.genx.textpb, //depot/google3/quality/dialog_manager/verticals/local/assistant/\\ suggestion_chip_util.cc)", + "items": { + "enum": [ + "UNKNOWN", + "ADDRESS", + "CALL", + "DIRECTIONS", + "HOURS", + "INTERNAL_FOOD_ORDERING", + "NEXT", + "MENU", + "PHONE_NUMBER", + "RESERVATIONS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityDialogManagerLocalResult": { + "description": "A generic representation of a local result returned by a local backend. Next ID: 33", + "id": "QualityDialogManagerLocalResult", + "properties": { + "adminArea1": { + "description": "This field can represent different areas depending on the country. For example in the US it is state but in Canada it would be a province.", + "type": "string" + }, + "availableIntents": { + "$ref": "QualityDialogManagerLocalIntentOptions", + "description": "The set of available intents changes with result. An intersection of available_intents and allowed_intents (See: local_config.proto), is shown to the user." + }, + "businessType": { + "$ref": "NlpSemanticParsingLocalBusinessType", + "description": "Bitset of business types this result falls into. Many fields in this message may be unset - expect good coverage for restaurants and hotels for now, but not for other verticals." + }, + "country": { + "type": "string" + }, + "countryCode": { + "description": "The two-letter ISO 3166-1 country code of this result. Generated by FindFeatureCountryCode http://google3/geostore/base/public/country.h?l=39\u0026rcl=154898119 so it should always be populated, but technically there is no guarantee.", + "type": "string" + }, + "distanceMeters": { + "description": "For a directions result, this field will be the distance from the origin to this result using the best measure we have available - the distance along a route, if we have one, or just the crow's flight distance. For a local result, this field will be the crow's flight distance from the user to the result.", + "format": "uint64", + "type": "string" + }, + "distanceUnits": { + "description": "The standard units of the location where the user is based (not their current location). For example, miles for a user from the US, kilometers for the UK. A US user currently in the UK should have units read in miles.", + "enum": [ + "UNIT_UNKNOWN", + "UNIT_NONE", + "UNIT_DEGREES", + "UNIT_DEGREES_CELSIUS", + "UNIT_DEGREES_FAHRENHEIT", + "UNIT_DEGREES_KELVIN", + "UNIT_MILLISECONDS", + "UNIT_SECONDS", + "UNIT_MINUTES", + "UNIT_HOURS", + "UNIT_DAYS", + "UNIT_MILLIMETERS", + "UNIT_CENTIMETERS", + "UNIT_METERS", + "UNIT_YARDS", + "UNIT_KILOMETERS", + "UNIT_MILES", + "UNIT_SCANDINAVIAN_MILES", + "UNIT_METERS_PER_SECOND", + "UNIT_KILOMETERS_PER_HOUR", + "UNIT_MILES_PER_HOUR", + "UNIT_PERCENT", + "UNIT_FEET", + "UNIT_INCHES", + "UNIT_HOURS_MINUTES_SECONDS", + "UNIT_HOURS_MINUTES", + "UNIT_SPORTS_SCORE", + "UNIT_WEEKS", + "UNIT_MONTHS", + "UNIT_YEARS", + "UNIT_CALORIES", + "UNIT_DAYS_HOURS_MINUTES_SECONDS", + "UNIT_WEEKS_DAYS_HOURS_MINUTES_SECONDS", + "UNIT_ACRES", + "UNIT_SQUARE_MILES", + "UNIT_HECTARES", + "UNIT_SQUARE_KILOMETERS", + "UNIT_SQUARE_CENTIMETERS", + "UNIT_BAR", + "UNIT_KILOPASCAL", + "UNIT_PSI", + "UNIT_POUND", + "UNIT_KILOGRAM", + "UNIT_SHORT_TON", + "UNIT_LONG_TON", + "UNIT_METRIC_TON", + "UNIT_OUNCE", + "UNIT_GRAM" + ], + "enumDescriptions": [ + "", + "for scalar values", + "Temperature: \"unqualified degrees\", needed by GenX.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "US Mile", + "Scandinavian Mile, only supported for Scandinavian languages, through the measurement library (not through code).", + "", + "", + "US Mile/hour", + "", + "", + "", + "Compound unit that expresses a temporal duration in hours, minutes, and seconds. Used in conjunction with numeric_value expressed in seconds. Examples: numeric_value = 1 \"one second\" numeric_value = 2 \"two seconds\" numeric_value = 30 \"thirty seconds\" numeric_value = 59 \"fifty-nine seconds\" numeric_value = 60 \"one minute\" numeric_value = 61 \"one minute and one second\" numeric_value = 119 \"one minute and fifty-nine seconds\" numeric_value = 120 \"two minutes\" numeric_value = 121 \"two minute and one second\" numeric_value = 3599 \"fifty-nine minutes and fifty-nine seconds\" numeric_value = 3600 \"one hour\" numeric_value = 3601 \"one hour and one second\"", + "Compound unit that expresses a temporal duration in hours and minutes. seconds. Used in conjunction with numeric_value expressed in minutes. Examples: numeric_value = 1 \"one minute\" numeric_value = 2 \"two minutes\" numeric_value = 30 \"thirty minutes\" numeric_value = 59 \"fifty-nine minutes\" numeric_value = 60 \"one hour\" numeric_value = 61 \"one hour one minute\" numeric_value = 119 \"one hour fifty-nine minutes\" numeric_value = 120 \"two hours\" numeric_value = 121 \"two hours one minute\" numeric_value = 3599 \"fifty-nine hours fifty-nine minutes\"\"", + "Sports scores are generally just numbers, but sometimes these numbers need to be expressed in a certain format (for example, \"nil\" instead of \"zero\" for GB locales in EN). This unit allows this specialization, but otherwise acts as UNIT_NONE in practice.", + "", + "", + "", + "kCal (i.e. Big Calorie)", + "Similar to UNIT_HOURS_MINUTES_SECONDS, but with more headroom.", + "", + "", + "", + "", + "Surface areas.", + "", + "Pressure", + "", + "", + "Mass", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "externalIds": { + "$ref": "QualityDialogManagerExternalIds", + "description": "Various external IDs that we may have for this result." + }, + "featureType": { + "enum": [ + "UNKNOWN_TYPE", + "ESTABLISHMENT", + "GEOCODE_ADDRESS", + "GEOCODE_INTERSECTION", + "GEOCODE_ROUTE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "inUserAdminArea1": { + "description": "If true, this LocalResult is located in the same state as the user's location.", + "type": "boolean" + }, + "inUserCountry": { + "description": "If true, this LocalResult is located in the same country as the user's location.", + "type": "boolean" + }, + "inUserLocality": { + "description": "Whether this result is in the same city or town that the user is in.", + "type": "boolean" + }, + "internalFoodOrderingMetadata": { + "$ref": "LocalsearchProtoInternalFoodOrderingActionMetadata", + "description": "Internal Food ordering action (i.e food ordering via Google) metadata." + }, + "isBusinessChain": { + "description": "If the original query had a chain intent, and this result is for a business chain.", + "type": "boolean" + }, + "locality": { + "description": "City/Town.", + "type": "string" + }, + "name": { + "description": "The name of the result, extracted from its FeatureProto's name field.", + "type": "string" + }, + "neighborhood": { + "description": "Neighborhood within a city. This field is not likely to be set for towns or smaller cities.", + "type": "string" + }, + "resultId": { + "$ref": "NlpSemanticParsingLocalLocalResultId", + "description": "All info we will need to lookup this result in search." + }, + "streetName": { + "type": "string" + }, + "streetNumber": { + "type": "string" + }, + "synonym": { + "description": "A list of text synonyms the user could use to refer to the result.", + "items": { + "type": "string" + }, + "type": "array" + }, + "ttsAddress": { + "description": "The address of this result formatted for TTS output. This formatting removes acronyms like 2-letter state codes as they cannot be spoken well.", + "type": "string" + } + }, + "type": "object" + }, + "QualityDialogManagerReminderClientType": { + "description": "Define Reminder Client Type. This field is for the purposes of 1) UX Customization: Reminder frontends can be configured to have a slightly different UX (e.g., A customized button on Hubpage. A customized notification layout.) 2) Metrics: Client can count how many Reminders with a certain client type are retrieved/mutated. (e.g., VEIDs in go/oparaw.) 3) Index: ListReminder can list all Reminders with a certain client type. 4) Visibility control: some frontends (identified by provenance type, shortn/_xVC9nY2Eb8) only have access to a subset of client types.", + "id": "QualityDialogManagerReminderClientType", + "properties": { + "type": { + "enum": [ + "UNSPECIFIED", + "ASSISTANT", + "FORESIGHT", + "FORESIGHT_TAP_TO_PAYLOAD", + "NBA_ALL_STAR_VOTING", + "FORESIGHT_LONG_ANSWER", + "FORESIGHT_WHEN_IS", + "FORESIGHT_PORKY_PIG", + "NOTES_AND_LISTS_SUGGESTION_CHIP", + "FAMILY_NOTES", + "PEOPLE_INTELLIGENCE" + ], + "enumDescriptions": [ + "", + "A regular Assistant Reminder.", + "DEPRECATED. Foresight on WebAnswers callouts with a notification that leads to the Reminders Hub.", + "Foresight on WebAnswers callouts with a notification that leads to the Search payload (go/foresight-reminders-callout-launch-report).", + "", + "", + "", + "", + "", + "", + "People Intelligence reminders (go/cr-full)" + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityDniDocPreviewRestrictions": { + "description": "Set of per-document markup restrictions based on go/eucd-indexing-design. Used for EUCD and global preview compliance. Next ID: 17", + "id": "QualityDniDocPreviewRestrictions", + "properties": { + "bylineDateSecs": { + "description": "Publish date set by webmaster. See detailed description here: http://shortn/_1eC0zzjR7k. Note that this will currently only be set for canonical documents where byline date could be extracted.", + "format": "int64", + "type": "string" + }, + "crawlTsUsec": { + "description": "The time that the info in this attachment was computed during crawl, in microseconds.", + "format": "int64", + "type": "string" + }, + "extendedNewsPreviewsDomain": { + "$ref": "QualityDniExtendedNewsPreviews", + "description": "Whether this document comes from a domain that is affected by Extended News Previews (ENP) and its status (approved/rejected)." + }, + "faviconDisplay": { + "description": "Whether the favicon for a given domain should be displayed. FAVICON_DISPLAY_UNSPECIFIED - Display the favicon DISABLE_FAVICON - the favicon should not be rendered by the feature", + "enum": [ + "FAVICON_DISPLAY_UNSPECIFIED", + "DISABLE_FAVICON" + ], + "enumDescriptions": [ + "Not specified, no preview policy-related restrictions apply (but other restrictions like Fair Use still do). go/protodosdonts#do-include-an-unspecified-value-in-an-enum", + "Do not display the Favicon for the domain." + ], + "type": "string" + }, + "firstseenDateSecs": { + "description": "Firstseen date populated by indexing. It works as fallback to byline_date if it doesn't exist. Note that this will currently only be set for canonical documents where firstseen date could be populated.", + "format": "int32", + "type": "integer" + }, + "isAmp": { + "description": "Only be true when the page itself is an AMP page. For paired AMP, the canonical page will have this bit as false.", + "type": "boolean" + }, + "isEucdDomain": { + "type": "boolean" + }, + "maxSnippetLength": { + "description": "The max number of snippet characters allowed. Based on document markup. No limit if value is less than 0, Google could use any length of snippets. Default value 0 is the strictest restriction, to avoid violating mistakenly If not set, there is no snippet length policy to enforce. Features must first check has_max_snippet_length to avoid applying an overly strict policy.", + "format": "int32", + "type": "integer" + }, + "maxSnippetLengthFromPublisher": { + "description": "Same as the max_snippet_length, max_thumbnail_size, max_video_preview_secs listed above. But values are based on publisher's preferences from Search Console's robots meta tag tool.", + "format": "int32", + "type": "integer" + }, + "maxSnippetLengthPublisherDefault": { + "format": "int32", + "type": "integer" + }, + "maxThumbnailSize": { + "description": "The max thumbnail size allowed. Based on document markup Default value NONE is the strictest restriction, to avoid violating mistakenly. If not set, there is no thumbnail policy to enforce.", + "enum": [ + "THUMBNAIL_UNSPECIFIED", + "NONE", + "STANDARD", + "LARGE" + ], + "enumDescriptions": [ + "Not specified, no preview policy-related restrictions apply (but other restrictions like Fair Use still do).", + "Publisher explicitly requires a no-image treatment.", + "Translates to 50k pixels.", + "Translates to 300k pixels." + ], + "type": "string" + }, + "maxThumbnailSizeFromPublisher": { + "enum": [ + "THUMBNAIL_UNSPECIFIED", + "NONE", + "STANDARD", + "LARGE" + ], + "enumDescriptions": [ + "Not specified, no preview policy-related restrictions apply (but other restrictions like Fair Use still do).", + "Publisher explicitly requires a no-image treatment.", + "Translates to 50k pixels.", + "Translates to 300k pixels." + ], + "type": "string" + }, + "maxThumbnailSizePublisherDefault": { + "format": "int32", + "type": "integer" + }, + "maxVideoPreviewSecs": { + "description": "The max seconds of video preview allowed. Based on document markup. No limit if value is less than 0, Google could show any seconds of video. Default value 0 is the strictest restriction, to avoid violating mistakenly If not set, there is no preview length policy to enforce. Features must first check has_max_video_preview_secs to avoid applying an overly strict policy.", + "format": "int32", + "type": "integer" + }, + "maxVideoPreviewSecsFromPublisher": { + "format": "int32", + "type": "integer" + }, + "maxVideoPreviewSecsPublisherDefault": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityDniExtendedNewsPreviews": { + "description": "When making changes to this proto, make sure to run: blaze test commerce/datastore/tools/codegen:code_generator_test blaze run commerce/datastore/tools/codegen:code_generator See http://go/cds-schema-council for details. LINT.IfChange", + "id": "QualityDniExtendedNewsPreviews", + "properties": { + "countryCode": { + "description": "Publisher's country code (ISO-3166) Used in V0.", + "enum": [ + "UNKNOWN_TWO_CHARACTER_COUNTRY_CODE", + "AD", + "AE", + "AF", + "AG", + "AI", + "AL", + "AM", + "AN", + "AO", + "AQ", + "AR", + "AS", + "AT", + "AU", + "AW", + "AX", + "AZ", + "BA", + "BB", + "BD", + "BE", + "BF", + "BG", + "BH", + "BI", + "BJ", + "BL", + "BM", + "BN", + "BO", + "BQ", + "BR", + "BS", + "BT", + "BV", + "BW", + "BY", + "BZ", + "CA", + "CC", + "CD", + "CF", + "CG", + "CH", + "CI", + "CK", + "CL", + "CM", + "CN", + "CO", + "CR", + "CS", + "CU", + "CV", + "CW", + "CX", + "CY", + "CZ", + "DE", + "DJ", + "DK", + "DM", + "DO", + "DZ", + "EC", + "EE", + "EG", + "EH", + "ER", + "ES", + "ET", + "EU", + "FI", + "FJ", + "FK", + "FM", + "FO", + "FR", + "FX", + "GA", + "GB", + "GD", + "GE", + "GF", + "GG", + "GH", + "GI", + "GL", + "GM", + "GN", + "GP", + "GQ", + "GR", + "GS", + "GT", + "GU", + "GW", + "GY", + "HK", + "HM", + "HN", + "HR", + "HT", + "HU", + "ID", + "IE", + "IL", + "IM", + "IN", + "IO", + "IQ", + "IR", + "IS", + "IT", + "JE", + "JM", + "JO", + "JP", + "KE", + "KG", + "KH", + "KI", + "KM", + "KN", + "KP", + "KR", + "KW", + "KY", + "KZ", + "LA", + "LB", + "LC", + "LI", + "LK", + "LR", + "LS", + "LT", + "LU", + "LV", + "LY", + "MA", + "MC", + "MD", + "ME", + "MF", + "MG", + "MH", + "MK", + "ML", + "MM", + "MN", + "MO", + "MP", + "MQ", + "MR", + "MS", + "MT", + "MU", + "MV", + "MW", + "MX", + "MY", + "MZ", + "NA", + "NC", + "NE", + "NF", + "NG", + "NI", + "NL", + "NO", + "NP", + "NR", + "NU", + "NZ", + "OM", + "PA", + "PE", + "PF", + "PG", + "PH", + "PK", + "PL", + "PM", + "PN", + "PR", + "PS", + "PT", + "PW", + "PY", + "QA", + "RE", + "RO", + "RS", + "RU", + "RW", + "SA", + "SB", + "SC", + "SD", + "SE", + "SG", + "SH", + "SI", + "SJ", + "SK", + "SL", + "SM", + "SN", + "SO", + "SR", + "SS", + "ST", + "SV", + "SX", + "SY", + "SZ", + "TC", + "TD", + "TF", + "TG", + "TH", + "TJ", + "TK", + "TL", + "TM", + "TN", + "TO", + "TR", + "TT", + "TV", + "TW", + "TZ", + "UA", + "UG", + "UK", + "UM", + "US", + "UY", + "UZ", + "VA", + "VC", + "VE", + "VG", + "VI", + "VN", + "VU", + "WF", + "WS", + "YE", + "YT", + "YU", + "ZA", + "ZM", + "ZW", + "ZZ", + "NORDICS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "desnippetedCountryCode": { + "description": "List of countries that desnippet the publisher. ISO 3166-1-alpha-2 country code (such as FR). See go/iiuse#region-identifiers. Used in V1.", + "items": { + "type": "string" + }, + "type": "array" + }, + "policyCriteriaBase64": { + "description": "Search Console Signals that modifies how policy are calculated. Didn't add `wmconsole.EnpDesnippetingOverrideRules` direcly to avoid cicular dependency issue: go/enp-v2#bookmark=id.dvb1qcltabv9 ENPv2 proto (EnpDesnippetingOverrideRules): google3/crawler/wmconsole/proto/config_enp_desnippeting_override_rules.proto", + "type": "string" + }, + "status": { + "description": "ENP status.", + "enum": [ + "STATUS_UNSPECIFIED", + "GOOGLE_DEFAULT", + "DEPRECATED_DO_NOT_USE_SHOW_SNIPPET_5", + "ENP_REJECTED", + "DEPRECATED_DO_NOT_USE_DESNIPPET_6", + "INELIGIBLE_DOMAIN", + "QA_DESNIPPET", + "SHOW_SNIPPET", + "DESNIPPET" + ], + "enumDescriptions": [ + "go/protodosdonts#do-include-an-unspecified-value-in-an-enum", + "ENP accepted or pending state, no preview restrictions and can be overridden by robots meta-tag. Deprecation note: has been replaced for V1's `SHOW_SNIPPET` status", + "Reserving old value to make F1 schema happy.", + "Publisher rejected ENP - no snippets, no markup override. Deprecation note: has been replaced for V1's `DESNIPPET` status", + "Reserving old value to make F1 schema happy.", + "Domain not found in the list. Not eligible for more processing. This could behave in the same manner as the GOOGLE_DEFAULT option, but allows for separation of assumptions if need be. Deprecation note: check for status code `kNotFound` to avoid creating an ENP proto when is not needed.", + "This state is only used for QA/testing purposes. Deprecation node: testing phase is over. Do not use.", + "Similar to GOOGLE_DEFAULT - used in V1.", + "Similar to ENP_REJECTED - used in V1." + ], + "type": "string" + }, + "version": { + "description": "The default version is V0 (for backward compatibility).", + "enum": [ + "VERSION_UNSPECIFIED", + "V0", + "V1", + "V2" + ], + "enumDescriptions": [ + "go/protodosdonts#do-include-an-unspecified-value-in-an-enum", + "The fields that will be used: status and country_code. go/enp-v0", + "The fields that will be used: status and desnippeted_country_code go/enp-v1", + "go/enp-v2" + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityFringeFringeQueryPriorPerDocData": { + "description": "PerDocData for fringe-query-prior (built into the shards for eventual consumption at Fringe classification time). Not stored in DocJoins. NEXT ID: 11", + "id": "QualityFringeFringeQueryPriorPerDocData", + "properties": { + "encodedCalibratedFringeSitePriorScore": { + "format": "uint32", + "type": "integer" + }, + "encodedChardXlqHoaxPrediction": { + "description": "An encoding of the Chard XLQ-hoax prediction in [0,1].", + "format": "uint32", + "type": "integer" + }, + "encodedChardXlqYmylPrediction": { + "description": "An encoding of the Chard XLQ-YMYL prediction in [0,1].", + "format": "uint32", + "type": "integer" + }, + "encodedDocumentFringeVulnerability": { + "description": "An estimate of the vulnerability of this doc to show fringe content, based on the context around the document. Can be interpreted as a 'safe' QScore threshold to use (see go/doc-fringe-vulnerability for more info). Encoded for compactness and to restrict visibility. Please contact fringe-ranking@ to get access to quality_fringe::DocumentFringeVulnerabilityEncoding to decode this field.", + "format": "uint32", + "type": "integer" + }, + "encodedEntityPriorScore": { + "description": "Highest entity prior seen for document's Headline and SingleTopic entities (see go/topicality-score for definitions of entity topicalities). Represents probability that a query is fringe, given that the entity is in the result set with topicality \u003e= Headline. Scores scaled to integers between 0 and 1000 for compactness. Scores must be interpreted through FringeQueryPriorEncoding::Decode API.", + "format": "uint32", + "type": "integer" + }, + "encodedFringePriorScore": { + "description": "Probability that a query is fringe, given this document is in the result set. Scores scaled to integers between 0 and 1000 for compactness. Scores must be interpreted through FringeQueryPriorEncoding::Decode API.", + "format": "uint32", + "type": "integer" + }, + "encodedFringeSitePriorScore": { + "description": "Probability that a query is fringe, given this document's site is in the result set. Scores scaled to integers between 0 and 1000 for compactness. Scores must be interpreted through FringeQueryPriorEncoding::Decode API.", + "format": "uint32", + "type": "integer" + }, + "encodedFringeSitePriorScoreForQfsTraining": { + "description": "Probability that a query is fringe, given this document's site is in the result set. Does not use signals with a dependency on the QueryFringeScore of a document. Scores scaled to integers between 0 and 1000 for compactness. Scores must be interpreted through FringeQueryPriorEncoding::Decode API. Will NOT be present if the fringe_site_prior_score_for_qfs_training is not significantly different from the site_prior_score.", + "format": "uint32", + "type": "integer" + }, + "encodedPredictedXlqScoreAndConfidence": { + "description": "A combined encoding of the pXLQ score in [0,1] and the confidence with which that score should be interpreted in [0,1].", + "format": "uint32", + "type": "integer" + }, + "encodedProximityScore": { + "description": "A score in [0, 1] representing the similarity of this doc to known fringe-vulnerable 'seeds'. See go/fringe-proximity for more information. Encoded for compactness and to restrict visibility.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityGenieComplexQueriesComplexQueriesOutputRewrite": { + "id": "QualityGenieComplexQueriesComplexQueriesOutputRewrite", + "properties": { + "entities": { + "items": { + "$ref": "QualityGenieComplexQueriesComplexQueriesOutputRewriteEntity" + }, + "type": "array" + }, + "rewriteType": { + "enum": [ + "UNKNOWN", + "SIMPLE_SPLIT_LOW_CONFIDENCE", + "SIMPLE_SPLIT", + "COMPLEX_SPLIT_LOW_CONFIDENCE", + "COMPLEX_SPLIT_HIGH_CONFIDENCE", + "COMPARATIVE", + "HARDCODED_SPLIT_BY_REGEX" + ], + "enumDescriptions": [ + "", + "E.g. A query where we are unsure if we should split.", + "E.g. \"Set a timer for 3 minutes and set a timer for 6 minutes\".", + "E.g. \"Set a timer for 3 and for 6 minutes\".", + "E.g. \"Set a timer for 3 minutes and a timer for 6 minutes\".", + "E.g. \"Who is older Barack Obama or Justin Bieber\".", + "E.g. \"Play Madonna at volume 5\"." + ], + "type": "string" + }, + "textualRewrite": { + "type": "string" + } + }, + "type": "object" + }, + "QualityGenieComplexQueriesComplexQueriesOutputRewriteEntity": { + "id": "QualityGenieComplexQueriesComplexQueriesOutputRewriteEntity", + "properties": { + "mid": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "QualityGeoBrainlocBrainlocAttachment": { + "description": "Compressed version of quality_geo_brainloc.goldmine.BrainlocAnnotation for indexing. (See BrainlocAnnotation for detailed documentation.) Next ID: 10", + "id": "QualityGeoBrainlocBrainlocAttachment", + "properties": { + "brainlocVersion": { + "format": "int32", + "type": "integer" + }, + "topCitiesRawScores": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "topCitiesVocabIds": { + "description": "Compressed top locations and their scores. *Locations are stored using their model vocab IDs. *Location scores are stored using 14 bits of precision (2 bytes).", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "topCountiesRawScores": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "topCountiesVocabIds": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "topCountriesRawScores": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "topCountriesVocabIds": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "topStatesRawScores": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "topStatesVocabIds": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityLabelsGoogleLabelData": { + "id": "QualityLabelsGoogleLabelData", + "properties": { + "label": { + "items": { + "$ref": "QualityLabelsGoogleLabelDataLabel" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityLabelsGoogleLabelDataLabel": { + "id": "QualityLabelsGoogleLabelDataLabel", + "properties": { + "confidence": { + "description": "If global_label_value is present, confidence is ignored. confidence is DEPRECATED.", + "format": "float", + "type": "number" + }, + "globalLabelBucket": { + "description": "A byte-size value representing 64 * (1 + global_label_value). Use this instead of global_label_value to save on label storage. See quality_prose::LabelValueToBucket() for more info.", + "format": "int32", + "type": "integer" + }, + "globalLabelValue": { + "format": "float", + "type": "number" + }, + "labelId": { + "description": "At least one of label_id and label_name must be filled in", + "format": "int32", + "type": "integer" + }, + "labelName": { + "type": "string" + }, + "provider": { + "items": { + "$ref": "QualityLabelsGoogleLabelDataLabelProvider" + }, + "type": "array" + }, + "providerId": { + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityLabelsGoogleLabelDataLabelProvider": { + "description": "If Provider group is not present the provider is the legacy classifiers (with id 0) and the label_value provided by Google is the global_label_value.", + "id": "QualityLabelsGoogleLabelDataLabelProvider", + "properties": { + "feed": { + "description": "This field is intended to be deprecated. If id == 0 and feed is true it means this label is from a feed. If id == 0 and feed is false, this label is from \"Google\" If id != 0, feed is meaningless.", + "type": "boolean" + }, + "id": { + "description": "We are currently using this field to indicate an id of the set of classifiers that produced this label. This deviates from the original intention. Also see ClassifierDescription and refer to http://go/genre-labels-provider-id for further info.", + "format": "uint64", + "type": "string" + }, + "labelBucket": { + "description": "A byte-size value representing 64 * (1 + global_label_value). Use it instead of global_label_value to save on label storage.", + "format": "int32", + "type": "integer" + }, + "labelValue": { + "format": "float", + "type": "number" + }, + "name": { + "description": "This name will only sometimes be filled in! Frontends can in general expect this to be filled in, but it will not usually be stored in backends.", + "type": "string" + } + }, + "type": "object" + }, + "QualityNavboostCrapsAgingData": { + "id": "QualityNavboostCrapsAgingData", + "properties": { + "lastMonthBucket": { + "$ref": "QualityNavboostCrapsAgingDataAgingAgeBucket", + "description": "Documents with byline date younger than month at the event time." + }, + "lastWeekBucket": { + "$ref": "QualityNavboostCrapsAgingDataAgingAgeBucket", + "description": "Documents with byline date younger than week at the event time." + }, + "lastYearBucket": { + "$ref": "QualityNavboostCrapsAgingDataAgingAgeBucket", + "description": "Documents with byline date younger than year at the event time." + }, + "yearPlusBucket": { + "$ref": "QualityNavboostCrapsAgingDataAgingAgeBucket", + "description": "Documents with byline date older than year at the event time." + } + }, + "type": "object" + }, + "QualityNavboostCrapsAgingDataAgingAgeBucket": { + "id": "QualityNavboostCrapsAgingDataAgingAgeBucket", + "properties": { + "goodClicks": { + "format": "float", + "type": "number" + }, + "impressions": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityNavboostCrapsCrapsClickSignals": { + "description": "Click / impression signals for craps. The tag numbers are the same as they were in the original CrapsData (below). This is deliberate.", + "id": "QualityNavboostCrapsCrapsClickSignals", + "properties": { + "absoluteImpressions": { + "description": "Thus far this field is only used for host level unsquashed impressions. When compressed (e.g., in perdocdata.proto, CompressedQualitySignals), this value is represented individually and thus is generally incompatible with the other values which are compressed as click-ratios.", + "format": "double", + "type": "number" + }, + "badClicks": { + "format": "double", + "type": "number" + }, + "clicks": { + "format": "double", + "type": "number" + }, + "goodClicks": { + "format": "double", + "type": "number" + }, + "impressions": { + "format": "double", + "type": "number" + }, + "lastLongestClicks": { + "format": "double", + "type": "number" + }, + "unsquashedClicks": { + "description": "This is not being populated for the current format - instead two instances of CrapsClickSignals (squashed/unsquashed) are used. We are migrating to the new format where this field will be populated.", + "format": "double", + "type": "number" + }, + "unsquashedImpressions": { + "description": "This is not being populated for the current format - instead two instances of CrapsClickSignals (squashed/unsquashed) are used. We are migrating to the new format where this field will be populated.", + "format": "double", + "type": "number" + }, + "unsquashedLastLongestClicks": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "QualityNavboostCrapsCrapsData": { + "description": "NEXT TAG: 27", + "id": "QualityNavboostCrapsCrapsData", + "properties": { + "agingCounts": { + "$ref": "QualityNavboostCrapsAgingData", + "description": "Contains counter for Aging signal (go/freshness-aging). It's used internally by Craps/Aging pipeline." + }, + "badClicks": { + "format": "double", + "type": "number" + }, + "clicks": { + "format": "double", + "type": "number" + }, + "country": { + "description": "The two-letter uppercase country slice of the CrapsData. Examples: \"US\", \"FR\", \"BR\"", + "type": "string" + }, + "device": { + "$ref": "QualityNavboostCrapsCrapsDevice", + "description": "The device interface and os slice of the CrapsData." + }, + "features": { + "description": "Contains CrapsClickSignals for specific features. (i.e. for mobile, US, metro id - 123\")", + "items": { + "$ref": "QualityNavboostCrapsFeatureCrapsData" + }, + "type": "array" + }, + "goodClicks": { + "format": "double", + "type": "number" + }, + "impressions": { + "description": "These fields may become legacy fields; we may retire them and use the squashed field (below) instead, to allow for some nesting.", + "format": "double", + "type": "number" + }, + "language": { + "description": "The language slice of the CrapsData. Examples: \"en\", \"fr\", \"pt-BR\",", + "type": "string" + }, + "lastLongestClicks": { + "description": "The number of clicks that were last and longest in related user queries.", + "format": "double", + "type": "number" + }, + "mobileData": { + "$ref": "QualityNavboostCrapsCrapsData", + "description": "DO NOT USE: Use the above mobile_signals fields instead. DO NOT REMOVE: Field is present in legacy protos in golden tests." + }, + "mobileSignals": { + "$ref": "QualityNavboostCrapsCrapsClickSignals", + "description": "The portion of this CrapsData aggregated on data from tier 1/2 mobile interfaces in QSessions." + }, + "packedIpAddress": { + "description": "Contains a packed string in network byte order, as expected by CrapsIpPrior. Only populated if we looked up the ip_prior_bad_fraction at retrieval time.", + "format": "byte", + "type": "string" + }, + "patternLevel": { + "description": "Level of pattern. More general patterns get higher values. For URL patterns this field = 0. For example, if we have \"http://abc.def.ghi/xyz.html\" level 0 pattern will be \"http://abc.def.ghi/xyz.html\" level 1 pattern will be \"p://abc.def.ghi\" level 2 pattern will be \"p://def.ghi\"", + "format": "int32", + "type": "integer" + }, + "patternSccStats": { + "$ref": "QualityNavboostCrapsStatsWithWeightsProto", + "description": "For pattern data, this will contain stats of the SCC's of the individual urls contributing to the pattern." + }, + "query": { + "type": "string" + }, + "sliceTag": { + "description": "This field can be used by the craps pipeline to slice up signals by various attributes such as device type, country, locale etc. The slice_tag can be an arbitrary string, and the CrapsData values for each slice_tag are aggregated separately, together with the default empty slice_tag.", + "type": "string" + }, + "squashed": { + "$ref": "QualityNavboostCrapsCrapsClickSignals", + "description": "Not used yet - we will probably move the impressions / clicks / good_clicks bad clicks / last longest clicks into here from top level, and rename those fields to legacy." + }, + "unscaledIpPriorBadFraction": { + "description": "Used to assign a prior based on IP address. See quality/navboost/craps/craps-ip-prior.h. This value is prior to the linear transformation (scaling / offset / min / max) that's applied in craps-penalty.cc.", + "format": "double", + "type": "number" + }, + "unsquashed": { + "$ref": "QualityNavboostCrapsCrapsClickSignals", + "description": "We will start using this one for the retuning rollout." + }, + "unsquashedMobileSignals": { + "$ref": "QualityNavboostCrapsCrapsClickSignals" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "QualityNavboostCrapsCrapsDevice": { + "description": "CrapsDevice has the gws interface, gws tier and operating system for events from QSessions.", + "id": "QualityNavboostCrapsCrapsDevice", + "properties": { + "os": { + "enum": [ + "DEVICE_OS_UNKNOWN", + "DEVICE_OS_OTHER", + "DEVICE_OS_WINDOWS", + "DEVICE_OS_OSX", + "DEVICE_OS_LINUX", + "DEVICE_OS_ANDROID", + "DEVICE_OS_IOS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "uxInterface": { + "description": "An enum taken from GWSLogEntryProto that indicates what type of device a request came from. This includes an entry for DESKTOP(1), MOBILE(2), and TABLET(3) devices. Reference: - gwslog(608): GWSLogEntryProto.ux_interface", + "format": "int32", + "type": "integer" + }, + "uxTier": { + "description": "Indicates the device browser tier for the given request. 1 means modern browsers, 3 means very old browsers, and 2 is everything in the middle. See Reference: - gwslog(609): GWSLogEntryProto.ux_tier", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityNavboostCrapsFeatureCrapsData": { + "id": "QualityNavboostCrapsFeatureCrapsData", + "properties": { + "country": { + "description": "Country, like \"us\". If not present, it's an aggregation for all countries. This is the same format as one used in Glue.", + "type": "string" + }, + "device": { + "description": "Device, like \"m\". If not present, it's an aggregation for all devices. \"m\" - mobile devices. \"d\" - destop devices.", + "type": "string" + }, + "language": { + "description": "Language, like \"en\". If not present, it's an aggregation for all languages. This is the same format as one used in Glue.", + "type": "string" + }, + "locationId": { + "description": "Location id for metro and city. If not present, it's an aggregation for all locations within current country.", + "format": "int32", + "type": "integer" + }, + "signals": { + "$ref": "QualityNavboostCrapsCrapsClickSignals", + "description": "CRAPS Signals for the locale." + } + }, + "type": "object" + }, + "QualityNavboostCrapsStatsWithWeightsProto": { + "id": "QualityNavboostCrapsStatsWithWeightsProto", + "properties": { + "hi": { + "format": "double", + "type": "number" + }, + "kind": { + "format": "int32", + "type": "integer" + }, + "lo": { + "format": "double", + "type": "number" + }, + "mean": { + "format": "double", + "type": "number" + }, + "median": { + "format": "double", + "type": "number" + }, + "n": { + "format": "int32", + "type": "integer" + }, + "pc10": { + "format": "double", + "type": "number" + }, + "pc25": { + "format": "double", + "type": "number" + }, + "pc75": { + "format": "double", + "type": "number" + }, + "pc90": { + "format": "double", + "type": "number" + }, + "stdError": { + "format": "double", + "type": "number" + }, + "stddev": { + "format": "double", + "type": "number" + }, + "varOfMean": { + "format": "double", + "type": "number" + }, + "variance": { + "format": "double", + "type": "number" + }, + "weightedN": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "QualityNsrExperimentalNsrTeamData": { + "description": "Experimental NsrTeam data. This is a proto containing versioned signals which can be used to run live experiments. This proto will not be propagated to MDU shards, but it will be populated at query time by go/web-signal-joins inside the CompressedQualitySignals subproto of PerDocData proto. See go/0DayLEs for the design doc. Note how this is only meant to be used during LEs, it should *not* be used for launches.", + "id": "QualityNsrExperimentalNsrTeamData", + "properties": { + "versionedSignals": { + "items": { + "$ref": "QualityNsrExperimentalNsrTeamScoringSignal" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityNsrExperimentalNsrTeamScoringSignal": { + "description": "The versioned signals used by the ExperimentalNsrTeamData proto.", + "id": "QualityNsrExperimentalNsrTeamScoringSignal", + "properties": { + "valueBool": { + "type": "boolean" + }, + "valueDouble": { + "format": "double", + "type": "number" + }, + "valueFloat": { + "format": "float", + "type": "number" + }, + "valueInt32": { + "format": "int32", + "type": "integer" + }, + "valueUint32": { + "format": "uint32", + "type": "integer" + }, + "versionId": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityNsrExperimentalNsrTeamWSJData": { + "description": "This is a wrapper needed for the WSJ corpus. We want the WSJ RPCs to inject both the experimental_data and the keys, and as of June 2022 these need to be first level members of the proto.", + "id": "QualityNsrExperimentalNsrTeamWSJData", + "properties": { + "experimentalNsrTeamData": { + "$ref": "QualityNsrExperimentalNsrTeamData" + }, + "lookupKey": { + "description": "The key used to lookup this data in the WSJ corpus. The WSJ data is sitechunk-level, however the documents in the MDU shards are simply urls. WSJ does a mapping from url -\u003e {primary_chunk, secondary, fallbacks, etc.} and retrieves all the keys from the corpus. This lookup key field will keep track of which key was used for this particular lookup.", + "type": "string" + } + }, + "type": "object" + }, + "QualityNsrNSRVersionedData": { + "description": "Versioned NSR score data.", + "id": "QualityNsrNSRVersionedData", + "properties": { + "value": { + "description": "The corresponding NSR value.", + "format": "float", + "type": "number" + }, + "versionId": { + "description": "The unique id of the version, preferably just scaled: 19.1 x 10 = 191.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityNsrNsrData": { + "description": "NOTE: When adding a new field to be propagated to Raffia check if NsrPatternSignalSpec needs to be updated. Next ID: 31", + "id": "QualityNsrNsrData", + "properties": { + "articleScore": { + "description": "Score from article classification of the site.", + "format": "float", + "type": "number" + }, + "articleScoreV2": { + "format": "float", + "type": "number" + }, + "clusterId": { + "description": "An id for defining clusters of sites. Used in ecosystem experiments (project Tundra).", + "format": "int32", + "type": "integer" + }, + "clusterUplift": { + "$ref": "QualityNsrNsrDataClusterUplift" + }, + "clutterScore": { + "description": "Delta site-level signal in Q* penalizing sites with a large number of distracting/annoying resources loaded by the site (see go/clutter-v0).", + "format": "float", + "type": "number" + }, + "host": { + "type": "string" + }, + "isCovidLocalAuthority": { + "description": "Bit to determine whether the site has the local authority covid signal, as computed by go/covid-local-authority", + "type": "boolean" + }, + "isElectionAuthority": { + "description": "Bit to determine whether the site has the election authority signal, as computed by go/election-authority", + "type": "boolean" + }, + "isVideoFocusedSite": { + "description": "Bit to determine whether the site has mostly video content, but is not hosted on any known video-hosting domains. Site is considered to be video-focused, if it has \u003e 50% of the URLs with watch pages (with smoothing prior). ariane/4045246", + "type": "boolean" + }, + "localityScore": { + "description": "Locality score of the site, i.e. the locality component of the LocalAuthority signal (see go/pq-localauthority).", + "format": "float", + "type": "number" + }, + "metadata": { + "$ref": "QualityNsrNsrDataMetadata" + }, + "newNsr": { + "description": "This field used as a temporary field for clean transitions when we need to roll out Q* and NSR changes simultaneously.", + "format": "float", + "type": "number" + }, + "nsr": { + "format": "float", + "type": "number" + }, + "nsrOverrideBid": { + "description": "This signal is used to unconditionally override NSR as a bid in Q*. Should only be used in case of emergency (see go/nsr-override-bid). To have any effect, the value should be present and greater than 0.001.", + "format": "float", + "type": "number" + }, + "nsrVariance": { + "description": "NSR variance logodds [0, infinity).", + "format": "float", + "type": "number" + }, + "nsrdataFromFallbackPatternKey": { + "description": "If true indicates that we do not have NSR data computed for the chunk, and instead the data is coming from an average of other host chunks.", + "type": "boolean" + }, + "secondarySiteChunk": { + "description": "Secondary NSR sitechunk. When present, it provides more granular chunking than primary sitechunks (see quality/nsr/util/sitechunker.h for details).", + "type": "string" + }, + "siteAutopilotScore": { + "description": "Aggregated value of url autopilot scores for this sitechunk.", + "format": "float", + "type": "number" + }, + "siteChunk": { + "description": "Primary NSR sitechunk. In most of the cases it's same as HOST_LEVEL_V3 sitechunked canonical url of the document. In rare, but important cases it's based on page markup (see quality/nsr/util/sitechunker.h for details).", + "type": "string" + }, + "siteChunkSource": { + "description": "These are only annotated in the Goldmine NSR annotator.", + "enum": [ + "SITE_CHUNK_SOURCE_UNKNOWN", + "SITE_CHUNK_SOURCE_HOST_V2", + "SITE_CHUNK_SOURCE_BREADCRUMBS", + "SITE_CHUNK_SOURCE_AUTHOR", + "SITE_CHUNK_SOURCE_COOKBOOK", + "SITE_CHUNK_SOURCE_CRAWLED_SELLER_DATA" + ], + "enumDescriptions": [ + "", + "As of June 2021 this actually corresponds to HOST_LEVEL_V3 granularity.", + "", + "", + "", + "" + ], + "type": "string" + }, + "siteLinkIn": { + "description": "Average value of the site_link_in for pages in the sitechunk.", + "format": "float", + "type": "number" + }, + "siteLinkOut": { + "description": "Aggregated value of url link out scores for this sitechunk.", + "format": "float", + "type": "number" + }, + "sitePr": { + "format": "float", + "type": "number" + }, + "siteQualityStddev": { + "description": "Estimate of site's PQ rating stddev--spread of the page-level PQ ratings of a site. Note this is different from nsr_variance which predicts error of NSR itself from the aggregated site-level rating.", + "format": "float", + "type": "number" + }, + "spambrainLavcScore": { + "description": "The SpamBrain LAVC score, as of July 2022. See more information at go/cloverfield-lavc-deck.", + "format": "float", + "type": "number" + }, + "url": { + "type": "string" + }, + "versionedData": { + "description": "Versioned map of NSR values for experimenting with the next release.", + "items": { + "$ref": "QualityNsrNSRVersionedData" + }, + "type": "array" + }, + "vlqNsr": { + "description": "NSR from a headroom model targeting low-quality video sites.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityNsrNsrDataClusterUplift": { + "description": "The uplift-per-cluster values used in Tundra's uplift arm.", + "id": "QualityNsrNsrDataClusterUplift", + "properties": { + "local": { + "description": "Score for the local sites arm.", + "format": "float", + "type": "number" + }, + "small": { + "description": "Score for the small sites arm.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityNsrNsrDataMetadata": { + "description": "Contains meta information about this data.", + "id": "QualityNsrNsrDataMetadata", + "properties": { + "raffiaLookupKey": { + "description": "This is an internal field set by Raffia, to indicate which lookup key this record belonged to. This is helpful in determining where the final data is coming from, as we don't populate `site_chunk` fields offline (at all), so we cannot distinguish if data is coming from host fallback, secondary chunks or something else.", + "type": "string" + } + }, + "type": "object" + }, + "QualityNsrPQData": { + "id": "QualityNsrPQData", + "properties": { + "deltaAutopilotScore": { + "format": "float", + "type": "number" + }, + "deltaLinkIncoming": { + "format": "float", + "type": "number" + }, + "deltaLinkOutgoing": { + "format": "float", + "type": "number" + }, + "deltaSubchunkAdjustment": { + "description": "Total deltaNSR adjustment based on subchunks. This is a page-level adjustment (subchunks are retrieved based on the page classification).", + "format": "float", + "type": "number" + }, + "linkIncoming": { + "format": "float", + "type": "number" + }, + "linkOutgoing": { + "format": "float", + "type": "number" + }, + "page2vecLq": { + "format": "float", + "type": "number" + }, + "subchunkData": { + "items": { + "$ref": "QualityNsrPQDataSubchunkData" + }, + "type": "array" + }, + "urlAutopilotScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityNsrPQDataSubchunkData": { + "description": "Data used to compute delta_subchunk_adjustment. (I.e, the subchunks looked up, with their confidences and weights). This data is not propagated to ascorer.", + "id": "QualityNsrPQDataSubchunkData", + "properties": { + "confidence": { + "description": "Confidence associated with the chunk.", + "format": "float", + "type": "number" + }, + "deltaNsr": { + "description": "Subchunk delta in nsr.", + "format": "float", + "type": "number" + }, + "pageWeight": { + "description": "Weight with which this document belong to this subchunk (greater than 0).", + "format": "float", + "type": "number" + }, + "type": { + "description": "Type of this chunk. Eg, ymyl_health, d2v, etc.", + "type": "string" + } + }, + "type": "object" + }, + "QualityOrbitAsteroidBeltDocumentIntentScores": { + "id": "QualityOrbitAsteroidBeltDocumentIntentScores", + "properties": { + "imageIntentScores": { + "additionalProperties": { + "$ref": "QualityOrbitAsteroidBeltImageIntentScores" + }, + "description": "Map of imageid key to ImageIntentScores, for images on cdoc.doc_images", + "type": "object" + }, + "intents": { + "description": "The 'intents' and 'scores' fields are stored as parallel lists for compactness. The 'scores' field should not be accessed directly, but instead through the functions in document_intent_scores_utils.", + "items": { + "enum": [ + "NONE", + "TUTORIAL", + "EXAMPLES", + "MAP", + "TRANSLATE", + "MEANING", + "LISTEN", + "PROMOTION", + "SOUNDTRACK", + "GIF", + "EPISODES", + "REGISTER", + "EVENT_LISTING", + "RANKING", + "DISCOGRAPHY", + "DIRECTIONS", + "NEWS", + "POPULATION", + "BEHIND_THE_SCENES", + "SOCIAL_MEDIA", + "FAN_FICTION", + "ADVICE", + "RECIPES", + "CAST", + "ONLINE_QUIZ", + "HOURS_OF_OPERATION", + "DEFINITION", + "REAL_ESTATE_LISTING", + "FOR_KIDS", + "BOOKS_BY_AUTHOR", + "PREVIEW", + "BIOGRAPHY", + "PURCHASE", + "MENU", + "BLOG", + "UNBOXING", + "IMAGES", + "NUTRITION_FACTS", + "SCIENTIFIC_EXPLANATION", + "ABOUT_PAGE", + "READ_BOOK", + "TRAVEL_GUIDE", + "SPECS", + "CALCULATOR", + "DOWNLOAD", + "SCORES", + "SUMMARY", + "QUOTES", + "SHOWTIMES", + "CATALOG", + "ONLINE_CLASS", + "CALENDAR", + "ANALYSIS", + "LOCATION_FINDER", + "COMIC", + "RENT", + "WATCH_MOVIE_TV_SHOW", + "CHARACTERS", + "STUDY_GUIDE", + "WATCH_VIDEO", + "APP", + "REVIEW", + "SHEET_MUSIC", + "SEARCH_RESULTS", + "LOGIN", + "TRIVIA", + "CONTACT_PAGE", + "TEMPLATE", + "RESERVATION", + "CUSTOMER_SUPPORT", + "INTERVIEW", + "USER_COMMENTS", + "COUPON", + "FLIGHT_TRACKER", + "COMPANY_FINANCIALS", + "WEATHER", + "FORUM", + "THESAURUS", + "ONLINE_GAMES", + "MANUAL", + "JOB_POSTING", + "MUSIC_VIDEO", + "LYRICS", + "SYMPTOMS", + "REPAIR", + "BUYING_GUIDE", + "PRODUCT_EDITORIAL_REVIEW", + "SHOPPING_MERCHANT_PRODUCT", + "SHOPPING_REVIEW_OR_BUYING_GUIDE", + "PRODUCT_REVIEW", + "PRODUCT_COMPARISON", + "PRODUCT_BUYING_GUIDE", + "SHOPAHOLIC", + "GOOGLE_SCREENSHOT", + "MUGSHOT", + "CRIME", + "SHOPPING_TOPN" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is specifically for the buying guides carousel (go/oshop-buying-guides). Consider using PRODUCT_BUYING_GUIDE instead.", + "", + "", + "This is basically an \"or\" of PRODUCT_REVIEW, PRODUCT_COMPARISON, and PRODUCT_BUYING_GUIDE. Use those three intents instead.", + "", + "", + "", + "This is the unmodified http://go/shopaholic score \"forwarded\" through Orbit. Note that scores less than 0.4 are not written to cdoc and will show up as 0.0.", + "This is an image intent", + "Image intent representing whether there is a mugshot in the image (or if the image is itself a mugshot).", + "Document intent representing whether a page is crime-related (go/crime-demotion-in-image-search-dd)", + "Document intent representing whether a page is recommending best shopping products fulfilling certain application (e.g. \"best laptops for students\"). See go/shopping_topn_orbit." + ], + "type": "string" + }, + "type": "array" + }, + "scores": { + "description": "The intent scores, scaled to integers between 0 and 100 for compactness.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "version": { + "description": "Version 0: Presence of an intent label in the 'intents' field represents our best-effort classification. The 'scores' field is not meaningful. Version 1: Values in the 'scores' field represent the estimated precision of the classifier for a threshold at that score.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityOrbitAsteroidBeltImageIntentScores": { + "id": "QualityOrbitAsteroidBeltImageIntentScores", + "properties": { + "intents": { + "description": "The unique identifier for an Asteroid Belt document intent is being reused here", + "items": { + "enum": [ + "NONE", + "TUTORIAL", + "EXAMPLES", + "MAP", + "TRANSLATE", + "MEANING", + "LISTEN", + "PROMOTION", + "SOUNDTRACK", + "GIF", + "EPISODES", + "REGISTER", + "EVENT_LISTING", + "RANKING", + "DISCOGRAPHY", + "DIRECTIONS", + "NEWS", + "POPULATION", + "BEHIND_THE_SCENES", + "SOCIAL_MEDIA", + "FAN_FICTION", + "ADVICE", + "RECIPES", + "CAST", + "ONLINE_QUIZ", + "HOURS_OF_OPERATION", + "DEFINITION", + "REAL_ESTATE_LISTING", + "FOR_KIDS", + "BOOKS_BY_AUTHOR", + "PREVIEW", + "BIOGRAPHY", + "PURCHASE", + "MENU", + "BLOG", + "UNBOXING", + "IMAGES", + "NUTRITION_FACTS", + "SCIENTIFIC_EXPLANATION", + "ABOUT_PAGE", + "READ_BOOK", + "TRAVEL_GUIDE", + "SPECS", + "CALCULATOR", + "DOWNLOAD", + "SCORES", + "SUMMARY", + "QUOTES", + "SHOWTIMES", + "CATALOG", + "ONLINE_CLASS", + "CALENDAR", + "ANALYSIS", + "LOCATION_FINDER", + "COMIC", + "RENT", + "WATCH_MOVIE_TV_SHOW", + "CHARACTERS", + "STUDY_GUIDE", + "WATCH_VIDEO", + "APP", + "REVIEW", + "SHEET_MUSIC", + "SEARCH_RESULTS", + "LOGIN", + "TRIVIA", + "CONTACT_PAGE", + "TEMPLATE", + "RESERVATION", + "CUSTOMER_SUPPORT", + "INTERVIEW", + "USER_COMMENTS", + "COUPON", + "FLIGHT_TRACKER", + "COMPANY_FINANCIALS", + "WEATHER", + "FORUM", + "THESAURUS", + "ONLINE_GAMES", + "MANUAL", + "JOB_POSTING", + "MUSIC_VIDEO", + "LYRICS", + "SYMPTOMS", + "REPAIR", + "BUYING_GUIDE", + "PRODUCT_EDITORIAL_REVIEW", + "SHOPPING_MERCHANT_PRODUCT", + "SHOPPING_REVIEW_OR_BUYING_GUIDE", + "PRODUCT_REVIEW", + "PRODUCT_COMPARISON", + "PRODUCT_BUYING_GUIDE", + "SHOPAHOLIC", + "GOOGLE_SCREENSHOT", + "MUGSHOT", + "CRIME", + "SHOPPING_TOPN" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is specifically for the buying guides carousel (go/oshop-buying-guides). Consider using PRODUCT_BUYING_GUIDE instead.", + "", + "", + "This is basically an \"or\" of PRODUCT_REVIEW, PRODUCT_COMPARISON, and PRODUCT_BUYING_GUIDE. Use those three intents instead.", + "", + "", + "", + "This is the unmodified http://go/shopaholic score \"forwarded\" through Orbit. Note that scores less than 0.4 are not written to cdoc and will show up as 0.0.", + "This is an image intent", + "Image intent representing whether there is a mugshot in the image (or if the image is itself a mugshot).", + "Document intent representing whether a page is crime-related (go/crime-demotion-in-image-search-dd)", + "Document intent representing whether a page is recommending best shopping products fulfilling certain application (e.g. \"best laptops for students\"). See go/shopping_topn_orbit." + ], + "type": "string" + }, + "type": "array" + }, + "scores": { + "description": "The intent scores, scaled to integers between 0 and 100 for compactness.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityPreviewChosenSnippetInfo": { + "description": "Information for chosen snippet. Next ID: 7", + "id": "QualityPreviewChosenSnippetInfo", + "properties": { + "isVulgar": { + "description": "Whether this snippet is a vulgar candidate.", + "type": "boolean" + }, + "leadingTextType": { + "type": "string" + }, + "snippetType": { + "enum": [ + "SNIPPET_TYPE_UNSPECIFIED", + "SEQUENCE", + "SEQUENCE_V2", + "FULL", + "FULL_V2", + "META", + "LEADING_TEXT", + "SAFT_SENTENCE", + "RADISH_SENTENCE", + "RADISH_LIST", + "RADISH_TABLE", + "ANNOTATED_FULL", + "PEREGRINE" + ], + "enumDescriptions": [ + "For historical reason, this `SNIPPET_TYPE_UNSPECIFIED` type is defined as value 15 instead of 0.", + "A sequence snippet is generated from query term matches (from meta and body sections) and typically consists of multiple tidbits. Currently we only keep one single best combination of the retrieved tidbits.", + "", + "A full snippet is also generated from query term matches. Unlike the sequence snippet, this only consists of one expanded tidbit that are scored as the best single tidbit among the retrieved tidbits.", + "", + "This is a leading text of meta description.", + "This is a leading text of main body text (skipping headers), and its starting position is typically identified in the indexing phase.", + "saft sentences.", + "Candidates created from radish attachment.", + "", + "", + "Candidates from quality_snippets.SnippetSpansInfo.", + "Candidates generated by SnippetFlow in SR." + ], + "type": "string" + }, + "source": { + "description": "Source of the chosen snippet, decided in PORC. String value of quality.porc.TextSnippetCandidate.TextSnippetSource defined at google3/quality/porc/proto/text_snippet.proto Note: This field is only populated and used in offline pipeline.", + "type": "string" + }, + "tidbits": { + "items": { + "$ref": "QualityPreviewChosenSnippetInfoTidbitInfo" + }, + "type": "array" + }, + "trailingEllipsis": { + "description": "Whether this snippet has trailing ellipsis.", + "type": "boolean" + } + }, + "type": "object" + }, + "QualityPreviewChosenSnippetInfoTidbitInfo": { + "description": "Information to identify tidbits.", + "id": "QualityPreviewChosenSnippetInfoTidbitInfo", + "properties": { + "sectionName": { + "description": "Section name of current snippet.", + "type": "string" + }, + "separator": { + "description": "Separator to put before this tidbit.", + "type": "string" + }, + "tidbitText": { + "description": "Tidbit text for validation.", + "type": "string" + }, + "tokenBegin": { + "description": "Tidbit token range in the section.", + "format": "uint64", + "type": "string" + }, + "tokenEnd": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "QualityPreviewRanklabSnippet": { + "description": "Snippet candidate related information and signal scores.", + "id": "QualityPreviewRanklabSnippet", + "properties": { + "brainFeatures": { + "$ref": "QualityPreviewSnippetBrainFeatures" + }, + "documentFeatures": { + "$ref": "QualityPreviewSnippetDocumentFeatures" + }, + "experimentalFeatures": { + "$ref": "QualityPreviewSnippetExperimentalFeatures" + }, + "qualityFeatures": { + "$ref": "QualityPreviewSnippetQualityFeatures" + }, + "queryFeatures": { + "$ref": "QualityPreviewSnippetQueryFeatures", + "description": "Core set of snippet features." + }, + "queryTermCoverageFeatures": { + "$ref": "QualityPreviewSnippetQueryTermCoverageFeatures" + }, + "snippetInfo": { + "$ref": "QualityPreviewChosenSnippetInfo", + "description": "Information to identify current chosen snippet." + } + }, + "type": "object" + }, + "QualityPreviewRanklabTitle": { + "description": "A collection of data corresponding to a single title candidate. This will be used as: - a collection of signals to score and select titles in production - an input for training title models NOTE: When adding a floating point value for Ranklab purposes, use float32 instead of float64, because some of the Ranklab library still does not fully support float64. Next ID: 67", + "id": "QualityPreviewRanklabTitle", + "properties": { + "baseGoldmineFinalScore": { + "description": "`goldmine_final_score` value in base.", + "format": "float", + "type": "number" + }, + "baseRank": { + "description": "The ranking index of this candidate (starting from 0) in base.", + "format": "int32", + "type": "integer" + }, + "dataSourceType": { + "description": "Title source type.", + "enum": [ + "BODY", + "BODY_SWAPPED", + "OPEN_GRAPH", + "OPEN_GRAPH_HYBRID", + "ALT", + "SOURCEMETA", + "META", + "BODY_HYBRID", + "LEADING_TEXT", + "CHIMERA", + "EXPERIMENTAL", + "DEPRECATED_LEARNED", + "DEPRECATED_LOCAL", + "NUM_TITLE_TYPES" + ], + "enumDescriptions": [ + "The title is from (a substring of) the tag.", + "This title is for homepages, whose body title contains site title at the end, and we swap the site title to the beginning and pass it from gwd.", + "The title is from tag.", + "OPEN_GRAPH title with a site title appended.", + "The title is from the alternative title pipeline.", + "The title is a blogs, scholar, or news title in the sourcemeta section.", + "The title comes from (a substring of) the title tag.", + "The title is a body title with a site title appended.", + "The title comes from some other leading text in the", + "body. The title is created as a compound of multiple different", + "sources, via Chimera-Title geneartion subsystem. The title is created as of some experimental system", + "", + "", + "" + ], + "type": "string" + }, + "docLang": { + "description": "Document language for this title. It is used for model inference and hence flattened into RanklabTitle instead of RanklabDoc.", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "docRelevance": { + "description": "Represents how relavant this title candidate is to the document. Ranged in [0, 1], and this signal is basically calculated as Cosine-similarity between salient term vector and pQ2T model of title candidate sentence.", + "format": "float", + "type": "number" + }, + "dupTokens": { + "description": "Numbers of duplicated tokens. For example, duplicated tokens for a title \"dog cat cat cat\" is 2 (for 2 extra \"cat\").", + "format": "int32", + "type": "integer" + }, + "forcedExperimentScore": { + "description": "A score assigned for candidates forced by experiments.", + "format": "int32", + "type": "integer" + }, + "goldmineAdjustedScore": { + "description": "The score for `text` computed in Goldmine (AlternativeTitlesAnnotator) with additional scoring adjustments applied. Currently includes Blockbert scoring.", + "format": "float", + "type": "number" + }, + "goldmineAnchorFactor": { + "description": "=============================================================== Internal boost feature signals used to compute `goldmine_page_score`. They are exposed only for debugging purpose.", + "format": "float", + "type": "number" + }, + "goldmineAnchorSupportOnly": { + "format": "float", + "type": "number" + }, + "goldmineBlockbertFactor": { + "format": "float", + "type": "number" + }, + "goldmineBodyFactor": { + "format": "float", + "type": "number" + }, + "goldmineFinalScore": { + "description": "Deprecated: use `goldmine_page_score` instead.", + "format": "float", + "type": "number" + }, + "goldmineForeign": { + "format": "float", + "type": "number" + }, + "goldmineGeometryFactor": { + "format": "float", + "type": "number" + }, + "goldmineHasBoilerplateInTitle": { + "format": "float", + "type": "number" + }, + "goldmineHasTitleNgram": { + "format": "float", + "type": "number" + }, + "goldmineHeaderIsH1": { + "format": "float", + "type": "number" + }, + "goldmineHeadingFactor": { + "format": "float", + "type": "number" + }, + "goldmineIsBadTitle": { + "format": "float", + "type": "number" + }, + "goldmineIsHeadingTag": { + "format": "float", + "type": "number" + }, + "goldmineIsTitleTag": { + "format": "float", + "type": "number" + }, + "goldmineIsTruncated": { + "format": "float", + "type": "number" + }, + "goldmineLocalTitleFactor": { + "format": "float", + "type": "number" + }, + "goldmineLocationFactor": { + "format": "float", + "type": "number" + }, + "goldmineNavboostFactor": { + "format": "float", + "type": "number" + }, + "goldmineOgTitleFactor": { + "format": "float", + "type": "number" + }, + "goldmineOnPageDemotionFactor": { + "format": "float", + "type": "number" + }, + "goldmineOtherBoostFeatureCount": { + "description": "The number of BoostFeatures present in AlternativeTitlesGeneator but not populated above.", + "format": "int32", + "type": "integer" + }, + "goldminePageScore": { + "description": "The score for the `text` computed in Goldmine (AlternativeTitlesAnnotator). ", + "format": "float", + "type": "number" + }, + "goldmineReadabilityScore": { + "format": "float", + "type": "number" + }, + "goldmineSalientTermFactor": { + "format": "float", + "type": "number" + }, + "goldmineSitenameFactor": { + "format": "float", + "type": "number" + }, + "goldmineSubHeading": { + "format": "float", + "type": "number" + }, + "goldmineTitleTagFactor": { + "format": "float", + "type": "number" + }, + "goldmineTrustFactor": { + "format": "float", + "type": "number" + }, + "goldmineUrlMatchFactor": { + "format": "float", + "type": "number" + }, + "hasSiteInfo": { + "description": "Whether a title contains site information.", + "type": "boolean" + }, + "isTruncated": { + "description": "Whether this title candidate is truncated or not.", + "type": "boolean" + }, + "isValid": { + "description": "Whether a title is valid (i.e., not empty).", + "type": "boolean" + }, + "perTypeQuality": { + "description": "How good or bad this title is as a `data_source_type` title type.", + "enum": [ + "UNKNOWN_QUALITY", + "VERY_GOOD", + "GOOD", + "NORMAL", + "BAD" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "perTypeRank": { + "description": "Rank of this title among titles of the same `data_source_type`.", + "format": "int32", + "type": "integer" + }, + "percentBodyTitleTokensCovered": { + "description": "Numbers of body title tokens covered by this title, in range of [0, 1]. Not set if body title is considered \"bad\".", + "format": "float", + "type": "number" + }, + "percentTokensCoveredByBodyTitle": { + "description": "Numbers of tokens covered by body title, in range of [0, 1]. Not set if body title is considered \"bad\".", + "format": "float", + "type": "number" + }, + "queryMatch": { + "description": "The number of (different) terms with a query match. It may include the match with any SQuery node (e.g., synonyms).", + "format": "int32", + "type": "integer" + }, + "queryMatchFraction": { + "description": "A number of matched query terms divided by the number of all terms in query. Synonyms or other terms that appear in squery but not in the raw query are excluded. Takes values in [0, 1].", + "format": "float", + "type": "number" + }, + "queryRelevance": { + "description": "Represents how relavant this title candidate is to the query. Ranged in [0, 1], and this signal is basically calculated as Cosine-similarity between QBST term vector and pQ2T model of title candidate sentence.", + "format": "float", + "type": "number" + }, + "sourceGeometry": { + "type": "boolean" + }, + "sourceHeadingTag": { + "type": "boolean" + }, + "sourceLocalTitle": { + "type": "boolean" + }, + "sourceOffdomainAnchor": { + "type": "boolean" + }, + "sourceOndomainAnchor": { + "type": "boolean" + }, + "sourceOnsiteAnchor": { + "type": "boolean" + }, + "sourceTitleTag": { + "description": "=============================================================== Title candidate's original source information. They are populated only for non-production environment for debugging purposes.", + "type": "boolean" + }, + "sourceTransliteratedTitle": { + "type": "boolean" + }, + "testGoldmineFinalScore": { + "description": "`goldmine_final_score` value in test.", + "format": "float", + "type": "number" + }, + "testRank": { + "description": "The ranking index of this candidate (starting from 0) in test.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "Title text to display. Populated for debugging purpose only, and won't be used for model inferences. This represetns the exact display text in SERP, with modifications like truncations or site-title appending involved.", + "type": "string" + }, + "widthFraction": { + "description": "A rendered width of this title divided by the max allowed width for title. Takes values in [0, 1].", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityPreviewSnippetBrainFeatures": { + "description": "Snippet brain scores.", + "id": "QualityPreviewSnippetBrainFeatures", + "properties": { + "modelScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityPreviewSnippetDocumentFeatures": { + "description": "Document related features used in snippets scoring. Next ID: 10", + "id": "QualityPreviewSnippetDocumentFeatures", + "properties": { + "experimentalTitleSalientTermsScore": { + "format": "float", + "type": "number" + }, + "leadingtextDistanceScore": { + "format": "float", + "type": "number" + }, + "metaBoostScore": { + "format": "float", + "type": "number" + }, + "salientPositionBoostScore": { + "format": "float", + "type": "number" + }, + "salientTermsScore": { + "format": "float", + "type": "number" + }, + "schemaOrgDescriptionBoostScore": { + "format": "float", + "type": "number" + }, + "unstableTokensScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityPreviewSnippetExperimentalFeatures": { + "id": "QualityPreviewSnippetExperimentalFeatures", + "properties": { + "isLikelyHomepage": { + "type": "boolean" + }, + "numQueryItems": { + "format": "uint32", + "type": "integer" + }, + "numTidbits": { + "format": "uint32", + "type": "integer" + }, + "numVisibleTokens": { + "format": "uint32", + "type": "integer" + }, + "radish": { + "$ref": "QualityPreviewSnippetRadishFeatures" + } + }, + "type": "object" + }, + "QualityPreviewSnippetQualityFeatures": { + "description": "Quality related features used in snippets scoring. Next ID: 10", + "id": "QualityPreviewSnippetQualityFeatures", + "properties": { + "foreignMetaScore": { + "format": "float", + "type": "number" + }, + "hiddenRatioScore": { + "format": "float", + "type": "number" + }, + "numTidbitsScore": { + "format": "float", + "type": "number" + }, + "numVisibleTokensScore": { + "format": "float", + "type": "number" + }, + "outlinkScore": { + "format": "float", + "type": "number" + }, + "redundancyScore": { + "format": "float", + "type": "number" + }, + "sentenceStartScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityPreviewSnippetQueryFeatures": { + "description": "Query related features used in snippets scoring. Next ID: 7", + "id": "QualityPreviewSnippetQueryFeatures", + "properties": { + "experimentalQueryTitleScore": { + "format": "float", + "type": "number" + }, + "passageembedScore": { + "format": "float", + "type": "number" + }, + "queryHasPassageembedEmbeddings": { + "type": "boolean" + }, + "queryScore": { + "format": "float", + "type": "number" + }, + "radishScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityPreviewSnippetQueryTermCoverageFeatures": { + "description": "Snippet query term coverage features.", + "id": "QualityPreviewSnippetQueryTermCoverageFeatures", + "properties": { + "snippetQueryTermCoverage": { + "format": "float", + "type": "number" + }, + "titleQueryTermCoverage": { + "format": "float", + "type": "number" + }, + "titleSnippetQueryTermCoverage": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityPreviewSnippetRadishFeatures": { + "id": "QualityPreviewSnippetRadishFeatures", + "properties": { + "answerScore": { + "description": "Answer score of the passage for this `navboost_query`.", + "format": "float", + "type": "number" + }, + "navboostQuery": { + "description": "Navboost query for this radish signal.", + "type": "string" + }, + "passageCoverage": { + "description": "The ratio of overlapping tokens between the radish passage and snippet candidate.", + "format": "float", + "type": "number" + }, + "passageType": { + "description": "Integer value of indexing::annotations::wa_passages::Passage::Type.", + "format": "uint32", + "type": "integer" + }, + "queryPassageIdx": { + "description": "The index of this passage under `navboost_query`.", + "format": "uint32", + "type": "integer" + }, + "similarityMethod": { + "description": "How the similarity score is computed. Integer value of mustang_repos_www_snippets::RadishSignalScoringInfo::SimilarityMethod.", + "format": "uint32", + "type": "integer" + }, + "similarityScore": { + "description": "Similarity score between this `navboost_query` and the incoming query.", + "format": "float", + "type": "number" + }, + "snippetCoverage": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityProductProductSiteData": { + "description": "Protocol message for data related to product sites. This data is stored as signals data in docjoins.", + "id": "QualityProductProductSiteData", + "properties": { + "locale": { + "description": "Data for each locale.", + "items": { + "$ref": "QualityProductProductSiteDataLocaleData" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityProductProductSiteDataLocaleData": { + "description": "Data for one locale.", + "id": "QualityProductProductSiteDataLocaleData", + "properties": { + "boostFactor": { + "description": "Site boosting multiplier.", + "format": "float", + "type": "number" + }, + "gobiSite": { + "description": "Whether this is a gobi site, ie, a site from a gobi domain that should be boosted for a category query with this gobi domain. For example, amazon.com is a gobi store domain for category query [hdtv] but some sites (like askville.amazon.com) from amazon.com should not be boosted.", + "type": "boolean" + }, + "locale": { + "description": "Locale for this data.", + "type": "string" + } + }, + "type": "object" + }, + "QualityProseCSEUrlInfo": { + "id": "QualityProseCSEUrlInfo", + "properties": { + "cseId": { + "description": "There were defined back in 2007, but were never used. optional string label = 2; optional uint64 user = 3; optional float score = 4;", + "type": "string" + } + }, + "type": "object" + }, + "QualityQrewriteAccountProvenance": { + "description": "Used to annotate the source of cross-account personal data. See go/cross-account-understanding.", + "id": "QualityQrewriteAccountProvenance", + "properties": { + "dataSources": { + "items": { + "enum": [ + "UNKNOWN_MULTI_ACCOUNT_DATA_SOURCE", + "PRODUCTIVITY_ACCOUNT", + "ASSISTANT_SHARED_CONTACT", + "CALENDAR_EVENT_TITLES" + ], + "enumDescriptions": [ + "", + "Data is from a linked A4W account. See go/multiaccount-a4w.", + "Shared contacts from another user on the same device. See go/shared-contacts-assistant.", + "Calendar event titles (currently preloaded). See go/event-title-annotation." + ], + "type": "string" + }, + "type": "array" + }, + "googleAccount": { + "$ref": "QualityQrewriteAccountProvenanceGoogleAccount" + }, + "thirdPartyAccount": { + "$ref": "QualityQrewriteAccountProvenanceThirdPartyAccount", + "description": "Note google_account and third_party_account could both exist. For example, a user could share her Spotify account with other users registered on the same device." + } + }, + "type": "object" + }, + "QualityQrewriteAccountProvenanceGoogleAccount": { + "description": "The Google account the annotated personal data belongs to.", + "id": "QualityQrewriteAccountProvenanceGoogleAccount", + "properties": { + "email": { + "type": "string" + }, + "gaiaId": { + "format": "int64", + "type": "string" + }, + "isDasherAccount": { + "type": "boolean" + }, + "isSecondaryAccount": { + "type": "boolean" + } + }, + "type": "object" + }, + "QualityQrewriteAccountProvenanceThirdPartyAccount": { + "description": "The 3P account the annotated personal data belongs to.", + "id": "QualityQrewriteAccountProvenanceThirdPartyAccount", + "properties": { + "email": { + "description": "Email address of the linked account (eg foo@outlook.com).", + "type": "string" + }, + "thirdPartyProviderId": { + "description": "Unique identifier for the third party provider. Defined by Google via AoG.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "QualityQrewriteAlternativeNameInfo": { + "description": "Alternative names with info like RecognitionAlternateSource indicating where is it from.", + "id": "QualityQrewriteAlternativeNameInfo", + "properties": { + "matchSignal": { + "$ref": "AssistantVerticalsCommonContactMatchSignal" + }, + "name": { + "type": "string" + }, + "source": { + "enum": [ + "NONE", + "S3_HYPOTHESES", + "GENIE_QUERY_ALTERNATIVES", + "NAME_CORRECTION_LOG", + "FUZZY_CONTACT_MATCH", + "NEURAL_CONTACT_MATCH", + "NEURAL_CONTACT_MATCH_DARK_LAUNCH" + ], + "enumDescriptions": [ + "", + "Alternate name from S3 recognition topN hypothesis.", + "Alternate name from Genie query alternatives.", + "Alternate name from contact correction history.", + "Fuzzy match with user's contacts.", + "Neural match. See go/phonetic-contact-match.", + "The dark launch for a neural match. We found a match, but we ignore it for serving and just log it." + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityQrewriteCalendarReference": { + "id": "QualityQrewriteCalendarReference", + "properties": { + "calendarAlias": { + "$ref": "QualityQrewriteQRewriteAccountAwareCalendarAliasWrapper" + }, + "contactCalendarName": { + "$ref": "QualityQrewriteContactCalendarName" + }, + "familyCalendarAlias": { + "$ref": "QualityQrewriteFamilyCalendarAlias" + }, + "primaryCalendarAlias": { + "$ref": "QualityQrewritePrimaryCalendarAlias" + } + }, + "type": "object" + }, + "QualityQrewriteCandidateId": { + "description": "A complete query candidate Id includes a list of Id fields. The Id field order is maintained as the order by which each field is appended to the list.", + "id": "QualityQrewriteCandidateId", + "properties": { + "field": { + "items": { + "$ref": "QualityQrewriteCandidateIdField" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityQrewriteCandidateIdField": { + "description": "The message represents a field in the query candidate Id.", + "id": "QualityQrewriteCandidateIdField", + "properties": { + "index": { + "format": "int32", + "type": "integer" + }, + "type": { + "enum": [ + "CANDIDATE_TYPE_UNSPECIFIED", + "IDENTITY", + "SPELLING", + "S3_TOP_HYPOTHESIS", + "AUTO_TRANSLATE", + "ADS_ALTERNATIVE_RUN", + "NEARBY_RETRIEVAL", + "CONTEXTUAL_REWRITE", + "SAFT_TOKENIZER", + "CONVO_FPR", + "SPOKEN_INTENT", + "AUTO_TRANSLATE_ARGUMENT_TRANSFER", + "CONTEXT_AWARE_SPEECH_RECOGNITION_REWRITE", + "MAST", + "FUZZY_MATCHER_REWRITE", + "SHOPPING_PREFERENCES_REWRITE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Indicates it is Ads qrewrite request candidate, and it should run on alternative data version. go/ads-qrewrite-multiversion", + "NearbyRetrieval creates a supplemental QRewriteResult to send to Superroot where it is used for a supplemental index lookup.", + "Indicates that Genie rewrote the query using contextual information.", + "", + "ConversationalRewriteServlet rewrote the query using context", + "", + "Auto Translate with argument transfer. go/missandei-argument-transfer-through-qus The query was rewritten because it is probably a speech recognition error. go/asr-rewriter.", + "", + "go/mast-query", + "go/afm", + "Rewrite with user explicit shopping preferences." + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityQrewriteContactCalendarName": { + "id": "QualityQrewriteContactCalendarName", + "properties": { + "contact": { + "$ref": "NlpSemanticParsingModelsPersonPerson" + } + }, + "type": "object" + }, + "QualityQrewriteFamilyCalendarAlias": { + "id": "QualityQrewriteFamilyCalendarAlias", + "properties": { + "familyCalendarId": { + "type": "string" + } + }, + "type": "object" + }, + "QualityQrewritePersonalContactData": { + "description": "Contact metadata Next Id: 35", + "id": "QualityQrewritePersonalContactData", + "properties": { + "accountProvenance": { + "$ref": "QualityQrewriteAccountProvenance", + "description": "Tracks the account owner of this contact. See go/cross-account-understanding." + }, + "additionalContactMetadata": { + "description": "Other metadata relating with the contact. This field is added so that the value can be copied to the corresponding field |additional_contact_metadata| in person.proto, that later will be logged to Assistant Interaction Event footprint from client side.", + "items": { + "additionalProperties": { + "description": "Properties of the object. Contains field @type with type URL.", + "type": "any" + }, + "type": "object" + }, + "type": "array" + }, + "commonNameAliasConfidence": { + "description": "Populated only if matched_name_type is GIVEN_NAME_ALIAS or FULL_NAME_ALIAS.", + "format": "float", + "type": "number" + }, + "conceptId": { + "description": "Concept id for relationships in query language, e.g. \"Mother\" in English, \"Mère\" in French. It's only populated for source = RELATIONSHIP.", + "type": "string" + }, + "conceptIdEn": { + "description": "Concept id for relationships in English, e.g. \"Mother\" for all non-English locales. It's only populated for source = RELATIONSHIP. It is used as the key to store relationship in memory (see http://go/assistant-relationship). For English, this field is not filled, and we will use concept_id field as the relationship key in memory.", + "type": "string" + }, + "displayName": { + "description": "TODO(shuaiwang) these are kept here temporarily because aqua regression tests are still referring to them, migrating aqua regression tests to use the new person_data field depends on binary change (i.e. this proto change) so there's a period we need to keep both.", + "type": "string" + }, + "familyName": { + "type": "string" + }, + "ffracScore": { + "description": "The ffrac score of the suggested contact from Starlight.", + "format": "double", + "type": "number" + }, + "gaiaId": { + "format": "int64", + "type": "string" + }, + "givenName": { + "type": "string" + }, + "hasAddressForDeviceContacts": { + "description": "Whether we have address info for this contact. IMPORTANT, READ BEFORE USING THIS FIELD: - This is a temporary solution to export this info for device contacts. - This could only be set for device contacts, contacts from other sources won't have this bit set even if there's address available inside person_data. - This will go away once Starlight supports device contacts, addresses will be available inside person_data the same way as Focus contacts. TODO(shuaiwang) remove after b/20412551", + "type": "boolean" + }, + "hasGplusProfile": { + "type": "boolean" + }, + "isFromOnDeviceLookup": { + "description": "If the contact data is from on device lookup.", + "type": "boolean" + }, + "isTransliteratedMatch": { + "description": "Indicate the contact matches the transliterated query.", + "type": "boolean" + }, + "isVisibleToGuestsRelationship": { + "description": "If the lookup was done using relationship which is visible to guests. This value will only be set if lookup was done using relationship. E.g. user has a guest relationship (doctor) -\u003e (John) And user says \"call doctor\", then this value will be true.", + "type": "boolean" + }, + "matchSignal": { + "$ref": "AssistantVerticalsCommonContactMatchSignal", + "description": "Populate only if AlternateSource is not NONE." + }, + "matchedNameType": { + "description": "LINT.ThenChange(//depot/google3/assistant/verticals/communication/\\ fulfillment/proto/contact_logging_enums.proto, //depot/google3/assistant/api/dialog_state/values/person.proto, //depot/google3/assistant/context/proto/person.proto)", + "enum": [ + "UNSPECIFIED", + "GIVEN_NAME", + "FAMILY_NAME", + "FULL_NAME", + "NICKNAME", + "OTHER", + "INITIAL_WITH_FAMILY_NAME", + "EMAIL_USERNAME", + "VANITY_NICKNAME", + "GIVEN_NAME_ALIAS", + "FULL_NAME_ALIAS", + "HOMOPHONE_GIVEN_NAME", + "HOMOPHONE_FAMILY_NAME", + "HOMOPHONE_FULL_NAME", + "HOMOPHONE_NICKNAME", + "GIVEN_MIDDLE_NAME", + "GIVEN_NAME_WITH_FAMILY_NAME_INITIAL", + "EMAIL_OF_FAMILY_MEMBER" + ], + "enumDescriptions": [ + "", + "Contact's given name, or first word in name, or last word if query is in CJK.", + "Contact's family name, or last word in name, or first word if query is in CJK.", + "Contact's display name, or given+family, or family+given if query is in CJK. Contact's middle name is optional.", + "Query span matches contact's nickname.", + "Not used yet.", + "Either or both of first/middle initials along with family name.", + "Email username, controlled by FocusNameParams.annotate_email_username.", + "Vanity nicknames like \"myself\", data is at //quality/qrewrite/servlets/internal/focus_name/data/vanity_nickname.txt", + "Contact's given name is a common name alias of query span, e.g. query [Bob] may match contact with given name \"Robert\".", + "Contact's given name is a common name alias of first word in query span, while remaining parts fully matched.", + "Homophone name match of given name, or last word. Only for CJK query.", + "Homophone name match of family name, or first word. Only for CJK query.", + "Homophone name match of full name, or family+given. Only for CJK query.", + "Homophone name match of nickname. Only for CJK query.", + "Contact's given name + middle name. Only for contacts with 3 words.", + "Contact's given name along with last name initial. Only support non-CJKT contact name.", + "This type indicates we find a match of the user's family member - as defined by families.google.com - by matching the email full address. Controlled by FocusNameParams.annotate_email_full_address." + ], + "type": "string" + }, + "matchedRecognitionAlternateName": { + "description": "Alternate name from recognition that has contact matched. Need this to make name correction history log consistent.", + "type": "string" + }, + "personData": { + "$ref": "AppsPeopleOzExternalMergedpeopleapiPerson", + "description": "Metadata such as name, email, phone, etc." + }, + "personalContactDataLog": { + "$ref": "AssistantLogsCommunicationPersonalContactDataLog", + "description": "Log version of PersonalContactData. Holds e.g. FUZZY match results. It is populated in NamedContactFrame when fuzzy match is performed: http://google3/quality/dialog_manager/frames/contact/named_contact_frame.cc?l=255\u0026rcl=331994299 Currently only fuzzy ngram match results are logged here." + }, + "pkgPerson": { + "$ref": "NlpSemanticParsingQRefAnnotation", + "description": "Contains information about a Copley Person resolution (go/copley-people). This field is used to propagate metadata related to the resolved person, used for attribution and logging. Meaningful data (addresses, phone numbers) are copied into person_data." + }, + "pkgReferenceType": { + "enum": [ + "UNKNOWN_PKG_REFERENCE_TYPE", + "PKG_NAME_REFERENCE", + "PKG_RELATIONSHIP_REFERENCE" + ], + "enumDescriptions": [ + "", + "Ann [Charlie]", + "my family dad my sister's kids" + ], + "type": "string" + }, + "recognitionAlternateScore": { + "description": "Populate only if AlternateSource is not NONE.", + "format": "float", + "type": "number" + }, + "recognitionAlternateSource": { + "description": "If not none, then it indicates the personal contact data is alternate and how the alternate is fulfilled.", + "enum": [ + "NONE", + "S3_HYPOTHESES", + "GENIE_QUERY_ALTERNATIVES", + "NAME_CORRECTION_LOG", + "FUZZY_CONTACT_MATCH", + "NEURAL_CONTACT_MATCH", + "NEURAL_CONTACT_MATCH_DARK_LAUNCH" + ], + "enumDescriptions": [ + "", + "Alternate name from S3 recognition topN hypothesis.", + "Alternate name from Genie query alternatives.", + "Alternate name from contact correction history.", + "Fuzzy match with user's contacts.", + "Neural match. See go/phonetic-contact-match.", + "The dark launch for a neural match. We found a match, but we ignore it for serving and just log it." + ], + "type": "string" + }, + "relationshipLexicalInfo": { + "$ref": "CopleyLexicalMetadata", + "description": "Lexical information for relationships in query language, e.g. \"Mother\" in English, \"Mère\" in French. It's only populated for source = RELATIONSHIP." + }, + "relationshipMemory": { + "description": "Resolved relationship names and contact pointers from Assistant Memory. This field is populated into both relationship annotation (source = RELATIONSHIP) and Focus/device contacts retrieved by that contact name. The data from Assistant Memory comes from two different columns: ASSISTANT_SETTINGS and PWS_CONTACT_ANNOTATION. We support multiple people with same relationship (e.g. multiple brothers) by using a repeated relationship_memory field. Examples are at go/person-subgrammar-relationship.", + "items": { + "$ref": "QualityQrewriteRelationshipMemoryData" + }, + "type": "array" + }, + "sharedContactOwnerGaiaId": { + "description": "Gaia ID of the user this contact belongs to. Only populates if contact is shared from another user. See go/shared-contacts-assistant. E.g. user A triggers the request and uses user B's contact data (which is marked as visible to user A). This field will be populated with user B's gaia id.", + "format": "int64", + "type": "string" + }, + "source": { + "description": "LINT.ThenChange(//depot/google3/assistant/verticals/communication/\\ fulfillment/proto/contact_logging_enums.proto, //depot/google3/assistant/api/dialog_state/values/person.proto) Data source of the contact data.", + "enum": [ + "FOCUS_CONTACT", + "DEVICE_CONTACT", + "GMAIL_INFERENCE", + "S3_DECORATOR", + "RELATIONSHIP", + "VANITY", + "SIGNED_OUT_DEVICE", + "SHARED_CONTACT", + "FAMILY_MEMBER", + "SHARED_DEVICE_USER", + "ON_DEVICE_CONTACT_LOOKUP" + ], + "enumDescriptions": [ + "Contacts from Focus", + "Contacts from device, see go/device-content", + "Contacts inferred from Gmail", + "Contacts from S3 decorator", + "Whitelisted relationships no matter if user has such contact, see go/sls-personal_relationship_names_and_aliases.", + "Vanity nicknames or user's own profile name.", + "Signed out device contact names", + "Contacts shared from other users. See go/multi-user-shared-contact.", + "People in the user's family group in http://families.google.com who are not contacts.", + "People who share a device with the user who are not contacts.", + "Contacts from on device lookup during contact fulfillment." + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityQrewritePrimaryCalendarAlias": { + "id": "QualityQrewritePrimaryCalendarAlias", + "properties": {}, + "type": "object" + }, + "QualityQrewriteQRewriteAccountAwareCalendarAliasWrapper": { + "description": "A calendar alias wrapper used for query annotation. Aliases values are defined in the extension with build visibility restrictions as they may contain data from an account other than the user's primary account. This proto is used as an metadata output from the QRewrite annotation. It can be used for calendar aliases from different sources i.e. aliases based on the domain of the account associated with the calendar (go/calendar-aliases-annotation).", + "id": "QualityQrewriteQRewriteAccountAwareCalendarAliasWrapper", + "properties": {}, + "type": "object" + }, + "QualityQrewriteRelationshipMemoryData": { + "description": "Relationship-\u003econtact data provided by Assistant Memory.", + "id": "QualityQrewriteRelationshipMemoryData", + "properties": { + "contactPointer": { + "$ref": "FocusBackendContactPointer", + "description": "The contact pointer. See http://go/assistant-contact-id." + }, + "value": { + "description": "The contact name copied from UserAttribute.value.", + "type": "string" + } + }, + "type": "object" + }, + "QualityRankembedMustangMustangRankEmbedInfo": { + "description": "Used as Mustang attachment DO NOT: - ACCESS THE PROTO FIELDS DIRECTLY - USE THE DECODING LIBRARY IN quality/rankembed/mustang/fixed_point_decoding_helpers.h INSTEAD. - USE HARDCODED MustangRankEmbedInfo TEXT PROTOS IN TESTS! USE quality/rankembed/test_utils/mustang_rankembed_info_utils.h INSTEAD.", + "id": "QualityRankembedMustangMustangRankEmbedInfo", + "properties": { + "compressedDocumentEmbedding": { + "$ref": "QualityRankembedMustangMustangRankEmbedInfoCompressedEmbedding", + "description": "Each uint64 encodes 8 8-bit values for the quantized document embedding" + }, + "fixedPointEncoding": { + "description": "This field replaces the above 3 \"per-encoding-type-fields\", where the encoding type (and the embedding type) are part of the encoding, and is stored in the first byte. The remaining bytes are the same as the previous 3 fields, but shifted by 1 byte. - byte[0]: encoding type \u0026 embedding type - byte[1....]: similar to the above depending on the encoding type.", + "format": "byte", + "type": "string" + }, + "scaledFixedPoint4Encoding": { + "description": "- byte[0]: version - bytes[1...4]: scalar - bytes[5,...]: the values, one byte per 2 values", + "format": "byte", + "type": "string" + }, + "scaledFixedPoint8Encoding": { + "description": "- byte[0]: version - bytes[1...4]: scalar - bytes[5,...]: the values, one byte per value", + "format": "byte", + "type": "string" + }, + "scaledShiftedFixedPoint4Encoding": { + "description": "- byte[0]: version - bytes[1...4]: scalar - bytes[5...8]: shift - bytes[9,...]: the values, one byte per 2 values", + "format": "byte", + "type": "string" + }, + "versionAndImprovInfo": { + "description": "First 7 bits encode the version, then each chunck of 5 bits encode the index of a potential improv query (lsb to msb) -------|-----|-----|-----|-----|----- version| id1 | id2 | id3 | id4 | id5 where id1 is the index of the first improv query in the improv debug table. As of cl/270008220, this field only contains the version info. For backward compatibility, version still only uses the first 7 bits, and is still prepended by 5 1 bits.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityRankembedMustangMustangRankEmbedInfoCompressedEmbedding": { + "id": "QualityRankembedMustangMustangRankEmbedInfoCompressedEmbedding", + "properties": { + "packedValue": { + "description": "using fixed64 instead of uint64 saves ~14% is storage", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "value": { + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityRichsnippetsAppsProtosLaunchAppInfoPerDocData": { + "id": "QualityRichsnippetsAppsProtosLaunchAppInfoPerDocData", + "properties": { + "app": { + "items": { + "$ref": "QualityRichsnippetsAppsProtosLaunchableAppPerDocData" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityRichsnippetsAppsProtosLaunchableAppPerDocData": { + "description": "A subset of LaunchableApplication, which is stored in the PerDocData proto (indexer/perdocdata/perdocdata.proto) and thus stored in the Search Mustang index. It is used to identify documents containing app links at serving time by SuperRoot. A subset of LaunchableApplication is used to save on storage requirements.", + "id": "QualityRichsnippetsAppsProtosLaunchableAppPerDocData", + "properties": { + "indexStatus": { + "enum": [ + "DISCOVERED", + "VALIDATED" + ], + "enumDescriptions": [ + "This deeplink has been associated with a web document. There is no additional information whether the deeplink's content matches the web document's content.", + "The contents of this deeplink match the web document it is associated with." + ], + "type": "string" + }, + "packageIdFingerprint": { + "description": "Android package id of the application associated with this document (example: 'com.imdb.mobile'), encoded with the Fingerprint2011() function.", + "format": "uint64", + "type": "string" + }, + "perAppInfoEncoded": { + "description": "A subset of the data in the PerAppInfo message, encoded to save on space. See quality/calypso/utils/app_info_utils.h for encoding/decoding.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "QualitySalientCountriesSalientCountry": { + "description": "This is a measure of how salient this country is for the document.", + "id": "QualitySalientCountriesSalientCountry", + "properties": { + "country": { + "description": "2-letter country format.", + "type": "string" + }, + "salience": { + "description": "How salient this country is for the document. [0,1] range.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualitySalientCountriesSalientCountrySet": { + "description": "Set of SalientCountry for a document.", + "id": "QualitySalientCountriesSalientCountrySet", + "properties": { + "packedCountry": { + "description": "Packed Country and salience optimized for index storage", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "packedSalience": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "salientCountry": { + "items": { + "$ref": "QualitySalientCountriesSalientCountry" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualitySalientTermsDocData": { + "description": "DocData contains additional salient-term-set-level information that complements a SalientTermSet.", + "id": "QualitySalientTermsDocData", + "properties": { + "confidence": { + "description": "confidence is a measurement of how much data we had to compute the SalientTermSet. Range: [0.0, 1.0]", + "format": "float", + "type": "number" + }, + "headVolumeRatio": { + "description": "head_volume_ratio is the ratio of the sum of term frequency of the top K terms over the volume of all terms. Range: [0.0, 1.0]. K is defined by Accumulator2Params::head_size.", + "format": "float", + "type": "number" + }, + "language": { + "description": "language is the main language of this SalientTermSet.", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "signalData": { + "description": "signal_data contains signal-specific (e.g., body, anchors, clicks) data for this SalientTermSet.", + "items": { + "$ref": "QualitySalientTermsSignalData" + }, + "type": "array" + }, + "virtualVolume": { + "description": "virtual_volume is a measurement of how much data we had to compute the SalientTermSet. Range: [0.0, +infinity)].", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualitySalientTermsSalientTerm": { + "description": "SalientTerm can be two things depending on where this message is. When right under a SalientTermSet, it is a normalized term and weight pair, along with other term-level data. When under another SalientTerm message, it is a non-normalized original term (see original_term field).", + "id": "QualitySalientTermsSalientTerm", + "properties": { + "idf": { + "description": "idf of the original_term. Used by Accumulator2. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "label": { + "description": "label can be two things depending on where this message is. When right under a SalientTermSet, it is the normalized term returned by quality_salient_terms::utils::NormalizeTerm() from salient_terms_utils.h. When under another SalientTerm message, it is the original term as found in a signal (see original_term field).", + "type": "string" + }, + "originalTerm": { + "description": "original_term are the different ways we found this normalized term in the signals. They are in increasing idf order (the most common version first). An empty string means that this original term is the same as the label field in the parent SalientTerm message. NOTE: Please do not access this field directly. Use quality_salient_terms::utils::OriginalTermsIterator from salient_terms_utils.h instead.", + "items": { + "$ref": "QualitySalientTermsSalientTerm" + }, + "type": "array" + }, + "salience": { + "description": "salience is the importance of the term as a descriptor in [0, 1] (the higher the more important). This field takes precedence over weight field below. NOTE: Please do not access this field directly. Use quality_salient_terms::utils::GetSalience() from salient_terms_utils.h instead.", + "format": "float", + "type": "number" + }, + "signalTerm": { + "description": "signal_term contains extra signal-specific (e.g., body, anchors, clicks) data for this term.", + "items": { + "$ref": "QualitySalientTermsSignalTermData" + }, + "type": "array" + }, + "virtualTf": { + "description": "virtual_tf is the accumulated corrected term frequency from all the signals. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "weight": { + "description": "weight is the importance of the term as a descriptor in [0, 100] (the higher the more important). NOTE: Please do not access this field directly. Use quality_salient_terms::utils::GetSalience() from salient_terms_utils.h instead. DEPRECATED: prefer salience field above.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualitySalientTermsSalientTermSet": { + "description": "SalientTermSet is a collection of terms (unigrams and bigrams) with associated weights that can describe something. The \"salient terms\".", + "id": "QualitySalientTermsSalientTermSet", + "properties": { + "docData": { + "$ref": "QualitySalientTermsDocData", + "description": "doc_data contain additional salient-term-set-level data." + }, + "salientTerm": { + "description": "salient_term is the list of terms that are good descriptors, sorted in decreasing order of weight.", + "items": { + "$ref": "QualitySalientTermsSalientTerm" + }, + "type": "array" + }, + "version": { + "description": "version is the Salient Terms version used to create the SalientTermSet. This is specific to web documents salient terms.", + "enum": [ + "UNKNOWN", + "V1", + "V2", + "V2_1", + "V2_2", + "V3", + "V3_1", + "V3_2", + "V4", + "V4_1", + "V4_2", + "V5", + "V5_1", + "V1_BODYONLY", + "V2_BODYONLY", + "RENAME_ME_TO_ADD_NEW_ENUM_15", + "RENAME_ME_TO_ADD_NEW_ENUM_16", + "RENAME_ME_TO_ADD_NEW_ENUM_17", + "RENAME_ME_TO_ADD_NEW_ENUM_18", + "RENAME_ME_TO_ADD_NEW_ENUM_19", + "RENAME_ME_TO_ADD_NEW_ENUM_20", + "RENAME_ME_TO_ADD_NEW_ENUM_21", + "RENAME_ME_TO_ADD_NEW_ENUM_22", + "RENAME_ME_TO_ADD_NEW_ENUM_23", + "RENAME_ME_TO_ADD_NEW_ENUM_24" + ], + "enumDescriptions": [ + "In case an old binary doesn't know a recently added version.", + "Approximate AScorer version (ariane/104957).", + "Tucano version (ariane/115621).", + "Tucano 2.1 version (ariane/125789).", + "Tucano 2.2 version (ariane/139157).", + "Lyrebird: Salient Terms V3 (ariane/183676).", + "Lyrebird V2: Salient Terms V3.1 (ariane/194368).", + "Lyrebird V3: Salient Terms V3.2 (ariane/201742).", + "Lyrebird V4: Salient Terms V4 (ariane/279440).", + "Lyrebird V4.1: Salient Terms V4.1 (ariane/4015709 \u0026", + "ariane/4031318). Lyrebird V4.2: Salient Terms V4.2 (ariane/4057245)", + "Lyrebird V5: Salient Terms V5 (ariane/4076831)", + "Lyrebird V5.1: Salient Terms V5.1 (ariane/4144754)", + "Lyrebird BodyOnly V1.", + "Experimental version of Lyrebird BodyOnly V2.", + "Dummy enum values to be renamed when a new enum value is needed. Note that this is a requirement from go/cds-schema-council. If you rename one of these enum values, be sure to add (at least one) more below.", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "QualitySalientTermsSignalData": { + "description": "SignalData stores signal-specific salient-term-set-level information. Stores mostly internal data as it is one of the primary data structures used in the populators.", + "id": "QualitySalientTermsSignalData", + "properties": { + "bias": { + "description": "A fixed bias for this signal, the higher the stronger. This can be used to balance the weight of signals independently of the confidence we give it. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "confidence": { + "description": "The measurement of how much we trust this signal. Range: [0.0, 1.0] This field is available is both debug and non-debug mode.", + "format": "float", + "type": "number" + }, + "halfSalience": { + "description": "Raw saliences equal to half_salience will be equal to 0.5 normalized. Range: [0, volume]. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "noiseCorrection": { + "description": "The minimum TF for a term not to be considered noise. While the possible range of values for this field is [0, observed_volume], it is expected to be a somewhat small percentage of observed_volume (e.g. 5%). This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "observedConfidence": { + "description": "The measurement of how much we trust this signal, calculated using the observed volume. Range: [0.0, 1.0] This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "observedVolume": { + "description": "The amount of signal we observed for a document. Range: [0.0, +infinity) This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "rawVolume": { + "description": "The amount of raw signal we observed for a document. Range: [0.0, +infinity) This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "source": { + "description": "source is the type of the signal of this SignalData.", + "enum": [ + "BODY", + "ANCHORS", + "CLICKS", + "TITLE", + "NAME", + "DATE", + "URL", + "ENTITY_NAVBOOST", + "SYNTHETIC_BODY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "Only used for Entity Salient Terms.", + "Only used for Entity Salient Terms." + ], + "type": "string" + }, + "volume": { + "description": "The amount of signal left after applying all corrections. Range: [0.0, +infinity) This field is only available in debug mode.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualitySalientTermsSignalTermData": { + "description": "SignalTermData is signal-specific term-level information. Stores mostly internal data as it is one of the primary data structures used in the populators.", + "id": "QualitySalientTermsSignalTermData", + "properties": { + "bigramDiscountTf": { + "description": "The deduction of bigram counts from its unigram children. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "bigramness": { + "description": "How much we trust this bigram. For bigrams only. Range: [0.0, 1.0] This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "centrality": { + "description": "Measures how topical this term is to a particular signal. A term like \"lincoln\" in the Abraham Lincoln's Wikipedia page should have a centrality close to 1.0 while non-central terms like \"florida\" should have a centrality close to 0.0. Range: [0.0, 1.0] This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "correctedTf": { + "description": "The final term frequency for a particular term. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "expectedTf": { + "description": "The term frequency we were expecting for a term given its IDF. Range: [0, observed_volume] This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "globalNpmi": { + "description": "Global NPMI. For bigrams only. This is a measure of the quality of bigrams calculated using IDF. Range: [-1.0, 1.0] This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "idf": { + "description": "The IDF of the label of a particular term. For a canonical term, this is the mean IDF of its originals, weighted by their observed TF. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "isBigram": { + "description": "Whether or not this term is a bigram. This field is only available in debug mode.", + "type": "boolean" + }, + "label": { + "description": "Raw string that identifies a particular term. This field is only available in debug mode.", + "type": "string" + }, + "localNpmi": { + "description": "Local NPMI (normalized pointwise mutual information). For bigrams only. This is a measure of the quality of bigrams calculated using observed TF. Range: [-1.0, 1.0] This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "observedTf": { + "description": "The observed term frequency in a particular signal. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "originalTerm": { + "description": "The list of the original terms for a canonical. This is used in the pipeline and it is not present in the final output. This field is only available in debug mode.", + "items": { + "$ref": "QualitySalientTermsSignalTermData" + }, + "type": "array" + }, + "rawTf": { + "description": "The raw term frequency in a particular signal. This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "salience": { + "description": "The measure of how important this term is in this signal. Range: [0.0, 1.0] This field is only available in debug mode.", + "format": "float", + "type": "number" + }, + "source": { + "description": "source is the type of the signal of this SignalTermData.", + "enum": [ + "BODY", + "ANCHORS", + "CLICKS", + "TITLE", + "NAME", + "DATE", + "URL", + "ENTITY_NAVBOOST", + "SYNTHETIC_BODY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "Only used for Entity Salient Terms.", + "Only used for Entity Salient Terms." + ], + "type": "string" + } + }, + "type": "object" + }, + "QualitySherlockKnexAnnotation": { + "id": "QualitySherlockKnexAnnotation", + "properties": { + "item": { + "items": { + "$ref": "QualitySherlockKnexAnnotationItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualitySherlockKnexAnnotationItem": { + "id": "QualitySherlockKnexAnnotationItem", + "properties": { + "calibratedScore": { + "description": "in [0, 1].", + "format": "float", + "type": "number" + }, + "debugName": { + "type": "string" + }, + "equivalentMid": { + "description": "in /m/ or /g/.", + "type": "string" + }, + "score": { + "description": "in [0, 1].", + "format": "float", + "type": "number" + }, + "version": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityShoppingShoppingAttachment": { + "description": "This proto is a lightweight version of ShoppingAnnotation in docjoin attachment. We're doing a deep copy of protos defined in ShoppingAnnotation so that we can control individual fields that will sit in Muppet. Data here will be used for scoring organic shopping web results and previews. Many shopping related signals, e.g., product review score, are also served from this attachment. Next ID: 20", + "id": "QualityShoppingShoppingAttachment", + "properties": { + "datasetModelBuyingGuideScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelForumListScore": { + "description": "From forum and qna confidence score * 100, http://go/sdu-ugc-page-intro", + "format": "int32", + "type": "integer" + }, + "datasetModelForumSingleScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelInStoreOnlyScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelIndirectAvailabilityScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelMultiProductScore": { + "description": "From indexing.ml.PageType.confidence * 100 (DatasetModelAnnotation in cdoc) go/sdu-shopping-page-intro", + "format": "int32", + "type": "integer" + }, + "datasetModelProductComparisonScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelProductReviewScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelProductTopnScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelQnaListScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelQnaSingleScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelSingleProductScore": { + "format": "int32", + "type": "integer" + }, + "datasetModelSoldOutScore": { + "format": "int32", + "type": "integer" + }, + "expiredShoppingPageScore": { + "description": "From indexing.badpages.CollapserInfo.expired_shopping_page_score * 100", + "format": "int32", + "type": "integer" + }, + "multiProductScore": { + "description": "From MagicPageTypeAnnotation.multiplicity.confidence_score * 100 Deprecated as of July 2020 when dataset_model_multi_product_score and dataset_model_single_product_score were added.", + "format": "int32", + "type": "integer" + }, + "product": { + "items": { + "$ref": "QualityShoppingShoppingAttachmentProduct" + }, + "type": "array" + }, + "shoppingSiteScore": { + "description": "From ShoppingSiteClassifier.score * 100", + "format": "int32", + "type": "integer" + }, + "shoppingSiteScoreShopfab": { + "description": "From ShoppingSiteClassifierShopfab.score * 100", + "format": "int32", + "type": "integer" + }, + "singleProductScore": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityShoppingShoppingAttachmentLocale": { + "id": "QualityShoppingShoppingAttachmentLocale", + "properties": { + "languageId": { + "description": "Use integers for fast scoring. Note: 26 is UNKNOWN_LANGUAGE_ID, 0 is UNKNOWN region, see i18n::languages::Language and StableInternalRegionconverter Use -1 as default for both.", + "format": "int32", + "type": "integer" + }, + "regionId": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityShoppingShoppingAttachmentMokaFacetValue": { + "description": "Moka product attribute facet (go/gx).", + "id": "QualityShoppingShoppingAttachmentMokaFacetValue", + "properties": { + "facetId": { + "format": "int64", + "type": "string" + }, + "measureValue": { + "format": "double", + "type": "number" + }, + "tagId": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "QualityShoppingShoppingAttachmentOffer": { + "id": "QualityShoppingShoppingAttachmentOffer", + "properties": { + "condition": { + "enum": [ + "CONDITION_UNKNOWN", + "CONDITION_NEW", + "CONDITION_REFURBISHED", + "CONDITION_USED", + "CONDITION_OTHER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "controlType": { + "enum": [ + "OFFER_CONTROL_TYPE_UNKNOWN", + "OFFER_CONTROL_TYPE_MERCHANT_MANAGED", + "OFFER_CONTROL_TYPE_UNMANAGED" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "fingerprintOfOfferUrls": { + "description": "fingerprint of original offer item_urland mobile_offer_url (if present) to be able to understand if offer data came from different url.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "imageId": { + "description": "image_id is sorted and distinct for efficient search during serving.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "inferredImages": { + "description": "inferred_images are sorted by inferred_image_id for efficient search during serving.", + "items": { + "$ref": "ShoppingWebentityShoppingAnnotationInferredImage" + }, + "type": "array" + }, + "matchingType": { + "description": "information about methods used to match offer with indexed url. See shopping_annotation.proto", + "format": "int64", + "type": "string" + }, + "merchantAccountId": { + "description": "account_id of the merchant in shopping systems.", + "format": "int64", + "type": "string" + }, + "merchantItemId": { + "description": "merchant_item_id is meaningless without the merchant_account_id.", + "type": "string" + }, + "nonDisplayableBrandMerchantRelationship": { + "description": "direct to consumer brand merchant relationship", + "enum": [ + "OFFER_BRAND_MERCHANT_RELATIONSHIP_UNKNOWN", + "OFFER_BRAND_MERCHANT_RELATIONSHIP_DTC_CHANNEL" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "nonDisplayableCurrency": { + "type": "string" + }, + "nonDisplayableOrganicMscore": { + "description": "non_displayable_organic_mscore is a organic confidence score that a merchant will not cause financial or consumer trust damage. In range [0, 1]. See go/merchant-quality-score .", + "format": "float", + "type": "number" + }, + "offerDocid": { + "format": "uint64", + "type": "string" + }, + "refType": { + "enum": [ + "REFERENCE_TYPE_UNKNOWN", + "REFERENCE_TYPE_MAIN_OFFER_PAGE", + "REFERENCE_TYPE_OUTLINK" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "soriVersionId": { + "$ref": "ShoppingWebentityShoppingAnnotationSoriVersionId" + } + }, + "type": "object" + }, + "QualityShoppingShoppingAttachmentPBlock": { + "description": "Next ID: 15", + "id": "QualityShoppingShoppingAttachmentPBlock", + "properties": { + "fullTitle": { + "description": "Field full_title may contain duplicate info from title and list_title.", + "type": "string" + }, + "imageDocid": { + "description": "Ordering for `image_docid`, and `image_info` are the same.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "imageInfo": { + "items": { + "$ref": "QualityShoppingShoppingAttachmentPBlockImageInfo" + }, + "type": "array" + }, + "isFreeDelivery": { + "type": "boolean" + }, + "isFreeReturn": { + "type": "boolean" + }, + "listTitle": { + "type": "string" + }, + "maxPriceValue": { + "format": "float", + "type": "number" + }, + "minPriceValue": { + "format": "float", + "type": "number" + }, + "price": { + "type": "string" + }, + "priceCurrency": { + "type": "string" + }, + "priceValue": { + "format": "float", + "type": "number" + }, + "title": { + "description": "Product info extracted by Product Blocks go/sdu-shopping-page-intro and go/product-block-extraction. Here is an example of a page with a ## list_title (Shoes) and 3 blocks with their own titles: | Shoes | | ---------------------| | * For Running | | ---------------------| | * Men's Hiking | | ---------------------| ## | * Dress Shoes | The field full_title is what we constructed to best describe the product in the block. For example, for the above 3 blocks, their full_titles will contain info from list_title: \"Shoes For Running\", \"Shoes Men's Hiking\", \"Dress Shoes\". Note that the list_title is not repeated for the 3rd block Real sample pages: http://screen/6UaoBtwWsLfbSKg http://screen/BDHRgDonKG3KcXu, http://screen/53tLwNaX8mmYzDz", + "type": "string" + } + }, + "type": "object" + }, + "QualityShoppingShoppingAttachmentPBlockImageInfo": { + "id": "QualityShoppingShoppingAttachmentPBlockImageInfo", + "properties": { + "height": { + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityShoppingShoppingAttachmentProduct": { + "id": "QualityShoppingShoppingAttachmentProduct", + "properties": { + "aggregateRating": { + "$ref": "ShoppingWebentityShoppingAnnotationProductRating" + }, + "brandEntityId": { + "format": "uint64", + "type": "string" + }, + "catalogId": { + "format": "uint64", + "type": "string" + }, + "encodedProductSalientTerms": { + "format": "byte", + "type": "string" + }, + "globalProductClusterId": { + "format": "uint64", + "type": "string" + }, + "locale": { + "$ref": "QualityShoppingShoppingAttachmentLocale" + }, + "mokaFacet": { + "items": { + "$ref": "QualityShoppingShoppingAttachmentMokaFacetValue" + }, + "type": "array" + }, + "nonDisplayableDescription": { + "type": "string" + }, + "nonDisplayableTitle": { + "type": "string" + }, + "offer": { + "$ref": "QualityShoppingShoppingAttachmentOffer" + }, + "outlinkDomainRelationship": { + "description": "Whether an outlink points to the same domain or off-domain. Only added if the relationship is known, and the Offer has ref_type of OUTLINK.", + "enum": [ + "OUTLINK_TARGET_RELATIONSHIP_UNKNOWN", + "OUTLINK_TARGET_RELATIONSHIP_SAME_DOMAIN", + "OUTLINK_TARGET_RELATIONSHIP_OFF_DOMAIN" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "pblock": { + "$ref": "QualityShoppingShoppingAttachmentPBlock", + "description": "Client needs to make decision on which field to use when both non_displayable_title and pblock.final_title are present." + }, + "productClusterMid": { + "format": "uint64", + "type": "string" + }, + "productPopularity": { + "description": "Organic product popularity.", + "format": "double", + "type": "number" + }, + "relevanceEmbedding": { + "description": "Relevance embedding from ShoppingAnnotation.Product", + "items": { + "$ref": "QualityRankembedMustangMustangRankEmbedInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualitySitemapBreadcrumbTarget": { + "description": "Sitelink candidates that is generated from breadcrumbs.", + "id": "QualitySitemapBreadcrumbTarget", + "properties": { + "docs": { + "items": { + "$ref": "QualitySitemapBreadcrumbTargetDoc" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualitySitemapBreadcrumbTargetDoc": { + "id": "QualitySitemapBreadcrumbTargetDoc", + "properties": { + "count": { + "description": "The number of web pages that contains the url in their breadcrumbs.", + "format": "int32", + "type": "integer" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "QualitySitemapCoClickTarget": { + "id": "QualitySitemapCoClickTarget", + "properties": { + "docs": { + "items": { + "$ref": "QualitySitemapCoClickTargetDoc" + }, + "type": "array" + }, + "language": { + "type": "string" + } + }, + "type": "object" + }, + "QualitySitemapCoClickTargetDoc": { + "id": "QualitySitemapCoClickTargetDoc", + "properties": { + "coClickByLocale": { + "items": { + "$ref": "QualitySitemapCoClickTargetDocCoClickByLocale" + }, + "type": "array" + }, + "title": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "QualitySitemapCoClickTargetDocCoClickByLocale": { + "id": "QualitySitemapCoClickTargetDocCoClickByLocale", + "properties": { + "coClicks": { + "format": "float", + "type": "number" + }, + "coClicksCapped": { + "format": "float", + "type": "number" + }, + "coClicksParent": { + "format": "float", + "type": "number" + }, + "locale": { + "type": "string" + } + }, + "type": "object" + }, + "QualitySitemapScoringSignals": { + "description": "Scoring signals for computing the sitelink score. This message is currently intended only for debugging. Accordingly, this is populated in CDoc but not in MDU. It is enforced by the [(exclude_from_mdu) = true] annotation of the corresponding fields in Target and TargetGroup.", + "id": "QualitySitemapScoringSignals", + "properties": { + "annotations": { + "items": { + "enum": [ + "UNSET", + "LOW_RELATIVE_CONFIDENCE_IMPRESSIONS" + ], + "enumDescriptions": [ + "As per Protocol buffer best practice.", + "" + ], + "type": "string" + }, + "type": "array" + }, + "chromeTransCount": { + "format": "uint64", + "type": "string" + }, + "chromeTransProb": { + "format": "float", + "type": "number" + }, + "chromeWeight": { + "format": "float", + "type": "number" + }, + "country": { + "items": { + "type": "string" + }, + "type": "array" + }, + "countryConfidence": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "impressions": { + "format": "uint64", + "type": "string" + }, + "langConfidence": { + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "language": { + "items": { + "type": "string" + }, + "type": "array" + }, + "localCountryIdentifier": { + "items": { + "type": "string" + }, + "type": "array" + }, + "longClicks": { + "format": "uint64", + "type": "string" + }, + "longCtr": { + "format": "float", + "type": "number" + }, + "navboostScore": { + "format": "float", + "type": "number" + }, + "navmenuScore": { + "format": "float", + "type": "number" + }, + "pagerank": { + "format": "int32", + "type": "integer" + }, + "recentLongCtr": { + "format": "float", + "type": "number" + }, + "targetCdocLanguages": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "titleScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualitySitemapSubresult": { + "description": "Information about a single sub-result.", + "id": "QualitySitemapSubresult", + "properties": { + "docid": { + "format": "uint64", + "type": "string" + }, + "itemMetadata": { + "$ref": "QualitySitemapThirdPartyCarouselsListItemMuppetMetadata" + } + }, + "type": "object" + }, + "QualitySitemapSubresultList": { + "description": "A container for encapsulating a list of sub-results.", + "id": "QualitySitemapSubresultList", + "properties": { + "subresult": { + "items": { + "$ref": "QualitySitemapSubresult" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualitySitemapTarget": { + "description": "Represents a single sitelink target, contains basic information used to display the target (such as url and title) and to, maybe, dynamically change the way targets are selected and/or ranked (such as score and is_mobile). Please update the TargetInternal message if you make a change to this proto. See \"Note on adding new fields\".", + "id": "QualitySitemapTarget", + "properties": { + "DEPRECATEDSnippet": { + "items": { + "type": "string" + }, + "type": "array" + }, + "isGoodForMobile": { + "type": "boolean" + }, + "isMobileN1dup": { + "type": "boolean" + }, + "languages": { + "description": "The languages of the document, taken from its cdoc.properties().languages()", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "salientImage": { + "$ref": "WWWResultInfoSubImageDocInfo", + "description": "The image data will be copied from the DocInfo response, and will be retrieved online, so this field should not be populated during indexing. This is a temporary field for experimentation." + }, + "score": { + "format": "float", + "type": "number" + }, + "scoringSignals": { + "$ref": "QualitySitemapScoringSignals" + }, + "sectionTexts": { + "description": "Section texts used for Page Anchors Preview (go/page-anchor-preview-dd).", + "items": { + "type": "string" + }, + "type": "array" + }, + "snippetResponse": { + "$ref": "GenericSnippetResponse", + "description": "The snippet response for the target document for an empty query." + }, + "sourceAnchor": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "twoLevelScore": { + "format": "float", + "type": "number" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "QualitySitemapTargetGroup": { + "description": "Represents a set of targets. The group may have a label field to uniquely identify this target group among others - for instance, if these targets' titles were generated using an alternative title algorithm, the label can be \"newtitles\". See \"Note on adding new fields\".", + "id": "QualitySitemapTargetGroup", + "properties": { + "DEPRECATEDCountry": { + "format": "int32", + "type": "integer" + }, + "Target": { + "items": { + "$ref": "QualitySitemapTarget" + }, + "type": "array" + }, + "allTargetsNamedAnchors": { + "description": "If all the targets in this group are named anchors on the source page.", + "type": "boolean" + }, + "allTargetsNamedTopictagsScrollto": { + "description": "If all the targets in this group are named topictags_scrollto on the source page.", + "type": "boolean" + }, + "breadcrumbTarget": { + "$ref": "QualitySitemapBreadcrumbTarget" + }, + "coClickTarget": { + "items": { + "$ref": "QualitySitemapCoClickTarget" + }, + "type": "array" + }, + "countryCode": { + "type": "string" + }, + "label": { + "type": "string" + }, + "language": { + "format": "int32", + "type": "integer" + }, + "modifiedByHostcardHandler": { + "type": "boolean" + }, + "scoringSignals": { + "$ref": "QualitySitemapScoringSignals" + }, + "topUrl": { + "description": "A list of top urls with highest two_level_score, i.e., chrome_trans_clicks.", + "items": { + "$ref": "QualitySitemapTopURL" + }, + "type": "array" + }, + "twoLevelTarget": { + "items": { + "$ref": "QualitySitemapTwoLevelTarget" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualitySitemapThirdPartyCarouselsListItemMuppetMetadata": { + "description": "A set of metadata about a list item that is passed on to Muppet from indexing.", + "id": "QualitySitemapThirdPartyCarouselsListItemMuppetMetadata", + "properties": { + "urlFoundOnPage": { + "description": "DEPRECATED. No longer populated, and not used anywhere.", + "type": "boolean" + } + }, + "type": "object" + }, + "QualitySitemapTopURL": { + "id": "QualitySitemapTopURL", + "properties": { + "score": { + "format": "float", + "type": "number" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "QualitySitemapTwoLevelTarget": { + "id": "QualitySitemapTwoLevelTarget", + "properties": { + "firstLevelTarget": { + "$ref": "QualitySitemapTarget" + }, + "secondLevelTarget": { + "items": { + "$ref": "QualitySitemapTarget" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityTimebasedLastSignificantUpdate": { + "id": "QualityTimebasedLastSignificantUpdate", + "properties": { + "date": { + "description": "LastSignificantUpdate as UNIX timestamp in seconds. This is the new signal (go/lsu-dd) from LSU Selector V2 (once that is enabled, see b/171879888 for status), falling back to the legacy V1 signal if the V2 signal does not exist. Please use the 'source' field to determine where the value comes from.", + "format": "int64", + "type": "string" + }, + "source": { + "description": "The source the signal comes from.", + "enum": [ + "UNSET", + "LSU_V1", + "LSU_V2_UPDATE_MARKUP_SUPPORTED_BY_CONTENTAGE", + "LSU_V2_UPDATE_MARKUP_SUPPORTED_BY_ANNOTATION", + "LSU_V2_ANNOTATION_WITH_UPDATE_TAG", + "LSU_V2_PUBLICATION_MARKUP_SUPPORTED_BY_CONTENTAGE", + "LSU_V2_PUBLICATION_MARKUP_SUPPORTED_BY_ANNOTATION", + "LSU_V2_ANNOTATION_WITH_PATTERN_BYLINE_TAG", + "LSU_V2_RELIABLE_CONTENT_AGE_SUPPORTED_BY_ANNOTATION" + ], + "enumDescriptions": [ + "", + "The signal from legacy selector (quality/timebased/lastsignificantupdate/lsu-selector.h). It's a fallback for clients relying on ~100% recall of the signal.", + "The signal comes from update markup date supported by ContentAge.", + "The signal comes from update markup date supported by annotation.", + "The signal comes from date annotation representing update date of a page.", + "The signal comes from publication markup date supported by ContentAge.", + "The signal comes from publication markup date supported by annotation.", + "The signal comes from date annotation often selected as a byline.", + "The signal comes from ContentAge that's supported by date annotation." + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityTimebasedOldnessInfo": { + "id": "QualityTimebasedOldnessInfo", + "properties": { + "isOldPage": { + "description": "Set to true if this page is considered old.", + "type": "boolean" + } + }, + "type": "object" + }, + "QualityTimebasedPageType": { + "id": "QualityTimebasedPageType", + "properties": { + "isForumPage": { + "description": "Set to true if this page is classified as a forum page.", + "type": "boolean" + }, + "isPageWithFreshRepeatedDates": { + "description": "Set to true if this page has a fresh repeated date sequence.", + "type": "boolean" + }, + "isQnaPage": { + "description": "Set to true if this page is classified as a question answers page.", + "type": "boolean" + } + }, + "type": "object" + }, + "QualityTimebasedSyntacticDate": { + "description": "Next ID: 21", + "id": "QualityTimebasedSyntacticDate", + "properties": { + "bylineDate": { + "description": "The following field is set only when the byline date is different from the \"date\" field above. Currently this happens when the byline date is within the 24 hours of the crawl time, or close but not exactly the same as blog post date due to time zone. The syntactic date is never later than the crawl time. NOTE: If this field is set, use_as_byline_date will be meaningless, and better to be cleared.", + "format": "int64", + "type": "string" + }, + "date": { + "description": "The number of seconds since epoch (Jan 1, 1970). This can be negative to indicate a publication date that is before 1970. For example, the ones from NY Times archive: \"http://select.nytimes.com/gst/abstract.html?res=F10B13FB3D5A10728FDDAF089\" \"4DD405B8588F1D3\u0026scp=91\u0026sq=world+war+II\u0026st=p\"", + "format": "int64", + "type": "string" + }, + "daterange": { + "$ref": "QualityTimebasedSyntacticDateDateRange" + }, + "debugInfo": { + "type": "string" + }, + "fromExplicitTimeZone": { + "description": "If set to true, the source of the date has explicit time zone specification. Note: This is only used internally and should not be populated in docjoins.", + "type": "boolean" + }, + "info": { + "description": "Used to store extra information about the syntactic date. For now only two bits are set. Please refer to the encoding/decoding functions provided in: quality/timebased/syntacticdate/util.h Bit 1 = High confidence byline. This bit is set if the syntactic date has a byline date and this date is considered to be high confidence. Bit 2 = High confidence byline without content age. This bit is set if the syntactic date has a byline date and this date is considered to be high confidence without support from content age.", + "format": "int32", + "type": "integer" + }, + "position": { + "$ref": "QualityTimebasedSyntacticDatePosition" + }, + "precisionMark": { + "description": "The precision mark should be of type PRECISION_MARK.", + "format": "int32", + "type": "integer" + }, + "syntacticDateNotForRestrict": { + "description": "If this is true, do not use syntactic date in date restricts.", + "type": "boolean" + }, + "timeZoneOffsetSeconds": { + "description": "Indicates the time zone offset in seconds applied to derive `date' in UTC. Example: Annotation: \"1pm PST\" (UTC-8) =\u003e -8 * 3600 = -28800 Note: This is only used internally and should not be populated in docjoins.", + "format": "int64", + "type": "string" + }, + "trustSyntacticDateInRanking": { + "description": "This bit is set if we believe that the syntactic date is really high confidence, but does not qualify as a byline date.", + "type": "boolean" + }, + "useAsBylineDate": { + "description": "Whether this date is good for display as the snippet byline date.", + "type": "boolean" + }, + "useInTimeZoneGuessingMode": { + "description": "This bit is set if the syntactic date is good to be used in site-level timezone guessing statistics calculation. (The date should be absolute date having a timestamp with hour and minute level information. It can come with or without time zone information, which is indicated in from_explicit_time_zone field defined below.)", + "type": "boolean" + }, + "useRangeInsteadOfDateForRestrict": { + "description": "If true, the DateRange is used as date restrict, if false, the date is used as date restrict. Has no effect if syntactic_date_not_for_restrict is true.", + "type": "boolean" + } + }, + "type": "object" + }, + "QualityTimebasedSyntacticDateDateRange": { + "description": "If the single date (plus the precision mark) is still not good enough, we will use the following fields for a date range. In this case, the fields above may all be empty.", + "id": "QualityTimebasedSyntacticDateDateRange", + "properties": { + "end": { + "format": "int64", + "type": "string" + }, + "start": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "QualityTimebasedSyntacticDatePosition": { + "description": "The following positions are the byte offset in doc body, which is consistent with the date annotations. (See google3/repository/annotations/proto/annotations.proto) These are given when we want to use the date as a byline date, so the snippet generating code will know the positions.", + "id": "QualityTimebasedSyntacticDatePosition", + "properties": { + "begin": { + "format": "int32", + "type": "integer" + }, + "end": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "QualityTravelGoodSitesData": { + "description": "Protocol message for data related to good travel sites. This data is stored as signals data in docjoins.", + "id": "QualityTravelGoodSitesData", + "properties": { + "i18n": { + "items": { + "$ref": "QualityTravelGoodSitesDataI18n" + }, + "type": "array" + }, + "isAggr": { + "type": "boolean" + }, + "isAttractionOfficial": { + "type": "boolean" + }, + "isEntity": { + "type": "boolean" + }, + "isHotelOfficial": { + "type": "boolean" + }, + "normalizationFactor": { + "description": "Factor that determines how local anchor credit is scaled before being added to global anchors.", + "format": "float", + "type": "number" + }, + "signal": { + "items": { + "$ref": "QualityTravelGoodSitesDataSignal" + }, + "type": "array" + }, + "site": { + "type": "string" + }, + "totalScore": { + "description": "Site quality score, which determines the site type.", + "format": "float", + "type": "number" + }, + "type": { + "enum": [ + "NOT_GOOD", + "LOCAL_OKAY", + "OKAY", + "GOOD", + "OFFICIAL", + "NUM_TYPES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityTravelGoodSitesDataI18n": { + "id": "QualityTravelGoodSitesDataI18n", + "properties": { + "locale": { + "type": "string" + }, + "type": { + "enum": [ + "NOT_GOOD", + "LOCAL_OKAY", + "OKAY", + "GOOD", + "OFFICIAL", + "NUM_TYPES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityTravelGoodSitesDataSignal": { + "description": "Raw signals that determine the site quality score.", + "id": "QualityTravelGoodSitesDataSignal", + "properties": { + "name": { + "type": "string" + }, + "value": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "QualityVidyaVideoLanguageVideoLanguage": { + "description": "Audio-based language information about a Watch Page. For more information: https://g3doc.corp.google.com/video/timedtext/g3doc/ali.md", + "id": "QualityVidyaVideoLanguageVideoLanguage", + "properties": { + "language": { + "description": "Audio language of video classified by Automatic Language Identification. It corresponds to the first language (the highest confidence) in ALIResults.lang_results.", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "speechClass": { + "description": "Type of detected speech.", + "enum": [ + "UNKNOWN", + "NO_SPEECH", + "HAS_SPEECH_FOR_ASR" + ], + "enumDescriptions": [ + "Unspecified, or string label not recognized.", + "", + "Currently corresponds to simple speech" + ], + "type": "string" + } + }, + "type": "object" + }, + "QualityViewsExtractionClusterInfo": { + "description": "Stores cluster scoring information for an entity Next Id: 6", + "id": "QualityViewsExtractionClusterInfo", + "properties": { + "clusterId": { + "description": "The cluster_id represents the id of the set entity that WebRef provides.", + "type": "string" + }, + "clusterSetScore": { + "description": "Cluster set qref confidence score.", + "format": "float", + "type": "number" + }, + "clusterSiblingMid": { + "description": "The mids of cluster members that are part of the same cluster. Note that cluster members may end up having their own interpretation (EntityInfo which includes a ClusterInfo) or not (eg because they do not explain the full query, and so aqua does not output an interpretation for them). The latter case (a cluster member is output only as part of this field), is equivalent to its score being 0.", + "items": { + "type": "string" + }, + "type": "array" + }, + "score": { + "description": "The score represents the score of the entity within the cluster.", + "format": "float", + "type": "number" + }, + "subCluster": { + "items": { + "$ref": "QualityViewsExtractionClusterInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityWebanswersTranscriptAnnotations": { + "description": "Wraps other annotations that are run over auto-generated video captions.", + "id": "QualityWebanswersTranscriptAnnotations", + "properties": { + "videoTranscriptAnnotations": { + "items": { + "$ref": "QualityWebanswersVideoTranscriptAnnotations" + }, + "type": "array" + } + }, + "type": "object" + }, + "QualityWebanswersVideoTranscriptAnnotations": { + "id": "QualityWebanswersVideoTranscriptAnnotations", + "properties": { + "amarnaDocid": { + "description": "Should precisely match the amarna_docid in ContentBasedVideoMetadata.", + "type": "string" + }, + "lang": { + "description": "The language of the transcript as recorded in Amarna.", + "type": "string" + }, + "punctuatedTranscript": { + "type": "string" + }, + "saftDocument": { + "$ref": "NlpSaftDocument" + }, + "saftSentenceBoundary": { + "$ref": "SentenceBoundaryAnnotations" + }, + "timingInfo": { + "$ref": "QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotations", + "description": "Timing information that maps sentence boundaries in the punctuated transcript with timing offsets for the start and end of those sentences." + }, + "webrefEntities": { + "$ref": "RepositoryWebrefWebrefEntities" + } + }, + "type": "object" + }, + "QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotations": { + "description": "YouTube caption timing information for http://go/video-answers.", + "id": "QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotations", + "properties": { + "durationMs": { + "format": "int32", + "type": "integer" + }, + "instances": { + "items": { + "$ref": "QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotationsInstance" + }, + "type": "array" + }, + "uploaderName": { + "type": "string" + } + }, + "type": "object" + }, + "QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotationsInstance": { + "description": "Byte-offset and timing information in videos. In CompositeDoc, we will store the instance per sentence.", + "id": "QualityWebanswersVideoYouTubeCaptionTimingInfoAnnotationsInstance", + "properties": { + "begin": { + "description": "Byte offsets in HTML. begin is inclusive and end is exclusive.", + "format": "int32", + "type": "integer" + }, + "end": { + "format": "int32", + "type": "integer" + }, + "videoBeginMs": { + "format": "int32", + "type": "integer" + }, + "videoEndMs": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RegistrationInfo": { + "description": "Domain registration information for the document. NEXT ID TO USE: 3", + "id": "RegistrationInfo", + "properties": { + "createdDate": { + "description": "This is the number of days since January 1st 1995 that this domain was last created. This should always fit in 15 bits.", + "format": "int32", + "type": "integer" + }, + "expiredDate": { + "description": "This is the number of days since January 1st 1995 that this domain last expired. This should always fit in 15 bits. Jan 1st 1995 was chosen by the history project as a special epoch date. Both the registrationinfo dates and the linkage dates are measured in days since this epoch.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryAnnotationsGeoTopic": { + "description": "GeoTopicality of a document is a set of GeoTopics ordered by their normalized scores.", + "id": "RepositoryAnnotationsGeoTopic", + "properties": { + "address": { + "$ref": "GeostoreAddressProto", + "description": "Stores parent/container information containing city, province \u0026 country." + }, + "componentScores": { + "description": "The raw scores used to calculate the normalized_score. Note that not all these scores may be exposed to the users.", + "items": { + "$ref": "RepositoryAnnotationsGeoTopicalityScore" + }, + "type": "array" + }, + "confidence": { + "description": "A score [0, 1] indicating the confidence.", + "format": "float", + "type": "number" + }, + "denseCity": { + "description": "Is this a dense city (e.g., population \u003e 100k)?", + "type": "boolean" + }, + "establishmentType": { + "description": "Sub type for POI types like ESTABLISHMENT_POI, ESTABLISHMENT_GROUNDS \u0026 ESTABLISHMENT_BUILDING", + "format": "int32", + "type": "integer" + }, + "latE7": { + "description": "Latitude and Longitude of the location.", + "format": "uint32", + "type": "integer" + }, + "lngE7": { + "format": "uint32", + "type": "integer" + }, + "locationName": { + "description": "Name of the Geographic location. This is the normalized name.", + "type": "string" + }, + "normalizedScore": { + "description": "A score [0, 1] indicating the likelihood of the location being the GeoTopicality.", + "format": "float", + "type": "number" + }, + "oysterId": { + "$ref": "GeostoreFeatureIdProto", + "description": "Oyster Feature ID of the location." + }, + "oysterType": { + "description": "Oyster Feature Type", + "format": "int32", + "type": "integer" + }, + "sumContainedPoiNormalizedScores": { + "description": "The sum of the normalized scores of POIs contained within a particular locality.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryAnnotationsGeoTopicality": { + "id": "RepositoryAnnotationsGeoTopicality", + "properties": { + "geotopics": { + "description": "The geotopics are ordered by normalized_score in descending order.", + "items": { + "$ref": "RepositoryAnnotationsGeoTopic" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryAnnotationsGeoTopicalityScore": { + "id": "RepositoryAnnotationsGeoTopicalityScore", + "properties": { + "rawScore": { + "format": "float", + "type": "number" + }, + "type": { + "enum": [ + "TITLE_SCORE", + "LEADING_MENTIONS_SCORE", + "QUALIFIER_BOOST", + "TAG_BOOST", + "FREQUENCY_SCORE", + "AVERAGE_PARENT_BOOST", + "OVERALL_SCORE", + "ON_PAGE_NORMALIZED_SCORE", + "OFF_PAGE_NORMALIZED_SCORE", + "ANCHOR_COUNT", + "ENDMARKER_FOR_SCORES" + ], + "enumDescriptions": [ + "On-Page Scores Indicates the presence of the geopoint in the title of the document. Range of values - [0, 2].", + "Indicates the presence of the geopoint in the leading few tokens of the document. This is useful for newspaper articles where the significant location is byline. Range of values - [0, infinity].", + "Boost associated with the presence of CandidateGeoPointAnnotationTags RESOLVED_BY_FQGA. This is pretty common for Byline locations. Range of values - [0, infinity]", + "Boost associated with the presence of the rest of the CandidateGeoPointAnnotationTags. Range of values - [0, infinity]", + "Score associated with the number of mentions of the location in the document. This is a log function of the number of mentions.", + "Score associated with the parental support (support by parent features) for the location. Range of values - [0, 1.0)", + "Overall Score obtained by the combining all the individual scores. Range of values - [0, infinity]", + "A score [0, 1] indicating the likelihood of the location being GeoTopicality using on page signals.", + "Off-Page Scores A score [0, 1] indicating the likelihood of the location being GeoTopicality using off-page signals (mainly incoming links).", + "Number of incoming links to the document with the location in question being part of the anchor text. Range of values [0, infinity]", + "This value should be one bigger than the largest Score that is actually used." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryAnnotationsMustangSentimentSnippetAnnotations": { + "description": "A conceptual structure for storing sentiment snippet information in mustang. Essentially an adaptation of PhraseAnnotationProperties from //repository/annotations/proto/annotations.proto.", + "id": "RepositoryAnnotationsMustangSentimentSnippetAnnotations", + "properties": { + "deprecatedMagnitude": { + "description": "Deprecated: use snippet_score instead", + "format": "float", + "type": "number" + }, + "deprecatedPolarity": { + "description": "Deprecated: use snippet_score instead", + "format": "float", + "type": "number" + }, + "end": { + "format": "int32", + "type": "integer" + }, + "isTruncated": { + "type": "boolean" + }, + "phraseType": { + "enum": [ + "UNKNOWN", + "POSITIVE", + "NEGATIVE", + "MIXED", + "NEUTRAL" + ], + "enumDescriptions": [ + "Not analyzed.", + "", + "", + "Sentiment is present, but neither positive or negative is clearly prevailing.", + "There is no significant sentiment present." + ], + "type": "string" + }, + "snippetScore": { + "format": "int32", + "type": "integer" + }, + "snippetText": { + "description": "This protobuffer is serving double duty as both a Mustang attachment and the response proto that gets returned by Mustang in the WWWSnippetResponse's info MessageSet. When stored as an attachment, this field will always be empty. However, when returned with the WWWSnippetResponse, Mustang will print and store the actual sentiment snippet's text here.", + "type": "string" + }, + "start": { + "description": "begin and end are token offsets.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryAnnotationsRdfaBreadcrumbs": { + "id": "RepositoryAnnotationsRdfaBreadcrumbs", + "properties": { + "crumb": { + "description": "Each crumb represents one link of the breadcrumb chain.", + "items": { + "$ref": "RepositoryAnnotationsRdfaCrumb" + }, + "type": "array" + }, + "url": { + "description": "The URL of the document from which this breadcrumb trail was extracted.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryAnnotationsRdfaCrumb": { + "description": "The information contained in a single crumb.", + "id": "RepositoryAnnotationsRdfaCrumb", + "properties": { + "title": { + "description": "The text that represented this crumb in the document.", + "type": "string" + }, + "url": { + "description": "The URL linked from this crumb.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryAnnotationsRdfaRdfaRichSnippetsApplication": { + "description": "This structure holds data for application information for rich snippets Next ID: 48", + "id": "RepositoryAnnotationsRdfaRdfaRichSnippetsApplication", + "properties": { + "applicationUrl": { + "description": "Fields for internal use", + "type": "string" + }, + "breadcrumbs": { + "$ref": "RepositoryAnnotationsRdfaBreadcrumbs" + }, + "category": { + "description": "Application information.", + "items": { + "type": "string" + }, + "type": "array" + }, + "countriesSupported": { + "description": "These are currently used only for Google Play.", + "items": { + "type": "string" + }, + "type": "array" + }, + "countryPrices": { + "items": { + "$ref": "RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationCountryPrice" + }, + "type": "array" + }, + "currency": { + "type": "string" + }, + "description": { + "type": "string" + }, + "devConsoleId": { + "description": "Developer console ID of the app if it exists. The ID is available for an app registered to Google Developers Console, not Play Developer Console.", + "type": "string" + }, + "extractedIconColor": { + "description": "Top 1 of extracted icon colors. We keep this field for backward compatibility.", + "format": "int32", + "type": "integer" + }, + "extractedIconColors": { + "description": "Top 10 of extracted icon colors. r = (rgb \u003e\u003e 16) \u0026 0xff; g = (rgb \u003e\u003e 8) \u0026 0xff; b = rgb \u0026 0xff;", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "filteringTag": { + "description": "Tags to be indexed for filtering, e.g. \"ft_popular_score_gt_1m\".", + "items": { + "type": "string" + }, + "type": "array" + }, + "genre": { + "items": { + "type": "string" + }, + "type": "array" + }, + "hasEditorsChoiceBadge": { + "description": "Whether the app has editors choice tag", + "type": "boolean" + }, + "iconUrlHref": { + "description": "Icon and Screenshots", + "type": "string" + }, + "iconUrlThumbnail": { + "type": "string" + }, + "inAppPurchase": { + "description": "Whether the app offers in-app purchase.", + "type": "boolean" + }, + "isDefaultLangLocale": { + "description": "Indicates if the localized data comes from default locale. This is needed because the default localized data does not specify its locale. If this is true, lang_locale may not be the correct locale and should be ignored.", + "type": "boolean" + }, + "langLocale": { + "description": "locale for the localized data, such as name, description and screenshots", + "type": "string" + }, + "lastUpdated": { + "type": "string" + }, + "marketplace": { + "description": "Market Android or itunes", + "type": "string" + }, + "name": { + "type": "string" + }, + "numDownloads": { + "type": "string" + }, + "operatingSystems": { + "description": "See google3/quality/richsnippets/schema/data/operating_systems_rules.txt for possible values.", + "items": { + "type": "string" + }, + "type": "array" + }, + "optionalResult": { + "description": "Whether this App is optional result for Grid UI.", + "type": "boolean" + }, + "originalRating": { + "type": "string" + }, + "physicalDeviceTags": { + "items": { + "enum": [ + "UNKNOWN_MOBILE", + "IOS_IPHONE_OR_IPOD", + "IOS_IPAD" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "platformTags": { + "items": { + "enum": [ + "UNKNOWN_BROWSER", + "CHROME", + "FIREFOX" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "popularScore": { + "format": "float", + "type": "number" + }, + "price": { + "description": "Price", + "type": "string" + }, + "rating": { + "description": "Ratings and reviews Either for this version only or for all versions to be displayed.", + "type": "string" + }, + "ratingCount": { + "type": "string" + }, + "releaseDate": { + "type": "string" + }, + "reviewAuthor": { + "type": "string" + }, + "reviewCount": { + "type": "string" + }, + "screenUrlHref": { + "items": { + "type": "string" + }, + "type": "array" + }, + "screenUrlThumbnail": { + "items": { + "type": "string" + }, + "type": "array" + }, + "size": { + "description": "bytes or numeric with MB or GB", + "type": "string" + }, + "subcategory": { + "items": { + "type": "string" + }, + "type": "array" + }, + "supportsAndroidTv": { + "description": "Whether this App supports Android TV. Note that some App supports more than one platforms. So we would use boolean for a platform.", + "type": "boolean" + }, + "supportsChromecast": { + "description": "Whether this App supports Google Cast.", + "type": "boolean" + }, + "totalRating": { + "format": "float", + "type": "number" + }, + "totalRatingCount": { + "description": "Rating_count including all versions of this application.", + "format": "int32", + "type": "integer" + }, + "trustedGenomeData": { + "additionalProperties": { + "$ref": "VendingConsumerProtoTrustedGenomeAnnotation" + }, + "description": "Trusted Genome data with categorical app information key: locale (e.g. en, en_US)", + "type": "object" + }, + "vendor": { + "description": "Vendor", + "type": "string" + }, + "vendorCanonicalUrl": { + "type": "string" + }, + "vendorUrl": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationCountryPrice": { + "id": "RepositoryAnnotationsRdfaRdfaRichSnippetsApplicationCountryPrice", + "properties": { + "countryCode": { + "type": "string" + }, + "currencyCode": { + "description": "ISO 4217 currency code.", + "type": "string" + }, + "price": { + "description": "Price string converted from double value in a standard currency unit, like '199.35' or '1400'.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefAbsoluteLegacyId": { + "description": "Represents a unique id for each entity. It contains the domain, entity type and a legacy_id that is unique within that space. This protocol buffer stems from a time when we were building our model based on entities from different sources. Nowadays the domain_name and entity_type_name can be ignored and the legacy_id is the Knowledge Graph mid except in some WebRef internal pipelines such as reconciliation where it is still a vertical specific id. Current usages (see GetKey and SetKey in entity-join-util.cc): domain_name = \"FreebaseDomain\", entity_type_name = \"Topic\" domain_name = \"GeoDomain\", entity_type_name = \"Geo\" domain_name = \"ProductsDomain\", entity_type_name = \"Product\" domain_name = \"ProductsDomain\", entity_type_name = \"ProductCluster\" domain_name = \"UniversalDomain\", entity_type_name = \"Concept\"", + "id": "RepositoryWebrefAbsoluteLegacyId", + "properties": { + "domainName": { + "type": "string" + }, + "entityTypeName": { + "type": "string" + }, + "legacyId": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefAggregatedEntityNameScores": { + "description": "Represents the aggregated score of the entities for a given name, aggregated over all sources. Next available tag: 3.", + "id": "RepositoryWebrefAggregatedEntityNameScores", + "properties": { + "entityScore": { + "items": { + "$ref": "RepositoryWebrefEntityNameScore" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefAnchorIndices": { + "description": "Identifies a set of anchors in the CompositeDoc. Typically these anchors were collapsed by WebRef into a single anchor and they were treated by the annotator as equivalent. They all contain the same mentions (at the same offsets).", + "id": "RepositoryWebrefAnchorIndices", + "properties": { + "index": { + "description": "The set of indices in the Anchors::anchor() array that belong to the collapsed anchors.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefAnnotatedCategoryInfo": { + "description": "Information about a category annotation on a name.", + "id": "RepositoryWebrefAnnotatedCategoryInfo", + "properties": { + "debugString": { + "description": "A debug string for the category.", + "type": "string" + }, + "listiness": { + "description": "Listiness score of the category.", + "format": "float", + "type": "number" + }, + "mid": { + "description": "The mid of the entity representing the category.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefAnnotationDebugInfo": { + "description": "Debug info about the concept annotations. Note that it might not be present in the output.", + "id": "RepositoryWebrefAnnotationDebugInfo", + "properties": { + "description": { + "type": "string" + }, + "infoString": { + "items": { + "type": "string" + }, + "type": "array" + }, + "rawClassification": { + "$ref": "EntitySignalsEntityClassification", + "description": "Raw classification output from relevance classifier for classifier training and debugging. See http://go/entityclassifier for details on the classifier." + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefAnnotationRatings": { + "description": "Human ratings of webref annotations (document-level ratings, mention-level ratings, etc.).", + "id": "RepositoryWebrefAnnotationRatings", + "properties": { + "docLevelRelevanceRatings": { + "$ref": "RepositoryWebrefDocLevelRelevanceRatings" + } + }, + "type": "object" + }, + "RepositoryWebrefAnnotationStatsPerType": { + "description": "Annotation statistics for each token type. Next available tag: 8.", + "id": "RepositoryWebrefAnnotationStatsPerType", + "properties": { + "avgOpenWorld": { + "description": "The average score for the open world for: - all ranges of this segment_type; - all capitalized ranges of this segment_type; - all uncapitalized ranges of this segment_type.", + "format": "float", + "type": "number" + }, + "avgOpenWorldCap": { + "format": "float", + "type": "number" + }, + "avgOpenWorldUncap": { + "format": "float", + "type": "number" + }, + "numRangesWithCandidates": { + "description": "The number of ranges with candidates that made it past primary pruning for: - all ranges of this segment_type; - all capitalized ranges of this segment_type; - all uncapitalized ranges of this segment_type.", + "format": "int64", + "type": "string" + }, + "numRangesWithCandidatesCap": { + "format": "int64", + "type": "string" + }, + "numRangesWithCandidatesUncap": { + "format": "int64", + "type": "string" + }, + "tokenType": { + "description": "The segment type.", + "enum": [ + "INVALID", + "CONTENT", + "URL", + "ANCHOR", + "QUERY", + "INSTANT_QUERY", + "A_HREF_TAG", + "LINK_HREF_TAG", + "IMG_ALT_TAG", + "IMG_SRC_TAG", + "META_CONTENT_TAG", + "TITLE", + "ANY", + "IMAGE_QUERY", + "CONTEXT_ENTITY", + "RESULT_ENTITY", + "CONTEXT_QUERY", + "SIMILAR_QUERIES", + "SPORE_GRAPH", + "OFFDOMAIN_ANCHOR", + "ONSITE_ANCHOR", + "NAME_CANDIDATE", + "TOPIC_LINK", + "QUERY_NAME_CANDIDATE", + "ANCHOR_NAME_CANDIDATE", + "INJECTED_NAME_CANDIDATE", + "REFERENCE_PAGE_URL", + "REFERENCE_PAGE_LINK", + "DEPRECATED_ENTITY_METADATA", + "STRONG_IDENTIFIER", + "REFERENCE_PAGE_URL_INLINK", + "REFERENCE_PAGE_LINK_INLINK", + "GEO_LINK", + "PRINCIPAL_NAME", + "NAME_BLACKLIST", + "ENTITY_CONTEXT_TOKENS", + "VIDEO_TRANSCRIPT", + "VIDEO_OCR", + "IMAGE_OCR", + "ONLY_LOOKUP_METADATA", + "EMBEDDED_CONTENT" + ], + "enumDescriptions": [ + "To be used to mark an invalid token type. This proto enum does not follow the good practices, which suggest that such a value should be with tag 0: go/protodosdonts#do-include-an-unspecified-value-in-an-enum. Because this is a legacy situation and it is not safe to just change the tags, the enum contains an invalid type at this tag and can be used to specify the default value wherever this is needed.", + "The main html content of a document.", + "The urls of a document/", + "The anchors pointing to a document.", + "The navboost queries of a document", + "The instant navboost queries of a document", + "The href-value of the tags in the document's content", + "The href-value of the tags in the document's content", + "The alt-value of the tags in the document's content", + "The src-value of the tags in the document's content", + "The content-value of the tags \"description\" and \"keyword\"", + "The document ", + "Special value used to represent any other tokentype.", + "The Image Search navboost queries.", + "Entities added from annotation context.", + "Represents an entity found in the results for Qref.", + "A query used as additional context for Qref annotations.", + "Similar Queries. They are only used to retrieve entities that might be able to explain original query. As in Q2@2018 we don't want them to be scored or provide context for scoring because of their overall big CPU impact on qrewrite (+50%).", + "A freetext dump + metadata from Spore GraphAnnotations.", + "Offdomain anchors pointing to a document.", + "Onsite anchors pointing to a document.", + "Name candidate extracted from the topic or generated from trusted source.", + "A link extracted directly from the topic:", + "Queries to reference pages which are potential names of the entity:", + "Anchor texts to reference pages which are potential names of the entity: Tokenized potential reference page URLs of the entity. Token matching is none because lookups are external annotations only.", + "Injected name candidates are appended using this segment type.", + "", + "URLs that are linked to the reference page of the entity. Token matching is none because lookups are external annotations only.", + "A special position that is used for lookup of entity metadata in name table.", + "Tokenized potential strong id of the entity, like phone number, ISBN. Token matching is none because lookups are external annotations only.", + "A special position used for lookup of inlinks to reference page urls.", + "A special position used for lookup of inlink scores for reference page outlinks.", + "", + "A name used in the name matching library for all types of matching. The type NAME_CANDIDATE is used for names that are only used for inexpensive types of matching.", + "Name blacklist for enriched entity.", + "Lyrics for song entities.", + "", + "", + "", + "Entries which are created in order to instruct the fprint-loader to load metadata for the contained ngrams.", + "The embedded content in the document (e.g., within json scripts)." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefAnnotatorCheckpointFprint": { + "description": "Holds annotator checkpoints which record the state of the annotations. This is useful for tracking down the source of diffs, in particular for non-determinism.", + "id": "RepositoryWebrefAnnotatorCheckpointFprint", + "properties": { + "fingerprint": { + "format": "uint64", + "type": "string" + }, + "label": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefAnnotatorProfile": { + "description": "A message to collect annotator performance data.", + "id": "RepositoryWebrefAnnotatorProfile", + "properties": { + "numCandidateMentions": { + "format": "int32", + "type": "integer" + }, + "numEntities": { + "format": "int32", + "type": "integer" + }, + "numMentions": { + "format": "int32", + "type": "integer" + }, + "numTokens": { + "format": "int32", + "type": "integer" + }, + "processorTimingsRoot": { + "$ref": "RepositoryWebrefProcessorTiming", + "description": "Root/total of the timings from all the processors that worked on the given document or query." + } + }, + "type": "object" + }, + "RepositoryWebrefBookEditionMetadata": { + "description": "Book editions metadata for a book entity. This metadata is a pair of \"/book/book_edition\" mid and its ISBN number.", + "id": "RepositoryWebrefBookEditionMetadata", + "properties": { + "bookEditionIsbn": { + "description": "Use varint encoding to save space.", + "format": "uint64", + "type": "string" + }, + "bookEditionMid": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefBootstrappingScore": { + "id": "RepositoryWebrefBootstrappingScore", + "properties": { + "scoreRatio": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefCategoryAnnotation": { + "description": "High level category annotations for documents and queries.", + "id": "RepositoryWebrefCategoryAnnotation", + "properties": { + "browsyTopic": { + "$ref": "RepositoryWebrefCategoryAnnotationBrowsyTopic", + "description": "Experimental scores to be used by Discover." + }, + "debugString": { + "description": "Title of the category. Eg \"Politics\", \"Technology\".", + "type": "string" + }, + "hitcat": { + "$ref": "RepositoryWebrefCategoryAnnotationHitCatSource", + "description": "Sources asserting the category. In the future we may have one calibrated confidence score." + }, + "mid": { + "description": "Mid representation of the category. Eg \"/m/05qt0\". WARNING: In UDR this field is not populated, use document_entity.entity.mid instead of document_entity.category.mid.", + "type": "string" + }, + "shopping": { + "$ref": "RepositoryWebrefCategoryAnnotationShoppingSignals", + "description": "Qprime asserting this category." + } + }, + "type": "object" + }, + "RepositoryWebrefCategoryAnnotationBrowsyTopic": { + "description": "Experimental scores for browsy topics, see * go/example-docs-with-implicit-fashion-styles * go/browsy-entities", + "id": "RepositoryWebrefCategoryAnnotationBrowsyTopic", + "properties": { + "confidence": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefCategoryAnnotationHitCatSource": { + "description": "The HitCat page classifier. See go/hitcat2 If you use any HitCat score, please: 1. Add your use-case to go/hits-clients. 2. Subscribe to hits-users@ to receive general updates.", + "id": "RepositoryWebrefCategoryAnnotationHitCatSource", + "properties": { + "confidence": { + "description": "Confidence of the category in the range [0.0, 1.0). If a page has the category \"NBA\" with high confidence we also expect it to have the \"Basketball\" with high confidence. Categories with a confidence lower than 0.05 are omitted. This can be interpreted as a confidence of 0, i.e. a strong signal that the category is not relevant for the page. For some categories this score is calibrated per-category to estimate the true precision. E.g., 70% of documents retrieved within the confidence range [0.7 - eps, 0.7 + eps] will be relevant when eps is close to 0.", + "format": "float", + "type": "number" + }, + "cumulativeConfidence": { + "description": "Calibrated cumulative confidence guaranteeing maxmial recall for a precision target. E.g., At least 90% of documents retrieved with cumulative_confidence \u003e= 0.9 will be relevant. This score is always calibrated per-category to estimate the true cumulative precision and is not set for uncalibrated categories.", + "format": "float", + "type": "number" + }, + "experimentalConfidence": { + "description": "Note: For testing the next version. May change at any time. Experimental confidence of the category in the range (0.0, 1.0).", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefCategoryAnnotationShoppingSignals": { + "description": "The QPrime query classifier signals.", + "id": "RepositoryWebrefCategoryAnnotationShoppingSignals", + "properties": { + "isShoppingAnnotation": { + "description": "Whether QPrime asserts that particular category.", + "type": "boolean" + } + }, + "type": "object" + }, + "RepositoryWebrefCategoryInfo": { + "description": "All informations about category types of the entity.", + "id": "RepositoryWebrefCategoryInfo", + "properties": { + "allTypes": { + "description": "Contains all types relevant for this entity, along with their provenances and confidences. This field basically replicates information above in a unified way, so that Refcon scroing can make better use of it. If present, Refcon scoring will use all_types, and ignore other fields like freebase_type. Note: there is some basic conflict resolution applied when all_types are computed (implemented in type-extractor.cc, IsLikelyConflictingFreebase).", + "items": { + "$ref": "RepositoryWebrefFreebaseType" + }, + "type": "array" + }, + "fatcatCategory": { + "description": "verticals4 categories that describe this entity.", + "items": { + "$ref": "RepositoryWebrefFatcatCategory" + }, + "type": "array" + }, + "fatcatContext": { + "description": "verticals4 categories that describe the context of the entity.", + "items": { + "$ref": "RepositoryWebrefFatcatCategory" + }, + "type": "array" + }, + "freebaseType": { + "items": { + "$ref": "RepositoryWebrefFreebaseType" + }, + "type": "array" + }, + "kgCollection": { + "items": { + "$ref": "RepositoryWebrefKGCollection" + }, + "type": "array" + }, + "oysterType": { + "$ref": "RepositoryWebrefOysterType" + }, + "salientCategory": { + "description": "verticals4 categories that cooccur with this entity, aggregated over D2E. See where we read from CompactDocClassification in http://google3/repository/webref/preprocessing/fatcat-categories.cc.", + "items": { + "$ref": "RepositoryWebrefFatcatCategory" + }, + "type": "array" + }, + "wikipediaCategory": { + "items": { + "$ref": "RepositoryWebrefWikipediaCategory" + }, + "type": "array" + }, + "wpCategory": { + "description": "WPCat CategotyResult classification.", + "items": { + "$ref": "RepositoryWebrefFreebaseType" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefClusterMetadata": { + "description": "Metadata about clusters. See go/webref-variants for details. Next available tag: 6.", + "id": "RepositoryWebrefClusterMetadata", + "properties": { + "isSet": { + "description": "If true, this entity is a synthetic entity created to represent a \"set\" in a cluster, i.e. to represent a set of entities (its children in the cluster graph) when we cannot disambiguate among them. This is similar to a KG Collection, but this is not in KG.", + "type": "boolean" + }, + "ruleInstance": { + "$ref": "RepositoryWebrefClusterProtoRuleInstance", + "description": "Explanation of where this cluster, and this entity, come from. All entities in a cluster have this, not just entities that have been created because of the cluster." + } + }, + "type": "object" + }, + "RepositoryWebrefClusterProtoMidListRule": { + "description": "A rule that defines a Cluster based on a list of mids. It creates a single Set, and makes it the parent of each of the mids in the list.", + "id": "RepositoryWebrefClusterProtoMidListRule", + "properties": { + "id": { + "description": "Id of this rule; this is used to generate ids for the synthetic entities created for a cluster. Required.", + "type": "string" + }, + "mid": { + "description": "The mids of the entities that will be made into a cluster.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefClusterProtoMidListRuleInstance": { + "description": "An instance of a \"mid list\" rule. Each \"mid list\" rule defines exactly one cluster.", + "id": "RepositoryWebrefClusterProtoMidListRuleInstance", + "properties": { + "role": { + "enum": [ + "ELEMENT", + "SET" + ], + "enumDescriptions": [ + "One of the entities explicitly given in the rule.", + "The entity that represents ambiguity among all ELEMENTs." + ], + "type": "string" + }, + "rule": { + "$ref": "RepositoryWebrefClusterProtoMidListRule", + "description": "The rule that this is an instance of. Required." + } + }, + "type": "object" + }, + "RepositoryWebrefClusterProtoRelationRule": { + "description": "A rule that defines a Cluster based on a relation. Given a relation (a link type) R, then: For each entity B that has incoming links of type R This defines an instance of this rule, with argument=B We create a Set S We make B a child of S For each entity A that has a link R to B, we make A a child of S ", + "id": "RepositoryWebrefClusterProtoRelationRule", + "properties": { + "isCollapsible": { + "description": "If true, cluster global names and links will be extracted from the target of the property. If false, all members of the cluster will be considered sources.", + "type": "boolean" + }, + "isCvtRule": { + "description": "Whether the target of the relation is an intermediate (CVT) node in KG: - if it is not: generate external_id for the cluster - if it is: - CVT should not be /common/topic otherwise rule will not be created - cluster will reuse CVT mid as its own", + "type": "boolean" + }, + "relation": { + "description": "The topic_property_name for the link that defines the relation, e.g. \"/tv/tv_series_episode/series\". Can start with a \"!\" to indicate that this link is reversed during extraction and we want the reversed case. Required.", + "type": "string" + }, + "sequenceId": { + "description": "Rule sequence id. The rule with the lowest sequence id in a cluster will contribute its id to the id of the cluster.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefClusterProtoRelationRuleInstance": { + "description": "An instance of a \"relation\" rule. Each \"relation\" rule defines a number of clusters, one for each entity B that that has incoming links of a certain type R; all entities with an outgoing link to B of type R are part of that cluster.", + "id": "RepositoryWebrefClusterProtoRelationRuleInstance", + "properties": { + "role": { + "enum": [ + "SOURCE", + "TARGET", + "SET" + ], + "enumDescriptions": [ + "One entity with an outgoing link of type R.", + "The entity with the incoming link of type R.", + "The entity that represents ambiguity among SOURCEs and TARGET." + ], + "type": "string" + }, + "rule": { + "$ref": "RepositoryWebrefClusterProtoRelationRule", + "description": "The rule that this is an instance of. Required." + }, + "target": { + "$ref": "RepositoryWebrefWebrefEntityId", + "description": "The one entity that the links of type R point to. Required." + } + }, + "type": "object" + }, + "RepositoryWebrefClusterProtoRuleInstance": { + "description": "When we apply a rule to define a particular cluster, we have a RuleInstance. Some kinds of rules for clusters define more than one cluster. In those rules we say things like \"for each entity X with this property, we create a cluster where...\"; each particular cluster that we create is the result of an *instance* of that rule, where the argument X has been bound to a particular entity (note that this also applies to rules that define only one cluster; in that case, there are no arguments). An entity that is part of a cluster plays a \"role\" in such a cluster. This message describes such an instantiation of a rule with a role and with concrete values for the arguments.", + "id": "RepositoryWebrefClusterProtoRuleInstance", + "properties": { + "midList": { + "$ref": "RepositoryWebrefClusterProtoMidListRuleInstance", + "description": "Exactly one of these *RuleInstance fields needs to be present for clusters which have not been merged; it selects the specific kind of rule instance. For merged clusters both fields may be present." + }, + "relation": { + "items": { + "$ref": "RepositoryWebrefClusterProtoRelationRuleInstance" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefCompactFlatPropertyValue": { + "description": "Flattened version of possibly nested compound values. This means that the `value` in here is *never* a `compound_value` and all predicate MIDs on the nested path are collapsed into the repeated `predicate_encoded_mid` field. When `predicate_encoded_mid` contains only one predicate, this is equivalent to a CompactKgPropertyValue.", + "id": "RepositoryWebrefCompactFlatPropertyValue", + "properties": { + "predicateEncodedMid": { + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "propertyName": { + "description": "The property corresponding to predicte_encoded_mid above. This is populated in some non-serving tables.", + "type": "string" + }, + "value": { + "items": { + "$ref": "RepositoryWebrefCompactKgValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefCompactKgPropertyValue": { + "description": "Analog to freebase::PropertyValue", + "id": "RepositoryWebrefCompactKgPropertyValue", + "properties": { + "encodedMid": { + "format": "uint64", + "type": "string" + }, + "hrid": { + "type": "string" + }, + "value": { + "items": { + "$ref": "RepositoryWebrefCompactKgValue" + }, + "type": "array" + }, + "valueStatus": { + "enum": [ + "HAS_UNKNOWN_VALUE", + "HAS_NO_VALUE" + ], + "enumDescriptions": [ + "There are values, but we don't know what they are. (e.g. person is known to have children, but we don't know who they are) (This is only sensible if len(values) == 0; it is an error to see this value if len(values) \u003e 0)", + "We know that there are no values for this predicate. (e.g. person is known to have zero children) (This is only sensible if len(values) == 0; it is an error to see this value if len(values) \u003e 0)" + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefCompactKgTopic": { + "description": "Analog to freebase::Topic", + "id": "RepositoryWebrefCompactKgTopic", + "properties": { + "mid": { + "description": "Mid of the topic; only filled in if no values.", + "format": "uint64", + "type": "string" + }, + "propertyValue": { + "items": { + "$ref": "RepositoryWebrefCompactKgPropertyValue" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefCompactKgValue": { + "description": "Analog to freebase::Value TODO(b/144526840) This representation has several quality and performance issues. Next available tag number: 12", + "id": "RepositoryWebrefCompactKgValue", + "properties": { + "boolValue": { + "description": "Present when value is bool.", + "type": "boolean" + }, + "compoundValue": { + "$ref": "RepositoryWebrefCompactKgTopic", + "description": "Compound values are those that contain either a number of simple valued facets (such as a latitude/longitude pair), or \"mediator\" topics representing multi-dimensional relationships between topics. See metaweb/data/topictable/topic.proto for more details." + }, + "datetimeValue": { + "description": "Present when value is datetime.", + "type": "string" + }, + "enumValue": { + "description": "Present when value is enum.", + "type": "string" + }, + "floatValue": { + "description": "Present when value is float.", + "format": "double", + "type": "number" + }, + "idValue": { + "description": "Present when value is an id.", + "format": "uint64", + "type": "string" + }, + "intValue": { + "description": "Present when value is int.", + "format": "int64", + "type": "string" + }, + "serializedProtoValue": { + "description": "Present when value is a serialized protocol buffer.", + "format": "byte", + "type": "string" + }, + "textValue": { + "description": "Present when value is text.", + "type": "string" + }, + "uriValue": { + "description": "Present when value is URI.", + "type": "string" + }, + "uriValueFprint32": { + "description": "32-bit fprint of uri. Can be used instead of `uri_value` to save space. See `GetNormalizedUriFprint32()`.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefComponentReference": { + "description": "The ArgumentValue reference to Mention.CompoundMention.Component. Next available tag number: 4", + "id": "RepositoryWebrefComponentReference", + "properties": { + "debugEntity": { + "description": "Optionally the freebase_mid of the WebrefEntity which the Component identifies via entity_index. This is purely to help humans diagnose the WebrefEntities structure, may not always be present and should not be used by production code. Use QueryJoinToMeaningStructConverter to compose a proper value in place of the component reference.", + "type": "string" + }, + "funcallName": { + "description": "The WebrefEntity referenced by `index` is equivalent to this function call in this context, but not universally such that we don't want to recursively expand its MRF. Use this for example if an entity corresponds to a category in an Intersect: CellPhones() \u0026 RelatedTo(/m/foo), where /m/cell_phones is equivalent to CellPhones() (and may or may not have an annotated span), but we don't want to generally assert that /m/cell_phones == CellPhones(). This cannot be an actual FunctionCall to avoid a circular dependency.", + "type": "string" + }, + "index": { + "description": "The index of the Component of the CompoundMention which has the mrf_index of this MRF expression in WebrefEntity. Required.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefConceptNameMetadata": { + "description": "Metadata proto to be stored in concept tables. Note: Name table only stores name_type_mask for better performance. Remember to change NameToConceptEntry if you add a field to this proto.", + "id": "RepositoryWebrefConceptNameMetadata", + "properties": { + "nameTypeMask": { + "description": "Bitfield of ConceptNameMetadata::NameType bits.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefDetailedEntityScores": { + "description": "Detailed scores about the topicality of an entity. Next available tag: 16", + "id": "RepositoryWebrefDetailedEntityScores", + "properties": { + "anchorScore": { + "description": "Additional info regarding how the score of an annotation was obtained. These will no longer be set once the feature `topic2_detailed_scores` is enabled (Q4 2017).", + "format": "float", + "type": "number" + }, + "bodyScore": { + "format": "float", + "type": "number" + }, + "connectedness": { + "description": "Represents how much the entity is connected/related to the other entities in the document. This signal partially influences the topicality score, but it is not totally aligned with it: an entity can be very related to the rest of the document, but not central for understanding it. Likewise, an entity can be central to understand a document, but not very related to the rest of the document. The value is in [0, 1].", + "format": "float", + "type": "number" + }, + "docScore": { + "description": "How well the document scores for the entity. The score is unnormalized, and serves as a relative ranking signal between different documents for an entity.", + "format": "float", + "type": "number" + }, + "geoTopicNormalizedScore": { + "description": "If the annotation corresponds to a geo topic, this is populated with GeoTopic::normalized_score.", + "format": "float", + "type": "number" + }, + "isAuthor": { + "description": "True if the entity is the author of the document. This was mainly developed and tuned for news articles (e.g. /m/02x27qn on \"www.vogue.com/article/flint-town-netflix\") but is also popluated for other content (e.g. scientific articles). Important: the semantics of this field may change in the future or it might be removed and replaced with a different API. If you want to use this field, please reach out to ke-authors@ first.", + "type": "boolean" + }, + "isPublisher": { + "description": "True if the entity is the publisher of the page (e.g. CNN on \"http://www.cnn.com/foo/bar\").", + "type": "boolean" + }, + "isReferencePage": { + "description": "Set to true iff the entity matches the full URL of the document, meaning that it is a reference page or related page of the entity.", + "type": "boolean" + }, + "localEntityLocationConfidence": { + "description": "If the annotation corresponds to a local entity, this is populated with LocalEntityAnnotations::Instance::location_confidence.", + "format": "float", + "type": "number" + }, + "nbScore": { + "format": "float", + "type": "number" + }, + "newConfidenceExperimentalDontUse": { + "description": "Experimental. This is used for doing experiments only. For example, new entity confidence can be populated here to experiment with replacing the one re-computed by NewAnnotationConfidence().", + "format": "float", + "type": "number" + }, + "newsTopicalityScore": { + "description": "DEPRECATED: this field is no longer set. As of early June 2018 it is referenced in hundreds of test files and is difficult to remove from the code base.", + "format": "float", + "type": "number" + }, + "normalizedTopicality": { + "description": "Representation of the topicality score that is normalized in [0, 1] and which sum over all entities in the document is 1. It represents the \"proportion\" of the document that talks about the entity. This score is less human interpretable as the bucketized topicality score (EntityAnnotations.topicality_score), but is more suited for some usages like aggregations.", + "format": "float", + "type": "number" + }, + "referencePageScores": { + "$ref": "RepositoryWebrefReferencePageScores", + "description": "Signals used for mining new reference pages, set by the reference-page-scorer processor (that is turned off by default). This field is not populated, except for special reference page extraction runs." + }, + "relevanceScore": { + "description": "Relevance score generated by a Machine Learning entity classifier. This signal is similar to topicality, but machine learning based and supported by EntitySignals, not Webref. See http://go/entityclassifier for details on the classifier.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefDetailedMentionScores": { + "id": "RepositoryWebrefDetailedMentionScores", + "properties": { + "patternInfo": { + "items": { + "$ref": "RepositoryWebrefPatternInfo" + }, + "type": "array" + }, + "posteriorForLearning": { + "description": "How much confidence that a entity is annotated on a given name. NOTE: it's slightly different with normal annotation confidence.", + "format": "float", + "type": "number" + }, + "resultEntityScore": { + "description": "How much support this mention received from the results for PostRef. This is populated only if explicitly requested and different from 0.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefDisplayInfo": { + "description": "Information that can be used to display the entity (e.g. title, image...).", + "id": "RepositoryWebrefDisplayInfo", + "properties": { + "displayName": { + "description": "Per language display name from reliable sources.", + "items": { + "$ref": "RepositoryWebrefDisplayName" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefDisplayName": { + "description": "Per language display name from reliable sources (e.g. Freebase, Wikipedia). The name can be ambiguous (e.g. \"Springfield\" rather than \"Springfield, Idaho\"), and is thus to be used in a context which provides sufficient disambiguation. See: http://go/entity-names WARNING: This data is DEPRECATED and any user-visible entity names need to be fetched from TopicServer. Note that any display names included in this proto are merely a pass-through from KG and have no freshness guarantees.", + "id": "RepositoryWebrefDisplayName", + "properties": { + "canonicalName": { + "description": "An encylopedia style topic name (e.g. \"Dog\", not \"Dogs\"). Corresponds to Freebase /type/object/name and similar sources.", + "type": "string" + }, + "language": { + "description": "The language of this name. See http://goto/iii for all the details on the language identifiers.", + "type": "string" + }, + "subjectName": { + "description": "A name as it would be used for a news topic, an interest, the subject of a story. E.g. in list of things (\"Related topics: Smartphones, computers, accidents\". \"Interests: Dogs\"). *Fall back:* If the field is not populated, fall back to the \"canonical_name\" field. This field is usually not populated since (a) in most cases the subject form name is the same as the canonical name, and (b) data coverage of subject-form names is currently much lower than data coverage of canonical names. Note: In some languages (e.g. French) the difference between canonical names and subject names is larger than in English (not just plural vs. singular), but still strictly grammatical (including an article, capitalization, plural vs. singular). Corresponds to Freebase /freebase/linguistic_hint/subject_form.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefDocLevelRelevanceRatings": { + "description": "List of PerDocRelevanceRatings for Precision@5 evals done via ewok (template 2282).", + "id": "RepositoryWebrefDocLevelRelevanceRatings", + "properties": { + "perDocRelevanceRatings": { + "items": { + "$ref": "RepositoryWebrefPerDocRelevanceRatings" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefDocumentMetadata": { + "description": "Information about the document which is not produced by webref, typically copied from the docjoin. Next available tag: 15", + "id": "RepositoryWebrefDocumentMetadata", + "properties": { + "cdocAttachments": { + "$ref": "Proto2BridgeMessageSet", + "description": "A copy of selected extensions from cdoc.doc_attachments and cdoc.per_doc_data, controlled by: --webref_doc_metadata_copy_instant_navboost_document (copies doc_attachments[quality_freshness_abacus::InstantNavBoostDocument] (TypeId 105421467), defined in quality/freshness/abacus/public/abacus.proto). Used in Querybase to have navboost associated with relevant cdocs. --webref_doc_metadata_copy_per_doc_navboost (copies per_doc_data[navboostdata]) (TypeId 4256936), defined in mustang/repository/navboost/proto/navboostmustang.proto. Used in Querybase to have navboost associated with relevant docs. Note that it is not present in the original doc_attachments, but in per_doc_data, and we copy it over here so as not to depend on the proto directly, as they are not compatible due to different app_engine compatibility. --webref_doc_metadata_copy_images (copies doc_attachments[indexing::images::RelatedImageSignal]) (TypeId 21265426), defined in indexing/images/proto/image-linker.proto." + }, + "crawlTime": { + "description": "The timestamp of when the document was crawled (if known). Copied from CompositeDoc.Content.CrawlTime.", + "format": "int64", + "type": "string" + }, + "docFp": { + "description": "Fingerprint of the document. We compute and set this fingerprint when creating the pagesets that we use for evals. Otherwise, this field is not normally set. We use the field to make sure that the human ratings that we have are generated for the same version of the document, otherwise they might be invalid. We do not compute the fingerprint on the fly (e.g. as a fingerprint of the proto buffer serialization of the cdoc) because protocol buffer serialization is not stable.", + "format": "uint64", + "type": "string" + }, + "docId": { + "description": "DocId of the annotated document as read from cdoc.doc().docid().", + "format": "uint64", + "type": "string" + }, + "forwardingUrls": { + "$ref": "RepositoryWebrefForwardingUrls", + "description": "Urls that forward to this url. Needed for url -\u003e topical entity entries." + }, + "isDisambiguationPage": { + "description": "Set to true if the document is a known disambiguation page, e.g. https://en.wikipedia.org/wiki/Orange.", + "type": "boolean" + }, + "language": { + "description": "The document language, as read from doc().content().language(). This is go/language-enum value.", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + }, + "numIncomingAnchors": { + "description": "The (weighted) number of incoming anchors (links from other documents).", + "format": "float", + "type": "number" + }, + "repeatedCdocAttachments": { + "description": "Copies of selected repeated extensions from cdoc, controlled by: --webref_doc_metadata_copy_images (copies the repeated doc_images field (TypeId 8798074), defined in image/search/imagedoc.proto).", + "items": { + "$ref": "Proto2BridgeMessageSet" + }, + "type": "array" + }, + "salientTerms": { + "$ref": "QualitySalientTermsSalientTermSet", + "description": "The salient terms for this document. Only set if --webref_doc_metadata_copy_salient_terms is true. Same motivation as the title field above." + }, + "title": { + "description": "The title of the document. Only set if --webref_doc_metadata_set_title is true. The idea is that we can use this to more easily learn things like: title contains \"restaurants\" -\u003e more likely to be a list page.", + "type": "string" + }, + "totalClicks": { + "description": "The total clicks on this document, taken from navboost data.", + "format": "float", + "type": "number" + }, + "url": { + "description": "The url of the document.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefDomainSpecificRepresentation": { + "description": "Represents a domain specific entity data.", + "id": "RepositoryWebrefDomainSpecificRepresentation", + "properties": { + "entityData": { + "$ref": "Proto2BridgeMessageSet", + "description": "The actual domain specific data. For example it can be freebase.Topic, repository_wikipedia.WikiJoin, ocean.WorkMetadata, geostore.Feature." + } + }, + "type": "object" + }, + "RepositoryWebrefEnricherDebugData": { + "description": "Top level proto for enricher specific debug data that is only displayed in the Webref demo and should not be used for anything production-related. Next id: 4.", + "id": "RepositoryWebrefEnricherDebugData", + "properties": { + "nonMidProperties": { + "description": "Contains selected properties (from KG) whose values are not other entities (in which case they would be represented in link_info) but scalar values, possibly reachable through (multiple) CVTs.", + "items": { + "$ref": "RepositoryWebrefCompactFlatPropertyValue" + }, + "type": "array" + }, + "referencePage": { + "description": "This field contains reference pages for this entity. A reference page is a page that is highly topical for this entity, which can be used to mine additional information about this entity. Example reference pages for Apple Inc. would be the composite docs for \"http://en.wikipedia.org/wiki/Apple_Inc.\" and http://www.apple.com. For actors or movies, you can also have the imdb page. Also see: http://go/refx-pages.", + "items": { + "$ref": "RepositoryWebrefSimplifiedCompositeDoc" + }, + "type": "array" + }, + "relatedPage": { + "description": "This field contains mined related pages for the entity. A related page is a page that is moderately topical for this entity (More details: http://shortn/_KCE0GfQlpJ). This is mainly used to mine additional information for entities which do not have reference pages Unlike reference pages, a single doc can be a related page for multiple mids.", + "items": { + "$ref": "RepositoryWebrefSimplifiedCompositeDoc" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityAnnotations": { + "description": "All annotations for a given concept (in one document collection). Available tags: [10-15], [19-]", + "id": "RepositoryWebrefEntityAnnotations", + "properties": { + "confidenceScore": { + "description": "The overall confidence that the entity is annotated somewhere in the document or query. For WebRef it is computed as a function of the mention confidences weighted by the importance of each mention, where for documents a mention is of greater importance if it occurs in the title, h1 or anchors. For QRef it is just the maximum of the confidence over all mentions. NOTE: You probably want to use the mention-level segment_mentions.mention.confidence_score field instead of this one.", + "format": "float", + "type": "number" + }, + "debugInfo": { + "$ref": "RepositoryWebrefAnnotationDebugInfo" + }, + "detailedEntityScores": { + "$ref": "RepositoryWebrefDetailedEntityScores", + "description": "Additional information about how the entity relates to the page, for example whether it is a business entity which published the page." + }, + "explainedRangeInfo": { + "$ref": "RepositoryWebrefExplainedRangeInfo", + "description": "All ranges explained by the entity or any other entity it implies. Used in the context of partial query interpretation (go/partial-understanding)." + }, + "isImplicit": { + "description": "An entity is marked as implicit if there is no explicit mention of the entity in the content of the page. For instance, all mentions of the entity are in query, url and/or anchors; or the entity has only implicit content mentions.", + "type": "boolean" + }, + "isResolution": { + "description": "True if the entity is an MDVC summary entity, i.e. it might not be mentioned directly on the query, but it is the product of resolving a set of explicit annotations. E.g. \"2014 FIFA World Cup\" can be the summary for the query: [soccer world cup in brazil] even though none of the names of the entity is mentioned on the query. Summary nodes can also be synthetic, i.e. have a /t/ mid, as they represent the intersection between a set of regular annotations. For more information, see http://go/mdvc-output.", + "type": "boolean" + }, + "segmentMentions": { + "description": "All mentions of a given concept grouped by segments. For Webref, there are many different kinds of segment, such as content, title and anchors; while for QRef, there is only one segment called CONTENT. For QRef this field contains the primary output of the annotator, and for WebRef it together with topicality_score does.", + "items": { + "$ref": "RepositoryWebrefSegmentMentions" + }, + "type": "array" + }, + "topicalityRank": { + "description": "Rank of the entity when sorted by topicality score.", + "format": "int32", + "type": "integer" + }, + "topicalityScore": { + "description": "The WebRef topicality score of the entity for this document. This score indicates how related is the entity to the overall topic of the document. See https://goto.google.com/topicality-score for details. This field is not present in QRef output. Note that the topicality and the confidence score are orthogonal measures. It is possible that the annotator is absolutely sure that an entity is mentioned in a given range in the document, but this entity may be unrelated to the overall topic of the page (e.g. the entity \"RSS\" is mentioned in the footer of appleinsider.com). In this case the mention has a very high confidence score, but very low topicality score.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityDebugInfo": { + "description": "Provides some debug info for the entity. This data shown to engineers (for debugging) and to raters (so it ultimately impacts eval metrics), but is also used to train ML models (see below). IMPORTANT: Despite the proto naming, this data has production quality impact. The data below is mostly human-readable text that is useful to help engineers with debugging. However the text is also used as input to machine-learned natural language processing models, which are used in production Webref.", + "id": "RepositoryWebrefEntityDebugInfo", + "properties": { + "containsRestrictedData": { + "description": "Internal flag to mark this data as restricted. This flag should never be set in data in the final entityjoins, it is only used during the preprocessing pipeline.", + "type": "boolean" + }, + "description": { + "description": "A human-readable description of the entity. This can range from brief, machine-generated notes to lengthy human-written paragraphs from Wikipedia.", + "type": "string" + }, + "language": { + "description": "The language (III LanguageCode) of the `title` and `description` fields.", + "type": "string" + }, + "score": { + "description": "Internal score to merge debug info. should not set in final entityjoins.", + "format": "double", + "type": "number" + }, + "title": { + "description": "A short human-readable name/title of the entity, similar to what is displayed at the top of a Hume page. Suitable to be displayed in a list.", + "type": "string" + }, + "url": { + "description": "Link to a page with more information about the entity (internal Hume page, external Wikipedia page, etc.).", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityJoin": { + "description": "Next available tag: 35. Represents all the information that we have for a given entity.", + "id": "RepositoryWebrefEntityJoin", + "properties": { + "annotatedEntityId": { + "$ref": "RepositoryWebrefWebrefEntityId", + "description": "The id of this entity, prefer accessing through webref-entities-util.h functions." + }, + "cdoc": { + "description": "This field contains reference pages for this entity. A reference page is a page that is highly topical for this entity, which can be used to mine additional information about this entity. Example reference pages for Apple Inc. would be the composite docs for \"http://en.wikipedia.org/wiki/Apple_Inc.\" and http://www.apple.com. For actors or movies, you can also have the imdb page. Also see: http://go/refx-pages.", + "items": { + "$ref": "RepositoryWebrefSimplifiedCompositeDoc" + }, + "type": "array" + }, + "contextNameInfo": { + "description": "The context names (with scores) of this entity. The difference to regular names (aka name_info) is that context names are not used for finding mentions in a document as they consist of names somehow related to the entity (e.g. name \"fisherman s wharf\" for the entity \"Gary Danko\"). Used for reconciling freebase and oyster.", + "items": { + "$ref": "RepositoryWebrefGlobalNameInfo" + }, + "type": "array" + }, + "debugInfo": { + "description": "Debug information about the entity.", + "items": { + "$ref": "RepositoryWebrefEntityDebugInfo" + }, + "type": "array" + }, + "enricherAnnotatorProfile": { + "$ref": "RepositoryWebrefAnnotatorProfile", + "description": "Optional profiling data from the enricher that enriched this entity (and produced this EntityJoin as debug output)." + }, + "enricherDebugData": { + "$ref": "RepositoryWebrefEnricherDebugData", + "description": "Contains debug data produced by enricher and only used for debug purpose (e.g. demo)." + }, + "extraData": { + "$ref": "RepositoryWebrefExtraMetadata", + "description": "Additional metadata about the entity, that can be derived from the \"raw data\" (composite doc, domain specific data...), or come from other sources. Despite its name, this field often contains quite important information." + }, + "humanRatings": { + "$ref": "RepositoryWebrefHumanRatings", + "description": "Human ratings (e.g. ratings from EWOK). This is typically only populated in the evaluation pipelines (e.g. P@5)." + }, + "linkInfo": { + "description": "Contains all links (with scores) that Webref knows for this entity. Links are relationships between entities. The data in this field is very important for the quality of the model.", + "items": { + "$ref": "RepositoryWebrefGlobalLinkInfo" + }, + "type": "array" + }, + "nameInfo": { + "description": "Contains all names (with scores) that Webref knows for this entity. The data in this field is very important for the quality of the model.", + "items": { + "$ref": "RepositoryWebrefGlobalNameInfo" + }, + "type": "array" + }, + "nameSignals": { + "$ref": "RepositoryWebrefPreprocessingNameSignals" + }, + "preprocessingId": { + "$ref": "RepositoryWebrefAbsoluteLegacyId", + "description": "Deprecated id, only access through EntityJoinUtil::GetEntityId(), while we are migrating to annotated_entity_id. Setters should go through EntityJoinUtil::SetEntityId() during the transition period." + }, + "refconNameInfo": { + "description": "Contains names and names metadata used by Refcon.", + "items": { + "$ref": "RepositoryWebrefRefconRefconNameInfo" + }, + "type": "array" + }, + "representation": { + "description": "An entity can have metadata from various data sources. Generally speaking all sources will be / should be reconciled into a single KG Topic entry. However, in some cases we pull in additional chunks of metadata from these sources; these are stored in this field. For example a local business could have a KG entry (topic proto), wikipedia entry (WikiJoin) and a MapFacts entry (Feature proto).", + "items": { + "$ref": "RepositoryWebrefDomainSpecificRepresentation" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityLinkMetadata": { + "description": "Metadata about the nature of the link.", + "id": "RepositoryWebrefEntityLinkMetadata", + "properties": { + "aggregateFlags": { + "$ref": "RepositoryWebrefLinkKindFlags", + "description": "The aggregate kind flags for the link." + }, + "kindInfo": { + "description": "Information about all the link kinds associated with the link.", + "items": { + "$ref": "RepositoryWebrefLinkKindInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityLinkSource": { + "description": "All link data for a given source.", + "id": "RepositoryWebrefEntityLinkSource", + "properties": { + "kgProperty": { + "description": "KG-property if the SourceType is associated with a KG-property (TOPIC_PROPERTY, NEW_TOPIC_PROPERTY).", + "type": "string" + }, + "score": { + "description": "Score in [0, \\infty) that represents how relatively likely it is to see that entity cooccurring with the main entity (in the entity join). A value of 1.0 means that the two entities are basically independent. The higher the more likely (relatively to the individual entity probabilities) they are to cooccur.", + "format": "float", + "type": "number" + }, + "type": { + "enum": [ + "UNKNOWN_LINK_SOURCE", + "REFERENCE_PAGE_MENTIONS", + "OYSTER_RELATIONS", + "TYPE_BASED_LINKS", + "TIME_LINKS", + "COMPOUND_LINKS", + "HUMAN_LANGUAGE_LINKS", + "NEW_TOPIC_PROPERTY", + "EXPERIMENTAL_LINKS", + "PERSONAL_LINKS", + "EBSE" + ], + "enumDescriptions": [ + "", + "Entity mentions from a reference page. Those mentions come from wikilinks.", + "Links added based on relations in oyster feature protos.", + "Links generated to topics related to a topic's type.", + "Links between year entity and month entity.", + "Links between compound and attribute entity. Data comes from WikiJoin.", + "Links between for human languages, currently we have human_language \u003c-\u003e human_language and human_language \u003c-\u003e translation. Reason to have these links: link weights for them from other sources (e.g., REFERENCE_PAGE_MENTIONS) are too small. In order to improve annotation for language entities, we need to manually increase these link weights.", + "Links from kg-properties.", + "For experiments only, see flag enricher_experimental_link_table in enricher-link-scorer.cc.", + "Links from the Personal Knowledge Graph indexing pipeline.", + "Entity-based salient entities." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityNameRatings": { + "description": "Stores all human ratings collected for a given entity name.", + "id": "RepositoryWebrefEntityNameRatings", + "properties": { + "language": { + "type": "string" + }, + "name": { + "type": "string" + }, + "ratings": { + "description": "Every entity name receives one or a few ratings from human raters.", + "items": { + "$ref": "RepositoryWebrefEntityNameRatingsEntityNameRating" + }, + "type": "array" + }, + "tags": { + "description": "Multiple tags can be assigned to a rated entity name. The tags can be used when computing metrics in the Name Eval, so that different metrics are computed separately for different sets of examples that have the same tag.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityNameRatingsEntityNameRating": { + "id": "RepositoryWebrefEntityNameRatingsEntityNameRating", + "properties": { + "label": { + "enum": [ + "LABEL_UNSPECIFIED", + "LABEL_GOOD", + "LABEL_BAD", + "LABEL_I_DONT_KNOW" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "source": { + "enum": [ + "SOURCE_UNSPECIFIED", + "SOURCE_REFX", + "SOURCE_QAAS", + "SOURCE_SLS" + ], + "enumDescriptions": [ + "", + "Ratings from RefX engineers.", + "Ratings from QaaS raters.", + "Ratings from Search Language Specialists (go/sls) raters." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityNameScore": { + "description": "Represents a score for an entity. Next available tag: 39.", + "id": "RepositoryWebrefEntityNameScore", + "properties": { + "bootstrappingPreviousIteration": { + "$ref": "RepositoryWebrefBootstrappingScore", + "description": "If the EntityNameScore is part of a bootstrapped model, then this field contains the score_ratio from the previous model (\"Model 0\"). If Model 0 does not have a corresponding entry, because it did not know about this name for this entity, then bootstrapping_previous_iteration is left empty." + }, + "confidence": { + "description": "Confidence that this name is a trusted name of the entity. A reasonable threshold for name trust is 0.6. A name can be trusted and still have very low score_ratio, esp. if it is ambiguous (e.g. 'mercury') and/or not the dominant interpretation (e.g. \"siberian husky\" -\u003e /m/06krnsr (a book)).", + "format": "float", + "type": "number" + }, + "debugInfo": { + "description": "Debug information about the entity.", + "items": { + "$ref": "RepositoryWebrefEntityDebugInfo" + }, + "type": "array" + }, + "debugVariantSignals": { + "description": "Source and score data, this is internal to refx (e.g. for demo/debug).", + "items": { + "$ref": "RepositoryWebrefPreprocessingNameVariantSignals" + }, + "type": "array" + }, + "entity": { + "$ref": "RepositoryWebrefEntityJoin", + "description": "Sparse metadata about the entity, usage should be moved back to individual fields, this avoids having cyclic dependencies." + }, + "extendedScoreRatio": { + "description": "Stores region specific score ratios for the entity when it is significantly different from the language version above.", + "items": { + "$ref": "RepositoryWebrefExtendedEntityNameScore" + }, + "type": "array" + }, + "includeInModel": { + "description": "Include this name in the name lookup table.", + "type": "boolean" + }, + "internalBootstrapIsOpenWorld": { + "description": "Transient field, only used in bootstrap pipeline.", + "type": "boolean" + }, + "internalIsClusterParent": { + "type": "boolean" + }, + "isClusterGlobal": { + "description": "Set to true iff the concept is cluster parent and the name can be a name for any child of the cluster. (e.g. 'starbucks' is cluster_global for the [Starbucks] chain cluster).", + "type": "boolean" + }, + "isDropped": { + "description": "Documened at: repository/webref/universal/webref_data/enricher/entity-data.h", + "type": "boolean" + }, + "isMatchlessResultContext": { + "description": "Only for context names: Whether this EntityNameScore represents an entity that was dominant in the search results but was not annotated by QRef during learning. Matchless result contexts are useful for bootstrapping, where different model iterations may have different names and thus context scores from Model 0 that are inconsistent with the names from Model 1.", + "type": "boolean" + }, + "isPruned": { + "description": "Documened at: repository/webref/universal/webref_data/enricher/entity-data.h", + "type": "boolean" + }, + "mid": { + "description": "The id of the entity.", + "format": "uint64", + "type": "string" + }, + "nameMetadata": { + "$ref": "RepositoryWebrefPreprocessingNameEntityMetadata", + "description": "Metadata about this name aggregated from name signals." + }, + "rangeMetadata": { + "description": "Metadata of segment range, which is annotated by this entity.", + "items": { + "$ref": "RepositoryWebrefRangeMetadata" + }, + "type": "array" + }, + "score": { + "description": "The absolute score of that entity. score = artificial_score + volume_based_score", + "format": "float", + "type": "number" + }, + "scoreRatio": { + "description": "Ratio between this entity score and the total score over all entities. This is including the \"open world\" information if it was estimated.", + "format": "float", + "type": "number" + }, + "useAsNameCandidate": { + "description": "When this field is true, we consider this context name as candidate in Enricher's names pipeline.", + "type": "boolean" + }, + "volumeBasedScore": { + "description": "Absolute score that comes from quantitative sources such as navboost clicks, anchors, etc. artificial_score = score - volume_based_score", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityNameSource": { + "description": "Represents the data for a given source of names, including all entity scores. Notice that a source of name can be just a signal like a multiplier. Next available tag: 8.", + "id": "RepositoryWebrefEntityNameSource", + "properties": { + "entityScore": { + "description": "All the entity-name scores from that source. Keyed by the EntityNameScore.entity_id field.", + "items": { + "$ref": "RepositoryWebrefEntityNameScore" + }, + "type": "array" + }, + "type": { + "description": "Describes where the data comes from.", + "enum": [ + "SOURCE_TITLE", + "SOURCE_QUERY", + "SOURCE_ANCHOR", + "PRODUCT_TITLE", + "PRODUCT_QUERY", + "COMMON_NGRAM_CONCEPT_BOOST", + "FREEBASE_NAME", + "TYPE_BASED_INVERSE_DEMOTION_FACTOR", + "STRONG_IDENTIFIER", + "UNTRUSTED_ANCHOR", + "PERSON_NAME", + "OYSTER_NAME", + "UNTRUSTED_QUERY", + "OYSTER_NAME_DERIVED", + "RELATED_CONTEXT", + "WIKI_DESCRIPTION", + "WIKI_INFOBOX", + "FREEBASE_PROPERTY", + "WIKI_IS_A_TYPE", + "OYSTER_TYPE", + "OYSTER_ADDRESS", + "SOURCE_MODEL", + "LEAKED_NAME_DEMOTION", + "PRODUCT_TITLE_VARIATION", + "TRUSTED_NAME", + "SUBSET_NAME", + "UNTRUSTED_COOCCURRENCE_NAME", + "RESULTS_ENTITIES_QUERY", + "RELATED_ENTITIES_NGRAM", + "CLIENT_PROVIDED_NAME", + "GENERATED_CONTAINING_CONTEXT", + "DOC_NAME_AGGREGATES", + "QUERY_NAME_AGGREGATES", + "SOURCE_LEARNED_QUERY", + "COMPANY_OR_WEBSITE_DERIVED_NAME", + "GENERATED_SPARSE_CONTEXT", + "GENERATED_ARTIFICIAL_CONTEXT", + "GENERATED_S2CELL_CONTEXT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Special source that contains data on how much to boost the score of the entity because it is a common word/ngram concept (as opposed for example to proper noun).", + "A freebase name or alias.", + "Special source that contains data on how much to demote the score of the entity because of its type. This contains the inverse of the demotion.", + "The name comes from a strong identifier, for example a URL, ISBN, UPC...", + "The name comes from an untrusted anchor (for example from an untrusted external page).", + "The name comes from a person full or partial name.", + "The name comes from an Oyster NameProto associated with a location.", + "The name comes from query clicks on untrusted pages.", + "The name is derived from an Oyster NameProto, e.g., by adding an address component or a type.", + "The name is extracted from related entities (e.g. based on link_info).", + "Textual description of the entity (e.g. from first wikipedia paragraph). Usually longer than a regular entity name (can include multiple sentences).", + "Names extracted from a wikipedia infobox.", + "Names extracted from text-valued freebase properties (other than the ones which are already included in FREEBASE_NAME).", + "Is-a type extracted from wikipedia description.", + "The name is derived from an Oyster type.", + "The name is derived from an Oyster address.", + "The name contains aggregated scores from a run of the model pipeline. This is used to store old prior scores when learning new priors from e.g. queries.", + "Demotion due to the name is suspected to be leaked from a related entity.", + "The name is a generated variation based on Product Search titles.", + "Trusted names are not squashed, and have a high confidence. A name should get source type trusted if: - None of the above types is more appropriate. - We are very confident that the names are correct for the given entity. An example usage is for stock ticker names which originate from Google Finance data. Trusted name's scores are not squashed (i.e. the total score volume for trusted names for a given name is not bounded.) In addition trusted names are canonical names, so they are not dropped in the preprocessing pipeline.", + "This name has been recognized as a (fuzzy/partial) subset of a strong name, hence gets some score and trust because of that.", + "Names from Cooccurrence pipeline.", + "The name is a query for which the entity was featured in the results.", + "The name is an ngram for which the entity was featured in the results.", + "Names from clients' complementary data.", + "A possibly disambiguating context for the entity generated from the model data, for example \" \" for a city.", + "Scores from the document name aggregated scores.", + "Scores from the query name aggregated scores.", + "The name score comes from the query learn prior stage.", + "Company or website derived name.", + "Retrieval contexts made out of bigrams pairing tokens from names of related entities.", + "Retrieval contexts made out of a name, followed by an artificial contextual token representing e.g. a type or coarse geo location. The annotator will generate lookups when it has reason to believe the range may contain an entity with the property.", + "Retrieval contexts made out of bigrams pairing tokens of pruned names and the S2 cells around the entity (if the entity has a geo location)." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefEntityScores": { + "description": "Keeps a set of scores about an entity. Next available tag: 20.", + "id": "RepositoryWebrefEntityScores", + "properties": { + "allCapsProb": { + "description": "Probability that any given name of this entity is fully capitalized.", + "format": "float", + "type": "number" + }, + "alphaEntityIdf": { + "description": "This field is only for debugging and link weight experiments. It stores the entity's idf from the alpha model. Alpha idfs are used for link weight computations and available during model omega building via enricher_current_entity_idf_for_link_direction.", + "format": "float", + "type": "number" + }, + "commonNgramProb": { + "description": "Probability that the entity is a common ngram (e.g. from dictionary).", + "format": "float", + "type": "number" + }, + "entityIdf": { + "description": "The final (model omega) idf of an entity. Equals log2(1 / probability of the entity to appear in a document). This probability is currently estimated from its names (i.e. it is a sum of the name frequency weighted by P(entity | name)).", + "format": "float", + "type": "number" + }, + "nameCapitalizationProb": { + "description": "Probability that any given name of this entity is capitalized.", + "format": "float", + "type": "number" + }, + "personProb": { + "description": "The following fields are deprecated and should eventually be removed. They use data and rules that have not been refreshed for ~10y and KG has changed a lot in the meantime. ", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefExplainedRangeInfo": { + "description": "Information about all ranges explained by the entity or any other entity it implies. For example, the Zurich entity may explain both tokens \"Zurich\" and \"Switzerland\" in [FIFA Zurich Switzerland], the first directly, the other via implication. Only used in the context of query annotation.", + "id": "RepositoryWebrefExplainedRangeInfo", + "properties": { + "explainedRange": { + "description": "All ranges explained by the entity.", + "items": { + "$ref": "RepositoryWebrefExplainedRangeInfoExplainedRange" + }, + "type": "array" + }, + "geoQueryCoverage": { + "enum": [ + "NONE", + "PARTIAL", + "FULL" + ], + "enumDescriptions": [ + "", + "Represents a PU result (go/partial-understanding).", + "Represents a Sirius result (go/sirius)." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefExplainedRangeInfoExplainedRange": { + "description": "A range of the annotated document explained by an entity.", + "id": "RepositoryWebrefExplainedRangeInfoExplainedRange", + "properties": { + "mention": { + "$ref": "RepositoryWebrefSegmentMention", + "description": "SegmentMention describing the occurrence of the token in the document." + } + }, + "type": "object" + }, + "RepositoryWebrefExtendedEntityNameScore": { + "description": "Used to store region-specific score ratio per entity. Next available tag: 4.", + "id": "RepositoryWebrefExtendedEntityNameScore", + "properties": { + "domain": { + "description": "The domain name of the website, e.g. \"play.google.com\".", + "type": "string" + }, + "region": { + "description": "The region in the III standard (http://go/iii). Eg. \"US\", \"GB\"", + "type": "string" + }, + "scoreRatio": { + "description": "Score ratio for the entity, same as the EntityNameScore score ratio.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefExtraMetadata": { + "description": "Additional metadata about the entity, that can be derived from the \"raw data\" (composite doc, domain specific data...), or come from other sources. Next available tag is 35.", + "id": "RepositoryWebrefExtraMetadata", + "properties": { + "bookEditionMetadata": { + "description": "For a book entity, store its book editions metadata. Used by Juggernaut to do /book/book_edition recon, see ariane/265006. This field is used by Juggernaut only.", + "items": { + "$ref": "RepositoryWebrefBookEditionMetadata" + }, + "type": "array" + }, + "categoryInfo": { + "$ref": "RepositoryWebrefCategoryInfo", + "description": "Information about category types of the entity." + }, + "clusterMetadata": { + "$ref": "RepositoryWebrefClusterMetadata", + "description": "Metadata about clusters." + }, + "displayInfo": { + "$ref": "RepositoryWebrefDisplayInfo", + "description": "Information for displaying the entity in applications." + }, + "entityScores": { + "$ref": "RepositoryWebrefEntityScores", + "description": "Additional scores for the entity." + }, + "equivalentEntityId": { + "description": "An entity in KG that represents the same (or equivalent) entity in the real world. In particular, this is used for mid-forwarding: when de-duping entities in KG, the old ids represent the exact same entity as the one they were merged with. So when we see one id in the query and the other in a document, they are treated as the same entity.", + "items": { + "$ref": "RepositoryWebrefWebrefEntityId" + }, + "type": "array" + }, + "geoMetadata": { + "$ref": "RepositoryWebrefGeoMetadataProto", + "description": "Geo-specific entity metadata." + }, + "kcAttributeMetadata": { + "$ref": "RepositoryWebrefKCAttributeMetadata", + "description": "Metadata related to KC attributes and Question \u0026 Answer triggering." + }, + "latentEntities": { + "$ref": "RepositoryWebrefLatentEntities", + "description": "A list of entities that are latent given this entity. For example, \"Lionel Messi\" can have the latent entity \"FC Barcelona\". The latent entity links are materialized in an offline pipeline using r/w/scripts/latent_entities/latent-entities.pq. For more information, see go/latent-entities." + }, + "mdvcMetadata": { + "$ref": "RepositoryWebrefMdvcMetadata", + "description": "Metadata about MDVC." + }, + "otherMetadata": { + "$ref": "Proto2BridgeMessageSet", + "description": "Other metadata." + }, + "primaryRecording": { + "description": "The primary recording mid of a recording cluster entity. Used by Juggernaut to do /music/recording recon, see b/139901317. The primary recording is unique to a recording cluster. This field is used by Juggernaut only.", + "format": "uint64", + "type": "string" + }, + "productMetadata": { + "$ref": "RepositoryWebrefProductMetadata", + "description": "Products-specific entity metadata." + }, + "specialEntityType": { + "description": "# LINT.ThenChange( //depot/google3/repository/webref/evaluation/query/metrics/util.cc)", + "enum": [ + "UNDEFINED", + "COLLECTION", + "DATETIME", + "MRF", + "SHOPPING_CATALOG_TOKEN", + "LIGHTWEIGHT_TOKEN" + ], + "enumDescriptions": [ + "Used for all entities for which SpecialEntityType has not yet been implemented. Treat this value as equivalent to having no information about whether the entity is special or not, i.e. treat it like !has_special_entity_type.", + "The entity represents not a single KG entity but a collection or collection set. For example, consider the query [when was john smith born]. We don't know for sure which John Smith the query refers to, but we're \u003e90% sure that it refers to a person (/collection/people). For entities with special_entity_type == COLLECTION, the main MID field is set to a /t MID derived deterministically from the entire query, the annotated subrange and the collection. The actual collection ID(s) can be found in webref_entity.collections (assuming this message is stored in webref_entity.entity_join.extra_data).", + "The entity represents a date, such as \"January 24, 2018\", \"November 17\", or \"September 1999\". For entities of type DATETIME, the main MID field is set to a /t MID derived deterministically from the specific date, which itself can be found in datetime_metadata.", + "This entity has a 'mrf' field with a MRF compound representation.", + "The entity represents an ungrounded concept that is a shopping catalog token and has a /t MID.", + "This entity has lightweight token semantic. It should be used with compound representation (go/lwt-tmids, go/compounds-in-refx). For example, a /t MID entity will be annotated to a range [from zurich], SpecialEntityType::LIGHTWEIGHT_TOKEN will be attached to the resulting EntityJoin." + ], + "type": "string" + }, + "specialWord": { + "items": { + "$ref": "MapsQualitySpecialWordsProto" + }, + "type": "array" + }, + "supportTransferRules": { + "description": "Metadata about support transfer rules defined for this entity.", + "items": { + "$ref": "RepositoryWebrefSupportTransferRule" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefFatcatCategory": { + "id": "RepositoryWebrefFatcatCategory", + "properties": { + "debugId": { + "description": "Category normalized name (for debug purposes). For example, for category \"/Beauty \u0026 Fitness\" the debug_id would be \"beauty_and_fitness\".", + "type": "string" + }, + "id": { + "description": "The category ID from verticals4. See go/verticals4 and where we read them in http://google3/repository/webref/preprocessing/fatcat-categories.cc", + "format": "int32", + "type": "integer" + }, + "score": { + "description": "The relative weight of the category within a distribution.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefForwardingUrls": { + "description": "Submessage for forwarding urls in DocumentMetadata.", + "id": "RepositoryWebrefForwardingUrls", + "properties": { + "forwardingUrl": { + "description": "Urls that forward to this url. Used for url -\u003e topical entity entries.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefFprintModifierProto": { + "description": "--------------------------------------------------------------------------- Enums defining the available modifier options.", + "id": "RepositoryWebrefFprintModifierProto", + "properties": { + "capitalization": { + "enum": [ + "CAPITALIZATION_ANY", + "CAPITALIZATION_FIRST_ONLY", + "CAPITALIZATION_SOME", + "CAPITALIZATION_ALL" + ], + "enumDescriptions": [ + "Unspecified capitalization.", + "Only the first character of the first token is capitalized.", + "At least one character other than the first character of the first token is capitalized.", + "All characters are capitalized." + ], + "type": "string" + }, + "enclosing": { + "enum": [ + "ENCLOSING_ANY", + "ENCLOSING_QUOTES", + "ENCLOSING_PARENTHESIS", + "ENCLOSING_OTHER" + ], + "enumDescriptions": [ + "Unspecified enclosing characters.", + "The name is enclosed in quotes (single or double)", + "The name is enclosed in some kind of parenthesis.", + "The name is enclosed in other characters such as \"|\" or \"*\"." + ], + "type": "string" + }, + "language": { + "description": "i18.languages.Language enum defined in i18n/languages/proto/languages.proto UNKNOWN_LANGUAGE", + "format": "int32", + "type": "integer" + }, + "namespaceType": { + "enum": [ + "NAMESPACE_DEFAULT", + "NAMESPACE_WEBIT" + ], + "enumDescriptions": [ + "The default namespace to which all WebRef names are added.", + "The namespace for WebIt-specific classification data." + ], + "type": "string" + }, + "punctuation": { + "enum": [ + "PUNCTUATION_ANY", + "PUNCTUATION_INNER" + ], + "enumDescriptions": [ + "Unspecified punctuation.", + "The name contains punctuation characters." + ], + "type": "string" + }, + "sentence": { + "enum": [ + "SENTENCE_ANY", + "SENTENCE_BEGINNING" + ], + "enumDescriptions": [ + "Unspecified position of the name with respect to the sentence.", + "The name occurs at the beginning of a sentence (i.e., after certain punctuation characters like \".\" or \"!\")." + ], + "type": "string" + }, + "sourceType": { + "enum": [ + "SOURCE_ANY", + "SOURCE_NEWS", + "SOURCE_YOUTUBE" + ], + "enumDescriptions": [ + "Unspecified source type.", + "The source is a news page.", + "The source is a youtube page." + ], + "type": "string" + }, + "stemming": { + "enum": [ + "STEMMING_ANY", + "STEMMING_YES" + ], + "enumDescriptions": [ + "Unspecified stemming.", + "The name results from stemming." + ], + "type": "string" + }, + "style": { + "enum": [ + "STYLE_ANY", + "STYLE_DISTINCT" + ], + "enumDescriptions": [ + "Unspecified formatting.", + "The name has a different format than the surrounding tokens." + ], + "type": "string" + }, + "tokenType": { + "enum": [ + "INVALID", + "CONTENT", + "URL", + "ANCHOR", + "QUERY", + "INSTANT_QUERY", + "A_HREF_TAG", + "LINK_HREF_TAG", + "IMG_ALT_TAG", + "IMG_SRC_TAG", + "META_CONTENT_TAG", + "TITLE", + "ANY", + "IMAGE_QUERY", + "CONTEXT_ENTITY", + "RESULT_ENTITY", + "CONTEXT_QUERY", + "SIMILAR_QUERIES", + "SPORE_GRAPH", + "OFFDOMAIN_ANCHOR", + "ONSITE_ANCHOR", + "NAME_CANDIDATE", + "TOPIC_LINK", + "QUERY_NAME_CANDIDATE", + "ANCHOR_NAME_CANDIDATE", + "INJECTED_NAME_CANDIDATE", + "REFERENCE_PAGE_URL", + "REFERENCE_PAGE_LINK", + "DEPRECATED_ENTITY_METADATA", + "STRONG_IDENTIFIER", + "REFERENCE_PAGE_URL_INLINK", + "REFERENCE_PAGE_LINK_INLINK", + "GEO_LINK", + "PRINCIPAL_NAME", + "NAME_BLACKLIST", + "ENTITY_CONTEXT_TOKENS", + "VIDEO_TRANSCRIPT", + "VIDEO_OCR", + "IMAGE_OCR", + "ONLY_LOOKUP_METADATA", + "EMBEDDED_CONTENT" + ], + "enumDescriptions": [ + "To be used to mark an invalid token type. This proto enum does not follow the good practices, which suggest that such a value should be with tag 0: go/protodosdonts#do-include-an-unspecified-value-in-an-enum. Because this is a legacy situation and it is not safe to just change the tags, the enum contains an invalid type at this tag and can be used to specify the default value wherever this is needed.", + "The main html content of a document.", + "The urls of a document/", + "The anchors pointing to a document.", + "The navboost queries of a document", + "The instant navboost queries of a document", + "The href-value of the tags in the document's content", + "The href-value of the tags in the document's content", + "The alt-value of the tags in the document's content", + "The src-value of the tags in the document's content", + "The content-value of the tags \"description\" and \"keyword\"", + "The document ", + "Special value used to represent any other tokentype.", + "The Image Search navboost queries.", + "Entities added from annotation context.", + "Represents an entity found in the results for Qref.", + "A query used as additional context for Qref annotations.", + "Similar Queries. They are only used to retrieve entities that might be able to explain original query. As in Q2@2018 we don't want them to be scored or provide context for scoring because of their overall big CPU impact on qrewrite (+50%).", + "A freetext dump + metadata from Spore GraphAnnotations.", + "Offdomain anchors pointing to a document.", + "Onsite anchors pointing to a document.", + "Name candidate extracted from the topic or generated from trusted source.", + "A link extracted directly from the topic:", + "Queries to reference pages which are potential names of the entity:", + "Anchor texts to reference pages which are potential names of the entity: Tokenized potential reference page URLs of the entity. Token matching is none because lookups are external annotations only.", + "Injected name candidates are appended using this segment type.", + "", + "URLs that are linked to the reference page of the entity. Token matching is none because lookups are external annotations only.", + "A special position that is used for lookup of entity metadata in name table.", + "Tokenized potential strong id of the entity, like phone number, ISBN. Token matching is none because lookups are external annotations only.", + "A special position used for lookup of inlinks to reference page urls.", + "A special position used for lookup of inlink scores for reference page outlinks.", + "", + "A name used in the name matching library for all types of matching. The type NAME_CANDIDATE is used for names that are only used for inexpensive types of matching.", + "Name blacklist for enriched entity.", + "Lyrics for song entities.", + "", + "", + "", + "Entries which are created in order to instruct the fprint-loader to load metadata for the contained ngrams.", + "The embedded content in the document (e.g., within json scripts)." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefFreebaseType": { + "description": "The Freebase type information.", + "id": "RepositoryWebrefFreebaseType", + "properties": { + "provenance": { + "description": "Optional - for inferred types the principal source of information.", + "items": { + "type": "string" + }, + "type": "array" + }, + "score": { + "description": "Optional score. Not present in KG directly but e.g. in WPCat.", + "format": "float", + "type": "number" + }, + "typeMid": { + "description": "Mid of this type. Equivalent to type_name, but is more compact. When present, overrides type_name (which can be omitted in this case to save space).", + "format": "uint64", + "type": "string" + }, + "typeName": { + "description": "e.g.: \"/business/industry\", \"/book/book_subject\", \"/people/person\"...", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefGenericIndices": { + "description": "Identifies the segment index for Webref SegmentTypes not covered by other *Indices messages.", + "id": "RepositoryWebrefGenericIndices", + "properties": { + "index": { + "description": "The segment index.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefGeoMetadataProto": { + "description": "Geo-specific information about the entity. Next available tag: 34.", + "id": "RepositoryWebrefGeoMetadataProto", + "properties": { + "address": { + "$ref": "GeostoreAddressProto", + "description": "Stores parent/container information containing city, province \u0026 country." + }, + "addressSynonyms": { + "items": { + "$ref": "RepositoryWebrefGeoMetadataProtoAddressSynonym" + }, + "type": "array" + }, + "areaKm2": { + "description": "Area in km^2 of the feature if the feature has polygon.", + "format": "double", + "type": "number" + }, + "bound": { + "$ref": "GeostoreRectProto", + "description": "The tight bounds of this feature. Note that these are different from the FeatureProto.bound field." + }, + "countryCode": { + "description": "Country code of the country of the entity. Only available in qref-metadata.", + "type": "string" + }, + "location": { + "$ref": "GeostorePointProto", + "description": "The geographic location (center) and geometry of this entity. See geostore.FeatureProto for more details." + }, + "name": { + "$ref": "GeostoreNameProto", + "description": "The best name from Oyster for this entity. Is only included for some types of entities, and is a trimmed version of the proto (some fields are cleared)." + }, + "oysterId": { + "$ref": "GeostoreFeatureIdProto", + "description": "The oyster id of the entity" + }, + "stableIntegerCountryCode": { + "description": "Numerical country code, converted with i18n/identifiers/stableinternalregionconverter.h. It is the same as country_code, but it is available in the annotator model (and takes less space).", + "format": "int32", + "type": "integer" + }, + "timezone": { + "description": "Timezone if the feature is contained inside one.", + "type": "string" + }, + "wpLocation": { + "description": "Information about the geographic location (center) extracted from the wikijoins.", + "items": { + "$ref": "RepositoryWebrefWikipediaGeocode" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefGeoMetadataProtoAddressSynonym": { + "description": "Terms from AddressComponent proto that we can use as address synonyms. At the time of annotation we have the entire AddressProto, however we can't use it all due to size. So only store relevant pieces of components (defined in superroot/impls/localweb/s2_synoyms.h).", + "id": "RepositoryWebrefGeoMetadataProtoAddressSynonym", + "properties": { + "language": { + "type": "string" + }, + "name": { + "type": "string" + }, + "type": { + "description": "The type of the geocoded address. e.g. Road, Lake, Ocean, building. This comes from TypeCategory field in geostore/base/proto/feature.proto", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefGlobalLinkInfo": { + "description": "Groups together the LinkInfo for all locales.", + "id": "RepositoryWebrefGlobalLinkInfo", + "properties": { + "debugTitle": { + "description": "A short human-readable name/title of the entity, similar to what is displayed at the top of a Hume page. Do not use for any production purpose as it does not provide guarantees for stability or policy checks (access requirements).", + "type": "string" + }, + "isBoostedPrimaryWeightLink": { + "description": "Whether this is a BoostedPrimaryWeight link. For these links in some cases a higher weight is used for primary scoring.", + "type": "boolean" + }, + "targetMid": { + "description": "The mid of the linked entity.", + "format": "uint64", + "type": "string" + }, + "variantInfo": { + "description": "The information about this link for each locale.", + "items": { + "$ref": "RepositoryWebrefLinkInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefGlobalNameInfo": { + "description": "Groups together the NameInfo for all variants of a given name. The variants of a name have the same normalized string, but they have a different original string and/or a different language/region. Example: For the name \"apple\", there may be variants such as \"apple|en\", \"apple|en|US\", \"apple|de\", \"Apple|en\"...", + "id": "RepositoryWebrefGlobalNameInfo", + "properties": { + "normalizedName": { + "description": "The normalized name.", + "type": "string" + }, + "variantInfo": { + "description": "All the variants of this name together with associated information such as score, sources, etc.", + "items": { + "$ref": "RepositoryWebrefNameInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefHumanRatings": { + "id": "RepositoryWebrefHumanRatings", + "properties": { + "annotationRatings": { + "$ref": "RepositoryWebrefAnnotationRatings" + } + }, + "type": "object" + }, + "RepositoryWebrefImageQueryIndices": { + "description": "Identifies a set of Image NavBoost queries in the CompositeDoc. Each CompositeDoc can contain several images, so we store the image index from the CompositeDoc::doc_images with the index of the particular query inside ImageData::image_data_navboost.", + "id": "RepositoryWebrefImageQueryIndices", + "properties": { + "imageIndex": { + "description": "/ The index of the source image in CompositeDoc::doc_images.", + "format": "int32", + "type": "integer" + }, + "queryIndex": { + "$ref": "RepositoryWebrefQueryIndices", + "description": "/ Queries index in ImageData::image_data_navboost." + } + }, + "type": "object" + }, + "RepositoryWebrefJuggernautIndices": { + "description": "Identifies the source of Spore segments in the CompositeDoc.", + "id": "RepositoryWebrefJuggernautIndices", + "properties": { + "index": { + "description": "Index within the proto. Several indices are necessary in case of nested repeated fields. The data can be accessed as follows: TOPICS: topic_annotations.kg_schema_topic(index(0)) .property_value(index(1)) .value(index(2)); TRIPLES: reconcile_request.triple(index(0));", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "type": { + "enum": [ + "NONE", + "TOPICS", + "TRIPLES" + ], + "enumDescriptions": [ + "Synthetic segment without a source in the cdoc.", + "repository_annotations::spore::extractor::TopicAnnotations.", + "repository_webref::ReconcileRequest." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefKCAttributeMetadata": { + "description": "Metadata related to KC attributes and Question \u0026 Answer triggering. Next available tag: 2.", + "id": "RepositoryWebrefKCAttributeMetadata", + "properties": { + "equivalentAttributeId": { + "description": "Equivalent kc attribute id for the given entity if applicable. E.g. for Daughter (/m/029wnx) this will be 'kc:/people/person:daughter'.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefKGCollection": { + "description": "See go/kg-collections", + "id": "RepositoryWebrefKGCollection", + "properties": { + "debugId": { + "description": "A human friendly identifier (collection hrid). NOTE: The field name is a misnomer, this is the preferred field to use in production.", + "type": "string" + }, + "id": { + "description": "Identifier of the collection, usually a MID (/m/xyz or /g/zyw). NOTE: In most cases, this is not the id that should be used, debug_id is the preferred identifier. The main reason is the this is not a stable id (mid for collection sometimes shift around).", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefLatentEntities": { + "description": "A list of entities that are latent given this entity. For example, \"Lionel Messi\" can have the latent entity \"FC Barcelona\". See go/refx-latent-entities for detailed description.", + "id": "RepositoryWebrefLatentEntities", + "properties": { + "latentEntity": { + "description": "Latent entities with associated metadata including source of the relationship. This is pruned (\"compacted\") from the concept table and will never reach the annotator.", + "items": { + "$ref": "RepositoryWebrefLatentEntity" + }, + "type": "array" + }, + "latentMid": { + "description": "List of broader MIDs from the Sports Hierarchy. Named incorrectly, it does not contain all latent mids.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefLatentEntity": { + "description": "Metadata about a latent entity and its relationship to a given child. See go/hits.", + "id": "RepositoryWebrefLatentEntity", + "properties": { + "broaderImportance": { + "description": "The relatedness score of the two entities corresponding to each source above.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "mid": { + "description": "The mid of the latent entity.", + "type": "string" + }, + "sources": { + "description": "The sources this generalization relationship is coming from.", + "items": { + "enum": [ + "INVALID", + "VERTICAL_SPECIFIC_RELATIONS", + "NN_HIERARCHY_V1" + ], + "enumDescriptions": [ + "", + "Hierarchical relations from the Sports hierarchy. The Sports hierarchy is derived from a set of manually curated KG properties.", + "The HITS hierarchy." + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefLexicalAnnotation": { + "description": "LexicalAnnotation is public lightweight serving structure for both WordGraph features and LWT annotations to expose lexical information downstream from RefX, e.g. in LooseParser.", + "id": "RepositoryWebrefLexicalAnnotation", + "properties": { + "lexicalRange": { + "items": { + "$ref": "RepositoryWebrefLexicalRange" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefLexicalRange": { + "description": "A single understood lexicon of the |category| on byte range from |begin_offset| (inclusive) to |end_offset| (exclusive). The byte range could be a subtoken range or span across multiple tokens.", + "id": "RepositoryWebrefLexicalRange", + "properties": { + "beginOffset": { + "description": "Byte offset of the begin of the |category|.", + "format": "int32", + "type": "integer" + }, + "category": { + "enum": [ + "UNKNOWN", + "RELATIONAL_ADJECTIVE", + "SUPERLATIVE", + "PLURAL", + "FEMALE", + "ASPECT" + ], + "enumDescriptions": [ + "", + "A range that is an adjectival expression referring to a base entity.", + "An adjectival range is expressed in the superlaive degree.", + "A range which is lexically plural.", + "A range expressing unequivocally a (semantic) female gender. This could be for expressions that are intrinsically female (\"aunt\") or the female expression of an entity that is lexically gendered (\"chairwoman\" as opposed to \"chairman\" or \"chairperson\").", + "The range designates an aspect, that is, a modifier of some other range." + ], + "type": "string" + }, + "direction": { + "description": "Direction defines the relation between the measurable aspect and the facet.", + "enum": [ + "MEASURABLE_ASPECT_DIRECTION_UNSPECIFIED", + "MEASURABLE_ASPECT_INCREASING", + "MEASURABLE_ASPECT_DECREASING" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "endOffset": { + "description": "Byte offset of the end of the |category|.", + "format": "int32", + "type": "integer" + }, + "facetMid": { + "description": "The mid of the facet associated with ASPECT category.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefLightweightTokensMatchedLightweightToken": { + "description": "Necessary information of lightweight token pattern with entity retrieval to pass to downstream clients. For example: FpTokenRange: normalized_text: \"zurichben\" language: Hungarian retrieved_entity: /m/08966 (with name \"zurich\") will get: MatchedLightweightToken: LightweightTokenType: \"LOCATIVE\" begin_offset: 6 end_offset: 9 pattern_id: 8141703461898598811 source_entity_index: 0 FpTokenRange: normalized_text: \"egyesult allamokott\" language: Hungarian retrieved_entity: /m/09c7w0 (with name \"egyesult allamok\") will get: MatchedLightweightToken: LightweightTokenType: \"LOCATIVE\" begin_offset: 16 end_offset: 19 pattern_id: 10449962977910715124 source_entity_index: 0 Note that begin_offset and end_offset marks the input byte range of the matched input text. For example, if the input text is [tannlegas] in Norwegian, this matches with the rewrite rule \"*e:*as\" to transform \"tannlegas\" to \"tannlege\". The matched byte range is [7, 9) on \"as\", therefore begin_offset = 7 and end_offset = 9. This must not be confused with the rewritten range [7, 8) on \"e\". Also, keep in mind these are byte offsets, not codepoints.", + "id": "RepositoryWebrefLightweightTokensMatchedLightweightToken", + "properties": { + "additionalBeginOffset": { + "description": "The byte offset of the beging of the additional lightweight token match. e.g. the prefix pattern of the circumfix.", + "format": "int32", + "type": "integer" + }, + "additionalEndOffset": { + "description": "The byte offset of the end of the additional lightweight token match. e.g. the suffix pattern of the circumfix.", + "format": "int32", + "type": "integer" + }, + "beginOffset": { + "description": "The byte offset of the begin of the lightweight token match within each range. The default value of -1 (std::string::npos) means that there's no affix or adposition detected.", + "format": "int32", + "type": "integer" + }, + "endOffset": { + "description": "The byte offset of the end of the lightweight token match within each range. The default value of 0 means that there's no affix or adposition detected.", + "format": "int32", + "type": "integer" + }, + "patternId": { + "description": "Matched pattern Id which will be used to retrieve back pattern features. Pattern id is only populated for Enricher model.", + "format": "uint64", + "type": "string" + }, + "sourceEntityIndex": { + "description": "The index of the source entity in the resulting WebrefEntities or WebrefEntitiesWrapper, to which the lightweight token rule is applied. This field is only populated at the end of Qref scorer when we are sure which source entity should output.", + "format": "int32", + "type": "integer" + }, + "type": { + "description": "The type of the lightweight token match, which provides the semantic information.", + "enum": [ + "UNKNOWN", + "DEFINITE", + "INDEFINITE", + "ABLATIVE", + "ADESSIVE", + "ALLATIVE", + "LOCATIVE", + "ACROSS_FROM", + "BEHIND", + "IN_FRONT", + "EAST", + "WEST", + "NORTH", + "SOUTH", + "LEFT", + "RIGHT", + "ADJACENT", + "GENITIVE", + "ACCUSATIVE", + "INSTRUMENTAL", + "DATIVE", + "CAUSATIVE", + "SOCIATIVE", + "INTERROGATIVE", + "PREPOSITIONAL", + "VOCATIVE", + "OBLIQUE", + "EMPHATIC", + "MESSAGE_RECIPIENT", + "MESSAGE_INITIATOR", + "MY_POSSESSION", + "OUR_POSSESSION", + "YOUR_SINGULAR_POSSESSION", + "YOUR_PLURAL_POSSESSION", + "YOUR_POLITE_POSSESSION", + "TRANSLATE_SOURCE_LANGUAGE", + "TRANSLATE_TARGET_LANGUAGE", + "NEW_MODIFIER", + "RECENT_MODIFIER", + "COURTESY_WORD", + "GENERIC_ADPOSITION", + "TARGET_CURRENCY", + "SOURCE_CURRENCY", + "PLURAL", + "CONJUNCTIVE", + "OPPOSITION_CONJUNCTIVE", + "MASCULINE_HONORIFIC", + "FEMININE_HONORIFIC", + "GENERIC_HONORIFIC", + "NEGATIVE_SUPERLATIVE" + ], + "enumDescriptions": [ + "", + "Articles or markers that express the definitess of a noun (see go/wordgraph/definiteness).", + "Articles or markers that express the indefiniteness of a noun (see go/wordgraph/definiteness).", + "Linguistic markers that express the movement from a place (like the English preposition *from* in a sentence like \"I came *from* my place\").", + "Linguistic markers that express the location *near* a place (like in the English preposition *near* in a sentence like \"I am near the house\").", + "Linguistic markers that express the movement towards a place (like the English preposition *to* in a sentence like \"I go *to* my house\").", + "Linguistic markers that express the location *in* a place (like the English preposition *in* in a sentence like \"I am *in* my house\").", + "Reference to a physical entity that is located on the opposite side of/across the road from the location of another entity.", + "Refer to a physical entity that is *behind* another entity.", + "Refer to a physical entity that is located *in front* of another entity.", + "Refer to a physical entity that is located *in the east* of another entity.", + "Refer to a physical entity that is located *in the west* of another entity.", + "Refer to a physical entity that is located *in the north* of another entity.", + "Refer to a physical entity that is located *in the south* of another entity.", + "Refer to a physical entity that is located *on the left* of another entity.", + "Refer to a physical entity that is located *on the right* of another entity.", + "Refers to a physical entity that is located in the immediate proximity to a place. This semantic is much more specific than the ADESSIVE one", + "Linguistic markers that express the relation of a noun with another noun (like the 's marker in English in \"Mary's book\"). Please note that this is different from possessive makers in the sense that the adposition precedes or succeeds the 'OWNER' instead of the 'OWNED' noun.", + "Linguistic markers that would be used to mark the accusative, generally the direct object of a verb.", + "Linguistic marker that is used to mark the instrumental case, indicating the instrument or means by which an action is accomplished.", + "Linguistic markers that would be used to mark the dative case, generally the indirect object of a verb.", + "Linguistic markers that would be used to indicate that a subject either causes someone or something else to do or be something or causes a change in state of a non-volitional event.", + "Linguistic markers that would be used to indicate association, or means by which action is done.", + "Linguistic markers that would be used to make questions.", + "Linguistic markers that mark the object of a preposition. This term can be used in languages where nouns have a declensional form that appears exclusively in combination with certain prepositions. These markers do not include the actual preposition but only the corresponding inflection pattern.", + "Linguistic markers that would be used in addressing or invoking a person or thing.", + "Linguistic markers used to indicate that the noun generally can not be used in a subject position.", + "Linguistic markers used to express attitude or emphasis. They can occur with nouns, adjectives, verbs and adverbs.", + "Linguistic markers that mark the recipient (or receiver) of a message or a call.", + "Linguistic markers that mark the initiator of a message or a call.", + "Linguistic markers (like English determiner \"my\") that mark a possession from a first person singular possessor.", + "Linguistic markers (like English determiner \"our\") that mark a possession from a first person plural possessor.", + "Linguistic markers (like English determiner \"your\") that mark a possession from a second person singular possessor.", + "Linguistic markers (like Italian determiner \"vostro\") that mark a possession from a second person plural possessor.", + "Linguistic markers (like Italian determiner \"suo\") that mark a possession from a second person possessor in polite form.", + "Linguistic markers that mark the source language in an expression like \"translate *from* English\".", + "Linguistic markers that mark the target language in an expression like \"translate *into* French\".", + "", + "", + "", + "", + "Linguistic markers that mark the target currency in an expression like \"how much is 5 dollars *in* pounds\".", + "Linguistic markers that mark the source currency in an expression like \"convert *from* dollars to pounds\".", + "Plural markers", + "Conjunctive coordinator or marker (like English \"and\").", + "Opposition conjunctive or marker (like English \"versus\", \"v.s.\").", + "Masculine Honorific markers.", + "Feminine Honorific markers.", + "Non-specific Honorifc markers.", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefLightweightTokensPerMentionLightweightToken": { + "description": "Collects all lightweight token patterns for each CandidateMention or Mention.", + "id": "RepositoryWebrefLightweightTokensPerMentionLightweightToken", + "properties": { + "matchedLightweightToken": { + "items": { + "$ref": "RepositoryWebrefLightweightTokensMatchedLightweightToken" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefLightweightTokensPerNameLightweightToken": { + "description": "Collects all lightweight token patterns for each NameToConceptEntry.", + "id": "RepositoryWebrefLightweightTokensPerNameLightweightToken", + "properties": { + "matchedLightweightToken": { + "items": { + "$ref": "RepositoryWebrefLightweightTokensMatchedLightweightToken" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefLinkInfo": { + "description": "Represents all information we have about a specific/localized link. Next available tag: 11.", + "id": "RepositoryWebrefLinkInfo", + "properties": { + "aggregatedScore": { + "description": "The score aggregated from all sources.", + "format": "float", + "type": "number" + }, + "isPreferredDirection": { + "description": "The EntityJoin keeps bi-directional links, but for some applications we only need them in one direction. This value indicates whether this is the preferred direction to keep. (We usually prefer keeping the link from the less common to the more common entity for performance reasons). For categorical links the preferred direction is from child to parent.", + "type": "boolean" + }, + "metadata": { + "$ref": "RepositoryWebrefEntityLinkMetadata", + "description": "The metadata associated with the link." + }, + "source": { + "description": "The per-source scores.", + "items": { + "$ref": "RepositoryWebrefEntityLinkSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefLinkKindFlags": { + "description": "A bitmap of bool values associated with a link kind. Next available tag: 12", + "id": "RepositoryWebrefLinkKindFlags", + "properties": { + "cluster": { + "enum": [ + "NO_CLUSTER", + "CLUSTER_CHILD_OF", + "CLUSTER_PARENT_OF" + ], + "enumDescriptions": [ + "", + "The main entity is a child of the linked entity.", + "The main entity is a parent of the linked entity." + ], + "type": "string" + }, + "geoContainment": { + "enum": [ + "NO_CONTAINMENT", + "CONTAINED_BY", + "CONTAINS", + "PARTIAL_OVERLAP", + "HAS_STREET_NUMBER", + "LOCATED_ON_STREET" + ], + "enumDescriptions": [ + "", + "The main entity is a geographically contained by", + "the linked entity. The main entity is a geographical container of", + "the linked entity. The main entity partially overlaps with the", + "linked entity. The main entity is a street and contains the", + "street number that is represented by the linked entity. The main entity is a street number and is" + ], + "type": "string" + }, + "implication": { + "enum": [ + "NO_IMPLICATION", + "IMPLIED_BY", + "IMPLIES", + "BIDIRECTIONAL_IMPLICATION", + "UNDERMERGED" + ], + "enumDescriptions": [ + "", + "The main entity is implied by the linked entity.", + "The main entity implies the linked entity.", + "Both entities imply each other.", + "Both entities are the same concept." + ], + "type": "string" + }, + "latentEntity": { + "enum": [ + "NO_LATENT_ENTITY", + "LATENT_ENTITY", + "MANIFEST_ENTITY", + "LATENT_ENTITY_V2", + "MANIFEST_ENTITY_V2" + ], + "enumDescriptions": [ + "There is no latent entity relationship between the entities. Default value, should not be explicitly set.", + "The relationship points to a latent entity. For example, if \"Lionel Messi\" has latent entity \"FC Barcelona\", this should be populated on the relationship from Messi to Barcelona.", + "The reverse of LATENT_ENTITY, e.g. from \"FC Barcelona\" to \"Lionel Messi\".", + "Links pointing to latent entities according to the new hierarchy. See go/refx-latent-entities.", + "Links pointing to manifest entities according to the new hierarchy." + ], + "type": "string" + }, + "mdvc": { + "enum": [ + "NO_MDVC", + "MDVC_SPECIALIZATION_OF", + "MDVC_GENERALIZATION_OF", + "MDVC_DIMENSION_VALUE", + "MDVC_DIMENSION_VALUE_OF", + "MDVC_RESOLUTION", + "MDVC_EXPANDED_OUTPUT" + ], + "enumDescriptions": [ + "", + "(Transitive) descendant in MDVC hierarchy.", + "(Transitive) ancestor in MDVC hierarchy.", + "MDVC attribute.", + "MDVC attribute owner.", + "MDVC resolution.", + "MDVC_EXPANDED_OUTPUT is used to mark the link between annotated entities and the entities that were added by output expansion, e.g. from a car model to the latest model year." + ], + "type": "string" + }, + "property": { + "enum": [ + "NO_PROPERTY", + "EQUIVALENT_TOPIC", + "EQUIVALENT_PROPERTY" + ], + "enumDescriptions": [ + "There is no property relationship between the entities. Default value, should not be explicitly set.", + "The relationship points from a property to its equivalent topic. For example, from /people/person/parents to /m/Parent.", + "The relationship points from a topic to an equivalent property. For example, from /m/Parent to /people/person/parents." + ], + "type": "string" + }, + "resolution": { + "enum": [ + "NO_RESOLUTION", + "MAY_BE_RESOLVED_FROM", + "MAY_RESOLVE_TO", + "RESOLVED_FROM", + "RESOLVES_TO" + ], + "enumDescriptions": [ + "", + "The link type is such that we may add a", + "RESOLVED_FROM attribute to it later. The link type is such that we may add a", + "RESOLVES_TO attribute to it later. The current entity is resolved from the linked", + "entity (e.g. the link goes from to ). The current entity is one of the entities that" + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefLinkKindInfo": { + "description": "Information about one of the types of a linked entity.", + "id": "RepositoryWebrefLinkKindInfo", + "properties": { + "flags": { + "$ref": "RepositoryWebrefLinkKindFlags", + "description": "The flags associated with the link kind." + }, + "kcLinkName": { + "description": "Link name extracted from Knowledge Card facts.", + "type": "string" + }, + "topicPropertyName": { + "description": "If the link was extracted from a property, the name of the property. Can start with an exclamation mark \"!\" to indicate that the inverse relationship is specified. (e.g. \"!/tv/tv_series_episode/series\" is the inverse of \"tv/tv_program/episodes\").", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefLocalizedString": { + "description": "Next available tag: 8.", + "id": "RepositoryWebrefLocalizedString", + "properties": { + "domain": { + "description": "The domain name from which results come, e.g. \"play.google.com\".", + "type": "string" + }, + "fprintModifier": { + "$ref": "RepositoryWebrefFprintModifierProto", + "description": "FprintModifier describing the formatting of the string. If fprint_modifier is set, then original_string, language and region should not be set." + }, + "language": { + "description": "The language in the III standard (http://go/iii)", + "type": "string" + }, + "normalizedString": { + "type": "string" + }, + "originalString": { + "type": "string" + }, + "region": { + "description": "The region in the III standard (http://go/iii)", + "type": "string" + }, + "sourceType": { + "description": "Which querybase pipeline the data comes from.", + "enum": [ + "SOURCE_NAVBOOST", + "SOURCE_SCRAPE", + "SOURCE_INSTANT_NAVBOOST" + ], + "enumDescriptions": [ + "From queries derived from regular NavBoost data and stored in querybase, querybase-zero or querybase-zero-dev.", + "From scraped queries.", + "From queries derived from Instant NavBoost data and stored in querybase-fresh-zero or querybase-fresh-zero-dev." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefMdvcMetadata": { + "description": "Metadata about MDVC (go/mdvc). Next available tag: 18.", + "id": "RepositoryWebrefMdvcMetadata", + "properties": { + "dimension": { + "description": "Undergoing migration into the PerVertical message. Avoid using it. Concept ids of MDVC dimensions of this concept.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "expandedOutputConceptId": { + "description": "Undergoing migration into the PerVertical message. Avoid using it. List of encoded mids to be expanded in WebRef/QRef output whenever this entity gets annotated. Will be populated in the annotators once static data is deprecated. b/78866814.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "generalization": { + "description": "Undergoing migration into the PerVertical message. Avoid using it. Concept ids of MDVC generalizations of this concept.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "isSynthetic": { + "description": "True iff the topic is synthetically created during by MDVC extraction.", + "type": "boolean" + }, + "perVertical": { + "description": "Data, specific to particular verticals.", + "items": { + "$ref": "RepositoryWebrefMdvcMetadataPerVertical" + }, + "type": "array" + }, + "queryToLongRunningStoryDataset": { + "$ref": "NewsReconServiceLrsQ2lrs2QueryToLrsDataset" + }, + "resolutionPriority": { + "description": "Undergoing migration into the PerVertical message. Avoid using it. Resolution priority for this entity. In case a query has many possible resolutions, only the ones with the highest resolution priority are annotated.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefMdvcMetadataPerVertical": { + "description": "Per-vertical part. Next available tag: 19", + "id": "RepositoryWebrefMdvcMetadataPerVertical", + "properties": { + "compatibleIds": { + "description": "Concept ids compatible with this topic: specializations and/or ones having this concept as a dimension. Always includes the topic itself.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "dimensionIds": { + "description": "Concept ids of the dimension values of this topic.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "expandedOutputIds": { + "description": "Concept ids to annotate whenever this entity is annotated.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "generalizationIds": { + "description": "Concept ids of the generalizations of this topic.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "isCore": { + "description": "True if the topic is considered a \"core topic\" for the vertical.", + "type": "boolean" + }, + "isDimension": { + "description": "If true, the entity is a dimension for some entities in the vertical.", + "type": "boolean" + }, + "isGeneralization": { + "description": "If true, the entity is a generalization for some entities in the vertical.", + "type": "boolean" + }, + "resolutionPriority": { + "description": "Resolution priority for this entity. If there are many possible resolutions to a MDVC understanding, only the ones with the highest priority are annotated.", + "format": "int32", + "type": "integer" + }, + "subVerticalFp": { + "description": "Fingerprints that identify the topic's sub-verticals, if any.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "verticalName": { + "description": "Name of the vertical this message is about.", + "enum": [ + "UNKNOWN", + "CARS", + "CVG", + "PRODUCTS", + "SYMPTOMS", + "CHAINS", + "SYMPTOMS_PATTERN", + "MOVIES", + "SPORTS_TEAM", + "EXAMS", + "MOTORCYCLES", + "TOURNAMENTS", + "PRIMEREF", + "SONGS", + "AWARDS", + "EDUCATION", + "EVENTS", + "OLYMPICS", + "BIG_MOMENTS", + "DISASTERS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefMention": { + "description": "Multiple entities can be identified on a document or query. Each entity can be mentioned several times in different positions on the document or query. This message describes a single mention of the entity. Note that a mention can be either explicit or implicit mentions. All explicit mentions refer to exact range in the document where the entity occurred, but implicit mentions may or may not have corresponding range. Next available tag number: 40", + "id": "RepositoryWebrefMention", + "properties": { + "addedByCloseAnswers": { + "description": "Whether this mention was created by CloseAnswers on Postref. This bit is populated into corresponding intent_query through Aqua.", + "type": "boolean" + }, + "additionalExplainedRange": { + "description": "If the mention's range is discontinuous, additional ranges that are a part of the mention but are not included in the begin/end range above.", + "items": { + "$ref": "RepositoryWebrefMentionAdditionalExplainedRange" + }, + "type": "array" + }, + "begin": { + "description": "The [begin, end) byte offset, compatible with the Goldmine DocState representation. - For CONTENT, TITLE, META_CONTENT_TAG and IMG_ALT_TAG segments, the offsets are relative to the beginning of the document content. - For ANCHOR, QUERY, URL, IMAGE_QUERY, CONTEXT_ENTITY, CONTEXT_QUERY, SPORE_GRAPH, INSTANT_QUERY and VIDEO_TRANSCRIPT segments, the offsets are relative to the beginning of the corresponding (sub-)segment or text from doc attachment. The (indexing.annotations.goldmine) options are marks for Goldmine AnnotationsFinder to locate begin and end offsets in order to extract them", + "format": "int32", + "type": "integer" + }, + "beginTokenIndex": { + "description": "The [begin end) token offsets in the Goldmine DocState. They follow similar rules as \"begin\" and \"end\" above, but for tokens rather than byte offsets. These fields are currently only populated by the query annotator.", + "format": "int32", + "type": "integer" + }, + "compoundMention": { + "description": "For a compound mention, the references to the entity and mention of the components. Each compound_mention claims one or more 'mrf' fields from the WebrefEntity owning this mention. Use QueryJoinToMeaningStructConverter to expand compound mentions into complete MRF.", + "items": { + "$ref": "RepositoryWebrefMentionCompoundMention" + }, + "type": "array" + }, + "confidenceScore": { + "description": "A probabilistic score describing how certain the annotator is that this exact range in the document or query refers to the entity. Probability that a mention is correct corresponds to confidence score roughly as follows: 0.3 -\u003e 75% 0.5 -\u003e 87% 0.7 -\u003e 89% 0.9 -\u003e 94% 1.0 -\u003e 98% However if you consider all mentions with a score above 0.3, then most of these will have scores close to 1, so the overall precision of these mentions is around 95%.", + "format": "float", + "type": "number" + }, + "debugInfo": { + "$ref": "RepositoryWebrefMentionDebugInfo", + "description": "Debug information." + }, + "detailedMentionScores": { + "$ref": "RepositoryWebrefDetailedMentionScores", + "description": "Additional detailed scores about this mention." + }, + "end": { + "format": "int32", + "type": "integer" + }, + "endTokenIndex": { + "format": "int32", + "type": "integer" + }, + "evalInfo": { + "$ref": "RepositoryWebrefMentionEvalInfo", + "description": "Information used by the evaluation tools to mark mentions annotations as correct/incorrect. This will never be annotated in production (would be nice if was, though :-))." + }, + "interpretationNumber": { + "description": "DEPRECATED and not populated anymore.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "isImplicit": { + "description": "True if the entity is mentioned implicitly. Note that a mention can be implicit *and* have a non-empty range, for example if the entity is Sports, and this is inferred from the mention of \"gym\".", + "type": "boolean" + }, + "lexicalAnnotation": { + "$ref": "RepositoryWebrefLexicalAnnotation", + "description": "Provides a Wordgraph lexical signals for the mentioned range so it can be use in LooseParsing. Please don't use this field before consulting wordgraph-team." + }, + "lowConfidence": { + "description": "Qref \u0026 Postref only: Set to true for candidates part of qref candidate output for which there was no mention in qref. Internal to qref and LooseParsing. Do not use outside of these systems.", + "type": "boolean" + }, + "matchingText": { + "description": "Refcon-only: Annotated span in Refcon-normalized textual format, corresponding to the [begin end) offset interval in the CDoc. It will only be populated for CDocs originated from Docjoin extraction.", + "type": "string" + }, + "nameMetadata": { + "$ref": "RepositoryWebrefConceptNameMetadata", + "description": "Metadata attatched to the name." + }, + "nonLocationalScore": { + "description": "Whether the mention is a non-locational reference to a geographical entity. Ranges from 0 (locational) to 1 (non-locational).", + "format": "float", + "type": "number" + }, + "perMentionLightweightToken": { + "$ref": "RepositoryWebrefLightweightTokensPerMentionLightweightToken", + "description": "Provides concised access to all matched MatchedLightweightToken." + }, + "personalizationContextOutputs": { + "$ref": "RepositoryWebrefPersonalizationContextOutputs", + "description": "Additional personalization output scores about this mention." + }, + "priorProbability": { + "description": "The prior probability of the entity for this mention.", + "format": "float", + "type": "number" + }, + "referenceScore": { + "description": "Whether the mention is a reference (e.g. it could be resolved to an entity coming from personal data) or not, currently only used for personal resolutions. Scores from 0 (not a reference) to 1 (reference). Use at your own risk as they are subject to change, advised to talk to refx-personal first.", + "format": "float", + "type": "number" + }, + "resolutionScore": { + "description": "Whether the mention is a resolution or not, currently only used for personal resolutions. Scores from 0 (not a resolution) to 1 (resolution). Use at your own risk as they are subject to change, advised to talk to refx-personal first.", + "format": "float", + "type": "number" + }, + "stuff": { + "$ref": "Proto2BridgeMessageSet", + "description": "Assorted things that can be added to a Mention." + }, + "subsegmentIndex": { + "$ref": "RepositoryWebrefSubSegmentIndex", + "description": "Identifies the sub-segment where the annotation occurs. See SubSegmentIndex for details. Not present in QRef, also deprecated for URL segment types." + }, + "timeOffsetConfidence": { + "description": "Confidence for the time_offset_ms annotation, quantized to values in range 0-127 (see speech::VideoASRServerUtil::ConfidenceQuantize for how the quantization was done). Confidence can be empty for special characters (e.g. spaces).", + "format": "int32", + "type": "integer" + }, + "timeOffsetMs": { + "description": "Timestamp that this mention appeared in the video. The field is only populated for VIDEO_TRANSCRIPT when the byte offset is the same. It is extracted from cdoc.doc_videos.content_based_metadata.transcript_asr.transcript.timestamp.", + "format": "int32", + "type": "integer" + }, + "trustedNameConfidence": { + "description": "Confidence that this name is a trusted name of the entity. This is set only in case the confidence is higher than an internal threshold (see ConceptProbability).", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefMentionAdditionalExplainedRange": { + "description": "Additional ranges covered by the mention. Next available tag: 5", + "id": "RepositoryWebrefMentionAdditionalExplainedRange", + "properties": { + "begin": { + "description": "Like begin/end, begin_token_index/end_token_index above.", + "format": "int32", + "type": "integer" + }, + "beginTokenIndex": { + "format": "int32", + "type": "integer" + }, + "end": { + "format": "int32", + "type": "integer" + }, + "endTokenIndex": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefMentionComponent": { + "description": "Reference to a component of a compound mention. Next available tag: 5", + "id": "RepositoryWebrefMentionComponent", + "properties": { + "entityIndex": { + "description": "The indices to identify the entity within the WebrefEntities.entities, the segment within its EntityAnnotations.segment_mentions, and the mention within that segment. entity_index is always guaranteed to be set, but segment_mentions_index and mention_index are omitted if the component reference is implicit.", + "format": "int32", + "type": "integer" + }, + "isHeadComponent": { + "description": "The source of the compound has designated this component as the head. Only one of the components can be a head, but it's possible none are.", + "type": "boolean" + }, + "mentionIndex": { + "format": "int32", + "type": "integer" + }, + "segmentMentionsIndex": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefMentionCompoundMention": { + "description": "A single compound mention. Next available tag: 3", + "id": "RepositoryWebrefMentionCompoundMention", + "properties": { + "component": { + "description": "References to the component mentions which the MRF needs to be fully expanded. It is guaranteed that for a given set of components there exists only a single CompoundMention, i.e. the CompoundMentions are deduped to be unique so each set of components is present only once. The ArgumentValue of the WebrefEntity.mrf refer to these components via ComponentReference; it is guaranteed there are as many components as the MRF expression refers to.", + "items": { + "$ref": "RepositoryWebrefMentionComponent" + }, + "type": "array" + }, + "mrfIndex": { + "description": "The WebrefEntity.mrf indices which this compound applies to. There can be at most one CompoundMention which claims an MRF index, but it is possible there are MRF expressions which are not claimed by any CompoundMention.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefMentionDebugInfo": { + "id": "RepositoryWebrefMentionDebugInfo", + "properties": { + "cleanText": { + "description": "A clean version of text. This is mostly used for compatibility with other Goldmine annotators.", + "type": "string" + }, + "infoString": { + "description": "Optional debug information.", + "items": { + "type": "string" + }, + "type": "array" + }, + "snippet": { + "description": "A snippet of the parsed text (html tags removed) in the page around this mention. Useful for human evaluation of the quality of the annotations. Outputted by WebrefAnnotator if --webref_output_mention_snippet_size is set to a value greater than 0.", + "type": "string" + }, + "text": { + "description": "Original UTF-8 document text occurring in the range [begin, end).", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefMentionEvalInfo": { + "id": "RepositoryWebrefMentionEvalInfo", + "properties": { + "atmWeight": { + "description": "Weight of the mention used in the ATM score.", + "format": "float", + "type": "number" + }, + "rating": { + "description": "The aggregate numerical rating of this mention. 0.0 means completely incorrect, and 1.0 completely correct.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefMentionRatings": { + "description": "Per document mention ratings. Next id: 10", + "id": "RepositoryWebrefMentionRatings", + "properties": { + "begin": { + "description": "Byte offsets of the mention.", + "format": "uint32", + "type": "integer" + }, + "end": { + "format": "uint32", + "type": "integer" + }, + "mentionMatch": { + "items": { + "enum": [ + "SUBPART", + "SUPER", + "EXACT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "singleMentionRating": { + "items": { + "$ref": "RepositoryWebrefMentionRatingsSingleMentionRating" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefMentionRatingsSingleMentionRating": { + "description": "Next available tag: 11", + "id": "RepositoryWebrefMentionRatingsSingleMentionRating", + "properties": { + "isCorrectRange": { + "description": "Set for mentions got from the new topicality template. True if the raters checked this range as being a good range for the entity. If the range is not correct we demote the mention score. This field is only used in template version V1. From template version V2 and forward it is now set via phrase_refer.", + "type": "boolean" + }, + "mentionMatch": { + "enum": [ + "SUBPART", + "SUPER", + "EXACT" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "mentionRelevant": { + "enum": [ + "NOT_RELEVANT", + "RELEVANT", + "CORRECT", + "NOT_VALID" + ], + "enumDescriptions": [ + "", + "", + "", + "Note that raters might give one of the above (valid) ratings even if the task is not readable. However, when the task is not readable, we override the EWOK rating with NOT_VALID." + ], + "type": "string" + }, + "phraseRefer": { + "enum": [ + "PHRASE_REFER", + "PHRASE_MAYBE_REFER", + "PHRASE_NOT_REFER" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "raterCanUnderstandTopic": { + "description": "Whether rater can understand the topic.", + "type": "boolean" + }, + "ratingSource": { + "description": "The source of the rating, possibly a golden set external to EWOK.", + "enum": [ + "RATING_SOURCE_UNKNOWN", + "RATING_SOURCE_EWOK", + "RATING_SOURCE_SAFT_GOLDEN", + "RATING_SOURCE_CROWDCOMPUTE", + "RATING_SOURCE_CROWDCOMPUTE_RERATING", + "RATING_SOURCE_GOLDEN" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "Ratings by WebRef engineers." + ], + "type": "string" + }, + "resultCount": { + "format": "int32", + "type": "integer" + }, + "taskData": { + "$ref": "RepositoryWebrefTaskData" + }, + "topicMentionedInResult": { + "items": { + "enum": [ + "RESULT_MENTIONED", + "RESULT_MAYBE_MENTIONED", + "RESULT_NOT_MENTIONED" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefNameDebugInfo": { + "description": "Collects signals from one query used for prior learning.", + "id": "RepositoryWebrefNameDebugInfo", + "properties": { + "candidates": { + "description": "List of per-candidate signals derived from annotation of this query.", + "items": { + "$ref": "RepositoryWebrefNameDebugInfoCandidateInfo" + }, + "type": "array" + }, + "query": { + "$ref": "RepositoryWebrefLocalizedString", + "description": "Query with region (language is set in parent NameInfo)." + }, + "weight": { + "description": "Query weight used in learning.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefNameDebugInfoCandidateInfo": { + "description": "Collects signals from one query and one candidate. Next available tag: 9", + "id": "RepositoryWebrefNameDebugInfoCandidateInfo", + "properties": { + "isMatchlessResultContext": { + "description": "Whether the entity is purely from strong result entities, and is matchless in query annotation.", + "type": "boolean" + }, + "mid": { + "description": "Mid of the candidate entity or empty string for the full world.", + "type": "string" + }, + "name": { + "description": "Debug name of the entity (not usually populated).", + "type": "string" + }, + "resultEntityScore": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefNameInfo": { + "description": "Represents all information we have about a specific/localized name. Next available tag: 13. NOTE: If you add a field to the NameInfo proto and wish to retain it *after* the GlobalNameInfo merging steps in //r/w/enricher/pipeline:topic-enricher-flume-main then the appropriate combining logic for turning a flume stream of NameInfo protos into a single NameInfo must be updated with the new field in mind, in either or both of CombineContextNameInfosFn/CombineNameInfosFn. If not, the newly added field will be ignored during the merging steps (presumably because it is a transient field or a debug field that is not necessary to be retained).", + "id": "RepositoryWebrefNameInfo", + "properties": { + "aggregatedScores": { + "$ref": "RepositoryWebrefAggregatedEntityNameScores", + "description": "The score aggregated from all sources." + }, + "annotatedCategory": { + "description": "Information on categories annotated on the range.", + "items": { + "$ref": "RepositoryWebrefAnnotatedCategoryInfo" + }, + "type": "array" + }, + "debugDetails": { + "description": "DEBUG ONLY: stores a list of queries with per-candidate scores about signals used for prior learning.", + "items": { + "$ref": "RepositoryWebrefNameDebugInfo" + }, + "type": "array" + }, + "includeInModel": { + "description": "Field which decides if this NameInfo should be included in model creation.", + "type": "boolean" + }, + "name": { + "$ref": "RepositoryWebrefLocalizedString", + "description": "The specific name to which this information applies." + }, + "ngramData": { + "$ref": "RepositoryWebrefUniversalNgramData", + "description": "N-gram data (e.g. n-gram IDF)." + }, + "perNameLightweightToken": { + "$ref": "RepositoryWebrefLightweightTokensPerNameLightweightToken", + "description": "Lightweight token semantic metadata for inflected name." + }, + "scores": { + "$ref": "RepositoryWebrefNameScores", + "description": "The name-specific scores. These scores only depend on the name and are independent of the entity." + }, + "source": { + "description": "The per-source scores.", + "items": { + "$ref": "RepositoryWebrefEntityNameSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefNameScores": { + "description": "Represents some name-specific scores. (Unlike EntityNameScore, these scores are independent of the entities the name is associated with). These scores are available for each name as well as for each name/source. Next available tag: 31.", + "id": "RepositoryWebrefNameScores", + "properties": { + "completeWorldVolume": { + "description": "Approximates volume of this name including entities we don't have in our set. This is useful to estimate the size of the \"open world\". For example, this field can be equal to the total number of clicks for the query. Note that for now, we ignore the number of clicks but just use the idf if available.", + "format": "float", + "type": "number" + }, + "contextFringeScore": { + "description": "The fringe score in [0, 1] for this context name. This is only populated for full-query context names.", + "format": "float", + "type": "number" + }, + "contextWeight": { + "description": "The amount of evidence available for this context name.", + "format": "float", + "type": "number" + }, + "idfScore": { + "description": "The idf of this name.", + "format": "float", + "type": "number" + }, + "openWorldVolumeModifier": { + "description": "'Raw' open world is computed based on ngram count data. For some names however, we modify the open world based on entities associated with them. This field contains the additive open world modifier. open_world_volume = raw open world + open_world_volume_modifier", + "format": "float", + "type": "number" + }, + "totalScore": { + "description": "The total score of that name/source. It describes how much data we have for that name/source. It can for example be the sum of all the entity scores for this name.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefNgramContext": { + "description": "An N-gram context encountered on the document.", + "id": "RepositoryWebrefNgramContext", + "properties": { + "mention": { + "description": "The entities that were annotated on the context", + "items": { + "$ref": "RepositoryWebrefNgramMention" + }, + "type": "array" + }, + "text": { + "description": "The context (original) text.", + "type": "string" + }, + "weight": { + "description": "The weight of the context on the document; depends on how many times we saw the string in the document.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefNgramMention": { + "description": "A mention that has been matched in the context (or a substring of it).", + "id": "RepositoryWebrefNgramMention", + "properties": { + "mid": { + "description": "The entity the mention was referring to.", + "type": "string" + }, + "score": { + "description": "The average score the mention was given across all occurrences of the n-gram.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefOysterType": { + "description": "Oyster type information.", + "id": "RepositoryWebrefOysterType", + "properties": { + "featureType": { + "description": "The Oyster feature type, which provides a rough categorization. This is a value of the enum geostore.FeatureProto.TypeCategory.", + "format": "int32", + "type": "integer" + }, + "gconcepts": { + "$ref": "GeostoreOntologyRawGConceptInstanceContainerProto", + "description": "Geo Ontology GConcept Instances from the FeatureProto. - Design doc linked off http://wiki/Main/GeoOntology - Use the accessor library to read this field: geostore/base/public/gconcept_instance.h" + } + }, + "type": "object" + }, + "RepositoryWebrefPatternInfo": { + "id": "RepositoryWebrefPatternInfo", + "properties": { + "matchProbability": { + "description": "The confidence we can trust this pattern.", + "format": "float", + "type": "number" + }, + "otherSlotsMentioned": { + "description": "Whether other slots is mentioned in annotator. If they is no other slot, it is set to true.", + "type": "boolean" + }, + "pattern": { + "description": "The corresponding patterns matched on this candidate, which contains the pattern string and the slot number of the candidate in this pattern, such as [|/athletes|vs|/athletes|]_1.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefPerDocRelevanceRating": { + "description": "Per document ratings relevance ratings. Next id: 21.", + "id": "RepositoryWebrefPerDocRelevanceRating", + "properties": { + "contentRelevant": { + "enum": [ + "NONE", + "NOT_APPLICABLE", + "NOT_RELEVANT", + "BARELY_RELEVANT", + "RELEVANT", + "IMPORTANT", + "VITAL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "deprecatedItemId": { + "format": "int32", + "type": "integer" + }, + "deprecatedProjectId": { + "format": "int32", + "type": "integer" + }, + "deprecatedTaskId": { + "format": "int32", + "type": "integer" + }, + "displayString": { + "description": "How this rating is displayed in the evals, pre-computed from the other fields.", + "type": "string" + }, + "furballUrl": { + "description": "The url of the ewok task that resulted in this rating. Example: https://furball.corp.google.com/project/view-item?itemId=1\u0026projectId=2", + "type": "string" + }, + "itemDescription": { + "type": "string" + }, + "itemId": { + "format": "uint64", + "type": "string" + }, + "language": { + "type": "string" + }, + "pageIsAboutChain": { + "description": "If the topic is about a business chain, whether the", + "enum": [ + "PAGE_IS_ABOUT_CHAIN_NONE", + "NOT_SAME_CHAIN_AS_TOPIC", + "ALL_LOCATIONS_OF_TOPIC_CHAIN", + "SEVERAL_LOCATIONS_OF_TOPIC_CHAIN", + "EXACT_LOCATION_OF_TOPIC_CHAIN", + "DIFFERENT_LOCATION_OF_TOPIC_CHAIN" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "pageNotLoaded": { + "description": "If true, content_relevance is set to NONE.", + "type": "boolean" + }, + "projectId": { + "format": "uint64", + "type": "string" + }, + "raterCanUnderstandTopic": { + "description": "Whether rater can understand the topic.", + "type": "boolean" + }, + "ratingScore": { + "description": "Floating point representation of the `content_relevant` field.", + "format": "double", + "type": "number" + }, + "taskDetails": { + "$ref": "RepositoryWebrefTaskDetails" + }, + "taskId": { + "format": "uint64", + "type": "string" + }, + "taskStatus": { + "type": "string" + }, + "taskUser": { + "format": "int32", + "type": "integer" + }, + "templateId": { + "description": "Metadata for task-level ratings. Not filled for aggregated doc-level ratings. ", + "format": "int32", + "type": "integer" + }, + "topicIsChain": { + "description": "Whether the topic is about a business chain.", + "enum": [ + "TOPIC_IS_ABOUT_CHAIN_NONE", + "CHAIN_SPECIFIC_LOCATION", + "CHAIN_ENTITY", + "NOT_CHAIN", + "UNSURE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefPerDocRelevanceRatings": { + "description": "Aggregates ratings by url/doc_fp.", + "id": "RepositoryWebrefPerDocRelevanceRatings", + "properties": { + "docFp": { + "description": "- In topicality ratings this is Fingerprint2011() of the normalized cdoc. - In query-mention ratings this is a hash of the QueryJoin. - In doc-content-mention ratings this is a hash of a QueryJoin in which the mention rating task has been embedded. - ", + "format": "uint64", + "type": "string" + }, + "docLevelRating": { + "$ref": "RepositoryWebrefPerDocRelevanceRating" + }, + "entityNameRating": { + "items": { + "$ref": "RepositoryWebrefEntityNameRatings" + }, + "type": "array" + }, + "listMembership": { + "items": { + "$ref": "RepositoryWebrefToprefListMembership" + }, + "type": "array" + }, + "mentionRating": { + "items": { + "$ref": "RepositoryWebrefMentionRatings" + }, + "type": "array" + }, + "pageClassification": { + "items": { + "$ref": "RepositoryWebrefToprefPageClassification" + }, + "type": "array" + }, + "taskLevelRating": { + "items": { + "$ref": "RepositoryWebrefPerDocRelevanceRating" + }, + "type": "array" + }, + "url": { + "description": "- In topicality ratings this is the url of the document. - In query-mention ratings this is the query in format \"en:US:query text\". - In doc-content-mention ratings this is %x:%s where %x is the hex doc_fp of the cdoc (TODO(b/139799592) or sometimes the doc_fp below), and %s is the text of the eval range. - In entity-name ratings this is the MID of the entity.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefPersonalizationContextOutput": { + "description": "Key-Value-like message to store values associated with a personalization type. Next id: 3", + "id": "RepositoryWebrefPersonalizationContextOutput", + "properties": { + "score": { + "description": "Score corresponding to some kind of biasing strength which was applied. The exact semantics of this score is subject to further changes. Don't make assumptions about specific values or ranges. Values \u003e 0 represents that a boost was applied. Values \u003c 0 represents that a penalty was appled.", + "format": "float", + "type": "number" + }, + "type": { + "enum": [ + "UNKNOWN", + "USER_CORRECTIONS", + "MEDIA_HISTORY", + "ANIMA_ENTITY_INTERESTS" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefPersonalizationContextOutputs": { + "description": "Details about personalization and contextual scoring decisions from Personalized Query Understanding (go/pqu). This message represents information about what kind of biasing was applied, including what type of data were used and how strongly. Intended to be used by client code for fine-tuning necessary ranking or triggering logic if it's not possible to rely on the aggregated annotation confidence alone. To minimize unwanted dependencies and incorrect usage of the data this proto has restricted visibility. Please reach out to refx-pqu@google.com if you want to have access. Next id: 2", + "id": "RepositoryWebrefPersonalizationContextOutputs", + "properties": { + "outputs": { + "description": "Detailed output scores per personalization type.", + "items": { + "$ref": "RepositoryWebrefPersonalizationContextOutput" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingNameEntityMetadata": { + "description": "Metadata about a name. There are two metadata protos, whose content is meant to be similar but their usage different: NameEntityMetadata for readability and ConceptNameMetadata for size / decoding speed. NameEntityMetadata is propagated to GlobalNameInfo and EntityJoin tables, while ConceptNameMetadata is propagated from EntityJoins to the name matching tables and later to the Webref's/QRef's output. To add a new metadata field in the Names pipeline, and propagate it to EntityJoins and Names matching tables, it is necessary to: (1) Add the field to NameEntityMetadata, and a corresponding data representation in ConceptNameMetadata. (2) Populate the field in NameVariantSignals.name_metadata, from any source. This can be done in a corresponding NameProcessor. (3) Update the library name-metadata.h/cc to make sure that the metadata field is: a) merged correctly when merging two NameSignals; and b) transformed to the corresponding field in ConceptNameMetadata proto. Next available tag: 22.", + "id": "RepositoryWebrefPreprocessingNameEntityMetadata", + "properties": { + "isBypassedName": { + "description": "There is a limit of entities per name for which we can keep name signals and score. This flag is set to true for names that by-passed per-name-scoring, as there were too many entities for the name.", + "type": "boolean" + }, + "isCompoundName": { + "description": "This name is a generated compound name to pass primary pruning.", + "type": "boolean" + }, + "isCompoundRetrievalKey": { + "description": "Indicates special compound retrieval keys, like \"Compound $mid1 $mid2\", see repository/webref/universal/util/compound-retrieval.h", + "type": "boolean" + }, + "isDictionaryTerm": { + "description": "This is set to true if the entity corresponds to a dictionary term.", + "type": "boolean" + }, + "isEventRetrievalKey": { + "description": "If true, this name is an event retrieval key.", + "type": "boolean" + }, + "isGeneratedName": { + "description": "This name is generated from other names.", + "type": "boolean" + }, + "isGeneratedStreetname": { + "description": "This name is a generated street name.", + "type": "boolean" + }, + "isHierarchyPropagated": { + "description": "This name is added by name propagation in hierarchy.", + "type": "boolean" + }, + "isIsbn": { + "description": "This name is an ISBN.", + "type": "boolean" + }, + "isLyricsContent": { + "description": "This name comes from recording lyrics content.", + "type": "boolean" + }, + "isPhoneNumber": { + "description": "This name is a phone number.", + "type": "boolean" + }, + "isRefconName": { + "description": "This name is used for refcon.", + "type": "boolean" + }, + "isReferenceName": { + "description": "This name is a reference name, only for internal usage, this name should not go into matching table without support of other signals.", + "type": "boolean" + }, + "isRefpageUrl": { + "description": "This name is the URL of a reference page.", + "type": "boolean" + }, + "isReverseUniquePropertyName": { + "description": "This name is generated from a reverse unique property of the entity.", + "type": "boolean" + }, + "isStrongIdentifier": { + "description": "This name is a strong identifier for this entity.", + "type": "boolean" + }, + "isSynonymOrFuzzyMatch": { + "description": "Set if the name is coming from synonyms.", + "type": "boolean" + }, + "isTrustedAllcapsName": { + "description": "If true, this name is a trusted name if it is in ALLCAPS.", + "type": "boolean" + }, + "isUnnormalizedName": { + "description": "If true, do not do tokenization when compute fprint hash for this name.", + "type": "boolean" + }, + "notGeneratedName": { + "description": "This name is clearly not generated(aka. at least one source of this name is not generated). This field is added for simplifying generated name tag while merging. Do not use this metadata directly.", + "type": "boolean" + }, + "originalNames": { + "$ref": "RepositoryWebrefPreprocessingOriginalNames", + "description": "Original versions of the name (before normalization). Used as query for the entity by Explicit Entity Search." + }, + "suppressTokenization": { + "description": "Whether or not to suppress tokenization on this name.", + "type": "boolean" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingNameEntityScores": { + "description": "Abstract, source independent scores. Next available tag: 7", + "id": "RepositoryWebrefPreprocessingNameEntityScores", + "properties": { + "priorScore": { + "description": "An unnormalized measure of how much evidence we have that this name variant refers to the key entity. Should be comparable to all scores from the same source for: - other entities having the same name variant - the open world score computed for this name variant", + "format": "double", + "type": "number" + }, + "volumeBasedScore": { + "description": "Prior score come from source that is quantifiable. artificial_score = prior_score - volume_based_score.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingNameSignals": { + "description": "If you add any field, make sure to add it in reffresh to the empty checks at the end of the corresponding name extractor processors (extract-*-names.cc).", + "id": "RepositoryWebrefPreprocessingNameSignals", + "properties": { + "normalizedNameData": { + "description": "The set of name candidates and their signals for a given entity.", + "items": { + "$ref": "RepositoryWebrefPreprocessingNormalizedNameData" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingNameVariantData": { + "description": "Represents a single name with all its signal, like language, sources and confidences.", + "id": "RepositoryWebrefPreprocessingNameVariantData", + "properties": { + "variantSignals": { + "description": "Sources providing this name variant and their metadata. NOTE: by convention we only allow one proto per source.", + "items": { + "$ref": "RepositoryWebrefPreprocessingNameVariantSignals" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingNameVariantSignals": { + "description": "Next available tag: 33.", + "id": "RepositoryWebrefPreprocessingNameVariantSignals", + "properties": { + "scores": { + "$ref": "RepositoryWebrefPreprocessingNameEntityScores", + "description": "Common prior_score/trust proto This field is shared by all sources providing this kind of data, the information has to be considered in context with the source." + }, + "source": { + "description": "The source of this NameVariantSignals proto", + "enum": [ + "INVALID", + "KG", + "KG_NAME", + "KG_ALIAS", + "KG_ISBN13", + "KG_GTIN", + "KG_PRONUNCIATION", + "KG_STOCK_TICKER", + "KG_AVIATION", + "KG_CARS", + "KG_AWARDS", + "KG_WEBSITE_DERIVED_NAME", + "KG_BRACKET_STRIPPED_DERIVED_NAME", + "KG_LOCATION_DERIVED_NAME", + "KG_TRUSTED_ALIAS", + "KG_CHEMICAL_SYMBOL", + "KG_YEAR", + "KG_RADIO_STATION", + "KG_REVERSE_UNIQUE_PROPERTY", + "KG_TRANSIT_STATION_CODE", + "KG_SYMBOL", + "KG_ALLCAPS_NAME", + "KG_NICKNAME", + "KG_WORDGRAPH_NAME", + "KG_SOCIAL_PROFILE_ID", + "KG_SOCIAL_PROFILE_SITECHUNK", + "ENTITY_NAME_TRANSLATIONS_GENERATOR", + "MAPFACTS", + "MAPFACTS_PHONENUMBER", + "MAPFACTS_PERSON_NAME_GENERATOR", + "MAPFACTS_PERSON_FIRST_NAME_GENERATOR", + "MAPFACTS_STREET_NAME_GENERATOR", + "MAPFACTS_SCORER", + "MAPFACTS_FUZZY_PHONENUMBER", + "MAPFACTS_NAME_GENERATOR", + "MAPFACTS_GEOCODES_ADDRESS_LINES", + "MAPFACTS_GEOCODES_UNLINKED", + "MAPFACTS_TRIMMED_POSTAL_CODE", + "MAPFACTS_MERGED_POSTAL_CODE", + "MAPFACTS_POSTAL_CODE_WITH_COUNTRY_CODE", + "MAPFACTS_TRANSIT_LINE_NAME_GENERATOR", + "MAPFACTS_HOUSE_ID", + "COOC", + "CDOCS", + "CDOCS_ANCHOR", + "CDOCS_NAVBOOST", + "CDOCS_WIKIPEDIA", + "CDOCS_REFERENCE_PAGE_URL", + "CDOCS_SCORER", + "CDOCS_REFERENCE_PAGE_URL_DERIVED", + "WIKIJOINS", + "WIKIJOINS_NICKNAME", + "WIKIDATA_AKA", + "WIKIDATA_LABEL", + "WIKIJOIN_FRAGMENT_REDIRECT", + "WIKIJOIN_ALIAS", + "PRODUCT", + "PRODUCT_TITLE", + "PRODUCT_TITLE_VARIATION", + "PRODUCT_QUERY", + "PRODUCT_STRONG_IDENTIFIER", + "PRODUCT_MANUFACTURER_PART_NUMBER", + "PRODUCT_MODEL_VARIATION", + "PRODUCT_UNTRUSTED", + "PRODUCT_COMPANY_OR_BRAND_STRIPPING", + "PRODUCT_AGGRESSIVE_STRIP", + "PRODUCT_AGGRESSIVE_BRAND_STRIP", + "PER_ENTITY_SCORE_AGGREGATOR", + "PER_ENTITY_SCORE_AGGREGATOR_ENTITY_KEYED", + "PER_ENTITY_SCORE_AGGREGATOR_NAME_KEYED", + "PER_ENTITY_SCORE_AGGREGATOR_FINAL", + "SCORER", + "SCORER_BEST_NAME_PICKER", + "SCORER_COMMON_NGRAM_CONCEPT_BOOST", + "SCORER_LEGACY_COMMON_NGRAM_CONCEPT_BOOST", + "SCORER_SYNTACTIC_NAME_PROMOTION", + "SCORER_CATEGORICAL_NAME_SUPPRESSOR", + "SCORER_TYPE_BASED_MULTIPLIER", + "SCORER_NAVINESS_GUARANTEE", + "SCORER_SINGLE_LETTER_NAME_DEMOTION", + "SCORER_TRUST_EXTRAPOLATION", + "SCORER_TRUST_DERIVATION", + "SCORER_AWARDS_VERTICAL", + "SCORER_BAD_SUBNAME_DEMOTION", + "SCORER_YEAR_NAME_DEMOTION", + "SCORER_ENTITY_NAME_RATIO", + "SCORER_COLLECTION_PATTERN", + "SCORER_NAME_BLACKLIST", + "SCORER_TOKEN_CLUSTERING", + "SCORER_DEPRECATED_TOKEN_CLUSTERING", + "NAME_LEAKAGE_PREVENTION", + "PER_ENTITY_NAME_LEAKAGE_PREVENTION", + "PER_NAME_NAME_LEAKAGE_PREVENTION", + "SPECIFICITY_COMPUTER", + "INCOMPATIBLE_NUMBER_DEMOTION", + "BAD_STRIPPED_NAME", + "BAD_FRINGE_NAME", + "BAD_PERSON_NAME", + "PERSON_NAME_GENERATOR", + "PERSON_NAME_GENERATOR_WITH_INITIALS", + "HEBREW_LOCATION_NAME_INFLECTOR", + "INJECTED", + "INJECTED_SHOWTIMES_CHAIN", + "INJECTED_OLYMPICS", + "MINI_COOC", + "MORPHOLOGY", + "LYRICS_TRUSTED_NAME", + "NAME_ANNOTATION_PROCESSOR", + "COMPANY_DERIVED_NAME", + "AFFIXED_NAME_GENERATOR", + "AFFIXED_NAME_GENERATOR_TRUSTED", + "BUSINESS_DERIVED_NAME", + "BUSINESS_SUFFIX_STRIPPED_NAME", + "CHAIN_NAME_GENERATOR", + "DEPRECATED_LOCATION_STRIPPED_NAME", + "LOCATION_STRIPPED_NAME", + "LOCATION_STRIPPED_NAVBOOST_NAME", + "PARENT_NAME_GENERATOR", + "PROPAGATE_NAMES", + "PUNCTUATION_STRIPPED_NAME", + "LEXICON_GENERATOR", + "NAME_SYNONYMS", + "CURATED_NAME", + "COMPOUND_NAME", + "INDIC_NORMALIZER", + "STRIP_FIRST_STOPWORD", + "CONJUNCTION_NORMALIZE", + "MIX_CASE_NORMALIZE", + "MOVIE_YEAR", + "STRIP_IMPLICATION", + "MIX_STRIP", + "OYSTER_NAME", + "STRIP_WIKI", + "CIVICS_NAME_GENERATOR", + "STRIPPED_THEATER_NAME", + "TRANSLITERATION", + "NUMBER_VARIANT_GENERATOR", + "PERSONAL_MEDIA_NAME_GENERATOR", + "MRF_INDEXING_NAME", + "MRF_INDEXING_NAME_TV_SHOWS", + "MATCH", + "MATCH_WITH_MIDDLE_INITIALS", + "COMPOUND_RETRIEVAL_KEY", + "EVENT_RETRIEVAL_KEY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "KG aliases that were manually generated, such as car model years.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Translations are injected into the model from a static sstable found here: /namespace/webref/static-data/entity-name-translations/", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Postal codes with a prefixed country code, e.g. I 39303, A 6604, CH 8005.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Reference page urls stripped of web prefixes.", + "", + "", + "", + "", + "", + "Aliases mined from Wikipedia pages, with sources such as infoboxes and bolded description text.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "For the awards vertical for award categories we only trust names that come from structured data. This way we achieve our precision targets.", + "", + "Scorer that checks and kills year-like names.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This source is used for names injected in the name pipeline. This injection is a shortcut to get names in the model and should only be used as a temporary solution waiting to either put the names in KG or mine them directly in this pipeline.", + "", + "", + "Replaceability signals from mini cooc.", + "", + "Names considered trusted as they are found in lyrics.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Names used for entity retrieval by MRF.", + "", + "Sources marking particular types of matches.", + "Name is matched on middle initials.", + "A special key constructed as a combination of multiple items (mids, properties, etc.). Use cases include retrieval of compound entities based on components, potentially MDVC resolution in WebRef.", + "A special key for event retrieval." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingNormalizedNameData": { + "description": "Aggregation of all names of an entity that normalize to the same string.", + "id": "RepositoryWebrefPreprocessingNormalizedNameData", + "properties": { + "nameVariantData": { + "description": "Name variants and their signals by source. All these name variants normalize to @normalized_name given their locales. NOTE: This includes metadata aggregated for the normalized name.", + "items": { + "$ref": "RepositoryWebrefPreprocessingNameVariantData" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingOriginalNames": { + "id": "RepositoryWebrefPreprocessingOriginalNames", + "properties": { + "count": { + "description": "The total number of original names that a normalized name has (all versions from all different sources).", + "format": "int32", + "type": "integer" + }, + "name": { + "items": { + "$ref": "RepositoryWebrefPreprocessingOriginalNamesOriginalName" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingOriginalNamesOriginalName": { + "id": "RepositoryWebrefPreprocessingOriginalNamesOriginalName", + "properties": { + "count": { + "description": "The total number of different sources from where this version of the original name comes from.", + "format": "int32", + "type": "integer" + }, + "score": { + "description": "Score estimating how good this original name is: - some sources are considered more authoritative than others (e.g. KG) - a name found in more sources is better.", + "format": "double", + "type": "number" + }, + "source": { + "description": "The sources this name comes from.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "text": { + "description": "One original name version.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingUrlMatchingMetadata": { + "description": "Proto with metadata related to why a particular cdoc was selected for an entityjoin.", + "id": "RepositoryWebrefPreprocessingUrlMatchingMetadata", + "properties": { + "source": { + "description": "The sources the url was suggested by.", + "items": { + "$ref": "RepositoryWebrefPreprocessingUrlSourceInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingUrlSourceInfo": { + "description": "Information about where the url comes from.", + "id": "RepositoryWebrefPreprocessingUrlSourceInfo", + "properties": { + "deprecatedOldSchema": { + "$ref": "RepositoryWebrefPreprocessingUrlSourceInfoOldSchema" + }, + "newSchema": { + "$ref": "RepositoryWebrefPreprocessingUrlSourceInfoNewSchema" + }, + "originalUrl": { + "type": "string" + }, + "source": { + "enum": [ + "DEPRECATED_OLD_SCHEMA", + "KG", + "KG_TRUSTED", + "WIKIJOIN", + "PRODUCT_OFFER", + "OYSTER_FEATURE", + "EXTRACTED_REFPAGE", + "EXPERIMENT", + "SOURCE_PROTO", + "MINED_REFERENCE_PAGE", + "WEBREF_YEAR", + "BOOK_REF_PAGES_MINING_PIPELINE", + "LYRICS_REFERENCE_PAGE", + "KG_WEAK_DATA", + "RELATED_PAGE", + "MINED_RELATED_PAGE", + "KG_SOCIAL_PROFILE" + ], + "enumDescriptions": [ + "", + "", + "From kg topic and has trusted provenance (e.g. ziki-basic, hume-curry).", + "", + "", + "", + "", + "", + "A fake reference page based on a text extracted from the source proto. For example, product clusters get such refpages based on the descriptions pulled from their source protos (catalog offers).", + "Since cl/142284568 this field represents also book reference pages.", + "Wikipedia URLs for webref year topic.", + "Pages mined by book reference pages mining pipeline.", + "Reference pages for songs mined by matching content of lyrics pages to the known lyrics of a song. NOTE: The pipeline that produces these is maintained by the kg-music@.", + "From kg topic and all provenances were marked as go/weak-data.", + "The URL of a webpage related to this entity. The page should contain information about this entity, but this entity does not need to be central to it. Examples would be news stories in which this entity figures. RELATED_PAGE are provided by clients and MINED_RELATED_PAGE are mined programmatically (go/related-pages).", + "", + "Url to a social profile belonging to the entity as read from KG." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingUrlSourceInfoNewSchema": { + "description": "Source information for the new reference url Freebase schema.", + "id": "RepositoryWebrefPreprocessingUrlSourceInfoNewSchema", + "properties": { + "sourceProperty": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefPreprocessingUrlSourceInfoOldSchema": { + "description": "Source information for the old reference url Freebase schema.", + "id": "RepositoryWebrefPreprocessingUrlSourceInfoOldSchema", + "properties": { + "isOfficial": { + "type": "boolean" + } + }, + "type": "object" + }, + "RepositoryWebrefProcessorCounter": { + "description": "A single processor counter stored as a pair of the counter name and the value.", + "id": "RepositoryWebrefProcessorCounter", + "properties": { + "name": { + "type": "string" + }, + "value": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefProcessorTiming": { + "description": "Processor timings as produced by NestedPerfCounter, see google3/repository/webref/base/nested-perf-counter.h.", + "id": "RepositoryWebrefProcessorTiming", + "properties": { + "cpuInstructions": { + "description": "Cpu instructions spent.", + "format": "int64", + "type": "string" + }, + "name": { + "description": "A string identifying the processor timing context.", + "type": "string" + }, + "processorCounters": { + "description": "Document counters defined by processors. A processor can add and increment counters with NestedPerfCounter::IncrementCounterBy. See go/webref-annotator-metrics.", + "items": { + "$ref": "RepositoryWebrefProcessorCounter" + }, + "type": "array" + }, + "processorTimings": { + "description": "Nested measurements, see NestedPerfCounter::ScopedPerfCounter.", + "items": { + "$ref": "RepositoryWebrefProcessorTiming" + }, + "type": "array" + }, + "wallTimeNs": { + "description": "Wall time (in nanoseconds).", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefProductMetadata": { + "description": "Products-specific information about the entity. Next available tag: 16.", + "id": "RepositoryWebrefProductMetadata", + "properties": { + "productLineId": { + "description": "Shopping product line ids (typically moka product line tag) of this entity. Represents shopping product lines, such as iPhone or Canon EOS. Typically, we expect only one id. But keeping repeated, in case we want to merge or aggregate product lines. Using int64, as tag_id in commerce/datastore/processors/moka/proto/moka_annotations.proto.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "shoppingIds": { + "$ref": "KnowledgeAnswersIntentQueryShoppingIds", + "description": "All ShoppingIds for this MID that need to be copied to IntentQuery (FunctionCall) if this MID is used in intent generation. See go/iql-shopping-ids for details." + }, + "type": { + "enum": [ + "CATALOG_ENTRY", + "VARIANT_CLUSTER", + "OTHER", + "PRODUCT_LINE", + "BRAND", + "CATEGORY", + "NOT_PRODUCT" + ], + "enumDescriptions": [ + "It's an entity that maps to a single product catalog entry.", + "It's an entity that maps to a product variant cluster.", + "Higher level product entities.", + "A product line entity that includes more than one similar product from the same brand.", + "The entity is a product brand.", + "The entity is a category of products.", + "The entity does not have a known product type. This is equivalent to not having the type field set." + ], + "type": "string" + }, + "variantClusterId": { + "description": "All unique variant cluster ids (shopping's GPCs) of this entity.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefQueryIndices": { + "description": "Identifies a set of NavBoost queries in the CompositeDoc. Typically these queries were collapsed by WebRef into a single query and they were treated by the annotator as equivalent. They all contain the same mentions (at the same offsets).", + "id": "RepositoryWebrefQueryIndices", + "properties": { + "featuresIndex": { + "description": "The set of indices in the NavBoostQuery::features() array that belong to the collapsed features.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "queriesIndex": { + "description": "The index of the query in NavBoostDocument::queries() array.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefRangeAnnotations": { + "description": "The fields hold \"non-entity\" annotations of text.", + "id": "RepositoryWebrefRangeAnnotations", + "properties": { + "segmentMentions": { + "description": "The actual mentions. Note SegmentMentions contains some fields specific to entity annotation, and those are typically not populated here.", + "items": { + "$ref": "RepositoryWebrefSegmentMentions" + }, + "type": "array" + }, + "type": { + "description": "The type of ranges contained in this message.", + "enum": [ + "STOPWORDS", + "SHOPPING_STOPWORDS" + ], + "enumDescriptions": [ + "In some annotation modes, we mark which fields are considered stopwords, that is terms that do not alter the entity meaning of the query.", + "QPrime stopwords." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefRangeMetadata": { + "description": "Metadata keeper for an annotated range of a segment. Next available tag: 3.", + "id": "RepositoryWebrefRangeMetadata", + "properties": { + "beginOffset": { + "description": "Start index of range (within the segment) being annotated.", + "format": "uint32", + "type": "integer" + }, + "tokenCount": { + "description": "Number of tokens in the range being annotated.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefRefconDocumentMentionSpans": { + "description": "Encapsulates the textual mention spans extracted from a document, split per token.", + "id": "RepositoryWebrefRefconDocumentMentionSpans", + "properties": { + "mentionSpan": { + "description": "Per token mention spans.", + "items": { + "$ref": "RepositoryWebrefRefconMentionSpans" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefRefconMentionSpans": { + "description": "Describes a mention annotated by Webref in the given document.", + "id": "RepositoryWebrefRefconMentionSpans", + "properties": { + "segment": { + "description": "Segment types in which the mention appears. Now deprecated, because we only care about CONTENT segments.", + "items": { + "enum": [ + "CONTENT", + "ANCHOR", + "QUERY", + "URL", + "TITLE", + "IMAGE_QUERY", + "CONTEXT_ENTITY", + "CONTEXT_QUERY", + "SPORE_GRAPH", + "META_CONTENT_TAG", + "IMG_ALT_TAG", + "INSTANT_QUERY", + "VIDEO_TRANSCRIPT", + "VIDEO_OCR", + "IMAGE_OCR" + ], + "enumDescriptions": [ + "The document content (excluding the title) or the text of the query.", + "One of the anchors of the document.", + "One of the navboost queries pointing to the document.", + "The document URL.", + "The title of the document.", + "One of the image navboost queries pointing to an image in the document.", + "Contextual entity injected by an outside attachment. For details, see go/webref-priors.", + "Contextual query that can be provided in Qref.", + "Names and URLs from Spore GraphAnnotations.", + "The content-value of the tags \"description\" and \"keyword\".", + "The content of alt text in tags.", + "One of the instant navboost queries of the document. They can be found in cdoc.doc_attachments().GetExtension(InstantNavBoostDocument:: message_set_extension).instant_nav_boost_document().", + "The transcript of a video.", + "The ocr text of a video.", + "The ocr text of an image." + ], + "type": "string" + }, + "type": "array" + }, + "shortToken": { + "description": "Fingerprinted tokens which form the mention span. We are using 32-bit instead of usual 64bit fingerprints - this greatly reduces the memory footprint while still keeping the chance of collision reasonably low for our specific use case (1 in 4 billion).", + "items": { + "format": "uint32", + "type": "integer" + }, + "type": "array" + }, + "token": { + "description": "Fingerprinted tokens which form the mention span.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefRefconQueryStats": { + "description": "Contains high level search query statistics of the document.", + "id": "RepositoryWebrefRefconQueryStats", + "properties": { + "aggregatedQueryCount": { + "description": "Total query count for the document from all the query terms. Can be used to estimate the popularity of the document.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefRefconRefconDocumentMetadata": { + "description": "Encapsulates additional CDoc metadata needed by Refcon.", + "id": "RepositoryWebrefRefconRefconDocumentMetadata", + "properties": { + "queryStats": { + "$ref": "RepositoryWebrefRefconQueryStats" + } + }, + "type": "object" + }, + "RepositoryWebrefRefconRefconNameInfo": { + "description": "Refcon name representation in split concepts sstable. This is a simplified version of repository_webref.GlobalNameInfo.", + "id": "RepositoryWebrefRefconRefconNameInfo", + "properties": { + "confidence": { + "format": "float", + "type": "number" + }, + "idfScore": { + "format": "float", + "type": "number" + }, + "isGeneratedName": { + "type": "boolean" + }, + "isI18nName": { + "type": "boolean" + }, + "isStrongIdentifier": { + "type": "boolean" + }, + "isTranslatedName": { + "type": "boolean" + }, + "language": { + "description": "Languages of the name, unknown language is not kept. TODO(b/145976266) Don't use the deprecated language enum.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "namePrior": { + "description": "Name prior to use. We read this from the prior for the \"unknown\" language.", + "format": "float", + "type": "number" + }, + "normalizedName": { + "description": "The normalized name.", + "type": "string" + }, + "originalName": { + "description": "Filled only if different than normalized_name.", + "type": "string" + }, + "score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefReferencePageScores": { + "description": "Signals used for mining new reference pages, set by the reference-page-scorer processor.", + "id": "RepositoryWebrefReferencePageScores", + "properties": { + "bookScore": { + "description": "Stores score for later offline voting to choose reference pages. If zero, it's not a good book reference page.", + "format": "float", + "type": "number" + }, + "explainedNormalizedTopicality": { + "description": "Fraction of importance_ratio (IR) that is explained by this entity and implied entities. E.g. a page about a song with IR 0.2 for the song and 0.5 for the artist actually has explained_normalized_topicality 0.7 for the song.", + "format": "float", + "type": "number" + }, + "firstScore": { + "description": "The raw topicality score of the primary entity.", + "format": "float", + "type": "number" + }, + "hasSpecialLinks": { + "description": "Whether the primary entity has any \"special\" links. Currently a link is considered special if it has a good implication probability and has no negative disambiguation probability.", + "type": "boolean" + }, + "medianMentionScore": { + "description": "The median mentions core of the primary entity.", + "format": "float", + "type": "number" + }, + "navboostCoverage": { + "description": "The navboost token coverage ratio. All queries are taken into account.", + "format": "float", + "type": "number" + }, + "referencePageScore": { + "description": "Reference page score used to select the reference page owner.", + "format": "float", + "type": "number" + }, + "referencePageSelectionScore": { + "description": "The score used to sort reference pages for a given entity. This score tries to assign higher scores to reference pages that are more useful to the model building.", + "format": "float", + "type": "number" + }, + "selected": { + "description": "True if the entity is selected as the reference page owner.", + "type": "boolean" + }, + "singleTopicness": { + "description": "A score in [0, 1] which indicates the single topicness of the entity.", + "format": "float", + "type": "number" + }, + "singleTopicnessV2": { + "description": "This should have the same semantic as single_topicness, and should replace it in the long term.", + "format": "float", + "type": "number" + }, + "titleCoverage": { + "description": "=================================== Signals for the single topicness. Only filled in for the primary (i.e., top ranked) entity. The title token coverage ratio.", + "format": "float", + "type": "number" + }, + "totalSum": { + "description": "The sum of raw topicality scores for all entities in this page.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefSegmentMention": { + "description": "A single Mention within a segment as defined by SegmentMentions.SegmentType", + "id": "RepositoryWebrefSegmentMention", + "properties": { + "mention": { + "$ref": "RepositoryWebrefMention" + }, + "segmentType": { + "enum": [ + "CONTENT", + "ANCHOR", + "QUERY", + "URL", + "TITLE", + "IMAGE_QUERY", + "CONTEXT_ENTITY", + "CONTEXT_QUERY", + "SPORE_GRAPH", + "META_CONTENT_TAG", + "IMG_ALT_TAG", + "INSTANT_QUERY", + "VIDEO_TRANSCRIPT", + "VIDEO_OCR", + "IMAGE_OCR" + ], + "enumDescriptions": [ + "The document content (excluding the title) or the text of the query.", + "One of the anchors of the document.", + "One of the navboost queries pointing to the document.", + "The document URL.", + "The title of the document.", + "One of the image navboost queries pointing to an image in the document.", + "Contextual entity injected by an outside attachment. For details, see go/webref-priors.", + "Contextual query that can be provided in Qref.", + "Names and URLs from Spore GraphAnnotations.", + "The content-value of the tags \"description\" and \"keyword\".", + "The content of alt text in tags.", + "One of the instant navboost queries of the document. They can be found in cdoc.doc_attachments().GetExtension(InstantNavBoostDocument:: message_set_extension).instant_nav_boost_document().", + "The transcript of a video.", + "The ocr text of a video.", + "The ocr text of an image." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefSegmentMentions": { + "description": "Annotations of a single docjoin segment. A CDoc has several distinct data types which we call \"segments\" (see SegmentType for complete list). SegmentMentions contains all the mentions for a given (document, segment) pair. For queries there is only a single CONTENT segment.", + "id": "RepositoryWebrefSegmentMentions", + "properties": { + "mention": { + "description": "A list of all the places the entity in question was annotated within this segment. The (indexing.annotations.goldmine) option is for Goldmine AnnotationsFinder to include Mention only when segment_type=\"CONTENT\"", + "items": { + "$ref": "RepositoryWebrefMention" + }, + "type": "array" + }, + "segmentType": { + "enum": [ + "CONTENT", + "ANCHOR", + "QUERY", + "URL", + "TITLE", + "IMAGE_QUERY", + "CONTEXT_ENTITY", + "CONTEXT_QUERY", + "SPORE_GRAPH", + "META_CONTENT_TAG", + "IMG_ALT_TAG", + "INSTANT_QUERY", + "VIDEO_TRANSCRIPT", + "VIDEO_OCR", + "IMAGE_OCR" + ], + "enumDescriptions": [ + "The document content (excluding the title) or the text of the query.", + "One of the anchors of the document.", + "One of the navboost queries pointing to the document.", + "The document URL.", + "The title of the document.", + "One of the image navboost queries pointing to an image in the document.", + "Contextual entity injected by an outside attachment. For details, see go/webref-priors.", + "Contextual query that can be provided in Qref.", + "Names and URLs from Spore GraphAnnotations.", + "The content-value of the tags \"description\" and \"keyword\".", + "The content of alt text in tags.", + "One of the instant navboost queries of the document. They can be found in cdoc.doc_attachments().GetExtension(InstantNavBoostDocument:: message_set_extension).instant_nav_boost_document().", + "The transcript of a video.", + "The ocr text of a video.", + "The ocr text of an image." + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefSemanticDateRange": { + "description": "A date range for an entity. E.g. lifespan of a person, release date of a movie, ...", + "id": "RepositoryWebrefSemanticDateRange", + "properties": { + "confidence": { + "description": "Indicates how confident we are this extracted range is relevant to a document (document to be infered from context).", + "format": "float", + "type": "number" + }, + "end": { + "description": "End date extracted from the entity along end_source_property.", + "type": "string" + }, + "endSourceProperty": { + "description": "KG-property that links the entity to the end date.", + "type": "string" + }, + "sourceEntityMid": { + "description": "Entity from which this range was extracted.", + "type": "string" + }, + "start": { + "description": "Start date extracted from the entity along start_source_property.", + "type": "string" + }, + "startSourceProperty": { + "description": "KG-property that links the entity to the start date.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefSimplifiedAnchor": { + "description": "Represents a subpart of the anchor data of the docjoins, but is much smaller. When we build this SimplifiedAnchor from the anchor data of the docjoins, by specifying the option separate_onsite_anchors to SimplifiedAnchorsBuilder, we can also separate the onsite anchors from the other (offdomain) anchors. So onsite anchors and offdomain anchors will have their own count, score, normalized score, and total volume (.._offdomain and .._onsite fields). For example, if there are 10 onsite anchors and 20 offdomain anchors for the anchor text \"mountain view\", then the count_from_onsite is 10, and the count_from_offdomain is 20 when we separate onsite anchors out. Otherwise (if we don't separate onsite anchors), the count is 30 (10 + 20) and we don't have values in the .._offdomain and .._onsite fields.", + "id": "RepositoryWebrefSimplifiedAnchor", + "properties": { + "anchorIndices": { + "$ref": "RepositoryWebrefAnchorIndices", + "description": "The set of (equivalent from WebRef point of view) anchors used to produce this segment." + }, + "anchorText": { + "$ref": "RepositoryWebrefLocalizedString", + "description": "The anchor text. Note that the normalized text is not populated." + }, + "count": { + "description": "The number of times we see this anchor text.", + "format": "uint64", + "type": "string" + }, + "countFromOffdomain": { + "description": "Count, score, normalized score, and volume of offdomain anchors.", + "format": "uint64", + "type": "string" + }, + "countFromOnsite": { + "description": "Count, score, normalized score, and volume of onsite anchors.", + "format": "uint64", + "type": "string" + }, + "normalizedScore": { + "description": "The normalized score, which is computed from the score and the total_volume.", + "format": "float", + "type": "number" + }, + "normalizedScoreFromOffdomain": { + "format": "float", + "type": "number" + }, + "normalizedScoreFromOnsite": { + "format": "float", + "type": "number" + }, + "score": { + "description": "The sum/aggregate of the anchor scores that have the same text.", + "format": "float", + "type": "number" + }, + "scoreFromFragment": { + "description": "The sum/aggregate of the anchor scores that direct to a fragment and have the same text.", + "format": "float", + "type": "number" + }, + "scoreFromOffdomain": { + "format": "float", + "type": "number" + }, + "scoreFromOffdomainFragment": { + "format": "float", + "type": "number" + }, + "scoreFromOnsite": { + "format": "float", + "type": "number" + }, + "scoreFromOnsiteFragment": { + "format": "float", + "type": "number" + }, + "scoreFromRedirect": { + "description": "The sum/aggregate of the anchor scores that direct to a different wiki title and have the same text. NOTE: url direct to a fragment score is not included in this value.", + "format": "float", + "type": "number" + }, + "totalVolume": { + "description": "The total score volume used for normalization.", + "format": "float", + "type": "number" + }, + "totalVolumeFromOffdomain": { + "format": "float", + "type": "number" + }, + "totalVolumeFromOnsite": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefSimplifiedAnchors": { + "id": "RepositoryWebrefSimplifiedAnchors", + "properties": { + "anchor": { + "items": { + "$ref": "RepositoryWebrefSimplifiedAnchor" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefSimplifiedCompositeDoc": { + "description": "Represents an information which is very close to composite doc, but compresses how the anchors are represented to save space. Next available tag: 15.", + "id": "RepositoryWebrefSimplifiedCompositeDoc", + "properties": { + "anchors": { + "$ref": "RepositoryWebrefSimplifiedAnchors", + "description": "The composite doc anchors trimmed and transformed in a smaller data structure and aggregated (if they have the exact same text)." + }, + "cdocContainer": { + "$ref": "Proto2BridgeMessageSet", + "description": "IMPORTANT: do not access this field directly, use the simplified-cdoc-access library functions to get the composite doc out of this proto." + }, + "documentMentionSpans": { + "$ref": "RepositoryWebrefRefconDocumentMentionSpans", + "description": "The composite doc spans which were annotated with entities by Webref." + }, + "matchingMetadata": { + "$ref": "RepositoryWebrefPreprocessingUrlMatchingMetadata", + "description": "Metadata related to why this doc was matched to its owning entity." + }, + "obsoleteAnchorsWithoutInterwiki": { + "$ref": "RepositoryWebrefSimplifiedAnchors" + }, + "refconDocumentMetadata": { + "$ref": "RepositoryWebrefRefconRefconDocumentMetadata", + "description": "Additional document metadata needed by Refcon." + }, + "sourceSnapshotType": { + "enum": [ + "BASE", + "DAILY", + "ALEXANDRIA_BASE_SNAPSHOTS", + "UNIFIED_ZEPPELIN", + "UNIFIED_ZEPPELIN_HIGH_QUALITY", + "UNIFIED_ZEPPELIN_MEDIUM_QUALITY", + "UNIFIED_ZEPPELIN_LOW_QUALITY", + "UNIFIED_LANDFILL", + "UZLQ_AND_UL", + "QUALITY_SWAP_BASE", + "QUALITY_SWAP_UNIFIED_ZEPPELIN", + "QUALITY_SWAP_UNIFIED_ZEPPELIN_HIGH_QUALITY", + "QUALITY_SWAP_UNIFIED_ZEPPELIN_MEDIUM_QUALITY", + "QUALITY_SWAP_UNIFIED_ZEPPELIN_LOW_QUALITY", + "ADWORDS_BASE" + ], + "enumDescriptions": [ + "Rank: 0 - 10B", + "", + "Prefer BASE instead.", + "Rank: 10B - 100B", + "Rank: 10B - 20B", + "In the Docjoins repository (go/dj2qi), we split documents ranking from 10B to 100B into two corpora. UNIFIED_ZEPPELIN_MEDIUM_QUALITY is the tier that is only internally used by Docjoin access API, indicating the corpus with documents from 20B to 100B. Rank: 20B - 100B", + "Rank: 100B - 140B", + "Rank: 140B - 520B", + "In the Docjoins repository (go/dj2qi), we merge UZLQ and UL into one corpus. UZLQ_AND_UL tier is only interanlly used by Docjoin access API, indicating the corpus with documents covering UZLQ and UL. Please contact docjoin-access@ before you use it. Rank: 100B - 520B", + "Quality docjoins in Union. Note: To perform a read of the quality swap that roughly corresponds to BASE, you should read both QUALITY_SWAP_BASE and QUALITY_SWAP_FRESH.", + "", + "", + "", + "", + "This is dead, but there are still several references to it in google3." + ], + "type": "string" + }, + "url": { + "description": "The URL, populated independently of whether we have a CompositeDoc proto. If the cdoc exists, the url is the same as CompositeDoc.doc.url.", + "type": "string" + }, + "webrefOutlinks": { + "$ref": "Proto2BridgeMessageSet" + } + }, + "type": "object" + }, + "RepositoryWebrefSubSegmentIndex": { + "description": "LINT.IfChange Some document segments may consist of multiple sub-segments (e.g. a document might have multiple anchors or navboost queries). SubSegmentIndex contains all information needed to identify the sub-segment (e.g. specific query, query feature or or anchor) where the mention is located.", + "id": "RepositoryWebrefSubSegmentIndex", + "properties": { + "anchorIndex": { + "$ref": "RepositoryWebrefAnchorIndices", + "description": "Pointer to the exact set of anchors in the cdoc." + }, + "genericIndex": { + "$ref": "RepositoryWebrefGenericIndices", + "description": "Pointer to the Webref-internal Segment indices. Can't be mapped back to the CDoc." + }, + "imageQueryIndex": { + "$ref": "RepositoryWebrefImageQueryIndices", + "description": "Pointer to the exact set of image navboost queries in the cdoc." + }, + "jgnIndex": { + "$ref": "RepositoryWebrefJuggernautIndices", + "description": "Pointer to the proto in the cdoc and index within the proto for Spore." + }, + "queryIndex": { + "$ref": "RepositoryWebrefQueryIndices", + "description": "Pointer to the exact set of queries in the cdoc." + } + }, + "type": "object" + }, + "RepositoryWebrefSupportTransferRule": { + "description": "Each SupportTransferRule proto represents a single STBR (go/stbr) rule. These rules are attached to entities (called STBR sources). Each rule attached to an STBR source talks about a single entity (called STBR target). If an STBR source gets annotated, its attached rules result in creation of annotations for corresponding STBR targets. An STBR source might have more than one STBR rule attached to it. STBR rules allow us to address cases where otherwise annotations for what people say do not match what people mean. For example, a query [france vs spain] uses names of countries while in sports context the query would actually be about national sports teams of those countries. In other words, STBR rules have meaning of \"in this particular context (see domain + target_collection fields below) a mention of this particular STBR source (the entity this rule is attached to) actually should be treated as that STBR target (see the target field below)\". To describe the meaning of STBR settings (proto fields below), we are going to use a hypothetical example of an STBR rule making Search stack treat annotations for /m/France as annotations for /m/Louis_XIV, since he was the one saying \"I am the state\". In this example /m/France is going to be the STBR source. NOTICE: When adding new fields also update client::support_transfer::SortDeterministically to ensure deterministic sorting of the SupportTransferRule objects. Next available tag: 11. LINT.IfChange", + "id": "RepositoryWebrefSupportTransferRule", + "properties": { + "allowWildcardIntents": { + "description": "If set to true, allow STBR targets to trigger intents like ShowEntity that do not have explicit lists of allowed collections, accepting entities with any collections instead. This setting together with target_collection define what intents are allowed to be triggered by the STBR target. Be careful with setting this option to 'true', as in the case of our example the query [france] would result in the knowledge panel for the monarch. Louis XIV might've wanted such a behaviour, but you are probably not him.", + "type": "boolean" + }, + "domain": { + "description": "Name of Aqua grammar domain this STBR rule is restricted to. If the domain is set to anything other than \"default\", the STBR rule is only going to result in an annotation for the STBR target inside of the Aqua domain of the corresponding name. If there is no such Aqua domain, the rule is going to be ignored. The default value of string \"default\" for domain makes it possible for the STBR rule to be used inside Loose Parser.", + "type": "string" + }, + "isReverseLink": { + "description": "Whether this rule points from an STBR target to its STBR source. This field is an internal implementation detail that is not configurable by customers. Inside QRewrite we have to keep track of relations between entities. Among other things it is useful to remember which STBR target a given STBR source came from. For that purpose we attach an STBR proto to the STBR target, reversing the rule, i.e, putting STBR source's mid as the target etc. For this reversed rule we set is_reverse_link to true.", + "type": "boolean" + }, + "mentionsOnly": { + "description": "STBR doesn't just create annotations for STBR targets. It also can modify search result support (useful in PostRef) in order for web pages supporting the STBR source to also support the STBR target. Otherwise in PostRef annotations for STBR targets are going to be demoted, resulting in the STBR rule potentially not affecting anything. Regarding treatment of this result support, STBR has 3 possible modes that for historical reasons are represented as 2 booleans - mentions_only and support_share. No more than one of these bools is supposed to be set to 'true' for a rule. Setting both to 'true' at once would lead to undefined behaviour. These 3 modes are: 1. (default) All the support gets assigned to the STBR target. The STBR source is left with no support. To be extra sure, interpretations that still managed to get triggered by STBR source are suppressed later unless STBR target has no interpretations of its own. In other words this is \"we are pretty sure that if France is mentioned in a query that might be talking about a person, we want to treat the query as if it is about Louis XIV\". This mode would result in a query [age of france] being treated as [age of louis xiv], while [population of france] still being about the country unless [population of louis xiv] matches some intents. For this mode both mentions_only and support_share should be set to 'false'. 2. Support is shared between STBR source ans STBR target. That allows both STBR source and STBR target to trigger some intents with KScorer later deciding which intent is better. In other words, this is \"when it is not clear whether a query is about France of Louis XIV, provide KScorer with both options and let it decide\". For this mode mentions_only should be set to 'false' and support_share should be set to 'true'. 3. While annotations for the STBR target are created, no support is given to those annotations. This is more like \"we are mostly sure that a mention of France is about the country, but just for a rare case it is about the monarch, we would like to have Louis XIV annotated\". For this mode mentions_only should be set to 'true' and support_share should be set to 'false'.", + "type": "boolean" + }, + "supportShare": { + "type": "boolean" + }, + "target": { + "description": "Mid of the STBR target, e.g. \"/m/04pwg\" for Louis XIV.", + "type": "string" + }, + "targetCollection": { + "$ref": "RepositoryWebrefKGCollection", + "description": "Collection that is going to be assigned to the target when the annotation for the target is created. This setting together with allow_wildcard_intents define what intents are allowed to be triggered by the STBR target. At the moment those annotations get created, we can not afford to fetch information about the STBR target from Topic Server, but the target mid by itself doesn't mean much for the Search stack. Setting up the collection for that annotated mid allows us to provide at least some information to the stack on how to treat the mid. This collection together with domain and allow_wildcard_intents fields (see below) defines what intents can be triggered by annotations created for this STBR target. Intents that accept only entities of specific collections can only be triggered if the value of this field matches one of the allowed collections for that intent. In our example, KGCollection.debug_id might be \"/collection/people\" if we care about context of the monarch as a person, e.g. if we would like to understand queries like [how many children does france have] as [how many childred does lous xiv have]. Or, if we would like to be more restrictive and to only apply the rule to contexts that only make sense for monarch, e.g. [how long did france reign], we might decide to use more specific \"/collection/monarchs\" instead." + }, + "userCountry": { + "description": "The user country this rule is for. Rules only take effect if the country is not set, set to an empty string or matches the country that is detected for the user - like the country user issued the query from. E.g. \"US\" for the United States.", + "type": "string" + }, + "userLanguage": { + "description": "User language this rule is for. Rules only take effect if the language is not set, set to an empty string or matches the language that is detected for the user's query. E.g. set it to \"en\" if you want the STBR rule to only work for users working from computers with English being set as the main language. Keep it unset if you want the rule not to depend on local language settings of user's computer.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefTaskData": { + "id": "RepositoryWebrefTaskData", + "properties": { + "isReadable": { + "description": "Signals about quality of data that was shown to raters. If document/query and concept description are readable.", + "type": "boolean" + }, + "itemId": { + "format": "uint64", + "type": "string" + }, + "projectId": { + "format": "uint64", + "type": "string" + }, + "taskDetails": { + "$ref": "RepositoryWebrefTaskDetails" + }, + "taskId": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefTaskDetails": { + "description": "Information about what the raters saw, how the information was presented to them, or how they interacted with the task. Next id: 6", + "id": "RepositoryWebrefTaskDetails", + "properties": { + "experimentId": { + "description": "The id of the experiment in case we are dealing with a refx data experiment. Should only be set in case of data experiments to gather topicality ratings, in order to allow separating these ratings from regular ratings.", + "type": "string" + }, + "lastSubmitTimestamp": { + "format": "int64", + "type": "string" + }, + "topicDescription": { + "type": "string" + }, + "topicName": { + "type": "string" + }, + "topicUrl": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefToprefListMembership": { + "description": "Entity-level classification. Template: experimental/topref/eval_entities/template.jhtml", + "id": "RepositoryWebrefToprefListMembership", + "properties": { + "member": { + "items": { + "$ref": "RepositoryWebrefToprefListMembershipListMember" + }, + "type": "array" + }, + "taskData": { + "$ref": "RepositoryWebrefTaskData" + } + }, + "type": "object" + }, + "RepositoryWebrefToprefListMembershipListMember": { + "id": "RepositoryWebrefToprefListMembershipListMember", + "properties": { + "id": { + "$ref": "RepositoryWebrefWebrefEntityId" + }, + "isMember": { + "enum": [ + "YES_NO_UNSURE_NONE", + "YES", + "NO", + "UNSURE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefToprefPageClassification": { + "description": "Top-level page classification. Template: experimental/topref/eval_main/template.jhtml", + "id": "RepositoryWebrefToprefPageClassification", + "properties": { + "isList": { + "enum": [ + "YES_NO_UNSURE_NONE", + "YES", + "NO", + "UNSURE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "isListTypeCorrect": { + "enum": [ + "YES_NO_UNSURE_NONE", + "YES", + "NO", + "UNSURE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "isRanking": { + "enum": [ + "YES_NO_UNSURE_NONE", + "YES", + "NO", + "UNSURE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "isToplist": { + "enum": [ + "YES_NO_UNSURE_NONE", + "YES", + "NO", + "UNSURE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "listType": { + "description": "A string generated based on the main collection of the list. E.g., /collection/geo/restaurant =\u003e \"Restaurants\" retrieved by following the /base/schemastaging/context_name/plural in KG.", + "type": "string" + }, + "ratedTitle": { + "description": "\"repeated\" because we potentially evaluate several (up to 5) title candidates for the page.", + "items": { + "$ref": "RepositoryWebrefToprefPageClassificationRatedTitle" + }, + "type": "array" + }, + "taskData": { + "$ref": "RepositoryWebrefTaskData" + } + }, + "type": "object" + }, + "RepositoryWebrefToprefPageClassificationRatedTitle": { + "id": "RepositoryWebrefToprefPageClassificationRatedTitle", + "properties": { + "isGood": { + "enum": [ + "YES_NO_UNSURE_NONE", + "YES", + "NO", + "UNSURE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefTripleAnnotation": { + "id": "RepositoryWebrefTripleAnnotation", + "properties": { + "confidenceScore": { + "description": "Triple annotation confidence_score (value between 0 and 1). Higher values correspond to higher confidence.", + "format": "float", + "type": "number" + }, + "isImplied": { + "description": "The information in this triple is implied by other triple(s) in the document.", + "type": "boolean" + }, + "kgVerified": { + "description": "Set to true if this triple is present in the webref model as either a link or property value. This implies that the information is in the Knowledge Graph. Note that it can happen that a triple is in KG but not present in the webref model.", + "type": "boolean" + }, + "mentions": { + "description": "Occurrences of the triple on the document", + "items": { + "$ref": "RepositoryWebrefTripleMention" + }, + "type": "array" + }, + "predMid": { + "description": "The mid of the predicate kg-property(-ies). In order, in the case of multihop links.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "stuff": { + "$ref": "Proto2BridgeMessageSet", + "description": "Generic container to hold additional data such as signals, debug data etc. Data that can be stored in this field and their TypeIds: repository_webref::evaluation::ECMDebug (TypeId 192627933), defined in repository/webref/evaluation/triple_annotations/triple-diff.proto Debugging data to be used in WebIt's ECM report." + }, + "triple": { + "$ref": "KnowledgeGraphTriple" + } + }, + "type": "object" + }, + "RepositoryWebrefTripleAnnotations": { + "description": "Represents a collection of triples annotated by Webref/Webit. Included in WebrefEntities", + "id": "RepositoryWebrefTripleAnnotations", + "properties": { + "annotations": { + "items": { + "$ref": "RepositoryWebrefTripleAnnotation" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefTripleMention": { + "id": "RepositoryWebrefTripleMention", + "properties": { + "predMention": { + "$ref": "RepositoryWebrefSegmentMention", + "description": "Document mention of the predicate" + }, + "scopeBegin": { + "description": "The [begin, end) byte offset of the document scope where this triple was annotated. This corresponds to a table row or a text sentence where the triple was identified. The sub_mention can be outside the scope when the subject is inferred from the table title.", + "format": "int32", + "type": "integer" + }, + "scopeEnd": { + "format": "int32", + "type": "integer" + }, + "scopeFprint": { + "description": "Fingerprint2011 of space-joined SAFT tokens in the scope.", + "format": "uint64", + "type": "string" + }, + "stuff": { + "$ref": "Proto2BridgeMessageSet", + "description": "Generic container to hold additional data such as triple scoped signals. Data that can be stored in this field and their TypeIds: repository_webref::universal::webit::ScopeSignals (TypeId 192754198), defined in repository/webref/universal/processors/understanding/webit.proto" + }, + "subMention": { + "$ref": "RepositoryWebrefSegmentMention", + "description": "Document mention of the subject" + }, + "valueMention": { + "$ref": "RepositoryWebrefSegmentMention", + "description": "Document mention of the value" + } + }, + "type": "object" + }, + "RepositoryWebrefUniversalNgramData": { + "description": "This proto is filled with n-gram data during model building.", + "id": "RepositoryWebrefUniversalNgramData", + "properties": { + "idf": { + "description": "IDF of the n-gram.", + "format": "float", + "type": "number" + }, + "pluralProb": { + "description": "Probability that the n-gram is a plural form of a word. This information is extracted from SAFT annotations of queries. See HasPluralProperty().", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefAnnotationStats": { + "description": "Detailed statistics about the annotations in the document. Contains, for example, the number of ranges with name matches, the number of entities matched, and the number of entities with mentions. This information can be used to tune some WebRef-internal scoring functions based on existing annotations (e.g., document-length normalization in global link support). Next available tag: 10.", + "id": "RepositoryWebrefWebrefAnnotationStats", + "properties": { + "docWeight": { + "description": "The relative weight of the document, used when aggregating information from multiple documents.", + "format": "float", + "type": "number" + }, + "ngramContext": { + "description": "Extracted n-grams context scores (in cdoc language, weighted by doc_weight) output if webref_populate_annotation_ngrams is enabled.", + "items": { + "$ref": "RepositoryWebrefNgramContext" + }, + "type": "array" + }, + "numCandidates": { + "description": "The total number of candidates.", + "format": "int64", + "type": "string" + }, + "numConceptsWithCandidates": { + "description": "The total number of concepts with at least 1 candidate.", + "format": "int64", + "type": "string" + }, + "numConceptsWithMentions": { + "description": "The total number of concepts with at least 1 mention.", + "format": "int64", + "type": "string" + }, + "numRangesWithCandidates": { + "description": "The total number of RangeData objects with at least one candidate.", + "format": "int64", + "type": "string" + }, + "statsPerType": { + "description": "Statistics for each token type.", + "items": { + "$ref": "RepositoryWebrefAnnotationStatsPerType" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefAttachmentMetadata": { + "description": "Annotation metadata for an individual entity.", + "id": "RepositoryWebrefWebrefAttachmentMetadata", + "properties": { + "featureType": { + "description": "Oyster Feature Type.", + "enum": [ + "TYPE_ANY", + "TYPE_TRANSPORTATION", + "TYPE_ROUTE", + "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE", + "TYPE_HIGHWAY", + "TYPE_HIGHWAY_1", + "TYPE_HIGHWAY_2", + "TYPE_HIGHWAY_3", + "TYPE_HIGHWAY_4", + "TYPE_HIGHWAY_5", + "TYPE_HIGHWAY_6", + "TYPE_HIGHWAY_7", + "TYPE_HIGHWAY_8", + "TYPE_HIGHWAY_9", + "TYPE_BICYCLE_ROUTE", + "TYPE_TRAIL", + "TYPE_SEGMENT", + "TYPE_ROAD", + "TYPE_RAILWAY", + "TYPE_STANDARD_TRACK", + "TYPE_JR_TRACK", + "TYPE_NARROW_TRACK", + "TYPE_MONORAIL_TRACK", + "TYPE_SUBWAY_TRACK", + "TYPE_LIGHT_RAIL_TRACK", + "TYPE_BROAD_TRACK", + "TYPE_HIGH_SPEED_RAIL", + "TYPE_TROLLEY_TRACK", + "TYPE_FERRY", + "TYPE_FERRY_BOAT", + "TYPE_FERRY_TRAIN", + "TYPE_VIRTUAL_SEGMENT", + "TYPE_INTERSECTION", + "TYPE_TRANSIT", + "TYPE_TRANSIT_STATION", + "TYPE_BUS_STATION", + "TYPE_TRAMWAY_STATION", + "TYPE_TRAIN_STATION", + "TYPE_SUBWAY_STATION", + "TYPE_FERRY_TERMINAL", + "TYPE_AIRPORT", + "TYPE_AIRPORT_CIVIL", + "TYPE_AIRPORT_MILITARY", + "TYPE_AIRPORT_MIXED", + "TYPE_HELIPORT", + "TYPE_SEAPLANE_BASE", + "TYPE_AIRSTRIP", + "TYPE_CABLE_CAR_STATION", + "TYPE_GONDOLA_LIFT_STATION", + "TYPE_FUNICULAR_STATION", + "TYPE_SPECIAL_STATION", + "TYPE_HORSE_CARRIAGE_STATION", + "TYPE_MONORAIL_STATION", + "TYPE_SEAPORT", + "TYPE_TRANSIT_STOP", + "TYPE_TRANSIT_TRIP", + "TYPE_TRANSIT_DEPARTURE", + "TYPE_TRANSIT_LEG", + "TYPE_TRANSIT_LINE", + "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE", + "TYPE_TRANSIT_TRANSFER", + "TYPE_SEGMENT_PATH", + "TYPE_ROAD_SIGN", + "TYPE_INTERSECTION_GROUP", + "TYPE_PATHWAY", + "TYPE_RESTRICTION_GROUP", + "TYPE_TOLL_CLUSTER", + "TYPE_POLITICAL", + "TYPE_COUNTRY", + "TYPE_ADMINISTRATIVE_AREA", + "TYPE_ADMINISTRATIVE_AREA1", + "TYPE_US_STATE", + "TYPE_GB_COUNTRY", + "TYPE_JP_TODOUFUKEN", + "TYPE_ADMINISTRATIVE_AREA2", + "TYPE_GB_FORMER_POSTAL_COUNTY", + "TYPE_GB_TRADITIONAL_COUNTY", + "TYPE_ADMINISTRATIVE_AREA3", + "TYPE_ADMINISTRATIVE_AREA4", + "TYPE_ADMINISTRATIVE_AREA5", + "TYPE_ADMINISTRATIVE_AREA6", + "TYPE_ADMINISTRATIVE_AREA7", + "TYPE_ADMINISTRATIVE_AREA8", + "TYPE_ADMINISTRATIVE_AREA9", + "TYPE_COLLOQUIAL_AREA", + "TYPE_RESERVATION", + "TYPE_LOCALITY", + "TYPE_GB_POST_TOWN", + "TYPE_JP_GUN", + "TYPE_JP_SHIKUCHOUSON", + "TYPE_JP_SUB_SHIKUCHOUSON", + "TYPE_COLLOQUIAL_CITY", + "TYPE_SUBLOCALITY", + "TYPE_US_BOROUGH", + "TYPE_GB_DEPENDENT_LOCALITY", + "TYPE_JP_OOAZA", + "TYPE_JP_KOAZA", + "TYPE_JP_GAIKU", + "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY", + "TYPE_JP_CHIBAN", + "TYPE_JP_EDABAN", + "TYPE_SUBLOCALITY1", + "TYPE_SUBLOCALITY2", + "TYPE_SUBLOCALITY3", + "TYPE_SUBLOCALITY4", + "TYPE_SUBLOCALITY5", + "TYPE_NEIGHBORHOOD", + "TYPE_CONSTITUENCY", + "TYPE_DESIGNATED_MARKET_AREA", + "TYPE_SCHOOL_DISTRICT", + "TYPE_LAND_PARCEL", + "TYPE_DISPUTED_AREA", + "TYPE_POLICE_JURISDICTION", + "TYPE_STATISTICAL_AREA", + "TYPE_CONSTITUENCY_FUTURE", + "TYPE_PARK", + "TYPE_GOLF_COURSE", + "TYPE_LOCAL_PARK", + "TYPE_NATIONAL_PARK", + "TYPE_US_NATIONAL_PARK", + "TYPE_US_NATIONAL_MONUMENT", + "TYPE_NATIONAL_FOREST", + "TYPE_PROVINCIAL_PARK", + "TYPE_PROVINCIAL_FOREST", + "TYPE_CAMPGROUNDS", + "TYPE_HIKING_AREA", + "TYPE_BUSINESS", + "TYPE_GOVERNMENT", + "TYPE_BORDER_CROSSING", + "TYPE_CITY_HALL", + "TYPE_COURTHOUSE", + "TYPE_EMBASSY", + "TYPE_LIBRARY", + "TYPE_SCHOOL", + "TYPE_UNIVERSITY", + "TYPE_EMERGENCY", + "TYPE_HOSPITAL", + "TYPE_PHARMACY", + "TYPE_POLICE", + "TYPE_FIRE", + "TYPE_DOCTOR", + "TYPE_DENTIST", + "TYPE_VETERINARIAN", + "TYPE_TRAVEL_SERVICE", + "TYPE_LODGING", + "TYPE_RESTAURANT", + "TYPE_GAS_STATION", + "TYPE_PARKING", + "TYPE_POST_OFFICE", + "TYPE_REST_AREA", + "TYPE_CASH_MACHINE", + "TYPE_CAR_RENTAL", + "TYPE_CAR_REPAIR", + "TYPE_SHOPPING", + "TYPE_GROCERY", + "TYPE_TOURIST_DESTINATION", + "TYPE_ECO_TOURIST_DESTINATION", + "TYPE_BIRD_WATCHING", + "TYPE_FISHING", + "TYPE_HUNTING", + "TYPE_NATURE_RESERVE", + "TYPE_TEMPLE", + "TYPE_CHURCH", + "TYPE_GURUDWARA", + "TYPE_HINDU_TEMPLE", + "TYPE_MOSQUE", + "TYPE_SYNAGOGUE", + "TYPE_STADIUM", + "TYPE_BAR", + "TYPE_MOVIE_RENTAL", + "TYPE_COFFEE", + "TYPE_GOLF", + "TYPE_BANK", + "TYPE_DOODLE", + "TYPE_GROUNDS", + "TYPE_AIRPORT_GROUNDS", + "TYPE_BUILDING_GROUNDS", + "TYPE_CEMETERY", + "TYPE_HOSPITAL_GROUNDS", + "TYPE_INDUSTRIAL", + "TYPE_MILITARY", + "TYPE_SHOPPING_CENTER", + "TYPE_SPORTS_COMPLEX", + "TYPE_UNIVERSITY_GROUNDS", + "TYPE_DEPRECATED_TARMAC", + "TYPE_ENCLOSED_TRAFFIC_AREA", + "TYPE_PARKING_LOT", + "TYPE_PARKING_GARAGE", + "TYPE_OFF_ROAD_AREA", + "TYPE_BORDER", + "TYPE_BUILDING", + "TYPE_GEOCODED_ADDRESS", + "TYPE_NATURAL_FEATURE", + "TYPE_TERRAIN", + "TYPE_SAND", + "TYPE_BEACH", + "TYPE_DUNE", + "TYPE_ROCKY", + "TYPE_ICE", + "TYPE_GLACIER", + "TYPE_BUILT_UP_AREA", + "TYPE_VEGETATION", + "TYPE_SHRUBBERY", + "TYPE_WOODS", + "TYPE_AGRICULTURAL", + "TYPE_GRASSLAND", + "TYPE_TUNDRA", + "TYPE_DESERT", + "TYPE_SALT_FLAT", + "TYPE_WATER", + "TYPE_OCEAN", + "TYPE_BAY", + "TYPE_BIGHT", + "TYPE_LAGOON", + "TYPE_SEA", + "TYPE_STRAIT", + "TYPE_INLET", + "TYPE_FJORD", + "TYPE_LAKE", + "TYPE_SEASONAL_LAKE", + "TYPE_RESERVOIR", + "TYPE_POND", + "TYPE_RIVER", + "TYPE_RAPIDS", + "TYPE_DISTRIBUTARY", + "TYPE_CONFLUENCE", + "TYPE_WATERFALL", + "TYPE_SPRING", + "TYPE_GEYSER", + "TYPE_HOT_SPRING", + "TYPE_SEASONAL_RIVER", + "TYPE_WADI", + "TYPE_ESTUARY", + "TYPE_WETLAND", + "TYPE_WATER_NAVIGATION", + "TYPE_FORD", + "TYPE_CANAL", + "TYPE_HARBOR", + "TYPE_CHANNEL", + "TYPE_REEF", + "TYPE_REEF_FLAT", + "TYPE_REEF_GROWTH", + "TYPE_REEF_EXTENT", + "TYPE_REEF_ROCK_SUBMERGED", + "TYPE_IRRIGATION", + "TYPE_DAM", + "TYPE_DRINKING_WATER", + "TYPE_CURRENT", + "TYPE_WATERING_HOLE", + "TYPE_TECTONIC", + "TYPE_WATERING_HOLE_DEPRECATED", + "TYPE_VOLCANO", + "TYPE_LAVA_FIELD", + "TYPE_FISSURE", + "TYPE_FAULT", + "TYPE_LAND_MASS", + "TYPE_CONTINENT", + "TYPE_ISLAND", + "TYPE_ATOLL", + "TYPE_OCEAN_ROCK_EXPOSED", + "TYPE_CAY", + "TYPE_PENINSULA", + "TYPE_ISTHMUS", + "TYPE_ELEVATED", + "TYPE_PEAK", + "TYPE_NUNATAK", + "TYPE_SPUR", + "TYPE_PASS", + "TYPE_PLATEAU", + "TYPE_RIDGE", + "TYPE_RAVINE", + "TYPE_CRATER", + "TYPE_KARST", + "TYPE_CLIFF", + "TYPE_VISTA", + "TYPE_DIGITAL_ELEVATION_MODEL", + "TYPE_UPLAND", + "TYPE_TERRACE", + "TYPE_SLOPE", + "TYPE_CONTOUR_LINE", + "TYPE_PAN", + "TYPE_UNSTABLE_HILLSIDE", + "TYPE_MOUNTAIN_RANGE", + "TYPE_UNDERSEA", + "TYPE_SUBMARINE_SEAMOUNT", + "TYPE_SUBMARINE_RIDGE", + "TYPE_SUBMARINE_GAP", + "TYPE_SUBMARINE_PLATEAU", + "TYPE_SUBMARINE_DEEP", + "TYPE_SUBMARINE_VALLEY", + "TYPE_SUBMARINE_BASIN", + "TYPE_SUBMARINE_SLOPE", + "TYPE_SUBMARINE_CLIFF", + "TYPE_SUBMARINE_PLAIN", + "TYPE_SUBMARINE_FRACTURE_ZONE", + "TYPE_CAVE", + "TYPE_ROCK", + "TYPE_ARCHIPELAGO", + "TYPE_POSTAL", + "TYPE_POSTAL_CODE", + "TYPE_POSTAL_CODE_PREFIX", + "TYPE_PREMISE", + "TYPE_SUB_PREMISE", + "TYPE_SUITE", + "TYPE_POST_TOWN", + "TYPE_POSTAL_ROUND", + "TYPE_META_FEATURE", + "TYPE_DATA_SOURCE", + "TYPE_LOCALE", + "TYPE_TIMEZONE", + "TYPE_BUSINESS_CHAIN", + "TYPE_PHONE_NUMBER_PREFIX", + "TYPE_PHONE_NUMBER_AREA_CODE", + "TYPE_BUSINESS_CORRIDOR", + "TYPE_ADDRESS_TEMPLATE", + "TYPE_TRANSIT_AGENCY", + "TYPE_FUTURE_GEOMETRY", + "TYPE_EVENT", + "TYPE_EARTHQUAKE", + "TYPE_HURRICANE", + "TYPE_WEATHER_CONDITION", + "TYPE_TRANSIENT", + "TYPE_ENTRANCE", + "TYPE_CARTOGRAPHIC", + "TYPE_HIGH_TENSION", + "TYPE_SKI_TRAIL", + "TYPE_SKI_LIFT", + "TYPE_SKI_BOUNDARY", + "TYPE_WATERSHED_BOUNDARY", + "TYPE_TARMAC", + "TYPE_WALL", + "TYPE_PICNIC_AREA", + "TYPE_PLAY_GROUND", + "TYPE_TRAIL_HEAD", + "TYPE_GOLF_TEEING_GROUND", + "TYPE_GOLF_PUTTING_GREEN", + "TYPE_GOLF_ROUGH", + "TYPE_GOLF_SAND_BUNKER", + "TYPE_GOLF_FAIRWAY", + "TYPE_GOLF_HOLE", + "TYPE_DEPRECATED_GOLF_SHOP", + "TYPE_CAMPING_SITE", + "TYPE_DESIGNATED_BARBECUE_PIT", + "TYPE_DESIGNATED_COOKING_AREA", + "TYPE_CAMPFIRE_PIT", + "TYPE_WATER_FOUNTAIN", + "TYPE_LITTER_RECEPTACLE", + "TYPE_LOCKER_AREA", + "TYPE_ANIMAL_ENCLOSURE", + "TYPE_CARTOGRAPHIC_LINE", + "TYPE_ESTABLISHMENT", + "TYPE_ESTABLISHMENT_GROUNDS", + "TYPE_ESTABLISHMENT_BUILDING", + "TYPE_ESTABLISHMENT_POI", + "TYPE_ESTABLISHMENT_SERVICE", + "TYPE_CELESTIAL", + "TYPE_ROAD_MONITOR", + "TYPE_PUBLIC_SPACES_AND_MONUMENTS", + "TYPE_STATUE", + "TYPE_TOWN_SQUARE", + "TYPE_LEVEL", + "TYPE_COMPOUND", + "TYPE_COMPOUND_GROUNDS", + "TYPE_COMPOUND_BUILDING", + "TYPE_COMPOUND_SECTION", + "TYPE_TERMINAL_POINT", + "TYPE_REGULATED_AREA", + "TYPE_LOGICAL_BORDER", + "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES", + "TYPE_UNKNOWN" + ], + "enumDescriptions": [ + "ABSTRACT", + "ABSTRACT", + "A route is any section of road (or rails, etc.) that has a name. This includes city streets as well as highways. Road segments can belong to multiple routes (e.g. El Camino, CA-82).", + "DEPRECATED", + "ABSTRACT", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "A designated bicycle route, whose segments may consist of any combination of bicycle paths, bicycle lanes, or city streets.", + "A designated trail, which may consist of paved walkways, dirt paths, fire road, streets or highways, etc.", + "ABSTRACT", + "", + "Railroads use several different incompatible track types.", + "", + "", + "", + "", + "", + "", + "", + "", + "Tracks for streetcars, cable-cars, etc. Ferries are services that are part of the road network but are not roads. They typically involve fares and scheduled departure times.", + "ABSTRACT", + "The vast majority of ferries are ferry boats.", + "Also called a \"car transport\", a ferry train is a rail service that carries passengers and their vehicles across undrivable terrain. The Channel Tunnel (\"Chunnel\") is the most famous example, but they are also common in the Alps where they connect neighboring valleys otherwise separated by impassable mountains.", + "Any plausible 1-dimensional path through a 2+ dimensional space, for the purposes of making graph-search-based routing possible. Such segments can be used to model paths through parking lots, squares, floors of buildings and other areas.", + "An intersection consists of a collection of segments that terminate at the same location. This is topological definition: it may not match what a typical user would think of as an \"intersection\". See TYPE_INTERSECTION_GROUP, below, for more information. Each segment terminating at an intersection has an \"endpoint type\" that specifies how that segment is terminated: stop sign, yield sign, three-way light, etc.", + "ABSTRACT", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "A transit line is a collection of transit legs, associated with some invariant properties of the trips that run over the legs. See also transitline.proto", + "TYPE_TRANSIT_AGENCY was moved to 0xC91. This deprecated enum value still exists for debugging purposes only.", + "DEPRECATED", + "ABSTRACT", + "Road sign features have names, point geometry, etc. They also have segment_path data (see below) which lists the segments that refer to the sign. See segment.proto for the reference from the segment to the road sign.", + "Our TYPE_INTERSECTION feature, above, models 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. This TYPE_INTERSECTION_GROUP is used to model the user's concept of a complex intersection.", + "RESERVED", + "A restriction group describes a set of segment restrictions that belong together and have a name or an associated event. See also restriction_group.proto", + "A toll cluster is either a single point on a segment (represented as a point at the end of the segment that has ENDPOINT_TOLL_BOOTH set) or a group of points on various road segments in MapFacts that represents one or more lanes passing through a toll fixture that all go to the same routing destination. Each toll cluster should have at most a single price per payment method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has different prices for multiple routing destinations, drivers need to be in the correct lane before passing through the toll fixture and hence such a fixture is represented by multiple toll clusters. A toll cluster does not necessarily represent a real-world entity, e.g. a particular plaza/structure as perceived by humans. This is because a plaza can be represented by more than one toll cluster. We require toll clusters to have names, but they might be non-unique. For example, a plaza might be represented by multiple toll clusters that may have the same plaza name. For further details, please see go/toll-cluster-schema.", + "ABSTRACT", + "", + "ABSTRACT", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "e.g. Silicon Valley", + "A reservation is a region collectively held or governed by indigenous people and officially recognized by the country’s government at the federal or state level. A reservation may be fully contained within an administrative feature or partially contained within two or more. These regions are referred to by different categorical names depending on country and even by state, including but not limited to: “Indian Reservations”, “Indian Reserves”, “Land Claim Settlement Lands”, “Indian Lands”, “Treaty Lands”, “Indigenous Territories”, etc. A reservation is not a historic indigenous territory boundary or a region which has applied for land rights but has not yet received official recognition.", + "", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "An entity widely considered to be a city, that may itself be made up of smaller political entities, some of which are cities/towns/villages themselves. For example, the colloquial view of Sydney, Australia actually comprises many smaller cities, but is regarded as a city itself. This type is not suitable for modeling official metro-/micropolitan or other statistical areas.", + "ABSTRACT", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "Designated Market Areas (or DMAs) are used by marketing and ratings companies (such as the Nielsen Media Research company) to describe geographical regions (such as the greater New York metropolitan area) that are covered by a set of television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In the United States, DMAs should have a DMA numeric ID name, tagged with the FLAG_DESIGNATED_MARKET_AREA_ID flag.", + "", + "", + "Eventually we'll have more data for disputed areas (e.g., who makes claims on the area, who has de facto control, etc.). For the moment, we just define a type so we can simply mark areas as disputed.", + "Boundaries representing the jurisdiction of a particular police station.", + "An area used for aggregating statistical data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a third nibble so we can add an abstract parent above it later if need be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as TYPE_STATISTICAL_AREA1).", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "A line representing the boundary between two features. See border.proto for details.", + "DEPRECATED", + "An association of a point with an address, with no other information.", + "ABSTRACT", + "Expanses of land that share common surface attributes. These areas would look more or less uniform from a high altitude.", + "", + "", + "", + "", + "", + "", + "Terrain that looks populated.", + "Terrain that is covered in vegetation.", + "", + "", + "", + "", + "", + "", + "A flat expanse of salt left by the evaporation of a body of salt water.", + "Features can be TYPE_WATER if we don't have enough information to properly type the body of water. TYPE_WATER is also used as the type for child features that compose a TYPE_RIVER feature.", + "One of the large salt-water bodies that covers most of the globe.", + "An ocean subdivision formed by a coastal indentation. Includes coves and gulfs.", + "An open body of water formed by a slight coastal indentation.", + "", + "An ocean subdivision more or less confined by land and islands.", + "A long narrow ocean subdivision. Includes sounds.", + "", + "", + "An inland body of standing water.", + "A lake that dries up part of the year.", + "An artificial body of water, possibly created by a dam, often used for irrigation or house use.", + "", + "An inland body of moving water, or parts associated with it in which there is little or no current (backwater).", + "", + "A branch which flows away from the main river. Includes deltas.", + "A place where two or more rivers join.", + "", + "A place where ground water flows naturally out of the ground.", + "", + "", + "A river that dries up part of the year.", + "A dry riverbed that occasionally receives flashfloods.", + "A place at the end of a river where fresh and salt water mix. Includes tidal creeks and limans.", + "Land that is usually flooded. Includes bogs, marshes, flats, moors, and swamps.", + "", + "A shallow place where water may be waded through.", + "A narrow passage used by boats. Normally artificial.", + "A deep place near a shore where ships commonly drop anchor.", + "A deep part in a body of water that is suitable for navigation. Includes narrows.", + "Rocks, coral, sandbars, or other features beneath the surface of the water that pose a hazard to passing ships. Includes shoals.", + "A relatively shallow zone of the back reef located closest to the shore, that may be exposed at low tide.", + "A small section of rocks, coral, sandbars, or other features beneath the surface of the water that forms part of a reef.", + "The full extent of the reef complex.", + "A submerged rock in the water.", + "Man-made (and sometimes natural) channels used to move water. This type was used for both dam structures and water that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for dam structures and TYPE_RESERVOIR for water.", + "DEPRECATED", + "", + "Includes overfalls.", + "A natural depression filled with water where animals come to drink.", + "ABSTRACT This type is incorrectly under TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now fixed. See TYPE_WATERING_HOLE for the replacement.", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "", + "", + "An exposed rock in the water.", + "A small, low-elevation, sandy island formed on the surface of coral reefs", + "A stretch of land projecting into water. Includes capes and spits.", + "A strip of land connecting two larger land masses, such as continents.", + "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.", + "Elevations that have a distinctive peak.", + "A peak or ridge of a mountain that extends through a glacier.", + "A subsidiary peak of a mountain.", + "A route over an otherwise difficult to traverse feature. Includes saddle.", + "Elevations that are flat on top. Includes mesas and buttes.", + "A ridge is a geographical feature consisting of a chain of mountains or hills that form a continuous elevated crest with a single ridgeline for some distance.", + "Steep declines usually carved by erosion. Includes valleys, canyons, ditches, and gorges.", + "Depressions causes by impact, explosion, and sometimes sink-holes.", + "Topography formed on limestone and gypsum by dissolution with sinkholes, caves, etc.", + "A vertical or nearly vertical slope. Includes escarpments.", + "An elevated place that is notable for having a good view. Raster digital elevation data. This is not a type to be used by providers or consumed by clients.", + "RESERVED", + "Land along streams higher than the alluvial plain or stream terrace.", + "", + "Land not so steep as a cliff, but changing elevation. Includes slides.", + "All the points on the polygon are at the same elevation.", + "A near-level shallow, natural depression or basin, usually containing an intermittent lake, pond, or pool.", + "", + "A series of mountains or hills ranged in a line and connected by high ground. Mountain ranges usually consist of many smaller ridges. For example, the Himalayas, the Andes. the Alps, etc.", + "Features that are notable for being high (or low), or for having sudden changes in elevation. These features might have an \"elevation\" extension to specify the actual elevation. See ElevationProto for more information.", + "includes peaks, ranges, and spurs", + "", + "includes saddles", + "", + "", + "includes trenches and troughs", + "", + "", + "", + "", + "", + "Don't use 0xA7. Use 8 bits for additional types under TYPE_NATURAL_FEATURE, so we don't run out of space. The following are miscellaneous natural features that don't fit any of the categories above.", + "", + "A feature representing a group or chain of islands. ", + "ABSTRACT", + "This is the type for postal codes which are complete and independent enough that there should be a feature for them (e.g. US 5-digit ZIP codes). For even more detailed suffixes that further subdivide a postal code (such as the +4 component in US ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX address component. When a range or set of postal codes share the same geographical area, e.g. because a precise subdivision does not exist or this subdivision is unknown, this type is used for each individual postal code.", + "A prefix portion of a postal code which does not meet the requirements for TYPE_POSTAL_CODE, but which is useful to search for, for example UK outcodes.", + "DEPRECATED", + "DEPRECATED This is deprecated and we want to use TYPE_COMPOUND_SECTION instead.", + "DEPRECATED", + "The term \"post town\" is used for a locality-like-entity that is only used for postal addresses.", + "DEPRECATED", + "ABSTRACT", + "Every data source used in constructing a data repository has a corresponding feature that provides more information about that data source. The extra information is stored in the optional data_source field below.", + "A locale feature provides region specific conventions such as preferred language and formatting details for time, date, and currency values. Locales aren't necessary defined by physical geographic features, so they are classified as meta-features.", + "A timezone feature is used to specify the region covering an international timezone. When a point is covered by multiple timezone features, the most specific one can be used to compute the local time at this point. Most specific implies a much smaller region or the one that is closer to the center. A feature's timezone can be specified in the repeated related_timezone field.", + "A business chain feature is used to represent a chain, e.g. Starbucks, McDonald's, etc. Other features representing specific stores/franchises of this chain may refer to one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly reserved to commercial chains but can also be used to model organizations such as the Red Cross or the United Nations.", + "A phone number prefix feature is used to specify the region where phone numbers (typically fixed-line numbers) must begin with a certain prefix. Any phone number prefix down to any level of granularity could be represented by this type.", + "A phone number area code is a prefix which also coincides with the area code, or national destination code, of a particular region.", + "A Business Corridor is a dense cluster of semantically similar establishments. TYPE_BUSINESS_CORRIDOR features are distinguished from TYPE_COLLOQUIAL_AREA features because the corridors are not under the political hierarchy, are allowed to be nameless, and may not correspond to well-known real world locations. For more details, see go/geo-corridors-schema.", + "An address template feature provides region-specific conventions for structuring addresses. These features aren't necessarily defined by physical geographic features, so they are classified as meta-features.", + "A transit agency operates a number of lines, typically all in the same city, region or country. See also transitagency.proto", + "A feature whose geometry is planned to replace the geometry on another feature.", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "DEPRECATED", + "RESERVED", + "A portal of entry or exit to another feature. Examples: - Subway station entrance. - Parking lot entrance.", + "Cartographic features are used to capture real-world objects for which there is no current desire to model any specific attributes. These are only useful to make the map tiles look pretty.", + "DEPRECATED", + "Also see skitrail.proto", + "Also see skilift.proto", + "Also see skiboundary.proto", + "", + "Starting with TYPE_TARMAC, we use longer IDs, so that we can expand the number of feature types under TYPE_CARTOGRAPHIC.", + "Use TYPE_COMPOUND_GROUND and appropriate gcids for the next two.", + "DEPRECATED", + "DEPRECATED", + "", + "Sub-types within a golf course.", + "", + "", + "", + "", + "Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop for golf shops instead.", + "DEPRECATED", + "DEPRECATED", + "", + "", + "", + "", + "", + "", + "Subtype within a zoo - a cage or fenced-off or otherwise delineated area containing animals.", + "A line for a cartographic detail. For example the international date line. Such features should have polyline geometry.", + "ABSTRACT This type is being replaced by TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2", + "DEPRECATED This type has been replaced by TYPE_COMPOUND_BUILDING. For further details, see go/oyster-compounds", + "DEPRECATED", + "An establishment which has a address (a.k.a. location or storefront). Note that it *may* also have a service area (e.g. a restaurant that offers both dine-in and delivery). This type of business is also known as a \"hybrid\" Service Area Business. Establishment POIs can be referenced by TYPE_COMPOUND features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the reciprocal relation of the RELATION_OCCUPIES.", + "A business without a storefront, e.g. a plumber. It would normally not have a place that a customer could visit to receive service, but it would have an area served by the business. Also known as a \"pure\" Service Area Business. NOTE(tcain): Using value 0xD441, since we could find ourselves with a need to differentiate service areas from online-only at this level in the future, but still benefit from being able to group those under a common parent, disjoint from TYPE_ESTABLISHMENT_POI.", + "The root of types of features that are in the sky, rather than on the earth. There will eventually be a hierarchy of types here.", + "Features responsible for monitoring traffic on roads (usually for speed). Includes cameras at particular points as well as monitors that cover larger spans. Features of this type should have a corresponding gcid that specifies the correct subtype (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was originally named as TYPE_ROAD_CAMERA.", + "ABSTRACT", + "Note that this type does not distinguish the nature of the statue (religious, historical, memorial, tourist, ...).", + "Open space used for events, gathering, or as market-place.", + "A feature used to represent a logical level, e.g. floor.", + "ABSTRACT", + "e.g. campus, compound, parcel.", + "e.g. single family dwelling, office building.", + "e.g. suite, room, hallway, cubicle.", + "A terminal point represents a good location for a user to meet a taxi, ridesharing vehicle, or general driver.", + "An area controlled in some way by an authoritative source, such as a government-designated COVID containment zone. Features of this type should have one or more gcids corresponding to their specific regulation.", + "RESERVED", + "DEPRECATED", + "A feature of completely unknown type. This should only be used when absolutely necessary. One example in which this type is useful is in the Chinese importer, which must heuristically segment addresses into components - it often does not know what types to make those components. Please note that the Oyster address formatter does not currently support address components of TYPE_UNKNOWN well." + ], + "type": "string" + }, + "index": { + "description": "Indicates which entity this message belongs to: encoded_mid[index].", + "format": "int32", + "type": "integer" + }, + "latE7": { + "description": "Latitude and longitude of the location. Same format as geostore.PointProto.", + "format": "uint32", + "type": "integer" + }, + "lngE7": { + "format": "uint32", + "type": "integer" + }, + "oysterId": { + "$ref": "GeostoreFeatureIdProto", + "description": "Oyster Feature ID of the location." + }, + "singleTopicnessE2": { + "description": "This field is populated for at most one entity. If it is populated, it indicates how confident we are to claim that the page is only about this entity (either it's an official web presence of the entity, or something like a wikipedia page about the entity). For space reasons this is represented as a fixed-point integer with two decimal points precision. Convert it to the interval [0,1] using the following formula: float single_topicness = single_topicness_e2 / 100.f", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefDocumentInfo": { + "description": "All information that applies globally to the document. Next available tag: 11", + "id": "RepositoryWebrefWebrefDocumentInfo", + "properties": { + "documentMetadata": { + "$ref": "RepositoryWebrefDocumentMetadata", + "description": "Information about the document copied from the docjoin. This will never be populated when WebrefEntities appears inside a CompositeDoc, but may we used when it stands alone." + }, + "extensions": { + "$ref": "Proto2BridgeMessageSet", + "description": "Optional extensions (e.g. taxonomic classifications)." + }, + "outlinkInfos": { + "$ref": "RepositoryWebrefWebrefOutlinkInfos", + "description": "Information about the outlinks of this document. " + }, + "webrefParsedContentSentence": { + "description": "The content (CONTENT section 0) as parsed by WebrefParser. Only used by //r/w/postprocessing/idf/idf-pipeline for document ngram idf computation. Populated when the annotator is run with webref_populate_parsed_content Each webref_parsed_content_sentence represents one sentence of the context where saft annotations were used to determine the sentence boundaries. See r/w/universal/processors/saft/saft-sentence-helper.h for details.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefEntities": { + "description": "Represents a collection of entities returned by the WebRef service. Next available tag: 14.", + "id": "RepositoryWebrefWebrefEntities", + "properties": { + "annotationStats": { + "$ref": "RepositoryWebrefWebrefAnnotationStats", + "description": "Detailed annotation statistics that can, e.g., be used to tune the WebRef scoring logic based on existing (Model-0) annotations." + }, + "annotatorCheckpointFingerprints": { + "description": "Fingerprints checkpointing annotator stages, can be used to track the source of diffs.", + "items": { + "$ref": "RepositoryWebrefAnnotatorCheckpointFprint" + }, + "type": "array" + }, + "category": { + "description": "Categories of the document or query. This replaces the category_score found under EntityAnnotations.", + "items": { + "$ref": "RepositoryWebrefCategoryAnnotation" + }, + "type": "array" + }, + "dateRange": { + "description": "Dates ranges that are most relevant to the document. E.g. on a document about Dune the 2021 movie, this might hold the release date of that movie.", + "items": { + "$ref": "RepositoryWebrefSemanticDateRange" + }, + "type": "array" + }, + "documentInfo": { + "$ref": "RepositoryWebrefWebrefDocumentInfo", + "description": "Information that applies globally to the document. The exclude_field option is for Goldmine AnnotationsFinder to exclude document_info from retrieving annotation entities" + }, + "entity": { + "description": "The annotated entities, with associated confidence scores and metadata. This is the primary output of WebRef/QRef. In case of Webref output, entities are sorted by decreasing topicality score.", + "items": { + "$ref": "RepositoryWebrefWebrefEntity" + }, + "type": "array" + }, + "rangeAnnotations": { + "description": "These messages contain non-entity annotations of ranges in the document. This might be used to hold part-of-speech annotations, stopword annotations, and other range based information. The exclude_field option is for Goldmine AnnotationsFinder to exclude ranged_annotations from retrieving annotation entities", + "items": { + "$ref": "RepositoryWebrefRangeAnnotations" + }, + "type": "array" + }, + "status": { + "$ref": "RepositoryWebrefWebrefStatus", + "description": "The status message returned by the annotator. Might not be populated on success." + }, + "stuff": { + "$ref": "Proto2BridgeMessageSet", + "description": "A generic container to hold extra result data." + }, + "tripleAnnotations": { + "$ref": "RepositoryWebrefTripleAnnotations", + "description": "Triples inferred from the document When the annotator recognizes phrases, lists or tables associated with a property or relationship for an entity it generates triples that encode that information. This generated data is only substantiated by the document vs KG data which has been verified from multiple sources and/or human curators." + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefEntity": { + "description": "All information about a single entity available to WebRef. Next available tag: 7", + "id": "RepositoryWebrefWebrefEntity", + "properties": { + "annotatedRelationship": { + "description": "Information about links (e.g. implications) between the annotated entities.", + "items": { + "$ref": "RepositoryWebrefWebrefEntityRelationship" + }, + "type": "array" + }, + "annotations": { + "$ref": "RepositoryWebrefEntityAnnotations", + "description": "All annotations of this entity on the given document." + }, + "collections": { + "$ref": "RepositoryWebrefWebrefEntityCollections", + "description": "Information about the collections of this entity." + }, + "entityJoin": { + "$ref": "RepositoryWebrefEntityJoin", + "description": "Metadata and raw signals used by the annotator." + }, + "id": { + "$ref": "RepositoryWebrefWebrefEntityId", + "description": "An identifier (usually a MID) for the entity. Consider using GetWebrefEntityMid() in the adjacent webref-entities-util.h to read this." + }, + "mrf": { + "description": "MRF equivalent representations of this entity as a compound, one for each unique MRF representation. Populated for compounds. Each MRF expression contains a minimum FunctionCall structure wrapped in a nameless Argument without signals and range data. This is not meant to be directly usable as MRF, use QueryJoinToMeaningStructConverter to expand it into a usable form. References to entities are made as component_reference ArgumentValue. Each compound Mention of this entity (not all of its mentions need be compounds, some may be plain entity mentions) have one or more compound_value fields claiming these MRF expressions via their mrf_index. The compound_value has nested components, one for each unique component_reference.index in the MRF expression. The processing expectation is that each ArgumentValue which has a component_reference has its contents discarded and replaced with the MRF for the target entity and mention named by the compound_value.component. If the target is not a compound, the ArgumentValue becomes a simple mid value and the signals are taken from the entity and the mention. If the target is a compound itself, the expansion continues recursively. If the target is a compound with multiple MRFs, a cartesian product of recursive expansions may need to be produced. Along with the component_reference we also emit an example value, but this is purely for human consumption so it's easier to understand what the full compound is like. The processing expectation remains that the ArgumentValue containing a component_reference is completely discarded and rebuilt with the reference target value. If the target has more than one MRF expression, it's not specified which one will be used as an example, except that the choice is guaranteed to be deterministic from run to run.", + "items": { + "$ref": "KnowledgeAnswersIntentQueryArgument" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefEntityCollections": { + "id": "RepositoryWebrefWebrefEntityCollections", + "properties": { + "collection": { + "items": { + "$ref": "RepositoryWebrefKGCollection" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefEntityId": { + "description": "The identifier of a WebrefEntity (see webref-entities.proto). IMPORTANT: Please consider reading this proto through GetWebrefEntityMid() in webref-entities-util.h, because this proto may: a) contain both freebase_mid and concept_id (this is frequently the case to avoid breaking downstream clients), b) only contain freebase_mid or only contain concept_id (as the other one is technically redundant), c) contain neither of them or be missing entirely (potentially in future).", + "id": "RepositoryWebrefWebrefEntityId", + "properties": { + "conceptId": { + "description": "The MID in integer format. Nowadays, this field contains the equivalent representation of `freebase_mid`, i.e. what metaweb::ParseId() returns.", + "format": "uint64", + "type": "string" + }, + "freebaseMid": { + "description": "The MID in the same format that is returned by metaweb::MidToString(), e.g. \"/m/02mjmr\" or \"/g/11b6vyscgb\" or \"/t/24bjj59_jbj9f\".", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefEntityRelationship": { + "description": "Information regarding links between annotated entities. Next available tag: 5", + "id": "RepositoryWebrefWebrefEntityRelationship", + "properties": { + "entityIndex": { + "description": "The index of the entry in WebrefEntities.entity that the entity carrying this field is linked to. This field must be set.", + "format": "int32", + "type": "integer" + }, + "linkMetadata": { + "$ref": "RepositoryWebrefEntityLinkMetadata", + "description": "Information about the link." + }, + "linkWeight": { + "description": "The weight of the link.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefMustangAttachment": { + "description": "*** THIS ATTACHMENT IS DEPRECATED, SEE go/udr/migrate-wma. ***. We still allow legacy use case to exist (no forced migration), but we will not accept any new usage of WMA, incl. from existing clients. UDR has the same features and can be used similarly: - To consume the topical entities (+properties, incl. hitcat, browsy, ...) go/udr/migrate-wma provides a migration with minimal changes. - To consume IQL, please consult go/udr/superroot#access and go/pianno team. The top-level proto used to store WebRef entities and IQL expressions in Mustang/TG. The proto uses packed repeated fields and variable-length integers in order to be as compact as possible. See http://b/5802389 and b/7473898 for details on other approaches that were considered and space/readability/extensibility trade-offs made. Note: It is not recommeded to read this proto directly. Clients of the attachment should use the decoder instead: repository/webref/tools/kc/indexing/webref-attachment-decoder.h Next available tag: 25", + "id": "RepositoryWebrefWebrefMustangAttachment", + "properties": { + "categoryConfidenceE2": { + "description": "The confidence of the category. In the range [0, 100].", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "categoryEncodedMid": { + "description": "See go/category-annotations-api about the story behind various types of category annotations that are provided using the catmid token and category_encoded_mid fields below. Some of these annotation types are experimental, so please contact related-entities@ if you consider using this data. For production uses, please: 1. Add your use-case to go/hits-clients. 2. Subscribe to hits-users@ to receive general updates and info about deprecations. To convert it to the string form use metaweb::MidToString(encoded_mid) defined in metaweb/util/mid/mid.h The uint64-encoded MIDs of HitCat categories. See google3/repository/webref/hits/hitcat/category.textproto for the complete list of HitCat categories. Should have the same number of elements as the category_confidence_e2 field.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "confidenceE2": { + "description": "The confidence scores of all entities in the encoded_mid array. For space reasons this is also represented as a fixed-point integer with two decimal precision. Convert it to confidence_score using the following formula: float confidence_score = confidence_e2 / 100.0f Should have the same number of elements as the encoded_mid field.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "encodedMid": { + "description": "The int64-encoded MIDs of the entities in the document sorted by topicality score. To convert it to the string form use metaweb::MidToString(encoded_mid) defined in metaweb/util/mid/mid.h Should have the same number of elements as the topicality_e2 field.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "entityMetadata": { + "description": "Per-entity metadata. Not packed (not every entity has metadata). If you'd like to add per-document metadata, see document_metadata instead.", + "items": { + "$ref": "RepositoryWebrefWebrefAttachmentMetadata" + }, + "type": "array" + }, + "iqlAttachment": { + "$ref": "KnowledgeAnswersIntentQueryIndexingIQLAttachment", + "description": "A sub-proto to encode IQL expressions. To be used by Pianno page-level intents and Webref Compounds." + }, + "isAuthorIndex": { + "description": "The indices of all the reference entities in encoded_mid that are authors of the page. Not packed as in most cases when populated, it contains 1 element.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "isPublisherIndex": { + "description": "The indices of all the reference entities in encoded_mid that are publishers of the page (e.g. /m/cnn on \"http://www.cnn.com/foo/bar\"). Not packed as in most cases when populated, it contains 1 element.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "referencePageIndex": { + "description": "Only populated when the document is a reference page for an entity. Contains the indices of all reference entities in the encoded_mid and topicality_e2 arrays. Not packed as in most cases when populated, it contains 1 element.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "topicalityE2": { + "description": "The topicality scores of all entities in the encoded_mid array. For space reasons this is represented as a fixed-point integer with two decimal points precision. Convert it to topicality_score using the following formula: float topicality_score = topicality_e2 / 100.f Should have the same number of elements as the encoded_mid field.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "unboundIntentMid": { + "description": "The uint64-encoded MID of the unbound intents generated by Pianno. An unbound intent is the annotation of an intent without slots arguments (e.g. Age) declared in Intent Catalog. See go/pianno-asteroid-belt-migration for details. We only keep the top unbound intents with the highest orbit scores. Should have the same number of elements as unbound_intent_score_e2.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "unboundIntentScoreE2": { + "description": "The confidence of the unbound intent. represented as a fixed-point integer with two decimal precision. In the range [0, 100]. Should have the same number of elements as unbound_intent_mid.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "undermergedMembers": { + "description": "[Experimental code. Do not use ] Entities that webref identified as being the same concept (undermerged).", + "items": { + "$ref": "RepositoryWebrefWebrefMustangAttachmentUndermergedMembers" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefMustangAttachmentUndermergedMembers": { + "id": "RepositoryWebrefWebrefMustangAttachmentUndermergedMembers", + "properties": { + "encodedMid": { + "description": "Experimental code, do not use.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefOutlinkInfo": { + "description": "Information about the outlinks for one specific target URL, from a given annotated document. Next available tag: 7", + "id": "RepositoryWebrefWebrefOutlinkInfo", + "properties": { + "byteLength": { + "description": "The length in bytes of such a link (including internal spaces); e.g. if the link text is \"click here\" then the length is 10.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "byteOffset": { + "description": "The byte offset of the start of a link with this target URL, in the content of the annotated document.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "isNofollow": { + "description": "Whether this is a nofollow link (https://en.wikipedia.org/wiki/Nofollow). If the page has multiple links to the same url, all of them must be nofollow to set this field.", + "type": "boolean" + }, + "topicalityWeight": { + "description": "The topicality_weight for each link with this target URL.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "url": { + "description": "The target URL of the link.", + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefOutlinkInfos": { + "description": "Information about the outlinks of an annotated document. Next available tag: 3", + "id": "RepositoryWebrefWebrefOutlinkInfos", + "properties": { + "outlinkInfo": { + "description": "Information about each target URL referred to in the document's outlinks. If a given URL has multiple links, they are grouped in a single WebrefLinkInfo.", + "items": { + "$ref": "RepositoryWebrefWebrefOutlinkInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "RepositoryWebrefWebrefStatus": { + "id": "RepositoryWebrefWebrefStatus", + "properties": { + "dataEpoch": { + "description": "The epoch of the Webref static data (the name-filter.data file). As of Dec 2020 in prod Goldmine (in webref_daily_full_model_static_data) this value is over from the alpha model static data, since this is where most of the parts come from. I.e. the value does not correspond to the actual model being used.", + "type": "string" + }, + "utilStatus": { + "$ref": "UtilStatusProto", + "description": "Error that occurred during the annotation. This field is only populated by QRef (i.e. under QueryJoin.status) and never by WebRef (i.e. under WebrefEntities.status) anymore, which instead reports errors (and soon also taints) through standard Goldmine mechanisms." + }, + "version": { + "description": "The version number of the annotator (the cl the binary was built from). Must be enabled via a command line flag. See also the Goldmine's indexing::annotations::AnnotationMeta proto.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "RepositoryWebrefWikipediaCategory": { + "description": "Information about a Wikipedia category (typically at the bottom of the page).", + "id": "RepositoryWebrefWikipediaCategory", + "properties": { + "categoryName": { + "type": "string" + } + }, + "type": "object" + }, + "RepositoryWebrefWikipediaGeocode": { + "description": "Geocodes extracted from the wikijoins.", + "id": "RepositoryWebrefWikipediaGeocode", + "properties": { + "location": { + "$ref": "GeostorePointProto", + "description": "The location as extracted from the wikijoins." + }, + "sourceUrl": { + "description": "The source contains the url field from the wikijoins.", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScamCoscamConjunction": { + "description": "////////////////////////////////////////////////////////////////////////////// Conjunction: a single AND clause that contains multiple disjunctions.", + "id": "ResearchScamCoscamConjunction", + "properties": { + "disjunctionId": { + "description": "disjunction_id / is_positive *MUST* have the same length. They specify a set of disjunctions that make up this conjunction. The conjunction will be active iff *all* of the positive disjunctions are active and *all* of the negative disjunctions are inactive.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "isPositive": { + "items": { + "type": "boolean" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamCoscamDisjunction": { + "description": "////////////////////////////////////////////////////////////////////////////// Disjunction: a single OR clause that contains multiple group:token tuples.", + "id": "ResearchScamCoscamDisjunction", + "properties": { + "key": { + "description": "key - a uint64 key that uniquely identifies this disjunction.", + "format": "uint64", + "type": "string" + }, + "tokenGroups": { + "description": "groups - the group:token tuples that make up this disjunction. The disjunction will be active if *any* off the group:token tuples are present in a request.", + "items": { + "$ref": "ResearchScamCoscamTokenGroup" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamCoscamEasyConjunction": { + "description": "Each EasyConjunction represents an AND-of-ORs block.", + "id": "ResearchScamCoscamEasyConjunction", + "properties": { + "disjunctions": { + "description": "disjunctions is the set of OR clauses that", + "items": { + "$ref": "ResearchScamCoscamEasyDisjunction" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamCoscamEasyDisjunction": { + "description": "Each EasyDisjunction represents one OR clause.", + "id": "ResearchScamCoscamEasyDisjunction", + "properties": { + "isPositive": { + "description": "If is_positive is set to false, then the entire disjunction is negated, and will be true only if none of its members is true.", + "type": "boolean" + }, + "tokenGroups": { + "description": "token_groups - the group:token tuples that make up this disjunction. The disjunction will be active if *any* off the group:token tuples are present in a request.", + "items": { + "$ref": "ResearchScamCoscamTokenGroup" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamCoscamEasyRestrictDefinition": { + "description": "Each EasyRestrictDefinition represents an OR-of-ANDs-of-ORs block.", + "id": "ResearchScamCoscamEasyRestrictDefinition", + "properties": { + "conjunctions": { + "description": "conjunctions is the set of AND-of-ORs blocks.", + "items": { + "$ref": "ResearchScamCoscamEasyConjunction" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamCoscamRestrictDefinition": { + "description": "////////////////////////////////////////////////////////////////////////////// RestrictDefinition: the set of conjunctions and disjunctions that define a single OR-of-ANDs-of-ORs restrict definition.", + "id": "ResearchScamCoscamRestrictDefinition", + "properties": { + "conjunctions": { + "description": "conjunctions - each conjunction is an AND-of-ORs; if any of these conjunctions match, then the entire restrict matches.", + "items": { + "$ref": "ResearchScamCoscamConjunction" + }, + "type": "array" + }, + "disjunctions": { + "description": "disjunctions - each disjunction is an OR clause.", + "items": { + "$ref": "ResearchScamCoscamDisjunction" + }, + "type": "array" + }, + "subsKey": { + "description": "subs_key - ignore. Only used for testing.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScamCoscamRestrictTokensV2": { + "description": "////////////////////////////////////////////////////////////////////////////// RestrictTokensV2: a set of group:token tuples, collated by group.", + "id": "ResearchScamCoscamRestrictTokensV2", + "properties": { + "tokenGroups": { + "description": "token_groups - group:token tuples, collated by group.", + "items": { + "$ref": "ResearchScamCoscamTokenGroup" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamCoscamTokenGroup": { + "id": "ResearchScamCoscamTokenGroup", + "properties": { + "debugTokenStrings": { + "description": "debug_token_strings - (optional) strings that should be used for human-friendly printing. NOT used by the matching engine!", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "name - the name of the token group.", + "type": "string" + }, + "tokens": { + "description": "tokens - a list of tokens, stored by their Fingerprint2011 hash.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamGenericFeatureVector": { + "description": "===================================================================== # GenericFeatureVector Last tag used: 23", + "id": "ResearchScamGenericFeatureVector", + "properties": { + "classLabel": { + "description": "The class label of this datapoint. This should be populated if ScaM is being used for nearest-neighbor-based classification.", + "type": "string" + }, + "crowding": { + "$ref": "ResearchScamGenericFeatureVectorCrowding" + }, + "dataIdStr": { + "description": "Optional point id that can contain an arbitrary (unrestricted in content) value except when the data is provided via SSTable (sharded or not). In the case of SSTable the data_id_str must be set for _all_ points in all shards or the SSTable keys will be used as the values for the data_id_str of the respective points. In either SSTable case--data_id_str provided explicitly or via the key--the values must be unique across all shards.", + "format": "byte", + "type": "string" + }, + "expirationTimestamp": { + "description": "A timestamp after which this datapoint is considered no longer valid and is eligible for deletion. The exact meaning varies with application/configuration.", + "format": "google-datetime", + "type": "string" + }, + "featureDim": { + "description": "DEPRECATED: - this field can safely be left unspecified. For dense vectors, dimensionality is inferred from the number of values specified, and must be identical to this, or unspecified. For sparse vectors, the default value is correct for most users, and allows use of 64-bit hash values for feature indices.", + "format": "uint64", + "type": "string" + }, + "featureIndex": { + "description": " - for SPARSE vectors, specifies indices of the nonzero dimensions whose values are specified by the , , or field. This field is not used when specifying dense vectors.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "featureType": { + "description": "Describes the type of feature values.", + "enum": [ + "UNKNOWN", + "INT64", + "FLOAT", + "DOUBLE", + "STRING", + "BINARY" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "featureValueDouble": { + "items": { + "format": "double", + "type": "number" + }, + "type": "array" + }, + "featureValueFloat": { + "description": "Actual feature vector. Only one of the following should be populated. This list has to be kept in sync with FeatureType enum. NOTES: Binary features are stored as ones or zeroes in feature_value_int64. Floating point values (feature_value_float, feature_value_double) may not be NaN.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "featureValueInt64": { + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "featureValueString": { + "format": "byte", + "type": "string" + }, + "fixedPointMetadata": { + "$ref": "ResearchScamGenericFeatureVectorFixedPointMetadata" + }, + "normType": { + "description": "Describes if data has been normalized and the type.", + "enum": [ + "NONE", + "UNITL2NORM", + "STDGAUSSNORM", + "UNITL1NORM" + ], + "enumDescriptions": [ + "", + "", + "mean=0, population std. dev. = 1", + "" + ], + "type": "string" + }, + "queryMetadata": { + "$ref": "ResearchScamQueryMetadata", + "description": "copybara:strip_begin A field that contains metadata information when the datapoint is acting as a query. copybara:strip_end" + }, + "restrictTokens": { + "$ref": "ResearchScamGenericFeatureVectorRestrictTokens" + }, + "tokens": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "userinfo": { + "description": "This field allows application-specific metadata to be stored in a GFV. This information may be used by custom binaries or in pre- or postprocessing outside of ScaM. Use cases include but are not limited to: * Dataset IDs, if multiple datasets are multiplexed into one physical file or network location. * An alternative, possibly more human-readable representation of the data represented by this GFV, for e.g. debugging purposes. * Outputting the contents of this field verbatim to the metadata field of the NearestNeighbors.Neighbor proto.", + "format": "byte", + "type": "string" + }, + "weight": { + "description": "DEPRECATED fields. Ignored by ScaM binaries. Do not use.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ResearchScamGenericFeatureVectorCrowding": { + "description": "This subproto contains configuration for crowding. Crowding is a constraint on a neighbor list produced by nearest neighbor search requiring that no more than some value k' of the k neighbors returned have the same value of crowding_attribute.", + "id": "ResearchScamGenericFeatureVectorCrowding", + "properties": { + "crowdingAttribute": { + "description": "The value of the crowding attribute for this document. The maximum number of neighbors to return per crowding attribute value (per_crowding_attribute_num_neighbors) is configured per-query. This field is ignored if per_crowding_attribute_num_neighbors is larger than the total number of neighbors to return for a given query.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScamGenericFeatureVectorFixedPointMetadata": { + "description": "Metadata that may be populated if this GFV was transformed into fixed-point from a floating-point GFV.", + "id": "ResearchScamGenericFeatureVectorFixedPointMetadata", + "properties": { + "squaredL2Norm": { + "description": "The squared L2 norm of the original (pre-fixed-point transformation) GFV. Used for computing squared L2 distance.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ResearchScamGenericFeatureVectorRestrictTokens": { + "description": "RestrictTokens - used to perform \"restricted searches\" where boolean rules are used to filter the subset of the database eligible for matching. We currently support V1 and V3 restrict systems. V3 restrict is a superset of V1 restrict. New users are encouraged to use V3 directly for its rich features and cleaner semantics. See the document go/scam-v3-restricts, or read the comments in //research/scam/proto/restricts.proto for details. Nevertheless, V1 restrict is still supported by ScaM team. There's some minor tradeoff of performance between V1 and V3. User may prefer V1 over V3 if performance is the first priority. However, the CPU cost between V1 and V3 should be very minor. --------------------------------------------------------------------------- The semantics of V1 restrict is described below: V1 \"forward\" restricts: The dataset defines a many:many mapping between the database points and a token space. Each token names a set of tokens and each database point is a member of zero-to-many tokens. Queries specify zero-to-many whitelist and blacklist tokens that activate database points according to the following rules: * If whitelist_token is populated, the search will be restricted to points named by at least one whitelist token. If whitelist_token is empty, all points are whitelisted by default. * If blacklist_token is populated, it overrides the whitelist. Points named by a blacklisted token are *not* searched. * Note that, if neither whitelist_token nor blacklist_token is populated, the search remains unrestricted. --------------------------------------------------------------------------- V1 \"reverse\" restricts: Each database point is whitelisted and/or blacklisted for zero or more tokens, specified by whitelist_token and blacklist_token fields. Each query specifies zero or more tokens, and the same rules apply: * If a point's whitelist_token is populated, the point will only be searched if the query has at least one matching whitelist token. If whitelist_token is empty, the point is always whitelisted by default. * If a point's blacklist_token is populated, it overrides the whitelist. The point will be ignored for any query with a matching blacklist token. * Note that, if neither whitelist_token nor blacklist_token is populated, the point will always be searched. NEXT ID TO USE: 9", + "id": "ResearchScamGenericFeatureVectorRestrictTokens", + "properties": { + "blacklistToken": { + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "definition": { + "$ref": "ResearchScamCoscamRestrictDefinition", + "description": "DEPRECATED" + }, + "easyDefinition": { + "$ref": "ResearchScamCoscamEasyRestrictDefinition", + "description": "DEPRECATED" + }, + "tokenMembership": { + "description": "B) Token Definitions (V1 Restricts) In \"forward\" mode: defined on database points In \"reverse\" mode: defined on queries", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "tokens": { + "$ref": "ResearchScamCoscamRestrictTokensV2", + "description": "DEPRECATED" + }, + "v3": { + "$ref": "ResearchScamV3Restrict", + "description": "Only ONE of the following sections should be used: A) V3 restricts. Defined in //research/scam/proto/restricts.proto" + }, + "v3CompatibleNamespace": { + "description": "If this field is not empty, when query is in V1 restricts while database is in V3 restricts, SCaM will update V1 query to V3 automatically instead of sending error messages. When updating query from V1 to V3, SCaM server will use this field to fillin the 'namespace' field.", + "type": "string" + }, + "whitelistToken": { + "description": "C) Whitelist / Blacklist Definitions (V1 Restricts) In \"forward\" mode: defined on queries In \"reverse\" mode: defined on database points", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamNearestNeighbors": { + "description": "All nearest neighbors for one data point. Last tag used: 5", + "id": "ResearchScamNearestNeighbors", + "properties": { + "docid": { + "description": "Data point for which we computed nearest neighbors. This field is set based on the data_id_str field in the QueryRequest GFV (or SSTable key if data_id_str is not present), and thus can be arbitrary data, e.g. docid, URL, query string.", + "format": "byte", + "type": "string" + }, + "metadata": { + "description": "Metadata about the query. This field is populated if and only if: 1) ScaM is running in offline query-database or online mode and; 2) The metadata is directly fetched from the userinfo field inside GFV and; 3) MetadataConfig.userinfo.set_user_info_for_query is set to true. The field name is kept as \"metadata\" for consistency with neighbors.", + "format": "byte", + "type": "string" + }, + "neighbor": { + "description": "All its neighbors.", + "items": { + "$ref": "ResearchScamNearestNeighborsNeighbor" + }, + "type": "array" + }, + "neighborSelectionOverride": { + "$ref": "ResearchScamNeighborSelectionOverride", + "description": "Propagate neighbor selection override information during offline search." + }, + "query": { + "$ref": "ResearchScamGenericFeatureVector", + "description": "The query vector for which we computed nearest neighbors." + }, + "retrievedVersion": { + "description": "The version ID of the server that responded to this query, if one was specified. This field is not populated for offline (i.e. Flume rather than RPC) search.", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScamNearestNeighborsNeighbor": { + "id": "ResearchScamNearestNeighborsNeighbor", + "properties": { + "crowdingAttribute": { + "description": "If crowding is enabled, the crowding attribute of this neighbor will be stored here.", + "format": "int64", + "type": "string" + }, + "distance": { + "description": "This could be exact or approximate distance.", + "format": "double", + "type": "number" + }, + "docid": { + "description": "Neighbor data point. This field is set based on the data_id_str field in the GFV of the data point in the database (or SSTable key if data_id_str is not present), and thus can be arbitrary data, e.g. docid, URL, query string.", + "format": "byte", + "type": "string" + }, + "metadata": { + "description": "Metadata about the neighbor. This is returned under some configurations as a serialized proto. The specific proto depends on which metadata is configured to be returned.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScamNeighborSelectionOverride": { + "description": "Last used tag = 8", + "id": "ResearchScamNeighborSelectionOverride", + "properties": { + "approxEpsilonDistance": { + "description": "The distance threshold to use for approximate search before exact reordering is performed, if exact reordering is performed. If this is not set and exact reordering is enabled, a reasonable default value will be chosen using a heuristic specified in ScamConfig.ExactReordering.NeighborSelectionOverrideHeuristics. This field is ignored if exact reordering is not enabled. This value must be non-NaN if set.", + "format": "float", + "type": "number" + }, + "approxNumNeighbors": { + "description": "The number of neighbors to find via approximate search before exact reordering is performed. If this is not set and exact reordering is enabled, a reasonable default value will be chosen using the heuristic specified in ScamConfig.ExactReordering.NeighborSelectionOverrideHeuristics. This field is ignored if exact reordering is not enabled. This value must be \u003e 0 if set.", + "format": "int32", + "type": "integer" + }, + "epsilonDistance": { + "description": "The maximum distance at which to return a neighbor. If this proto is used, at least one of this and num_neighbors must be set. The default is infinity, effectively returning num_neighbors neighbors regardless of distance. This value must be non-NaN if set.", + "format": "float", + "type": "number" + }, + "numNeighbors": { + "description": "The maximum number of neighbors to return. If this proto is used, at least one of this and epsilon_distance must be set. The default is the largest value representable as an int32, effectively returning all neighbors within epsilon_distance. This value must be \u003e 0 if set.", + "format": "int32", + "type": "integer" + }, + "numSingleShardNeighbors": { + "description": "If populated, this is the maximum number of neighbors that may be returned from a single shard. If not populated, up to num_neighbors neighbors are returned from each shard. Setting his to a smaller value than num_neighbors will increase speed at the expense of accuray by requiring cross-shard merging of fewer neighbors. If this value is set, num_neighbors must also be set and this value must be \u003c= num_neighbors and \u003e= num_neighbors / number of shards. If set, this value must always be \u003e 0. ", + "format": "int32", + "type": "integer" + }, + "perCrowdingAttributeNumNeighbors": { + "description": "The maximum number of neighbors to return for a single value of the crowding attribute. The crowding attribute is specified per-datapoint in the GenericFeatureVector proto, or the Document proto for sparse logistic models. Crowding is described more thoroughly in research/scam/utils/crowding_top_n.h. NOTES: Crowding is effectivley enabled if this value is less than num_neighbors.", + "format": "int32", + "type": "integer" + }, + "perCrowdingAttributePreReorderingNumNeighbors": { + "description": "The maximum number of neighbors to return from the approximate portion of the nearest-neighbor search algorithm, within each shard, for a single value of the crowding attribute, before performing exact reordering. Ignored if exact reordering is disabled for this dataset.", + "format": "int32", + "type": "integer" + }, + "treeXHybridLeavesSearchedOverride": { + "description": "Note: currently not implemented for all database shard subclasses! Contact ScaM before using. Overrides max_spill_centers for tree-X hybrid searchers configured with FIXED_NUMBER_OF_CENTERS spilling. The max_spill_centers in the ScaM config is used if this field isn't set. Only valid if: * Used on a tree-X hybrid ScaM config with FIXED_NUMBER_OF_CENTERS. * Value is greater than zero and at most equal to num_children.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ResearchScamOnlineSearchLatencyStats": { + "description": "Structure to hold the response time for a node. Last used: 3", + "id": "ResearchScamOnlineSearchLatencyStats", + "properties": { + "cpuTime": { + "description": "An estimate of the CPU time used for this query on the machine associated with task_id, from when the query was received to when the response was ready to send, in seconds. Caveats: 1. Does not account for CPU time spent serializing, deserializing, compressing or decompressing protos within Stubby. 2. Does not account for cleanup time after response has been sent.", + "format": "double", + "type": "number" + }, + "taskId": { + "description": "Task number associated with response time measurements.", + "format": "int32", + "type": "integer" + }, + "wallTime": { + "description": "Wall time taken on the machine associated with task_id from when the query was received to when the response was ready to send, in seconds. This time excludes the time spent sending the response and the time to perform cleanup operations after the response is sent.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "ResearchScamQueryMetadata": { + "description": "Metadata to encode query-specific information. This may include NeighborSelectionOverride, pre-computed query tokenization, etc..", + "id": "ResearchScamQueryMetadata", + "properties": { + "neighborSelectionOverride": { + "$ref": "ResearchScamNeighborSelectionOverride" + } + }, + "type": "object" + }, + "ResearchScamQueryResponse": { + "description": "Response to a query. The main result is the nearest neighbor list, but we also optionally include debugging information if the appropriate field is set in the request. Last used: 8", + "id": "ResearchScamQueryResponse", + "properties": { + "latency": { + "description": "Debugging fields: The wall and CPU time used by each query on each machine. For successful queries, there will be one entry here for each machine that the query used if QueryRequest.enable_latency_stats was enabled. For unsuccessful queries, the contents of this field will be undefined. NOTE: The following accounting rules apply in batched mode, assuming there are ", + "items": { + "$ref": "ResearchScamOnlineSearchLatencyStats" + }, + "type": "array" + }, + "numDeadlineExceededMachines": { + "description": "The number of non-root machines for which a DEADLINE_EXCEEDED error occurred when they were contacted. This value does NOT include machines for which no reply was received because their parent machine timed out. Therefore, num_total_machines may be larger than num_ok_machines + num_unreachable_machines + num_deadline_exceeded_machines.", + "format": "uint32", + "type": "integer" + }, + "numOkMachines": { + "description": "Number of machines that contributed to the results; this might be less than the total number of machines if a machine has failed. The impact of a single machine failure could be larger than just one machine, if it happens to be one of the machines involved in distributing the query and collecting results.", + "format": "uint32", + "type": "integer" + }, + "numTotalMachines": { + "description": "The number of machines used in this service for the dataset that was queried. If everything went right, this should be equal to num_ok_machines. If num_ok_machines \u003c num_total_machines, some neighbors may be missing from results.", + "format": "uint32", + "type": "integer" + }, + "numUnreachableMachines": { + "description": "The number of non-root machines for which an UNREACHABLE error occurred when they were contacted. This value does NOT include machines that were implicitly unreachable because their parent machine was not reachable. Therefore, num_total_machines may be larger than num_ok_machines + num_unreachable_machines + num_deadline_exceeded_machines.", + "format": "uint32", + "type": "integer" + }, + "restrictStats": { + "description": "The number of \"active\" datapoints for each dataset, i.e. points that are whitelisted by restricts and could be returned if they were close enough to the query. For successful queries, there will be one entry here for each dataset queried, if QueryRequest.enable_restrict_stats was true. For partially-successful successful queries, this field will contain results", + "items": { + "$ref": "ResearchScamRestrictStats" + }, + "type": "array" + }, + "results": { + "description": "The results for each dataset searched. If per_dataset_parameters was empty in QueryRequest then this will have one entry, the results for dataset 0. If per_dataset_parameters was not empty in QueryRequest, this will contain the results for each dataset queried, in order corresponding to the order of QueryRequest.per_dataset_parameters.", + "items": { + "$ref": "ResearchScamNearestNeighbors" + }, + "type": "array" + }, + "status": { + "$ref": "UtilStatusProto", + "description": "USEFUL ONLY IN CUSTOM BINARIES. In the stock ScaM server binary, all errors are relayed via the RPC's status. Thus, if RPC's status is ok, this field is guaranteed to be ok and if RPC's status is an error, no QueryResponse will be returned. The status of this query. This is useful when using a batched postprocessing lambda, which may ignore erroneous subqueries, continue postprocessing the valid ones and return OkStatus. In this case, this field will inform the client of any invalid subqueries." + } + }, + "type": "object" + }, + "ResearchScamRestrictStats": { + "description": "Structure to hold the number of active and total datapoints for a given dataset, as defined below. Last used: 2", + "id": "ResearchScamRestrictStats", + "properties": { + "numActiveDatapoints": { + "description": "The number of datapoints that are whitelisted by restricts specified for this query, across all shards for which the query executed successfully. In other words, this represents the number of datapoints that could potentially be returned if they were close enough to the query according to the selected distance measure. If restricts are disabled, this will be equal to num_total_datapoints.", + "format": "uint64", + "type": "string" + }, + "numTotalDatapoints": { + "description": "The number of total datapoints in all shards of this dataset for which the query executed successfully. This is returned for convenience so that a ratio can be easily computed, and so that num_active_datapoints can be put in perspective for partially successful queries, i.e. queries where only some shards were successful.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScamTokenNamespace": { + "id": "ResearchScamTokenNamespace", + "properties": { + "namespace": { + "description": "//////////////////////////////////////////////////////////////////////////// NAMESPACE - the string name of the namespace that this proto is specifying, such as \"color\", \"shape\", \"geo\", or \"tags\". Recall that your overall query is an AND across namespaces.", + "type": "string" + }, + "stringBlacklistTokens": { + "description": "//////////////////////////////////////////////////////////////////////////// BLACKLIST - Blacklisting can be used to implement more complex scenarios. The blacklist fields have exactly the same format as the token fields, but represents a negation. When a token is blacklisted, then matches will be excluded whenever the other datapoint has that token. For example, if a query specifies {color: red, blue, !purple}, then that query will match datapoints that are red or blue, but if those points are also purple, then they will be excluded even if they are red/blue. Note that, due to symmetry, if one of the database points is {red, !blue}, that point will be excluded from queries that specify blue. Lastly, note that namespaces with *only* blacklist tokens behave similar to empty namespaces, in that {color: !purple} would match blue or red datapoints, as long as those datapoints don't also have the purple token.", + "items": { + "type": "string" + }, + "type": "array" + }, + "stringTokens": { + "description": "//////////////////////////////////////////////////////////////////////////// TOKENS - Conceptually, each token names a set datapoints. The field(s) below are for declaring the tokens that name the datapoint that this TokenNamespace proto is attached to. For convenience, we support either string or uint64 tokens. Internally, the restricts system is based on uint64s, but for many applications, strings are the more natural format, and they should be preferred whenever this is the case. * When only uint64s are specified, they will be used as-is. * When only strings are specified, they will be converted to uint64s via Fingerprint2011. (See \"Note on the safety of Fingerprint2011\"). * ADVANCED: When both fields are specified, the uint64s are used as-is. Note that, when both fields are used, they *must* have the same number of entries, and the system will assume that your strings correspond 1:1 with the list of uint64 tokens. * EDGE CASE: All matching is done in the uint64 space, so, I'm not sure why you'd do this, but if, eg, your database uses strings, and your queries specify the Fingerprint2011 hashes of those strings, matching will work, and this is a specified behavior. Note on the safety of Fingerprint2011: Unless you have well over 1M+ unique string tokens, you can safely assume that every string will map to a unique 64-bit token. Internally, both Mustang and PSI use Fingerprint2011 to hash arbitrary strings into uint64 tokens, and assume, without validation, that each 64-bit token is unique. And the math backs up this assumption: If we are using a \"perfect\" hashing function (and Fingerprint2011 is close-enough for our purposes), and we then hash 1M unique tokens into a 64-bit space, there's still better than 99.9999% odds that all tokens are collision-free, nearly as good as the odds for the datacenter's continued existence. Scenarios for having both the string and uint64 token forms: * Probably none that matter to you. Just use the strings directly. * You could have uint64 enum values, yet want to include the string values for debugging purposes. Note that it *is* supported to use a proprietary string =\u003e uint64 mapping, assuming that it is consistent, and that you always specify the uint64 values. * The mixer-tier in a multi-shard deployment might convert the strings into uint64s to avoid redundant hashing overhead on the leaves, yet keep the string tokens to preserve proto-level debugging. * When strings are present, I reserve the right to use them for making logging \"better\", but, thusfar, there are 0 examples of this.", + "items": { + "type": "string" + }, + "type": "array" + }, + "uint64BlacklistTokens": { + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "uint64Tokens": { + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScamV3Restrict": { + "id": "ResearchScamV3Restrict", + "properties": { + "namespaces": { + "description": "//////////////////////////////////////////////////////////////////////////// NAMESPACES - a repeating field, where each entry specifies the set of tokens, within a single namespace, that apply to the query, or database point, on which this V3Restrict proto is defined. Note that: * Your overall query is an AND across namespaces. * Explicitly specifying a namespace with 0 tokens is identical to omitting that namespace. ie, \"{ns:}\" == \"\". * It is an error to specify the same namespace more than once per instance of the V3Restrict proto.", + "items": { + "$ref": "ResearchScamTokenNamespace" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScienceSearchCatalog": { + "description": "Information on the catalog that this dataset comes from. Next ID: 5", + "id": "ResearchScienceSearchCatalog", + "properties": { + "description": { + "description": "catalog description", + "type": "string" + }, + "mid": { + "description": "catalog mid", + "type": "string" + }, + "name": { + "description": "catalog name", + "type": "string" + }, + "url": { + "description": "catalog url", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchCitation": { + "description": "Reference to the citation in Google scholar.", + "id": "ResearchScienceSearchCitation", + "properties": { + "citation": { + "type": "string" + }, + "safeHtmlCitation": { + "$ref": "WebutilHtmlTypesSafeHtmlProto", + "description": "The citation after HTML sanitation. Used only by the front-end." + } + }, + "type": "object" + }, + "ResearchScienceSearchDataDownload": { + "description": "The dataset in downloadable form. There can be multiple data download entries for different file types. Next ID: 6", + "id": "ResearchScienceSearchDataDownload", + "properties": { + "contentSize": { + "description": "Size of the download, as a string from the provider. May include units.", + "type": "string" + }, + "downloadUrl": { + "description": "URL for downloading the data", + "type": "string" + }, + "fileFormat": { + "description": "File format at the link (ASCII, CSV, etc.)", + "type": "string" + }, + "fileFormatClass": { + "description": "Pragmatic classification of file formats - for filtering purposes", + "enum": [ + "CLASS_UNDEFINED", + "CLASS_TABULAR", + "CLASS_DOCUMENT", + "CLASS_STRUCTURED", + "CLASS_IMAGE", + "CLASS_TEXT", + "CLASS_ARCHIVE", + "CLASS_PRESENTATION", + "CLASS_VIDEO", + "CLASS_AUDIO", + "CLASS_GEOSPATIAL", + "CLASS_MEDICAL_IMAGING", + "CLASS_COMPBIO", + "CLASS_OTHER" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Special class for file formats not fitting into any other class" + ], + "type": "string" + }, + "parsedContentSize": { + "$ref": "ResearchScienceSearchDataSize", + "description": "Parsed content size" + } + }, + "type": "object" + }, + "ResearchScienceSearchDataSize": { + "description": "Data size information, consists of a numeric value and a unit. Next ID: 3", + "id": "ResearchScienceSearchDataSize", + "properties": { + "size": { + "description": "Data size value, in the provided size unit", + "format": "double", + "type": "number" + }, + "unit": { + "description": "The data size unit", + "enum": [ + "UNIT_UNSPECIFIED", + "BYTE", + "KB", + "MB", + "GB", + "TB", + "PB", + "EB", + "KIB", + "MIB", + "GIB", + "TIB", + "PIB", + "EIB" + ], + "enumDescriptions": [ + "", + "", + "Decimal: Enum value is 10 followed by its power", + "", + "", + "", + "", + "", + "Binary: Enum value is 2 followed by its power", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchDate": { + "description": "Representation of fields that contain dates. The formattes version, if present, contains ISO 8601 formatted date or range. Otherwise, it is an unformatted string. Next ID: 3", + "id": "ResearchScienceSearchDate", + "properties": { + "formatted": { + "type": "string" + }, + "unformatted": { + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchFieldOfStudyInfo": { + "description": "Stores the classification info of each field of study label.", + "id": "ResearchScienceSearchFieldOfStudyInfo", + "properties": { + "classificationSource": { + "description": "The classification source that determines the field of study label.", + "enum": [ + "UNKNOWN", + "INFERENCE", + "KNOWLEDGE_GRAPH" + ], + "enumDescriptions": [ + "", + "The classification result is determined by model inference.", + "The classification result is determined by knowledge graph mids." + ], + "type": "string" + }, + "isAboveThreshold": { + "description": "If set to true, it means that the probability is at least the threshold value specified from the corresponding saved model config. Thresholds for different fields may be different.", + "enum": [ + "BOOLEAN_WITH_UNDEFINED_UNDEFINED", + "BOOLEAN_WITH_UNDEFINED_TRUE", + "BOOLEAN_WITH_UNDEFINED_FALSE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "label": { + "description": "A label that represents the field of study.", + "enum": [ + "UNKNOWN_FIELD_OF_STUDY_LABEL", + "HUMANITIES", + "SOCIAL_AND_BEHAVIOURAL_SCIENCE", + "BIOLOGY", + "MEDICINE", + "AGRICULTURE_FORESTRY_HORTICULTURE_AND_VETERINARY_MEDICINE", + "CHEMISTRY", + "PHYSICS", + "MATHEMATICS", + "GEOSCIENCES_AND_GEOGRAPHY", + "MECHANICAL_AND_INDUSTRIAL_ENGINEERING", + "THERMAL_ENGINEERING_AND_PROCESS_ENGINEERING", + "MATERIALS_SCIENCE_AND_ENGINEERING", + "COMPUTER_SCIENCE_ELECTRICAL_AND_SYSTEM_ENGINEERING", + "CONSTRUCTION_ENGINEERING_AND_ARCHITECTURE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "probability": { + "description": "A score between [0, 1] outputted from the classifier indicating the probability for being a YES instance.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "ResearchScienceSearchLicense": { + "description": "Distribution license information. Next ID: 6", + "id": "ResearchScienceSearchLicense", + "properties": { + "id": { + "description": "A fingerprint id generated based on the license_class, URL or text. Since the knowledge graph requires a unique string id for the license but any filed of license can be empty, a fingerprint id can serve as a compact identifier representing the non-empty sub-fields.", + "type": "string" + }, + "licenseClass": { + "description": "A value from a controlled vocabulary that uniquely identifies a license. Unless this is set to LICENSE_CLASS_UNDEFINED_NO_MATCH or LICENSE_CLASS_UNDEFINED_CONTRADICTING_MATCHES other fields in this message should be empty.", + "enum": [ + "LICENSE_CLASS_UNDEFINED_NO_MATCH", + "LICENSE_CLASS_UNDEFINED_CONTRADICTING_MATCHES", + "LICENSE_CLASS_CC0_V_1_0", + "LICENSE_CLASS_PDDL_V_1_0", + "LICENSE_CLASS_CC_BY_V_1_0", + "LICENSE_CLASS_CC_BY_V_2_0", + "LICENSE_CLASS_CC_BY_V_2_5", + "LICENSE_CLASS_CC_BY_V_3_0", + "LICENSE_CLASS_CC_BY_V_4_0", + "LICENSE_CLASS_CC_BY_SA_V_1_0", + "LICENSE_CLASS_CC_BY_SA_V_2_0", + "LICENSE_CLASS_CC_BY_SA_V_2_5", + "LICENSE_CLASS_CC_BY_SA_V_3_0", + "LICENSE_CLASS_CC_BY_SA_V_4_0", + "LICENSE_CLASS_CC_BY_NC_V_1_0", + "LICENSE_CLASS_CC_BY_NC_V_2_0", + "LICENSE_CLASS_CC_BY_NC_V_2_5", + "LICENSE_CLASS_CC_BY_NC_V_3_0", + "LICENSE_CLASS_CC_BY_NC_V_4_0", + "LICENSE_CLASS_CC_BY_NC_SA_V_1_0", + "LICENSE_CLASS_CC_BY_NC_SA_V_2_0", + "LICENSE_CLASS_CC_BY_NC_SA_V_2_5", + "LICENSE_CLASS_CC_BY_NC_SA_V_3_0", + "LICENSE_CLASS_CC_BY_NC_SA_V_4_0", + "LICENSE_CLASS_CC_BY_ND_V_1_0", + "LICENSE_CLASS_CC_BY_ND_V_2_0", + "LICENSE_CLASS_CC_BY_ND_V_2_5", + "LICENSE_CLASS_CC_BY_ND_V_3_0", + "LICENSE_CLASS_CC_BY_ND_V_4_0", + "LICENSE_CLASS_CC_BY_ND_NC_V_1_0", + "LICENSE_CLASS_CC_BY_NC_ND_V_2_0", + "LICENSE_CLASS_CC_BY_NC_ND_V_2_5", + "LICENSE_CLASS_CC_BY_NC_ND_V_3_0", + "LICENSE_CLASS_CC_BY_NC_ND_V_4_0", + "LICENSE_CLASS_CC_PDM_V_1_0", + "LICENSE_CLASS_OPEN_GOVERNMENT_LICENSE_V_1_0", + "LICENSE_CLASS_OPEN_GOVERNMENT_LICENSE_V_2_0", + "LICENSE_CLASS_OPEN_GOVERNMENT_LICENSE_V_3_0", + "LICENSE_CLASS_OPEN_GOVERNMENT_LICENSE_CANADA_V_2_0", + "LICENSE_CLASS_DL_DE_BY_V_1_0", + "LICENSE_CLASS_DL_DE_BY_V_2_0", + "LICENSE_CLASS_DL_DE_ZERO_V_2_0", + "LICENSE_CLASS_LO_OL_V_1_0", + "LICENSE_CLASS_LO_OL_V_2_0", + "LICENSE_CLASS_US_PD_V_1_0", + "LICENSE_CLASS_OCL_V_1_0", + "LICENSE_CLASS_ODC_PDDL_V_1_0", + "LICENSE_CLASS_ODC_BY_V_1_0", + "LICENSE_CLASS_ODC_ODBL_V_1_0", + "LICENSE_CLASS_MIT_V_1_0", + "LICENSE_CLASS_APACHE_V_2_0" + ], + "enumDescriptions": [ + "Special value for when the metadata provided does not match any license class", + "Special value for when the metadata provided matches more than one license class", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Version 1.0 has \"nd\" before \"nc\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "V1.0 doesn't exist", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "licenseMid": { + "description": "mid for the license.", + "type": "string" + }, + "text": { + "description": "The text (usually, the name) of the distribution license.", + "type": "string" + }, + "url": { + "description": "The url for the distribution license.", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchLocation": { + "description": "Describes the spatial information about a value in spatial-coverage definition of a dataset. Next ID: 9", + "id": "ResearchScienceSearchLocation", + "properties": { + "boxCoordinates": { + "description": "Coordinates of the corners of the polygon in the form \"lat1 long1 lat2 long2\"", + "type": "string" + }, + "circleCoordinates": { + "description": "Coordinates for the circle area defined by its center and radius: \"lat long, radius\"", + "type": "string" + }, + "containedInMid": { + "description": "mids for locations that contain loctions in .", + "items": { + "type": "string" + }, + "type": "array" + }, + "locationMid": { + "description": "mids for locations covering the dataset, contained in the . A region may contain multiple locations that are identified by mids.", + "items": { + "type": "string" + }, + "type": "array" + }, + "locationMidLabel": { + "description": "Labels (in the preferred language of the dataset) for the mids in .", + "items": { + "type": "string" + }, + "type": "array" + }, + "locationName": { + "description": "The original name for the area covered by the dataset.", + "type": "string" + }, + "pointCoordinates": { + "description": "Latitude and longitude for a single point in the form of \"lat,long\".", + "type": "string" + }, + "unformattedCoordinates": { + "description": "Unformatted coordinates describing the region.", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchNavboostQueryInfo": { + "description": "The information representing one navboost query for the dataset source_url.", + "id": "ResearchScienceSearchNavboostQueryInfo", + "properties": { + "impCount": { + "description": "imp_count stores an estimate of the number of impressions for this tuple.", + "format": "float", + "type": "number" + }, + "lccCount": { + "description": "lcc_count stores an estimate of the number of long clicks for this tuple. NOTE: It is similar to query_doc_count, but calculated in different manner.", + "format": "float", + "type": "number" + }, + "query": { + "description": "The query string.", + "type": "string" + }, + "queryCount": { + "description": "The query_count stores the counts on this query.", + "format": "float", + "type": "number" + }, + "queryDocCount": { + "description": "The query_doc_count stores the number of long-clicks on this pair.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ResearchScienceSearchOrganization": { + "description": "Organization, such as the source of a dataset or a funder NOTE: source_organization_mid and source_organization_mid_label should always have the same length: the mid and label correspond to each other. We don't use a map for consistency with Location and if we switch to map, we should switch to it in both. Next ID: 6", + "id": "ResearchScienceSearchOrganization", + "properties": { + "organizationMid": { + "description": "KG mid for the organization or person.", + "items": { + "type": "string" + }, + "type": "array" + }, + "organizationMidLabel": { + "description": "Label (in the preferred language of the dataset) for the mid.", + "items": { + "type": "string" + }, + "type": "array" + }, + "organizationName": { + "description": "Unreconciled organization name. We store it here only if there are no organization_mid values present.", + "type": "string" + }, + "organizationUrl": { + "description": "Original organization url", + "type": "string" + }, + "originalOrganizationName": { + "description": "Original name before reconciliation; empty if not reconciled.", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchReconciledMetadata": { + "description": "A proto for storing inferred and reconciled metadata for Science Search. Next available tag: 69", + "id": "ResearchScienceSearchReconciledMetadata", + "properties": { + "alternateName": { + "description": "Alternate names and acronyms for the dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "authorList": { + "description": "A string representation of the authors of the dataset, collected from author and creator in raw metadata. The exact format (e.g., comma-separated, etc.) is up to the extender that populates this field. The assumption is that this string may appear in the UI \"as is\".", + "type": "string" + }, + "catalog": { + "$ref": "ResearchScienceSearchCatalog", + "description": "Catalog that this dataset is a part of." + }, + "compactIdentifier": { + "description": "Compact Identifiers (for example \"RRID:SCR_002088\") that can be resolved by Identifiers.org or N2T.net meta-resolvers.", + "items": { + "type": "string" + }, + "type": "array" + }, + "compactIdentifierFromCitation": { + "description": "Compact Identifier(s) extracted from the citation field. Like in the case of DOI(s) those identify the articles related to the dataset rather than the dataset itself.", + "items": { + "type": "string" + }, + "type": "array" + }, + "coverageEndDate": { + "$ref": "ResearchScienceSearchDate" + }, + "coverageStartDate": { + "$ref": "ResearchScienceSearchDate", + "description": "The start and end date that the dataset covers. If the dataset covers a single timepoint, then start and end dates are the same. Use the ISO 8601 format for dates (e.g., 2006-05-23)." + }, + "dataDownload": { + "description": "The dataset in downloadable form. There can be multiple data download entries for different file types.", + "items": { + "$ref": "ResearchScienceSearchDataDownload" + }, + "type": "array" + }, + "datasetClassificationFieldsHash": { + "description": "A hash of the raw metadata fields used by the QualityExtender.", + "format": "uint64", + "type": "string" + }, + "datasetClassificationScore": { + "description": "Probability that the entity is in fact a dataset (in contrast to spam or website labelled as dataset that does not describe a dataset).", + "format": "double", + "type": "number" + }, + "dateCreated": { + "$ref": "ResearchScienceSearchDate", + "description": "The date when the dataset was created." + }, + "dateModified": { + "$ref": "ResearchScienceSearchDate", + "description": "The date when the dataset was modified." + }, + "datePublished": { + "$ref": "ResearchScienceSearchDate", + "description": "The date when the dataset was published." + }, + "dateUpdated": { + "$ref": "ResearchScienceSearchDate", + "description": "Most recent of the three dates (published, created, modified)" + }, + "denylistStatus": { + "items": { + "enum": [ + "UNKNOWN_STATUS", + "FILE_NAME", + "NO_DESCRIPTION", + "DENYLIST_REGEX_MATCH", + "DENYLIST_NAME_MATCH", + "NAME_SIZE_OUT_OF_BOUNDS", + "DESCRIPTION_TOO_SHORT", + "NOT_IN_CATALOG_FOR_DOMAIN", + "MIRRORS_POPULAR_DATASET" + ], + "enumDescriptions": [ + "", + "Dataset name is a file name and there are no other names.", + "Dataset has no description.", + "Dataset id matches a regex on the denylist.", + "Dataset name matches a regex on the denylist.", + "Dataset name is too short or too long.", + "Dataset description is too short.", + "The dataset comes from a known domain but is not included in the catalog for that domain.", + "The dataset is a mirror of an excessively mirrored popular dataset" + ], + "type": "string" + }, + "type": "array" + }, + "description": { + "description": "Description of the dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "descriptionInHtml": { + "description": "Description of the dataset converted to HTML.", + "items": { + "type": "string" + }, + "type": "array" + }, + "doi": { + "description": "The DOI for the dataset. We assume that there is only one.", + "type": "string" + }, + "doiFromCitation": { + "description": "DOI(s) extracted from the citation field. In contrast to the \"doi\" field these DOIs identify the articles related to the dataset rather than the dataset itself.", + "items": { + "type": "string" + }, + "type": "array" + }, + "fieldOfStudy": { + "description": "Field of study: a general, high-level classification of the dataset. This is only populated during indexing time and it is only populated if the classification_source is KNOWLEDGE_GRAPH or it's above inference threshold.", + "items": { + "$ref": "ResearchScienceSearchFieldOfStudyInfo" + }, + "type": "array" + }, + "fingerprint": { + "description": "The fingerprint of basic fields from DatasetMetadata, including: - name - description DEPRECATED", + "format": "uint64", + "type": "string" + }, + "funder": { + "description": "Funder of the dataset.", + "items": { + "$ref": "ResearchScienceSearchOrganization" + }, + "type": "array" + }, + "hasTableSummaries": { + "description": "Indicates if the dataset has table summaries. This field is only populated during indexing time.", + "type": "boolean" + }, + "id": { + "description": "A unique id for the dataset. For the data from Spore, this is the spore id, such as, for example \"http://accession.nodc.noaa.gov/8500223#__sid=js0\" REQUIRED", + "type": "string" + }, + "identifierFromSource": { + "description": "An identifier as provided by the dataset itself.", + "items": { + "type": "string" + }, + "type": "array" + }, + "imageUrl": { + "description": "The image urls provided by the dataset (e.g., for thumbnail images).", + "items": { + "type": "string" + }, + "type": "array" + }, + "indexInCluster": { + "description": "Index of this dataset in its cluster of replicas.", + "format": "int32", + "type": "integer" + }, + "isAccessibleForFree": { + "description": "Indicates if the dataset is available for free or behind a paywal http://schema.org/isAccessibleForFree", + "enum": [ + "BOOLEAN_WITH_UNDEFINED_UNDEFINED", + "BOOLEAN_WITH_UNDEFINED_TRUE", + "BOOLEAN_WITH_UNDEFINED_FALSE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "isBasedOn": { + "description": "A resource (most likely another dataset) from which this dataset is derived or from which it is a modification or adaption. http://schema.org/isBasedOn", + "items": { + "type": "string" + }, + "type": "array" + }, + "keyword": { + "description": "Keywords describing the dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "languageCode": { + "description": "The 2-letter language code for the source page for the dataset. Same as the language code in source_url_docjoin_info. Populated only when generating output for indexing.", + "type": "string" + }, + "license": { + "description": "License for the dataset.", + "items": { + "$ref": "ResearchScienceSearchLicense" + }, + "type": "array" + }, + "licenseDeprecated": { + "description": "License for the dataset. DEPRECATED", + "items": { + "type": "string" + }, + "type": "array" + }, + "measurementTechnique": { + "description": "A technique or technology used in a Dataset corresponding to the method used for measuring the corresponding variable(s) (described using variableMeasured). http://schema.org/measurementTechnique", + "items": { + "type": "string" + }, + "type": "array" + }, + "mentionedUrls": { + "description": "Mentioned URLs in the description.", + "items": { + "type": "string" + }, + "type": "array" + }, + "metadataType": { + "enum": [ + "UNKNOWN_DATASET_TYPE", + "DATASET_TYPE", + "TABLE_TYPE", + "FIGURE_TYPE" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "name": { + "description": "The names of the dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "numberOfDatasetsAtSourceUrl": { + "description": "The number of datasets at the same source url as this dataset.", + "format": "int32", + "type": "integer" + }, + "numberOfScholarCitations": { + "description": "The number of articles that reference this dataset.", + "format": "int32", + "type": "integer" + }, + "publication": { + "items": { + "$ref": "ResearchScienceSearchCitation" + }, + "type": "array" + }, + "relatedArticleUrl": { + "description": "The url for the article that (likely) describes this dataset.", + "type": "string" + }, + "replica": { + "description": "The info of replicas of this dataset.", + "items": { + "$ref": "ResearchScienceSearchReplica" + }, + "type": "array" + }, + "sameAs": { + "description": "Ids for other instances (not different versions) of this dataset.", + "items": { + "type": "string" + }, + "type": "array" + }, + "scholarQuery": { + "description": "Query string to send to Scholar to obtain the best approximation of citations to the dataset.", + "type": "string" + }, + "scholarlyArticle": { + "$ref": "ResearchScienceSearchScholarlyArticle", + "description": "For tables and figures, contains all of the metadata for a scholarly article that was the source of this table or figure. This field is populated only if metadata_type is 'TABLE' or 'FIGURE'." + }, + "sourceOrganization": { + "description": "Source of the dataset: unifies provider, creator, author, publisher etc.", + "items": { + "$ref": "ResearchScienceSearchOrganization" + }, + "type": "array" + }, + "sourceUrl": { + "description": "Source url from which we gathered the metadata", + "type": "string" + }, + "sourceUrlDocjoinInfo": { + "$ref": "ResearchScienceSearchSourceUrlDocjoinInfo", + "description": "All the information extracted from docjoin, for the source_url of this dataset, aka DatasetMetadata.source_url." + }, + "spatialCoverage": { + "description": "Locations that describe spatial coverage of the data. If the data covers multiple locations then each value corresponds to one such location, describing its coordinates, mid, etc.", + "items": { + "$ref": "ResearchScienceSearchLocation" + }, + "type": "array" + }, + "topSalientTermLabel": { + "description": "Top salient term labels that describe the dataset document body.", + "items": { + "type": "string" + }, + "type": "array" + }, + "url": { + "description": "urls for the dataset, including doi.", + "items": { + "type": "string" + }, + "type": "array" + }, + "variable": { + "description": "Variables that the data in the dataset captures (e.g., pressure, salinity, temperature). For now, these are just strings.", + "items": { + "type": "string" + }, + "type": "array" + }, + "versionClusterInfo": { + "$ref": "ResearchScienceSearchVersionClusterInfo", + "description": "Information on the version cluster that the dataset is a part of. This field is populated during the indexing time; the field is populated only if the dataset is part of a version cluster." + }, + "versionEmbeddingFieldsHash": { + "description": "A hash of the raw metadata fields used by the VersionEmbeddingExtender.", + "format": "uint64", + "type": "string" + }, + "versionEmbeddingVector": { + "description": "An embedding for the dataset to be used by the VersionAggregator.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "ResearchScienceSearchReplica": { + "description": "Stores the information about a dataset replica. Next ID: 5", + "id": "ResearchScienceSearchReplica", + "properties": { + "catalogName": { + "description": "The name of the catalog that the replica comes from.", + "type": "string" + }, + "catalogUrl": { + "description": "The url of the catalog that the replica comes from.", + "type": "string" + }, + "indexInCluster": { + "description": "The index of this replica in a cluster of replicas.", + "format": "int32", + "type": "integer" + }, + "url": { + "description": "Url for the replica.", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchScholarlyArticle": { + "description": "Data and associated metadata for a scholarly pdf article.", + "id": "ResearchScienceSearchScholarlyArticle", + "properties": { + "citation": { + "$ref": "ScienceCitation", + "description": "Proto containing all of the Scholar Metadata for this article." + }, + "figureOrTableImage": { + "description": "contains the image of the figure or table cropped out of the pdf page encoded as a PNG.", + "format": "byte", + "type": "string" + }, + "figureOrTableOcrText": { + "description": "Contains the text (as detected by OCR) contained inside the image of the figure or table.", + "type": "string" + }, + "landingPageUrl": { + "description": "The url of the landing page for the scholarly article.", + "type": "string" + }, + "pageNumber": { + "description": "The page number where the table and figure is located in the original pdf document.", + "format": "int32", + "type": "integer" + }, + "pdfDownloadUrl": { + "description": "The url where the pdf file is located for the scholarly article.", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchSourceUrlDocjoinInfo": { + "description": "The proto containing all the information we extracted from docjoin, for the source_url of the dataset. NEXT TAG: 17", + "id": "ResearchScienceSearchSourceUrlDocjoinInfo", + "properties": { + "dataSource": { + "enum": [ + "UNKNOWN", + "RAFFIA_PROXY_SERVICE", + "SPORE_DUMP" + ], + "enumDescriptions": [ + "", + "Fetched through Raffia proxy service (go/raffia-proxy).", + "Fetched through the data dump by Spore team, aka '/namespace/custom_corpus/prod/clients/tpkit/science_search/export-spore/ttl=3d/...'" + ], + "type": "string" + }, + "displayUrl": { + "description": "The url used to display in the google search results. ", + "type": "string" + }, + "docid": { + "description": "The docid of the document. ", + "format": "uint64", + "type": "string" + }, + "fieldOfStudyEntity": { + "description": "A set of entities from /collection/field_of_studies in knowledge graph schema (http://shortn/_ldBsa14lo8).", + "items": { + "$ref": "ResearchScienceSearchSourceUrlDocjoinInfoWebrefEntityInfo" + }, + "type": "array" + }, + "indexTier": { + "description": "Index tiers (BASE, UNIFIED_ZEPPELIN, etc) that the document belongs to. NOTE: Each document may belong to multiple tiers. NOTE: The original data type is an enum CompositeDoc::SubIndexType. However we don't want to depend on segindexer/compositedoc.proto because the proto is too large. Instead, we use CompositeDoc::SubIndexType_Name( subindexid) to convert into a string representation. To convert string back to CompositeDoc::SubIndexType, use CompositeDoc::SubIndexType_Parse.", + "items": { + "type": "string" + }, + "type": "array" + }, + "languageCode": { + "description": "The language of the document in the string representation of LanguageCode. Converts from Language Enum to LanguageCode through i18n/identifiers/langenclanguagecodeconverter.h Please use i18n/identifiers/languagecodeconverter.h for converting between LanguageCode and string representation.", + "type": "string" + }, + "latestPageUpdateDate": { + "description": "The syntactic date of a dataset document that reflects the publication date of the content.", + "type": "string" + }, + "navboostQuery": { + "description": "A sequence of Navboost queries for the dataset source_url.", + "items": { + "$ref": "ResearchScienceSearchNavboostQueryInfo" + }, + "type": "array" + }, + "pagerank": { + "description": "The page rank of the document. ", + "format": "int32", + "type": "integer" + }, + "petacatInfo": { + "$ref": "FatcatCompactDocClassification", + "description": "Petacat classifications for the web document. Normally the results from calling Petacat come in a PetacatResponse, which is very flexible and extensible. This proto takes most of the flexibility away - only rephil clusters, taxonomic classifications, and binary classifications, with discretized weights." + }, + "salientTerms": { + "$ref": "QualitySalientTermsSalientTermSet", + "description": "A set of salient terms extracted fromthe document. DEPRECATEAD. Moved to DatasetMetadata for performance reasons." + }, + "scholarInfo": { + "$ref": "ScienceIndexSignal", + "description": "Science per-doc data for inclusion in websearch. " + }, + "sporeGraphMid": { + "description": "A set of entities from WebRef annotations that are in SPORE_GRAPH.", + "items": { + "type": "string" + }, + "type": "array" + }, + "title": { + "description": "The title of the document. ", + "type": "string" + }, + "topEntity": { + "description": "A set of top entities from WebrefAnnotation, top is defined by topicality score, see go/topicality-score for detail. DEPRECATED. See label_to_mids_map instead.", + "items": { + "$ref": "RepositoryWebrefWebrefEntity" + }, + "type": "array" + }, + "url": { + "description": "The url of the document. ", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchSourceUrlDocjoinInfoWebrefEntityInfo": { + "description": "The mid and description of a WebRefEntity.", + "id": "ResearchScienceSearchSourceUrlDocjoinInfoWebrefEntityInfo", + "properties": { + "description": { + "description": "The English description of the mid from the KG.", + "type": "string" + }, + "mid": { + "description": "The KG identifier of the WebrefEntity.", + "type": "string" + } + }, + "type": "object" + }, + "ResearchScienceSearchVersionClusterInfo": { + "description": "Stores the information about each cluster of versions. Versions are defined in go/s2-versioning. Next available tag: 4", + "id": "ResearchScienceSearchVersionClusterInfo", + "properties": { + "indexInVersionCluster": { + "description": "Index of this dataset in its cluster of versions.", + "format": "int32", + "type": "integer" + }, + "numVersions": { + "description": "The number of versions in a Version Cluster. This is equivalent to cluster size.", + "format": "int32", + "type": "integer" + }, + "versionClusterId": { + "description": "A fingerprint id of the cluster of versions this dataset belongs to. This is a hash of a dataset_id in the cluster.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "RichsnippetsDataObject": { + "description": "Next ID: 11", + "id": "RichsnippetsDataObject", + "properties": { + "AccessKey": { + "type": "string" + }, + "attribute": { + "items": { + "$ref": "RichsnippetsDataObjectAttribute" + }, + "type": "array" + }, + "source": { + "enum": [ + "PAGEMAP", + "MICROFORMAT", + "RDFA", + "METATAGS", + "SCRAPED", + "MICRODATA", + "AUTO_THUMBNAIL", + "JSON_LD" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "This is gerenated by auto selecting a thumbnail. We put the src of the image in cse_image DataObject type.", + "" + ], + "type": "string" + }, + "type": { + "description": "The object type.", + "type": "string" + } + }, + "type": "object" + }, + "RichsnippetsDataObjectAttribute": { + "description": "Other attributes of the object.", + "id": "RichsnippetsDataObjectAttribute", + "properties": { + "cdata": { + "format": "byte", + "type": "string" + }, + "idata": { + "description": "idata holds integer data under the attribute name, and could be interpreted differently according to the attribute name. Example: stores the ImadeData.docid used to generate thumbnails. idata will not be automatically converted into xml (the default behavior), but the behavior can be overwritten if necessary.", + "format": "uint64", + "type": "string" + }, + "name": { + "type": "string" + }, + "subobject": { + "$ref": "Proto2BridgeMessageSet", + "description": "A data object can have other data objects nested inside it. This is needed to represent Microformats and RDFa which have nestings e.g., a review with a business with an address, or a review with a rating object. See the Webmaster Central 2009/05 blog on \"Introducing Rich Snippets\"." + }, + "tokenize": { + "description": "Whether we should tokenize the value and cdata when generating restricts from this attribute.", + "type": "boolean" + }, + "value": { + "description": "Either of cdata or value should be present.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "RichsnippetsPageMap": { + "id": "RichsnippetsPageMap", + "properties": { + "DataObject": { + "items": { + "$ref": "RichsnippetsDataObject" + }, + "type": "array" + }, + "ignoreDataObject": { + "description": "If ignore_data_object is set to true, pagemap attachment is processed regardless of whether data object is present or not.", + "type": "boolean" + }, + "src": { + "enum": [ + "REGULAR", + "KOREA_RICH" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "templatetype": { + "items": { + "$ref": "RichsnippetsPageMapTemplateType" + }, + "type": "array" + } + }, + "type": "object" + }, + "RichsnippetsPageMapTemplateType": { + "description": "Unused fields", + "id": "RichsnippetsPageMapTemplateType", + "properties": { + "src": { + "type": "string" + } + }, + "type": "object" + }, + "SafesearchVideoClassifierOutput": { + "description": "Flexible multi-vertical classification output. The output for each vertical should be defined as a proto extension to this proto. When defining an extension for a new vertical please follow the format: message NewVertical { extend safesearch.VideoClassifierOutput { optional NewVertical classifier_output_extension = ; } optional safesearch.VideoVerticalOutput vertical_output = 1; } SafeSearch verticals only: Please also update this message with a new extension declaration. For more details on extension declaration please refer to http://go/proto-proposals/extension-declarations. Please refer to http://go/proto2-extensions for details on message extensions. LINT.IfChange next extension id: 5", + "id": "SafesearchVideoClassifierOutput", + "properties": {}, + "type": "object" + }, + "SafesearchVideoContentSignals": { + "description": "SafeSearch video content classification scores are computed based on go/golden7 video features. To access these scores see the library at: google3/quality/safesearch/video/api/video_score_info.h", + "id": "SafesearchVideoContentSignals", + "properties": { + "scores": { + "additionalProperties": { + "format": "float", + "type": "number" + }, + "type": "object" + }, + "versionTag": { + "enum": [ + "UNKNOWN", + "V20220330", + "V20220620" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "videoClassifierOutput": { + "$ref": "SafesearchVideoClassifierOutput", + "description": "Output of all SafeSearch video classifiers in Amarna." + } + }, + "type": "object" + }, + "ScholarCitationPredictionSignal": { + "description": "An input into the citation prediction model.", + "id": "ScholarCitationPredictionSignal", + "properties": { + "metricType": { + "enum": [ + "METRIC_TYPE_NONE", + "METRIC_TYPE_MEAN", + "METRIC_TYPE_MEDIAN", + "METRIC_TYPE_20_80" + ], + "enumDescriptions": [ + "", + "", + "", + "Average of 20th and 80th percentiles." + ], + "type": "string" + }, + "signalType": { + "enum": [ + "SIGNAL_UNKNOWN", + "SIGNAL_NUM_FORWARD_LINKS", + "SIGNAL_ANY_PUBLICATION", + "SIGNAL_PUBORG", + "SIGNAL_AUTHOR_EMAIL_DOMAIN", + "SIGNAL_AUTHOR_DOC_LENGTH", + "SIGNAL_AUTHOR_TITLE_NGRAM", + "SIGNAL_VENUE_DOC_LENGTH", + "SIGNAL_VENUE_TITLE_NGRAM", + "SIGNAL_ANY_PUBLICATION_AUTHOR", + "SIGNAL_ANY_PUBLICATION_DOC_LENGTH", + "SIGNAL_ANY_PUBLICATION_TITLE_NGRAM", + "SIGNAL_PUBORG_DOC_LENGTH", + "SIGNAL_HOST_NAME_TITLE_NGRAM", + "SIGNAL_TOTAL_CITATIONS", + "SIGNAL_LAST_YEAR_CITATIONS", + "SIGNAL_2_YEARS_AGO_CITATIONS", + "SIGNAL_CITATIONS_PER_YEAR", + "SIGNAL_YEARS_WITH_NO_CITATION" + ], + "enumDescriptions": [ + "", + "Single fields.", + "", + "", + "", + "Pairs.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "value": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "ScienceCitation": { + "id": "ScienceCitation", + "properties": { + "AbstractDisplay": { + "enum": [ + "UNKNOWN_ABSTRACT_DISPLAY", + "MAIN_ABSTRACT_DISPLAY", + "GRAPHICAL_ABSTRACT_DISPLAY", + "SUMMARY_ABSTRACT_DISPLAY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "AbstractHtml": { + "description": "Version of abstract field for display. Contains unsanitized XML/HTML.", + "type": "string" + }, + "AbstractHtmlLeftOver": { + "description": "Leftovers from AbstractHtml. These are usually unrecognized xml/html entities or xml/html tags", + "type": "string" + }, + "AbstractLanguage": { + "type": "string" + }, + "AbstractSource": { + "enum": [ + "NO_ABSTRACT", + "METADATA_ABSTRACT", + "LABELED_HTML_ABSTRACT", + "LABELED_PDF_ABSTRACT", + "UNLABELED_HTML_ABSTRACT", + "UNLABELED_PDF_ABSTRACT", + "HTML_TEXT_BLOCK", + "PDF_TEXT_BLOCK" + ], + "enumDescriptions": [ + "", + "xml or html metatags", + "", + "", + "based on introduction/keywords/other mark", + "", + "first long block of text", + "" + ], + "type": "string" + }, + "AbstractText": { + "type": "string" + }, + "AlternateVersionID": { + "description": "Fingerprint of the URL after applying crawl and aggregate rewrites. Different citations with the same AlternateVersionID must have the same VersionID, but not necessarily vice versa. Omitted when identical to the VersionID.", + "format": "uint64", + "type": "string" + }, + "Anchors": { + "description": "All the anchor text (before, after, formal, etc) for this citation in the referring page.", + "items": { + "$ref": "ScienceCitationAnchor" + }, + "type": "array" + }, + "ArxivSection": { + "description": "e.g. hep-ph", + "type": "string" + }, + "AuthorListHasEtAl": { + "description": "whether this citation had an \"et al\" in the author list", + "type": "boolean" + }, + "AuthorMetatagLeftOver": { + "type": "string" + }, + "BaseGlobalID": { + "description": "Global document identifier - only available when building increments over a known base index. This id is from the base index.", + "format": "uint64", + "type": "string" + }, + "BaseLocalID": { + "description": "Set when building an incremental index. Whereas BaseGlobalID is the ID of the corresponding base cluster, the local ID is the ID of an individual citation within that base cluster that corresponds to this reparse.", + "format": "uint64", + "type": "string" + }, + "BorrowedAuthors": { + "description": "one bit per author", + "format": "int32", + "type": "integer" + }, + "BorrowedFields": { + "description": "OR of FieldType", + "format": "int32", + "type": "integer" + }, + "Chapter": { + "type": "string" + }, + "CitationSource": { + "description": "citation src: dblp/crossref/paper etc", + "format": "int32", + "type": "integer" + }, + "CitationSourceUrl": { + "description": "url where record came from", + "type": "string" + }, + "CitationSrc": { + "description": "DEPRECATED: use CitationSource", + "type": "string" + }, + "ClusterDiscoveryDate": { + "description": "Used for logging, recommendations, and sort-by-date. Contains the earliest discovery date of the cluster, adjusted for earlier publication dates. Stored in Universal time scale (100 ns ticks since 0001 AD) because Unix timestamp would lead to negative dates for pre-1970 docs.", + "format": "int64", + "type": "string" + }, + "ConferenceId": { + "description": "Identifier for conference series - issn-lite", + "type": "string" + }, + "ConferenceNumber": { + "description": "27 in the \"27th conference on magical realism\"", + "format": "int32", + "type": "integer" + }, + "CrawledDocid": { + "description": "If a citation is merged from a crawled version and a metadata version, keep the normal docid fp of the crawled version for clustering FP of normal docid of crawl version", + "format": "uint64", + "type": "string" + }, + "DEPRECATEDMetadataSourceFile": { + "type": "string" + }, + "DEPRECATEDPublisherDisplayName": { + "description": "these fields moved to DownloadURL where they belong", + "type": "string" + }, + "DOI": { + "description": "Digital Object Identifier", + "type": "string" + }, + "DblpId": { + "type": "string" + }, + "DocumentID": { + "description": "Local document identifier - url fingerprint if we know the url, or fingerprint of all fields if we don't. Different urls have different local docids.", + "format": "uint64", + "type": "string" + }, + "DspaceID": { + "description": "Dspace uses handle.net handles", + "type": "string" + }, + "Edition": { + "type": "string" + }, + "Editor": { + "items": { + "type": "string" + }, + "type": "array" + }, + "FileCreationDay": { + "format": "int32", + "type": "integer" + }, + "FileCreationMonth": { + "description": "zero-indexed field", + "format": "int32", + "type": "integer" + }, + "FileCreationYear": { + "description": "date of creation of the pdf/doc", + "format": "int32", + "type": "integer" + }, + "ISBN": { + "type": "string" + }, + "ISBNVariant": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ISSN": { + "type": "string" + }, + "ISSNVariant": { + "items": { + "type": "string" + }, + "type": "array" + }, + "IncrementalExpected": { + "description": "Is this article expected to have been indexed in the incremental?", + "type": "boolean" + }, + "JOI": { + "type": "string" + }, + "Keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "LCCN": { + "description": "library of congress call number", + "type": "string" + }, + "Language": { + "type": "string" + }, + "LegalCitation": { + "$ref": "LegalCitation", + "description": "The ScienceCitation is how metadata passes through the scholar system. For legal, we use the normal ScienceCitation for the metadata/citation of legal journals. For court/government documents (like opinions or statues), we wrap it in the following embedded message" + }, + "LevelOfDiscussion": { + "description": "If this is a target reference, the level of discussion of this reference.", + "format": "int32", + "type": "integer" + }, + "Note": { + "description": "random string data - unparsed", + "type": "string" + }, + "NumBackwardLinks": { + "description": "for display in gws", + "format": "int32", + "type": "integer" + }, + "NumBackwardLinksFromLegal": { + "description": "hack for legal rollout", + "format": "int32", + "type": "integer" + }, + "NumBackwardLinksInWoS": { + "description": "numcited in WoS", + "format": "int32", + "type": "integer" + }, + "NumForwardLinks": { + "description": "for display in gws", + "format": "int32", + "type": "integer" + }, + "NumGoodEmbeddedRefs": { + "description": "good embedded refs", + "format": "int32", + "type": "integer" + }, + "NumHostedPages": { + "description": "If set, then we host this many pages of this citation's content. Note that this field may be set to 0, in which case we should be hosting this content but have failed. DEPRECATED, moved to DownloadURL", + "format": "int32", + "type": "integer" + }, + "NumKeyQuotes": { + "description": "for display in gws", + "format": "int32", + "type": "integer" + }, + "NumRelated": { + "description": "for display in gws", + "format": "int32", + "type": "integer" + }, + "NumRelated2": { + "description": "for experiments", + "format": "int32", + "type": "integer" + }, + "NumRelated3": { + "description": "for experiments", + "format": "int32", + "type": "integer" + }, + "NumSectionRefs": { + "description": "refs in marked section", + "format": "int32", + "type": "integer" + }, + "NumVersions": { + "description": "for display in gws", + "format": "int32", + "type": "integer" + }, + "Number": { + "description": "can be 1-3", + "type": "string" + }, + "OnlineDay": { + "format": "int32", + "type": "integer" + }, + "OnlineMonth": { + "description": "OnlineMonth is a zero-indexed field (0 is January).", + "format": "int32", + "type": "integer" + }, + "OnlineYear": { + "format": "int32", + "type": "integer" + }, + "OtherID": { + "description": "eg ERIC doc number or TR number", + "type": "string" + }, + "PMCID": { + "type": "string" + }, + "PMID": { + "description": "Pubmed ID", + "type": "string" + }, + "Pages": { + "description": "Using string to handle all kinds of page specifications. Internal structure is not really needed.", + "type": "string" + }, + "ParseSource": { + "format": "int32", + "type": "integer" + }, + "PatentApplicationNumber": { + "description": "Note that an issued patent has a PatentNumber and can also have a PatentApplicationNumber, whereas a patent application has a PatentApplicationNumber and can also have a PatentPublicationNumber.", + "type": "string" + }, + "PatentClassification": { + "description": "patent classification e.g., \"B24B 3100\"", + "items": { + "type": "string" + }, + "type": "array" + }, + "PatentCountry": { + "description": "2-letter country code where patent was issued, see ocean/metadata/patent_record.proto::Patent_Record::country_code for EPO one patent pertains to a list of countries.", + "items": { + "type": "string" + }, + "type": "array" + }, + "PatentNumber": { + "description": "number according to USPTO/EPO/JPO scheme.", + "type": "string" + }, + "PatentOffice": { + "description": "one of the above", + "format": "int32", + "type": "integer" + }, + "PatentPublicationNumber": { + "type": "string" + }, + "PublicationDay": { + "description": "for patents, publicationD/M/Y is the date of issue, not application", + "format": "int32", + "type": "integer" + }, + "PublicationMonth": { + "description": "month from bibtex PublicationMonth is a zero-indexed field (0 is January).", + "format": "int32", + "type": "integer" + }, + "PublicationVenue": { + "description": "where published - subsumes booktitle, howpublished and journal from bibtex", + "type": "string" + }, + "PublicationVenueVariant": { + "items": { + "type": "string" + }, + "type": "array" + }, + "PublicationYear": { + "description": "year from bibtext full year", + "format": "int32", + "type": "integer" + }, + "PublisherAddress": { + "description": "address from bibtex", + "type": "string" + }, + "PublisherId": { + "type": "string" + }, + "PublisherOrg": { + "description": "subsumes organization, school and institution from bibtex", + "type": "string" + }, + "PubvenueID": { + "description": "local journal number", + "type": "string" + }, + "ReviewTypeReason": { + "description": "bitmap of ReviewArticleTypeReasons", + "format": "uint32", + "type": "integer" + }, + "SICI": { + "type": "string" + }, + "Series": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "TitleHtml": { + "description": "Version of title for display. Contains unsanitized HTML/XML.", + "type": "string" + }, + "TitleHtmlLeftOver": { + "description": "Leftovers from TitleHtml. These are usually unrecognized xml/html entities or xml/html tags", + "type": "string" + }, + "TranslatedAuthorListHasEtAl": { + "description": "etal marker for the translated author list - just in case", + "type": "boolean" + }, + "Type": { + "description": "ArticleType", + "format": "int32", + "type": "integer" + }, + "UnmatchedEmailAddr": { + "description": "Email addresses found in the document that we weren't able to match", + "items": { + "type": "string" + }, + "type": "array" + }, + "UnmatchedInstitution": { + "description": "Author affiliations found in the document that we weren't able to match up to specific authors.", + "items": { + "type": "string" + }, + "type": "array" + }, + "VersionID": { + "description": "Document version identifier - fingerprint of an id computed from the url, or of bibliographic data from a publisher. Different urls for the same article from the same source have the same version id (e.g., abstract, pdf version, and html version).", + "format": "uint64", + "type": "string" + }, + "Volume": { + "format": "int32", + "type": "integer" + }, + "WOSID": { + "description": "Web of Science ID", + "type": "string" + }, + "WorldViewable": { + "description": "Is this version of the article world viewable?", + "type": "boolean" + }, + "accessurl": { + "items": { + "$ref": "ScienceCitationAccessURL" + }, + "type": "array" + }, + "alternateabstract": { + "items": { + "$ref": "ScienceCitationAlternateAbstract" + }, + "type": "array" + }, + "alternatetitle": { + "items": { + "$ref": "ScienceCitationAlternateTitle" + }, + "type": "array" + }, + "author": { + "items": { + "$ref": "ScienceCitationAuthor" + }, + "type": "array" + }, + "category": { + "items": { + "$ref": "ScienceCitationCategory" + }, + "type": "array" + }, + "downloadurl": { + "items": { + "$ref": "ScienceCitationDownloadURL" + }, + "type": "array" + }, + "funding": { + "items": { + "$ref": "ScienceCitationFunding" + }, + "type": "array" + }, + "referencediscussion": { + "items": { + "$ref": "ScienceCitationReferenceDiscussion" + }, + "type": "array" + }, + "subject": { + "items": { + "$ref": "ScienceCitationSubject" + }, + "type": "array" + }, + "translatedauthor": { + "items": { + "$ref": "ScienceCitationTranslatedAuthor" + }, + "type": "array" + }, + "unioncatalog": { + "items": { + "$ref": "ScienceCitationUnionCatalog" + }, + "type": "array" + } + }, + "type": "object" + }, + "ScienceCitationAccessURL": { + "description": "User-defined URL and its last access data for citation manager.", + "id": "ScienceCitationAccessURL", + "properties": { + "AccessDay": { + "format": "int32", + "type": "integer" + }, + "AccessMonth": { + "description": "AccessMonth is a zero-indexed field (0 is January).", + "format": "int32", + "type": "integer" + }, + "AccessYear": { + "format": "int32", + "type": "integer" + }, + "UrlStr": { + "type": "string" + } + }, + "type": "object" + }, + "ScienceCitationAlternateAbstract": { + "description": "There are templated functions that fill the abstract fields designed to take either ScienceCitation or ScienceCitation::AlternateAbstract, so these field names must match those used for the primary abstract.", + "id": "ScienceCitationAlternateAbstract", + "properties": { + "AbstractDisplay": { + "enum": [ + "UNKNOWN_ABSTRACT_DISPLAY", + "MAIN_ABSTRACT_DISPLAY", + "GRAPHICAL_ABSTRACT_DISPLAY", + "SUMMARY_ABSTRACT_DISPLAY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "AbstractHtml": { + "description": "Version of abstract field for display. This may contain XML/HTML tags.", + "type": "string" + }, + "AbstractHtmlLeftOver": { + "description": "Leftovers from AbstractHtml. These are usually unrecognized xml/html entities or xml/html tags", + "type": "string" + }, + "AbstractLanguage": { + "type": "string" + }, + "AbstractText": { + "type": "string" + } + }, + "type": "object" + }, + "ScienceCitationAlternateTitle": { + "description": "alternate titles (including language where available)", + "id": "ScienceCitationAlternateTitle", + "properties": { + "Language": { + "type": "string" + }, + "Title": { + "type": "string" + }, + "TitleHtml": { + "description": "Version of title for display. Contains unsanitized HTML/XML.", + "type": "string" + }, + "TitleHtmlLeftOver": { + "description": "Leftovers from TitleHtml. These are usually unrecognized xml/html entities or xml/html tags", + "type": "string" + } + }, + "type": "object" + }, + "ScienceCitationAnchor": { + "description": "The anchor class holds content relevant to a citation, for example, the text before or after the citation that explains what the citation is about.", + "id": "ScienceCitationAnchor", + "properties": { + "DEPRECATEDSrcFP": { + "description": "Fingerprint of the referral document. The fingerprint should resist to small variance in the document content. DO NOT USE IT!", + "format": "uint64", + "type": "string" + }, + "count": { + "description": "Number of times this anchor text appears, only consider the text itself", + "format": "int32", + "type": "integer" + }, + "face": { + "description": "font face bitmask: kBold, kItalic, etc.", + "format": "int32", + "type": "integer" + }, + "size": { + "description": "font size, in px", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "Space-delimited anchor words. Text that needs segmentation (like CJK or Thai) is unsegmented. Generated by ScienceParseUtils::AppendTokenSeqToString()", + "type": "string" + }, + "type": { + "description": "one of the \"Type\" value defined below.", + "format": "int32", + "type": "integer" + }, + "weight": { + "description": "weight of the anchor by looking where we get this anchor text. It can be PR, court level, year, or the combination of differerent aspects. weights are 1 - 128 defined as \"Weights\"", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ScienceCitationAuthor": { + "description": "author names should be in the order specified in the paper", + "id": "ScienceCitationAuthor", + "properties": { + "Comment": { + "type": "string" + }, + "Department": { + "description": "not in bibtex - from paper", + "type": "string" + }, + "Email": { + "type": "string" + }, + "GuessOrderType": { + "description": "Tracks the GuessNameOrder case used to parse this author name, defaults to 0 simply means that GuessNameOrder wasn't used.", + "format": "int32", + "type": "integer" + }, + "ID": { + "description": "Author ID. Formatted as idtype:id", + "items": { + "type": "string" + }, + "type": "array" + }, + "Institution": { + "description": "not in bibtex - from paper", + "type": "string" + }, + "IsCJKForeignName": { + "type": "boolean" + }, + "IsCorrespondingAuthor": { + "type": "boolean" + }, + "LastName": { + "type": "string" + }, + "OtherNames": { + "type": "string" + }, + "SourceText": { + "type": "string" + }, + "Type": { + "description": "Type is one of the contributors types. Writers are the default.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ScienceCitationCategory": { + "id": "ScienceCitationCategory", + "properties": { + "Name": { + "type": "string" + }, + "Type": { + "description": "ontology/set of categories for the category", + "type": "string" + } + }, + "type": "object" + }, + "ScienceCitationDownloadURL": { + "description": "Download URL mentioned in citation; we keep up to K of them LINT.IfChange", + "id": "ScienceCitationDownloadURL", + "properties": { + "BrokenLandingPage": { + "description": "set if we know the landing page is broken", + "type": "boolean" + }, + "CanonicalUrlfp": { + "format": "uint64", + "type": "string" + }, + "ContentChecksum": { + "description": "checksum of the page", + "format": "uint64", + "type": "string" + }, + "ContentType": { + "description": "makes gws display nicer :)", + "format": "int32", + "type": "integer" + }, + "CrawlTimestamp": { + "description": "seconds since the epoch", + "format": "int64", + "type": "string" + }, + "DMCANotice": { + "description": "metatag: URL; result was taken down", + "type": "string" + }, + "DisplayOrg": { + "description": "publisher display name", + "type": "string" + }, + "DisplayPriority": { + "description": "display preference score", + "format": "int32", + "type": "integer" + }, + "DownloadDay": { + "format": "int32", + "type": "integer" + }, + "DownloadMonth": { + "description": "DownloadMonth is a zero-indexed field (0 is January).", + "format": "int32", + "type": "integer" + }, + "DownloadYear": { + "description": "no abbrv", + "format": "int32", + "type": "integer" + }, + "ExcerptContent": { + "description": "first few lines of abstract'ish excerpt", + "type": "string" + }, + "ExcerptDebugLabel": { + "description": "label for excerpt (abstract, summary, ..)", + "type": "string" + }, + "FirstDiscovered": { + "description": "seconds since the epoch", + "format": "int64", + "type": "string" + }, + "HostedNumPages": { + "description": "explicit zero means hosting failed", + "format": "int32", + "type": "integer" + }, + "HostedStartPage": { + "format": "int32", + "type": "integer" + }, + "HtmlTitle": { + "description": "html title of the page", + "type": "string" + }, + "InPrevIndex": { + "description": "is url included in a previous index", + "type": "boolean" + }, + "IndexPriority": { + "description": "indexing preference score", + "format": "int32", + "type": "integer" + }, + "LegalMustInclude": { + "description": "e.g., in law_articles.pat", + "type": "boolean" + }, + "LikelyAheadPrint": { + "description": "Whether this is likely the URL for an ahead print, at indexing time.", + "type": "boolean" + }, + "LikelyDifferentMetricsVenue": { + "description": "In the context of a given venue in Scholar Metrics, whether this URL likely does not link to the current venue.", + "type": "boolean" + }, + "LikelyLegalJournal": { + "description": "e.g., in legal_journals.pat", + "type": "boolean" + }, + "LikelyNoCache": { + "description": "badurls_nocache at indexing time", + "type": "boolean" + }, + "LikelyNoIndex": { + "description": "badurls_noreturngws at indexing time", + "type": "boolean" + }, + "LikelyWorldViewable": { + "description": "Likely to be free-to-read for everyone, after accounting for library links etc.", + "type": "boolean" + }, + "LongChunkCount": { + "description": "number of long paragraphs", + "format": "int32", + "type": "integer" + }, + "MaybeNoIndexReparse": { + "description": "Incremental only: mark as NoIndexed if this is a reparse and the base version is NoIndexed.", + "type": "boolean" + }, + "MetadataUrl": { + "description": "url of publisher metadata file", + "type": "string" + }, + "MustInclude": { + "description": "e.g., in science_articles.pat", + "type": "boolean" + }, + "NoArchive": { + "description": "metatag: don't show cached version", + "type": "boolean" + }, + "NoIndex": { + "description": "metatag: don't display this url", + "type": "boolean" + }, + "NoSnippet": { + "description": "metatag: don't show snippet", + "type": "boolean" + }, + "OceanView": { + "$ref": "ScienceOceanView", + "description": "describes whether url is viewable in ocean" + }, + "OutLinkCount": { + "description": "number of external URLs (in PDF).", + "format": "int32", + "type": "integer" + }, + "PageCount": { + "description": "Number of pages in the pdf2html conversion output. Only set for PDFs. For a partitioned PDF, this is the page count of the entire volume.", + "format": "int32", + "type": "integer" + }, + "ReferencesInPrevIndex": { + "description": "were references parsed in a previous index", + "type": "boolean" + }, + "Type": { + "description": "ArticleType for this particular url", + "format": "int32", + "type": "integer" + }, + "UrlAfterRedirects": { + "type": "string" + }, + "UrlStr": { + "type": "string" + }, + "WordCount": { + "description": "number of words in content/body", + "format": "int32", + "type": "integer" + }, + "WorldViewable": { + "description": "metatag: is viewable by world", + "type": "boolean" + } + }, + "type": "object" + }, + "ScienceCitationFunding": { + "id": "ScienceCitationFunding", + "properties": { + "Agency": { + "description": "values are from FundingAgency enum", + "format": "int32", + "type": "integer" + }, + "AgencyName": { + "description": "Text name of the agency. For analysis. Plus for agencies that don't have an enum.", + "type": "string" + }, + "DebugFundingTextBlock": { + "description": "Text block from which the funding entry was extracted. Intended to be used for offline analysis.", + "type": "string" + }, + "GrantNumber": { + "type": "string" + }, + "Recipient": { + "description": "funding recipient", + "type": "string" + }, + "SourceText": { + "description": "Original text for the funding acknowledgement", + "type": "string" + }, + "UrlBasedFundingSource": { + "description": "Whether this funding info was added because this article was at the exclusive repository for this agency.", + "type": "boolean" + } + }, + "type": "object" + }, + "ScienceCitationReferenceDiscussion": { + "description": "If this is a source document, the levels of discussion of the references this document cites.", + "id": "ScienceCitationReferenceDiscussion", + "properties": { + "Level": { + "format": "int32", + "type": "integer" + }, + "TargetID": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "ScienceCitationSubject": { + "description": "subject classification", + "id": "ScienceCitationSubject", + "properties": { + "Name": { + "description": "e.g., \"eng\"", + "type": "string" + }, + "Probability": { + "description": "[0,1]", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "ScienceCitationTranslatedAuthor": { + "description": "translated author names. we usually get these for non-english papers which provide english title/author/abstract info", + "id": "ScienceCitationTranslatedAuthor", + "properties": { + "Department": { + "type": "string" + }, + "Email": { + "type": "string" + }, + "GuessOrderType": { + "format": "int32", + "type": "integer" + }, + "Institution": { + "type": "string" + }, + "Language": { + "type": "string" + }, + "LastName": { + "type": "string" + }, + "OtherNames": { + "type": "string" + }, + "SourceText": { + "type": "string" + }, + "Type": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ScienceCitationUnionCatalog": { + "description": "Create UnionCatalog as a group if we want to later add book level informations.", + "id": "ScienceCitationUnionCatalog", + "properties": { + "CanonicalUrlfp": { + "format": "uint64", + "type": "string" + }, + "MetadataUrl": { + "description": "url of catalog metadata file", + "type": "string" + }, + "NumLibraries": { + "description": "Information about the number of libraries the citation appears. It should be useful for ranking.", + "format": "int32", + "type": "integer" + }, + "Subject": { + "description": "Categories classification of the citation", + "items": { + "type": "string" + }, + "type": "array" + }, + "Url": { + "description": "UnionCatalog url to display to users", + "type": "string" + } + }, + "type": "object" + }, + "ScienceIndexSignal": { + "id": "ScienceIndexSignal", + "properties": { + "HoldingsId": { + "description": "Subscriber Access feature: List of Holdings IDs associated with this document. Should be present only for the documents with 'VisiblePrefixTerms' being set.", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + }, + "HtmlTitleFp": { + "description": "Fingerprint of the html title of the page. This is useful for checking if we have the same version of the page as websearch.", + "format": "int64", + "type": "string" + }, + "IndexSelectionScore": { + "description": "Index selection score for websearch, bigger is better: (0.5,1.0] - prefer selection into the base index, (0.0,0.5] - prefer selection into the supplemental index.", + "format": "float", + "type": "number" + }, + "NumBackwardLinks": { + "description": "Summary statistics.", + "format": "int32", + "type": "integer" + }, + "NumRelated": { + "format": "int32", + "type": "integer" + }, + "NumVersions": { + "format": "int32", + "type": "integer" + }, + "PublicationDay": { + "format": "int32", + "type": "integer" + }, + "PublicationMonth": { + "format": "int32", + "type": "integer" + }, + "PublicationYear": { + "description": "Publication date.", + "format": "int32", + "type": "integer" + }, + "RemoveLink": { + "description": "Remove this URL from the index - error page, broken landing page, etc. DEPRECATED, was never used or even filled correctly.", + "type": "boolean" + }, + "ScholarId": { + "description": "For links from websearch to scholar.", + "format": "uint64", + "type": "string" + }, + "Title": { + "description": "Title of the article. Its only filled in when the html title of the page isn't good.", + "type": "string" + }, + "VisiblePrefixTerms": { + "description": "Length of document prefix that most users are likely to see. Only filled in when we index subscription fulltext but most users see abstracts. This is a conservative guesstimate - e.g., ACM shows fulltext to university/company subscribers (including Google employees) based on user's IP address, but we don't know subscriber IPs, so ACM's PDF pages would have ~500 in this field (estimated length of abstract).", + "format": "int32", + "type": "integer" + }, + "author": { + "items": { + "$ref": "ScienceIndexSignalAuthor" + }, + "type": "array" + } + }, + "type": "object" + }, + "ScienceIndexSignalAuthor": { + "id": "ScienceIndexSignalAuthor", + "properties": { + "LastName": { + "type": "string" + }, + "OtherNames": { + "type": "string" + } + }, + "type": "object" + }, + "ScienceOceanView": { + "description": "Describes the viewability of ocean content.", + "id": "ScienceOceanView", + "properties": { + "countryview": { + "items": { + "$ref": "ScienceOceanViewCountryView" + }, + "type": "array" + } + }, + "type": "object" + }, + "ScienceOceanViewCountryView": { + "id": "ScienceOceanViewCountryView", + "properties": { + "CountryCode": { + "description": "No CountryCode means default viewability. two letter code", + "type": "string" + }, + "ViewType": { + "description": "enum in ocean::LocaleViewability::ViewType", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SciencePerDocData": { + "description": "Next tag: 43", + "id": "SciencePerDocData", + "properties": { + "AbstractEndPosition": { + "description": "The first hit position after the end of the abstract. We index the abstract immediately after the body, so all hits between BodyEndPosition and AbstractEndPosition are from the abstract.", + "format": "int32", + "type": "integer" + }, + "BodyEndPosition": { + "description": "The first hit position past the last body hit.", + "format": "int32", + "type": "integer" + }, + "CitationPredictionSignal": { + "description": "Input features used to compute PredictedCitations.", + "items": { + "$ref": "ScholarCitationPredictionSignal" + }, + "type": "array" + }, + "CourtLevel": { + "description": "Used for sorting legal documents by court; e.g. Supreme Court \u003e Appeals Court \u003e Trial Court", + "format": "int32", + "type": "integer" + }, + "DEPRECATEDCrawlTime": { + "format": "int64", + "type": "string" + }, + "DiscoveryAgeInDays": { + "description": "The age in days since discovery date at the time of indexing. Used to compute PredictedCitations.", + "format": "int32", + "type": "integer" + }, + "DiscoveryTimestamp": { + "description": "Used for sorting articles by date, and as an input for recent-query ranking. Stored in Universal time scale (100 ns ticks since 0001 AD).", + "format": "int64", + "type": "string" + }, + "IsCitationOnly": { + "description": "citation-only marker - for use in scorer", + "type": "boolean" + }, + "NonScholarlinessPenalty": { + "description": "Scoring penalty for non-scholarly articles. In the range [0, 1], with 0 being no penalty and 1 being the full penalty.", + "format": "float", + "type": "number" + }, + "NumBackwardLinks": { + "description": "Summary statistics, for display in the FE.", + "format": "int32", + "type": "integer" + }, + "NumRelated": { + "format": "int32", + "type": "integer" + }, + "NumTitleWords": { + "description": "Used for exact title boost in Scholar, as of 1/7/2008.", + "format": "int32", + "type": "integer" + }, + "NumVersions": { + "format": "int32", + "type": "integer" + }, + "OffDomAnchors": { + "format": "int32", + "type": "integer" + }, + "OnSiteAnchors": { + "format": "int32", + "type": "integer" + }, + "PredictedCitations": { + "description": "The predicted new citations for this document once it reaches 5 years after its discovery date. Not set for: - Documents 5 years or older - Citation only documents - Patents and legal documents", + "format": "float", + "type": "number" + }, + "PredictedCitationsNext5Years": { + "description": "The predicted new citations for this document over the next 5 years. This differs from the PredictedCitations field in that this is set for documents of all ages, whereas PredictedCitations is only set for new documents. This is also a prediction over a fixed time interval, whereas the time interval for PredictedCitations depends on the document's age.", + "format": "float", + "type": "number" + }, + "PublicationDay": { + "format": "int32", + "type": "integer" + }, + "PublicationMonth": { + "format": "int32", + "type": "integer" + }, + "PublicationYear": { + "description": "Publication date. Used both for ranking of recent articles and for display in the FE.", + "format": "int32", + "type": "integer" + }, + "ScholarId": { + "description": "For links from websearch to scholar.", + "format": "uint64", + "type": "string" + }, + "Subject": { + "description": "DEPRECATED e.g., fp(\"med\")", + "format": "uint32", + "type": "integer" + }, + "TitleNgrams": { + "description": "A string encoding the uni-, bi-, and trigram weights in the title. This is encoded and decoded by science_search/util/title_ngrams.h.", + "format": "byte", + "type": "string" + }, + "TotalAnchors": { + "description": "Anchor count info for scorer", + "format": "int32", + "type": "integer" + }, + "Type": { + "description": "The type of the article - paper, review, patent, etc.", + "enum": [ + "FIRST_ARTICLE_TYPE", + "PAPER", + "BOOK", + "BOOKLET", + "CONFERENCE", + "INBOOK", + "INCOLLECTION", + "MANUAL", + "MS_THESIS", + "MISC", + "PHD_THESIS", + "TECHREPORT", + "UNPUBLISHED", + "PATENT", + "WEB_SITE", + "BS_THESIS", + "REVIEW_ARTICLE", + "JOURNAL", + "LEGAL_DOC", + "BIBLIOGRAPHY", + "BOOK_REVIEW", + "RETRACTION", + "EDITORIAL", + "ART_PERF_REVIEW", + "POETRY", + "FICTION", + "NEWS", + "BIOGRAPHICAL", + "LEGISLATION", + "REFERENCE_MATERIAL", + "STANDARD", + "META_ANALYSIS", + "RANDOMIZED_TRIAL", + "NUM_ARTICLE_TYPES" + ], + "enumDescriptions": [ + "", + "", + "", + "unused; ", + "synonym for PAPER; ", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "entire journal, not an article", + "", + "", + "", + "For tracking", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "author": { + "items": { + "$ref": "SciencePerDocDataAuthor" + }, + "type": "array" + }, + "referencediscussion": { + "items": { + "$ref": "SciencePerDocDataReferenceDiscussion" + }, + "type": "array" + }, + "section": { + "description": "Section markers, sorted by begin_position, no overlapping.", + "items": { + "$ref": "SciencePerDocDataSection" + }, + "type": "array" + }, + "signal": { + "items": { + "$ref": "SciencePerDocDataSignal" + }, + "type": "array" + } + }, + "type": "object" + }, + "SciencePerDocDataAuthor": { + "description": "Used for exact author boost and for display in the FE.", + "id": "SciencePerDocDataAuthor", + "properties": { + "IsCJK": { + "type": "boolean" + }, + "LastName": { + "type": "string" + }, + "OtherNames": { + "type": "string" + } + }, + "type": "object" + }, + "SciencePerDocDataReferenceDiscussion": { + "id": "SciencePerDocDataReferenceDiscussion", + "properties": { + "Level": { + "format": "int32", + "type": "integer" + }, + "TargetID": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "SciencePerDocDataSection": { + "id": "SciencePerDocDataSection", + "properties": { + "beginPosition": { + "description": "The first hit position at the start of the section.", + "format": "int32", + "type": "integer" + }, + "numPositions": { + "description": "Delta in hit position from the start of the section to the end.", + "format": "int32", + "type": "integer" + }, + "type": { + "enum": [ + "UNKNOWN", + "REFERENCE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SciencePerDocDataSignal": { + "id": "SciencePerDocDataSignal", + "properties": { + "avgCitations": { + "description": "Values for different metrics", + "format": "float", + "type": "number" + }, + "count": { + "description": "Number of papers in the bucket for this paper/signal combination 16-bit value", + "format": "int32", + "type": "integer" + }, + "geThres1Count": { + "description": "Count of papers with 10 or more citations (ge is \u003e=) 16-bit value", + "format": "int32", + "type": "integer" + }, + "geThres2Count": { + "description": "Count of papers with 50 or more citations 16-bit value", + "format": "int32", + "type": "integer" + }, + "index": { + "description": "Signal type dependent (for Journals refers to the year) index must refers to years ago not absolute year. 8-bit value", + "format": "int32", + "type": "integer" + }, + "medianCitations": { + "format": "float", + "type": "number" + }, + "type": { + "format": "int32", + "type": "integer" + }, + "weight": { + "description": "Authors own a part of a paper value. This is the cumulative weight. If all papers falling into this bucket are single author papers, then weight will be equal to 1.0. Otherwise it will be smaller.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "SearchPolicyRankableSensitivity": { + "description": "Encapsulates sensitivity mode, source, and other metadata, used for ranking when there are multiple sensitivies set by default sources (eg, followon, query understanding, attentional entity).", + "id": "SearchPolicyRankableSensitivity", + "properties": { + "accountProvenance": { + "description": "Propagated from knowledge.answers.sensitivity.Sensitivity account_provenance. Any ambiguity between the data here and dasher_user should be resolved by the conversion to pToken in http://source/search?q=symbol:CreatePTokenFromSensitivity", + "items": { + "$ref": "QualityQrewriteAccountProvenance" + }, + "type": "array" + }, + "attentionalEntity": { + "$ref": "SearchPolicyRankableSensitivityAttentionalEntity" + }, + "dasherUser": { + "description": "True iff the query is from a Dasher user.", + "type": "boolean" + }, + "followon": { + "$ref": "SearchPolicyRankableSensitivityFollowOn" + }, + "prefilter": { + "$ref": "SearchPolicyRankableSensitivityPrefilter" + }, + "qu": { + "$ref": "SearchPolicyRankableSensitivityQueryUnderstanding" + }, + "sensitivityMode": { + "description": "Key of a sensitivity.", + "enum": [ + "UNKNOWN", + "INIT", + "NONE", + "SEND_EMAIL", + "SEARCH_EMAIL", + "SENSITIVE_AOG_CONVERSATION", + "SMART_HOME_PROVIDE_PIN", + "SEARCH_DRIVE", + "READ_MESSAGE", + "SEND_MESSAGE", + "BROADCAST", + "CALL", + "NOTES_AND_LISTS", + "DEVICE_ACTIONS_AUTH", + "INTERPRETER_MODE", + "VOICE_MATCH_ENROLLMENT", + "REMINDERS", + "DESIGNED_FOR_FAMILY", + "CALENDAR", + "HEALTH_AND_FITNESS", + "MEDIA_PROVIDER_SPOTIFY", + "APP_ACTION_HEALTH", + "DG_HOME_FEED", + "SEARCH_GSUITE", + "ASSISTANT_SURVEY", + "ASSISTANT_MEMORY", + "DEPRECATED_SENSITIVE_HEALTH_CONVERSATION", + "DEPRECATED_READ_CALENDAR", + "DEPRECATED_WRITE_CALENDAR" + ], + "enumDescriptions": [ + "Should only happen when the variable is uninitialized.", + "Indicates that there is no sensitivity mode yet.", + "Indicates that no sensitivity mode is active.", + "Indicates that we are in send email sensitivity mode.", + "Indicates that we are in search email sensitivity mode.", + "Indicates that we are in AoG conversation with sensitivity mode active. go/ael-limited-logging", + "Home Automation pin/paraphrase anwsering query.", + "The sensitivity mode for searching Google Drive documents.", + "Indicates that we are in read message sensitivity mode.", + "Indicates that we are in send message sensitivity mode.", + "Indicates that we are in broadcast sensitivity mode.", + "Indicates that we are in call sensitivity mode.", + "Indicates that we are in Notes and Lists sensitivity mode.", + "Indicates that we are in device actions auth sensitivity mode.", + "Indicates that we are in Interpreter Mode sensitivity mode.", + "Indicates the we are in voice match enrollment sensitivity mode.", + "Indicates that we are in Reminders sensitivity mode.", + "Indicates that we are in designed for family sensistivity mode (i.e. the query relates to kids content).", + "Indicates that we are in calendar sensitivity mode (covers read \u0026 write).", + "Indicates that we are in health and fitness sensitivity mode.", + "Indicates that we are in 3P media provider Spotify sensitivity mode. This mode is set when a play-media query is intended to be fulfilled by Spotify app when one of the following conditions is met: 1) The query explicitly asks to play on Spotify app. 2) Spotify is the preferred provider for the user. 3) The query requests a Spotify exclusive content. Please see Policy requirements (go/sp-policy-spotify) and design doc (go/spotify-podcast-limited-logging) for reference.", + "Indicates that we are in app action health sensitivity mode.", + "Indicates that we are in Dragonglass home feed sensitivity mode.", + "Indicates that we are in searching G Suite entities mode. This mode covers Drive documents search, email search, and calendar search.", + "Indicates that we are in Assistant CSAT survey sensitivity mode.", + "Indicates that we are in Assistant Memory sensitivity mode. Contact: assistant-memory@google.com", + "The following enum values have been deprecated and removed. Replaced by HEALTH_AND_FITNESS (b/147649824)", + "Replaced by CALENDAR (b/144898723)", + "" + ], + "type": "string" + }, + "syntheticIntent": { + "$ref": "SearchPolicyRankableSensitivitySyntheticIntent" + }, + "winningFulfillment": { + "$ref": "SearchPolicyRankableSensitivityFulfillment" + } + }, + "type": "object" + }, + "SearchPolicyRankableSensitivityAttentionalEntity": { + "description": "Attentional entities (AE) can be pulled from arguments of interpretations, entities annotated by Aqua or QRef annotators, and entities mentioned in Assistant's response and annotated by the fulfillment logic (see https://g3doc.corp.google.com/quality/dialog_manager/attentional_entities/g3doc/overview.md#overview). Sensitivity of AEs can be marked by (1) feature developers in a Monastery frame, (2) code to infer the sensitivity from Argument provenance, and (3) entity annotators, such as Aqua annotator and QRef annotator. See go/sensitive-ae.", + "id": "SearchPolicyRankableSensitivityAttentionalEntity", + "properties": { + "aeOrigin": { + "enum": [ + "UNKNOWN_ORIGIN", + "MONASTERY_VERTICAL_DEVELOPER", + "ARGUMENT_PROVENANCE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SearchPolicyRankableSensitivityFollowOn": { + "description": "Sensitivity is marked at end of the last turn. See go/followon-sensitivity for more details.", + "id": "SearchPolicyRankableSensitivityFollowOn", + "properties": { + "blockNonV2SearchBackends": { + "description": "Should e2e search candidates running in parallel with QU (eg. GBot) be blocked.", + "type": "boolean" + }, + "ignoreQueryUnderstanding": { + "description": "Iff true this follow-on sensitivity will rank above the ones determined by query understanding (QU).", + "type": "boolean" + } + }, + "type": "object" + }, + "SearchPolicyRankableSensitivityFulfillment": { + "description": "Marks that this sensitivity is from fulfillment.", + "id": "SearchPolicyRankableSensitivityFulfillment", + "properties": {}, + "type": "object" + }, + "SearchPolicyRankableSensitivityPrefilter": { + "description": "Deprecated, do not use.", + "id": "SearchPolicyRankableSensitivityPrefilter", + "properties": { + "propagateOnly": { + "type": "boolean" + } + }, + "type": "object" + }, + "SearchPolicyRankableSensitivityQueryUnderstanding": { + "description": "Sensitivity is produced by QU.", + "id": "SearchPolicyRankableSensitivityQueryUnderstanding", + "properties": { + "intentOnlyNoPii": { + "description": "QU dectects a sensitive intent with no sensitive content (eg., [Send email]). This flag is only used to trigger a sensitive feature because as a precaution all sensitive features should check current sensitivity mode before triggering; but will NOT block any backends, which means all other features can compete fairly.", + "type": "boolean" + }, + "rewrittenQuery": { + "description": "The rewritten query this sensitivity is for. Note different query rewrites could produce different sensitivities.", + "type": "string" + } + }, + "type": "object" + }, + "SearchPolicyRankableSensitivitySyntheticIntent": { + "description": "Marks that this sensitivity is form a synthetic intent.", + "id": "SearchPolicyRankableSensitivitySyntheticIntent", + "properties": {}, + "type": "object" + }, + "SecurityCredentialsAllAuthenticatedUsersProto": { + "description": "Represents a principal who has authenticated as any kind of user which the application understands. This is typically used for \"wiki-like\" security, where anyone is allowed access so long as they can be held accountable for that access. Since the purpose is knowing whom to blame, it is up to the application to decide what kinds of users it knows how to blame. For example, an application might choose to include GAIA users in \"all authenticated users\", but not include MDB users. Nothing here.", + "id": "SecurityCredentialsAllAuthenticatedUsersProto", + "properties": {}, + "type": "object" + }, + "SecurityCredentialsCapTokenHolderProto": { + "description": "Represents a principal which possesses a particular secret string whose cryptographic hash is specified here. CapTokens (\"Capability Tokens\") are used in ACLProto. It's expected that ACLs with CapTokenHolders will strongly enforce them by Keystore-wrapping crypto keys for the corresponding CapTokens.", + "id": "SecurityCredentialsCapTokenHolderProto", + "properties": { + "tokenHmacSha1Prefix": { + "description": "The hash of the corresponding capability token. The value is defined to be identical to the one in acl.proto's CapTokenMetadata: 10-byte prefix of HMAC-SHA1 of the token. The HMAC key is the following fixed (non-secret) 512-bit value: 79b1c8f4 82baf523 b8a9ab4a e960f438 c45be041 11f1f222 e8a3f64d aeb05e3d c3576acc ec649194 aede422c 4e48e0d1 ff21234a a6ed6b49 a7fa592e efd7bba3", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsChatProto": { + "description": "Represents the invitees or other users associated with a Babel Chat (see http://goto/babel). Corresponds to GroupType CHAT in //social/graph/storage/proto/data.proto.", + "id": "SecurityCredentialsChatProto", + "properties": { + "chatId": { + "description": "Chat IDs consist of alphanumeric characters and colons. Currently required.", + "type": "string" + }, + "memberType": { + "description": "The type of Chat members to consider, e.g. \"all members\" vs. \"invitee\" These are defined by legacy_relation_id values in social.graph.storage.EdgeTypeEnum.EdgeType enum options in social/graph/storage/proto/id.proto. See chat.pb (defined in production/config/cdd/socialgraph/mixer_config/prod/node_type_config) for all valid edge types associated with chat. Currently required.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SecurityCredentialsCircleProto": { + "description": "Represents a Google+ Circle. Currently (12/2011), a Circle is identical to the ContactGroup with matching parameters, but Circle must only be used for true Circles and not other Focus groups, and should be preferred over ContactGroup where applicable. Soon it may become more efficient to check membership in a Circle than in a ContactGroup (see http://go/superglue). Support for this principal type is currently (12/2011) incomplete -- e.g., Keystore does not support it yet (see b/5703421).", + "id": "SecurityCredentialsCircleProto", + "properties": { + "circleId": { + "description": "Circle ID is unique only relative to the owner's Gaia ID. Currently required.", + "format": "int64", + "type": "string" + }, + "ownerGaiaId": { + "description": "The owner of the circle. Currently required.", + "format": "int64", + "type": "string" + }, + "requiredConsistencyTimestampUsec": { + "description": "If present, then tests for membership in this circle must use data known to be at least as fresh as the given (FBS-assigned) timestamp. See http://go/fbs-consistent-read-after-important-write Before using this, be sure that any service checking authorization against this circle supports checking consistency timestamps. For example, as of 12/2011, Keystore only supports this for the Moonshine configuration, and in others authorization checks will fail if the timestamp is present.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsCloudPrincipalProto": { + "description": "Principal associated with a Cloud Principal representing third party user.", + "id": "SecurityCredentialsCloudPrincipalProto", + "properties": { + "id": { + "description": "Format: \"{identity-pool}:{subject}#\" Details: go/cloud-principal-identifiers", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsContactGroupProto": { + "description": "A group of contacts for a given user, as described in http://cs/p#google3/focus/backend/proto/backend.proto Historically (and in still-existing ACLs), this was used to represent Google+ circles as well as contact groups, but this use is now deprecated. New code should use the CIRCLE principal type to represent Google+ circles.", + "id": "SecurityCredentialsContactGroupProto", + "properties": { + "groupId": { + "description": "Group ID is unique only relative to the owner's Gaia ID.", + "format": "int64", + "type": "string" + }, + "ownerGaiaId": { + "format": "int64", + "type": "string" + }, + "requiredConsistencyTimestampUsec": { + "description": "If present, then tests for membership in this ContactGroup must use data known to be at least as fresh as the given (FBS-assigned) timestamp. See http://go/fbs-consistent-read-after-important-write Before using this, be sure that any service checking authorization against this group supports checking consistency timestamps. For example, as of 12/2011, Keystore only supports this for the Moonshine configuration, and in others authorization checks will fail if the timestamp is present.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsEmailOwnerProto": { + "description": "Represents a verified owner of the given email address. Note that a single address may have many owners, and a single user may own many addresses. (All lower-case, in display form -- see com.google.gaia.client.GaiaEmail)", + "id": "SecurityCredentialsEmailOwnerProto", + "properties": { + "email": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsEventProto": { + "description": "Represents the invitees or other users associated with a Google+ Event (see http://goto/events-backend-design).", + "id": "SecurityCredentialsEventProto", + "properties": { + "eventId": { + "description": "Event IDs consist of alphanumeric characters and colons. Currently required.", + "type": "string" + }, + "memberType": { + "description": "The type of Event members to consider, e.g. \"all members\" vs. \"owners\" vs. \"admins\". These are defined by legacy_relation_id values in social.graph.storage.EdgeTypeEnum.EdgeType enum options in social/graph/storage/proto/id.proto. See event.pb (defined in production/config/cdd/socialgraph/mixer_config/prod/node_type_config) for all valid edge types associated with event. Currently required.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SecurityCredentialsGaiaGroupProto": { + "id": "SecurityCredentialsGaiaGroupProto", + "properties": { + "groupId": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsGaiaUserProto": { + "description": "A Gaia account, which may represent a user, device, service account, etc. For prod (@prod.google.com) accounts, use MdbUserProto instead.", + "id": "SecurityCredentialsGaiaUserProto", + "properties": { + "userId": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsHostProto": { + "description": "Represents a single host. Optionally, the MDB owner of the host can be specified.", + "id": "SecurityCredentialsHostProto", + "properties": { + "hostName": { + "description": "Lower-case, fully qualified hostname.", + "type": "string" + }, + "hostOwner": { + "description": "If present, then any checks that compare this Principal to LOAS peer info must confirm the peer's machine owner is equal to 'host_owner'. If absent, then any peer machine owner is acceptable.", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsLdapGroupProto": { + "id": "SecurityCredentialsLdapGroupProto", + "properties": { + "groupName": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsLdapUserProto": { + "id": "SecurityCredentialsLdapUserProto", + "properties": { + "userName": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsMdbGroupProto": { + "description": "An entity from the MDB namespace that is to be interpreted as a group. If using this for authorization, you should do an exact match of the peer role against group_name or any of the names in the Chubby expansion of the MDB group named group_name.", + "id": "SecurityCredentialsMdbGroupProto", + "properties": { + "groupName": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsMdbUserProto": { + "description": "An entity from the MDB namespace that is to be interpreted as a user. If using this for authorization, you should only do an exact match on the peer role against user_name.", + "id": "SecurityCredentialsMdbUserProto", + "properties": { + "gaiaId": { + "description": "Do not set this field. Contact credentials-eng@ if you believe you absolutely need to use it. This is the @prod.google.com Gaia ID that corresponds to the MDB user, see go/authn-merge for details. This field may always be safely ignored when performing an authorization check.", + "format": "int64", + "type": "string" + }, + "userName": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsOAuthConsumerProto": { + "description": "Represents an OAuth consumer, a/k/a AuthSub target. These principals are identified by domain name (e.g., example.com). Historically, Dasher domain GAIA group IDs have been used instead, but that doesn't work: http://go/tricky-gaia-ids", + "id": "SecurityCredentialsOAuthConsumerProto", + "properties": { + "domain": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsPostiniUserProto": { + "description": "See http://s/?fileprint=//depot/google3/security/authentication/postini/auth_token.proto", + "id": "SecurityCredentialsPostiniUserProto", + "properties": { + "postiniUserId": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsPrincipalProto": { + "description": "A Principal represents something to which permissions are assigned, often but not always a user or group of some kind. It is most appropriate for use in ACLs and authorization checks. Callers should prefer to use the wrapper classes in google3/security/credentials/public/principal.h google3/java/com/google/security/credentials/Principal.java google3/security/credentials/go/principal.go unless direct proto access is essential. If you update this protocol buffer, please update the wrapper classes as well.", + "id": "SecurityCredentialsPrincipalProto", + "properties": { + "allAuthenticatedUsers": { + "$ref": "SecurityCredentialsAllAuthenticatedUsersProto", + "description": "scope = ALL_AUTHENTICATED_USERS" + }, + "capTokenHolder": { + "$ref": "SecurityCredentialsCapTokenHolderProto", + "description": "scope = CAP_TOKEN_HOLDER" + }, + "chat": { + "$ref": "SecurityCredentialsChatProto", + "description": "scope = CHAT" + }, + "circle": { + "$ref": "SecurityCredentialsCircleProto", + "description": "scope = CIRCLE" + }, + "cloudPrincipal": { + "$ref": "SecurityCredentialsCloudPrincipalProto", + "description": "scope = CLOUD_PRINCIPAL" + }, + "contactGroup": { + "$ref": "SecurityCredentialsContactGroupProto", + "description": "scope = CONTACT_GROUP" + }, + "emailOwner": { + "$ref": "SecurityCredentialsEmailOwnerProto", + "description": "scope = EMAIL_OWNER" + }, + "event": { + "$ref": "SecurityCredentialsEventProto", + "description": "scope = EVENT" + }, + "gaiaGroup": { + "$ref": "SecurityCredentialsGaiaGroupProto", + "description": "scope = GAIA_GROUP" + }, + "gaiaUser": { + "$ref": "SecurityCredentialsGaiaUserProto", + "description": "scope = GAIA_USER" + }, + "host": { + "$ref": "SecurityCredentialsHostProto", + "description": "scope = HOST" + }, + "ldapGroup": { + "$ref": "SecurityCredentialsLdapGroupProto", + "description": "scope = LDAP_GROUP" + }, + "ldapUser": { + "$ref": "SecurityCredentialsLdapUserProto", + "description": "scope = LDAP_USER" + }, + "mdbGroup": { + "$ref": "SecurityCredentialsMdbGroupProto", + "description": "scope = MDB_GROUP" + }, + "mdbUser": { + "$ref": "SecurityCredentialsMdbUserProto", + "description": "scope = MDB_USER" + }, + "oauthConsumer": { + "$ref": "SecurityCredentialsOAuthConsumerProto", + "description": "scope = OAUTH_CONSUMER;" + }, + "postiniUser": { + "$ref": "SecurityCredentialsPostiniUserProto", + "description": "scope = POSTINI_USER" + }, + "rbacRole": { + "$ref": "SecurityCredentialsRbacRoleProto", + "description": "scope = RBAC_ROLE" + }, + "rbacSubject": { + "$ref": "SecurityCredentialsRbacSubjectProto", + "description": "scope = RBAC_SUBJECT" + }, + "resourceRole": { + "$ref": "SecurityCredentialsResourceRoleProto", + "description": "scope = RESOURCE_ROLE" + }, + "scope": { + "description": "This is only optional because required enums cannot be extended. Currently required.", + "enum": [ + "INVALID", + "GAIA_USER", + "GAIA_GROUP", + "LDAP_USER", + "LDAP_GROUP", + "MDB_USER", + "MDB_GROUP", + "POSTINI_USER", + "CONTACT_GROUP", + "SIMPLE_SECRET_HOLDER", + "SIGNING_KEY_POSSESSOR", + "ALL_AUTHENTICATED_USERS", + "OAUTH_CONSUMER", + "HOST", + "SOCIAL_GRAPH_NODE", + "EMAIL_OWNER", + "CAP_TOKEN_HOLDER", + "CIRCLE", + "SQUARE", + "EVENT", + "RESOURCE_ROLE", + "CHAT", + "YOUTUBE_USER", + "UNUSED_ZWIEBACK_SESSION", + "ZWIEBACK_SESSION", + "RBAC_ROLE", + "RBAC_SUBJECT", + "CLOUD_PRINCIPAL" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "next tag: 29" + ], + "type": "string" + }, + "signingKeyPossessor": { + "$ref": "SecurityCredentialsSigningKeyPossessorProto", + "description": "scope = SIGNING_KEY_POSSESSOR" + }, + "simpleSecretHolder": { + "$ref": "SecurityCredentialsSimpleSecretHolderProto", + "description": "scope = SIMPLE_SECRET_HOLDER" + }, + "socialGraphNode": { + "$ref": "SecurityCredentialsSocialGraphNodeProto", + "description": "scope = SOCIAL_GRAPH_NODE" + }, + "square": { + "$ref": "SecurityCredentialsSquareProto", + "description": "scope = SQUARE" + }, + "youtubeUser": { + "$ref": "SecurityCredentialsYoutubeUserProto", + "description": "scope = YOUTUBE_USER" + }, + "zwiebackSession": { + "$ref": "SecurityCredentialsZwiebackSessionProto", + "description": "scope = ZWIEBACK_SESSION" + } + }, + "type": "object" + }, + "SecurityCredentialsRbacRoleProto": { + "description": "Principal associated with a given RBAC role. This principal is used by Sphinx Provisioning Service for RBAC (go/cedi-auth) provisionable (go/sphinx-rbacz-design).", + "id": "SecurityCredentialsRbacRoleProto", + "properties": { + "name": { + "type": "string" + }, + "objectId": { + "type": "string" + }, + "rbacNamespace": { + "description": "DEPRECATED as of 01.11.2019", + "type": "string" + }, + "rbacRoleName": { + "description": "Format: \"RbacNamespaceName.RbacRoleName(/field=value)*\", e.g., \"hr.v1.Reader\", \"hr.v1.Reader/language=EN_US/country=USA/room=NYC-9th-11A201\".", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsRbacSubjectProto": { + "description": "Principal associated with a given RBAC subject. This principal is used by Sphinx Provisioning Service for RBAC (go/cedi-auth) provisionable (go/sphinx-rbacz-design).", + "id": "SecurityCredentialsRbacSubjectProto", + "properties": { + "username": { + "description": "Format \"username\" without \"@domain\", e.g., \"bogdand\".", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsResourceRoleProto": { + "description": "A type of sharing target that points to some resource's ACL. Used to refer to the set of Principals that have the given privilege ('role_id') for the given resource ('application_id', 'object_id', 'object_part'). The meaning of 'role_id' is interpreted only by implementations of AclRpcService and is usually dependent on 'application_id' All fields except object_part are required. If present, object_part must be non-empty.", + "id": "SecurityCredentialsResourceRoleProto", + "properties": { + "applicationId": { + "type": "string" + }, + "objectId": { + "type": "string" + }, + "objectPart": { + "type": "string" + }, + "roleId": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SecurityCredentialsSigningKeyPossessorProto": { + "description": "Represents a principal who possesses a signing key corresponding to the verification key or keyset described here.", + "id": "SecurityCredentialsSigningKeyPossessorProto", + "properties": { + "keymasterKeyType": { + "description": "This value must be from the KeyMetadata.Type enum in keymaster.proto.", + "format": "int32", + "type": "integer" + }, + "serializedVerificationKey": { + "description": "The actual verification key bytes corresponding to the above type.", + "format": "byte", + "type": "string" + }, + "serializedVerificationKeyset": { + "description": "The binary serialized Keymaster SerializedReader of a public keyset. The keyset must contain exactly one key. N.B.: If this field is populated, serialized_verification_key should be set to the empty string and keymaster_key_type should be set to zero.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsSimpleSecretHolderProto": { + "description": "Represents a principal which possesses a particular, presumably secret, string. Useful for things like \"auth keys,\" used for anonymous sharing. Since representing this principal with the actual secret included reveals the secret, it's best if the requisite condition is enforced in some other way, for example via Keystore wrapping attributes (Keystore will unwrap only if the specified secret, aka \"attribute\", is presented). All that's stored here is an identifying label.", + "id": "SecurityCredentialsSimpleSecretHolderProto", + "properties": { + "label": { + "$ref": "SecurityCredentialsSimpleSecretLabelProto", + "description": "A descriptive label to help identify a relevant ACL entry or otherwise disambiguate this instance." + } + }, + "type": "object" + }, + "SecurityCredentialsSimpleSecretLabelProto": { + "description": "SimpleSecretProto (in authenticator.proto) and SimpleSecretHolderProto (below) share the notion of a \"label\", which identifies a particular secret without (hopefully) revealing the secret. Note that a SimpleSecretLabel only disambiguates between secrets used to get access to some particular object. Two different secrets that apply to two different objects could have the same label. For example, in the common sharing model, each object has no more than one \"auth key\". Therefore, the label for an auth key simply has type = AUTH_KEY with no additional information. In theory, we could add some sort of resource ID to SimpleSecretLabel to make it more explicit. However, in practice, this is never really needed. A SimpleSecret for one object is never used to authorize a request on some other object, so there is no ambiguity. Also, since SimpleSecrets must obviously be unguessable, there is no risk that a SimpleSecret intended for one object will accidentally grant access to another.", + "id": "SecurityCredentialsSimpleSecretLabelProto", + "properties": { + "capabilityId": { + "description": "***DEPRECATED (3-Oct-2011) *** This field should be deleted when code stops using CAP_TOKEN labels. Used when type = CAP_TOKEN. When a CAP_TOKEN label appears in a SimpleSecretHolder Principal, |capability_id| must be filled in to identify one of the capabilities on the ACL. When a CAP_TOKEN label appears in a SimpleSecret Authenticator, it is NOT necessary to fill in |capability_id| -- ACL Service will find the ID by searching all capabilities on the ACL for one associated with the token given by the SimpleSecret's secret data. If |capability_id| is specified, though, then the Authenticator will only be accepted if it actually matches that particular token ID.", + "format": "int32", + "type": "integer" + }, + "genericLabel": { + "description": "Used when type = GENERIC_SECRET", + "format": "byte", + "type": "string" + }, + "inviteId": { + "description": "Used when type == INVITE.", + "format": "int64", + "type": "string" + }, + "type": { + "description": "This is optional because required enums cannot be extended.", + "enum": [ + "INVALID", + "AUTH_KEY", + "INVITE", + "GENERIC_SECRET", + "CAP_TOKEN", + "REKE" + ], + "enumDescriptions": [ + "Used as a default value.", + "The singleton auth key for a common-sharing ACL. No other fields of SimpleSecretLabelProto need to be filled in, since there is only one of these per ACL. The corresponding secret is the auth key encoded in 64-bit big-endian.", + "A common-sharing invite token. |invite_id| (below) must be set to identify the invite. The corresponding secret is the SecretMaterial, as defined by InviteToken.SecretMaterial in acl.proto, encoded in 64-bit big-endian. If there is no SecretMaterial, the secret should be omitted; in this case the invite ID itself is the secret, which is less secure.", + "A generic secret value. Do not use this if any more specific type is appropriate.", + "***DEPRECATED (3-Oct-2011)*** Use the new CapTokenProto and CapTokenHolderProto instead. A capability token. The corresponding secret is an arbitrary-length random byte string (recommended: 128 bits). |capability_id| may be filled in (see below). See CapTokenMetadata in acl.proto.", + "Identifies a principal that can perform a successful REKE handshake. The holder is not authenticated by presenting a SimpleSecretProto, but rather by knowing either the REKE resumption ticket secret or the private key corresponding to a public key specified outside the PrincipalProto. For more information, see: http://goto.google.com/loas2cert" + ], + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsSocialGraphNodeProto": { + "description": "Represents a user pseudonym. Pseudonyms are linked accounts on Google and third-party services (e.g. YouTube or Twitter) and are described by a Social Graph Node.", + "id": "SecurityCredentialsSocialGraphNodeProto", + "properties": { + "sgnDomain": { + "description": "The fields from ccc/socialgraph/socialgraphnode.proto:SgnNode that uniquely identify a social graph node. The 'ident' field is not included here because its value can be changed.", + "type": "string" + }, + "sgnPk": { + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsSquareProto": { + "description": "Represents the set of members (of a given type) in a Google+ Square (see http://go/squares). A Square with default member_type is currently (1/2012) identical to the GaiaGroup with the same ID, but that is expected to change soon (see http://go/superglue). Support for this principal type is currently (1/2012) incomplete -- e.g., Keystore does not support it yet (see b/5703421).", + "id": "SecurityCredentialsSquareProto", + "properties": { + "memberType": { + "description": "The type of Square members to consider, e.g. \"all members\" vs. \"owners\" vs. \"admins\". These are defined by legacy_relation_id values in social.graph.storage.EdgeTypeEnum.EdgeType enum options in social/graph/storage/proto/id.proto. See square.pb (defined in production/config/cdd/socialgraph/mixer_config/prod/node_type_config) for all valid edge types associated with square. Currently required.", + "format": "int32", + "type": "integer" + }, + "squareId": { + "description": "Currently required.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsYoutubeUserProto": { + "id": "SecurityCredentialsYoutubeUserProto", + "properties": { + "youtubeUserId": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "SecurityCredentialsZwiebackSessionProto": { + "description": "See go/zwieback. New uses of Zwieback sessions must be approved via go/zwieback-request.", + "id": "SecurityCredentialsZwiebackSessionProto", + "properties": { + "zwiebackSessionId": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "SentenceBoundaryAnnotations": { + "description": "Sentence boundaries.", + "id": "SentenceBoundaryAnnotations", + "properties": { + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Used for application-specific information about the whole set of SentenceBoundaryAnnotations. Example: SAFT Team uses this to store an nlp_saft.Document proto giving any processing errors encountered." + }, + "instance": { + "items": { + "$ref": "SentenceBoundaryAnnotationsInstance" + }, + "type": "array" + } + }, + "type": "object" + }, + "SentenceBoundaryAnnotationsInstance": { + "id": "SentenceBoundaryAnnotationsInstance", + "properties": { + "begin": { + "format": "int32", + "type": "integer" + }, + "cleanText": { + "description": "A clean version of .text() generated by using CleanText() and stripping unnecessary whitespace.", + "type": "string" + }, + "context": { + "description": "Plain text context from the page within which the annotation occurred.", + "type": "string" + }, + "contextBegin": { + "description": "Byte offsets for the clean text context above.", + "format": "int32", + "type": "integer" + }, + "contextEnd": { + "format": "int32", + "type": "integer" + }, + "end": { + "format": "int32", + "type": "integer" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Used for application-specific information about this annotation." + }, + "text": { + "description": "Original UTF-8 document text occurring in the range [begin, end).", + "type": "string" + }, + "toIndex": { + "description": "Used to mark the annotations selected to be indexed.", + "type": "boolean" + } + }, + "type": "object" + }, + "SentimentSentiment": { + "description": "This proto contains the sentiment and emotions that the user is exhibiting at the time of the query. NEXT ID: 4", + "id": "SentimentSentiment", + "properties": { + "polarity": { + "description": "Polarity represents the sentiment towards the subject.", + "enum": [ + "UNKNOWN", + "VERY_POSITIVE", + "POSITIVE", + "NEUTRAL", + "NEGATIVE", + "VERY_NEGATIVE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "userBehaviors": { + "$ref": "SentimentSentimentBehaviors" + }, + "userEmotions": { + "$ref": "SentimentSentimentEmotions", + "description": "The emotions that the user is feeling." + } + }, + "type": "object" + }, + "SentimentSentimentBehaviors": { + "description": "The set of behavior signals that the user is expressing/demonstrating that is detected by the sentiment analysis. These signals are used to help assistant determine the proper response behavior. NEXT ID = 2", + "id": "SentimentSentimentBehaviors", + "properties": { + "politeness": { + "description": "The degree to which the user is showing politeness.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "SentimentSentimentEmotions": { + "description": "Basic emotions. NEXT ID: 7", + "id": "SentimentSentimentEmotions", + "properties": { + "anger": { + "format": "uint32", + "type": "integer" + }, + "disgust": { + "format": "uint32", + "type": "integer" + }, + "fear": { + "format": "uint32", + "type": "integer" + }, + "happiness": { + "format": "uint32", + "type": "integer" + }, + "sadness": { + "format": "uint32", + "type": "integer" + }, + "surprise": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "ShingleInfoPerDocData": { + "description": "This message represents shingle-related information obtained from a document.", + "id": "ShingleInfoPerDocData", + "properties": { + "numShingles": { + "description": "Total number of shingles in the document.", + "format": "int32", + "type": "integer" + }, + "source": { + "description": "A list of all sources.", + "items": { + "$ref": "ShingleSource" + }, + "type": "array" + } + }, + "type": "object" + }, + "ShingleSource": { + "description": "This message represents a source of shingles. Used by ShingleInfoPerDocData.", + "id": "ShingleSource", + "properties": { + "id": { + "description": "Hash-value of the URL.", + "format": "int32", + "type": "integer" + }, + "numShingles": { + "description": "Number of shingles originating from this source.", + "format": "int32", + "type": "integer" + }, + "timestamp": { + "description": "First-seen timestamp of the source.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ShoppingWebentityShoppingAnnotationInferredImage": { + "description": "Images inferred from context instead of propagated from Shopping backends. The same image might be inferred via different means; then it may appear multiple times in Offer.inferred_images list with different values of inferred_image_type field.", + "id": "ShoppingWebentityShoppingAnnotationInferredImage", + "properties": { + "inferredImageId": { + "format": "uint64", + "type": "string" + }, + "inferredImageType": { + "enum": [ + "INFERRED_IMAGE_TYPE_UNKNOWN", + "INFERRED_IMAGE_TYPE_NEARDUP_STARBURST_V3", + "INFERRED_IMAGE_TYPE_STRIDE_EXTRACTION", + "INFERRED_IMAGE_TYPE_CRAWLED_OFFER_DUPLICATE", + "INFERRED_IMAGE_TYPE_NEARDUP_FOR_INFERRED_IMAGES", + "INFERRED_IMAGE_TYPE_OTHER_ML_MATCHED_IMAGES", + "INFERRED_IMAGE_TYPE_PRODUCT_BLOCKS", + "INFERRED_IMAGE_TYPE_SCHEMA_DOT_ORG", + "INFERRED_IMAGE_TYPE_CRAWZALL", + "INFERRED_IMAGE_TYPE_OPEN_GRAPH" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "ShoppingWebentityShoppingAnnotationProductRating": { + "description": "Information about a rating provided for a product. This can represent an aggregated rating if count is set. Next Id: 4", + "id": "ShoppingWebentityShoppingAnnotationProductRating", + "properties": { + "count": { + "description": "Number of ratings/reviews aggregated to create this product rating. If there are no ratings yet, this field will be explicitly set to zero, so whether this field is set should be checked using has_count.", + "format": "int64", + "type": "string" + }, + "source": { + "enum": [ + "PRODUCT_RATING_SOURCE_UNKNOWN", + "PRODUCT_RATING_SOURCE_CRAWLED_DATA" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "value": { + "description": "The value of this rating normalized between 0 and 5. This will not be set if count is set to 0.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "ShoppingWebentityShoppingAnnotationSoriVersionId": { + "description": "Versioning Information used for Logging Purposes. See go/sori-logjoining.", + "id": "ShoppingWebentityShoppingAnnotationSoriVersionId", + "properties": { + "f1CommitTimestampMicros": { + "format": "int64", + "type": "string" + }, + "opaqueSoriId": { + "$ref": "AdsShoppingReportingOffersSerializedSoriId" + } + }, + "type": "object" + }, + "Sitemap": { + "description": "Note: If you are going to populate any new field in this proto, you probably need to go through the go/dj-new-field and go/index-changes process.", + "id": "Sitemap", + "properties": { + "DEPRECATEDSourceTitle": { + "description": "DEPRECATED DEPRECATED DEPRECATED In case you didn't realize, these fields are (and have been for some time) deprecated. We'll stop pushing their data to production soon (probably Feb/09) and after a few weeks we'll probably remove them.", + "type": "string" + }, + "TargetGroups": { + "description": "One Sitemap can contain multiple TargetGroups, but only one of them will be displayed to the user - this decision will be made at displaying time and can take into account various factors, such as the users' language and country, currently running experiments, etc.", + "items": { + "$ref": "QualitySitemapTargetGroup" + }, + "type": "array" + }, + "deprecatedTarget": { + "items": { + "$ref": "SitemapDEPRECATED_Target" + }, + "type": "array" + }, + "searchInSite": { + "description": "Enable site search.", + "type": "boolean" + }, + "sitemapType": { + "enum": [ + "ORIGINAL", + "EXPANDED", + "TABLE_OF_CONTENTS", + "WEBANSWER" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "sourceOrgfp": { + "description": "prevents cross-domain forwarding", + "format": "uint64", + "type": "string" + }, + "sourceUrl": { + "type": "string" + }, + "subresultList": { + "$ref": "QualitySitemapSubresultList", + "description": "This field is populated in the Sitemap MDU subpopulator from cdoc data. It's not set in the cdoc Sitemap." + } + }, + "type": "object" + }, + "SitemapDEPRECATED_Target": { + "id": "SitemapDEPRECATED_Target", + "properties": { + "DEPRECATEDAnchor": { + "type": "string" + }, + "DEPRECATEDRunningAnchor": { + "type": "boolean" + }, + "DEPRECATEDTitle": { + "type": "string" + }, + "displaytitle": { + "type": "string" + }, + "score": { + "description": "optional, exclude to save space", + "format": "int32", + "type": "integer" + }, + "url": { + "type": "string" + } + }, + "type": "object" + }, + "SmartphonePerDocData": { + "description": "This message is used for storing smartphone related information. Note: MobilePerDocData is a similar message, but it's for lowend mobile.", + "id": "SmartphonePerDocData", + "properties": { + "DEPRECATEDDesktopCanonicalDocid": { + "description": "If set, this page is a smartphone dup, a page serving equivalent contents as another URL (desktop canonical), but in smartphone-optimized style. This field holds the docid of the desktop canonical.", + "format": "uint64", + "type": "string" + }, + "DEPRECATEDMobileHomepageDocid": { + "description": "Mobile URL for homepages, predicted by the URL rewrite rules. See go/mobile-homepage-prediction.", + "format": "uint64", + "type": "string" + }, + "adsDensityInterstitialViolationStrength": { + "description": "Indicates if the page is violating mobile ads density interstitial policy and the voilation strength. See go/interstitials-for-ads and http://ariane/268642 for details. To save indexing space, we convert the double values in [0.0, 1.0] to intergers in range [0, 1000] by using floor(value * 1000).", + "format": "int32", + "type": "integer" + }, + "isErrorPage": { + "description": "Indicates if the page serves error to smartphone crawler. go/ramsey-sp404demotion", + "type": "boolean" + }, + "isN1Redirect": { + "description": "Indicates if the page has mobile N-1 redirection. go/ramsey-n1demotion", + "type": "boolean" + }, + "isSmartphoneOptimized": { + "description": "Indicates if the page is rendered in a friendly manner on smartphones. We use this field as tri-state: \"unset\" means the rendering result classification is not available, and \"set as false\" means that the page is rendered in unfriendly manner on smartphones. See also go/modena-ranking.", + "type": "boolean" + }, + "isWebErrorMobileContent": { + "description": "Indicates if the current URL serves error page to desktop crawler and non error page to smartphone crawler.", + "type": "boolean" + }, + "maximumFlashRatio": { + "description": "The ratio of the area of the largest Flash to the render area.", + "format": "double", + "type": "number" + }, + "mobileFriendlyScore": { + "description": "Mobile friendliness score in the range of [0, 100]. See go/modena-ranking.", + "format": "int32", + "type": "integer" + }, + "violatesMobileInterstitialPolicy": { + "description": "Indicates if the page is violating mobile interstitial policy and should be demoted. See go/interstitials-ranking-dd for details.", + "type": "boolean" + } + }, + "type": "object" + }, + "SmearedWebLandingPageEntry": { + "description": "For legacy purposes, cdocs contain a repeated list of *Entry, whereas it's more convenient elsewhere to contain this information within its own protocol buffer.", + "id": "SmearedWebLandingPageEntry", + "properties": { + "imagesearchDocid": { + "description": "Source imagesearch docid", + "format": "uint64", + "type": "string" + }, + "webDocid": { + "description": "Docid of web landing page", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "SnapshotBox": { + "description": "A simple 2D box represented by an (x, y) co-ordinate, width and height. Copied from htmlrender_webkit_headless_proto.Document to avoid additional dependency.", + "id": "SnapshotBox", + "properties": { + "height": { + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + }, + "x": { + "format": "int32", + "type": "integer" + }, + "y": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SnapshotImageNode": { + "id": "SnapshotImageNode", + "properties": { + "boundingBox": { + "$ref": "SnapshotBox" + }, + "isExternal": { + "description": "An image is considered external iff both: 1. The image appears in a link that is not in the same org as the document, or the target URL is in a different org. 2. The image src is not in the same org as the document.", + "type": "boolean" + }, + "url": { + "description": "The absolute url of the image as present in the page.", + "type": "string" + } + }, + "type": "object" + }, + "SnapshotSnapshotDocument": { + "id": "SnapshotSnapshotDocument", + "properties": { + "imageNode": { + "items": { + "$ref": "SnapshotImageNode" + }, + "type": "array" + }, + "metaNoPreview": { + "type": "boolean" + }, + "metaNoSnippet": { + "description": "These are set from tags in the web page:", + "type": "boolean" + }, + "teradoc": { + "$ref": "TeragoogleDocumentInfo", + "description": "If this is present it supercedes all the above data." + }, + "textNode": { + "items": { + "$ref": "SnapshotTextNode" + }, + "type": "array" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "SnapshotSnapshotMetadata": { + "id": "SnapshotSnapshotMetadata", + "properties": { + "countDistinctResources": { + "description": "The number of distinct resources fetched to render the content. This may aid the calculation of total page load time for user experience. For example, if total_content_length is only a few dozen kilobytes, but that is from fetching 100 distinct resources, total page load time might be much higher than the total_content_length would otherwise infer.", + "format": "uint32", + "type": "integer" + }, + "crawlTimestamp": { + "description": "The time at which the main resource of the Snapshot was fetched, in seconds since epoch. Note that the various page dependencies may have been fetched at much earlier points in time (hours, maybe days) and that this could be off from the actual rendering time.", + "format": "uint64", + "type": "string" + }, + "snapshotDocument": { + "$ref": "SnapshotSnapshotDocument" + }, + "snapshotQualityScore": { + "description": "The score here corresponds to the score in Snapshot, a number between 0.0 and 1.0 (higher the better).", + "format": "float", + "type": "number" + }, + "totalContentSize": { + "description": "Number of bytes fetched to render the content. For example, to render a web page, this value would include the HTML, stylesheets, images, and all other dependencies. This can be used to calculate a coarse estimate of the total page load time a user might experience.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "SnapshotTextNode": { + "description": "The SnapshotDocument contains a list of TextNode's. Each node contains a string of text of the webpage, its bounding box in the agove snapshot image, and its font size (in number of pixels in the snapshot, which could be a fraction number since the snapshot image is typically shrinked). This list of text nodes are extracted from the output from the rendering service: htmlrender_webkit_headless_proto.Document The extraction is done by TrimDocument defined in ./shared/doctrimmer.cc", + "id": "SnapshotTextNode", + "properties": { + "boundingBox": { + "$ref": "SnapshotBox" + }, + "fontSize": { + "format": "float", + "type": "number" + }, + "inLink": { + "description": "One if the current text node is within a link; otherwise zero/not present.", + "format": "int32", + "type": "integer" + }, + "maxSplit": { + "description": "A value in the range [0,7] (zero if not present) indicating the most \"powerful\" splitting tag since the last text node. See \"enum Category\" in mustang/snippets/taginfo.h.", + "format": "int32", + "type": "integer" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "SnippetExtraInfo": { + "description": "Extra snippet info used for snippet scoring / modification in superroot. Next ID: 11", + "id": "SnippetExtraInfo", + "properties": { + "candidateInfo": { + "description": "Candidates are ordered by their id.", + "items": { + "$ref": "SnippetExtraInfoSnippetCandidateInfo" + }, + "type": "array" + }, + "containUserQuotes": { + "description": "Indicates that the snippet candidates all contain uesr quotes.", + "type": "boolean" + }, + "containVulgarCandidates": { + "description": "Indicates if there are any vulgar snippet candidates.", + "type": "boolean" + }, + "disableQueryFeatures": { + "description": "Indicates whether the query relevance features is disabled or not in Muppet scoring.", + "type": "boolean" + }, + "snippetBrainSelectedCandidateIndex": { + "description": "Snippet candidate index selected by snippet brain model. This field will get populated in SnippetFlow in superroot. go/snippets-brain", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SnippetExtraInfoSnippetCandidateInfo": { + "description": "Next ID: 12", + "id": "SnippetExtraInfoSnippetCandidateInfo", + "properties": { + "id": { + "description": "Candidate identifier number, unique among all snippet candidates under each document in each request. What does this number mean: - Muppet candidates: This equals to the candidate's rank by Muppet snippets scorer. - Superroot candidates: No specific meaning, this number should be larger than that of Muppet candidates. This field is used to: - Verify whether snippet brain chooses a different snippet from Muppet (the one chosen by Muppet is always in id 0). - Print debugging information and sort candidates in debug output.", + "format": "int32", + "type": "integer" + }, + "isMuppetSelectedSnippet": { + "description": "If this snippet is chosen by Muppet.", + "type": "boolean" + }, + "isSnippetBrainBoldingTriggered": { + "description": "If SnippetsBrain bolding model triggered and a bolding span is generated.", + "type": "boolean" + }, + "listInfo": { + "$ref": "MustangReposWwwSnippetsOrganicListSnippetResponse", + "description": "List information for this candidate, only populated for RADISH_LIST snippets." + }, + "scoringInfo": { + "$ref": "SnippetExtraInfoSnippetScoringInfo" + }, + "snippet": { + "description": "Muppet fills snippet lines in `snippet` field.", + "items": { + "type": "string" + }, + "type": "array" + }, + "snippetSource": { + "type": "string" + }, + "snippetText": { + "description": "`snippet_text` will be filled by snippet brain flow in SR for model scoring and debugging purpose.", + "type": "string" + }, + "snippetType": { + "enum": [ + "SNIPPET_TYPE_UNSPECIFIED", + "SEQUENCE", + "SEQUENCE_V2", + "FULL", + "FULL_V2", + "META", + "LEADING_TEXT", + "SAFT_SENTENCE", + "RADISH_SENTENCE", + "RADISH_LIST", + "RADISH_TABLE", + "ANNOTATED_FULL", + "PEREGRINE" + ], + "enumDescriptions": [ + "For historical reason, this `SNIPPET_TYPE_UNSPECIFIED` type is defined as value 15 instead of 0.", + "A sequence snippet is generated from query term matches (from meta and body sections) and typically consists of multiple tidbits. Currently we only keep one single best combination of the retrieved tidbits.", + "", + "A full snippet is also generated from query term matches. Unlike the sequence snippet, this only consists of one expanded tidbit that are scored as the best single tidbit among the retrieved tidbits.", + "", + "This is a leading text of meta description.", + "This is a leading text of main body text (skipping headers), and its starting position is typically identified in the indexing phase.", + "saft sentences.", + "Candidates created from radish attachment.", + "", + "", + "Candidates from quality_snippets.SnippetSpansInfo.", + "Candidates generated by SnippetFlow in SR." + ], + "type": "string" + } + }, + "type": "object" + }, + "SnippetExtraInfoSnippetScoringInfo": { + "description": "Next ID: 9", + "id": "SnippetExtraInfoSnippetScoringInfo", + "properties": { + "brainNg3Score": { + "format": "float", + "type": "number" + }, + "brainScore": { + "description": "The below fields are populated by SnippetFlow in superroot. Score generated from snippet brain model. go/snippets-brain", + "format": "float", + "type": "number" + }, + "features": { + "$ref": "QualityPreviewRanklabSnippet", + "description": "Snippets ranklab features generated by scorer V2." + }, + "finalScore": { + "description": "Final snippet score by chooser.", + "format": "float", + "type": "number" + }, + "rankBySnippetFlow": { + "description": "Final rank given by SnippetFlow.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SnippetsLeadingtextLeadingTextAnnotation": { + "description": "Leading text which may consist of multiple pieces.", + "id": "SnippetsLeadingtextLeadingTextAnnotation", + "properties": { + "piece": { + "items": { + "$ref": "SnippetsLeadingtextLeadingTextAnnotationPiece" + }, + "type": "array" + }, + "pieceType": { + "enum": [ + "SEPARATED", + "JOINED" + ], + "enumDescriptions": [ + "Two pieces are separated.", + "Two pieces should be joined together." + ], + "type": "string" + }, + "type": { + "description": "Type of this leading text. Should be an enum of LeadingTextInfo.LeadingTextType", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "SnippetsLeadingtextLeadingTextAnnotationPiece": { + "id": "SnippetsLeadingtextLeadingTextAnnotationPiece", + "properties": { + "begin": { + "description": "A piece of leading text is text within [begin, end). For example, a document is \"ABCDEF\". If we want to set leading text as 'CD', the value of begin is byte offset of 'C', the value of end is byte offset of 'E'. end == -1 means to the end of document.", + "format": "int32", + "type": "integer" + }, + "beginText": { + "description": "UTF8 text, for alignment when using reusableinfo. Those text are not available in docjoins.", + "type": "string" + }, + "end": { + "format": "int32", + "type": "integer" + }, + "endText": { + "type": "string" + }, + "matchedPattern": { + "description": "Matched dom path string for debugging.", + "type": "string" + } + }, + "type": "object" + }, + "SnippetsLeadingtextLeadingTextInfo": { + "id": "SnippetsLeadingtextLeadingTextInfo", + "properties": { + "beginPos": { + "description": "Leading text start position, byte offset of page content. The offset is got in ParseMaster. So it is the offset after the content is converted to UTF8.", + "format": "int32", + "type": "integer" + }, + "leadingtext": { + "description": "Note: You can also use it to save multiple leading text candidates.", + "items": { + "$ref": "SnippetsLeadingtextLeadingTextAnnotation" + }, + "type": "array" + }, + "text": { + "description": "UTF8 text, for alignment when using reusableinfo. The text is not available in docjoins.", + "type": "string" + }, + "type": { + "description": "Type of leading text which is optimized for this type of document.", + "enum": [ + "INVALID", + "NORMAL", + "HOMEPAGE", + "DICTIONARY", + "WIKI", + "SECTION_BOOST", + "IN_LIST", + "LOW", + "SALIENT_NUGGET", + "SCHEMA_ORG_DESC", + "SCHEMA_ORG_ANSWER", + "PDF" + ], + "enumDescriptions": [ + "", + "Default leading text type.", + "Leading text for home page.", + "Leading text for dictionary page.", + "Leading text for wiki page.", + "Leading text which gets section boost bonus.", + "Leading text inside a list.", + "Leading text has very low geometric altitude.", + "Salient leading text that matches a salient nugget pattern. Leading text offsets will be stored in LeadingTextAnnotation::Piece, with PieceType SEPARATED.", + "Leading text from schema.org description.", + "Leading text from schema.org answer.", + "Leading text for PDF document." + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialCommonAttachmentAttachment": { + "description": "An Attachment represents a linked entity associated with a piece of social content. This may be a 1st-party or 3rd-party entity. In the Papyrus context, an Attachment is part of a Cent, and sits alongside the main content of the cent, which is represented as a sequence of Segments. Right now an Attachment is just a wrapper around an Embed, but we provide the extra layer of abstraction since, as Embeds move to separate storage in Briefcase, we may want to add additional fields that are not part of the Embed proper, but that (for example) relate to the usage of the linked content within the particular post/cent.", + "id": "SocialCommonAttachmentAttachment", + "properties": { + "embedItem": { + "$ref": "EmbedsEmbedClientItem", + "description": "An embed represents an external entity. See go/es-embeds." + }, + "id": { + "description": "An id to uniquely identify an attachment when several attachments are in a collection.", + "type": "string" + } + }, + "type": "object" + }, + "SocialCommonFormatting": { + "description": "Formatting information for a segment.", + "id": "SocialCommonFormatting", + "properties": { + "bold": { + "type": "boolean" + }, + "highlight": { + "description": "This indicates that the segment should be rendered as highlighted or visually emphasized.", + "type": "boolean" + }, + "italics": { + "type": "boolean" + }, + "strikethrough": { + "type": "boolean" + }, + "style": { + "description": "If set, this indicates that the segment should be rendered with the specified style. The absence of an explicit style represents \"no style\", i.e. the segment can be rendered with the default style chosen by the application.", + "enum": [ + "UNKNOWN_STYLE", + "HEADING_1", + "HEADING_2", + "HEADING_3", + "HEADING_4" + ], + "enumDescriptions": [ + "This represents a style that is unknown (e.g. a new style was introduced but not supported by older mobile app versions) and should generally not be used as a value in a proto. If the segment does not need to be rendered with a special style, the 'style' field should simply be left unset. A reasonable fallback for an unknown style is to render the segment in the default style.", + "The most important heading to the least important heading.", + "", + "", + "" + ], + "type": "string" + }, + "underline": { + "type": "boolean" + } + }, + "type": "object" + }, + "SocialCommonHashtagData": { + "description": "Hashtag metadata, for HASHTAG segments. For a hashtag, the \"text\" field should contain the display text, and the search_text field should represent the topic being referenced, without the hash symbol; for example, we might have: text = \"#Google\" hashtag_data.search_text = \"Google\" Another example: text = \"#pikachu\" hashtag_data.search_text = \"Pokemon\" Both strings should be considered part of the searchable text. In go/sbe, both are indexed and searchable.", + "id": "SocialCommonHashtagData", + "properties": { + "searchText": { + "type": "string" + } + }, + "type": "object" + }, + "SocialCommonLinkData": { + "description": "Link metadata, for LINK segments. Anchor text should be stored in the \"text\" field of the Segment, which can also serve as a fallback.", + "id": "SocialCommonLinkData", + "properties": { + "attachment": { + "$ref": "SocialCommonAttachmentAttachment", + "description": "An Attachment represents the structured entity to which we are linking. It contains an Embed (apps/tacotown/proto/embeds/embed_client.proto) with fields specific to the appropriate type of linked entity. For example, if we are linking to a photo album, the Embed may include the album ID and gaia ID of the creator. Clients that understand the Embed type within the Attachment may construct and/or decorate their link appropriately e.g. to make use of type-specific functionality or first-party integrations. The link_target and (if appropriate) display_url fields must still be set even when an Attachment is present, so that clients who do not know how to interpret the Attachment can fall back to those fields, and render the Segment as an ordinary web link. N.B. Even when an Attachment is present, the intention of a \"LINK\" Segment is for the Segment to be presented inline with the rest of the text of a post or comment, with a clickable link or other UI suitable for inlining (though the client may modify the UI based on Attachment data, e.g. to add appropriate hovers, icons, etc.). When an entity is intended to be rendered separately from the main body of the post/comment, a separate Attachment proto can be added outside the set of Segments. N.B. Within the Attachment, fields of EmbedClientItem have their own visibility annotations, which should be enforced separately from Segment visibility annotations. See: apps/tacotown/proto/embeds/embed_annotations.proto" + }, + "attachmentRenderHint": { + "description": "The hint to use when rendering the associated attachment. Ignored if there is no associated attachment.", + "enum": [ + "ATTACHMENT_RENDER_HINT_UNKNOWN", + "ATTACHMENT_RENDER_HINT_AFTER", + "ATTACHMENT_RENDER_HINT_INTERLEAVED" + ], + "enumDescriptions": [ + "No rendering hint; should not be used (equivalent to having no hint)", + "Render any associated attachment at the end of the block, after all sibling Segments. Leave the link in place in the text and render it normally as well.", + "Render any associated attachment inline in the text in place of the link text, forcing a line break before and after the attachment so the text and the attachment are \"interleaved\". If this is not possible, render as if AFTER." + ], + "type": "string" + }, + "displayUrl": { + "description": "If we wish to show the user a different (e.g. shortened) version of the URL for display purposes, then that version should be set here. If this field isn't set, link_target will be used for both purposes.", + "type": "string" + }, + "linkTarget": { + "description": "link_target is the URL to navigate to when clicked. This could be the original URL, or a URL signed by the GWS URL signing service.", + "type": "string" + }, + "linkType": { + "description": "LinkType is an optional field that provides additional information regarding link target. For example, link type can be identified as the SELF_LINK when the request was executed from the same link as the link target.", + "enum": [ + "UNKNOWN_LINK_TYPE", + "SELF_LINK" + ], + "enumDescriptions": [ + "No link type specified.", + "This indicates that the link target points to the same object related to this segment. Example: A YouTube link with text=\"0.07\" and link_target: \"https://www.youtube.com/watch?v=leHVmSqd4_w\u0026t=0m07s\" points to the same YouTube video where this segment appears. See http://go/ignore-badwords-filtering-for-selflink for adding link_type design document." + ], + "type": "string" + }, + "title": { + "description": "Title is an optional field that provides a short string that describes the link or its destination. User interfaces often use title as a tooltip or for accessibility purposes. However, they are of course free to present this data in any form. This field is plain text.", + "type": "string" + } + }, + "type": "object" + }, + "SocialCommonSegment": { + "id": "SocialCommonSegment", + "properties": { + "formatting": { + "$ref": "SocialCommonFormatting", + "description": "Formatting to be applied when rendering the Segment. For all segment types, this is the standard way of representing that the Segment should be rendered in bold, italics, etc." + }, + "hashtagData": { + "$ref": "SocialCommonHashtagData", + "description": "For HASHTAG type:" + }, + "linkData": { + "$ref": "SocialCommonLinkData", + "description": "Type-specific metadata. At most one of these should be populated, and the one that is populated should correspond to the type of the Segment. For LINK type:" + }, + "text": { + "description": "Text content of the Segment. As a general rule, this field should contain the actual text that should be rendered in the UI. Thus, for a hashtag, it should be \"#Foo\", and for a link, it should be the display text. Clients that do not understand a particular segment type may use this text, along with the Formatting info below, as a fallback for display. The field is not required -- if all relevant information is carried in other metadata fields and there is no need for a fallback, or it is not practical for a fallback to be provided for any other reason, the field may be left blank. A standard example would be a user reference being transmitted between server layers, where a gaia-ID representation may be sufficient and there is no need for a textual fallback. In such a case, it would be valid and useful - though not required - for servers to compute and populate a fallback on the serving path.", + "type": "string" + }, + "type": { + "description": "Type of Segment.", + "enum": [ + "TEXT", + "LINE_BREAK", + "LINK", + "USER_MENTION", + "ALL_USER_MENTION", + "HASHTAG" + ], + "enumDescriptions": [ + "A TEXT segment represents plain-text subject to particular formatting constraints (as represented in the \"formatting\" field of the Segment).", + "A LINE_BREAK segment is simply a placeholder to represent a line break between other segments. The \"text\" variable may be set to a newline as a fallback, but clients that understand this segment type should simply insert a line break without needing to reference any fields.", + "A LINK segment represents a link to a web entity. The \"text\" field should be used for anchor text. Additional link data should be put in the link_data protobuf.", + "A USER_MENTION segment represents a reference to a (possibly non-Gaia, possibly off-network) user. The \"text\" field may be populated as a fallback, but information identifying the user should be contained in the user_mention_data protobuf. (The set of fields that are populated in user_mention_data may differ depending on the context in which the segment is viewed, but the interpretation of the fields is uniform. See comments over UserMentionData).", + "An ALL_USER_MENTION segment represents a reference to all users in the context, that is, the conversation, discussion, or other context containing the segment. For example, an ALL_USER_MENTION segment (\"@all\") can be useful to ping all participants in a conversation if the notification setting of the conversation is not set to ping on normal messages. An ALL_USER_MENTION should be treated as a USER_MENTION for all users who receives the segment.", + "A HASHTAG segment represents a structured reference to a topic. The \"text\" field should represent display text (e.g. \"#Google\"), and additional metadata should be put in the Segment's hashtag_data field." + ], + "type": "string" + }, + "userMentionData": { + "$ref": "SocialCommonUserMentionData", + "description": "For USER_MENTION type:" + } + }, + "type": "object" + }, + "SocialCommonSegments": { + "description": "Segments (go/social-segments) represent structured social content, e.g. the contents of a G+ stream post or chat message. A single post or message may consist of a sequence of segments, each representing a type of content, e.g. plain text, hash tag, mention, etc. Segments correspond approximately to units of content delimited by HTML tags, so that a piece of bolded text would be a distinct Segment, a link would be a distinct Segment, and so forth. A single Segment may have multiple such qualifiers; e.g. it may be a bold link; in this case, information about all such qualifiers will be encoded in the Segment proto.", + "id": "SocialCommonSegments", + "properties": { + "segments": { + "items": { + "$ref": "SocialCommonSegment" + }, + "type": "array" + } + }, + "type": "object" + }, + "SocialCommonUserMentionData": { + "description": "Person metadata, for USER_MENTION segments. Should always contain at least one of user_gaia_id, user_id, email or user. The exact set of populated fields may differ depending on the context and the level in the serving stack; for example, emails will be elided on the viewing path. But as a general rule, a proto having any one of the four is valid, subject to the standard constraints of the applied annotations -- that is, communication between servers and clients will ignore jspb.ignore fields, and communication between servers and other servers (or between servers and storage) will ignore client_only fields. For more on the annotations, see the comments in social/common/segment_annotations.proto", + "id": "SocialCommonUserMentionData", + "properties": { + "email": { + "type": "string" + }, + "user": { + "$ref": "SecurityCredentialsPrincipalProto", + "description": "If the principal is backed by a gaia id, DO NOT use this field. Use user_gaia_id/user_id fields instead." + }, + "userGaiaId": { + "description": "An unobfuscated gaia ID:", + "format": "int64", + "type": "string" + }, + "userId": { + "description": "An obfuscated gaia ID:", + "type": "string" + } + }, + "type": "object" + }, + "SocialDiscoveryExternalEntityKey": { + "description": "An entity key with an obfuscated gaia id that can be used externally.", + "id": "SocialDiscoveryExternalEntityKey", + "properties": { + "email": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "profileId": { + "description": "Obfuscated GAIA id.", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiAppContactData": { + "description": "Contains a mimetype supported by a third-party app together with additional ids and other data that the apps use to complete the action for the given mimetype. For example, an app_specific_endpoint_id that corresponds to a WhatsApp Profile. Full Design: go/3p-contact-upload LINT.IfChange", + "id": "SocialGraphApiAppContactData", + "properties": { + "data": { + "description": "Set of column-name and value for the given mimetype. The semantic meaning of the column values is mime-type specific. For example they may contain app_specific_endpoint_ids for WhatsApp. This is uploaded from CP2 http://go/cp2-data1 through http://go/cp2-data14.", + "items": { + "$ref": "SocialGraphApiDataColumn" + }, + "type": "array" + }, + "mimetype": { + "description": "The mimetype of the action defined by the third-party app.", + "enum": [ + "UNKNOWN_MIMETYPE", + "WHATSAPP_PROFILE", + "WHATSAPP_VOIP_CALL", + "WHATSAPP_VIDEO_CALL", + "LINE_PROFILE", + "LINE_VOICE", + "LINE_VIDEO", + "HIKE_MESSAGE", + "HIKE_MESSAGE_ASSISTANT", + "HIKE_VOICE_CALL", + "HIKE_VIDEO_CALL", + "TELEGRAM_ANDROID_PROFILE", + "THREEMA_PROFILE", + "VIBER_OUT_CALL_NONE", + "VIBER_NUMBER_CALL", + "VIBER_NUMBER_MESSAGE", + "VIBER_OUT_CALL", + "VIBER_GOOGLE_VOICE_MESSAGE", + "WECHAT_VOICEACTION", + "LINKEDIN_ANDROID_MESSAGING", + "VK_SENDMSG", + "TACHYON_PHONE_AUDIO", + "TACHYON_PHONE" + ], + "enumDescriptions": [ + "", + "vnd.android.cursor.item/vnd.com.whatsapp.profile", + "vnd.android.cursor.item/vnd.com.whatsapp.voip.call", + "vnd.android.cursor.item/vnd.com.whatsapp.video.call", + "vnd.android.cursor.item/vnd.jp.naver.line.android.profile", + "vnd.android.cursor.item/vnd.jp.naver.line.android.call.voice", + "vnd.android.cursor.item/vnd.jp.naver.line.android.call.video", + "vnd.android.cursor.item/com.hike.chat.stickers.message", + "vnd.android.cursor.item/com.hike.chat.stickers.message.gassistant", + "vnd.android.cursor.item/com.hike.chat.stickers.voice_call", + "vnd.android.cursor.item/com.hike.chat.stickers.video_call", + "vnd.android.cursor.item/vnd.org.telegram.messenger.android.profile", + "vnd.android.cursor.item/vnd.ch.threema.app.profile", + "vnd.android.cursor.item/vnd.com.viber.voip.viber_out_call_none_viber", + "vnd.android.cursor.item/vnd.com.viber.voip.viber_number_call", + "vnd.android.cursor.item/vnd.com.viber.voip.viber_number_message", + "vnd.android.cursor.item/vnd.com.viber.voip.viber_out_call_viber", + "vnd.android.cursor.item/vnd.com.viber.voip.google_voice_message", + "vnd.android.cursor.item/vnd.com.tencent.mm.chatting.voiceaction", + "vnd.android.cursor.item/vnd.com.linkedin.android.messaging", + "vnd.android.cursor.item/vnd.com.vkontakte.android.assistant.sendmsg", + "vnd.android.cursor.item/com.google.android.apps.tachyon.phone.audio", + "vnd.android.cursor.item/com.google.android.apps.tachyon.phone" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiDataColumn": { + "description": "LINT.IfChange", + "id": "SocialGraphApiDataColumn", + "properties": { + "columnName": { + "description": "The name of the column in CP2 for raw_contact_data.", + "enum": [ + "UNKNOWN_COLUMN", + "DATA1", + "DATA2", + "DATA3", + "DATA4", + "DATA5", + "DATA6", + "DATA7", + "DATA8", + "DATA9", + "DATA10", + "DATA11", + "DATA12", + "DATA13", + "DATA14" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "DATA15 is not included since it is a BLOB." + ], + "type": "string" + }, + "value": { + "description": "The value of the data inside column.", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoAndroidDeviceInfo": { + "id": "SocialGraphApiProtoAndroidDeviceInfo", + "properties": { + "id": { + "description": "This string will represent either the device make and model in the case of FSA2, or the device model in the case of FSA1.", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoBirthdayDecoration": { + "id": "SocialGraphApiProtoBirthdayDecoration", + "properties": { + "birthdayDecorationVisibility": { + "enum": [ + "BIRTHDAY_DECORATION_VISIBILITY_UNSPECIFIED", + "BIRTHDAY_DECORATION_VISIBILITY_NONE", + "BIRTHDAY_DECORATION_VISIBILITY_SAME_AS_BIRTHDAY_VISIBILITY" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoContactDeletionContext": { + "description": "The ContactDeletionContext message is a wrapper around the generic ContactMutationContext data, and will include any needed delete specific data. NOTE: Before using this message please review go/people-api-contact-deletion-context", + "id": "SocialGraphApiProtoContactDeletionContext", + "properties": { + "mutationContext": { + "$ref": "SocialGraphApiProtoContactMutationContext", + "description": "The general mutation context data" + } + }, + "type": "object" + }, + "SocialGraphApiProtoContactMutationContext": { + "description": "This message is the generic mutation message which will encapsulate the fields which are shared between the create, update, and delete actions, including source of change, timestamp, and metadata messages passed in from the source for any source specific data (such as phone name/model from FSA).", + "id": "SocialGraphApiProtoContactMutationContext", + "properties": { + "androidDeviceInfo": { + "$ref": "SocialGraphApiProtoAndroidDeviceInfo", + "description": "Android device info should always be set when using either ANDROID_FSA1 or ANDROID_FSA2 as the source of the delete." + }, + "hostAppInfo": { + "$ref": "SocialGraphApiProtoHostAppInfo", + "description": "Host app info should always be set when using CONTACTS_COMPANION as the source." + }, + "source": { + "description": "The source of a mutate should provide all needed information a user should know, and should be enough information for the front end to generate a proper human readable string to describe the mutate to the user.", + "enum": [ + "UNKNOWN_SOURCE", + "CONTACT_MERGE", + "WEB_CONTACTS", + "CONTACTS_COMPANION", + "HEALER_DUPLICATES", + "HEALER_OTHER_CONTACT", + "HEALER_CONTACT_LIMIT", + "THIRD_PARTY", + "ANDROID_FSA1", + "ANDROID_FSA2", + "GMAIL_WEB_CONTACTS", + "CARBON_IMPORT_CONTACTS", + "IOS", + "MAC_OS_X", + "WINDOWS_PC", + "WINDOWS_PHONE", + "JUNK_EMAIL_CLEANUP", + "INTERNAL_TESTING", + "ONE_PICK", + "ASSISTANT_SMART_DEVICE_MANAGEMENT_API" + ], + "enumDescriptions": [ + "Writes should never set UNKNOWN explicitly. This field shall be used implicitly for writes while clients are still being converted over, but once all clients have been updated to properly write source values this will be enforced by a validator. This value may be set on reads for any contacts which do not have a proper source set.", + "Contact merge is for deletes and mutates which are caused by the contact merge action, either through an accepted suggestion or a manual merge by the user. more info: go/contact-merge owner: contacts-plus-be-eng@google.com", + "Web contacts refers to contacts.google.com ui contact manager. owner: people-web@google.com", + "Refers to the Contacts Companion sidebar found on many Google applications (Gmail, docs, etc) more info: go/companiondelete owner: contactsplus-eng@google.com", + "Automated healer which deletes exact duplicates of contacts. owner: focus-backend-eng@google.com", + "Generic enum for all healers which only delete other contacts (Automatically created contacts, which have no group labels). As they should never be seen by users, they do not need unique strings. owner: focus-backend-eng@google.com", + "HEALER_CONTACT_LIMIT source is used for deleting contacts that cause a domain to exceed safe domain shared contact limits. owner: people-directory-dev-team@google.com", + "The THIRD_PARTY source provides a general bucket for third party application contact mutates, which are generally handled by contact APIs exposed to third-party apps, like People API 3P, GData or CardDAV. If this source is chosen you may also set a client name in the third_party_info message to have the front end display the name of the client. As this will be seen by the user the client name should not be provided unless it is safe and human readable. If a client name is not sent, a default place holder \"Deleted/modified by a third party application\" or equivalent will be used instead. owner: people-api@google", + "Android FSA1 mutates are a two way sync action with older android devices. These mutates pass back a phone model string (e.g. SG1014) for denoting what type of phone the mutate came from. When this value is chosen, the phone model should be set in the PhoneInfo message whenever possible. owner: people-api@google", + "FSA2 based mutates are handled by internal people API calls. When this value is set, the PhoneInfo message should also be set, and the string value for phone identification should be set to the device name, which will be passed back from FSA2. owner: people-api@google", + "HTML Gmail ui (moose) has a contact manager built in which users can use to manage their contacts. url: https://mail.google.com/mail/u/2/h/ owner: gmail-fe-eng@google.com", + "This action handles importing IOS device backups from drive into an Android device. more info: http://sites/prod/google.com/carbon/home and go/drive-ios-migration owner: apps-backup-eng@google.com", + "9 through 12 are only to be used for carddav default client project lookups and will be removed following the completion of go/carddav-default-project-number. b/145776595 owner: people-api@google.com", + "", + "", + "", + "Junk email contact clean up actions is for contacts which are deleted via contacts assistant suggested junk email contact clean up assistant. This action is served through google web contacts and the android contacts app. more info: go/assistants-junk-contacts owner: contacts-plus-be-eng@google.com", + "This option is a generic value to be used for internal Google tests.", + "\"OnePick is a consistent, centralized Google solution connecting applications (e.g., G Suite) to data sources (e.g., Drive, Contacts, Photos, Calendar) on the web.\" This supports an iframe on gmail to edit contactgroups (including deleting the contained contacts) inside of the compose email dialog. more info: go/onepick owner: onepick-eng@google.com", + "Assistant Settings will delete contacts and relationships + guests for Assistant Hospitality devices. Initially, this will be used to manage the contacts for go/merrill-prd, go/merrill-console-ux-prd. Screenshot: http://screen/ufej8N9aOMw owner: assistant-hospitality@, assistant-communication@" + ], + "type": "string" + }, + "thirdPartyInfo": { + "$ref": "SocialGraphApiProtoThirdPartyInfo", + "description": "Third party info should always be set when using THIRD_PARTY as the source." + }, + "timestamp": { + "description": "Timestamp representing when the contact was mutated. This should not be set on write, as it is the job of focus backend to determine this timestamp. This field will be populated on read with the data written by FBS.", + "format": "google-datetime", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoContactState": { + "description": "Contact state and related metadata. See go/fbs-contacts-trash.", + "id": "SocialGraphApiProtoContactState", + "properties": { + "deletionContext": { + "$ref": "SocialGraphApiProtoContactDeletionContext", + "description": "A trashed contact may have deletion context set, which indicates where and when the contact was trashed. Deletion context is cleared when the contact is untrashed." + }, + "deletionState": { + "enum": [ + "DEFAULT", + "TRASHED" + ], + "enumDescriptions": [ + "Contacts which don't fall into any other state.", + "Contacts are trashed. Trashed contacts are retained for 30 days to allow users to review and recover them, after which they are automatically wiped out. Trashed contacts are not returned on reads unless explicitly requested." + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoDelegatedGroupId": { + "description": "Represents a delegated group id, delegated groups refer to groups that are owned by another gaiaId, but this user has access to.", + "id": "SocialGraphApiProtoDelegatedGroupId", + "properties": { + "id": { + "description": "Required. The id for a delegated group.", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoDisplayNameSource": { + "id": "SocialGraphApiProtoDisplayNameSource", + "properties": { + "source": { + "enum": [ + "DISPLAY_NAME_SOURCE_UNSPECIFIED", + "LIMITED_PROFILE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoHostAppInfo": { + "id": "SocialGraphApiProtoHostAppInfo", + "properties": { + "hostAppName": { + "description": "This string will represent the info for the host app to the Companion sidebar", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoLimitedProfileNameSettings": { + "id": "SocialGraphApiProtoLimitedProfileNameSettings", + "properties": { + "partialNameOptions": { + "$ref": "SocialGraphApiProtoPartialNameOptions", + "description": "Required. Describes which shortening option the user implicitly chose for their limited profile. E.g., if 'John Doe' chose 'John D.', they implicitly chose: partial_name_options { given_name_spec { show_all: true } family_name_spec: { show_initial: true truncation_indicator: PERIOD } } While we'll in all cases serve the actual name chosen by the user for limited profiles (stored below), we'll use this information to recompute the default limited profile to be rendered to users when they change their core name." + }, + "verbatimFullName": { + "description": "The actual textual name that was chosen by the user in the UI. E.g., if 'John Doe' chose 'John D.', this holds 'John D.'. While `partial_name_options` allows the limited profile name to be computed from the core name, the resulting shortened name might change across different versions of the name shortening logic, and we want to preserve the user's choice verbatim whenever possible. This field will be cleared when the two conditions below are met: (1) A successful core name change is not accompanied by a limited profile settings update and (2) The shortened name computed from `partial_name_options` yields a different result than what is originally stored in `verbatim_full_name`. When this happens, the limited profile is effectively *disabled*. E.g., if 'John Doe' from the example above changes their name to 'Jane Doe' and no LimitedProfileSettings are provided, `Jane D.` is the resulting shortened name. Therefore `verbatim_full_name` will be cleared and the limited profile settings will be disabled. On the other hand, if they change their name to `John Dõe`, the resulting shortened name remains `John D.`, and `verbatim_full_name` is kept as is.", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoLimitedProfilePictureSettings": { + "id": "SocialGraphApiProtoLimitedProfilePictureSettings", + "properties": { + "profilePictureOption": { + "enum": [ + "PROFILE_PICTURE_OPTION_UNSPECIFIED", + "STANDARD_PROFILE_PICTURE", + "MONOGRAM" + ], + "enumDescriptions": [ + "", + "Display the same picture used in the core profile. If there is no picture in the core profile, it will fallback to the `MONOGRAM` option below, so as to avoid revealing more initials than the limited profile does.", + "Display a monogram photo. The monogram will be computed from the short name, as to not leak information from the core name. E.g., if the core name is `John Doe` and the limited profile name is `Doe`, the monogram will show `D` (versus `J` that would be shown for `John Doe`)." + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoLimitedProfileSettings": { + "description": "Next ID: 9", + "id": "SocialGraphApiProtoLimitedProfileSettings", + "properties": { + "disableReason": { + "description": "Indicates why the limited profile has been disabled. Will be set iff the limited profile is disabled. This field can only be set server-side and must not be used by external clients when mutating LimitedProfiles.", + "enum": [ + "DISABLE_REASON_UNSPECIFIED", + "INCOMPATIBLE_NAME_ONLY_MUTATION", + "NAME_ABUSE_VIOLATION" + ], + "enumDescriptions": [ + "", + "This means that a core name mutation was performed with no mutation to LimitedProfileSettings and the limited profile name recomputed from the existing `name_settings` was different from the one previously chosen by the user (stored in `verbatim_name`).", + "The Limited Profile name violates some Google policy. Note: regular checks for name violation are performed in FBS when the LimitedProfileSettings are created and prevent the mutation from succeeding (i.e., we DO NOT store LP settings with `NAME_ABUSE_VIOLATION` as disable reason in this case). This disable reason exists instead so that we can respond manually to any abuse escalation involving LP names." + ], + "type": "string" + }, + "gpayOobe": { + "description": "Created with user input in GPay OOBE.", + "type": "boolean" + }, + "lastUpdateTime": { + "description": "Timestamp indicating when the settings were last stored. Read-only field.", + "format": "google-datetime", + "type": "string" + }, + "legacyDiscoverability": { + "description": "A user who had legacy discoverability had a Limited Profile autogenerated for them, either through a healer or in the live path in FBS.", + "enum": [ + "AUTOGEN_STATUS_UNSPECIFIED", + "AUTOGEN_UNCONFIRMED", + "AUTOGEN_CONFIRMED" + ], + "enumDescriptions": [ + "", + "The LP was autogenerated and not yet surfaced and acted on by the user. LPs in this state are subject to disabling in certain conditions.", + "The autogenerated LP ws surfaced to the user and they performed some action on it. E.g. it was displayed in Whitepages UI and the user disabled discoverability." + ], + "type": "string" + }, + "myAccount": { + "description": "Created with user input in MyAccount UI.", + "type": "boolean" + }, + "nameSettings": { + "$ref": "SocialGraphApiProtoLimitedProfileNameSettings", + "description": "Required. Defines how the name should be formatted in the limited profile." + }, + "profilePictureSettings": { + "$ref": "SocialGraphApiProtoLimitedProfilePictureSettings", + "description": "DEPRECATED. Profile picture choices are controlled through the ACL of the Photo field." + } + }, + "type": "object" + }, + "SocialGraphApiProtoPartialNameOptions": { + "id": "SocialGraphApiProtoPartialNameOptions", + "properties": { + "language": { + "description": "IETF BCP-47 language code that should be used for localizing the name computation (go/bcp-47). If not provided, we'll use the name origin detector to infer it. If unable to detect, \"en\" will be assumed.", + "type": "string" + }, + "parsedDisplayNameSpec": { + "$ref": "SocialGraphApiProtoPartialNameOptionsParsedDisplayNameSpec" + }, + "twoPartNameSpec": { + "$ref": "SocialGraphApiProtoPartialNameOptionsTwoPartNameSpec" + } + }, + "type": "object" + }, + "SocialGraphApiProtoPartialNameOptionsNamePartSpec": { + "description": "Specifies how each piece of the name should be handled. Names are structured into given name and family name and this allows an independent specification for each of these pieces. Very limited preprocessing is done for this option (leading whitespace trimming mostly). Composed names are treated as a single unit and are not broken down.", + "id": "SocialGraphApiProtoPartialNameOptionsNamePartSpec", + "properties": { + "hideAll": { + "description": "Completely omit that part of the name.", + "type": "boolean" + }, + "showAll": { + "description": "Show the complete name. Note that this does not express the same semantics as show_first_n_chars=length_of_name, because when regenerating a shortened name the new name could have more characters, thus yielding a different result.", + "type": "boolean" + }, + "showFirstNChars": { + "description": "Show first `n` characters. Same note about characters referring to \"grapheme_clusters\" applies.", + "format": "int32", + "type": "integer" + }, + "showInitial": { + "description": "Show only the initial, i.e., a single character. Note that \"character\" refers to \"user-perceived\" characters, aka a \"grapheme cluster\". See go/morphology for more details.", + "type": "boolean" + }, + "truncationIndicator": { + "description": "Which truncation indicator to use after the shortened piece of the name. Will be ignored for the `hide_all` or `show_all` options.", + "enum": [ + "TRUNCATION_INDICATOR_UNSPECIFIED", + "ELLIPSIS", + "PERIOD" + ], + "enumDescriptions": [ + "", + "Add an ellipsis after a partial name, e.g., `Joh… Do…`. The actual character(s) that will be used for the ellipsis are locale-aware and will vary according to the provided/inferred language.", + "Add a period after a partial name, e.g. `J. D.`" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoPartialNameOptionsParsedDisplayNameSpec": { + "description": "These options use more sophisticated logic from a location-aware name detector to parse the full name of a user into structured parts and operate on those parts. For more information on how names are parsed, see the NameOccurrence proto definition: http://google3/quality/peoplesearch/namedetector/detector/proto/name_occurrence.proto?l=50\u0026rcl=334484707 Next ID: 7", + "id": "SocialGraphApiProtoPartialNameOptionsParsedDisplayNameSpec", + "properties": { + "allInitialsFromParsedName": { + "description": "Extract an initial from each parsed name. For example, \"Niels Henrik David Bohr\" yields \"N. H. D. B.\". Other special cases are treated as follows: - Hyphenated names are broken down: \"Angelina Jollie-Pit\" yields \"A. J. P.\"; - Prefixes are ignored: \"Prof. Albus Dumbledore\" yields \"A. D.\"; - Auxiliaries are ignored: \"Luís de Camões\" yields \"L. C.\".", + "type": "boolean" + }, + "firstInitialAndVeryLastName": { + "description": "Show the initial of the very first name and the very last name, e.g. \"Ana Maria Silva\" yields \"A. Silva\". - Hyphenated names are broken down: \"Angelina Jollie-Pitt\" yields \"A. Pitt\"; - Prefixes are ignored: \"Prof. Albus Dumbledore\" yields \"A. Dumbledore\"; - Auxiliaries are ignored: \"Luís de Camões\" yields \"L. Camões\".", + "type": "boolean" + }, + "knowledgeGraphNameShortening": { + "description": "Shorten the display name using the Knowledge Graph name shortener (go/short-names).", + "type": "boolean" + }, + "truncationIndicator": { + "description": "Which truncation indicator to use after each shortened part of the name. Will be ignored for the `knowledge_graph_name_shortening` option.", + "enum": [ + "TRUNCATION_INDICATOR_UNSPECIFIED", + "ELLIPSIS", + "PERIOD" + ], + "enumDescriptions": [ + "", + "Add an ellipsis after a partial name, e.g., `Joh… Do…`. The actual character(s) that will be used for the ellipsis are locale-aware and will vary according to the provided/inferred language.", + "Add a period after a partial name, e.g. `J. D.`" + ], + "type": "string" + }, + "veryFirstNameAndAllInitials": { + "description": "Show the full very first name and all the other initials, e.g. \"Ana Maria Silva\" yields \"Ana M. S.\". - Hyphenated names are broken down: \"Angelina Jollie-Pit\" yields \"Angelina J. P.\"; - Prefixes are ignored: \"Prof. Albus Dumbledore\" yields \"Albus D.\"; - Auxiliaries are ignored: \"Luís de Camões\" yields \"Luís C.\".", + "type": "boolean" + }, + "veryFirstNameOnly": { + "description": "Show the very first name only, e.g. \"Ana Maria Silva\" yields \"Ana\". - Hyphenated names are broken down: \"Mary-Kate Smith\" yields \"Mary\"; - Prefixes are ignored: \"Prof. Albus Dumbledore\" yields \"Albus\";", + "type": "boolean" + } + }, + "type": "object" + }, + "SocialGraphApiProtoPartialNameOptionsTwoPartNameSpec": { + "description": "Holds the name specs for the two parts of a name, as they are structured in storage (given and family).", + "id": "SocialGraphApiProtoPartialNameOptionsTwoPartNameSpec", + "properties": { + "familyNameSpec": { + "$ref": "SocialGraphApiProtoPartialNameOptionsNamePartSpec" + }, + "givenNameSpec": { + "$ref": "SocialGraphApiProtoPartialNameOptionsNamePartSpec" + } + }, + "type": "object" + }, + "SocialGraphApiProtoPronounData": { + "description": "Design doc: go/pronouns-backend Represents a user's preferred pronouns.", + "id": "SocialGraphApiProtoPronounData", + "properties": { + "pronounEntry": { + "items": { + "$ref": "SocialGraphApiProtoPronounEntry" + }, + "type": "array" + } + }, + "type": "object" + }, + "SocialGraphApiProtoPronounEntry": { + "id": "SocialGraphApiProtoPronounEntry", + "properties": { + "languageCode": { + "description": "Locale option in which the pronouns were set, in the BCP-47 format. Set by the client at write time.", + "type": "string" + }, + "pronounType": { + "description": "The pronoun entry type that the user has selected. This indicates which locale-independent classification of pronoun was selected (or optionally, if it is a custom field).", + "enum": [ + "UNKNOWN", + "CUSTOM", + "FEMININE", + "MASCULINE", + "NEUTRAL" + ], + "enumDescriptions": [ + "Unknown pronoun type", + "User has defined their own pronouns using custom field entry, available in the \"value\" field.", + "go/keep-sorted start User has selected a feminine pronoun (she/her in English)", + "User has selected a masculine pronoun (he/him in English)", + "User has selected a neutral pronoun (they/them in English) go/keep-sorted end" + ], + "type": "string" + }, + "value": { + "description": "The user's preferred pronouns. Eg. \"they / them\". This is a human-readable string to be displayed as the user's pronoun. Set at write-time, regardless of pronoun-type. Value is returned as it was set (no localization).", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoPronunciation": { + "description": "Stores the pronunciation as phoneme for the given word/text. Next ID: 8", + "id": "SocialGraphApiProtoPronunciation", + "properties": { + "learningSessionId": { + "description": "All pronunciations with the same learning_session_id were learnt in the same learning flow, e.g. multiple name segments learnt simultaneously from a recording in the Your People UI.", + "type": "string" + }, + "learningSource": { + "enum": [ + "LEARNING_SOURCE_UNKNOWN", + "EXPLICIT_YOUR_PEOPLE_UI", + "INFERRED_COMMS_DIALOG" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "locale": { + "description": "The locale used when learning the pronunciation. BCP-47 language code, e.g. \"en-US\".", + "type": "string" + }, + "phonemes": { + "description": "Phoneme sequence representing how the user pronounces |token|. Format is specified by the phonology_type type field, e.g. go/psampa is the preferred phonology type used by the TTS team.", + "type": "string" + }, + "phonologyType": { + "enum": [ + "PHONOLOGY_TYPE_UNKNOWN", + "PSAMPA" + ], + "enumDescriptions": [ + "", + "Used in PronBuffet. Preferred phonology type to pass to TTS." + ], + "type": "string" + }, + "spellingHint": { + "description": "An optional user-specified spelling of this token, to improve pronunciation learning success rate. E.g. the token may be \"Jana\" and the spelling hint \"jah-nah\".", + "type": "string" + }, + "token": { + "description": "Corresponds to a word segment of the contact name. E.g. for a contact with given name \"John Doe\", last name \"Smith\" and nickname \"Best Dad\", |token| can be any of {John, Doe, Smith, Best, Dad}.", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoPronunciations": { + "description": "Container proto for repeated pronunciation objects. For example, a set of pronunciations that can be added to a single name field.", + "id": "SocialGraphApiProtoPronunciations", + "properties": { + "pronunciation": { + "items": { + "$ref": "SocialGraphApiProtoPronunciation" + }, + "type": "array" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileData": { + "description": "Data contained in every search profile. go/janata-profile-in-sgbe.", + "id": "SocialGraphApiProtoSearchProfileData", + "properties": { + "description": { + "description": "A free-text summary that the user inputs. E.g. \"Coder by day, jazz guitarist by night.\"", + "type": "string" + }, + "education": { + "items": { + "$ref": "SocialGraphApiProtoSearchProfileEducation" + }, + "type": "array" + }, + "interest": { + "items": { + "$ref": "SocialGraphApiProtoSearchProfileEntity" + }, + "type": "array" + }, + "language": { + "description": "Indicates the language of this search profile. Use ISO-639 2-letter language code to specifying the language that this profile is created in.", + "type": "string" + }, + "location": { + "items": { + "$ref": "SocialGraphApiProtoSearchProfileLocation" + }, + "type": "array" + }, + "metadata": { + "$ref": "SocialGraphApiProtoSearchProfileMetadata" + }, + "occupation": { + "items": { + "$ref": "SocialGraphApiProtoSearchProfileEntity" + }, + "type": "array" + }, + "publicEmail": { + "description": "This is the email that the user has chosen to display on their \"SearchCard\" publicly.", + "items": { + "type": "string" + }, + "type": "array" + }, + "publicPhoneNumber": { + "description": "This is the phone number that the user has chosen to display on their \"SearchCard\" publicly.", + "items": { + "type": "string" + }, + "type": "array" + }, + "socialLink": { + "items": { + "$ref": "SocialGraphApiProtoSearchProfileSocialLink" + }, + "type": "array" + }, + "website": { + "items": { + "type": "string" + }, + "type": "array" + }, + "workplace": { + "items": { + "$ref": "SocialGraphApiProtoSearchProfileWorkplace" + }, + "type": "array" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileEducation": { + "description": "Wraps information about a user's eductational background.", + "id": "SocialGraphApiProtoSearchProfileEducation", + "properties": { + "endTime": { + "$ref": "GoogleTypeDate" + }, + "fieldOfStudy": { + "items": { + "$ref": "SocialGraphApiProtoSearchProfileEntity" + }, + "type": "array" + }, + "institution": { + "$ref": "SocialGraphApiProtoSearchProfileEntity" + }, + "startTime": { + "$ref": "GoogleTypeDate" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileEntity": { + "description": "This proto represents either a KG-entity, as represented by it's MID, or free-string text.", + "id": "SocialGraphApiProtoSearchProfileEntity", + "properties": { + "countryCode": { + "description": "Corresponding country code. Refer to go/people-search-dashboard for code list.", + "type": "string" + }, + "entity": { + "description": "Corresponding mid in KG.", + "type": "string" + }, + "name": { + "description": "Custom name of entity if there is no corresponding place/entity in KG (mid)", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileLocation": { + "description": "Wraps information about a user's location, if they have chosen to share it on their SearchCard.", + "id": "SocialGraphApiProtoSearchProfileLocation", + "properties": { + "endTime": { + "$ref": "GoogleTypeDate" + }, + "lengthOfStay": { + "format": "google-duration", + "type": "string" + }, + "place": { + "$ref": "SocialGraphApiProtoSearchProfileEntity" + }, + "point": { + "$ref": "SocialGraphApiProtoSearchProfileLocationInfo" + }, + "startTime": { + "$ref": "GoogleTypeDate" + }, + "type": { + "enum": [ + "LOCATION_TYPE_UNKNOWN", + "HOMETOWN", + "CURRENT", + "PAST" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileLocationInfo": { + "id": "SocialGraphApiProtoSearchProfileLocationInfo", + "properties": { + "lat": { + "description": "Degrees [-90 .. 90]", + "format": "double", + "type": "number" + }, + "lon": { + "description": "Degrees [-180 .. 180]", + "format": "double", + "type": "number" + }, + "radius": { + "description": "Meters", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileMetadata": { + "description": "This proto represents metadata of the users SearchProfile like profile state, GOG account id etc.,", + "id": "SocialGraphApiProtoSearchProfileMetadata", + "properties": { + "accountId": { + "description": "Unique contributor account id allocated by presence/janata infrastructure. This will be used in the frontend for various actions like reporting errors, photo uploads etc., go/boba-janata, go/cleanup-contributor-creation", + "type": "string" + }, + "accountMid": { + "description": "Account KG entity mid assigned to this user required by old janata serving stack. This is not required anymore for serving. But might need it for historical purposes. See https://hume.google.com/edit/g/11gg6cyvch for more details.", + "type": "string" + }, + "aresId": { + "description": "Ares id used for tracking the auto moderation.", + "type": "string" + }, + "state": { + "description": "Current state of the Search Profile.", + "items": { + "$ref": "SocialGraphApiProtoSearchProfileState" + }, + "type": "array" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileSocialLink": { + "description": "Wraps social profile information about the user.", + "id": "SocialGraphApiProtoSearchProfileSocialLink", + "properties": { + "link": { + "type": "string" + }, + "type": { + "enum": [ + "SOCIAL_LINK_TYPE_UNKNOWN", + "FACEBOOK", + "INSTAGRAM", + "LINKEDIN", + "PINTERIST", + "SOUNDCLOUD", + "TWITTER", + "YOUTUBE", + "PINTEREST", + "JUMPROPE", + "TIKTOK", + "WORDPRESS", + "FIREWORK", + "SNAPCHAT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "DEPRECATED(b/158738685): Misspelling, use PINTEREST below instead.", + "", + "", + "", + "", + "go/3rd-profile-sgbe-cc-sync", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileState": { + "id": "SocialGraphApiProtoSearchProfileState", + "properties": { + "changeTimestamp": { + "description": "Timestamp of when the state was changed.", + "format": "google-datetime", + "type": "string" + }, + "displayTimestamp": { + "description": "This will be used to display status to the user at a set time. If set to a value after `change_timestamp`, the change will not be 'reflected' until this time.", + "format": "google-datetime", + "type": "string" + }, + "type": { + "description": "State that the UserProfile was changed to.", + "enum": [ + "UNKNOWN_PROFILE_STATE", + "STATE_DRAFT", + "STATE_FAILED_PHONE_VERIFICATION", + "STATE_FAILED_ID_VERIFICATION", + "STATE_FAILED_CONTENT_VERIFICATION", + "STATE_NEEDS_MANUAL_REVIEW", + "STATE_PUBLIC", + "STATE_DELETED", + "STATE_CONTENT_VERIFICATION_REQUIRED", + "STATE_REJECTED_FOR_IMPERSONATION", + "STATE_REQUIRES_ID_VERIFICATION" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSearchProfileWorkplace": { + "description": "Wraps information about a user working at a specific place.", + "id": "SocialGraphApiProtoSearchProfileWorkplace", + "properties": { + "company": { + "$ref": "SocialGraphApiProtoSearchProfileEntity" + }, + "endTime": { + "$ref": "GoogleTypeDate" + }, + "startTime": { + "$ref": "GoogleTypeDate" + } + }, + "type": "object" + }, + "SocialGraphApiProtoSyncInfo": { + "description": "LINT.IfChange", + "id": "SocialGraphApiProtoSyncInfo", + "properties": { + "sourceId": { + "description": "CP2 sourceid column.", + "type": "string" + }, + "sync1": { + "description": "CP2 sync1 column.", + "type": "string" + }, + "sync2": { + "description": "CP2 sync2 column.", + "type": "string" + }, + "sync3": { + "description": "CP2 sync3 column.", + "type": "string" + }, + "sync4": { + "description": "CP2 sync4 column.", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoThirdPartyInfo": { + "id": "SocialGraphApiProtoThirdPartyInfo", + "properties": { + "clientName": { + "description": "Not to be used. We have since moved to a lookup string at read time approach as opposed to storing data at write time. b/146072927", + "type": "string" + }, + "projectNumber": { + "description": "Project number of the third party application performing the delete to be looked up via ClientAuthConfig during display time for users to know the current name of an application which has deleted contact data.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphApiProtoUsageInfo": { + "description": "Usage information. This is currently used for device contacts. Next ID: 3", + "id": "SocialGraphApiProtoUsageInfo", + "properties": { + "lastTimeContacted": { + "description": "Last time a contact was contacted.", + "format": "google-datetime", + "type": "string" + }, + "timesContacted": { + "description": "Number of times a contact was contacted.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiAffinityMetadata": { + "description": "Extra ranking info returned with affinity data. This info is returned by DAS and passed to PAPI clients (Yenta), where it is used for ranking and filtering device and server suggestions together.", + "id": "SocialGraphWireProtoPeopleapiAffinityMetadata", + "properties": { + "clientInteractionInfo": { + "$ref": "SocialGraphWireProtoPeopleapiAffinityMetadataClientInteractionInfo", + "description": "Information regarding client interactions." + }, + "cloudDeviceDataInfo": { + "$ref": "SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo", + "description": "Device information about the candidate available in the cloud." + }, + "cloudScore": { + "description": "Affinity score for the cloud contact.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiAffinityMetadataClientInteractionInfo": { + "id": "SocialGraphWireProtoPeopleapiAffinityMetadataClientInteractionInfo", + "properties": { + "isDirectClientInteraction": { + "description": "Whether this suggestion is an edge directly from the client. E.g., a suggestion with which the user shared a photo on photos app.", + "type": "boolean" + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo": { + "id": "SocialGraphWireProtoPeopleapiAffinityMetadataCloudDeviceDataInfo", + "properties": { + "deviceScore": { + "description": "The partial affinity score only counting device features.", + "format": "double", + "type": "number" + }, + "isDeviceDataKnown": { + "description": "Whether device data about this candidate were available in the cloud.", + "type": "boolean" + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData": { + "description": "Waldo-related extension data.", + "id": "SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData", + "properties": { + "availabilities": { + "$ref": "GoogleInternalAppsWaldoV1alphaUserAvailabilities" + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiExtensionCorpDeskbookingLocationExtendedData": { + "description": "Corp Deskbooking-related extension data for use with Location.", + "id": "SocialGraphWireProtoPeopleapiExtensionCorpDeskbookingLocationExtendedData", + "properties": { + "validityInterval": { + "$ref": "GoogleTypeInterval", + "description": "If present, indicates that the location is valid only for this time interval." + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData": { + "description": "Dynamite-related extension data.", + "id": "SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData", + "properties": { + "avatarUrl": { + "description": "Avatar image URL for a Google Group, based on the member count.", + "type": "string" + }, + "description": { + "description": "Short description of this bot. Only set if EntityType == BOT.", + "type": "string" + }, + "developerName": { + "description": "Display name of bot developer. Only set if EntityType == BOT.", + "type": "string" + }, + "dndState": { + "enum": [ + "UNKNOWN_DND_STATE", + "AVAILABLE", + "DND" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "entityType": { + "enum": [ + "UNKNOWN_ENTITY_TYPE", + "PERSON", + "GOOGLE_GROUP", + "BOT" + ], + "enumDescriptions": [ + "", + "Regular user.", + "Google Group.", + "Dynamite bot." + ], + "type": "string" + }, + "memberCount": { + "description": "Number of members (direct or indirect) in a Google Group. Only an estimate for large groups (currently \u003e 1K direct / indirect members).", + "format": "int64", + "type": "string" + }, + "organizationInfo": { + "$ref": "AppsDynamiteSharedOrganizationInfo", + "description": "NEXT TAG: 9" + }, + "presence": { + "enum": [ + "UNDEFINED_PRESENCE", + "ACTIVE", + "INACTIVE", + "UNKNOWN", + "SHARING_DISABLED" + ], + "enumDescriptions": [ + "", + "", + "", + "Not a Dynamite user, or if the user has been invited but never logged into Dynamite ever before.", + "The user has disabled presence sharing. This is currently only possible via the Classic setting to disable sharing your last active time (see external docs here: https://support.google.com/hangouts/answer/6083257?hl=en)." + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData": { + "description": "Next tag number: 3", + "id": "SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData", + "properties": { + "actorId": { + "description": "Actor ID of the person, if available (if the person has used the Paisa app).", + "type": "string" + }, + "subtitle": { + "description": "Display subtitle, which may be used in suggestion/autocompletion results. Generally, this will be the Actor's registered Paisa phone number, in unmasked or masked form (e.g. +1 ***-***-1234) depending on visibility rules.", + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData": { + "id": "SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData", + "properties": { + "familyStatus": { + "description": "Whether the person is in the same family as the requesting user. Family here refers to https://families.google.com/families. This information is read from SuperGlue, and can be consumed by clients, e.g. Assistant and Photos. If this field is not set, the person is not in the user's family.", + "enum": [ + "FAMILY_STATUS_UNSPECIFIED", + "FAMILY_MEMBER" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "hiddenKeys": { + "description": "The full list of hidden keys associated with this person. These are the external equivalent to the keys stored by the ConnectionLabelService, and they can be passed to the MutateConnectionLabel endpoint to unhide this person. This field will only be set if hide_type is HIDDEN.", + "items": { + "$ref": "SocialDiscoveryExternalEntityKey" + }, + "type": "array" + }, + "hideType": { + "description": "If this field is not set, the person is visible (implicit).", + "enum": [ + "HIDE_TYPE_UNSPECIFIED", + "HIDDEN" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData": { + "description": "NEXT_ID: 5", + "id": "SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData", + "properties": { + "birthdayStatus": { + "description": "Whether the person has birthday field populated.", + "enum": [ + "BIRTHDAY_STATUS_UNSPECIFIED", + "HAS_BIRTHDAY" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "familyStatus": { + "description": "Whether the person is in the same family as the requesting user. Family here refers to https://families.google.com/families. This information is read from SuperGlue, and can be consumed by clients, e.g. Assistant and Photos. If this field is not set, the person is not in the user's family.", + "enum": [ + "FAMILY_STATUS_UNSPECIFIED", + "FAMILY_MEMBER" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "hiddenKeys": { + "description": "The full list of hidden keys associated with this person. These are the external equivalent to the keys stored by the ConnectionLabelService, and they can be passed to the MutateConnectionLabel endpoint to unhide this person. This field will only be set if hide_type is HIDDEN.", + "items": { + "$ref": "SocialDiscoveryExternalEntityKey" + }, + "type": "array" + }, + "hideType": { + "description": "If this field is not set, the person is visible (implicit).", + "enum": [ + "HIDE_TYPE_UNSPECIFIED", + "HIDDEN" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialPersonalizationKnexAnnotation": { + "id": "SocialPersonalizationKnexAnnotation", + "properties": { + "item": { + "items": { + "$ref": "SocialPersonalizationKnexAnnotationItem" + }, + "type": "array" + } + }, + "type": "object" + }, + "SocialPersonalizationKnexAnnotationItem": { + "description": "Next Tag: 8", + "id": "SocialPersonalizationKnexAnnotationItem", + "properties": { + "confidence": { + "format": "float", + "type": "number" + }, + "description": { + "description": "Description of the item for debugging. Note that this field is populated only in a few select places.", + "type": "string" + }, + "equivalentMid": { + "description": "If this field exists, then there exists a commonly used MID (typically a public MID, i.e., one in /m/) that approximates the meaning for this particular k'nex topic. For example, the value of this field for k'nex topic Tennis (/t/236) is /m/07bs0. The difference between k'nex /m/07bs0 and webref /m/07bs0 is as follows. If a content is annotated with webref /m/07bs0, then the content has to explicitly mention \"Tennis\" in some way, whereas if a content is annotated with k'nex /m/07bs0, then the content simply needs to talk about stuff related to tennis. Note that this field is not populated for all queries. For example, the compound concept \"Tennis in California\" does not have an associated mid. This field is intended to help external clients transit to k'nex.", + "format": "uint64", + "type": "string" + }, + "generality": { + "description": "A score that measures how broad / narrow a topic is, independent of the document and/or user profile. This is an experimental score and is not populated by default. Currently, it is in the range of [0, 1], where the higher the score is, the more general a topic is. Please talk to sherlock-dev@ before using this score. Populated when debug_level \u003e 0.", + "format": "float", + "type": "number" + }, + "mid": { + "description": "This is an MID in the /t/ namespace. We will migrate them to /g/ in Q3'15.", + "format": "uint64", + "type": "string" + }, + "relatedEntity": { + "items": { + "$ref": "SocialPersonalizationKnexAnnotationItemTopic" + }, + "type": "array" + }, + "topicality": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "SocialPersonalizationKnexAnnotationItemTopic": { + "id": "SocialPersonalizationKnexAnnotationItemTopic", + "properties": { + "mid": { + "format": "uint64", + "type": "string" + }, + "score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "SocialStanzaDeliveryRestriction": { + "description": "Restrictions that affect the delivery of the stanza. By default, Stanzas are publishable, which means that they are eligible for indexing, aggregation, and other delivery options (Goops, Moonshine, notifications). A stanza can be created in a \"do not publish\" state; the stanza will not be published anywhere. The restriction can subsequently be removed with an UpdateStanza call, at which point the post will be treated as if it were newly created. A few notes/limitations about this option: 1. Client should keep a stanza unpublishable for a small period of time (if possible to) so that our ranking system does not consider this as a stale post (thus downranking the post). 2. Client should keep the number of unpublishable stanzas to a minimum, to reduce under-serving. 3. Updating a stanza from publishable to unpublishable after creation is not supported 4. At this time, publishing options are only supported on root stanzas; let us know if you require this for child stanzas. 5. Similarly, this is only supported as a global restriction. It may not be set as a per-destination-stream restriction.", + "id": "SocialStanzaDeliveryRestriction", + "properties": { + "doNotPublish": { + "type": "boolean" + } + }, + "type": "object" + }, + "SocialStanzaModerationInfo": { + "description": "ModerationInfo stores the information of moderation for a stanza in a specific destination stream. Including who moderated and why.", + "id": "SocialStanzaModerationInfo", + "properties": { + "moderationReason": { + "description": "The reason why this stanza was moderated provided by client.", + "type": "string" + }, + "moderator": { + "$ref": "SecurityCredentialsPrincipalProto" + }, + "moderatorType": { + "description": "Type of moderation. Semantically REQUIRED, http://go/required At write time, only ModeratorType.AUTO_MODERATOR is allowed. For all other cases, this information is inferred from the request at write time.", + "enum": [ + "MODERATOR_TYPE_UNKNOWN", + "SYSTEM", + "MODERATOR", + "SYSTEM_BADWORD_BLACKLIST", + "AUTO_MODERATOR" + ], + "enumDescriptions": [ + "", + "Moderated by system - premod channel, preapproved/banned users etc.", + "Moderated by the Channel moderator.", + "Moderated by system - didn't pass bad words filtering.", + "Automatic moderation triggered on behalf of the moderator" + ], + "type": "string" + } + }, + "type": "object" + }, + "SocialStanzaStanzaRestriction": { + "description": "Contains various restriction information about a stanza, derived from properties of the stanza, the viewer and the creator. Restrictions stored in this message are not related to direct/indirect relationship between the viewer and the creator of stanza. Some examples are: - Abusive - Legal - Racy - Content not suitable for age - Porn - Blocked by country/geo of viewer. - Restricted by stanza creator (not the user specific block). - etc... Please see go/stanza-abuse-flow for more details.", + "id": "SocialStanzaStanzaRestriction", + "properties": { + "abuseTypes": { + "description": "The abuses.", + "items": { + "$ref": "AbuseiamAbuseType" + }, + "type": "array" + }, + "appealState": { + "description": "The appeal state.", + "enum": [ + "UNKNOWN_APPEAL_STATE", + "APPEALED", + "APPEAL_REJECTED", + "APPEAL_APPROVED" + ], + "enumDescriptions": [ + "Unknown appeal state.", + "The user has appealed and is waiting for review.", + "The user appeal has been rejected by G+ admin.", + "The user appeal has been approved by G+ admin." + ], + "type": "string" + }, + "contentRestriction": { + "$ref": "AbuseiamContentRestriction", + "description": "Field to explain various restrictions of the Stanza. Some examples of restrictions are: - Not permitted because of legal restrictions of geography/country of viewer or creator. - Content not suitable for current viewer i.e. porn, abusive, racy. - Creator restricted the content to an age group. - etc..." + }, + "deleteReason": { + "description": "Delete reasons. This is a repeated field because an stanza can be deleted multiple times due to different reasons such as user_delete, admin_delete.", + "items": { + "enum": [ + "UNKNOWN_DELETE_REASON", + "USER_ACCOUNT_DELETE", + "OWNER_DELETE", + "SPAM_ADMIN_DELETE", + "SPAM_ADMIN_DELETE_CHILD_PORN", + "SYSTEM_DELETE", + "USER_ACCOUNT_DISABLE", + "DESTINATION_STREAM_OWNER_DELETE", + "SBE_ADMIN_TAKEDOWN", + "CLIENT_ADMIN_TAKEDOWN", + "SPAM_ADMIN_SUSPEND", + "ANCESTOR_DELETE", + "USER_PRODUCT_DOWNGRADE", + "USER_PRODUCT_SUSPENDED", + "ENTITY_STATE_CHANGE", + "ENTITY_ADMIN_DELETED", + "ENTITY_DELETED_DUE_TO_CLASSIFICATION", + "ENTITY_PURGED", + "USER_UNDERAGE", + "YOUTUBE_CHANNEL_HIDDEN", + "YOUTUBE_SERVICE_REMOVED", + "YOUTUBE_LIGHTWEIGHT_DELETED", + "YOUTUBE_LIGHTWEIGHT_HIDDEN" + ], + "enumDescriptions": [ + "", + "Deletion due to users deleting or downgrading their account. May not be a permanent delete. Maps to Reason.USER_ACCOUNT_DELETE. This is not supported when DeleteOperation type is UNDO_DELETE.", + "Deletion due to stanza owners deleting their stanzas. Maps to Reason.ACTIVITY_OWNER_DELETE, Reason.USER_DELETE", + "Deletion due to AIA DELETE verdicts on abusive stanzas. Maps to Reason.ACTIVITY_OWNER_MARKED_COMMENT_SPAM, Reason.ACTIVITY_SPAM_ADMIN_DELETE, Reason.COMMENT_SPAM_ADMIN_DELETE, Reason.SQUARE_ADMIN_MARKED_COMMENT_SPAM This is not supported when DeleteOperation type is UNDO_DELETE.", + "Deletion due to AIA DELETE verdicts on items categorized as child porn. A separate delete reason is needed for this due to the extra sensitive content, for which extra care must be taken when requested. Maps to Reason.CHILD_PORN This is not supported when DeleteOperation type is UNDO_DELETE.", + "Deletion from an offline job. The precise reason is not reflected here Maps to Reason.SYSTEM_DELETE. May only be sent in deletion (or undeletion) requests that include a SuperDAT with the \"stanza.delete\" permission. (See go/sbe-policies#authority-selector-policies for more information.)", + "Deletion due to users account being disabled, likely by system for abuse. User can still access their own content. Maps to Reason.GAIA_DISABLE_USER", + "Deletion due to destination stream owner of the stanza destination stream deleting the stanza (go/delete_stream).", + "Deleting due to emergency take down to mitigate production breakage. This can only be used as big red button under emergency, please read and follow the procedure in go/sbe-brb before using.", + "Used by clients to allow non-owner admins to take down stanzas. Not purgeable and stanza remains visible to owner. Maps to Reason.CLIENT_ADMIN_TAKEDOWN.", + "Deletion due to SUSPEND verdicts on abusive stanzas. Stanza will be purged after 120 days. Maps to Reason.SPAM_ADMIN_SUSPEND This is not supported when DeleteOperation type is UNDO_DELETE.", + "Deletion due to ancestor owner deleting a child. This operation can be undone within 30 days. Maps to Reason.ACTIVITY_OWNER_MARKED_COMMENT_SPAM.", + "Deleted because the user is no longer registered for the product/service. Maps to Reason.USER_SERVICE_DOWNGRADE", + "Deleted because the user is suspended for the product/service. Maps to Reason.USER_SERVICE_SUSPENDED. See go/gaia/serviceid#service-flag", + "Deletions due to the state of the entity. For example, private YT video is not allowed to have stanzas. Maps to Reason.ENTITY_STATE_CHANGE", + "Deletions due to the entity that the stanza is attached is soft deleted by actions carried out internally. For example, YT video is not allowed to have stanzas if it has flag marked comments_disabled_internally.", + "Deletion due to automatic classification of the associated client entity. For example, YT video is not allowed to have stanzas if it is marked as crosswalk (i.e video is classified as kids friendly and thus comments are disabled).", + "Deleted because some upstream process has purged the entity that this stanza is attached to. For example, if YT purges a video or channel from their system, and thus the stanza should be marked for deletion. Semantically this delete reason should have a short retention period if it is used, because presumably the upstream process expects the entity is gone.", + "Deleted because the user was underage. This is typically used to delete stanzas for underage users that were converted to Griffin (supervised).", + "Deleted because the YouTube user has hidden their channel. This reason may only be used by channel hide flow.", + "Deleted because the YouTube user has gone through service removal. This reason may only be used by service removal flow.", + "Deleted because the YouTube user's account was converted to Lightweight and should be considered deleted. This currently includes lightweight conversion through Escape Hatch or during channel transfer. This operation is not reversible and data is purged after 30 days.", + "Deleted because the YouTube user's account was converted to Lightweight and should be considered hidden. This currently includes Griffin U13 conversions. This operation is reversible and data is retained for 7 years since the user can restore their account after graduation from Griffin." + ], + "type": "string" + }, + "type": "array" + }, + "deliveryRestriction": { + "$ref": "SocialStanzaDeliveryRestriction", + "description": "Delivery restrictions, if present." + }, + "destinationStream": { + "$ref": "AppsPeopleActivityBackendDestinationStream" + }, + "moderationInfo": { + "$ref": "SocialStanzaModerationInfo", + "description": "The moderation info. At write time, this field is only allowed to be set when moderator_type is AUTO_MODERATOR. For other moderator types, moderation_reason is the only field that can be set by clients." + }, + "moderationState": { + "description": "The moderation state.", + "enum": [ + "UNKNOWN_MODERATION_STATE", + "NEW", + "APPROVED", + "REJECTED", + "HOLD" + ], + "enumDescriptions": [ + "Unknown moderation state.", + "Default state for a new message which has not been otherwise tagged. Such content will be displayed (in the associated destination stream) unless marked as abusive.", + "Explicitly approved for display by the owner/moderator. Such content will be displayed (in the associated destination stream) even if marked as abusive, and should therefore only be used when such abuse states should be overridden.", + "Explicitly rejected for display by the owner/moderator. Such content will be displayed to no one in the associated destination stream except the content's author.", + "Held for the owner/moderator for review. Such content will be displayed (in the default stream view) only to its author." + ], + "type": "string" + } + }, + "type": "object" + }, + "SpamCookbookAction": { + "description": "This protocol buffer indicates actions that we take based on Cookbook recipes (see http://cookbook/) matching a particular document.", + "id": "SpamCookbookAction", + "properties": { + "dropInServing": { + "type": "boolean" + } + }, + "type": "object" + }, + "SpamMuppetjoinsMuppetSignals": { + "id": "SpamMuppetjoinsMuppetSignals", + "properties": { + "hackedDateNautilus": { + "format": "int32", + "type": "integer" + }, + "hackedDateRaiden": { + "format": "int32", + "type": "integer" + }, + "raidenScore": { + "format": "double", + "type": "number" + }, + "site": { + "type": "string" + } + }, + "type": "object" + }, + "SpeechS3LanguageIdentificationResult": { + "description": "Response proto for the LangId service running on a Greco server in prod. Next Tag: 6", + "id": "SpeechS3LanguageIdentificationResult", + "properties": { + "endTimeUsec": { + "description": "The end time of the input audio that this result refers to. This value should increase across LanguageIdentificationResult emitted by the Greco server running LangId, and reflects the server having processed more of the input audio.", + "format": "int64", + "type": "string" + }, + "rankedTopSupportedLanguages": { + "description": "Ranked list of top-N language codes. Ranking is based on ConfidenceIntervals of supported languages, and N is defined in the LanguageIdentificationConfig.", + "items": { + "$ref": "SpeechS3Locale" + }, + "type": "array" + }, + "startTimeUsec": { + "description": "Global start time. This value should be fixed across all LanguageIdentificationResults for a given utterance.", + "format": "int64", + "type": "string" + }, + "topLanguageConfidence": { + "description": "Confidence interval of the top recognized language.", + "enum": [ + "UNKNOWN_CONFIDENCE", + "NOT_CONFIDENT", + "CONFIDENT", + "HIGHLY_CONFIDENT" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "voicedUtterance": { + "description": "Identifies when the provided audio sample does or doesn't contain voiced samples. E.g. an unvoice utterance happens when the EOS signal is received before any frame because all frames were filtered by the endpointer. For events where voiced_utterance is false, ranked_top_supported_languages is defined but scores are not to be trusted. All LanguageIdentificationResults contains a valid value of voiced_utterance.", + "type": "boolean" + } + }, + "type": "object" + }, + "SpeechS3Locale": { + "id": "SpeechS3Locale", + "properties": { + "format": { + "description": "The format of the string in \"locale\". Should be one of LocaleFormat.", + "format": "int32", + "type": "integer" + }, + "locale": { + "type": "string" + } + }, + "type": "object" + }, + "StorageGraphBfgAuthorityFeedbackMetadata": { + "description": "go/entity-authority NB: currently all facts associated with Authority Feedback are externally traceable to the requests from which they originate.", + "id": "StorageGraphBfgAuthorityFeedbackMetadata", + "properties": {}, + "type": "object" + }, + "StorageGraphBfgLegalRequestMetadata": { + "id": "StorageGraphBfgLegalRequestMetadata", + "properties": { + "bugId": { + "description": "The buganizer ID associated with this legal request. This is required.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "StorageGraphBfgLivegraphProvenanceMetadata": { + "description": "Metadata on source assertions that isn't part of the user-visible Triple payload, and that doesn't really represent data provenance, but that's used to affect the way Livegraph and possibly other horizontal KG infra systems *process* the triple. Read: fields below really shouldn't be part of the cross-system Triple proto at all. But because Triple is used both as an internal and an external KG API, we at least want to \"hide\" those fields that ought to be purely part of the internal source \u003c-\u003e LG contract. Next id: 5", + "id": "StorageGraphBfgLivegraphProvenanceMetadata", + "properties": { + "lgInternalWriterId": { + "description": "Identifies the LG internal writers that asserted the triple. This is the same as 'origin_id' in LG. This will only be populated by the LG writers to FactStore", + "format": "uint64", + "type": "string" + }, + "provenanceOnlyAddition": { + "description": "Whether this provenance is a provenance only addition or not. A provenance is considered an \"addition\" if it belongs to a triple that we expect FactStore to contain on its own (i.e through some inference), and thus we will *not* attempt to write it explicitly. This is a composer only populated field. Clients are not expected to populate this field.", + "type": "boolean" + }, + "triangulationKey": { + "description": "Triples typically have a single triangulation key. This field supports \u003e 1 keys to allow staged transition to a different key scheme. To successfully triangulate in the Livegraph Composer, the triple must have \u003e=3 instances and each triple instance having a pairwise disjoint set of triangulation keys. The triangulation keys supplied for a single input triple are treated part of the same set, so a single triple cannot self-triangulate, regardless of how many triangulation keys it has. Note2: If a triple has multiple provenances, each one is expected to set the same triangulation_keys. ", + "items": { + "type": "string" + }, + "type": "array" + }, + "weakData": { + "description": "WARNING! The feature is still under active development and the exact semantics may be subject to change pending KE Design Review. Data marked as weak will be less preferred to regular data which does not have the marker. This allows ingesting data with a lower chance of negatively affecting existing features and products, at the cost of potentially not showing the data when competing data is available. Specifically, weak data is less preferred by conflict resolution inside of Livegraph composition. Additionally, RefX triggering will prefer to trigger based on signals computed from regular data. Aside from data providers choosing to mark their data as weak, Livegraph and RefX are the only horizontal systems expected to use this information. Please contact livegraph-team@ if you see a need for this to change. See go/weak-data for more information.", + "type": "boolean" + } + }, + "type": "object" + }, + "StorageGraphBfgPolicyMetadata": { + "description": "Metadata about data governance policies. For more context, see go/ke-triple-dg-policy-and-metadata. If any attribute is not set, then there's no specific restrictions associated with the missing attribute. For example, if `availability_start_timestamp` is not set, the data won't be embargoed automatically; if `availability_end_timestamp` is not set, they won't expire automatically. Next ID: 8 LINT.IfChange", + "id": "StorageGraphBfgPolicyMetadata", + "properties": { + "availabilityEndTimestamp": { + "description": "Timestamp after which data with this policy cannot be used. This value must be strictly larger/later than availability_start_time, if both are set. WARNING: This field is WIP and please do not populate it without reading go/ke-dg-tape and consulting ke-data-governance@.", + "format": "google-datetime", + "type": "string" + }, + "availabilityStartTimestamp": { + "description": "Timestamp before which data with this policy cannot be used. This value must be strictly smaller/earlier than availability_end_time, if both are set. WARNING: This field is WIP and please do not populate it without reading go/ke-dg-tape and consulting ke-data-governance@.", + "format": "google-datetime", + "type": "string" + }, + "legalAllowedRegions": { + "description": "List of regions in which the data with this policy is allowed to be used, while the data need to be removed in all regions outside this list according to legal request. This field should be used when the data is only allowed in a few regions and it is inconvenient to enumerate all of the regions in `legal_removal_regions` field. `legal_allowed_regions` and `legal_removal_region` together should include all possible regions, setting one field implies the other. Please set only one of them so the other field's values are implied. See details: http://go/ke-allowed-countries-policy-1p WARNING: This field is for legal purposes only. Please do not populate it without consulting ke-data-governance@.", + "items": { + "$ref": "KeGovernanceTypedRegions" + }, + "type": "array" + }, + "legalRemovalRegions": { + "description": "List of regions in which the data with this policy need to be removed according to legal request. WARNING: This field is for legal purposes only. Please do not populate it without consulting ke-data-governance@.", + "items": { + "$ref": "KeGovernanceTypedRegions" + }, + "type": "array" + }, + "policySourceType": { + "description": "Policy metadata are VERTICAL by default. Vertical policy makers / providers does not need to set this field explicitly.", + "enum": [ + "UNKNOWN", + "VERTICAL", + "HORIZONTAL" + ], + "enumDescriptions": [ + "", + "A vertical policy metadata describes data usage requirements for data provided by a vertical. When there are multiple vertical policies, usually as a result of vertical sources providing the same data, the policies are evaluated disjunctively.", + "A horizontal policy metadata describes requirements to be applied horizontally. Typical horizontal policies are legal-related, such that data usage restrictions must be respected at all times. When there are multiple horizontal policies, they are evaluated conjunctively. When both horizontal and vertical policy metadata are present, their evaluation results are connecteted conjunctively, e.g. Evaluate(..., horizontal_metadata_1..) AND Evaluate(..., horizontal_metadata_2..) AND Evaluate(..., horizontal_metadata_3..) … AND (Evaluate(..., vertical_metadata_1..) OR Evaluate(..., vertical_metadata_2..) OR Evaluate(..., vertical_metadata_3..) …)" + ], + "type": "string" + } + }, + "type": "object" + }, + "StorageGraphBfgPublicInformationMetadata": { + "id": "StorageGraphBfgPublicInformationMetadata", + "properties": { + "attributionUrl": { + "description": "Publicly-visible URLs claiming this fact. Can not be empty -- at least one URL must be provided.", + "items": { + "type": "string" + }, + "type": "array" + }, + "lastVerifiedDate": { + "description": "Most recent date at which 'attribution_url's were verified, as UNIX epoch time in milliseconds. This is required.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "StorageGraphBfgSpiiCertification": { + "description": "A fact about potentially sensitive personal info (http://what/SPII) can be \"certified\" iff it meets specific requirements. See go/kg-spii-certification for details.", + "id": "StorageGraphBfgSpiiCertification", + "properties": { + "authorityFeedback": { + "$ref": "StorageGraphBfgAuthorityFeedbackMetadata", + "description": "This fact was provided via KGO / Entity Authority." + }, + "legalRequest": { + "$ref": "StorageGraphBfgLegalRequestMetadata", + "description": "This fact was provided via a legal request." + }, + "publicInformation": { + "$ref": "StorageGraphBfgPublicInformationMetadata", + "description": "This fact is public information. (See go/kg-spii-certification for a description of what qualifies as public information -- simply finding a fact online is not sufficient to certify a fact as public.)" + } + }, + "type": "object" + }, + "StorageGraphBfgTripleProvenance": { + "description": "a message containing information about the source of this triple. Note for freebase data: that this is an unpacking of the creator/attribution chain. The creator below is the actual creator of the attribution node, and the rest of the attribution data sits along side. Next id: 22", + "id": "StorageGraphBfgTripleProvenance", + "properties": { + "accessRequired": { + "description": "Data providers shall use this to specify access requirement.", + "enum": [ + "ACCESS_REQUIREMENT_UNSPECIFIED", + "LEGACY_RESTRICTION", + "LEGAL_UNSERVABLE_UNTIL_FURTHER_REVIEW", + "CONTRACTUAL_PRERELEASE_MUSIC_DATA", + "CONTRACTUAL_PRERELEASE_MUSIC_DATA_GPM", + "CONTRACTUAL_STATS_LLC_DATA", + "LEGAL_PUBLIC_DOMAIN_US", + "LEGAL_GEO_NOT_SERVABLE_IN_CHINA", + "ACCESS_REQUIREMENT_OUT_OF_RANGE", + "SPII_SEARCH_PUBLIC_INTEREST", + "SPII_KGO", + "SPII_WALDREF", + "CONTRACTUAL_OPTA_DATA_MIGRATION", + "CONTRACTUAL_STATS_DATA_MIGRATION", + "TECHNICAL_DEBT_SIRIUS_MIGRATION", + "TECHNICAL_IN_DEVELOPMENT_GEO_KG_UGC", + "MOMA_RESTRICTED_TVC", + "MOMA_UNRESTRICTED_TVC", + "MOMA_FTE", + "AOG_TEST_DATA", + "CONTRACTUAL_NETFLIX_DATA", + "CONTRACTUAL_NETFLIX_GRACENOTE", + "CONTRACTUAL_SPOTIFY_PODCAST_DATA", + "CONTRACTUAL_IPG_DATA", + "CONTRACTUAL_YOUVIEW_DATA", + "CONTRACTUAL_YOUTUBE_ALC_DATA", + "CREATOR_PRESENCE_DATA", + "TECHNICAL_UNRECONCILED_MEDIA_ACTION", + "CONTRACTUAL_AUDIBLE_DATA", + "CONTRACTUAL_SEARCH_NETFLIX_DATA", + "CONTRACTUAL_ASSISTANT_MEDIA_ACTIONS", + "CONTRACTUAL_ANDROID_TV_NETFLIX_DATA", + "CONTRACTUAL_GOOGLE_PLAY_MOVIES_DATA", + "CONTRACTUAL_RANKING_PROVIDER_POPULARITY_DATA", + "CONTRACTUAL_CARBON_INDEX_DATA", + "CONTRACTUAL_CARBON_INDEX_APP", + "TRAVEL_ACTIVITY_DATA", + "CONTRACTUAL_AOG_FOOD_ORDERING_DATA", + "CONTRACTUAL_YETI_DATA", + "CONTRACTUAL_BBC_PROVIDER_METADATA", + "JANATA_USER_GENERATED_DATA", + "TRIANGULATION_LOSERS_FOR_REFX", + "CONTRACTUAL_PRERELEASE_YT_SHOWS", + "SPII_LOSERS_FOR_REFX", + "SHOPPING_PRODUCT_IMAGE", + "SHOPPING_PRODUCT_DESCRIPTION", + "SHOPPING_PRODUCT_ATTRIBUTE", + "SHOPPING_ON_DOT_COM_ONLY", + "SHOPPING_ORGANIC_ONLY", + "SHOPPING_ORGANIC_ON_DOT_COM_ONLY", + "SHOPPING_PRE_RELEASE_PRODUCT", + "SHOPPING_DO_NOT_PUBLISH_TO_TOPIC_SERVER", + "LMS_POLICY_ACKED_ONLY", + "MINED_PEOPLE", + "LIMITED_FOR_SEMANTIC_UNDERSTANDING", + "ISOLATION_S3_MEDIA_ACTION", + "ISOLATION_S3_REAL_ESTATE", + "ISOLATION_S3_AUTOS", + "ISOLATION_S3_NLWEB", + "ISOLATION_S3_RECOMEDIA", + "ISOLATION_S3_GEO_CARS", + "ISOLATION_YOUTUBE_OTT", + "ISOLATION_YOUTUBE_MUSIC_BASS_ENTITIES", + "ISOLATION_FINANCIAL_DATA", + "ISOLATION_MEDICAL", + "ISOLATION_G4C", + "ISOLATION_EXPERIMENT_ONLY", + "ISOLATION_KE_INTERNAL", + "ISOLATION_WEB_CHANNELS", + "ISOLATION_ONRAMP_DICTIONARY_EXPERIMENT", + "ISOLATION_PKG_ANDROID_AUTO_EMBEDDED_SIGNED_IN", + "ISOLATION_PKG_ANDROID_AUTO_EMBEDDED_SIGNED_OUT", + "ISOLATION_PKG_APP_NAMES", + "ISOLATION_PKG_ASSISTANT_CONTACT_AFFINITY_WITH_METADATA", + "ISOLATION_PKG_ASSISTANT_DEVICE_SETTINGS", + "ISOLATION_PKG_ASSISTANT_LIST_NAMES_FOR_SPEECH_BIASING", + "ISOLATION_PKG_ASSISTANT_SETTINGS_FOOTPRINTS", + "ISOLATION_PKG_ASSISTANT_SETTINGS_NICKNAME", + "ISOLATION_PKG_CALENDAR_EVENTS_FOR_QUERY_ANNOTATION", + "ISOLATION_PKG_CALENDAR_EVENTS_FOR_SPEECH_BIASING", + "ISOLATION_PKG_CALENDARS_FOR_QUERY_ANNOTATION", + "ISOLATION_PKG_CALENDARS_FOR_SPEECH_BIASING", + "PKG_ASSISTANT_CONTACT_AFFINITY_FOOTPRINTS", + "ISOLATION_PKG_CONTACT_AGGREGATED_SIGNALS", + "ISOLATION_PKG_CONTENT_INTERESTS", + "ISOLATION_PKG_DEVICE_INSTALLED_APPS", + "ISOLATION_PKG_DISCOVER_SMART_HOME_DEVICES", + "ISOLATION_PKG_DYNAMIC_ENTITIES", + "ISOLATION_PKG_FLIGHT_LEG_RESERVATIONS", + "ISOLATION_PKG_FOCUS_OWNER_PROFILE", + "ISOLATION_PKG_FORMATTED_ADDRESS", + "ISOLATION_PKG_GAIA", + "ISOLATION_PKG_GELLER_ANSWERS", + "ISOLATION_PKG_GMAIL_BILLS", + "ISOLATION_PKG_GMAIL_ORDERS", + "ISOLATION_PKG_HABITS", + "ISOLATION_PKG_HANDBAG_ENTITIES", + "ISOLATION_PKG_HERON_INTENTS_AND_TYPES", + "ISOLATION_PKG_HOTEL_RESERVATIONS", + "ISOLATION_PKG_HOUSEHOLD", + "ISOLATION_PKG_LAMS_PREFERENCES", + "ISOLATION_PKG_LOCATION_SHARING_CONTACTS", + "ISOLATION_PKG_MAPS_ALIAS_FOOTPRINTS", + "ISOLATION_PKG_MAPS_SEARCH_LOCATIONS", + "ISOLATION_PKG_LOCAL_LEAF_PAGE_VIEW_LOCATIONS", + "ISOLATION_PKG_MEDIA_HABITUAL_CACHE", + "ISOLATION_PKG_MEDIA_LIBRARY", + "ISOLATION_PKG_MEDIA_USER_CONTEXT_INFO", + "ISOLATION_PKG_MEDIA_USER_ENTITIES", + "ISOLATION_PKG_PARKING_LOCATIONS", + "ISOLATION_PKG_PEOPLE_API", + "ISOLATION_PKG_PEOPLE_API_CONTACT_ANNOTATIONS", + "ISOLATION_PKG_PEOPLE_API_GET_PEOPLE_BY_IDS", + "ISOLATION_PKG_PERSONAL_CONTACT_ANNOTATIONS", + "ISOLATION_PKG_PERSONAL_PLACES", + "ISOLATION_PKG_PERSONAL_SHARED_CONTACT_ANNOTATIONS", + "ISOLATION_PKG_PERSONALIZED_PRONUNCIATIONS", + "ISOLATION_PKG_PLAY_AUDIO_BOOKS", + "ISOLATION_PKG_PWS_ASSISTANT_CONTACTS_FOOTPRINTS", + "ISOLATION_PKG_ASSISTANT_UPP_PERSONAL_TOP_ENTITIES", + "PKG_RESERVATION_DATA", + "ISOLATION_PKG_GI_HOTEL_RESERVATION_DATA", + "ISOLATION_PKG_GI_FLIGHT_RESERVATION_DATA", + "ISOLATION_PKG_GI_CAR_RENTAL_RESERVATION_DATA", + "ISOLATION_PKG_GI_TRANSPORTATION_RESERVATION_DATA", + "ISOLATION_PKG_GI_RESTAURANT_RESERVATION_DATA", + "ISOLATION_PKG_RESTAURANT_RESERVATIONS", + "ISOLATION_PKG_SELF_ENTITIES", + "ISOLATION_PKG_SOCIAL_EVENT_RESERVATIONS", + "ISOLATION_PKG_SOCIAL_GRAPH_PEOPLE_API", + "ISOLATION_PKG_STADIA_CONTACTS", + "ISOLATION_PKG_STARLIGHT_BULK_LOOKUP", + "ISOLATION_PKG_STARLIGHT_BULK_LOOKUP_CONSISTENT", + "ISOLATION_PKG_STARLIGHT_BULK_LOOKUP_CONSISTENT_CONTACTS", + "ISOLATION_PKG_STARLIGHT_COMPOSITE", + "ISOLATION_PKG_STARLIGHT_COMPOSITE_FACE_LABELS", + "ISOLATION_PKG_STARLIGHT_FACE_LABELS", + "ISOLATION_PKG_STARLIGHT_QUERY", + "ISOLATION_PKG_STARLIGHT_TOP_CONTACTS", + "ISOLATION_PKG_STARLIGHT_VISIBLE_TO_GUESTS", + "ISOLATION_PKG_STRUCTURED_MEMORY_FOOTPRINTS", + "ISOLATION_PKG_TEACH_AND_LEARN_ENTITIES", + "ISOLATION_PKG_ASSISTANT_ROUTINES", + "ISOLATION_PKG_VANITY_COLLECTIONS", + "ISOLATION_PKG_WEBSEARCH", + "ISOLATION_PKG_WHITEPAGES_PHONE_NUMBER", + "ISOLATION_PKG_VOICE_PROFILE", + "ISOLATION_PKG_YOUTUBE_ASSISTANT_CONTEXT", + "ISOLATION_PKG_YOUTUBE_ASSISTANT_XWALKSAFE_CONTEXT", + "ISOLATION_PKG_YOUTUBE_MUSIC_LOCKER", + "ISOLATION_PKG_YOUTUBE_PLAYLISTS", + "ISOLATION_PKG_YOUTUBE_PLAYLIST_SEARCH", + "ISOLATION_PKG_YOUTUBE_PRIVATE_PLAYLISTS", + "ISOLATION_PKG_YOUTUBE_PUBLIC_AND_PRIVATE_PLAYLISTS", + "ISOLATION_S3_CREATOR_PRESENCE", + "UMP_TESTING_ONLY", + "INTENTJOINS_NB_SIGNALS", + "ADS_INTEGRITY_ANNOTATION", + "COVID_MAPS_SENSITIVE", + "KE_TRUST", + "SENSITIVE_ENTITIES_CLASSIFICATION", + "ISOLATION_S3_DATASEARCH", + "VIRTUALCARE_US", + "NETFLIX_AVAILABILITY_MEDIA_ACTION", + "ACCC_RISKY_DATA", + "AU_ACCC_RISKY_FOR_DISPLAY", + "GEO_FEATURE_RESTRICTION", + "RIGHTS_MANAGEMENT_100", + "RIGHTS_MANAGEMENT_101", + "RIGHTS_MANAGEMENT_102", + "DICTIONARY_DATA_OXFORD", + "DICTIONARY_DATA_LE_ROBERT", + "AR_ONBOARDING_TEST", + "AR_ONBOARDING_TEST_2", + "MATERIALIZED_ENRICHER_INTERNAL", + "MATERIALIZED_SCUBED_INTERNAL" + ], + "enumDescriptions": [ + "", + "A legacy restriction that hasn't been migrated to AccessRequirement applies to the corresponding Triple. This value is invalid on data being ingested by KG, except in the cases where the data is provided by an allowed data provider. Subject to renaming as usage becomes clearer.", + "WARNING! Legally or contractually sensitive data that has not been cleared for *any* product use cases. Data tagged here may be used for specific learning models (e.g., RefX systems), but can never be served. All data parked here are expected to either lose their AccessRequirement tags, or be given more appropriate (possibly new) ones. YOU MUST NEVER serve this data. If there is data parked here that you believe requires serving, YOU MUST CONTACT kg-legal@ to figure out the team responsible for that data and go through a new legal-onboarding review.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. Pre-release music album data from YouTube Music Label deals. YOU MUST CONTACT abobb@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. Pre-release music album data from Metajam Embargoed data. YOU MUST CONTACT abobb@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. Stats LLC's data is subject to simba/deal.do?cmd=view\u0026id=189236. YOU MUST CONTACT kg-legal@ before reading or writing this data. Tags: Sports, Golf, Basketball, Baseball, Football, Hockey, Soccer", + "WARNING! Data subject to nuanced legal rules. DO NOT use without permission and understanding of usage constraints. This data is subject to public-domain restrictions particular to the United States. YOU MUST CONTACT kg-legal@ before reading or writing this data.", + "DEPRECATED! Not set anymore, see b/129694010 for some details. If you encounter code that looks at this access requirement, please consider cleaning it up. As of 2019-06-18, there is no triple in Livegraph with this restriction set anymore. WARNING! Legally sensitive Geo data. Data tagged with this value MUST not be served in China. Context: https://goto.google.com/geo-china-policy https://goto.google.com/kg-geo-china-policy YOU MUST CONTACT yegor@ or wafarris@ before reading or writing this data.", + "Represents an out-of-range value. This may be returned by a server in situations where it's not feasible to round-trip an unknown enum value. It should generally not be specified as a requested access, since behavior is undefined in that case.", + "WARNING! These properties are classified as Sensitive Personal Data under GDPR (go/gdpr-spii-kg-announce). Do not use this data without review from counsel. Search has vetted this SPII, but you need to check that you are in Search PA and your product's use of the data is consistent with PA-specific limitations. See go/gdpr-kg-diagram for an overview of what data may be covered by this restriction. No one should write data with this AccessRequirement; it is asserted programmatically in Livegraph at composition time using a policy-based classifier. YOU MUST CONTACT kg-legal@ before reading data with this acl.", + "WARNING! These properties are classified as Sensitive Personal Data under GDPR (go/gdpr-spii-kg-announce). Do not use this data without review from counsel. This data is included in KG with Search-specific user consent. Product counsel must determine whether the scope of the consent is consistent with use in a product. See go/gdpr-kg-diagram for an overview of what data may be covered by this restriction. No one should write data with this AccessRequirement; it is asserted programmatically in Livegraph at composition time using a policy-based classifier. YOU MUST CONTACT kg-legal@ before reading data with this acl.", + "WARNING! These properties may contain data classified as Sensitive Personal Data under GDPR (go/gdpr-spii-kg-announce). Do not use this data without review from counsel. YOU MUST CONTACT kg-legal@ before reading data with this acl.", + "Access controls for the migration of OPTA-\u003eSTATS data. These tags are transient, and all evidence of their existence will be destroyed after go/opta-data-rollout completes. YOU MUST CONTACT yonatans@ before reading or writing this data.", + "", + "DEPRECATED! Not set anymore. Used to be set on triples from the \"geo\" process feeding into Livegraph for the Sirius project (forward geocoding in TopicServer) prior to full launch.", + "Access controls for data being injected by Geo's KG UGC pipe while it is being fleshed out (allow Geo to onboard his data to Livegraph but filtering which clients can fetch it from TopicServer). This is an access restriction we use while developing or QAing the Events UGC flow end-to-end. Only maps will fetch the data through TopicServer, and we will not allow this data to enter RefX, nor will it be shown to users. When prod experiments exist, we will migrate to that instead. YOU MUST CONTACT poucet@ before reading or writing this data.", + "Access requirement for Moma. Moma triples is only internally available. More details about Moma data access is here: go/moma-tvc-access YOU MUST CONTACT moma-kg-eng@ before reading or writing this data. Available for restricted TVCs.", + "Available for unrestricted TVCs.", + "Available for FTE.", + "Access Requirement for AoG Test data. AoG test data is only available to developers who sign up for AoG previews. More details at - go/feeds-tod. This is a short-term solution until Topic Server supports experiments in prod. YOU MUST CONTACT se-catalog-feeds@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. In order to handle such data, see: go/ma-access-controls-prd Netflix data is subject to SIMBA 400184 and 355494. YOU MUST CONTACT nebiat@ before reading or writing this data.", + "This is an access restriction to avoid any usage of Netflix deeplinks from data aggregator Gracenote (TMS) accidentally without knowing the context. YOU MUST CONTACT ump-data-team@ before reading or using this data.", + "This is an access restriction requirement for the licensed Spotify podcast data. The license requires that the Spotify feed data cannot be used to promote other providers. YOU MUST CONTACT ke-media-actions@ before reading or using this data.", + "This is an access restriction to avoid any usage of media data from a special TV aggregator IPG without knowing the context. YOU MUST CONTACT go/ump before reading or writing this data.", + "This is an access restriction to avoid any usage of media data from a special LiveTV data provider Youview without knowing the context. YOU MUST CONTACT go/ump before reading or writing this data.", + "This is an access restriction to avoid any leakage of data for the testing and dogfooding of Youtube ALC data. YOU MUST CONTACT go/ump before reading or writing this data.", + "DEPRECATED! Not set anymore. Deprecated in favor of ISOLATION_S3_CREATOR_PRESENCE.", + "Access controls for data being injected by the Media Actions team without being reconciled against existing entities. This is an access restriction we use to insert triples into KG that improves Media Actions triggering on the Assistant, but that would otherwise cause quality issues on Search (due to the lack of proper reconciliation). While triples tagged with this access restriction will typically only be used on the Assistant, this access restriction should not be used for contractually sensitive data. In order to handle such data, see: go/ma-access-controls-prd See go/ma-launch-small-providers and go/ma-acl for context. YOU MUST CONTACT ke-media-actions@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. Audible's data is subject to simba/deal.do?cmd=view\u0026id=417794. YOU MUST CONTACT kg-legal@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. Netflix for search data is subject to simba//#documents/list/dealId=500038. YOU MUST CONTACT knowledge-legal@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. YOU MUST CONTACT ke-media-actions@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. YOU MUST CONTACT kennethchiu@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. This is an access restriction we add Google Play Movies metadata into KG. For now it should be used ONLY for Android TV/Amati/Sabrina. In order to handle such data, see: b/34183296 Since it is google internal data, it doesn't have SIMBA DEAL ID. YOU MUST CONTACT ke-media-actions@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. This is an access restriction to access provider provided popularity score to rank entities within a provider's catalog. go/ps-to-kg , b/154547652 YOU MUST CONTACT ke-media-actions@ before reading or writing this data.", + "Data ingested by Carbon Index for internal processing and aggregation, not fit for display on any surface irrespective of attribution. YOU MUST CONTACT area120-carbonindex-eng@ before reading this data.", + "Data fit for display on the Carbon Index frontend to trusted testers, with proper attribution and controls. YOU MUST CONTACT area120-carbonindex-eng@ before reading this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. YOU MUST CONTACT travel-activities-eng-team@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. YOU MUST CONTACT fo-partner-eng@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. This is an access restriction for accessing Yeti publisher image data in KG. For now it should be used ONLY for Yeti. YOU MUST CONTACT stadia-knowledge-eng@ before reading or writing this data.", + "In order to test BBC metadata before serving code populates them to the public", + "WARNING! User generated data. DO NOT use without permission and understanding of usage constraints. This data is from the Janata feature and contains information that a user chose to disclose as pubilc about themselves. YOU MUST CONTACT npp-lr@ before reading or writing data with this acl.", + "WARNING! DO NOT use without permission and understanding of usage constraints. This is data that needed to be triangulated but lacked support from three different data sources. The purpose of this ACL is to allow RefX to access even the data that lacks triangulation. More background on this can be found at go/baike-triangulation. YOU MUST CONTACT lg-composition@ before reading or writing data with this acl.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. YouTube Red Original prerealeased shows, seasons and episodes. YOU MUST CONTACT ajithm@ before reading or writing data with this acl.", + "WARNING! DO NOT use without permission and understanding of usage constraints. This is for facts deemed Sensitive Personal Data (SPII) which have been removed from the graph. The purpose of this ACL is to allow RefX to access this data for proper query attribution \u0026 reconciliation decisions, even though it's not part of KG. YOU MUST CONTACT kg-legal@ before reading data with this acl.", + "WARNING! Use of Shopping product images can carry unique legal risks. DO NOT use without permission and understanding of usage constraints. Before reading or writing this data, you MUST follow the Shopping Commerce data access request process by completing the questionnaire at go/shopping-commerce-data-access-request.", + "WARNING! Use of Shopping product descriptions can carry unique legal risks. DO NOT use without permission and understanding of usage constraints. Before reading or writing this data, you MUST follow the Shopping Commerce data access request process by completing the questionnaire at go/shopping-commerce-data-access-request.", + "WARNING! Some Shopping product attributes are provided under license from Gladson or Multi-Ad and cannot be modified without written notice to the licensor. DO NOT modify without permission and understanding of usage constraints. If you plan to modify this data, you MUST follow the Shopping Commerce data access request process by completing the questionnaire at go/shopping-commerce-data-access-request.", + "", + "WARNING! These Shopping entities may only appear in organic experiences on any surface. DO NOT use without permission and understanding of the unique legal risks and usage constraints. Before reading or writing this data, you MUST follow the Shopping Commerce data access request process by completing the questionnaire at go/shopping-commerce-data-access-request.", + "WARNING! These Shopping entities may only appear in organic experiences on Google.com and the Google Search App. DO NOT use without permission and understanding of the unique legal risks and usage constraints. Before reading or writing this data, you MUST follow the Shopping Commerce data access request process by completing the questionnaire at go/shopping-commerce-data-access-request.", + "WARNING! These data are extracted from extremely high-traffic product announcements and can only be used in specifically-designed features. DO NOT use with permission and understanding of the usage constraints. YOU MUST CONTACT product-data-everywhere-eng@ before reading or writing this data.", + "This special access requirement is temporarily used to block shopping data from publishing to the topic server. This access requirement can be removed after the launch of the entity based filtering (in Polygraph). See this email thread for more context: http://g/livegraph-team/oaqrGm9Mabs/iMlGY7D_BgAJ YOU MUST CONTACT product-data-everywhere-eng@ before writing the data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints found at go/lms-access-policy and communicating your use case at go/lms-onboarding. YOU MUST CONTACT lms-legal@ and licensed-media-service-team@ before reading or writing this data.", + "WARNING! Data about people which was algorithmically mined from web documents - do not use this data without review from counsel and without first consulting with entwild-eng@. No one besides Entwild (go/entwild) should be writing triples with this AccessRequirement. YOU MUST CONTACT kg-legal@, as well as entwild-eng@ before reading data with this acl.", + "WARNING! Legally or contractually sensitive data that has not been cleared for *any* product use cases. Data tagged here may be used only for specific learning models (e.g., RefX systems), and may be served for such purposes in Topic Server, but should never be displayed to external users. YOU MUST NEVER surface this data in a user-visible product. YOU MUST CONTACT kg-legal@ before reading or writing this data.", + "Access requirements for the verticals using S-Cubed. YOU MUST CONTACT scubed-team@ before reading or writing this data.", + "", + "", + "", + "", + "", + "The following group of access requirements are for Onramp data from YouTube systems that is only meant to be served back to YouTube via the YouTube Knowledge Service. YOU MUST NOT use these AR unless you are go/ytks. Please contact yt-knowledge-service@ and yt-aperture@ for questions. YouTube OTT (go/ott-platform)", + "YouTube Music Bass Entities (go/bass-entities)", + "Access control for the Financial data that uses custom schema which is used mainly by the Google Finance team for gradually ingesting data. Reach out to fgc-be@ if you have any questions.", + "For Medical KG (go/med-kg) isolated data. Data stored under this AR is licensed and should be used only after pcounsel review. Contact: medical-nlp@.", + "Deprecated: use ISOLATION_MEDICAL instead.", + "Using gradual integration (go/gradual-integration) requires setting up an AccessRequirement. This value can be used for experimentation before the CL to add the new value has been submitted. See go/gradual-integration#accessrequirement for how to add a new value. WARNING: should NOT be used in production.", + "**DO NOT USE** This is an access restriction to be used by KE internally to specially treat OnRamp client's access requirements. It is asserted programmatically in Livegraph at accept record time. Clients should NOT assert this on their input triples; nor should they use this to query TopicServer or in KG batch pathquery.", + "Access controls for web channels entities. go/webchannels-infra-prd. See go/webchannels-kg-integration for details. Please contact web-channels-infra@ before reading or writing this data.", + "WARNING! Sensitive data under strict contractual usage agreements. DO NOT use without permission and understanding of usage constraints. Access controls for dictionary entities. Design proposal:go/word-osrp-proposal, schema details:go/kg-dict-schema Please contact dictionary-lr@ before reading or writing this data.", + "Access controls for Personal KG data source isolation. The ISOLATION_PKG data sources *DO NOT* flow through LiveGraph and must be written or read by Personal KG only. Please keep the list sorted. PKG ARs should be in the range [15001, 20000]. Next id: 15042 YOU MUST CONTACT pkg-service-team@ before using these ARs.", + "", + "", + "", + "", + "For data from user's lists e.g. list name.", + "", + "", + "", + "", + "For data from user's calendars e.g. calendar name.", + "", + "PWG approval for client use cases for contact affinity footprints must include explicit call outs and approval for type of traffic. Currently this is NOT allowed for non-Assistant traffic.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "For PersonalContactAnnotations from FocusNameServlet. For personal contacts that are not visible to guest.", + "", + "For \"visible to guest\" contact vertical.", + "", + "", + "", + "For personal top entities generated by Assistant user profile platform.", + "PWG approval for client use cases for reservation data must include explicit approval for this type of traffic. Note: Prefer to use the ISOLATION_PKG_GI_*_RESERVATION_DATA value below for the specific reservation type needed, rather than this value, since those trigger individual Gmail Intelligence fetchers rather than all of them.", + "PWG approval for client use cases for reservation data must include explicit approval for this type of traffic.", + "PWG approval for client use cases for reservation data must include explicit approval for this type of traffic.", + "PWG approval for client use cases for reservation data must include explicit approval for this type of traffic.", + "PWG approval for client use cases for reservation data must include explicit approval for this type of traffic.", + "PWG approval for client use cases for reservation data must include explicit approval for this type of traffic.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "PWG-YouTube approval required for all use cases involving this data.", + "For personal playlists from YouTube's PlaylistService that have public visibility, PWG-YouTube approval required for all usecases involving this data.", + "For personal playlists from YouTube's PlaylistService \"Search\" endpoint. PWG-YouTube approval required for all usecases involving this data.", + "For personal playlists from YouTube's PlaylistService that have private visibility. PWG-YouTube approval required for all usecases involving this data.", + "For data from YouTube's PlaylistService that has either public or private visibility (i.e. the combination of ISOLATION_PKG_YOUTUBE_PLAYLISTS and ISOLATION_PKG_YOUTUBE_PRIVATE_PLAYLISTS). PWG-YouTube approval required for all usecases involving this data.", + "Access controls for Creator Channel's S-Cubed corpus data. See more in go/uro-access-required. YOU MUST CONTACT milk-tea@ before reading or writing this data", + "This access control is used to guard data used by the Unified Media Platform team (ke-media-actions-serving@) for testing new features. It should never be used for purposes other than testing. More context at go/fake-media-provider.", + "Access controls for the IntentJoins Navboost data. YOU MUST CONTACT intentjoins-eng@ before reading or writing this data.", + "Access controls for Ads Integrity annotation data. Ads Integrity annotations are only available for Ads Integrity policy enforcement. See go/ai-political-km for more details. YOU MUST CONTACT ai-pacg@ before reading or writing this data.", + "Access controls for statistical information related to COVID-19 that can only be displayed in certain products. YOU MUST CONTACT talcohen@ before reading or writing this data.", + "Access control for KE Trust related scores. YOU MUST CONTACT ke-trust-team@ before reading this data. AND YOU SHOULD NOT write to it.", + "Access control for Sensitive Entities Database predicates See go/sed-prd for details YOU MUST CONTACT sensitive-entities-team@ before reading this data. SHOULD NOT write to it.", + "Access controls for the S-Cubed Data Search. See more in go/uro-access-required. YOU MUST CONTACT scubed-team@ before reading or writing this data", + "Access controls for VirtualCare provider data bound by contractual agreements. The data can only be used in US and currently only VirtualCare product is authorized to use the data. YOU MUST CONTACT virtualcare-eng@ and kg-legal@ before reading this data. AND YOU SHOULD NOT WRITE TO IT", + "This is an access restriction to avoid any usage of a special virtual media action provider NETFLIX_AVAILABILITY accidentally without knowing the context. see: go/nflx-availability-acl for context YOU MUST CONTACT ke-wedia@ before reading or writing this data.", + "DEPRECATED in favor of AU_ACCC_RISKY_FOR_DISPLAY", + "Triples labeled with this AccessRequirement may be risky to be displayed in Australia. YOU MUST CONTACT richardfang@, mattmaly@, shutongyu@ before reading this data. **AND YOU SHOULD NOT WRITE TO IT**", + "Maps data that should not be displayed under specific circumstances. YOU MUST CONTACT geo-irt@ before reading this data.", + "Access controls for rights management policies. See http://go/ke-rights-management-pilot for more context. YOU MUST CONTACT ke-data-governance@google.com before writing this data, and the RIGHTS_MANAGEMENT_* ARs should NOT be specified explicitly for reading. Corresponding to policy id = 100.", + "Corresponding to policy id = 101.", + "Corresponding to policy id = 102.", + "", + "", + "This AccessRequirement is used for testing purpose only. Please do not use it on data.", + "", + "Data materialized by PQM13n for Enricher. Design proposal: go/enricher-m13n-ar. YOU MUST CONTACT ke-data-platform-access@ before reading or writing data with this acl.", + "Data materialized by PQM13n for Scubed. Design proposal: go/scubed-m13n-ar. YOU MUST CONTACT ke-data-platform-access@ before reading or writing data with this acl." + ], + "type": "string" + }, + "accessRequiredInt": { + "description": "For KE internal use only. Data providers shall *not* set this. At ingress, LG Record service will read access_required and properly translate it to access_required_int. KE horizontal systems shall use this field instead of access_required; so that binaries would not depend on the release of a newly introduced AccessRequirement enum. (go/easy-ar-onboarding)", + "format": "int32", + "type": "integer" + }, + "authoringTimestamp": { + "format": "int64", + "type": "string" + }, + "creator": { + "description": "Freebase: the freebase user id in the form '/user/userid' KG: the Google LDAP of the developer or MDB group that set up the triplification and import pipeline for this data source.", + "type": "string" + }, + "dataset": { + "description": "Freebase \u0026 KG: the dataset the assertion was loaded from", + "type": "string" + }, + "extractionPattern": { + "format": "byte", + "type": "string" + }, + "extractionTimestamp": { + "format": "int64", + "type": "string" + }, + "freebaseAttribution": { + "description": "Below are deprecated Provenance fields. They are not indexed or served in KE infrastructure (they are stripped at ingress in Livegraph).", + "type": "string" + }, + "isSupportingData": { + "description": "Indicates that the corresponding data is supporting evidence for reconciliation only, and is *not* an assertion that should be visible to other systems or to external users. Note that this also means that no provenances indicating supporting data will be visible in the composed graph. Please see go/supporting-kg-triples-design-doc for additional details and background. If a triple is sent to Livegraph with multiple provenances each of them must have is_supporting_data bit set for it to be considered valid supporting evidence triple.", + "type": "boolean" + }, + "lgMetadata": { + "$ref": "StorageGraphBfgLivegraphProvenanceMetadata", + "description": "Internal metadata used by Livegraph and possibly other horizontal KG infra systems. This is not part of the logical triple or its provenance, and contents may not be visible downstream of LG." + }, + "policyMetadata": { + "$ref": "StorageGraphBfgPolicyMetadata", + "description": "Metadata specifying data governance policies. This information will be processed and enforced in KE systems. For more context, see go/ke-triple-dg-policy-and-metadata. WARNING: This field is WIP and please do not populate it without consulting ke-data-governance@." + }, + "process": { + "description": "Used to uniquely identify data sources. Freebase: the OAuth application KG: the name of the source directory the triple was loaded from (eg, \"amg\", \"tms \", \"collections\"). KV: identifier of an extraction system, e.g., SAFT or Tractzor.", + "type": "string" + }, + "provenanceExtension": { + "$ref": "Proto2BridgeMessageSet" + }, + "rankingToken": { + "description": "'ranking_token' (which must be accompanied by the 'process' field above or will be ignored) is used to distinguish subsets of data within a single process, solely for the purposes of composition in Livegraph. This field is useful when partitioning of data is needed, but using a separate process is intractable due to organizational or infrastructure limitations. For example, if a process such as \"geo\" wishes to distinguish some of their /type/object/name triples as higher priority in Composer's conflict resolution rules, then they can add a config entry with a dedicated ranking_token and tag the relevant triples with that ranking_token. This field should only be used in conjunction with a Composer-side configuration to use it for value selection. It is not appropriate to use this field as free-form metadata. This value must match [[:alnum:]][[:alnum:]_-]{0,127} (i.e., [a-zA-Z0-9]+[a-zA-Z0-9_-]* and must be less than 128 characters in length) , or else its containing triple will be considered malformed and will be rejected by Livegraph at ingress. As of 2018-02-14, this field is used within Livegraph's Composer and is exposed in Livegraph's Lookup APIs to aid debugging, but it is not indexed or served by TopicServer. ", + "type": "string" + }, + "requiresTriangulation": { + "description": "When specified as part of triples input to Livegraph (go/livegraph), this indicates that the triple needs to be triangulated by 3 different sources before it can be served in production. A triple's source is identified by its URL(provenance.source).host(). Please see go/baike-triangulation for more background on this. WARNING: If you're a new client trying to enable triangulation for your feed, please contact lg-composition@/kashk@ before using this feature. ", + "type": "boolean" + }, + "restrictions": { + "items": { + "enum": [ + "REQUIRES_CITATION", + "REQUIRES_PCOUNSEL_REVIEW", + "REQUIRES_ACCESS_CONTROL", + "UNRESTRICTED_WITHIN_GOOGLE_NO_3P_USE" + ], + "enumDescriptions": [ + "", + "", + "not used in KE infra", + "" + ], + "type": "string" + }, + "type": "array" + }, + "source": { + "description": "Freebase \u0026 KG: if the triples were extracted from the web, the source URL where the assertion was found. (generally empty in freebase-sourced triples) TopicServer will serve/populate/retain if REQUIRES_CITATION is also set, or if the process is explicitly allowed. http://g/topic-server/vn9PBWtVKqI/arQEDqKTAgAJ", + "type": "string" + }, + "sourceCategory": { + "items": { + "enum": [ + "THIRD_PARTY", + "CURATION", + "PARTNER_FEED", + "EXTRACTION" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "sourceDocId": { + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "spiiCertification": { + "$ref": "StorageGraphBfgSpiiCertification" + } + }, + "type": "object" + }, + "SuperrootPodcastsRecommendationsPodcastRecsFeatures": { + "description": "LINT.IfChange Next ID: 101", + "id": "SuperrootPodcastsRecommendationsPodcastRecsFeatures", + "properties": { + "averageDurationSecondsEpisode": { + "description": "Average duration listened per episode. Ignores duration \u003c 10s. Computed offline", + "format": "int64", + "type": "string" + }, + "averageDurationSecondsShow": { + "description": "Average duration listened per show. Ignores duration \u003c 10s. Computed offline", + "format": "int64", + "type": "string" + }, + "averageFractionEpisode": { + "description": "Average fraction of podcast listened per episode. Ignores duration \u003c 10s. Computed offline", + "format": "double", + "type": "number" + }, + "averageFractionShow": { + "description": "Average fraction of podcast listened per show. Ignores duration \u003c 10s. Computed offline", + "format": "double", + "type": "number" + }, + "balancedLift": { + "description": "Per cluster lift where the lift_squashing_factor is set to 0.4", + "format": "double", + "type": "number" + }, + "categoryMatch": { + "description": "category_match is a 0 to 1 score depicting how much of the user's listening history matches the categories of this podcast recommendation.", + "format": "double", + "type": "number" + }, + "clusterFeedMinutes": { + "description": "The total minutes listened to this podcast show by users in this cluster", + "format": "int64", + "type": "string" + }, + "colistenedShowColistenAffinity": { + "description": "This captures the probability that this show could have been listened by the user in lieu of what they have subscribed or listened to.", + "format": "float", + "type": "number" + }, + "colistenedShowLevelRank": { + "description": "This captures the rank of the podcast show in the colisten candidate generator.", + "format": "int64", + "type": "string" + }, + "convAiToxicitySevereScore": { + "format": "float", + "type": "number" + }, + "csaiScore": { + "description": "Score of csai safe search score go/safesearch", + "format": "double", + "type": "number" + }, + "dnnShowLevelRank": { + "description": "Ordinal rank features like this have been found to be useful in Hermione Recipes, where the top ranked items from a candidate generator is always retained. Ranks are integral values starting with 1 for the highest affinity show.", + "format": "int64", + "type": "string" + }, + "dnnV2aScore": { + "description": "Dot product of user embedding and podcast show embedding from the two tower model v2a", + "format": "float", + "type": "number" + }, + "dnnV2aScoreSigmoid": { + "description": "Sigmoid of the score obtained by dot product of user embedding and show embedding. See https://b.corp.google.com/issues/158602034#comment2 for intuition.", + "format": "float", + "type": "number" + }, + "durationTotalSecondsEpisode": { + "description": "Total duration listened for this episode by all users. Ignores duration \u003c 10s. Computed offline", + "format": "int64", + "type": "string" + }, + "durationTotalSecondsShow": { + "description": "Total duration listened for this show by all users. Ignores duration \u003c 10s. Computed offline", + "format": "int64", + "type": "string" + }, + "episodeDurationSec": { + "description": "The duration of a single episode, in seconds. - For show documents, this is a duration of a typical recent episode, or an approximation thereof. - For episode documents, this is the duration of the episode itself.", + "format": "int64", + "type": "string" + }, + "episodeImpressions": { + "description": "Number of all episode impressions.", + "format": "int64", + "type": "string" + }, + "episodeImpressionsPastWeek": { + "description": "Number of episode impressions during the past week.", + "format": "int64", + "type": "string" + }, + "episodesPublishedPerMonth": { + "description": "How frequently are podcasts published by this show. To see publishing frequency calculation go here: http://shortn/_6zzfyEpBRq", + "format": "int64", + "type": "string" + }, + "explicitShow": { + "description": "Whether the show is marked as explicit by the authors", + "enum": [ + "EXPLICIT_NO", + "EXPLICIT_YES", + "EXPLICIT_CLEAN" + ], + "enumDescriptions": [ + "Show/episode without explicit content. The default.", + "Show/episode with explicit content.", + "\"Clean\" version of an otherwise explicit show/episode." + ], + "type": "string" + }, + "feedPagerank": { + "description": "Scaled pagerank score for the feed url in [0..1]. Not to be confused with pagerank above, which measures the pagerank for the feed's homepage.", + "format": "double", + "type": "number" + }, + "finalReactionBoostScore": { + "description": "final reaction boost score computed from positive_reaction_boost_score and negative_reaction_boost_score. The score will be applied as a multiplier on the ranking score to adjust the ranking.", + "format": "float", + "type": "number" + }, + "fractionTotalEpisode": { + "description": "Some of all fraction of this listened by users. Ignores duration \u003c 10s. Computed offline", + "format": "double", + "type": "number" + }, + "fractionTotalShow": { + "description": "Some of all fraction of this show listened by users. Ignores duration \u003c 10s. Computed offline", + "format": "double", + "type": "number" + }, + "fringeScore": { + "description": "Score of fringe safe search score go/safesearch", + "format": "double", + "type": "number" + }, + "globalProb": { + "description": "Probability of a random user listening to this podcast randomly", + "format": "double", + "type": "number" + }, + "inClusterProb": { + "description": "Probability of a random user from this cluster listening to this podcast randomly (K-means specific feature)", + "format": "double", + "type": "number" + }, + "isCanonical": { + "description": "A binary value based on whether this is a canonical source for a cluster.", + "type": "boolean" + }, + "kmeansShowLevelRank": { + "description": "Ranks are integral values starting with 1 for the highest affinity show.", + "format": "int64", + "type": "string" + }, + "languageMatch": { + "description": "How much of user listening history match the language of this episode", + "format": "double", + "type": "number" + }, + "linkOwnershipVerified": { + "description": "Ownership verification status for the episode page URL.", + "type": "boolean" + }, + "listenTimeMin": { + "description": "Number of minutes of podcasts listened by the user", + "format": "int32", + "type": "integer" + }, + "listenedShowLevelRank": { + "description": "The rank of the show in the top listened shows candidate generator. Ranks are integral values starting with 1 for the highest affinity show.", + "format": "int64", + "type": "string" + }, + "listenedShowListeningAffinity": { + "description": "This captures the fraction of total listening time accounted for by this show.", + "format": "float", + "type": "number" + }, + "locationFeatureId": { + "description": "Feature ID of a location. For more info, see go/feature-id.", + "type": "string" + }, + "longUserListeningWebrefSimilarity": { + "description": "Match score between user listening mids and episode webref entities, where the listening can have happened at any time in the past. Values are in a 0.0 to 1.0 range.", + "format": "double", + "type": "number" + }, + "medicalScore": { + "description": "Score of medical safe search score go/safesearch", + "format": "double", + "type": "number" + }, + "mediumUserListeningWebrefSimilarity": { + "description": "Match score between user listening mids and episode webref entities, where the listening is limited to last two mohths activity. Values are in a 0.0 to 1.0 range.", + "format": "double", + "type": "number" + }, + "negativeReactionBoostScore": { + "description": "boost score from the similarity between the candidate and the shows with user negative feedback, currently the score will be applied directly to the final ranking score: go/podcast-reaction-reranking-v1, but can be used as reranker model feature in the future.", + "format": "float", + "type": "number" + }, + "nicheLift": { + "description": "Per cluster lift where the lift_squashing_factor is set to +2", + "format": "double", + "type": "number" + }, + "numListenersInKmeansCluster": { + "description": "The number of users in this k-means cluster.", + "format": "int64", + "type": "string" + }, + "numListenersToShowInKmeansCluster": { + "description": "The number of users in the k-means cluster who have listened to this feed.", + "format": "int64", + "type": "string" + }, + "numListens": { + "description": "Number of podcasts listened by the user", + "format": "int32", + "type": "integer" + }, + "numSubscribersShow": { + "description": "From: indexing/speech/proto/colisten-matrix.proto The number of subscribers for this podcast series.", + "format": "int64", + "type": "string" + }, + "numUniqueListenersShow": { + "description": "From: indexing/speech/proto/colisten-matrix.proto Absolute number of unique listeners during the past month.", + "format": "int64", + "type": "string" + }, + "offensiveScore": { + "description": "Score of offensive safe search score go/safesearch", + "format": "double", + "type": "number" + }, + "peDurationScoreEpisode": { + "format": "float", + "type": "number" + }, + "peDurationScoreShow": { + "format": "float", + "type": "number" + }, + "peDurationTotalScoreEpisode": { + "format": "float", + "type": "number" + }, + "peDurationTotalScoreShow": { + "format": "float", + "type": "number" + }, + "peFractionScoreEpisode": { + "format": "float", + "type": "number" + }, + "peFractionScoreShow": { + "format": "float", + "type": "number" + }, + "peFractionTotalScoreEpisode": { + "format": "float", + "type": "number" + }, + "peFractionTotalScoreShow": { + "format": "float", + "type": "number" + }, + "peListenScoreEpisode": { + "format": "float", + "type": "number" + }, + "peListenScoreShow": { + "description": "Anima User Embedding based features. Dot product of Anima User Embedding and podcast embeddings from UserEmbeddingBasedSignals (podcasts/quality/proto/ranking_signals.proto)", + "format": "float", + "type": "number" + }, + "peListenTotalScoreEpisode": { + "format": "float", + "type": "number" + }, + "peListenTotalScoreShow": { + "format": "float", + "type": "number" + }, + "popularLift": { + "description": "Per cluster lift where the lift_squashing_factor is set to -3", + "format": "double", + "type": "number" + }, + "pornScore": { + "description": "Score of porn safe search score go/safesearch", + "format": "double", + "type": "number" + }, + "positiveReactionBoostScore": { + "description": "boost score from the similarity between the candidate and the shows with user positive feedback, currently the score will be applied directly to the final ranking score: go/podcast-reaction-reranking-v1, but can be used as reranker model feature in the future.", + "format": "float", + "type": "number" + }, + "queryLanguage": { + "description": "This is the language extracted from the query_language.", + "type": "string" + }, + "rank": { + "description": "The index in the list of most popular podcasts.", + "format": "int64", + "type": "string" + }, + "rankPercentContrib": { + "description": "rank_percent_contrib = 100 / ( 1 + rank_percent ) Here rank_percent was derived from show level data in Wernicke corpus So if rank_percent of a feed was 3, then the feature value would be: 100 / (1 + 3) = 25. This indicator falls off quickly from 100 to almost 1 as we go from rank_percent 0 to 100.", + "format": "double", + "type": "number" + }, + "recentUserListeningWebrefSimilarity": { + "description": "Match score between user listening mids and episode webref entities, where the listening is limited to recent activity. Values are in a 0.0 to 1.0 range.", + "format": "double", + "type": "number" + }, + "secondsSincePublication": { + "description": "A reranking feature showing the age of the episode that is being recommended. This is computed as (current time - publication_time) publication_time of the episode is defined: (http://shortn/_S46Ouk5ZWW) publication_time is specified as seconds since Unix Epoch.", + "format": "int64", + "type": "string" + }, + "showBaseQuality": { + "description": "Base quality of the document, used as a multiplier for the query-specific score. Should be in [0, 1] range. See: http://g3doc/indexing/moonshine/generic/g3doc/doc/scoring", + "format": "double", + "type": "number" + }, + "showImpressions": { + "description": "Number of show episode impressions.", + "format": "int64", + "type": "string" + }, + "showImpressionsPastWeek": { + "description": "Number of show impressions during the past week.", + "format": "int64", + "type": "string" + }, + "showLanguage": { + "description": "Language of the show from show data.", + "type": "string" + }, + "showOnlyImpressions": { + "description": "Show only impressions. Doesn't include shows of episode impressions.", + "format": "int64", + "type": "string" + }, + "showOnlyImpressionsPastWeek": { + "format": "int64", + "type": "string" + }, + "showPopularRank": { + "description": "Expresses the absolute popularity rank within all documents.", + "format": "int64", + "type": "string" + }, + "spoofScore": { + "description": "Score of spoof safe search score go/safesearch", + "format": "double", + "type": "number" + }, + "subscribedShowListeningAffinity": { + "description": "This captures the fraction of total listening time accounted for by this subscribed show.", + "format": "float", + "type": "number" + }, + "subscriptionShowLevelRank": { + "description": "The rank of the show in the subscription candidate generator. Ranks are integral values starting with 1 for the highest subscribed affinity show.", + "format": "int64", + "type": "string" + }, + "surface": { + "type": "string" + }, + "trendingScorePercent": { + "description": "Show level trending score percent from Wernicke corpus.", + "format": "int64", + "type": "string" + }, + "ulpLanguage": { + "description": "Inferred language preferences of the user with their probabilities.", + "items": { + "$ref": "SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage" + }, + "type": "array" + }, + "ulpLanguageMatch": { + "description": "How much of ulp match the language of this episode", + "format": "float", + "type": "number" + }, + "userClusterDistance": { + "description": "The distance between user's Anima embedding and the centroid of the cluster in k-means.", + "format": "float", + "type": "number" + }, + "userInterestsSalientSimilarity": { + "description": "Match score between user interest mids and episode salient entities. in a 0.0 to 1.0 range.", + "format": "double", + "type": "number" + }, + "userInterestsWebrefSimilarity": { + "description": "Match score between user interest mids and episode webref entities. in a 0.0 to 1.0 range.", + "format": "double", + "type": "number" + }, + "userLanguage": { + "description": "Language of shows in user history and how much they listened to each.", + "items": { + "$ref": "SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage" + }, + "type": "array" + }, + "violenceScore": { + "description": "Score of violence safe search score go/safesearch", + "format": "double", + "type": "number" + }, + "vulgarScore": { + "description": "Score of vulgar safe search score go/safesearch", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage": { + "id": "SuperrootPodcastsRecommendationsPodcastRecsFeaturesUserLanguage", + "properties": { + "lang": { + "type": "string" + }, + "score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "TelephoneNumber": { + "id": "TelephoneNumber", + "properties": { + "areaCode": { + "description": "The local \"area code\", if there is such a concept.", + "type": "string" + }, + "countryCode": { + "description": "The international direct dialing code for the country, as per ITU E.164: http://www.itu.int/itudoc/itu-t/ob-lists/icc/e164_763.html", + "format": "int32", + "type": "integer" + }, + "extension": { + "description": "Extension (to be dialed after connection).", + "type": "string" + }, + "nationalPrefix": { + "description": "To call this number from within the same country, the national call prefix may be necessary. This is 1 in the US, 0 in the UK, etc. In the US, it's reasonable to omit the leading 1 when writing the number, but in other countries it is less optional.", + "type": "string" + }, + "number": { + "description": "The actual number, broken down into sections as per local convention. Note that the actual formatting of these sections (hyphen vs space, usage of parentheses) will vary according to local custom.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "TeragoogleDocumentInfo": { + "description": "The docshards are a FlatSSTable from (64-bit) urlfp to data containing the information found in this protocol buffer. (It's not actually one of these PBs for various performance reasons; instead, the DocumentFormat class handles serialization and deserialization in our own way) Next available ID: 37", + "id": "TeragoogleDocumentInfo", + "properties": { + "attachment": { + "items": { + "$ref": "TeragoogleDocumentInfoAttachment" + }, + "type": "array" + }, + "averageTermWeight": { + "description": "The average weight of terms in the document. If not available, there will be no term weight averaging: font sizes will be taken literally from the document HTML.", + "format": "int32", + "type": "integer" + }, + "doc": { + "$ref": "GDocumentBase", + "description": "The document itself. If present, the docservers parse the contents to create a mustang repository." + }, + "extendedDocid": { + "description": "The serialized ExtendedDocId, needed to construct a proper docinfo response if the docinfo request is missing it and it's present.", + "format": "byte", + "type": "string" + }, + "globalDocid": { + "description": "the global docid, we need it in the docservers (Continuum mode) to construct proper docinfo response when the docinfo request does not contain a valid global docid", + "format": "uint64", + "type": "string" + }, + "originalEncoding": { + "description": "If the original encoding isn't UTF8", + "format": "int32", + "type": "integer" + }, + "section": { + "items": { + "$ref": "TeragoogleDocumentInfoSection" + }, + "type": "array" + }, + "sectionType": { + "description": "Indicates format of 'tokens' field in all Section entries.", + "enum": [ + "MDU", + "TOKENSPACE", + "TERADOC" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "TeragoogleDocumentInfoAttachment": { + "description": "Misc. attachments to be added to the dynamic repository the docservers build. These override any attachments created by parsing the GDocumentBase.", + "id": "TeragoogleDocumentInfoAttachment", + "properties": { + "name": { + "type": "string" + }, + "options": { + "$ref": "TeragoogleRepositoryAttachmentOptions" + }, + "value": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "TeragoogleDocumentInfoSection": { + "description": "Sections to be added to the dynamic repository the docservers build. 'tokens' is either a sequence of tokens encoded using the TokenSequenceEncoder (MDU), or a TokenspaceRepository (depends on what's set in section_type. If 'doc' is present, then the contents of these sections override what was created by parsing 'doc'.", + "id": "TeragoogleDocumentInfoSection", + "properties": { + "fieldName": { + "description": "List of field repository (subsection) names within the section.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "tokens": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "TeragoogleRepositoryAttachmentOptions": { + "description": "Compression type to be applied to section/attachment.", + "id": "TeragoogleRepositoryAttachmentOptions", + "properties": { + "compression": { + "enum": [ + "COMPRESSION_NONE", + "COMPRESSION_ZIPPY" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "TitleSizeParams": { + "description": "Data related to title sizing calculations in Muppet.", + "id": "TitleSizeParams", + "properties": { + "muppetTitleLengthInDeciems": { + "description": "Total max length of title in deciems", + "format": "int32", + "type": "integer" + }, + "muppetTitleNumLines": { + "description": "Number of lines for title", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "ToolBarPerDocData": { + "description": "DO NOT USE THIS FOR ANYTHING LIVE WITHOUT PERMISSION! If you want to use this for anything user-facing file a logs-access ticket describing what you want to do. This data is currently only available in the freshdocs pipeline, so it will only be present in instant mustang and certain librarian shards. Email freshdocs-indexing with questions.", + "id": "ToolBarPerDocData", + "properties": { + "VisitorsPastDay": { + "description": "Indicates how many distinct toolbar visitors this page had in the past day. Will only be present if the number is reasonably large.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "TravelFlightsAirlineConfig": { + "description": "Next ID: 26", + "id": "TravelFlightsAirlineConfig", + "properties": { + "adwordsCid": { + "description": "Populated using airlines_company_ids.csv for AdWords company map", + "format": "int32", + "type": "integer" + }, + "alliance": { + "description": "STAR_ALLIANCE", + "enum": [ + "UNKNOWN", + "AIRUNION", + "ARAB_AIR_CARRIERS_ORGANIZATION", + "ARABESK_AIRLINE_ALLIANCE", + "CENTRAL_MOUNTAIN_AIR", + "CONTINENTAL_AIRLINES", + "EAGLE_AIR", + "FEDEX_EXPRESS", + "GRUPO_TACA", + "JAT_AIRWAYS", + "LUFTHANSA_REGIONAL", + "ONEWORLD", + "QUALIFLYER", + "SIX", + "SKYTEAM", + "SKYTEAM_CARGO", + "STAR_ALLIANCE", + "TUI_AIRLINES", + "WOW_ALLIANCE" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Also noted as '6'", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "baggageCarryonLimitationsUrls": { + "$ref": "TravelFlightsNameCatalogProto", + "description": "Default url for baggage fee information." + }, + "baggageFeeUrls": { + "$ref": "TravelFlightsNameCatalogProto", + "description": "Default url for baggage fee information." + }, + "countryCode": { + "description": "ISO 3166-1 alpha-2 country code in which this airline is domestic.", + "type": "string" + }, + "countryContactInfo": { + "description": "LocalizedContactInfo allows localization by country and language. Once the data is ready, we will start filling both fields. After that the old field will be deprecated and deleted at some point.", + "items": { + "$ref": "TravelFlightsAirlineConfigCountryContactInfo" + }, + "type": "array" + }, + "dupFlag": { + "description": "true, if this carrier's IATA code is a \"controlled duplicate\" (goto/controlled-duplicate).", + "type": "boolean" + }, + "fareFamilyUrls": { + "$ref": "TravelFlightsNameCatalogProto" + }, + "fqtvPartnerCode": { + "description": "IATA codes of airlines who this airline's travel can be credited to for mileage accrual.", + "items": { + "type": "string" + }, + "type": "array" + }, + "iataCode": { + "description": "Note that some iata_codes are reused (`dup_flag` field). For details, including how to resolve collisions for airlines shown in Google Flights, see: go/controlled-duplicate go/flights-data/airlines#resolving-iata-code-collisions cs/go/controlled-duplicate U2 - some have no IATA code", + "type": "string" + }, + "icaoCode": { + "description": "EZY - some have no ICAO code", + "type": "string" + }, + "innovataCode": { + "description": "U2! - with optional dedup sign ('!')", + "type": "string" + }, + "localizedContactInfo": { + "items": { + "$ref": "TravelFlightsAirlineConfigLocalizedContactInfo" + }, + "type": "array" + }, + "mid": { + "description": "Note: fields #16 and #17 are ununused. The identifier of the airline, e.g. /m/07y2s for United Populated using airlines_mids.csv.", + "type": "string" + }, + "names": { + "$ref": "TravelFlightsNameCatalogProto", + "description": "EasyJet/イージージェット" + }, + "popularity": { + "description": "Number of flights with this airline over the next 180 days.", + "format": "int32", + "type": "integer" + }, + "shortNames": { + "$ref": "TravelFlightsNameCatalogProto", + "description": "KLM - instead of 'KLM Royal Dutch Airlines'" + }, + "type": { + "enum": [ + "SCHEDULED_PASSENGER", + "NON_SCHEDULED_PASSENGER", + "SCHEDULED_CARGO", + "NON_SCHEDULED_CARGO", + "NON_AIRLINE_LOAD_DEVICE", + "CRS", + "SCHEDULED_PASSENGER_CARGO", + "NON_SCHEDULED_PASSENGER_CARGO", + "RAILWAY", + "AIRLINE_PREFIX", + "UNRECOGNIZED" + ], + "enumDescriptions": [ + "A", + "B", + "C", + "D", + "G", + "H", + "I", + "J", + "K", + "O", + "next id: 12" + ], + "type": "string" + }, + "urls": { + "$ref": "TravelFlightsNameCatalogProto", + "description": "http://www.airfrance.us/" + }, + "waiverSummaryUrls": { + "$ref": "TravelFlightsNameCatalogProto", + "description": "Default url for waiver information." + } + }, + "type": "object" + }, + "TravelFlightsAirlineConfigContactInfo": { + "id": "TravelFlightsAirlineConfigContactInfo", + "properties": { + "data": { + "description": "Typically, formatted phone number.", + "type": "string" + }, + "type": { + "enum": [ + "PHONE_PRIMARY", + "PHONE_TTY" + ], + "enumDescriptions": [ + "Primary phone number.", + "TTY(Teletype) number for hearing/speech impaired users." + ], + "type": "string" + } + }, + "type": "object" + }, + "TravelFlightsAirlineConfigCountryContactInfo": { + "description": "Airline contact info grouped by country.", + "id": "TravelFlightsAirlineConfigCountryContactInfo", + "properties": { + "contactInfo": { + "items": { + "$ref": "TravelFlightsAirlineConfigContactInfo" + }, + "type": "array" + }, + "countryCode": { + "description": "Two char country code, e.g. \"US\"", + "type": "string" + } + }, + "type": "object" + }, + "TravelFlightsAirlineConfigLocalizedContactInfo": { + "description": "Airline contact info grouped by language. The language locale subcode will determine the country.", + "id": "TravelFlightsAirlineConfigLocalizedContactInfo", + "properties": { + "contactInfo": { + "items": { + "$ref": "TravelFlightsAirlineConfigContactInfo" + }, + "type": "array" + }, + "language": { + "description": "IETF BCP-47, e.g. \"en\" or \"zh-HK-Hant\"", + "type": "string" + } + }, + "type": "object" + }, + "TravelFlightsNameCatalogEntry": { + "id": "TravelFlightsNameCatalogEntry", + "properties": { + "language": { + "type": "string" + }, + "text": { + "type": "string" + } + }, + "type": "object" + }, + "TravelFlightsNameCatalogProto": { + "id": "TravelFlightsNameCatalogProto", + "properties": { + "name": { + "items": { + "$ref": "TravelFlightsNameCatalogEntry" + }, + "type": "array" + } + }, + "type": "object" + }, + "TrawlerClientServiceInfo": { + "description": "ClientServiceInfo is meant for trawler/harpoon clients which are in turn services to store some data specific to their clients. E.g., Kodachrome may serve multiple other clients. In this case they can store their client name here. Webmirror may also store the feed name here even though a feed is technically not a service client. ClientServiceInfo is in nature similar to ClientInfo, except it's stored in FetchReplyData (i.e., trawler logs), whereas ClientInfo is copied to FetchReply (outside FetchReplyData), thus it's not stored in trawler logs.", + "id": "TrawlerClientServiceInfo", + "properties": { + "DelegatedProjectName": { + "description": "Project delegation name to support bandwidth enforcement. Harpoon will call SetDelegatedUser() with the specified DelegatedProjectName and a domain associated with the RequestorID provided in the client capatibility file.", + "type": "string" + }, + "ServiceClientID": { + "type": "string" + }, + "clientLabels": { + "items": { + "$ref": "TrawlerClientServiceInfoClientLabels" + }, + "type": "array" + } + }, + "type": "object" + }, + "TrawlerClientServiceInfoClientLabels": { + "description": "ClientLabels contains client-specified key/value pairs, used to annotate individual FetchRequests and FetchReplies. This is primarily useful when the Multiverse Nexus performs postprocessing of fetchreplies. ClientLabels essentially allow clients to use the Nexus UI to slice statistics computed on fetchreplies by the specified key/value pairs. Note: we don't use \"map\" type here delibrately in order to avoid the non-deterministric serialization of the \"map\" field. See b/69064361 for more details.", + "id": "TrawlerClientServiceInfoClientLabels", + "properties": { + "labelsDeprecated": { + "additionalProperties": { + "$ref": "TrawlerClientServiceInfoClientLabelsClientLabelValues" + }, + "description": "======================== End of Deprecated Part ========================", + "type": "object" + }, + "name": { + "type": "string" + }, + "values": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "TrawlerClientServiceInfoClientLabelsClientLabelValues": { + "description": "===================== Beginning of Deprecated Part ======================", + "id": "TrawlerClientServiceInfoClientLabelsClientLabelValues", + "properties": { + "value": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "TrawlerContentRangeInfo": { + "description": "Parsed version of a Content-Range field, which in http might look like: Content-Range: bytes 500-999/3156", + "id": "TrawlerContentRangeInfo", + "properties": { + "EndPos": { + "format": "int64", + "type": "string" + }, + "StartPos": { + "description": "In ContentRange, the first byte is 0 (rather than 1), and the positions are inclusive. Thus, length is EndPos+1-StartPos", + "format": "int64", + "type": "string" + }, + "TotalLength": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "TrawlerCrawlTimes": { + "description": "This is similar to CrawlDates group in FetchReplyData, except that 1) it's a message; 2) it's filled in each Redirects hop; and 3) the timestamps are in ms rather than seconds since Unix Epoch.", + "id": "TrawlerCrawlTimes", + "properties": { + "NotChangedTimeMs": { + "description": "fetched from the web. Time when the page was last", + "format": "int64", + "type": "string" + }, + "OriginalCrawlTimeMs": { + "description": "Time when the page was", + "format": "int64", + "type": "string" + }, + "ReuseTimeMs": { + "description": "checked but found to be the same as before. If set, timestamp to indicate", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "TrawlerEvent": { + "description": "Event is for logging interesting events that happen during a url fetch. Interesting events include \"fetch start\", \"url rejected\", etc. The events are written to binary logs together with the request and reply messages. If the same event occurs multiple times consecutively, We record the time of the first three instances in EarliestTimeStamp but omit the rest. We keep track the total number of occurrences in NumOccurrences and the timestamp of the last occurrence is kept in TimeStamp field.", + "id": "TrawlerEvent", + "properties": { + "ID": { + "format": "uint64", + "type": "string" + }, + "Msg": { + "type": "string" + }, + "NumOccurrences": { + "format": "int32", + "type": "integer" + }, + "OldestTimeStampInUS": { + "description": "Limited to 3.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + }, + "TimeStampInUS": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "TrawlerFetchBodyData": { + "id": "TrawlerFetchBodyData", + "properties": { + "compression": { + "enum": [ + "NO_COMPRESSION", + "ZLIB_COMPRESSION", + "HTML_DICTIONARY_COMPRESSION" + ], + "enumDescriptions": [ + "", + "RFC 1950", + "RFC 1950 with html-dictionary" + ], + "type": "string" + }, + "content": { + "format": "byte", + "type": "string" + }, + "uncompressedSize": { + "description": "Size hint. Set if compression != NO_COMPRESSION", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "TrawlerFetchReplyData": { + "description": "Fetcher -\u003e FetchClient FetchReplyData is the metadata for a reply from a FetchRequest. For metadata + document body, FetchReply is further below. NOTE: FetchReplyData (and FetchReply) is the output interface from Multiverse. Teams outside Multiverse/Trawler should not create fake FetchReplies. Trawler: When adding new fields here, it is recommended that at least the following be rebuilt and pushed: - cron_fetcher_index mapreduces: so that UrlReplyIndex, etc. retain the new fields - tlookup, tlookup_server: want to be able to return the new fields - logviewer, fetchutil: annoying to get back 'tag88:' in results -------------------------- Next Tag: 124 -----------------------", + "id": "TrawlerFetchReplyData", + "properties": { + "BadSSLCertificate": { + "description": "This field, if non-empty, contains the SSL certificate chain from the server. The filed should be serialized SSLCertificateInfo protobuf, although it used to be text format. Hence, one should ideally use trawler::CertificateUtil to check this field and understand in more detail. This field is populated in two cases: (1) something is wrong with the server certificate and we cannot verify the server's identity. In this case the URL most likely won't display in a browser; (2) if you turned on WantSSLCertificateChain in the FetchRequest. In this case the server certificate may be perfectly fine (despite the field name). This is for the initial hop; additional hops are in Redirects group.", + "format": "byte", + "type": "string" + }, + "ClientServiceInfo": { + "$ref": "TrawlerClientServiceInfo", + "description": "Some client specific data that's set by client in the FetchRequest, and we just copy it here verbatim. This is similar to ClientInfo that we copy from FetchRequest to FetchReply, but this is copied to FetchReplyData, thus stored in trawler logs so can be useful for debugging cases." + }, + "CompressedBody": { + "description": "Is the associated body compressed ?", + "type": "boolean" + }, + "CrawlTimes": { + "$ref": "TrawlerCrawlTimes" + }, + "DNSHost": { + "description": "Sometimes the hostid and destination IP in the FetchReplyData are not for the hostname in the url. If that's the case DNSHost will be the host that we have used when resolving hostid and DNS. Right now there are two cases: (1) malware team provides a proxy IP:Port to us, so DNSHost will be the proxy IP; and (2) PSS team provides a reference DNS host; so DNSHost will be the reference DNS host.", + "type": "string" + }, + "DownloadTime": { + "description": "The download time for this fetch (ms). This is the RTT time between fetcher and HOPE, note it does not include time from redirects, just initial hop. If you want the sum of the DownloadTime values for all fetches in the redirect chain, then use the DownLoadTime value in the FetchStats.", + "format": "int32", + "type": "integer" + }, + "EgressRegion": { + "description": "If present, the edge region that we have used.", + "type": "string" + }, + "EligibleGeoCrawlEgressRegion": { + "description": "If present, it means this host might be eligible for geo crawl. However, this does not mean we enable geo-crawl for this request. Check \"GeoCrawlEgressRegion\" instead to see if this fetch is conducted via geo crawl.", + "type": "string" + }, + "Endpoints": { + "$ref": "TrawlerTCPIPInfo", + "description": "------- If fetched, the IP from which we fetched, as well as source IP and ports. It is recommended to use trawler::DestinationIP()/HasDestinationIP() accessors, which return a proper IPAddress." + }, + "Events": { + "items": { + "$ref": "TrawlerEvent" + }, + "type": "array" + }, + "FetchPatternFp": { + "description": "With the introduction of fetch pattern based hostload exceptions, one hostid may have multiple hostload buckets, each with its own hostload. In this case, FetchPatternFp will be set to identify the hostload bucket within the hostid. Note this field is only meaningful for the HostBucketData which is recorded only when the client requests to have as part of reply. However, this field is useful for certain stats gathering, so we choose to always record it if its value is available during the fetch.", + "format": "uint64", + "type": "string" + }, + "FlooEgressRegion": { + "description": "If present, fetch was conducted using floonet and this is the location of floonet egress point we used.", + "type": "string" + }, + "GeoCrawlEgressRegion": { + "description": "If present, the last hop of the fetch was conducted using floonet and this is the location of floonet egress point. It is different from EgressRegion and FlooEgressREgion because it is a Trawler transparent routing configured in the geo crawl rules(go/da-geo-crawl).", + "type": "string" + }, + "GeoCrawlFallback": { + "description": "Whether we fallback from geo crawl to local crawl during fetch. The fallback could happen in any hops and there can be at most one fallback because once fallback happens, we will not try geo-crawl anymore.", + "type": "boolean" + }, + "GeoCrawlLocationAttempted": { + "description": "Set only when GeoCrawlFallback is true. Logs the geo crawl location we attempted but failed for this request.", + "type": "string" + }, + "HSTSInfo": { + "description": "Set to: o HSTS_STATUS_NONE if there was no HSTS policy match for the URL's host. o HSTS_STATUS_AVAILABLE if there was an HSTS policy, but the URL was not rewritten from HTTP to HTTPS because enable_hsts was not set in client capability config. o HSTS_STATUS_REWRITTEN if the HSTS policy was followed and url was rewritten from HTTP to HTTPS. This field only pertains to the current URL fetch and does not explain a redirect's HSTS status. However, FetchReplyData.Redirects have their own HSTSInfo.", + "enum": [ + "HSTS_STATUS_NONE", + "HSTS_STATUS_AVAILABLE", + "HSTS_STATUS_REWRITTEN" + ], + "enumDescriptions": [ + "No HSTS policy available for this fetch.", + "There is an HSTS policy for this fetch but the fetch URL was not applied.", + "There is an HSTS policy for this fetch and the URL was rewritten from HTTP -\u003e HTTPS." + ], + "type": "string" + }, + "HTTPTrailers": { + "description": "The received HTTP trailers if available.", + "items": { + "$ref": "TrawlerFetchReplyDataHTTPHeader" + }, + "type": "array" + }, + "HopCacheKeyForLookup": { + "description": "Returns the cache key used when doing cache lookup/update, on a per-hop basis (initial hop) Note this field will not be set if cache lookup/update is disabled/skipped.", + "format": "uint64", + "type": "string" + }, + "HopCacheKeyForUpdate": { + "format": "uint64", + "type": "string" + }, + "HopReuseInfo": { + "description": "Returns trawler::ReuseInfo with status of IMS/IMF/cache query, on a per-hop basis (initial hop) For example, if the URL redirect chain is [URL A] --\u003e [URL B] --\u003e [URL C], this field stores the reuse info of [URL A].", + "enum": [ + "RUI_NONE", + "RUI_IMS_CACHE_CURRENT", + "RUI_IMS_NOT_MODIFIED", + "RUI_IMS_CHANGED", + "RUI_IMF_NOCACHE", + "RUI_IMF_CACHE_CURRENT", + "RUI_IMF_HIT", + "RUI_IMF_CHANGED", + "RUI_IMF_POST_HIT_ERROR", + "RUI_CACHE_CURRENT", + "RUI_CACHE_EXPIRED", + "RUI_CACHE_NOCACHE", + "RUI_CACHE_UNUSABLE", + "RUI_IMF_UNUSABLE", + "NUM_REUSE_INFO_VALS" + ], + "enumDescriptions": [ + "Neither IMS or IMF were enabled", + "IMS Had IMS enabled; but had cache hit;", + "so didn't need to do the fetch Did IMS and got back 304", + "Did IMS and got back non-304", + "IMF - UseBigTableIMF set IMF enabled; but result wasn't in the cache", + "IMF enabled; but cached copy was current", + "IMF enabled; had older cached copy;", + "but got back 304; returned content IMF enabled; had older cached copy;", + "got back non-304; indicating change Got back 304 on IMF; but cached copy failed;", + "ACCEPTABLE AGE; no IMF Cache hit", + "Had content; but older than max", + "No content in cache", + "Cache entry; but not usable", + "Cache entry for IMF; but not usable", + "*** don't forget to update." + ], + "type": "string" + }, + "HopRobotsInfo": { + "description": "Extra information in robots.txt for this page (integer: or'ed together of type trawler::RobotsInfo) on a per-hop basis (initial hop)", + "format": "int32", + "type": "integer" + }, + "HostBucketData": { + "$ref": "TrawlerHostBucketData", + "description": "Data about the host bucket this request is in (if desired) Please talk with Trawler team before considering using this, since what we fill in here is subject to change." + }, + "HostId": { + "description": "If known, the trawler::HostId that identifies the host (initial hop).", + "format": "uint64", + "type": "string" + }, + "HttpProtocol": { + "description": "The http protocol we send to fetch this URL. This will only be set if the request is using http", + "enum": [ + "PROTO_GET", + "PROTO_POST", + "PROTO_HEAD", + "PROTO_PUT", + "PROTO_DELETE", + "PROTO_PATCH", + "PROTO_OPTIONS", + "FIRST_PROTO", + "NUM_PROTOS" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "We list this after PROTO_* values to make sure", + "HTTPProtocolType_Name(0) returns the correct string." + ], + "type": "string" + }, + "HttpRequestHeaders": { + "description": "The HTTP headers we sent to fetch this URL (initial hop). Not normally filled in, unless FetchParams.WantSentHeaders is set.", + "type": "string" + }, + "HttpResponseHeaders": { + "description": "HTTP headers from the response (initial hop). Trawler does not fill this in; this is intended as a placeholder for crawls like webmirror that fill in and want to track this across redirect hops.", + "type": "string" + }, + "HttpVersion": { + "description": "Stores the HTTP version we used in the final hop.", + "enum": [ + "HTTP_11", + "HTTP_10", + "HTTP_09", + "HTTP_2", + "HTTP_AUTO", + "FIRST_VERSION", + "NUM_VERSIONS" + ], + "enumDescriptions": [ + "", + "", + "??? do we want this ???", + "EXPERIMENTAL, DO NOT USE unless you have talked to", + "trawler-dev@. Allow fetcher to automatically select HTTP protocol", + "version. The selection is based on prior knowledge and dynamic server response. Basically, if the client and the host is configured to allow HTTP/2 traffic, we will select HTTP/2 and send HTTP/2 traffic; and we will fallback to HTTP/1 if we found the server does not support HTTP/2 through ALPN. HTTP Version selection will be applied to each redirect hop. More details about HTTP/2 traffic configuration can be found in: googledata/googlebot/http2_traffic_control_file. We list this after HTTP_* values to make sure", + "HTTPVersion_Name(0) returns the correct string." + ], + "type": "string" + }, + "ID": { + "description": "Same as the ID of the matching request (used for matching internal fetchclient data in request/reply)", + "format": "uint64", + "type": "string" + }, + "LastUrlStatus": { + "$ref": "TrawlerFetchStatus", + "description": "Crawl status of the last url on chain" + }, + "PolicyData": { + "description": "Trawler can optionally add a policy label to a FetchReply. Some uses: - \"spam\" label via trawler_site_info - \"roboted:googlebot\" label as a signal to crawls supporting multiple useragents that it's not safe to share the fetch replies with googlebot crawls.", + "items": { + "$ref": "TrawlerPolicyData" + }, + "type": "array" + }, + "PostData": { + "description": "If the fetch uses HTTP POST, PUT, or PATCH protocol, and WantPostData is true, the POST data will be copied here. This is only for initial hop. If there are redirects, HTTP POST will be changed to GET on subsequent hops, and the PostData will be cleared. There is only one exception, if the HTTP response code to the POST request is 307 (a new code introduced in RFC7321, sec. 6.4.7), we will preserve the request method and the PostData for the next hop.", + "format": "byte", + "type": "string" + }, + "PredictedDownloadTimeMs": { + "description": "This is available only if a fetch results in TIMEOUT_WEB, and we were able to predict, based on content length and bandwidth we were using, how much time (in ms) would be needed to download the entire content.", + "format": "int32", + "type": "integer" + }, + "ProtocolVersionFallback": { + "description": "Whether we fallback from HTTP/2 to HTTP/1.1 during fetch. The fallback could happen in any hops and there can be at most one fallback because once fallback happens, we will not try HTTP/2 anymore.", + "type": "boolean" + }, + "RedirectSourceFetchId": { + "description": "If this fetch was a result of a redirect, we populate the parent ID here.", + "format": "uint64", + "type": "string" + }, + "RequestorID": { + "description": "RequestorId is the same on as in the request that triggers this reply -- mainly for diagnostics purpose", + "type": "string" + }, + "RequestorIPAddressPacked": { + "description": "Machine that sent Trawler this request, for logging. An IPAddress object, packed as a string.", + "format": "byte", + "type": "string" + }, + "ReuseInfo": { + "description": "-------- Returns trawler::ReuseInfo with status of IMS/IMF/cache query. Consider using HopReuseInfo instead, which has per-redirect hop detail. If there's URL redirection, this field stores the reuse info of the last hop. For example, if the and URL redirect chain is [URL A] --\u003e [URL B] --\u003e [URL C], this field stores the reuse info of [URL C].", + "enum": [ + "RUI_NONE", + "RUI_IMS_CACHE_CURRENT", + "RUI_IMS_NOT_MODIFIED", + "RUI_IMS_CHANGED", + "RUI_IMF_NOCACHE", + "RUI_IMF_CACHE_CURRENT", + "RUI_IMF_HIT", + "RUI_IMF_CHANGED", + "RUI_IMF_POST_HIT_ERROR", + "RUI_CACHE_CURRENT", + "RUI_CACHE_EXPIRED", + "RUI_CACHE_NOCACHE", + "RUI_CACHE_UNUSABLE", + "RUI_IMF_UNUSABLE", + "NUM_REUSE_INFO_VALS" + ], + "enumDescriptions": [ + "Neither IMS or IMF were enabled", + "IMS Had IMS enabled; but had cache hit;", + "so didn't need to do the fetch Did IMS and got back 304", + "Did IMS and got back non-304", + "IMF - UseBigTableIMF set IMF enabled; but result wasn't in the cache", + "IMF enabled; but cached copy was current", + "IMF enabled; had older cached copy;", + "but got back 304; returned content IMF enabled; had older cached copy;", + "got back non-304; indicating change Got back 304 on IMF; but cached copy failed;", + "ACCEPTABLE AGE; no IMF Cache hit", + "Had content; but older than max", + "No content in cache", + "Cache entry; but not usable", + "Cache entry for IMF; but not usable", + "*** don't forget to update." + ], + "type": "string" + }, + "RobotsInfo": { + "description": "Extra information in robots.txt for this page (ORed together bits from trawler::RobotsInfo). e.g. nosnippet vs. noarchive vs nofollow vs noindex vs disallow Consider using HopRobotsInfo instead, which has per-redirect hop detail.", + "format": "int32", + "type": "integer" + }, + "RobotsStatus": { + "$ref": "TrawlerFetchStatus", + "description": "Status of the robots.txt fetch. Currently, this is present if: - Certain robots error cases, such as URL_TIMEOUT-TIMEOUT_ROBOTS or URL_UNREACHABLE-UNREACHABLE_ROBOTS_ERROR. - If WantRobotsBody is set in the FetchParams." + }, + "RobotsTxt": { + "description": "The robots.txt we used for this URL (initial hop). Not normally filled in unless WantRobotsBody is set. This is mostly for debugging purposes and should not be used for large volumes of traffic.", + "format": "byte", + "type": "string" + }, + "Status": { + "$ref": "TrawlerFetchStatus", + "description": "Status of the fetch - refers to the final status at the end of the redirect chain." + }, + "ThrottleClient": { + "$ref": "TrawlerThrottleClientData", + "description": "If present, Client API will enforce the contained constraints" + }, + "ThrownAwayBytes": { + "description": "Sometimes we throw away content because we cannot store it in the internal buffers. These is how many bytes we have thrown away for this factor.", + "format": "int64", + "type": "string" + }, + "TimestampInMS": { + "description": "When this reply came back from fetcher NOTE: TimestampInMS is used for internal debugging. To see when a document was crawled, check CrawlDates.", + "format": "int64", + "type": "string" + }, + "TotalFetchedSize": { + "description": "How many raw bytes we read from the connection to the server when we fetched the page. Includes everything: HTTP headers, overhead for HTTP chunked encoding, whatever compressed/uncompressed form (i.e. gzip/deflate accept-encoding) the content was sent in, etc. This is NOT the same as the size of the uncompressed FetchReply::Body - if the webserver used gzip encoding, this value might be much smaller, since it only counts the compressed wire size. To illustrate, think of 3 sizes: 1) TotalFetchedSize - amount Trawler read over the wire from the server. If they used gzip/deflate, this might be 4-5x smaller than the body. 2) UnTruncatedSize/CutoffSize - how big is the full document, after uncompressing any gzip/deflate encoding? If truncated, this is reflected in CutoffSize. 3) FetchReply::Body size - most crawls enable Trawler compression to save storage space (gzip + a google html dictionary). The body size that the end Trawler client sees is post-compression.", + "format": "int64", + "type": "string" + }, + "TransparentRewrites": { + "description": "If the url got rewriten by transparent rewrites, here it is the series of rewrites it got through. The fetched one is the last", + "items": { + "type": "string" + }, + "type": "array" + }, + "TrawlerPrivate": { + "$ref": "TrawlerTrawlerPrivateFetchReplyData", + "description": "For logging only; not present in the actual fetcher response" + }, + "Url": { + "description": "The original url in the request we are answering. Even though \"optional,\" url must be filled in on all well-formed replies. Trawler guarantees that it is filled in, and basically every client expects it (CHECKs in some cases). -\u003e Not filling this field in is a bug, if you share this data with other crawls/pipelines. You should expect everybody else to require a url.", + "type": "string" + }, + "UrlEncoding": { + "description": "Encoding info for the original url itself. Bitfield encoding; see UrlEncoding::{Set,Get}Value in webutil/urlencoding.", + "format": "int32", + "type": "integer" + }, + "UseHtmlCompressDictionary": { + "description": "Use the special compression dictionary for uncompressing this. (trawler::kHtmlCompressionDict. Use trawler::FetchReplyUncompressor to uncompress; crawler/trawler/public/fetchreply-util.h)", + "type": "boolean" + }, + "crawldates": { + "$ref": "TrawlerFetchReplyDataCrawlDates" + }, + "deliveryReport": { + "$ref": "TrawlerFetchReplyDataDeliveryReport", + "description": "Transfer operation detailed report." + }, + "fetchstats": { + "$ref": "TrawlerFetchReplyDataFetchStats" + }, + "originalProtocolUrl": { + "description": "If the input url in FetchRequest is Amazon S3 protocol or Apple Itunes protocol, we will translate it into https url and log it as https url. In the meantime we will store the original s3/itunes url in this field. Before sending back to client, the Url will be translated back to s3 and this field will be cleard.", + "type": "string" + }, + "partialresponse": { + "$ref": "TrawlerFetchReplyDataPartialResponse" + }, + "protocolresponse": { + "$ref": "TrawlerFetchReplyDataProtocolResponse" + }, + "redirects": { + "items": { + "$ref": "TrawlerFetchReplyDataRedirects" + }, + "type": "array" + }, + "trafficType": { + "description": "Traffic type of this fetch.", + "enum": [ + "TRAFFIC_TYPE_UNSPECIFIED", + "TRAFFIC_TYPE_NO_FETCH", + "TRAFFIC_TYPE_ONEOFF_CRAWL", + "TRAFFIC_TYPE_DISCOVERY", + "TRAFFIC_TYPE_REFRESH" + ], + "enumDescriptions": [ + "", + "Not fetch traffic is consisted of requests that we schedule it as notification for clients, but not need to actually fetch.", + "As the name suggests, oneoff crawl means client just needs to crawl the URLs once.", + "Discovery traffic is consisted of the new URLs discovered by Multiverse, that we have never seen in the crawl history.", + "The context of refresh crawl is that client needs to check the content of some URLs periodically, so they refresh those URLs regularly." + ], + "type": "string" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataCrawlDates": { + "description": "Reuse information returned if UrlState == CRAWLED, specifying when we may have reused from cache. See also ReuseInfo below. NOTE: Please use the CrawlTimes below. CrawlDates is deprecated. use CrawlTimes instead!", + "id": "TrawlerFetchReplyDataCrawlDates", + "properties": { + "NotChangedDate": { + "description": "fetched from the web. Timestamp indicates when", + "format": "int32", + "type": "integer" + }, + "OriginalCrawlDate": { + "description": "Timestamp when the page was", + "format": "int32", + "type": "integer" + }, + "ReuseDate": { + "description": "the page was last checked but found to be the same as before. If set, timestamp to indicate", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataDeliveryReport": { + "description": "Depending on which Data Acquisition API the client uses, the fetched content can be delivered to the client in the RPC, via Goops, or copied to the client's storage system (possibly after transformation). In the latter case, DeliveryReport will contain info about the delivery status, such as whether we have permission error, whether the destination storage is out of quota, etc).", + "id": "TrawlerFetchReplyDataDeliveryReport", + "properties": { + "events": { + "description": "The events store the detail of messages (usually error).", + "items": { + "$ref": "TrawlerEvent" + }, + "type": "array" + }, + "filePath": { + "description": "The complete path (include the file name) of the file downloaded. For requests that require delivery, this path will be the user specified location. For requests that use Multiverse default storage, this path will be the managed by Multiverse.", + "type": "string" + }, + "status": { + "description": "Status of the transfer action.", + "enum": [ + "TRANSFER_UNSPECIFIED", + "TRANSFER_OK", + "TRANSFER_UNAVAILABLE", + "TRANSFER_INTERNAL", + "TRANSFER_INVALID_DESTINATION", + "TRANSFER_PERMISSION_DENIED", + "TRANSFER_RESOURCE_EXHAUSTED", + "TRANSFER_NOT_ATTEMPTED" + ], + "enumDescriptions": [ + "", + "Everything looks good!", + "The service is currently unavailable. This is most likely a transient condition, which can be corrected by retrying with a backoff. Note that it is not always safe to retry non-idempotent operations.", + "Internal errors. This means that some invariants expected by the underlying system have been broken.", + "File can't be moved to the specified destination. Most likely due to an invalid destination or invalid destination configuration.", + "The request does not have valid authentication credentials for the operation.", + "Some resource has been exhausted, perhaps a per-user quota, or perhaps the entire file system is out of space.", + "The transfer did not start, typically because of the fetch failure." + ], + "type": "string" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataFetchStats": { + "description": "The fetcher keeps track of various time intervals spent in the states of the fetcher url control flow. Sometimes flows branch out into more than one flow (next flow), and we aggregate all the time intervals spent in a specific state for all the flows to get the time interval for the state. The time interval for a state is therefore not the time interval of an individual flow, if the WaitNextFlow time is non zero. The WaitNextFlow interval included here is the time spent by one flow waiting for another flow. Although the WaitNextFlow time is the time spent by a flow in the WaitNextFlow state, its also equivalent to the entire timeline of another flow. It is the time spent in the various states of another flow. In computing the total time spent in the primary flow, one must omit the WaitNextFlow time, since it is already included in the form of slices of individual state time intervals in the aggregated time intervals for other states, and will result in double counting.", + "id": "TrawlerFetchReplyDataFetchStats", + "properties": { + "BotOverheadMS": { + "description": "Overhead spent RPCing with the Bot/proxy.", + "format": "int32", + "type": "integer" + }, + "ClientControlflowStats": { + "$ref": "TrawlerFetchReplyDataFetchStatsClientStateStats" + }, + "ConnectTimeMs": { + "description": "Report only with first request on connection, so that we keep track of the connect time with a host. Sometimes a connection is initiated by a prior request that times out before the connection is established. Another request can get scheduled on a connection that is already in the process of being established but has no request scheduled onto it. We want to keep track of the entire connect time even if a request didn't need to wait for the entire connection establishment time. Sometimes a connection may get established before the first request uses it. We tag along the connect time with the first request using the connection. ConnectTimeMs also includes SSL negotiation time.", + "format": "int32", + "type": "integer" + }, + "ControlflowStats": { + "$ref": "TrawlerFetchReplyDataFetchStatsStateStats" + }, + "DownLoadTime": { + "description": "DownLoadTime = Share of connect time + ServerResponseTimeMs + TransferTimeMs (see below) in ms", + "format": "int32", + "type": "integer" + }, + "EdgeEgressOverheadMs": { + "description": "Overhead spent routing the request from HOPE to edge egress nodes, which open connection to webservers. This is only set for edge fetches (e.g., through Floonet egress nodes).", + "format": "int32", + "type": "integer" + }, + "SSLConnectTimeMs": { + "description": "ConnectTimeMs includes TCP connect time + SSL time, whereas SSLConnectTimeMs includes only the latter.", + "format": "int32", + "type": "integer" + }, + "ServerResponseTimeMs": { + "description": "Time between the request send and the receipt of the first fragment of the response. For HTTP responses the first fragment is the first fragment of the response payload (the headers are ignored).", + "format": "int32", + "type": "integer" + }, + "TransferTimeMs": { + "description": "Time to receive the entire response payload starting the clock on receiving the first fragment.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataFetchStatsClientStateStats": { + "description": "Records stats about state changes on the client side if there're any. For example, there's a state of cache lookup when using private-cache client library.", + "id": "TrawlerFetchReplyDataFetchStatsClientStateStats", + "properties": { + "WaitContentCacheUsec": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataFetchStatsStateStats": { + "description": "The following are only populated if Params.WantStateStats is true.", + "id": "TrawlerFetchReplyDataFetchStatsStateStats", + "properties": { + "EndTrackingTimeUsec": { + "format": "int64", + "type": "string" + }, + "StartTrackingTimeUsec": { + "description": "Start and end timestamp tracking the delays for this request.", + "format": "int64", + "type": "string" + }, + "WaitCompressTimeUsec": { + "format": "int32", + "type": "integer" + }, + "WaitContentCacheUsec": { + "format": "int32", + "type": "integer" + }, + "WaitCredentialTimeUsec": { + "format": "int32", + "type": "integer" + }, + "WaitDNSTimeUsec": { + "format": "int32", + "type": "integer" + }, + "WaitFetchClientUsec": { + "format": "int32", + "type": "integer" + }, + "WaitForCachedContentStreamingUsec": { + "format": "int32", + "type": "integer" + }, + "WaitForFetchUsec": { + "format": "int32", + "type": "integer" + }, + "WaitHostIdTimeUsec": { + "format": "int32", + "type": "integer" + }, + "WaitNextFlowUsec": { + "format": "int32", + "type": "integer" + }, + "WaitRobotsCacheTimeUsec": { + "description": "obsolete. Not set.", + "format": "int32", + "type": "integer" + }, + "WaitRobotsFetchTimeUsec": { + "description": "obsolete. Not set.", + "format": "int32", + "type": "integer" + }, + "WaitRobotsTimeUsec": { + "format": "int32", + "type": "integer" + }, + "WaitScheduleTimeUsec": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataHTTPHeader": { + "description": "header : value", + "id": "TrawlerFetchReplyDataHTTPHeader", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataPartialResponse": { + "description": "---------------------------------------------------------------------- PartialResponse is used with streaming responses in LargeFileFetchAdapter. Rather than fitting entirely in a single FetchReply, there is a series of FetchReplies until IsFinalResponse. Each group of responses will have a unique FetchID to link them.", + "id": "TrawlerFetchReplyDataPartialResponse", + "properties": { + "BodyLocation": { + "description": "If set, indicates where the fetched body is, e.g. a CNS file path. FetchReply.Body should be empty in this case. In the case where client does not support streaming but the content is too large to be accumulated in memory, we keep writing the streaming chunks to some storage unit and notify client when it is done.", + "type": "string" + }, + "ChunkNumber": { + "description": "Fetch number in this series of fetches", + "format": "int32", + "type": "integer" + }, + "ContentRange": { + "$ref": "TrawlerContentRangeInfo", + "description": "If there is a Content-Range header, the ranges in it" + }, + "ETag": { + "description": "Any ETag seen in the headers", + "type": "string" + }, + "FetchID": { + "description": "ID which links all partial fetches for this url", + "format": "uint64", + "type": "string" + }, + "IsFinalResponse": { + "description": "Is this the final response for this fetch?", + "type": "boolean" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataProtocolResponse": { + "description": "Group with protocol specific response (determined by the protocol of the url that generated the content we return).", + "id": "TrawlerFetchReplyDataProtocolResponse", + "properties": { + "Code": { + "description": "Response code. We emulate the HTTP response codes for all protocols that we know. -- HTTP: response code for the downloaded page. -- FTP: similar with HTTP: 200 - OK, 40X - errors (not found, etc), 500 - server unavailable", + "format": "int32", + "type": "integer" + }, + "ContentType": { + "description": "Content type as inferred by the fetcher (webutil/http/content-type.proto)", + "enum": [ + "CONTENT_FIRST_TYPE", + "CONTENT_GOOGLE_ERROR", + "CONTENT_GOOGLE_EMPTY", + "CONTENT_GOOGLE_OTHER", + "CONTENT_TEXT_HTML", + "CONTENT_TEXT_PLAIN", + "CONTENT_APPLICATION_POSTSCRIPT", + "CONTENT_APPLICATION_PDF", + "CONTENT_TEXT_WML", + "CONTENT_GOOGLE_WHITEPAGE", + "CONTENT_TEXT_HDML", + "CONTENT_TEXT_PDF", + "CONTENT_GOOGLE_USENET", + "CONTENT_IMAGE", + "CONTENT_IMAGE_THUMBNAIL", + "CONTENT_AUDIO_MP3", + "CONTENT_TEXT_POSTSCRIPT", + "CONTENT_APPLICATION_MSWORD", + "CONTENT_TEXT_MSWORD", + "CONTENT_APPLICATION_MS_POWERPOINT", + "CONTENT_TEXT_MS_POWERPOINT", + "CONTENT_APPLICATION_RTF", + "CONTENT_TEXT_RTF", + "CONTENT_APPLICATION_MS_EXCEL", + "CONTENT_TEXT_MS_EXCEL", + "CONTENT_TEXT_OTHER", + "CONTENT_APPLICATION_XSHOCKWAVEFLASH", + "CONTENT_TEXT_XSHOCKWAVEFLASH", + "CONTENT_APPLICATION_XGZIP", + "CONTENT_IMAGE_JPEG", + "CONTENT_IMAGE_XDJVU", + "CONTENT_SCAN_ATTR", + "CONTENT_SCAN_FAKE_HTML", + "CONTENT_GOOGLE_QECONOMY", + "CONTENT_GOOGLE_FROOGLE_OFFER", + "CONTENT_GOOGLE_DPL", + "CONTENT_GOOGLE_YP", + "CONTENT_APPLICATION_XML", + "CONTENT_GOOGLE_OCEAN_METADATA", + "CONTENT_GOOGLE_LOCALSEARCH", + "CONTENT_BINARY_OTHER", + "CONTENT_APPLICATION_ATOM_XML", + "CONTENT_APPLICATION_RDF_XML", + "CONTENT_APPLICATION_RSS_XML", + "CONTENT_APPLICATION_XHTML_XML", + "CONTENT_APPLICATION_OCTET_STREAM", + "CONTENT_TEXT_XML", + "CONTENT_GOOGLE_OCEAN_DOC", + "CONTENT_IMAGE_PNG", + "CONTENT_IMAGE_GIF", + "CONTENT_IMAGE_TIFF", + "CONTENT_APPLICATION_ZIP_ARCHIVE", + "CONTENT_TEXT_ZIP_ARCHIVE", + "CONTENT_APPLICATION_XGZIP_ARCHIVE", + "CONTENT_TEXT_XGZIP_ARCHIVE", + "CONTENT_APPLICATION_XTAR_ARCHIVE", + "CONTENT_TEXT_XTAR_ARCHIVE", + "CONTENT_APPLICATION_XCOMPRESS_ARCHIVE", + "CONTENT_TEXT_XCOMPRESS_ARCHIVE", + "CONTENT_APPLICATION_WAP_XHTML", + "CONTENT_APPLICATION_XJAVASCRIPT", + "CONTENT_APPLICATION_JAVASCRIPT", + "CONTENT_APPLICATION_ECMASCRIPT", + "CONTENT_TEXT_JAVASCRIPT", + "CONTENT_TEXT_ECMASCRIPT", + "CONTENT_APPLICATION_KML", + "CONTENT_APPLICATION_KMZ_ARCHIVE", + "CONTENT_TEXT_KML", + "CONTENT_APPLICATION_DWF", + "CONTENT_DRAWING_DWF", + "CONTENT_TEXT_DWF", + "CONTENT_APPLICATION_ODF", + "CONTENT_TEXT_ODF", + "CONTENT_GOOGLE_NEW", + "CONTENT_APPLICATION_OPENXML_WORD", + "CONTENT_TEXT_OPENXML_WORD", + "CONTENT_APPLICATION_OPENXML_EXCEL", + "CONTENT_TEXT_OPENXML_EXCEL", + "CONTENT_APPLICATION_OPENXML_POWERPOINT", + "CONTENT_TEXT_OPENXML_POWERPOINT", + "CONTENT_APPLICATION_OPENXML", + "CONTENT_TEXT_CSS", + "CONTENT_APPLICATION_JSON", + "CONTENT_TEXT_CROSS_DOMAIN_POLICY", + "CONTENT_APPLICATION_GPX_XML", + "CONTENT_APPLICATION_ENDNOTE_STYLE", + "CONTENT_TEXT_ENDNOTE_STYLE", + "CONTENT_APPLICATION_XPROTOBUFFER", + "CONTENT_APPLICATION_OPENSEARCHDESCRIPTION_XML", + "CONTENT_TEXT_CACHE_MANIFEST", + "CONTENT_VIDEO_3GPP", + "CONTENT_APPLICATION_ADOBE_ACSM", + "CONTENT_MODEL_DWFX", + "CONTENT_IMAGE_SVG_XML", + "CONTENT_APPLICATION_XHWP", + "CONTENT_TEXT_XHWP", + "CONTENT_APPLICATION_EPUB_ZIP", + "CONTENT_APPLICATION_X_WINDOWS_EXECUTABLE", + "CONTENT_APPLICATION_TEX_LATEX", + "CONTENT_TEXT_TEX_LATEX", + "CONTENT_APPLICATION_SAFEBROWSING_UPDATE", + "CONTENT_APPLICATION_SAFEBROWSING_CHUNK", + "CONTENT_APPLICATION_SAFEBROWSING_KEY", + "CONTENT_VIDEO_X_MS_ASF", + "CONTENT_APPLICATION_XBZIP", + "CONTENT_APPLICATION_OCTET_STREAM_COMPRESSIBLE", + "CONTENT_IMAGE_X_ICON", + "CONTENT_APPLICATION_ICS", + "CONTENT_IMAGE_WEBP", + "CONTENT_IMAGE_BMP", + "CONTENT_FONT_TTF", + "CONTENT_FONT_OTF", + "CONTENT_FONT_WOFF", + "CONTENT_FONT_WOFF2", + "CONTENT_APPLICATION_CSP_REPORT", + "CONTENT_VIDEO_MP2T", + "CONTENT_TEXT_X_VCALENDAR", + "CONTENT_FONT_EOT", + "CONTENT_APPLICATION_XMPEG_URL", + "CONTENT_APPLICATION_X_BROTLI_DICT_COMPRESSED", + "CONTENT_VIDEO_MP4", + "CONTENT_AUDIO_MP4", + "CONTENT_APPLICATION_MANIFEST_JSON", + "CONTENT_APPLICATION_MS_TNEF", + "CONTENT_TEXT_EPUB_ZIP", + "CONTENT_APPLICATION_FB2_XML", + "CONTENT_TEXT_FB2_XML", + "CONTENT_APPLICATION_WASM", + "CONTENT_APPLICATION_GEO_JSON", + "CONTENT_TEXT_CSV", + "CONTENT_APPLICATION_XPROTOBUF", + "CONTENT_VIDEO_WEBM", + "CONTENT_AUDIO_WEBM", + "CONTENT_NUM_TYPES" + ], + "enumDescriptions": [ + "", + "Initialization value, never used", + "empty page", + "none of the types below, unknown", + "", + "", + "", + "", + "", + "", + "", + "PDF converted to HTML", + "", + "image, not one of the image types", + "below", + "", + "POSTSCRIPT converted to HTML", + "", + "MSWORD converted to HTML", + "", + "POWERPOINT converted to HTML", + "", + "RTF converted to HTML", + "", + "EXCEL converted to HTML", + "unknown content type converted to HTML", + "", + "SWF converted to HTML", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "ZIP_ARCHIVE converted to HTML", + "", + "XGZIP_ARCHIVE converted to HTML", + "", + "XTAR_ARCHIVE converted to HTML", + "", + "XCOMPRESS_ARCHIVE converted to HTML", + "", + "", + "", + "", + "", + "", + "", + "", + "KML/KMZ converted to HTML", + "", + "", + "DWF converted to HTML", + "OASIS OpenDocument formats", + "(16 real MIME types) ODF converted to HTML", + "", + "", + "OPENXML_WORD converted to HTML", + "", + "OPENXML_EXCEL converted to HTML", + "", + "OPENXML_POWERPOINT converted to HTML", + "Generic office 2007 document.", + "", + "", + "", + "http://www.topografix.com/GPX/1/1/", + "", + "ENDNOTE_STYLE converted to HTML", + "Use CONTENT_APPLICATION_XPROTOBUF instead. See go/spectrejs#use-canonical-content-types.", + "http://go/searchdomaincheck", + "HTML 5 - http://whatwg.org", + "", + "Adobe Content Server message", + "", + "http://www.w3.org/TR/SVG/intro.html#MIMEType", + "Hangul Word Processor", + "HWP converted to HTML", + "", + "Windows executable files.", + "LaTeX or TeX", + "LaTeX or TeX content converted to html", + "SafeBrowsing update response", + "SafeBrowsing chunk data", + "SafeBrowsing key response", + "MS Advanced Systems Format container.", + "For Bzip2 compressed files.", + "For binary content", + "that is OK to be compressed. Equivalent to application/octet-stream but listed in net/http/gzip_rules.txt as safe to gzip.", + "Calendar files.", + "", + "BMP image files.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Brotli compound dict.", + "Used to return streams compressed with brotli and a shared dictionary between client and server. Used by AGSA, Google Go and other clients in the interim period before the standardization of shared brotli. Handles the video/mp4 content type", + "Handles the audio/mp4 content type", + "Handles the manifest content type", + "Handles the application/ms-tnef type", + "EPUB converted to HTML", + "http://fictionbook.org/index.php/Eng:FictionBook", + "FB2 converted to HTML", + "WebAssembly binary format", + "GeoJSON", + "Comma-separated values (CSV)", + "Binary protocol buffers", + "Handles the video/webm content type", + "Handles the audio/webm content type", + "Add new content types above this" + ], + "type": "string" + }, + "CutoffSize": { + "description": "Where did we cut off? Includes headers plus truncated but uncompressed content. Present if and only if we truncated the document.", + "format": "int64", + "type": "string" + }, + "HttpVersion": { + "description": "DEPRECATED, see field 113. Stores the HTTP version we used in the final hop.", + "enum": [ + "HTTP_11", + "HTTP_10", + "HTTP_09", + "HTTP_2", + "HTTP_AUTO", + "FIRST_VERSION", + "NUM_VERSIONS" + ], + "enumDescriptions": [ + "", + "", + "??? do we want this ???", + "EXPERIMENTAL, DO NOT USE unless you have talked to", + "trawler-dev@. Allow fetcher to automatically select HTTP protocol", + "version. The selection is based on prior knowledge and dynamic server response. Basically, if the client and the host is configured to allow HTTP/2 traffic, we will select HTTP/2 and send HTTP/2 traffic; and we will fallback to HTTP/1 if we found the server does not support HTTP/2 through ALPN. HTTP Version selection will be applied to each redirect hop. More details about HTTP/2 traffic configuration can be found in: googledata/googlebot/http2_traffic_control_file. We list this after HTTP_* values to make sure", + "HTTPVersion_Name(0) returns the correct string." + ], + "type": "string" + }, + "ProtocolVersionFallback": { + "description": "DEPRECATED, see field 114. Whether we fallback from HTTP/2 to HTTP/1.1 during fetch. The fallback could happen in any hops and there can be at most one fallback because once fallback happens, we will not try HTTP/2 anymore.", + "type": "boolean" + }, + "UnTruncatedSize": { + "description": "The amount of data we got from the webserver before any truncation, but after undoing any HTTP gzip/deflate encoding. For HTTP, this includes headers and uncompressed content. Content size is excluded if content was not successfully fetched. See description above TotalFetchedSize for comparison.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "TrawlerFetchReplyDataRedirects": { + "description": "The sequence of redirects fetched, if applicable. This includes url plus stats for each hop after the first hop. NOTE: This can be one redirect longer than the chain of redirects *followed*, in the case where there was a redirect at the end of the chain that the fetcher detected but did not follow.", + "id": "TrawlerFetchReplyDataRedirects", + "properties": { + "BadSSLCertificate": { + "description": "The server SSL certificate chain in SSLCertificateInfo protobuf format. See this field in FetchReplyData (i.e., the initial hop) for more description on when it will be populated.", + "format": "byte", + "type": "string" + }, + "CrawlTimes": { + "$ref": "TrawlerCrawlTimes", + "description": "Per redirect hop timestamps. This" + }, + "DownloadTime": { + "description": "Download time of this fetch (ms)", + "format": "int32", + "type": "integer" + }, + "Endpoints": { + "$ref": "TrawlerTCPIPInfo", + "description": "## stats If fetched, ip info." + }, + "HSTSInfo": { + "description": "This specifies if the url in a redirect was rewritten to HTTPS because of an HSTS policy for the domain. See comments on FetchReplyData.HSTSInfo for how this field's values. A redirect that was rewritten with HSTS will have HSTS_STATUS_REWRITTEN ## here.", + "enum": [ + "HSTS_STATUS_NONE", + "HSTS_STATUS_AVAILABLE", + "HSTS_STATUS_REWRITTEN" + ], + "enumDescriptions": [ + "No HSTS policy available for this fetch.", + "There is an HSTS policy for this fetch but the fetch URL was not applied.", + "There is an HSTS policy for this fetch and the URL was rewritten from HTTP -\u003e HTTPS." + ], + "type": "string" + }, + "HTTPResponseCode": { + "description": "The HTTP response code for this hop. We need this since multiple response codes may have the same redirect type (e.g., 302 and 307 are both REDIRECT_TEMPORARILY), but clients may want to know which one was received. Note this is set only for the hops that are followed (i.e., TargetUrl is present). If the last redirect hop was not followed the fetch status will be URL_NOT_FOLLOWED, and the response code will be in the top level ProtocolResponse field.", + "format": "int32", + "type": "integer" + }, + "HopPageNoIndexInfo": { + "description": "Extra trawler::PageNoIndexInfo for this hop. Integer: ORed together bits from trawler::PageNoIndexInfo. The information specified by this field comes from the http header or content of the source url, not the \"TargetUrl\" in this Redirects group.", + "format": "int32", + "type": "integer" + }, + "HopReuseInfo": { + "description": "trawler::ReuseInfo with status of IMS/IMF/cache query, for this hop.", + "enum": [ + "RUI_NONE", + "RUI_IMS_CACHE_CURRENT", + "RUI_IMS_NOT_MODIFIED", + "RUI_IMS_CHANGED", + "RUI_IMF_NOCACHE", + "RUI_IMF_CACHE_CURRENT", + "RUI_IMF_HIT", + "RUI_IMF_CHANGED", + "RUI_IMF_POST_HIT_ERROR", + "RUI_CACHE_CURRENT", + "RUI_CACHE_EXPIRED", + "RUI_CACHE_NOCACHE", + "RUI_CACHE_UNUSABLE", + "RUI_IMF_UNUSABLE", + "NUM_REUSE_INFO_VALS" + ], + "enumDescriptions": [ + "Neither IMS or IMF were enabled", + "IMS Had IMS enabled; but had cache hit;", + "so didn't need to do the fetch Did IMS and got back 304", + "Did IMS and got back non-304", + "IMF - UseBigTableIMF set IMF enabled; but result wasn't in the cache", + "IMF enabled; but cached copy was current", + "IMF enabled; had older cached copy;", + "but got back 304; returned content IMF enabled; had older cached copy;", + "got back non-304; indicating change Got back 304 on IMF; but cached copy failed;", + "ACCEPTABLE AGE; no IMF Cache hit", + "Had content; but older than max", + "No content in cache", + "Cache entry; but not usable", + "Cache entry for IMF; but not usable", + "*** don't forget to update." + ], + "type": "string" + }, + "HopRobotsInfo": { + "description": "Extra trawler::RobotsInfo for this hop. Integer: ORed together bits from trawler::RobotsInfo", + "format": "int32", + "type": "integer" + }, + "HostId": { + "description": "If known, the hostid for this hop", + "format": "uint64", + "type": "string" + }, + "HttpRequestHeaders": { + "description": "The http headers we sent for fetching this redirect hop. Not normally filled in, unless FetchParams.WantSentHeaders is set.", + "type": "string" + }, + "HttpResponseHeaders": { + "description": "The http headers we received from this redirect hop. Trawler does not fill this in; this is intended as a placeholder for crawls like webmirror that fill in and want to track this across redirect hops.", + "type": "string" + }, + "RawTargetUrl": { + "description": "bytes: can contain bad encoding.", + "format": "byte", + "type": "string" + }, + "RefreshTime": { + "description": "Refresh time in meta redirect tag", + "format": "int32", + "type": "integer" + }, + "RobotsTxt": { + "description": "The robots.txt we used for this fetch. Not normally filled in unless WantRobotsBody is set.", + "format": "byte", + "type": "string" + }, + "SourceBody": { + "$ref": "TrawlerFetchBodyData", + "description": "For meta-redirects, this field may contain the body of the source document. Currently only filled client side and not implemented (yet) for server-side redirects." + }, + "TargetUrl": { + "description": "Difference between the following two fields: TargetUrl is set when we have followed the redirect target, and the url is canonicalized. RawTargetUrl is set in either of the following two cases: (1) The url has not be been followed. For example, the redirect is intended to be handled by the client. In the fetch reply response, you will see the url's status as URL_NOT_FOLLOWED-NOT_FOLLOWED*. (2) The extracted redirect url is different from its *canonicalized* form. For example, if the target url contains fragments, then this RawTargetUrl will have the fragments. Redirect target", + "type": "string" + }, + "Type": { + "description": "URL and redirect type", + "enum": [ + "REDIRECT_NONE", + "REDIRECT_EMPTY", + "REDIRECT_TOO_LONG", + "REDIRECT_PERMANENT", + "REDIRECT_TEMPORARILY", + "REDIRECT_META", + "REDIRECT_BAD_URL", + "REDIRECT_HTTP_REFRESH", + "REDIRECT_SCRIPT", + "REDIRECT_CUSTOM", + "REDIRECT_META_FRAGMENT", + "NUM_REDIRECT_TYPES" + ], + "enumDescriptions": [ + "No redirect", + "Looks like a redirect but is empty", + "Looks like a redirect but is too long", + "Permanent redirect (301)", + "Temp redirect (302 + meta here)", + "Redirect with tag", + "Looks like a redirect but target is a bad URL", + "HTTP \"Refresh:\" header; similar to meta refresh", + "Redirect derived from a script section", + "Redirect derived from a Google-specific rule", + "Redirect from meta name=fragment", + "*** don't forget to update." + ], + "type": "string" + } + }, + "type": "object" + }, + "TrawlerFetchStatus": { + "id": "TrawlerFetchStatus", + "properties": { + "Reason": { + "description": "The Reason field gives further clarifying details about why or how the fetch had the given outcome. For instance, if State is URL_ERROR - was it a 404/NotFound or a DNS error? The Reason field is present iff State != URL_CRAWLED. For a given crawl status of URL_FOO, the Reason value will be one of the various FetchFooReason enum values from crawler/trawler/trawler_enums.proto", + "format": "int32", + "type": "integer" + }, + "State": { + "description": "The State field describes the basic outcome of a fetch (URL_CRAWLED, URL_ROBOTED, URL_ERROR, etc). The value is one of the UrlStatusType enum values from crawler/trawler/trawler_enums.proto Note, there are several combinations of this Status/Reason tuple that could mean that your content is crawled or can be bucketed in a particular type of error. So instead of comparing the enumeration values manually, we suggest to use the predicate functions such as IsContentCrawled() provided in crawler/trawler/public/basictypes.h (see details there).", + "enum": [ + "URL_CRAWLED", + "URL_ERROR", + "URL_ROBOTED", + "URL_UNREACHABLE", + "URL_TIMEOUT", + "URL_REJECTED", + "URL_NOT_FOLLOWED", + "NUM_STATE_TYPES" + ], + "enumDescriptions": [ + "", + "Error fetching; most commonly 404;", + "but many other possible reasons. Roboted out.", + "Fetch error; 5xx; truncated response; etc.", + "Timeout while fetching.", + "Rejected based on capacity or permissions.", + "Redirects/retries-related: we crawled something", + "*** don't forget to update." + ], + "type": "string" + } + }, + "type": "object" + }, + "TrawlerHostBucketData": { + "description": "============================ Next Tag: 21 ============================ Data about the scheduling host bucket a URL was in (if the client wants to use this, e.g. for more intelligent scheduling, etc).", + "id": "TrawlerHostBucketData", + "properties": { + "ClientTrafficFraction": { + "description": "How much existing traffic", + "format": "float", + "type": "number" + }, + "ClientWeightFraction": { + "description": "belong to the client How much weight the client", + "format": "float", + "type": "number" + }, + "CurrentActiveConnections": { + "description": "How many connections are actively used for downloading ?", + "format": "int32", + "type": "integer" + }, + "IsFull": { + "description": "Is this bucket currently full ?", + "type": "boolean" + }, + "LastScheduleIntervalMs": { + "description": "How many ms ago we last scheduled a url", + "format": "int64", + "type": "string" + }, + "MaxActiveConnections": { + "description": "The current hostload value (# of connections) - if negative does not apply", + "format": "float", + "type": "number" + }, + "MediumTermLoad": { + "description": "The load the recent times (the actual hostload that we apply is MaxActiveConnections / MediumTermLoad) - a hostload of 1.00 is normal, while over 1.0 is higher than normal load", + "format": "float", + "type": "number" + }, + "MinInterRequestSecs": { + "description": "The min delay between requests (in secs) - if negative does not apply", + "format": "float", + "type": "number" + }, + "NonFullIntervalMs": { + "description": "If is full, when is becoming non-full (in ms)", + "format": "int64", + "type": "string" + }, + "TotalCapacityQps": { + "description": "The following four fields attempt to make things simpler for clients to estimate available capacity. They are not populated yet as of 2013/08/21. Even after they are populated, they may change. So talk to trawler-dev@ before you use the fields. Total qps for this hostid", + "format": "float", + "type": "number" + }, + "TotalUsedQps": { + "description": "Currently used qps", + "format": "float", + "type": "number" + }, + "urllist": { + "items": { + "$ref": "TrawlerHostBucketDataUrlList" + }, + "type": "array" + } + }, + "type": "object" + }, + "TrawlerHostBucketDataUrlList": { + "description": "Per each list that wishes to schedule url we return one of these:", + "id": "TrawlerHostBucketDataUrlList", + "properties": { + "ClientCanCrawl": { + "description": "Is this client/requestorid allowed to crawl now? (based on resource use)", + "type": "boolean" + }, + "IsDefaultNode": { + "description": "Is this the 'default' user's list", + "type": "boolean" + }, + "IsListForUrl": { + "description": "Was this the list that a given request landed in?", + "type": "boolean" + }, + "NumCurrentFetches": { + "description": "# of current active fetches", + "format": "int32", + "type": "integer" + }, + "NumUrls": { + "description": "# of urls currently in the queue", + "format": "int32", + "type": "integer" + }, + "RequestType": { + "description": "The type of the request (low latency vs. high throughput)", + "enum": [ + "HIGH_THROUGHPUT", + "LOW_LATENCY", + "NUM_REQUEST_TYPES" + ], + "enumDescriptions": [ + "Note: keep in sync with default in trawler.proto", + "", + "*** don't forget to update." + ], + "type": "string" + }, + "RequestorFp": { + "description": "The fp64 of the requestor string", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "TrawlerLoggedVPCDestination": { + "description": "Information about VPC fetches tracked for logging purposes.", + "id": "TrawlerLoggedVPCDestination", + "properties": { + "cloudRegion": { + "type": "string" + }, + "vnid": { + "$ref": "NetFabricRpcVirtualNetworkId" + } + }, + "type": "object" + }, + "TrawlerMultiverseClientIdentifier": { + "description": "Contain Multiverse client information, such as topic name. Can include other information such as crawl policy id in the future.", + "id": "TrawlerMultiverseClientIdentifier", + "properties": { + "topicName": { + "type": "string" + }, + "trafficType": { + "enum": [ + "TRAFFIC_TYPE_UNSPECIFIED", + "TRAFFIC_TYPE_NO_FETCH", + "TRAFFIC_TYPE_ONEOFF_CRAWL", + "TRAFFIC_TYPE_DISCOVERY", + "TRAFFIC_TYPE_REFRESH" + ], + "enumDescriptions": [ + "", + "Not fetch traffic is consisted of requests that we schedule it as notification for clients, but not need to actually fetch.", + "As the name suggests, oneoff crawl means client just needs to crawl the URLs once.", + "Discovery traffic is consisted of the new URLs discovered by Multiverse, that we have never seen in the crawl history.", + "The context of refresh crawl is that client needs to check the content of some URLs periodically, so they refresh those URLs regularly." + ], + "type": "string" + } + }, + "type": "object" + }, + "TrawlerOriginalClientParams": { + "description": "The information about the original client who starts the request.", + "id": "TrawlerOriginalClientParams", + "properties": { + "clientCell": { + "type": "string" + }, + "clientIp": { + "type": "string" + }, + "clientRpcType": { + "description": "through which RPC request", + "enum": [ + "UNKNOWN_RPC", + "PUSH_URL_TO_CRAWL", + "PUSH_BATCH_TO_CRAWL", + "CRAWL_URL", + "STREAM_FETCH_URL", + "LEGACY_STREAM_FETCH_URL", + "SUBSCRIBE_URL_ONCE", + "FEEDS_TRANSFER" + ], + "enumDescriptions": [ + "", + "CrawlService.PushUrlToCrawl.", + "CrawlService.PushBatchToCrawl.", + "CrawlService.CrawlUrl.", + "CrawlService.StreamFetchUrl.", + "CrawlService.LegacyStreamFetchUrl.", + "CrawlService.SubscribeUrlOnce.", + "FeedsTransfer.BatchTransfer." + ], + "type": "string" + }, + "clientUsername": { + "type": "string" + } + }, + "type": "object" + }, + "TrawlerPolicyData": { + "description": "Trawler can add a policy label to a FetchReply. The two main cases are: - \"spam\" label added for specific spammer IPs listed in trawler_site_info, which most crawls auto-reject. - \"roboted:useragent\" (e.g. \"roboted:googlebot\") if InfoOnlyUserAgents field is set in FetchParams", + "id": "TrawlerPolicyData", + "properties": { + "ExtraData": { + "description": "in roboted case, the RobotsInfo", + "format": "int32", + "type": "integer" + }, + "Label": { + "description": "\"spam\" or \"roboted:googlebot\"", + "type": "string" + } + }, + "type": "object" + }, + "TrawlerSSLCertificateInfo": { + "description": "This protobuf specifies the results of https certificate validation, typically used for the BadSSLCertificate field in FetchReplyData. -------------------------- Next Tag: 13 -------------------------------", + "id": "TrawlerSSLCertificateInfo", + "properties": { + "ALPNNegotiatedProtocol": { + "description": "ALPN negotiated protocol, see https://tools.ietf.org/html/rfc7301 The value will either be empty, or one of the protocol names sent by the client that the server accepted. Examples include \"h2\" and \"acme-tls/1\".", + "type": "string" + }, + "CertificateChain": { + "description": "If present, this consists of the remote webserver's X.509 certificate chain in DER format. The chain stored here is the *reversed* result of SSL_get_peer_cert_chain(). That is to say, it is the chain presented by the peer (which may differ from the chain that was built and verified), but in leaf-last order. Typically the root cert will not be included. But do not assume anything, because servers do all manner of weird things. (For example on the beginning of the chain, there might be also some irrelevant certificates besides the root certificate.) Certificates may be the empty string, indicating an encoding failure. See also |IsTruncated|. Certs can be loaded with util/sig/cert.h Cert::LoadBinaryCert(), converted to ASCII PEM format (CertificateUtil::CertificateToPEM()) or shown as text at the commandline by piping them into 'openssl x509 -text -inform DER'.", + "items": { + "format": "byte", + "type": "string" + }, + "type": "array" + }, + "ErrorMessages": { + "description": "ErrorMessages contains errors from HTTPS validation. Examples of such errors include invalid certificates, failure to build a certificate chain, certificates that do not match the expected hostname, and internal errors. If ErrorMessages is empty, HTTPS validation succeeded. Otherwise, it failed. This is the only guarantee about the contents of this field, though legacy code exists that embeds invalid assumptions, b/70904498. New code should not do anything with this field other than test whether it is empty and display its value to humans. If you need to know more about the details of a particular HTTPS validation, you can revalidate |CertificateChain| independently.", + "items": { + "type": "string" + }, + "type": "array" + }, + "IsTruncated": { + "description": "This SSLCertificateInfo had its fields truncated because it was too large. It is no longer set (cl/205356251) but may be true in old records.", + "type": "boolean" + }, + "OCSPResponse": { + "description": "Stapled OCSP response obtained during the TLS handshake, if any. An OCSP (Online Certificate Status Protocol) response is an indication, signed by the issuing CA, that the certificate has not been revoked. A TLS handshake extension allows servers to \"staple\" a response to the certificate served in the handshake, saving the need for the client to fetch it itself from the CA. This field contain the stapled OCSP response if the server served one. See RFC6066, Section 8 for the data format: https://tools.ietf.org/html/rfc6066#section-8", + "format": "byte", + "type": "string" + }, + "SCTList": { + "description": "SCTList obtained during the TLS handshake, if any. See RFC6962, Section 3.3 for the data format: https://tools.ietf.org/html/rfc6962#section-3.3", + "format": "byte", + "type": "string" + }, + "SSLCipherSuite": { + "format": "int32", + "type": "integer" + }, + "SSLCipherSuiteName": { + "type": "string" + }, + "SSLProtocolVersion": { + "description": "Details about the SSL/TLS protocol and cipher. See RFC5246 and google3/crawler/trawler/hope/proto/ssl.proto for more details.", + "format": "int32", + "type": "integer" + }, + "SSLProtocolVersionName": { + "description": "The names of the SSL protocol version and cipher suite. These strings are implementation defined and may be subject to change.", + "type": "string" + } + }, + "type": "object" + }, + "TrawlerTCPIPInfo": { + "description": "To keep track of fetch connection endpoints. Note: You can use trawler::SourceIP(info) or trawler::DestinationIP(info) (as well as HasSourceIP/HasDestinationIP) in basictypes.h instead of accessing the packed strings directly. This will return a proper IPAddress. Never use the fixed32 based Source/Destination-IP in new code as they will go away (only IPv4).", + "id": "TrawlerTCPIPInfo", + "properties": { + "DestinationIPAddressPacked": { + "description": "Address of the destination host. Extract with trawler::DestinationIP() or decode with PackedStringToIPAddress().", + "format": "byte", + "type": "string" + }, + "DestinationPort": { + "format": "int32", + "type": "integer" + }, + "SourceIPAddressPacked": { + "description": "Source address of the crawl machine we originated the fetch from. Extract with trawler::SourceIP() or decode with PackedStringToIPAddress().", + "format": "byte", + "type": "string" + }, + "SourcePort": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "TrawlerThrottleClientData": { + "id": "TrawlerThrottleClientData", + "properties": { + "IsBandwidthThrottle": { + "type": "boolean" + }, + "MaxAllowedRate": { + "description": "Max doc_requestor urls/second allowed from this client to this fetcher.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "TrawlerTrawlerPrivateFetchReplyData": { + "description": "This is an optional container of arbitrary data that can be added to a FetchReplyData. This data is meant to be logged, but not sent back in a fetch reply (it should be added *after* the reply is prepared). Use FetchResponsePreparatorImpl::AddTrawlerPrivateDataToFetchReplyData to add. See also the comment in fetch_response_preparator_impl.cc. Next Tag: 43", + "id": "TrawlerTrawlerPrivateFetchReplyData", + "properties": { + "BotGroupName": { + "description": "If we fetched using BotFetchAgent, what is the BotGroupName?", + "type": "string" + }, + "BotHostname": { + "description": "This is the HOPE server that we sent the url to. We log the HOPE backend cell and hope server shard number (e.g., 'qf:6'). This allows us to understand how we are balancing our load to the HOPE servers.", + "type": "string" + }, + "CacheRequestorID": { + "description": "Present if the reply is from the trawler cache. This is the requestorid of the trawler client that populated the cache with the data we are reusing.", + "type": "string" + }, + "FetcherTaskNumber": { + "description": "Which Trawler fetcher task fetched this URL.", + "format": "int32", + "type": "integer" + }, + "HSTSHeaderValue": { + "description": "HTTP Strict-Transport-Security (RFC6797) header value. We log this so we can generate a list of hosts that prefer HTTPS over HTTP.", + "type": "string" + }, + "HadInMemCacheHit": { + "type": "boolean" + }, + "HintIPAddress": { + "description": "If we do not have Endpoints in FetchReplyData (e.g., url rejected due to hostload limit), do we have a guess of the server IPAddress (e.g., from robots fetch)? This helps us classify URLs based on country code, etc. The field is filled with IPAddress::ToPackedString().", + "format": "byte", + "type": "string" + }, + "Is5xxHostId": { + "description": "Represents if the HostId belongs to HostId set in 5xx url patterns, it can work as a tag when emitting requestor minute summary, this helps us to aggregate traffic affected by 5xx patterns, and test if there are any fetching changes.", + "type": "boolean" + }, + "IsRobotsFetch": { + "description": "Was this an internally-initiated robots.txt fetch?", + "type": "boolean" + }, + "PostDataSize": { + "description": "What's the post data size (in bytes) if it's a post request.", + "format": "int64", + "type": "string" + }, + "Producer": { + "description": "Note TrawlerPrivateFetchReplyData is never sent back to clients. The following field is just for Trawler and Multiverse internal tracking, and clients should not look at this field at all.", + "enum": [ + "UNKNOWN_SUBSYSTEM_NAME", + "TRAWLER_HARPOON_FETCHER", + "WEBMIRROR_DISPATCHER", + "WEBMIRROR_CRAWL_ENGINE", + "MULTIVERSE_TRAWLER_FETCHPROXY", + "MULTIVERSE_FRONTEND_SERVER" + ], + "enumDescriptions": [ + "May be used as a placeholder for the actual", + "sub-system name when the FetchReply is generated in the Trawler/Harpoon client library.", + "", + "", + "", + "" + ], + "type": "string" + }, + "ProxyInstance": { + "description": "If set, this fetch was done through a proxy (e.g., fetchproxy).", + "type": "string" + }, + "RequestUserName": { + "description": "Log the loas username in trawler private to help with debugging. Store the username in trawler private so clients won't see it from FetchReply. To reduce disk usage, we only log the loas username if the requestorid being used does not have ClientUsernameRestrictions.", + "type": "string" + }, + "ResponseBytes": { + "description": "The number of bytes we sent back to the client.", + "format": "int64", + "type": "string" + }, + "RobotsBody": { + "description": "If this was a robots.txt fetch (IsRobotsFetch above), this may contain the robots.txt body. (It may not, for instance, 404s are omitted; current policy is URL_CRAWLED + partially crawled) This includes http headers + body.", + "type": "string" + }, + "RpcEndDeadlineLeftMs": { + "description": "RPC deadline left at the end of url control flow. Can be useful for debugging rpc deadline exceeded error received by clients, this field is only recorded if it's small enough.", + "format": "int32", + "type": "integer" + }, + "RpcStartDeadlineLeftMs": { + "description": "RPC deadline left at the start of url control flow. Can be useful for debugging rpc deadline exceeded error received by clients, this field is only recorded if RpcEndDeadlineLeftMs is small enough.", + "format": "int32", + "type": "integer" + }, + "ServerSignature": { + "description": "An arbitrary string signature identifying the remote server type/version. In the case of HTTP, this would be the contents of the \"Server:\" header.", + "type": "string" + }, + "TrawlerInstance": { + "description": "Which Trawler cell was this response fetched in? (e.g. \"HR\" or \"YQ\")", + "type": "string" + }, + "UserAgentSent": { + "description": "The useragent string sent to the remote webserver. It corresponds to UserAgentToSend field in FetchParams.", + "type": "string" + }, + "UserAgentSentFp": { + "description": "The fp2011 of useragent sent to the remote webserver, note it corresponds to UserAgentToSend field in FetchParams", + "format": "uint64", + "type": "string" + }, + "authenticationInfo": { + "description": "Stores the OAuth authentication method.", + "enum": [ + "AUTHORIZATION_UNKNOWN", + "AUTHORIZATION_REQUEST_HEADER", + "AUTHORIZATION_POST_BODY", + "AUTHORIZATION_QUERY_PARAMETER" + ], + "enumDescriptions": [ + "", + "When sending the access token in the \"Authorization\" request header field defined by HTTP/1.1 [RFC2617], the client uses the \"Bearer\" authentication scheme to transmit the access token. GET /resource HTTP/1.1 Host: server.example.com Authorization: Bearer mF_9.B5f-4.1JqM", + "When sending the access token in the HTTP request entity-body, the client adds the access token to the request-body using the \"access_token\" parameter. POST /resource HTTP/1.1 Host: server.example.com Content-Type: application/x-www-form-urlencoded access_token=mF_9.B5f-4.1JqM", + "Adds the access token to the request URI query component. GET /resource?access_token=mF_9.B5f-4.1JqM HTTP/1.1 Host: server.example.com" + ], + "type": "string" + }, + "cacheAcceptableAfterDate": { + "description": "Corresponds to AcceptableAfterDate field in FetchParams.", + "format": "int32", + "type": "integer" + }, + "cacheAcceptableAge": { + "description": "Corresponds to AcceptableAge field in FetchParams.", + "format": "int32", + "type": "integer" + }, + "cacheHitType": { + "description": "Only set if the fetch uses cache content (is_cache_fetch is true).", + "enum": [ + "CACHE_HIT_NONE", + "FETCHER_IN_MEMORY_HIT", + "CACHE_PROXY_CACHE_SERVER_HIT", + "CACHE_PROXY_LARGE_STORE_HIT", + "CACHE_SERVER_HIT" + ], + "enumDescriptions": [ + "There isn't a cache hit.", + "Cache hit comes from fetcher side", + "local in-memory cache. Cache hit comes from cache proxy, the", + "endpoint of cache storage is cacheserver. Cache hit comes from cache proxy, the", + "endpoint of cache storage is large store (CNS). Cache hit comes from cacheserver" + ], + "type": "string" + }, + "cdnProvider": { + "enum": [ + "NON_CDN", + "CLOUDFLARE" + ], + "enumDescriptions": [ + "", + "" + ], + "type": "string" + }, + "concurrentStreamNum": { + "description": "How many concurrent streams are on the connection when the request finishes (including this request). Export this value to monitor the stream multiplexing for HTTP/2.", + "format": "int64", + "type": "string" + }, + "dependentFetchType": { + "description": "Dependent fetch type", + "enum": [ + "DEPENDENT_UNSPECIFIED", + "DEPENDENT_COMPOSITE_FETCH" + ], + "enumDescriptions": [ + "", + "A flag set by Webmirror to indicate this fetch is associated with a top-level fetch (aka. composite fetch). Unified reporting may choose to ignore a fetch if this flag was set. Notice this is a short-term solution. Composite fetch is a client feature, we should eventually use the logs generated by Webmirror as the source of truth. See go/da-reporting-data-generation for more details." + ], + "type": "string" + }, + "downloadFileName": { + "description": "If the response header contains Content-Disposition header \"attachment; filename=\"google.zip\": the download_file_name would be \"google.zip\"", + "type": "string" + }, + "httpVersion": { + "description": "Stores the HTTP version we used in the last hop.", + "enum": [ + "HTTP_11", + "HTTP_10", + "HTTP_09", + "HTTP_2", + "HTTP_AUTO", + "FIRST_VERSION", + "NUM_VERSIONS" + ], + "enumDescriptions": [ + "", + "", + "??? do we want this ???", + "EXPERIMENTAL, DO NOT USE unless you have talked to", + "trawler-dev@. Allow fetcher to automatically select HTTP protocol", + "version. The selection is based on prior knowledge and dynamic server response. Basically, if the client and the host is configured to allow HTTP/2 traffic, we will select HTTP/2 and send HTTP/2 traffic; and we will fallback to HTTP/1 if we found the server does not support HTTP/2 through ALPN. HTTP Version selection will be applied to each redirect hop. More details about HTTP/2 traffic configuration can be found in: googledata/googlebot/http2_traffic_control_file. We list this after HTTP_* values to make sure", + "HTTPVersion_Name(0) returns the correct string." + ], + "type": "string" + }, + "isBidiStreamingFetch": { + "description": "Whether this is a bidirectional streaming fetch.", + "type": "boolean" + }, + "isFloonetFetch": { + "description": "Whether or not this is a Floonet fetch request. Floonet requests have inherent lower availability (due to HOPE rejections when HOPE is in degraded mode, and other Floonet specific reasons). Therefore, it is important for debugging and for our availability SLO to know whether of not it is a floonet fetch. IMPORTANT NOTE: This field is only currently set for traffic that explicitly requires Floonet and can not failover to use Googlebot (i.e. \"transparent\" or \"implicit\" Floonet fetches).", + "type": "boolean" + }, + "isFromGrpcProxy": { + "description": "Whether or not this response is sent from gRPC proxy service.", + "type": "boolean" + }, + "isVpcTraffic": { + "description": "Set if the fetch goes through the virtual private cloud path so we can track the VPC traffic.", + "type": "boolean" + }, + "largeStoreHitLocation": { + "description": "Set to the hit location (CNS filename) if cache comes from large store.", + "type": "string" + }, + "multiverseClientIdentifier": { + "$ref": "TrawlerMultiverseClientIdentifier", + "description": "Multiverse client information" + }, + "numDroppedReplies": { + "description": "Number of times we drop the content of a stream reply or the final reply, which can only be caused by REJECTED_NO_RPC_BUFFERS now.", + "format": "int64", + "type": "string" + }, + "originalClientParams": { + "$ref": "TrawlerOriginalClientParams", + "description": "Store the original client information." + }, + "resourceBucket": { + "description": "If the requestor shares resource bucket with other requestorids, we will store the resource bucket name in these fields.", + "type": "string" + }, + "subResourceBucket": { + "type": "string" + }, + "tier": { + "description": "Service tier info will be used in traffic grapher for ploting per tier graph.", + "enum": [ + "SERVICE_TIER_UNKNOWN", + "SERVICE_TIER_TRAWLER", + "SERVICE_TIER_HARPOON", + "SERVICE_TIER_PARTNER" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "vpcDestination": { + "$ref": "TrawlerLoggedVPCDestination", + "description": "The following are vpc information that's only set if is_vpc_traffic is true." + } + }, + "type": "object" + }, + "UniversalsearchNewPackerKnowledgeResultSupport": { + "description": "Information about the result support for a given interpretation.", + "id": "UniversalsearchNewPackerKnowledgeResultSupport", + "properties": { + "debug": { + "description": "A debug message that summarizes how the score was computed. Populated if result was matched and in debug mode.", + "type": "string" + }, + "docid": { + "description": "The docid of the result, if available.", + "format": "uint64", + "type": "string" + }, + "estimatedNaviness": { + "description": "The naviness for this result. Each matcher can determine the naviness to use for the result. This can be copied directly from the result, or estimated based on clicks or some other heuristic. The value should be between 0 and 1 and should indicate the probability that the user will click on that result. The estimated_naviness is used to break ties when between results with the same rank.", + "format": "float", + "type": "number" + }, + "provenance": { + "description": "All provenances of this result support.", + "items": { + "$ref": "UniversalsearchNewPackerKnowledgeResultSupportProvenance" + }, + "type": "array" + }, + "rank": { + "description": "The 0 based rank for this result. When the source is MAIN_GSR this corresponds to the index of the result in the generic search response specific in AddKnowledgePackerPreprocessors. Otherwise, the rank should be estimated so the result is closest in importance to the web result at the same rank.", + "format": "int32", + "type": "integer" + }, + "score": { + "description": "A score from 0 to 1 inclusive that represents the strength of the result support. A score of one indicates this result is entirely about this interpretation.", + "format": "float", + "type": "number" + }, + "source": { + "description": "The source of the result support.", + "enum": [ + "MAIN_GSR", + "LIVE_RESULT", + "NEWS", + "CLIR_GSR", + "CONTEXTBOOST_RESULT", + "SUPPORT_FROM_KSCORER", + "PERSONALIZED_RESULT" + ], + "enumDescriptions": [ + "MAIN_GSR is the generic search response specified in AddKnowledgePackerPreprocessors. This will normally be universal::kResponseWeb but can also be universal::kResponseQuimbyTextWeb or potentially another response depending on the search mode.", + "", + "", + "", + "The following source is used by ContextBoostVoteAwareVoter to provide support for the selected interpretation. Note that this should not be used for any other purpose like navboost signals smearing.", + "This is added for temporary legacy compatibility until all interpretations that use voting have migrated to KScorer. A KScorer-eligible interpretation may not receive any direct support from a particular result, but will require a ResultSupport rank in order to participate in legacy voting.", + "The following source is used by the PersonalizationTwiddler" + ], + "type": "string" + }, + "url": { + "description": "The result url when available.", + "type": "string" + } + }, + "type": "object" + }, + "UniversalsearchNewPackerKnowledgeResultSupportProvenance": { + "description": "Information about provenance of a result support.", + "id": "UniversalsearchNewPackerKnowledgeResultSupportProvenance", + "properties": { + "entityGroupType": { + "description": "Entity group type of the supported entity. This field should only be set for support on entities.", + "enum": [ + "QUESTION", + "ANSWER", + "INTENT" + ], + "enumDescriptions": [ + "The entity group corresponds to a question entity.", + "The entity group corresponds to an answer entity.", + "The entity group corresponds to an intent entity." + ], + "type": "string" + }, + "fromAnswer": { + "description": "===== Deprecated Fields ===== The bool flag indicating whether the ResultSupport comes from answer entities.", + "type": "boolean" + }, + "name": { + "description": "The provenance provider name.", + "type": "string" + } + }, + "type": "object" + }, + "UrlPoisoningData": { + "description": "Url poisoning information. This information is sparse: if num_spam_siblings is not populated, none of the following fields will be populated. Next tag: 6", + "id": "UrlPoisoningData", + "properties": { + "NotChangedTimeMs": { + "description": "fetched from the web. Time when the page was last", + "format": "int64", + "type": "string" + }, + "OriginalCrawlTimeMs": { + "description": "Time when the page was", + "format": "int64", + "type": "string" + }, + "ReuseTimeMs": { + "description": "checked but found to be the same as before. If set, timestamp to indicate", + "format": "int64", + "type": "string" + }, + "numSpamSiblings": { + "format": "int32", + "type": "integer" + }, + "url": { + "description": "when it is fetched from the repository. URL of the document for debugging", + "type": "string" + } + }, + "type": "object" + }, + "UtilStatusProto": { + "description": "Wire-format for a Status object", + "id": "UtilStatusProto", + "properties": { + "canonicalCode": { + "description": "The canonical error code (see codes.proto) that most closely corresponds to this status. May be missing.", + "format": "int32", + "type": "integer" + }, + "code": { + "description": "Numeric code drawn from the space specified below. Often, this is the canonical error space, and code is drawn from google3/util/task/codes.proto", + "format": "int32", + "type": "integer" + }, + "message": { + "description": "Detail message", + "type": "string" + }, + "messageSet": { + "$ref": "Proto2BridgeMessageSet", + "description": "message_set associates an arbitrary proto message with the status." + }, + "space": { + "description": "The following are usually only present when code != 0 Space to which this status belongs", + "type": "string" + } + }, + "type": "object" + }, + "VendingConsumerProtoTrustedGenomeAnnotation": { + "description": "------------------------------------------------------------------------------ Proto message containing the trusted genome entities that belong to an app. Document type: ANDROID_APP See go/gd-server-design for more info. ## Next tag: 4", + "id": "VendingConsumerProtoTrustedGenomeAnnotation", + "properties": { + "policy": { + "$ref": "VendingConsumerProtoTrustedGenomePolicy", + "description": "The list of trusted genome policy." + }, + "testCode": { + "description": "The list of test code, used to log when serving. The test code is set in both control and experiment annotations when they are different.", + "items": { + "enum": [ + "UNKNOWN", + "RESERVED", + "RESERVED_2", + "RESERVED_3", + "CRSCORE_EQ_0", + "CRSCORE_GT_0", + "STORIES_IN_MOVIES_HOME", + "RELATED_X_DC_CLUSTERS_IN_MOVIE_DETAILS_PAGES", + "TC_IN_PSS_CHECK_A", + "TC_IN_PSS_CHECK_B", + "QUERY_IS_BOOTS_ELIGIBLE", + "ENTERTAINMENT_CLUSTER_SPELLING_CORRECTION", + "QUERY_HAS_SELECTED_BOOTS_CHIP", + "QUERY_HAS_ONLY_UNSELECTED_BOOTS_CHIPS", + "SPONSORED_ADS_CLUSTER", + "SPONSORED_ADS_CLUSTER_ATLEAST_ONE_AD", + "INSPIRED_BY", + "MOVIE_DUPLICATES_WITHIN_3_DOCS", + "MOVIE_DUPLICATES_WITHIN_5_DOCS", + "MOVIE_DUPLICATES_WITHIN_7_DOCS", + "SHOULD_SEE_LIVE_OP_CLUSTER", + "BOOKS_QUERY_HAS_LANGUAGE_INTENT", + "REWARD_RIBBON_IMPRESSION", + "IRON_THRONE_QUERY", + "FAMILY_LIBRARY_SHARED_DESTINATION", + "GUIDED_DISCOVERY", + "BOOKS_AUTHOR_QUERY", + "HOME_SPONSORED_ADS_CLUSTER", + "HOME_SPONSORED_ADS_CLUSTER_GAP_OPTOUT", + "FAMILY_FRAUD_CHALLENGE", + "BOOKS_MONETIZABLE_QUERY", + "BOOKS_NONMONETIZABLE_QUERY", + "NON_BOOKS_QUERY", + "BOOTS_PROD_V1_QUERY", + "BOOTS_TAG_OVERRIDE_QUERY", + "BOOTS_KG_ANNOTATION_QUERY", + "EDITORIAL_REVIEW_CARD_ELIGIBLE", + "BOOTS_DEST_QUERY_100_INSTALLS_QUERY", + "BOOTS_DEST_QUERY_150_INSTALLS_QUERY", + "SHOULD_SEE_LIVE_OP_CLUSTER_CANDIDATES", + "REV_BOOST_V2_TEST_CODE", + "ENTERTAINMENT_CLUSTER_TRIGGERING", + "BOOTS_MIN_TAGS_2", + "BOOTS_EN_IN", + "BOOTS_EN_GB", + "BOOTS_EN_PH", + "BOOTS_EN_CA", + "BOOTS_EN_AU", + "BOOTS_EN_I18N", + "BOOTS_V2_STAGING", + "OFFLINE_APP_SEARCH", + "ENTERTAINMENT_CLUSTER_CONTAINER_SEARCH_ENABLED", + "BEST_SELLER_CART_TAG", + "BOOTS_DEST_QUERY_50_INSTALLS_QUERY", + "BOOTS_SAFT_SPEC2", + "SEARCH_NAV_SPONSORED_ADS_CLUSTER", + "BOOTS_ISTA", + "BOOTS_EN_GLOBAL", + "TOP_CHART_RANKING_INFO", + "CLIENT_TEST_CODE_VERIFICATION", + "APPS_PUB_QUERY", + "BOOTS_V2", + "HAS_BOOKS_BIGPOOL_RECS", + "TESTING_BOTH", + "TESTING_EVENT", + "BOOTS_MORE_CHIPS", + "BOOTS_TAG_CONVERSION_BASED_RERANKING", + "BOOTS_KG_FILTERS", + "BOOTS_JP_KR", + "BOOTS_ISTA_V2", + "BOOTS_FILTERS", + "BOOTS_EN_GLOBAL_V2", + "BOOTS_ISTA_V2_WITH_BOOTS_V2", + "BOOTS_ISTA_JP_KR", + "BOOTS_VS_ISTA_JP_KR", + "CHURNED_LIVE_OP_CANDIDATES_EVENT", + "CHURNED_LIVE_OP_EVENT", + "ABUSIVE_QUERY_SQUASHING_EVENT", + "HOME_SPONSORED_ADS_RE_ENGAGEMENT_CLUSTER_EVENT_LEVEL", + "SEARCH_LIVE_OP_QUERY_EVENT", + "BOOTS_ES_PT", + "BOOTS_URUC", + "BOOTS_URUC_PER_INSTALL", + "GEARHEAD_VANAGON_ESCAPE_HATCH_CANDIDATE", + "BOOTS_JP_KR_V2", + "BOOTS_FILTERS_AT_END", + "APP_SUPPORTS_INSTANT_LAUNCH", + "SEARCH_MDP_LIVE_OP_QUERY_EVENT", + "BOOTS_I18N", + "LOW_RESULT_CLUSTER", + "PERSONALIZED_CLUSTER", + "GAME_SEEKING_PERSONALIZED_CLUSTER_AT_EVENT_LEVEL", + "VX_CLUSTER", + "LOW_RESULT_LATENCY", + "MOVIES_GROOT_20", + "MOVIES_GROOT_10", + "MOVIES_GROOT_5", + "MOVIES_GROOT_3", + "MOVIES_GROOT_1", + "MOVIES_DORA_SEARCH", + "MOVIES_MDP_SEARCH", + "MOVIES_ORGANIC_SEARCH", + "FULL_PAGE_REPLACEMENT", + "ENTERTAINMENT_CLUSTER_TRIGGERING_UNDER_FPR", + "ENTERTAINMENT_CLUSTER_TRIGGERING_WHEN_FPR_ENABLED", + "ENTERTAINMENT_CLUSTER_TRIGGERING_WHEN_FPR_TRIGGERED", + "BOOTS_I18N_V2", + "BOOTS_I18N_V2_VS_V1", + "AUDIOBOOKS_KIDS_CATEGORICAL_SEARCH", + "ZERO_RESULT", + "BOOTS_I18N_100_THRESH", + "BOOTS_I18N_150_THRESH", + "DISPLAY_ADS_RESPONSE_RECEIVED_EVENT_LEVEL", + "BEST_SELLER_CART_TAG_FOR_MENDEL_AT_EVENT_LEVEL", + "ABUSIVE_QUERY", + "PARTNER_VIOLENCE_TRIGGERING", + "BOOTS_V3", + "HOME_SPONSORED_ADS_CLUSTER_NO_ADS", + "BOOKS_XSELL_ELIGIBLE_APP", + "NAV_EXT_EVENT", + "PGS_TEST_CODE_LOGGING_VERIFICATION", + "ADS_CUSTOM_DETAILS_PAGE_ASSETS_PRESENT_EVENT_LEVEL", + "ADS_CUSTOM_DETAILS_PAGE_ASSETS_SERVED_EVENT_LEVEL", + "BOOKS_DETAILS_PAGE_KEYWORD_CLUSTER_EVENT_LEVEL", + "DETAILS_PAGE_LIVE_OPS", + "BOOKS_DETAILS_PAGE_SIMILAR_CLUSTER", + "BOOKS_DETAILS_PAGE_POST_ACQUIRE_SIMILAR_CLUSTER", + "CDP_PROMOTIONAL_DESCRIPTION_LOCALE_MISMATCH", + "CDP_PROMOTIONAL_DESCRIPTION_LOCALE_MATCH", + "APPS_ST_PRICE_INTENT", + "APPS_ST_AUDIENCE_INTENT", + "APPS_PERSONALIZED_TOPIC_QUERY_EVENT_LEVEL", + "APPS_PERSONALIZED_ALL_GAME_QUERIES_EVENT_LEVEL", + "APPS_PERSONALIZED_CATEGORICAL_GAME_SEEKING_QUERIES_EVENT_LEVEL", + "CDP_PROMOTIONAL_IMAGE_LOCALE_MATCH", + "CDP_PROMOTIONAL_IMAGE_LOCALE_MISMATCH", + "CDP_SCREENSHOT_LOCALE_MISMATCH", + "CDP_SCREENSHOT_LOCALE_MATCH", + "CDP_PROMOTIONAL_VIDEO_LOCALE_MISMATCH", + "CDP_PROMOTIONAL_VIDEO_LOCALE_MATCH", + "BOOKS_ELIGIBLE_FOR_BUNDLE_EVENT_LEVEL", + "BOOKS_QUERY_ELIGIBLE_FOR_APPS_CLUSTER", + "TEST_CODE_BUILD_VERIFICATION", + "GAMES_PROFILE_CREATION_EVENT", + "MOVIES_QUERY_ELIGIBLE_FOR_APPS_CLUSTER", + "MOVIES_WALLE_SEARCH", + "TRUSTED_ENTITY_SEARCH_QUERY_EVENT", + "BUNDLE_FBT_DISCOUNT", + "BUNDLE_SERIES_DISCOUNT", + "APPS_SEARCH_TOPIC_RFY_CLUSTER_AT_EVENT_LEVEL", + "APPS_SEARCH_MINI_TOP_CHARTS_CLUSTER_AT_EVENT_LEVEL", + "PLAY_STORE_SHOW_CART_EVENT_LEVEL", + "HAS_BOOK_FREQUENTLY_BOUGHT_TOGETHER_BUNDLE_EVENT_LEVEL", + "HAS_BOOK_SERIES_BUNDLE_EVENT_LEVEL", + "APPS_SEARCH_TOPIC_RFY_CLUSTER_COUNTERFACTUAL", + "APPS_SEARCH_MINI_TOP_CHARTS_CLUSTER_COUNTERFACTUAL", + "GEARHEAD_TOOLTIP_ASSISTANT_FIRST_RUN", + "GEARHEAD_TOOLTIP_ASSISTANT_NTH_RUN", + "GEARHEAD_TOOLTIP_ASSISTANT_NTH_RUN_BUTTON", + "GEARHEAD_TOOLTIP_LAUNCHER_FIRST_RUN", + "GEARHEAD_TOOLTIP_LAUNCHER_NTH_RUN", + "GEARHEAD_TOOLTIP_NOTIFICATION_FIRST_RUN", + "GEARHEAD_TOOLTIP_NOTIFICATION_NEW", + "GEARHEAD_TOOLTIP_NOTIFICATION_NTH_NEW", + "BUNDLE_DISCOUNT_SHOWN_ON_DETAIL_PAGE", + "KIDS_AGE_SCORE_BONUS_AT_EVENT_LEVEL", + "KIDS_QUALITY_TAG_SCORE_BONUS_AT_EVENT_LEVEL", + "TEST_FOR_LEVELS_FLAG_AT_EVENT_LEVEL", + "LB_TARGETED_AT_EVENT_LEVEL", + "LB_ABOVE_AT_EVENT_LEVEL", + "LB_BELOW_AT_EVENT_LEVEL", + "GEARHEAD_TOOLTIP_CONTEXTUAL_ASSISTANT_DIALER_CONTACT", + "LB_PAGINATED_AT_EVENT_LEVEL", + "RECS_USER_INTENT_HP_LOW_INTENT_EVENT_LEVEL", + "RECS_USER_INTENT_HP_HIGH_INTENT_EVENT_LEVEL", + "LB_IMPRESSED_AT_EVENT_LEVEL", + "GEARHEAD_INPUT_TOUCH_PRESENT", + "GEARHEAD_INPUT_ROTARY_PRESENT", + "GEARHEAD_INPUT_TOUCHPAD_PRESENT", + "GEARHEAD_INPUT_TOUCH_ABSENT", + "GEARHEAD_INPUT_ROTARY_ABSENT", + "GEARHEAD_INPUT_TOUCHPAD_ABSENT", + "CANCEL_SUBSCRIPTION_CONFIRMATION_DIALOG_SHOWN_WHEN_ELIGIBLE_FOR_ENTITLEMENT_BENEFITS_EVENT_LEVEL_AT_EVENT_LEVEL", + "SMART_FOP_EVENT_LEVEL_AT_EVENT_LEVEL", + "SMART_FOP_AT_EVENT_LEVEL", + "VX_CLUSTER_IN_APPS_SERP_IMPRESSION", + "KIDS_CONTENT_SEEKING_QUERY", + "KIDS_CONTENT_SEEKING_QUERY_TREATMENT_APPLIED", + "VX_QREF_TRIGGERED_AT_EVENT_LEVEL_AT_EVENT_LEVEL", + "VX_NAVBOOST_SUPPRESSED_AT_EVENT_LEVEL_AT_EVENT_LEVEL", + "VX_QREF_TRIGGERED_AT_EVENT_LEVEL", + "VX_NAVBOOST_SUPPRESSED_AT_EVENT_LEVEL", + "PREFERRED_FOP", + "REDEEM_NOT_ENROLLED_TO_LOYALTY", + "GEARHEAD_TOOLTIP_SETTINGS", + "GEARHEAD_TOOLTIP_CALENDAR", + "POST_RESPONSE_MDP_BUT_QCM_IS_UNKNOWN", + "POST_RESPONSE_MDP_BUT_QCM_IS_NAVEXT", + "POST_RESPONSE_MDP_BUT_QCM_IS_NAVIGATIONAL", + "POST_RESPONSE_MDP_BUT_QCM_IS_MULTINAV", + "POST_RESPONSE_MDP_BUT_QCM_IS_CATEGORITCAL", + "ONETREE_MDP_BUT_POST_RESPONSE_NOT_MDP", + "SEARCH_MDP_TRIGGERED_EVENT_LEVEL", + "IN_APP_MESSAGING_APP_1", + "DEVELOPER_PAGE_AT_EVENT_LEVEL", + "BOOKS_FREE_FIXED_DURATION_RENTAL_EVENT_LEVEL", + "BOOKS_FREE_FIXED_DATE_RENTAL_EVENT_LEVEL", + "BOOKS_PRICE_DROP_EVENT_LEVEL", + "TG_VALIDATED_CRISPR_TAG_AT_EVENT_LEVEL", + "HAS_PLAY_CONSOLE_CUSTOM_STORE_LISTING", + "GEARHEAD_TOOLTIP_ASSISTANT_DIALER_FIRST_OPEN", + "GEARHEAD_TOOLTIP_ASSISTANT_MEDIA_OPEN", + "GEARHEAD_WIDESCREEN_DISPLAY", + "GEARHEAD_MULTI_DISPLAY", + "GEARHEAD_TOOLTIP_ASSISTANT_PHONE_CALL_ENDED", + "SERIES_BUNDLE_MULTI_TIER_DISCOUNT_EVENT_LEVEL", + "DIALER_ASSISTANT_CALL_ACTION_SHOWN", + "DIALER_ASSISTANT_CALL_ACTION_CLICKED", + "GEARHEAD_TOOLTIP_FEEDBACK", + "GEARHEAD_TOOLTIP_ASSISTANT_THREE_RUNS", + "GEARHEAD_TOOLTIP_ASSISTANT_MEDIA_REC_FIRST_RUN", + "GEARHEAD_WORK_PROFILE_DETECTED", + "GEARHEAD_WORK_PROFILE_DETECTED_AND_COMPATIBLE", + "GEARHEAD_WORK_PROFILE_QUERYING_ALLOWED", + "PLAY_ADS_REENGAGEMENT_COUNTERFACTUAL", + "PLAY_ADS_THIRD_LIST_VIEW_ADS_COUNTERFACTUAL", + "MISMATCH_BETWEEN_FINSKY_TARGETING_AND_SKELETON", + "GEARHEAD_TOOLTIP_ASSISTANT_LAUNCHER_OPEN", + "GEARHEAD_MULTIPLE_CALLABLE_PHONE_ACCOUNTS_DETECTED", + "GEARHEAD_USER_HAS_SELECTED_OUTGOING_PHONE_ACCOUNT", + "GEARHEAD_TOOLTIP_ASSISTANT_LONG_DRIVE_START", + "GEARHEAD_TOOLTIP_DIALER_MULTI_SIM", + "GEARHEAD_AUDIO_SERVICE_MIGRATION", + "GEARHEAD_MEDIA_APP_DOWNLOAD_LEAVE_BEHIND_NOTIFICATION", + "GEARHEAD_TOOLTIP_ASSISTANT_MEDIA_REC_MEDIA_IDLE", + "GEARHEAD_USER_DEVICE_UNPLUGGED", + "GEARHEAD_DO_NOT_DISTURB_CALLS_ENABLED", + "GEARHEAD_DEFAULT_MEDIA_APP_SET_FROM_MULTIPLE_OPTIONS", + "REGIONAL_NAV_EXT_EVENT_LEVEL", + "GEARHEAD_TOOLTIP_BUGREPORT", + "GENERAL_QUERY_PAGINATION_EVENT_LEVEL", + "MULTINAV_PAGINATION_EVENT_LEVEL", + "GEARHEAD_SESSION_ELIGIBLE_FOR_MEDIA_AUTOPLAY", + "GEARHEAD_AUDIO_FLOW_CONTROL_PERMIT_UNAVAILABLE", + "SHOULD_SEE_SEARCH_MEDIA_RESULT_CLUSTER", + "FRESH_RESULTS_SEEKING_SEARCH_QUERY_EVENT_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_1_EVENT_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_2_EVENT_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_3_EVENT_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_4_EVENT_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_5_EVENT_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_6_EVENT_LEVEL", + "TRUSTED_GENOME_RELATED_QUERY_CLUSTER_EVENT", + "NAV_TG_RELATED_QUERY_EVENT", + "PROMOTABLE_APPS_EVENT", + "INLINE_DETAILS_TQUALITY_CHECK_PASS", + "INLINE_DETAILS_TQUALITY_CHECK_FAIL", + "INLINE_DETAILS_IS_INLINE_URL", + "EXPANDER_NEXT_TO_METADATA_BAR", + "EXPANDER_NEXT_TO_PROMOTIONAL_TEXT", + "EXPANDABLE_CLUSTER_EXPANDED", + "EXPANDABLE_CLUSTER_COLLAPSED", + "CLUSTER_REQUEST_LATENCY_EVENT_LEVEL", + "EDITORS_CHOICE_CLUSTER_SERP_EVENT_LEVEL", + "BESTK_CLUSTER_SERP_EVENT_LEVEL", + "INLINE_DETAILS_AQUALITY_CHECK_PASS", + "INLINE_DETAILS_AQUALITY_CHECK_FAIL", + "FRESH_RESULTS_SEEKING_CURRENT_YEAR_EVENT_LEVEL", + "FILTER_TQ_FAILURE_APP", + "EDITORIAL_CONTENT_CLUSTER_FHR_SERP_EVENT_LEVEL", + "DETAILS_PAGE_TQUALITY_UNKNOWN_EVENT_LEVEL", + "DETAILS_PAGE_TQUALITY_FAILED_EVENT_LEVEL", + "DETAILS_PAGE_TQUALITY_PASSED_EVENT_LEVEL", + "DETAILS_PAGE_AQUALITY_UNKNOWN_EVENT_LEVEL", + "DETAILS_PAGE_AQUALITY_FAILED_EVENT_LEVEL", + "DETAILS_PAGE_AQUALITY_PASSED_EVENT_LEVEL", + "PTP_CLUSTER_SERP_P13N_RANKING_EVENT_LEVEL", + "EVENT_LEVEL_TEST_CODE_LIMIT", + "RESERVED_4", + "RESERVED_5", + "RESERVED_6", + "HOME_SPONSORED_ADS_CLUSTER_AT_SESSION_LEVEL", + "HOME_SPONSORED_ADS_CLUSTER_GAP_OPTOUT_AT_SESSION_LEVEL", + "FAMILY_FRAUD_CHALLENGE_AT_SESSION_LEVEL", + "SHOULD_SEE_LIVE_OP_CLUSTER_SESSION_LEVEL", + "BOOKS_MONETIZABLE_QUERY_AT_SESSION_LEVEL", + "BOOKS_NONMONETIZABLE_QUERY_AT_SESSION_LEVEL", + "NON_BOOKS_QUERY_AT_SESSION_LEVEL", + "BOOTS_PROD_V1_QUERY_AT_SESSION_LEVEL", + "BOOTS_TAG_OVERRIDE_QUERY_AT_SESSION_LEVEL", + "BOOTS_KG_ANNOTATION_QUERY_AT_SESSION_LEVEL", + "EDITORIAL_REVIEW_CARD_ELIGIBLE_AT_SESSION_LEVEL", + "BOOTS_DEST_QUERY_100_INSTALLS_QUERY_AT_SESSION_LEVEL", + "BOOTS_DEST_QUERY_150_INSTALLS_QUERY_AT_SESSION_LEVEL", + "SHOULD_SEE_LIVE_OP_CLUSTER_CANDIDATES_SESSION_LEVEL", + "REV_BOOST_V2_TEST_CODE_AT_SESSION_LEVEL", + "ENTERTAINMENT_CLUSTER_TRIGGERING_AT_SESSION_LEVEL", + "BOOTS_MIN_TAGS_2_AT_SESSION_LEVEL", + "BOOTS_EN_IN_AT_SESSION_LEVEL", + "BOOTS_EN_GB_AT_SESSION_LEVEL", + "BOOTS_EN_PH_AT_SESSION_LEVEL", + "BOOTS_EN_CA_AT_SESSION_LEVEL", + "BOOTS_EN_AU_AT_SESSION_LEVEL", + "BOOTS_EN_I18N_AT_SESSION_LEVEL", + "BOOTS_V2_STAGING_AT_SESSION_LEVEL", + "OFFLINE_APP_SEARCH_AT_SESSION_LEVEL", + "ENTERTAINMENT_CLUSTER_CONTAINER_SEARCH_ENABLED_AT_SESSION_LEVEL", + "BEST_SELLER_CART_TAG_AT_SESSION_LEVEL", + "BOOTS_DEST_QUERY_50_INSTALLS_QUERY_AT_SESSION_LEVEL", + "BOOTS_SAFT_SPEC2_AT_SESSION_LEVEL", + "SEARCH_NAV_SPONSORED_ADS_CLUSTER_AT_SESSION_LEVEL", + "BOOTS_ISTA_AT_SESSION_LEVEL", + "BOOTS_EN_GLOBAL_AT_SESSION_LEVEL", + "TOP_CHART_RANKING_INFO_AT_SESSION_LEVEL", + "CLIENT_TEST_CODE_VERIFICATION_AT_SESSION_LEVEL", + "APPS_PUB_QUERY_AT_SESSION_LEVEL", + "BOOTS_V2_AT_SESSION_LEVEL", + "HAS_BOOKS_BIGPOOL_RECS_AT_SESSION_LEVEL", + "TESTING_DEFAULT", + "TESTING_BOTH_AT_SESSION_LEVEL", + "PLAY_COMMERCE_FRIEDNLY_FRAUD_PREDICT_CHALLENGE_BUT_FORCE_NO_OVERRIDE", + "PLAY_COMMERCE_FRIENDLY_FRAUD_PREDICT_CHALLENGE", + "PLAY_COMMERCE_FRIENDLY_FRAUD_NO_PREDICT", + "PLAY_COMMERCE_FRIENDLY_FRAUD_PREDICT_NO_CHALLENGE", + "PLAY_COMMERCE_FRIENDLY_FRAUD_NO_PREDICT_NO_CHALLENGE", + "PLAY_COMMERCE_FRIENDLY_FRAUD_NO_PREDICT_HAS_CHALLENGE", + "BOOTS_V2_STAGING_150_INSTALLS", + "SHOULD_SEE_BOOKS_WISHLIST_CLUSTER", + "BOOTS_MORE_CHIPS_AT_SESSION_LEVEL", + "BOOTS_TAG_CONVERSION_BASED_RERANKING_AT_SESSION_LEVEL", + "BOOTS_KG_FILTERS_AT_SESSION_LEVEL", + "BOOTS_JP_KR_AT_SESSION_LEVEL", + "DETAILS_POST_INSTALL_SPONSORED_ADS_CLUSTER", + "DETAILS_POST_INSTALL_SPONSORED_ADS_CLUSTER_ATLEAST_ONE_AD", + "BOOTS_ISTA_V2_AT_SESSION_LEVEL", + "PRIMETIME_DISTRIBUTOR_IN_DETAILS_PAGES", + "BOOTS_FILTERS_AT_SESSION_LEVEL", + "PRIMETIME_CONTENT_IN_DETAILS_PAGES", + "INSTANT_CART_ELIGIBLE_USERS", + "INSTANT_CART_CACHE_STUDY", + "QUICK_FIX_EXPIRED_CREDIT_CARD", + "BOOTS_EN_GLOBAL_V2_AT_SESSION_LEVEL", + "BOOTS_ISTA_V2_WITH_BOOTS_V2_AT_SESSION_LEVEL", + "SEARCH_NON_NAV_SPONSORED_ADS_CLUSTER", + "BOOTS_NO_TAG_AT_SESSION_LEVEL", + "BOOTS_NO_DIFF_AT_SESSION_LEVEL", + "BOOTS_ISTA_JP_KR_AT_SESSION_LEVEL", + "BOOTS_VS_ISTA_JP_KR_AT_SESSION_LEVEL", + "CHURNED_LIVE_OP_CANDIDATES_SESSION", + "CHURNED_LIVE_OP_SESSION", + "INSTANT_FOP_ELIGIBLE_USERS", + "DCB_ABANDONMENT_TEST_CODE", + "HOME_SPONSORED_ADS_RE_ENGAGEMENT_CLUSTER", + "ABUSIVE_QUERY_SQUASHING_AT_SESSION_LEVEL", + "MENDEL_TEST_CODE_VERIFICATION", + "MOVIES_QUICK_SUGGESTION_CLUSTER_PRESENT", + "MOVIES_BECAUSE_OF_YOU_CLUSTER_PRESENT", + "CART_ABANDONMENT_TEST_CODE", + "CLASH_ROYALE_AIA_TRY_NOW_TREATMENT", + "CLASH_ROYALE_AIA_TRY_NOW_CONTROL", + "SEARCH_LIVE_OP_QUERY_SESSION", + "BOOTS_ES_PT_AT_SESSION_LEVEL", + "BOOTS_ISTA_ES_PT", + "BOOTS_VS_ISTA_ES_PT", + "CLASH_ROYALE_AIA_TRY_NOW", + "BOOTS_QUERY", + "BOOTS_QUERY_HAS_SELECTED_CHIP", + "BOOTS_QUERY_HAS_ONLY_UNSELECTED_CHIP", + "BOOTS_JPKR_KG_FILTERS", + "BOOTS_URUC_AT_SESSION_LEVEL", + "BOOTS_URUC_PER_INSTALL_AT_SESSION_LEVEL", + "GAMES_HOME_VIDEO_SPONSORED_CLUSTER_IS_PRESENT", + "BOOTS_JP_KR_V2_AT_SESSION_LEVEL", + "HOUSE_OF_FUN_AIA_TRY_NOW", + "BOOTS_FILTERS_AT_END_AT_SESSION_LEVEL", + "APP_SUPPORTS_INSTANT_LAUNCH_AT_SESSION_LEVEL", + "SEARCH_MDP_LIVE_OP_QUERY_SESSION", + "BOOTS_I18N_AT_SESSION_LEVEL", + "GEARHEAD_VANAGON_FRX_PHASE1_CANDIDATE", + "LOW_RESULT_CLUSTER_AT_SESSION_LEVEL", + "PERSONALIZED_CLUSTER_AT_SESSION_LEVEL", + "GAME_SEEKING_PERSONALIZED_CLUSTER_AT_SESSION_LEVEL", + "VX_CLUSTER_AT_SESSION_LEVEL", + "LOW_RESULT_LATENCY_AT_SESSION_LEVEL", + "PSEUDOCREDIT_UX_REVAMP_TEST_CODE", + "MOVIES_GROOT_20_AT_SESSION_LEVEL", + "MOVIES_GROOT_10_AT_SESSION_LEVEL", + "MOVIES_GROOT_5_AT_SESSION_LEVEL", + "MOVIES_GROOT_3_AT_SESSION_LEVEL", + "MOVIES_GROOT_1_AT_SESSION_LEVEL", + "GEARHEAD_MESSAGING_AUTO_REPLY_CANDIDATE", + "MOVIES_DORA_SEARCH_AT_SESSION_LEVEL", + "MOVIES_MDP_SEARCH_AT_SESSION_LEVEL", + "MOVIES_ORGANIC_SEARCH_AT_SESSION_LEVEL", + "FULL_PAGE_REPLACEMENT_AT_SESSION_LEVEL", + "DISPLAY_ADS_RESPONSE_RECEIVED", + "ENTERTAINMENT_CLUSTER_TRIGGERING_UNDER_FPR_AT_SESSION_LEVEL", + "WORDS_WITH_FRIENDS_AIA_TRY_NOW", + "ENTERTAINMENT_CLUSTER_TRIGGERING_WHEN_FPR_ENABLED_AT_SESSION_LEVEL", + "ENTERTAINMENT_CLUSTER_TRIGGERING_WHEN_FPR_TRIGGERED_AT_SESSION_LEVEL", + "MIGHTY_BATTLES_AIA_TRY_NOW", + "BUBBLE_WITCH_AIA_TRY_NOW", + "PANDA_POP_AIA_TRY_NOW", + "FINAL_FANTASY_XV_AIA_TRY_NOW", + "BOOTS_V2_ES_PT", + "BOOTS_VS_V2_ES_PT", + "BUY_NOW_BUTTON", + "BOOTS_SELECTOR", + "ADS_EXPERIMENT_ID_RECEIVED", + "BOOTS_I18N_V2_AT_SESSION_LEVEL", + "BOOTS_I18N_V2_VS_V1_AT_SESSION_LEVEL", + "BEST_SELLER_CART_TAG_FOR_MENDEL", + "VIDEO_CLUSTER_TRIGGERING_WHEN_VIDEO_LANDING_ENABLED", + "AUDIOBOOKS_KIDS_CATEGORICAL_SEARCH_AT_SESSION_LEVEL", + "ZERO_RESULT_AT_SESSION_LEVEL", + "BOOTS_I18N_100_THRESH_AT_SESSION_LEVEL", + "BOOTS_I18N_150_THRESH_AT_SESSION_LEVEL", + "SHOULD_SEE_MY_APPS_LIVE_OP_CLUSTER", + "CANDY_CRUSH_AIA_TRY_NOW", + "ABUSIVE_QUERY_AT_SESSION_LEVEL", + "PERMISS_TESTING_FOR_TEST_CODE_TOOL", + "PARTNER_VIOLENCE_TRIGGERING_AT_SESSION_LEVEL", + "BOOTS_V3_AT_SESSION_LEVEL", + "HOME_SPONSORED_ADS_CLUSTER_NO_ADS_AT_SESSION_LEVEL", + "BOOKS_XSELL_ELIGIBLE_APP_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_SESSION_LEVEL", + "SUBSCRIBE_AND_INSTALL_AVAILABLE_CLIENT_SESSION_LEVEL", + "NAV_EXT_UI_SESSION", + "NAV_EXT_UI_EVENT", + "NAV_EXT_SESSION", + "CART_ABANDONMENT_SUB_DOLLAR_TEST_CODE", + "PGS_TEST_CODE_LOGGING_VERIFICATION_AT_SESSION_LEVEL", + "DEFAULT_FOP_NON_INSTANT_IAB_EVENT_LEVEL", + "DEFAULT_FOP_INSTANT_FOP_EVENT_LEVEL", + "CART_ABANDONMENT_V2_EXP1_TEST_CODE", + "FAST_REINSTALL_TEST_CODE", + "ADS_CUSTOM_DETAILS_PAGE_ASSETS_PRESENT", + "WELLNET_CASH_DEPRECATED", + "APPS_DETAILS_PAGE_PROMOTION_SESSION_LEVEL", + "BOOKS_DETAILS_PAGE_PROMOTION_SESSION_LEVEL", + "CART_NO_FOP", + "CART_ABANDONMENT_BOOK_NEVER_TEST_CODE", + "CART_ABANDONMENT_BOOK_NEVER_SESSION_LEVEL", + "CART_ABANDONMENT_BOOK_VX_NEVER_SESSION_LEVEL", + "CART_ABANDONMENT_MOVIE_NEVER_SESSION_LEVEL", + "CART_ABANDONMENT_MOVIE_VX_NEVER_SESSION_LEVEL", + "ADS_CUSTOM_DETAILS_PAGE_ASSETS_SERVED", + "DETAILS_PAGE_PROMOTION_SESSION_LEVEL", + "BURNSIE_FOR_EXPIRED_CARD_EVENT_LEVEL", + "CART_ABANDONMENT_HIGH_CART_SESSION_LEVEL", + "BOOKS_DETAILS_PAGE_KEYWORD_CLUSTER", + "SHOULD_SEE_LIVE_OPS_V2_CLUSTER", + "DETAILS_PAGE_LIVE_OPS_AT_SESSION_LEVEL", + "SHOULD_SEE_LIVE_OPS_FROM_NEW_APPS", + "SHOULD_SEE_LIVE_OPS_FROM_NEW_APPS_ONLY", + "BOOKS_DETAILS_PAGE_SIMILAR_CLUSTER_AT_SESSION_LEVEL", + "BOOKS_DETAILS_PAGE_POST_ACQUIRE_SIMILAR_CLUSTER_AT_SESSION_LEVEL", + "FLOATING_HIGHLIGHTS_ROW_TRIGGERING_AT_SESSION_LEVEL", + "ADS_SEARCH_PAGE_SC_PRESENT", + "ADS_SEARCH_PAGE_SC_ABSENT", + "CART_ABANDON_SURVEY_V1", + "GEARHEAD_PROJECTION_FRX_ADDITIONAL_INSTALL_REQUIREMENTS", + "APPS_DETAILS_PAGE_EXISTING_PROMOTION_SESSION_LEVEL", + "BOOKS_DETAILS_PAGE_EXISTING_PROMOTION_SESSION_LEVEL", + "BOOKS_ELIGIBLE_FOR_BUNDLE", + "IN_ACQUIRE_TEST_CODE", + "CDP_PROMOTIONAL_DESCRIPTION_LOCALE_MISMATCH_AT_SESSION_LEVEL", + "CDP_PROMOTIONAL_DESCRIPTION_LOCALE_MATCH_AT_SESSION_LEVEL", + "APPS_SEARCH_PRICE_INTENT", + "APPS_ST_PRICE_INTENT_AT_SESSION_LEVEL", + "PERSONALIZED_FOP_OPTIONS_RECOMMENDED", + "FALLBACK_FOP_OPTIONS_RECOMMENDED", + "APPS_ST_AUDIENCE_INTENT_AT_SESSION_LEVEL", + "INSTANT_APP_LAUNCH_KEY_ELIGIBLE_APP", + "CDP_PROMOTIONAL_IMAGE_LOCALE_MATCH_AT_SESSION_LEVEL", + "CDP_PROMOTIONAL_IMAGE_LOCALE_MISMATCH_AT_SESSION_LEVEL", + "CDP_SCREENSHOT_LOCALE_MISMATCH_AT_SESSION_LEVEL", + "CDP_SCREENSHOT_LOCALE_MATCH_AT_SESSION_LEVEL", + "CDP_PROMOTIONAL_VIDEO_LOCALE_MISMATCH_AT_SESSION_LEVEL", + "CDP_PROMOTIONAL_VIDEO_LOCALE_MATCH_AT_SESSION_LEVEL", + "ADS_SEARCH_PAGE_IS_MDP", + "CLOSED_TESTING_TRACK", + "SHOULD_SEE_PREREG_LIVE_OPS_EH", + "SHOULD_SEE_PREREG_LIVE_OPS_DP", + "SHOULD_SEE_PREREG_LIVE_OPS_DEP", + "INTERNAL_TESTING_PROGRAM", + "FETCH_IN_PGS", + "APPS_DETAILS_PAGE_PROMOTION_DEFAULT_SESSION_LEVEL", + "BOOKS_DETAILS_PAGE_PROMOTION_DEFAULT_SESSION_LEVEL", + "HERO_CARD_CLUSTER_AT_SESSION_LEVEL", + "BOOKS_QUERY_ELIGIBLE_FOR_APPS_CLUSTER_AT_SESSION_LEVEL", + "ADS_SEARCH_CATEGORICAL_SC", + "ADS_SEARCH_CATEGORICAL_SC_COUNTERFACTUAL", + "FALLBACK_FOP_OPTIONS_AVAILABLE", + "PERSONALIZED_FOP_OPTIONS_AVAILABLE", + "SWOOP_10P_OFF_SESSION_LEVEL", + "SWOOP_25P_OFF_SESSION_LEVEL", + "SWOOP_50P_OFF_SESSION_LEVEL", + "SWOOP_75P_OFF_SESSION_LEVEL", + "SWOOP_90P_OFF_SESSION_LEVEL", + "RETRIEVAL_SERVICE_GLUE_SCORE_UNDETERMINED", + "RETRIEVAL_SERVICE_GLUE_SCORE_LOW", + "RETRIEVAL_SERVICE_GLUE_SCORE_MEDIUM", + "RETRIEVAL_SERVICE_GLUE_SCORE_HIGH", + "APPS_DETAILS_PAGE_PROMOTION_EXP_2_IN_APP_ITEM_NEVERS_SESSION_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_2_IN_APP_ITEM_BUYERS_SESSION_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_2_PREMIUM_APP_NEVERS_SESSION_LEVEL", + "CANCEL_SUBSCRIPTION_CONFIRMATION_DIALOG_SHOWN_WHEN_ELIGIBLE_FOR_ENTITLEMENT_BENEFITS", + "INSTANT_APP_MULTI_LAYOUT_CLUSTER_TOP_VISIBLE_APP", + "TEST_CODE_BUILD_VERIFICATION_AT_SESSION_LEVEL", + "PREREGISTRATION_AT_SESSION_LEVEL", + "CALL_PDS_FETCH_DIRECTLY_IN_PGS", + "RETRIEVAL_SERVICE_GLUE_SCORE_MISSING", + "GAMES_PROFILE_CREATION", + "IN_APP_SALE_IN_CART", + "MOVIES_MAX_NUMBER_MEESEEKS_CLUSTERS_SHOWN", + "MOVIES_MAX_NUMBER_BYW_CLUSTERS_SHOWN", + "GET_BOOKS_HOME_STREAM", + "RANDOM_FOP_OPTIONS_RECOMMENDED", + "MOVIES_QUERY_ELIGIBLE_FOR_APPS_CLUSTER_AT_SESSION_LEVEL", + "INSTANT_BANNER_ELIGIBLE", + "SUGGEST_NAV_SUGGEST_TRIGGERED", + "TRUSTED_ENTITY_SEARCH_QUERY", + "BURNSIE_ADD_FOP_PROMOTION_SESSION_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_3_PREMIUM_APP_NEVERS", + "MDP_MISMATCH", + "MDP_MATCH", + "MOVIES_WALLE_SEARCH_AT_SESSION_LEVEL", + "BUNDLE_FBT_DISCOUNT_AT_SESSION_LEVEL", + "BUNDLE_SERIES_DISCOUNT_AT_SESSION_LEVEL", + "DETAILS_PAGE_DFF_BADGE", + "MOVIES_REPEATED_BUYER", + "PURCHASE_MANAGER_CHALLENGE_SHOWN", + "SUBSCRIPTION_CANCELLATION_PROMOTION_SESSION_LEVEL", + "SUBSCRIPTION_RETRY_FOP_FOR_DCB_AS_PRIMARY_SESSION_LEVEL", + "SUBSCRIPTION_DCB_AS_DEFAULT_FOP_WITH_BETTER_FOPS_SESSION_LEVEL", + "SUBSCRIPTION_DCB_AS_ADD_FOP_OPTION_SESSION_LEVEL", + "DFF_ON_KIDS_SEEKING_QUERY", + "SHOULD_SEE_CHURNED_LIVEOPS_IN_GAMES_HOME", + "APPS_SEARCH_TOPIC_RFY_CLUSTER_AT_SESSION_LEVEL", + "APPS_SEARCH_MINI_TOP_CHARTS_CLUSTER_AT_SESSION_LEVEL", + "APPS_PERSONALIZED_TOPIC_QUERY_SESSION_LEVEL", + "APPS_PERSONALIZED_ALL_GAME_QUERIES_SESSION_LEVEL", + "APPS_PERSONALIZED_CATEGORICAL_GAME_SEEKING_QUERIES_SESSION_LEVEL", + "PLAY_STORE_SHOW_CART", + "MOVIES_RENTER", + "LOYALTY_HOME_FIRST_TAB_SESSION_LEVEL", + "LOYALTY_HOME_SECOND_TAB_SESSION_LEVEL", + "LOYALTY_HOME_THIRD_TAB_SESSION_LEVEL", + "SHOULD_SEE_LIVEOPS_ON_APPS_HOME", + "MARKETING_OPTIN_INTERSTITIAL_AT_SESSION_LEVEL", + "CART_ABANDONMENT_RETAIL_EXCELLENCE_TEXT_EXPERIMENT_USER_LEVEL", + "CART_ABANDONMENT_RETAIL_EXCELLENCE_TEXT_EXPERIMENT_TEST_CODE", + "HAS_BOOK_SERIES_BUNDLE", + "HAS_BOOK_FREQUENTLY_BOUGHT_TOGETHER_BUNDLE", + "APPS_SEARCH_TOPIC_RFY_CLUSTER_COUNTERFACTUAL_AT_SESSION_LEVEL", + "APPS_SEARCH_MINI_TOP_CHARTS_CLUSTER_COUNTERFACTUAL_AT_SESSION_LEVEL", + "ASYNC_ADS_FALLBACK_CLUSTER", + "DETAILS_PAGE_KIDS_QUALITY_BADGE", + "FREE_TRIAL_SUBSCRIPTION_CANCELATION_APP_INSTALLED", + "FREE_TRIAL_SUBSCRIPTION_CANCELATION_APP_NOT_INSTALLED", + "NON_FREE_TRIAL_SUBSCRIPTION_CANCELATION_APP_INSTALLED", + "NON_FREE_TRIAL_SUBSCRIPTION_CANCELATION_APP_NOT_INSTALLED", + "CLIENT_NOTIFICATION_APP_UNINSTALLED_WITH_SUBSCRIPTION", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_1_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_2_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_3_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_4_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_5_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_6_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_7_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_8_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_9_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_10_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_11_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_12_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_13_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_14_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_15_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_16_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_17_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_18_AT_SESSION_LEVEL", + "ADD_FORM_OF_PAYMENT_DEEP_LINK_MATCH_SUCCESS", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_19_AT_SESSION_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_20_AT_SESSION_LEVEL", + "KIDS_AGE_SCORE_BONUS", + "NOTIFICATION_IMPRESSION_FOR_APP_UNINSTALLED_WITH_SUBSCRIPTION", + "BUNDLE_DISCOUNT_SHOWN_ON_DETAIL_PAGE_AT_SESSION_LEVEL", + "GLUE_SCORE_INTEGRATION_DETAILS_PAGE_SESSION_LEVEL", + "UPDATE_SUBSCRIPTION_INSTRUMENT_PAYMENT_DECLINED_FOP_IMPRESSION", + "UPDATE_SUBSCRIPTION_INSTRUMENT_PAYMENT_DECLINED_FOP_MESSAGE_IMPRESSION", + "RECS_STALENESS_DEMOTION_1_SESSION_LEVEL", + "RECS_STALENESS_DEMOTION_2_SESSION_LEVEL", + "RECS_STALENESS_DEMOTION_3_SESSION_LEVEL", + "RECS_STALENESS_DEMOTION_4_SESSION_LEVEL", + "RECS_STALENESS_DEMOTION_5_SESSION_LEVEL", + "ADD_FOP_WITHOUT_EXISTING_FOP", + "KIDS_QUALITY_TAG_SCORE_BONUS_AT_SESSION_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_1_SESSION_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_2_SESSION_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_3_SESSION_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_4_SESSION_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_5_SESSION_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_6_SESSION_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_7_SESSION_LEVEL", + "SHOULD_SEE_LOYALTY_SIGNUP_INTERSTITIAL_SESSION_LEVEL", + "SHOULD_SEE_REVIEW_MORE_LINK", + "TEST_FOR_LEVELS_FLAG_AT_SESSION_LEVEL", + "INCENTIVIZED_OPTIN_INTERSTITIAL_AT_SESSION_LEVEL", + "PREMIUM_GAME_HOME", + "TESTING_THE_TESTCODE_TOOL", + "LB_TARGETED_AT_SESSION_LEVEL", + "LB_ABOVE_AT_SESSION_LEVEL", + "LB_BELOW_AT_SESSION_LEVEL", + "LB_PAGINATED_AT_SESSION_LEVEL", + "SHOULD_SEE_POINTS_SPEND_PROMOTION_REORDERING", + "SHOULD_SEE_DEFAULT_POINTS_SPEND_PROMOTION_ORDER", + "RECS_USER_INTENT_HP_LOW_INTENT", + "PCD_APP_DETAILS", + "MIXED_AUDIENCE_APP_DETAILS", + "LB_IMPRESSED_AT_SESSION_LEVEL", + "RENEWAL_REMINDER_IN_CANCEL_FLOW", + "RECS_STALENESS_DEMOTION_6_AT_SESSION_LEVEL", + "RECS_STALENESS_DEMOTION_7_AT_SESSION_LEVEL", + "RECS_STALENESS_DEMOTION_8_AT_SESSION_LEVEL", + "HERO_CARD_CLUSTER_INSTANT_ELIGIBLE", + "LOYALTY_SHOULD_SEE_FREE_TRIAL_SUBSCRIPTION_POINTS_EARN_MESSAGE", + "LOYALTY_SHOULD_NOT_SEE_FREE_TRIAL_SUBSCRIPTION_POINTS_EARN_MESSAGE", + "QREWRITE_TRUE_MDP_TRUE", + "QREWRITE_TRUE_ONETREE_TRUE", + "QREWRITE_FALSE_ONETREE_FALSE", + "QREWRITE_TRUE_ONETREE_FALSE", + "QREWRITE_FALSE_ONETREE_TRUE", + "DOC_ID_MISMATCH", + "MDP_DOC_ID_MISMATCH", + "MOVIES_USER_INTERESTS_NONE_AT_SESSION_LEVEL", + "MOVIES_USER_INTERESTS_LOW_AT_SESSION_LEVEL", + "MOVIES_USER_INTERESTS_MEDIUM_AT_SESSION_LEVEL", + "MOVIES_USER_INTERESTS_HIGH_AT_SESSION_LEVEL", + "MOVIES_BOY_SEEDS_NONE_AT_SESSION_LEVEL", + "MOVIES_BOY_SEEDS_LOW_AT_SESSION_LEVEL", + "MOVIES_BOY_SEEDS_MEDIUM_AT_SESSION_LEVEL", + "MOVIES_BOY_SEEDS_HIGH_AT_SESSION_LEVEL", + "LOYALTY_NO_PERSONALIZABLE_CONTENT_CREDIT_ON_TOP", + "LOYALTY_PERSONALIZABLE_CONTENT_CREDIT_ON_BOTTOM", + "PIXER_DUMMY_TEST_CODE", + "RENEWAL_REMINDER_SET_IN_CANCEL_FLOW", + "RENEWAL_REMINDER_CAN_BE_SET_IN_CANCEL_FLOW", + "PLAY_PASS_SIGNUP_INTERSTITIAL_ELIGIBLE_SESSION_LEVEL", + "PLAY_PASS_SIGNUP_INTERSTITIAL_TARGETED_SESSION_LEVEL", + "PLAY_PASS_IPD_ELIGIBLE_SESSION_LEVEL", + "PLAY_PASS_FHR_ELIGIBLE_SESSION_LEVEL", + "DOUBLE_WIDE_SCREENSHOT_CLUSTER_TRIGGERING_AT_SESSION_LEVEL", + "TRIPLE_WIDE_VIDEO_CLUSTER_TRIGGERING_AT_SESSION_LEVEL", + "WIDE_MEDIA_CLUSTER_TRIGGERING_AT_SESSION_LEVEL", + "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS", + "RENEWAL_REMINDER_ELIGIBLE_EXPERIMENT_NOT_ENABLED", + "SMART_FOP_SESSION_LEVEL_AT_SESSION_LEVEL", + "SMART_FOP_AT_SESSION_LEVEL", + "MOVIES_USER_FREE_AT_SESSION_LEVEL", + "MOVIES_USER_FAMILY_AT_SESSION_LEVEL", + "MOVIES_USER_RENTER_AT_SESSION_LEVEL", + "MOVIES_USER_BUYER_AT_SESSION_LEVEL", + "HAS_NON_RELOADABLE_PREPAID_CARD_AT_SESSION_LEVEL", + "BILLING_PROFILE_DCB_ELIGIBLE", + "BILLING_PROFILE_GC_ELIGIBLE", + "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS_AT_SESSION_LEVEL", + "LOYALTY_SHOULD_SEE_UPSELL_AT_SESSION_LEVEL", + "LOYALTY_UPSELL_AFTER_IN_APP_PURCHASE_AT_SESSION_LEVEL", + "REDEEM_WITH_SUBSCRIBE_AND_INSTALL", + "SHOULD_SEE_APPS_COMPARISON_CLUSTER", + "IS_APPS_COMPARISON_VISIBLE", + "RESIGNUP_FROM_SUBS_CENTER", + "VX_CLUSTER_IN_APPS_SERP_IMPRESSION_SESSIONS", + "PARTNER_REWARD_ON_LOYALTY_SIGNUP_PAGE", + "UGC_CLUSTER_AT_SESSION_LEVEL", + "UGC_LANDING_PAGE_AT_SESSION_LEVEL", + "REGIONAL_TRENDING_CLUSTER", + "MONETIZABLE_FOP_OPTIONS_AVAILABLE", + "MONETIZABLE_FOP_OPTIONS_RECOMMENDED", + "ORIGINAL_ML_FOP_OPTIONS_AVAILABLE", + "ANON_ML_FOP_OPTIONS_AVAILABLE", + "ORIGINAL_ML_FOP_OPTIONS_RECOMMENDED", + "USABLE_ORIGINAL_ML_FOP_OPTIONS_FOUND", + "USABLE_ANON_ML_FOP_OPTIONS_FOUND", + "ANON_ML_FOP_OPTIONS_RECOMMENDED", + "NEW_ABUSE_MODEL_AT_SESSION_LEVEL", + "RENT_BUTTON_CLICK", + "BUY_BUTTON_CLICK", + "TVOD_BUTTON_CLICK", + "MULTIQUANTITY_EAP_NCSOFT_SKU1", + "MULTIQUANTITY_EAP_NCSOFT_SKU2", + "MULTIQUANTITY_EAP_NCSOFT_SKU3", + "MULTIQUANTITY_EAP_PACKAGE_GAMANIA", + "MULTIQUANTITY_EAP_PACKAGE_GARENA_FF", + "MULTIQUANTITY_EAP_PACKAGE_GARENA_FF_MAX", + "VX_QREF_TRIGGERED_AT_SESSION_LEVEL_AT_SESSION_LEVEL", + "VX_NAVBOOST_SUPPRESSED_AT_SESSION_LEVEL_AT_SESSION_LEVEL", + "VX_QREF_TRIGGERED_AT_SESSION_LEVEL", + "VX_NAVBOOST_SUPPRESSED_AT_SESSION_LEVEL", + "ABUSE_FOR_BANNER", + "ABUSE_FOR_CART_ABANDON", + "ABUSE_FOR_DETAILS_PAGE", + "ABUSE_FOR_PLAY_OPT_IN_PROMPT", + "MOVIE_BUTTON_CLICK", + "TV_BUTTON_CLICK", + "LOYALTY_SEES_POINTS_EARN_PROMOTIONS_AT_SESSION_LEVEL", + "KIDS_CONTENT_SEEKING_QUERY_SESSION", + "KIDS_CONTENT_SEEKING_QUERY_TREATMENT_APPLIED_SESSION", + "FAMILY_BUTTON_CLICK", + "UGC_CLUSTER_NON_FIRST_PAGE_AT_SESSION_LEVEL", + "UGC_CLUSTER_ELIGIBLE_AT_SESSION_LEVEL", + "LOYALTY_SEES_FREE_TRIAL_SUBSCRIPTION_AT_SESSION_LEVEL", + "MOVIES_FAMILY_USER", + "MAIN_FHR_CCI_TRIGGERING_AT_SESSION_LEVEL", + "BASELIST_FHR_CCI_TRIGGERING_AT_SESSION_LEVEL", + "FIREBALL_LANGUAGE_BUTTON_CLICK", + "QUEST_GET_ADDITIONAL_CHALLENGE_SUCCESS_AT_SESSION_LEVEL", + "BASELIST_FHR_IMPRESSION_CAPPING_AT_SESSION_LEVEL", + "APPS_SEARCH_FILTERS_TRIGGERED", + "APPS_SEARCH_FILTERS_ACTIVATED", + "PLAY_SUBMANAGEMENT_LOG_HOOK_SESSION_EXAMPLE", + "OUT_OF_APP_PURCHASABLE_PRODUCTS_ON_DETAILS_PAGE_PREFETCH_AT_SESSION_LEVEL", + "LOYALTY_SIGNUP_INTERSTITIAL_AT_SESSION_LEVEL", + "LOYALTY_SIGNUP_SUCCESS_AT_SESSION_LEVEL", + "BOOTS_CHIPS_NOT_TRIGGERED", + "MAIN_FHR_IMPRESSION_CAPPING_AT_SESSION_LEVEL", + "BOOTS_CHIPS_NOT_TRIGGERED_COUNTERFACTUAL", + "BOOTS_CHIPS_TRIGGERED_COUNTERFACTUAL", + "APPS_SEARCH_FILTERS_NOT_TRIGGERED", + "IN_APP_ITEM_DUPLICATE_PURCHASE", + "MOVIES_SERIES_CLUSTER", + "FOP_OPTION_OR_EXISTING_INSTRUMENTS_MATCHED_PROMOTION_AT_SESSION_LEVEL", + "FOP_OPTION_MATCHED_PROMOTION_ONLY_AT_SESSION_LEVEL", + "PREFERRED_FOP_AT_SESSION_LEVEL", + "REDEEM_NOT_ENROLLED_TO_LOYALTY_AT_SESSION_LEVEL", + "VIDEO_CLUSTER_EXPANDED", + "LOYALTY_UPSELL_SEEN_AT_SESSION_LEVEL", + "GEARHEAD_TOOLTIP_SETTINGS_NTH_RUN", + "LELOLAND_INSTANT_FOP_V1", + "LOYALTY_ELIGIBLE_TO_SEE_UPSELL_AT_SESSION_LEVEL", + "TRIPLE_WIDE_SCREENSHOT_CLUSTER_TRIGGERING_AT_SESSION_LEVEL", + "ONETREE_MDP_BUT_POST_RESPONSE_NOT_MDP_AT_USER_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_CATEGORITCAL_AT_USER_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_MULTINAV_AT_USER_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_NAVIGATIONAL_AT_USER_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_NAVEXT_AT_USER_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_UNKNOWN_AT_USER_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_UNKNOWN_AT_SESSION_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_NAVEXT_AT_SESSION_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_NAVIGATIONAL_AT_SESSION_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_MULTINAV_AT_SESSION_LEVEL", + "POST_RESPONSE_MDP_BUT_QCM_IS_CATEGORITCAL_AT_SESSION_LEVEL", + "ONETREE_MDP_BUT_POST_RESPONSE_NOT_MDP_AT_SESSION_LEVEL", + "LELOLAND_INSTANT_FOP_V1_1", + "LEGOLAND_INSTANT_FOP_KERAS_V1", + "LEGOLAND_INSTANT_FOP_KERAS_V1_1", + "PROMOTION_P13N_BANNER_IN_HOME_AT_SESSION_LEVEL", + "SHOULD_SEE_POINTS_BALANCE_ON_HOME_TOOLBAR_AT_SESSION_LEVEL", + "BOOKS_HAS_USER_FEEDBACK", + "BOOKS_USER_FEEDBACK_ADVANCED", + "LOYALTY_LIVE_OPS_RETURNED_AT_SESSION_LEVEL", + "LOCALIZED_PRICING_EAP_EA_NFS", + "LOCALIZED_PRICING_EAP_EA_RR3", + "PURCHASE_FLOW_ENTRY_PROMOTION_AT_SESSION_LEVEL", + "PURCHASE_FLOW_ENTRY_PROMOTION_ELIGIBLE_AT_SESSION_LEVEL", + "PLAY_POINTS_HOME_AT_SESSION_LEVEL", + "UGC_VIDEO_CLIENT", + "APPS_DETAILS_PAGE_SIMILAR_APPS", + "SEARCH_MDP_TRIGGERED_SESSION_LEVEL", + "PROMOLINK_CDP_SESSION_LEVEL", + "PROMOLINK_CDP_TITLE_PAGE_SESSION_LEVEL", + "PROMOLINK_CDP_TOPIC_PAGE_SESSION_LEVEL", + "PROMOLINK_CDP_GENERIC_PAGE_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_1_AT_SESSION_LEVEL", + "WMC_INSTANT_PREVIEW_CLUSTER_AT_SESSION_LEVEL", + "POINTS_PROMOTION_CONTENT_HOME_AT_SESSION_LEVEL", + "POINTS_PROMOTION_CONTENT_PAGE_AT_SESSION_LEVEL", + "SEARCH_SYN_APPS_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_2_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_3_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_4_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_5_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_6_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_7_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_8_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_9_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_10_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_11_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_12_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_13_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_14_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_15_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_16_AT_SESSION_LEVEL", + "IN_APP_MESSAGING_APP_17_AT_SESSION_LEVEL", + "IN_APP_OFFER_AT_SESSION_LEVEL", + "IN_APP_OFFER_APP_1_AT_SESSION_LEVEL", + "IN_APP_OFFER_APP_2_AT_SESSION_LEVEL", + "IN_APP_OFFER_APP_3_AT_SESSION_LEVEL", + "IN_APP_OFFER_APP_4_AT_SESSION_LEVEL", + "IN_APP_OFFER_ELIGIBLE_AT_SESSION_LEVEL", + "IN_APP_OFFER_ELIGIBLE_APP_1_AT_SESSION_LEVEL", + "IN_APP_OFFER_ELIGIBLE_APP_2_AT_SESSION_LEVEL", + "IN_APP_OFFER_ELIGIBLE_APP_3_AT_SESSION_LEVEL", + "IN_APP_OFFER_ELIGIBLE_APP_4_AT_SESSION_LEVEL", + "IN_APP_OFFER_SAVED_AT_SESSION_LEVEL", + "IN_APP_OFFER_SAVED_APP_1_AT_SESSION_LEVEL", + "IN_APP_OFFER_SAVED_APP_2_AT_SESSION_LEVEL", + "IN_APP_OFFER_SAVED_APP_3_AT_SESSION_LEVEL", + "IN_APP_OFFER_SAVED_APP_4_AT_SESSION_LEVEL", + "QUICK_BUY_AT_SESSION_LEVEL", + "DEVELOPER_PAGE_AT_SESSION_LEVEL", + "GAMES_SUBNAV_SHUFFLE_APPLIED", + "APPS_SUBNAV_SHUFFLE_APPLIED", + "BOOKS_FREE_FIXED_DURATION_RENTAL_SESSION_LEVEL", + "BOOKS_FREE_FIXED_DATE_RENTAL_SESSION_LEVEL", + "PAYMENTS_DELAYED_CHARGING_AT_SESSION_LEVEL", + "QUICK_BUY_ELIGIBLE_AT_SESSION_LEVEL", + "BOOKS_PRICE_DROP_SESSION_LEVEL", + "LEGOLAND_FOP_COVERSION_V1", + "LEGOLAND_FOP_COVERSION_V1_1", + "LIVE_OP_EVAL_QUALITY_FILTERING", + "TG_VALIDATED_CRISPR_TAG_AT_SESSION_LEVEL", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_0", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_1", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_2", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_3", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_4", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_5", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_6", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_7", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_8", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_9", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_10", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_11", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_12", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_13", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_14", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_15", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_16", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_17", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_18", + "LEGOLAND_ADD_FOP_SERVING_CANDIDATE_19", + "NON_EMPTY_HOME_STREAM_LIVE_OPS_CLUSTER_SERVED", + "SHOULD_SEE_LIVE_OPS_CARD_IN_SEARCH_MDP", + "FIRST_PARTY_PROMOTION_LIVE_OP_SESSION_LEVEL", + "CART_ABANDONMENT_SUBSCRIPTION_ONE_TIME_PASS_SESSION_LEVEL", + "LEGOLAND_INSTANT_FOP_SCREEN_SESSION_LEVEL", + "LEGOLAND_INSTANT_FOP_SCREEN_WITH_PROMOTION_SESSION_LEVEL", + "MY_REVIEWS_PAGE_VISIT_USER_LEVEL", + "SERIES_BUNDLE_MULTI_TIER_DISCOUNT_SESSION_LEVEL", + "DEVELOPER_PROMOTIONS_ELIGIBLE_SESSION_LEVEL", + "GOOGLE_PROMOTIONS_ELIGIBLE_SESSION_LEVEL", + "USER_TRIGGERED_IAP_PROMOTION_RETRIEVAL_SESSION_LEVEL", + "IAP_HAS_UNREDEEMED_PROMOTIONS_CLIENT_SESSION_LEVEL", + "SUBSCRIPTION_UPDATE_FOP_FOR_DCB_AS_PRIMARY_SIGNUP_SESSION_LEVEL", + "SUBSCRIPTION_UPDATE_FOP_FOR_DCB_AS_PRIMARY_SUB_CENTER_SESSION_LEVEL", + "RENEW_TASK_DELAYED_SUBSCRIPTION_TARGETED", + "RENEW_TASK_DELAYED_SUBSCRIPTION_NOT_TARGETED", + "PRE_AUTH_TASK_DELAYED_SUBSCRIPTION_TARGETED", + "PRE_AUTH_TASK_DELAYED_SUBSCRIPTION_NOT_TARGETED", + "REDEEM_REDIRECT_CHALLENGE_AT_SESSION_LEVEL", + "PLAY_STORE_IAP_SALES", + "PLAY_STORE_IAP_SALES_APP_1", + "PLAY_STORE_IAP_SALES_APP_2", + "PLAY_STORE_IAP_SALES_APP_3", + "PLAY_STORE_IAP_SALES_APP_4", + "PLAY_STORE_IAP_SALES_APP_5", + "PLAY_STORE_IAP_SALES_APP_6", + "PLAY_STORE_IAP_SALES_APP_7", + "PLAY_STORE_IAP_SALES_APP_8", + "PLAY_STORE_IAP_SALES_APP_9", + "PLAY_STORE_IAP_SALES_APP_10", + "PLAY_STORE_IAP_SALES_APP_11", + "PLAY_STORE_IAP_SALES_APP_12", + "PLAY_STORE_IAP_SALES_APP_13", + "PLAY_STORE_IAP_SALES_MINI_DETAILS_PAGE", + "CROSS_DEVICE_INSTALL_OPTIONS_FETCHED_IN_SESSION", + "CROSS_DEVICE_INSTALL_OPTIONS_ITEM_FIELDS_TRIGGERED", + "PAIRED_DEVICE_COMPATIBILITY_CHECKED_IN_SESSION", + "OTHER_DEVICES_SUBNAV_RETURNED_IN_SESSION", + "G1_PLAY_PASS_BUNDLE_ELIGIBLE_IN_PLAY_STORE_SESSION_LEVEL", + "G1_PLAY_PASS_BUNDLE_ELIGIBLE_IN_PLAY_STORE_COMBINED_CHANNEL_SESSION_LEVEL", + "PLAY_PASS_BUNDLE_ELIGIBLE_SHOWN_PLAY_STORE_PROMOTION_PLAY_ARM_SESSION_LEVEL", + "PLAY_PASS_BUNDLE_ELIGIBLE_SHOWN_PLAY_STORE_PROMOTION_COMBINED_ARM_SESSION_LEVEL", + "GEARHEAD_FRX_SENSITIVE_PERMISSION_SCREEN_SEEN", + "POST_PURCHASE_ITEM_UPSELL_SESSION_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_1_SESSION_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_2_SESSION_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_3_SESSION_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_4_SESSION_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_5_SESSION_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_6_SESSION_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_7_SESSION_LEVEL", + "PLAY_PASS_SIGNUP_INTERSTITIAL_SHOWN_SESSION_LEVEL", + "FETCH_PROMOTION_BANNER_FROM_P3_SESSION_LEVEL", + "AVP_SWOOP_10P_OFF_SESSION_LEVEL", + "AVP_SWOOP_25P_OFF_SESSION_LEVEL", + "AVP_SWOOP_50P_OFF_SESSION_LEVEL", + "AVP_SWOOP_75P_OFF_SESSION_LEVEL", + "CLUSTER_TRIGGER_CONDITION_IS_PARENT", + "CDP_ENABLE_PREFETCH_SESSION_LEVEL", + "P13N_INTERSTITIAL_SESSION_LEVEL", + "GEARHEAD_SKIP_LEGACY_FRX_FOR_CAKEWALK", + "FEATURED_SUBSCRIPTIONS_PRESENT", + "SHOULD_NOT_SEE_HOME_LIVE_OPS_CLUSTER", + "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_K1_2", + "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_K1", + "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_K2", + "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_K3_4", + "SHOULD_SEE_HOME_LIVE_OPS_CLUSTER_GTE_K5", + "SHOULD_NOT_SEE_HOME_OFFER_CLUSTER", + "SHOULD_SEE_HOME_OFFER_CLUSTER_K1", + "SHOULD_SEE_HOME_OFFER_CLUSTER_K2", + "SHOULD_SEE_HOME_OFFER_CLUSTER_K3_4", + "SHOULD_SEE_HOME_OFFER_CLUSTER_GTE_K5", + "SHOULD_NOT_SEE_DEALS_HOME_OFFER", + "SHOULD_SEE_DEALS_HOME_OFFER_K1", + "SHOULD_SEE_DEALS_HOME_OFFER_K2", + "SHOULD_SEE_DEALS_HOME_OFFER_K3_4", + "SHOULD_SEE_DEALS_HOME_OFFER_GTE_K5", + "SHOULD_SEE_DEALS_HOME_GAME_K1", + "SHOULD_SEE_DEALS_HOME_GAME_K2", + "SHOULD_SEE_DEALS_HOME_GAME_K3", + "SHOULD_SEE_DEALS_HOME_GAME_K4", + "SHOULD_SEE_DEALS_HOME_GAME_GTE_K5", + "SHOULD_SEE_DEALS_HOME_APP_K1", + "SHOULD_SEE_DEALS_HOME_APP_K2", + "SHOULD_SEE_DEALS_HOME_APP_K3", + "SHOULD_SEE_DEALS_HOME_APP_K4", + "SHOULD_SEE_DEALS_HOME_APP_GTE_K5", + "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_K1", + "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_K2", + "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_K3", + "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_K4", + "SHOULD_SEE_DEALS_HOME_EVER_INSTALL_GTE_K5", + "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_K1", + "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_K2", + "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_K3", + "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_K4", + "SHOULD_SEE_DEALS_HOME_NEVER_INSTALL_GTE_K5", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_SESSION_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_PREVIEW_BATCH_SESSION_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_SKU_DETAILS_SESSION_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_PREVIEW_BATCH_SKU_DETAILS_SESSION_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_FOR_ALL_SUBS_SESSION_LEVEL", + "SHOULD_SEE_DYNAMIC_HOME_CONTAINER", + "FROM_GAME_PROFILE_ID_ALLOWLIST", + "LEON_LIVEOPS_DEAL_STATE_SYNC_SESSION_LEVEL", + "SURVEY_AHC_AT_SESSION_LEVEL", + "PLAY_PASS_CART_MAREKTING_BANNER_ELIGIBLE_SESSION_LEVEL", + "PLAY_PASS_CART_MAREKTING_BANNER_ELIGIBLE_AND_SHOWN_CART_SESSION_LEVEL", + "PLAY_PASS_PERKS_VOUCHER_IN_CART_SESSION_LEVEL", + "PLAY_SEARCH_MDP_TRIGGERING", + "PLAY_SEARCH_NON_MDP_TRIGGERING", + "PRICE_TRANSPARENCY_IS_OFFER_PERSONALIZED_SESSION_LEVEL", + "GEARHEAD_SKIP_LEGACY_FRX_FOR_CAKEWALK_USB_CANDIDATE", + "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_SESSION_LEVEL", + "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_2_SESSION_LEVEL", + "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_3_SESSION_LEVEL", + "PLAY_PASS_PARENT_FOCUSED_SPLASH_PAGE_SESSION_LEVEL", + "PLAY_PASS_SPLASH_PAGE_FOR_PARENT_SESSION_LEVEL", + "PLAY_PASS_SPLASH_PAGE_FOR_UNICORN_SESSION_LEVEL", + "REVIEW_SUBMITTED_SESSION_LEVEL", + "PLAY_SEARCH_GENERAL_QUERY_PAGINATION_SESSION_LEVEL", + "IN_CART_EXCHANGE_OPTIONS_ELIGIBLE_SESSION_LEVEL", + "PLAY_SEARCH_MULTINAV_PAGINATION_SESSION_LEVEL", + "REGIONAL_NAV_EXT_SESSION_LEVEL", + "SUPPORT_SUBSCRIPTIONS_IN_FEATURED_SKU_SESSION_LEVEL", + "IAP_SKU_DEALS_LIVE_OP_DEALS_HOME_SESSION_LEVEL", + "IAP_SKU_DEALS_LIVE_OP_GAMES_HOME_SESSION_LEVEL", + "FEATURING_AHC_OR_FHR_TRIGGERED_SESSION_LEVEL", + "STARTERKIT_CLUSTERS_ELIGIBLE_SESSION_LEVEL", + "ALLOWLIST_EXPANSION_FOR_P13N_INTERSTITIAL_SESSION_LEVEL", + "NOVEL_TOPIC_CLUSTER_ELIGIBLE_SESSION_LEVEL", + "NOVEL_TOPIC_CLUSTER_IMPRESSED_AT_SESSION_LEVEL", + "ALLOWLIST_EXPANSION_FOR_P13N_LIVEOPS_SESSION_LEVEL", + "SURVEY_RECS_LIST_AT_SESSION_LEVEL", + "GEARHEAD_FRX_RUNNING_CW175_IN_GH", + "RANDOM_SHUFFLE_CLUSTERS_ON_TARGET_USERS_SESSION_LEVEL", + "RANDOM_SHUFFLE_CLUSTERS_AND_APPS_ON_TARGET_USERS_SESSION_LEVEL", + "ALLOWLIST_EXPANSION_FOR_P13N_NOTIFICATIONS_SESSION_LEVEL", + "FRESH_RESULTS_SEEKING_SEARCH_QUERY_SESSION_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_1_SESSION_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_2_SESSION_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_3_SESSION_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_4_SESSION_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_5_SESSION_LEVEL", + "GOOGLE_FUNDED_BUNDLE_DISCOUNT_BUCKET_6_SESSION_LEVEL", + "TRUSTED_GENOME_RELATED_QUERY_CLUSTER_SESSION", + "NAV_TG_RELATED_QUERY_SESSION", + "PROMOTABLE_APPS_SESSION", + "GROWTH_COFFEE_CARD_IN_PURCHASE_FLOW_SESSION_LEVEL", + "LIVE_OPS_ROI_HOLDBACK", + "TRUSTED_GENOME_OR_BROAD_INTENT_CATEGORICAL_QUERY_CLUSTER_SESSION", + "CLUSTER_REQUEST_LATENCY_SESSION_LEVEL", + "EDITORS_CHOICE_CLUSTER_SERP_SESSION_LEVEL", + "BESTK_CLUSTER_SERP_SESSION_LEVEL", + "WIDE_MEDIA_CLUSTER_INVALID_VIDEO_ASSET_SESSION_LEVEL", + "ALTERNATE_DEVICE_PRESENT_SESSION_LEVEL", + "MULTIPLE_ALTERNATE_DEVICES_PER_FORM_FACTOR_SESSION_LEVEL", + "APPS_SEARCH_DISCOVERY_CLUSTER_TRIGGERED_SESSION_LEVEL", + "SUGGEST_CROSS_FORM_FACTOR_APPS_WEAR_SUGGESTIONS_ENABLED", + "SUGGEST_CROSS_FORM_FACTOR_APPS_WEAR_SUGGESTIONS_AVAILABLE", + "SUGGEST_APPS_SUBTEXT_SUGGESTIONS_SESSION_LEVEL", + "INLINE_DETAILS_TQUALITY_CHECK_PASS_SESSION_LEVEL", + "INLINE_DETAILS_TQUALITY_CHECK_FAIL_SESSION_LEVEL", + "INLINE_DETAILS_AQUALITY_CHECK_PASS_SESSION_LEVEL", + "INLINE_DETAILS_AQUALITY_CHECK_FAIL_SESSION_LEVEL", + "INLINE_DETAILS_IS_INLINE_URL_SESSION_LEVEL", + "SENT_EMAIL_ENTER_GRACE_PERIOD_SESSION_LEVEL", + "SENT_EMAIL_ENTER_SUSPENDED_PERIOD_SESSION_LEVEL", + "ANALYTICS_AD_LINKING_RECOMMENDATION_ELIGIBLE_SESSION_LEVEL", + "ANALYTICS_MERCHANT_UPSELL_ELIGIBLE_SESSION_LEVEL", + "ANALYTICS_PREDICTIVE_INSIGHT_ELIGIBLE_SESSION_LEVEL", + "ANALYTICS_CONSENT_MODE_INSIGHT_ELIGIBLE_SESSION_LEVEL", + "ANALYTICS_DIVERSITY_30D_ELIGIBLE_SESSION_LEVEL", + "ANALYTICS_DIVERSITY_60D_ELIGIBLE_SESSION_LEVEL", + "ANALYTICS_ADS_UPSELL_ELIGIBLE_SESSION_LEVEL", + "ANALYTICS_DOWNLOAD_MOBILE_APP_ELIGIBLE_SESSION_LEVEL", + "EDITORIAL_FCC_AT_SESSION_LEVEL", + "FRESH_RESULTS_SEEKING_CURRENT_YEAR_SESSION_LEVEL", + "FILTER_TQ_FAILURE_APP_SESSION_LEVEL", + "EDITORIAL_CONTENT_CLUSTER_FHR_SERP_SESSION_LEVEL", + "CONNECTED_WITH_WIFI", + "CONNECTED_WITH_DATA", + "AUTOPLAY_VIDEOS_AT_ANY_TIME", + "AUTOPLAY_VIDEOS_OVER_WIFI_ONLY", + "AUTOPLAY_VIDEOS_NEVER", + "HAS_DECLINE_REASON_IN_PAYMENT_DECLINE_EMAIL_SESSION_LEVEL", + "QUEST_CONTENT_CARD_IN_DEALS_HOME_SESSION_LEVEL", + "DETAILS_PAGE_TQUALITY_UNKNOWN_SESSION_LEVEL", + "DETAILS_PAGE_TQUALITY_FAILED_SESSION_LEVEL", + "DETAILS_PAGE_TQUALITY_PASSED_SESSION_LEVEL", + "DETAILS_PAGE_AQUALITY_UNKNOWN_SESSION_LEVEL", + "DETAILS_PAGE_AQUALITY_FAILED_SESSION_LEVEL", + "DETAILS_PAGE_AQUALITY_PASSED_SESSION_LEVEL", + "QUERY_DEPENDENT_SNIPPET_SESSION_LEVEL", + "FOP_STEERING_PROMOTION_INITIAL_BILLING_PROFILE_SESSION_LEVEL", + "FOP_STEERING_PROMOTION_CART_ADD_FOP_SESSION_LEVEL", + "FOP_STEERING_PROMOTION_CART_CHANGE_FOP_SESSION_LEVEL", + "PTP_CLUSTER_SERP_P13N_RANKING_SESSION_LEVEL", + "QUERY_DEPENDENT_SNIPPET_FRONT_END_SESSION_LEVEL", + "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_SESSION_LEVEL", + "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_SESSION_LEVEL_V2", + "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITH_EXISTING_FOP_SESSION_LEVEL", + "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITHOUT_EXISTING_FOP_SESSION_LEVEL", + "MDP_WITHOUT_QUALITY_SESSION_LEVEL", + "MDP_WITH_HIGH_QUALITY_SESSION_LEVEL", + "MDP_WITH_MEDIUM_QUALITY_SESSION_LEVEL", + "MDP_WITH_LOW_QUALITY_SESSION_LEVEL", + "MDP_TRIGGERED_AND_GAME_SEEKING_SESSION_LEVEL", + "PLAY_SEARCH_GENERAL_QUERY_MDP_PAGINATION_WITH_GAME_SEEKING_RYF_CLUSTER_SESSION_LEVEL", + "PLAY_SEARCH_GENERAL_QUERY_NON_MDP_PAGINATION_WITH_GAME_SEEKING_RYF_CLUSTER_SESSION_LEVEL", + "BUY_BUTTON_WITH_AUTHENTICATION_DISABLED", + "SEND_PAYMENT_DECLINE_EMAIL_SESSION_LEVEL", + "PSS_GENERAL_PAGINATION_SESSION_LEVEL", + "PSS_GENERAL_PAGINATION_GAME_SEEKING_SESSION_LEVEL", + "SESSION_LEVEL_TEST_CODE_LIMIT", + "SHOULD_SEE_LIVE_OP_CLUSTER_USER_LEVEL", + "CART_ABANDONMENT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_USER_LEVEL", + "CART_ABANDONMENT_SUB_DOLLAR_USER_LEVEL", + "CART_ABANDONMENT_V2_EXP1_USER_LEVEL", + "IN_APP_PRODUCTS_IN_DETAILS_PAGE_USER_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_USER_LEVEL", + "BOOKS_DETAILS_PAGE_PROMOTION_USER_LEVEL", + "CART_ABANDONMENT_BOOK_NEVER_USER_LEVEL", + "CART_ABANDONMENT_BOOK_VX_NEVER_USER_LEVEL", + "CART_ABANDONMENT_MOVIE_NEVER_USER_LEVEL", + "CART_ABANDONMENT_MOVIE_VX_NEVER_USER_LEVEL", + "QUICK_FIX_EXPIRED_CREDIT_CARD_USER_LEVEL", + "DETAILS_PAGE_PROMOTION_USER_LEVEL", + "BURNSIE_ADD_FOP_PROMOTION_USER_LEVEL", + "CART_ABANDONMENT_HIGH_CART_USER_LEVEL", + "WELLNET_CASH_USER_LEVEL", + "BURNSIE_FOR_EXPIRED_CARDS_USER_LEVEL", + "APPS_DETAILS_PAGE_EXISTING_PROMOTION_USER_LEVEL", + "BOOKS_DETAILS_PAGE_EXISTING_PROMOTION_USER_LEVEL", + "SWOOP_CAMPAIGN_10P_OFF_USER_LEVEL", + "SWOOP_CAMPAIGN_25P_OFF_USER_LEVEL", + "SWOOP_CAMPAIGN_50P_OFF_USER_LEVEL", + "SWOOP_CAMPAIGN_75P_OFF_USER_LEVEL", + "SWOOP_CAMPAIGN_90P_OFF_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_WAVE_2_USER_LEVEL", + "SUBSCRIBE_AND_INSTALL_AVAILABLE_CLIENT_USER_LEVEL", + "CART_ABANDONMENT_ELIGIBLE_USER_LEVEL", + "ACQUIRE_REQUEST_EXISTING_SESSION_WITHOUT_ACTION_TOKENS", + "APPS_DETAILS_PAGE_PROMOTION_EXP_2_USER_LEVEL", + "APPS_DETAILS_PAGE_EXISTING_PROMOTION_EXP_2_USER_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_2_IN_APP_ITEM_NEVERS_USER_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_2_IN_APP_ITEM_BUYERS_USER_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_2_PREMIUM_APP_NEVERS_USER_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_3_PREMIUM_APP_NEVERS_USER_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_3_IN_APP_ITEM_BUYERS_USER_LEVEL", + "APPS_PERSONALIZED_TOPIC_QUERY_USER_LEVEL", + "APPS_PERSONALIZED_ALL_GAME_QUERIES_USER_LEVEL", + "APPS_PERSONALIZED_CATEGORICAL_GAME_SEEKING_QUERIES_USER_LEVEL", + "SUBSCRIPTION_CANCELLATION_PROMOTION_USER_LEVEL", + "SUBSCRIPTION_UPDATE_FOP_FOR_DCB_AS_PRIMARY_SIGNUP_USER_LEVEL", + "SUBSCRIPTION_UPDATE_FOP_FOR_DCB_AS_PRIMARY_USER_LEVEL", + "SUBSCRIPTION_RETRY_FOP_FOR_DCB_AS_PRIMARY_USER_LEVEL", + "SUBSCRIPTION_DCB_AS_DEFAULT_FOP_WITH_BETTER_FOPS_USER_LEVEL", + "SUBSCRIPTION_DCB_AS_ADD_FOP_OPTION_USER_LEVEL", + "LOYALTY_HOME_FIRST_TAB_USER_LEVEL", + "LOYALTY_HOME_SECOND_TAB_USER_LEVEL", + "LOYALTY_HOME_THIRD_TAB_USER_LEVEL", + "CART_ABANDONMENT_RETAIL_EXCELLENCE_TEXT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_1_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_2_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_3_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_4_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_5_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_6_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_7_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_8_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_9_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_10_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_11_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_12_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_13_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_14_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_15_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_16_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_17_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_18_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_19_AT_USER_LEVEL", + "PURCHASABLE_SUBSCRIPTIONS_IN_DETAILS_PAGE_APP_20_AT_USER_LEVEL", + "GLUE_SCORE_INTEGRATION_DETAILS_PAGE_USER_LEVEL", + "DETAILS_PAGE_PROMOTION_HOLDBACK_USER_LEVEL", + "RECS_STALENESS_DEMOTION_1_USER_LEVEL", + "RECS_STALENESS_DEMOTION_2_USER_LEVEL", + "RECS_STALENESS_DEMOTION_3_USER_LEVEL", + "RECS_STALENESS_DEMOTION_4_USER_LEVEL", + "RECS_STALENESS_DEMOTION_5_USER_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_1_USER_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_2_USER_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_3_USER_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_4_USER_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_5_USER_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_6_USER_LEVEL", + "RECS_ANIMA_FEATURES_GH_RANKING_7_USER_LEVEL", + "TEST_FOR_LEVELS_FLAG_AT_USER_LEVEL", + "USER_LB_TARGETED", + "LB_ABOVE_AT_USER_LEVEL", + "LB_BELOW_AT_USER_LEVEL", + "LB_TARGETED_AT_USER_LEVEL", + "LB_PAGINATED_AT_USER_LEVEL", + "LB_IMPRESSED_AT_USER_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_4_NEVERS_USER_LEVEL", + "APPS_DETAILS_PAGE_PROMOTION_EXP_5_NEVERS_USER_LEVEL", + "RECS_STALENESS_DEMOTION_6_AT_USER_LEVEL", + "RECS_STALENESS_DEMOTION_7_AT_USER_LEVEL", + "RECS_STALENESS_DEMOTION_8_AT_USER_LEVEL", + "MOVIES_USER_INTERESTS_NONE_AT_USER_LEVEL", + "MOVIES_USER_INTERESTS_LOW_AT_USER_LEVEL", + "MOVIES_USER_INTERESTS_MEDIUM_AT_USER_LEVEL", + "MOVIES_USER_INTERESTS_HIGH_AT_USER_LEVEL", + "MOVIES_BOY_SEEDS_NONE_AT_USER_LEVEL", + "MOVIES_BOY_SEEDS_LOW_AT_USER_LEVEL", + "MOVIES_BOY_SEEDS_MEDIUM_AT_USER_LEVEL", + "MOVIES_BOY_SEEDS_HIGH_AT_USER_LEVEL", + "PLAY_PASS_SIGNUP_INTERSTITIAL_ELIGIBLE_USER_LEVEL", + "PLAY_PASS_SIGNUP_INTERSTITIAL_TARGETED_USER_LEVEL", + "PLAY_PASS_IPD_ELIGIBLE_USER_LEVEL", + "PLAY_PASS_FHR_ELIGIBLE_USER_LEVEL", + "MOVIES_USER_FREE_AT_USER_LEVEL", + "MOVIES_USER_FAMILY_AT_USER_LEVEL", + "MOVIES_USER_RENTER_AT_USER_LEVEL", + "MOVIES_USER_BUYER_AT_USER_LEVEL", + "HAS_NON_RELOADABLE_PREPAID_CARD_AT_USER_LEVEL", + "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS_USER_LEVEL", + "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS_SESSION_LEVEL", + "LOYALTY_CALLED_GET_POINTS_SPEND_PROMOTIONS_AT_USER_LEVEL", + "LOYALTY_SHOULD_SEE_UPSELL_AT_USER_LEVEL", + "LOYALTY_UPSELL_AFTER_IN_APP_PURCHASE_AT_USER_LEVEL", + "IN_APP_MESSAGING_USER_LEVEL", + "RESIGNUP_FROM_SUBS_CENTER_USER", + "PROMOTION_BANNER_ELIGIBLE_USER_LEVEL", + "NEW_ABUSE_MODEL_AT_USER_LEVEL", + "LOYALTY_RECEIPT_UPSELL_SENT_WITH_ICON_AT_USER_LEVEL", + "LOYALTY_RECEIPT_UPSELL_SENT_WITH_GIF_AT_USER_LEVEL", + "LOYALTY_RECEIPT_UPSELL_SENT_AT_USER_LEVEL", + "VX_QREF_TRIGGERED_AT_USER_LEVEL_AT_USER_LEVEL", + "LOYALTY_SEES_POINTS_EARN_PROMOTIONS_AT_USER_LEVEL", + "LOYALTY_SEES_FREE_TRIAL_SUBSCRIPTION_AT_USER_LEVEL", + "QUEST_GET_ADDITIONAL_CHALLENGE_SUCCESS_AT_USER_LEVEL", + "OUT_OF_APP_PURCHASABLE_PRODUCTS_ON_DETAILS_PAGE_PREFETCH_AT_USER_LEVEL", + "LOYALTY_SIGNUP_INTERSTITIAL_AT_USER_LEVEL", + "LOYALTY_SIGNUP_SUCCESS_AT_USER_LEVEL", + "PLAY_SUBMANAGEMENT_LOG_HOOK_USER_EXAMPLE", + "FOP_OPTION_OR_EXISTING_INSTRUMENTS_MATCHED_PROMOTION_AT_USER_LEVEL", + "FOP_OPTION_MATCHED_PROMOTION_ONLY_AT_USER_LEVEL", + "PROMOTION_P13N_BANNER_ELIGIBLE_AT_USER_LEVEL", + "NEW_USER_FOP_PROMOTION_SEEN", + "LOYALTY_UPSELL_SEEN_AT_USER_LEVEL", + "PROMOTION_OMNICHANNEL_ELIGIBLE_AT_USER_LEVEL", + "LOYALTY_ELIGIBLE_TO_SEE_UPSELL_AT_USER_LEVEL", + "LOYALTY_ELIGIBLE_TO_SEE_UPSELL_WITH_3_DAY_GUARDRAIL_AT_USER_LEVEL", + "LOYALTY_ELIGIBLE_TO_SEE_UPSELL_WITH_7_DAY_GUARDRAIL_AT_USER_LEVEL", + "PROMOTION_P13N_BANNER_IN_HOME_AT_USER_LEVEL", + "SHOULD_SEE_POINTS_BALANCE_ON_HOME_TOOLBAR_AT_USER_LEVEL", + "LOYALTY_LIVE_OPS_RETURNED_AT_USER_LEVEL", + "PURCHASE_FLOW_ENTRY_PROMOTION_AT_USER_LEVEL", + "PURCHASE_FLOW_ENTRY_PROMOTION_ELIGIBLE_AT_USER_LEVEL", + "PLAY_POINTS_HOME_AT_USER_LEVEL", + "PROMOLINK_CDP_USER_LEVEL", + "PROMOLINK_CDP_TITLE_PAGE_USER_LEVEL", + "PROMOLINK_CDP_TOPIC_PAGE_USER_LEVEL", + "PROMOLINK_CDP_GENERIC_PAGE_USER_LEVEL", + "IN_APP_MESSAGING_APP_1_AT_USER_LEVEL", + "POINTS_PROMOTION_CONTENT_HOME_AT_USER_LEVEL", + "POINTS_PROMOTION_CONTENT_PAGE_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_2_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_3_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_4_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_5_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_6_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_7_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_8_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_9_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_10_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_11_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_12_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_13_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_14_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_15_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_16_AT_USER_LEVEL", + "IN_APP_MESSAGING_APP_17_AT_USER_LEVEL", + "IN_APP_OFFER_AT_USER_LEVEL", + "IN_APP_OFFER_APP_1_AT_USER_LEVEL", + "IN_APP_OFFER_APP_2_AT_USER_LEVEL", + "IN_APP_OFFER_APP_3_AT_USER_LEVEL", + "IN_APP_OFFER_APP_4_AT_USER_LEVEL", + "IN_APP_OFFER_ELIGIBLE_AT_USER_LEVEL", + "IN_APP_OFFER_ELIGIBLE_APP_1_AT_USER_LEVEL", + "IN_APP_OFFER_ELIGIBLE_APP_2_AT_USER_LEVEL", + "IN_APP_OFFER_ELIGIBLE_APP_3_AT_USER_LEVEL", + "IN_APP_OFFER_ELIGIBLE_APP_4_AT_USER_LEVEL", + "IN_APP_OFFER_SAVED_AT_USER_LEVEL", + "IN_APP_OFFER_SAVED_APP_1_AT_USER_LEVEL", + "IN_APP_OFFER_SAVED_APP_2_AT_USER_LEVEL", + "IN_APP_OFFER_SAVED_APP_3_AT_USER_LEVEL", + "IN_APP_OFFER_SAVED_APP_4_AT_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_TITLE_PAGE_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_TOPIC_PAGE_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_GENERIC_PAGE_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_R2_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_TITLE_PAGE_R2_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_TOPIC_PAGE_R2_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_GENERIC_PAGE_R2_USER_LEVEL", + "FIRST_PARTY_PROMOTION_LIVE_OP_USER_LEVEL", + "FIRST_PARTY_PROMOTION_LIVE_OP_PRE_REDEMPTION_USER_LEVEL", + "FIRST_PARTY_PROMOTION_LIVE_OP_PRE_REDEMPTION_ABOVE_DEV_EVENTS_USER_LEVEL", + "SHOULD_SEE_FIRST_PARTY_PROMO_LIVE_OP_CTA_USER_LEVEL", + "SHOULD_SEE_FIRST_PARTY_PROMO_LIVE_OP_ON_SERP_MDP_USER_LEVEL", + "SHOULD_SEE_FIRST_PARTY_PROMO_LIVE_OP_ON_APP_DETAILS_PAGE_USER_LEVEL", + "CART_ABANDONMENT_SUBSCRIPTION_ONE_TIME_PASS_USER_LEVEL", + "LEGOLAND_INSTANT_FOP_SCREEN_USER_LEVEL", + "LEGOLAND_INSTANT_FOP_SCREEN_WITH_PROMOTION_USER_LEVEL", + "DEVELOPER_PROMOTIONS_ELIGIBLE_USER_LEVEL", + "GOOGLE_PROMOTIONS_ELIGIBLE_USER_LEVEL", + "USER_TRIGGERED_IAP_PROMOTION_RETRIEVAL_USER_LEVEL", + "LOYALTY_IAP_UPSELL_USER_LEVEL", + "IAP_HAS_UNREDEEMED_PROMOTIONS_CLIENT_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_R3_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_TITLE_PAGE_R3_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_TOPIC_PAGE_R3_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_GENERIC_PAGE_R3_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_R4_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_TITLE_PAGE_R4_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_TOPIC_PAGE_R4_USER_LEVEL", + "PROMOLINK_CDP_CLUSTER_GENERIC_PAGE_R4_USER_LEVEL", + "G1_PLAY_PASS_BUNDLE_ELIGIBLE_IN_PLAY_STORE_USER_LEVEL", + "G1_PLAY_PASS_BUNDLE_ELIGIBLE_IN_PLAY_STORE_COMBINED_CHANNEL_USER_LEVEL", + "PLAY_STORE_IAP_SALES_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_1_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_2_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_3_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_4_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_5_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_6_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_7_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_8_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_9_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_10_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_11_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_12_USER_LEVEL", + "PLAY_STORE_IAP_SALES_APP_13_USER_LEVEL", + "PLAY_STORE_IAP_SALES_MINI_DETAILS_PAGE_USER_LEVEL", + "PLAY_PASS_SUBNAV_USER_IN_FAMILY_USER_LEVEL", + "PLAY_GROWTH_BUYER_RETENTION_R1_CLIENT_USER_LEVEL", + "PLAY_GROWTH_BUYER_RETENTION_R1_SERVER_USER_LEVEL", + "PLAY_GROWTH_BUYER_RETENTION_R2_CLIENT_USER_LEVEL", + "PLAY_GROWTH_BUYER_RETENTION_R2_SERVER_USER_LEVEL", + "PLAY_GROWTH_BUYER_RETENTION_R3_CLIENT_USER_LEVEL", + "PLAY_GROWTH_BUYER_RETENTION_R3_SERVER_USER_LEVEL", + "PLAY_GROWTH_BUYER_RETENTION_R4_CLIENT_USER_LEVEL", + "PLAY_GROWTH_BUYER_RETENTION_R4_SERVER_USER_LEVEL", + "PLAY_GROWTH_IS_SCHEDULED", + "PLAY_PASS_BUNDLE_ELIGIBLE_USER_SHOWN_IPD_OR_INTERSTITIAL_USER_LEVEL", + "PLAY_PASS_BUNDLE_ELIGIBLE_SHOWN_PROMOTION_COMBINED_ARM_USER_LEVEL", + "PLAY_PASS_BUNDLE_ELIGIBLE_SHOWN_PROMOTION_PLAY_ARM_USER_LEVEL", + "HYPE_PANEL_USER_LEVEL", + "HYPE_PANEL_NOT_OWNED_USER_LEVEL", + "HYPE_PANEL_OWNED_NOT_INSTALED_USER_LEVEL", + "HYPE_PANEL_INSTALLED_USER_LEVEL", + "GEARHEAD_VISUAL_PREVIEW_UNCHAINED_ELIGIBLE", + "POST_PURCHASE_ITEM_UPSELL_USER_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_1_USER_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_2_USER_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_3_USER_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_4_USER_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_5_USER_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_6_USER_LEVEL", + "POST_PURCHASE_ITEM_UPSELL_APP_7_USER_LEVEL", + "PLAY_PASS_SIGNUP_INTERSTITIAL_SHOWN_USER_LEVEL", + "DISABLE_TOPUP_EXPERIMENT_CONTROL_GROUP_USER_LEVEL", + "DISABLE_TOPUP_EXPERIMENT_TREATMENT_GROUP_USER_LEVEL", + "AVP_SWOOP_CAMPAIGN_10P_OFF_USER_LEVEL", + "AVP_SWOOP_CAMPAIGN_25P_OFF_USER_LEVEL", + "AVP_SWOOP_CAMPAIGN_50P_OFF_USER_LEVEL", + "AVP_SWOOP_CAMPAIGN_75P_OFF_USER_LEVEL", + "CDP_ENABLE_PREFETCH_USER_LEVEL", + "P13N_INTERSTITIAL_USER_LEVEL", + "PLAY_EVENT_SERVICE_LOG_HOOK_USER_EXAMPLE", + "FEATURED_SUBSCRIPTIONS_PRESENT_USER_LEVEL", + "NOTIFICATION_USER_AFFINITY_USER_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_USER_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_PREVIEW_BATCH_USER_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_SKU_DETAILS_USER_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_PREVIEW_BATCH_SKU_DETAILS_USER_LEVEL", + "USE_SUBSCRIPTION_NEW_DOCUMENT_FORMAT_FOR_ALL_SUBS_USER_LEVEL", + "LOYALTY_EARN_TAB_APP_INSTALL_ELIGIBLE_USER_LEVEL", + "LOYALTY_DETAILS_PAGE_APP_INSTALL_ELIGIBLE_USER_LEVEL", + "LEON_LIVEOPS_DEAL_STATE_SYNC_USER_LEVEL", + "SURVEY_AHC_AT_USER_LEVEL", + "CART_ABANDONMENT_CHURN_USER_LEVEL", + "PLAY_PASS_CART_MAREKTING_BANNER_ELIGIBLE_USER_LEVEL", + "PLAY_PASS_CART_MAREKTING_BANNER_ELIGIBLE_AND_SHOWN_CART_USER_LEVEL", + "PLAY_PASS_PERKS_VOUCHER_IN_CART_USER_LEVEL", + "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_USER_LEVEL", + "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_2_USER_LEVEL", + "QUEST_PLATFORM_LIST_QUEST_HOLDBACK_3_USER_LEVEL", + "PSO_ELIGIBLE_PROMOTION_HOLDBACK_USER_LEVEL", + "PSO_ELIGIBLE_PROMOTION_USER_LEVEL", + "PLAY_PASS_PARENT_FOCUSED_SPLASH_PAGE_USER_LEVEL", + "PLAY_PASS_SPLASH_PAGE_FOR_PARENT_USER_LEVEL", + "PLAY_PASS_SPLASH_PAGE_FOR_UNICORN_USER_LEVEL", + "OMNICHANNEL_P13N_CANDIDATES_FOR_LIVEOPS_USER_LEVEL", + "PLAY_SEARCH_GENERAL_QUERY_PAGINATION_USER_LEVEL", + "IN_CART_EXCHANGE_OPTIONS_ELIGIBLE_USER_LEVEL", + "CART_ABANDONMENT_GE_MODEL_EXPERIMENT", + "REDEEM_SAVE_GE_MODEL_EXPERIMENT", + "GE_COFFEE_CARD_INDIVIDUALIZATION_EXPERIMENT", + "GE_NOTIFICATION_REVENUE_ACCELERATION_EXPERIMENT", + "GE_USER_BUYER_STATE_UNKNOWN", + "GE_USER_BUYER_STATE_NEVER", + "GE_USER_BUYER_STATE_NEW", + "GE_USER_BUYER_STATE_CHURN", + "GE_USER_BUYER_STATE_REPEAT", + "GE_USER_VALUE_SEGMENT_UNKNOWN", + "GE_USER_VALUE_SEGMENT_LOW", + "GE_USER_VALUE_SEGMENT_MEDIUM", + "GE_USER_VALUE_SEGMENT_HIGH", + "GE_USER_VALUE_SEGMENT_NEVER", + "GE_IS_SCHEDULED_UNKNOWN_SURFACE", + "GE_IS_SCHEDULED_LEON", + "GE_IS_SCHEDULED_NOTIFICATION", + "GE_IS_SCHEDULED_CART_ABANDONMENT", + "GE_IS_SCHEDULED_SWOOP", + "GE_IS_SCHEDULED_LIVE_OP", + "GE_IS_SCHEDULED_REDEEM_SAVE", + "GE_IS_SCHEDULED_APP_HERO_CARD", + "GE_IS_SCHEDULED_POINTS_BOOSTER", + "GE_IS_SCHEDULED_INTERSTITIAL", + "GE_IS_SCHEDULED_COFFEE_CARD", + "GE_IS_SCHEDULED_QUEST", + "GE_RANKING_CONFIG_EXPERIMENT", + "SUPPORT_SUBSCRIPTIONS_IN_FEATURED_SKU_USER_LEVEL", + "IAP_SKU_DEALS_LIVE_OP_DEALS_HOME_USER_LEVEL", + "IAP_SKU_DEALS_LIVE_OP_GAMES_HOME_USER_LEVEL", + "FEATURING_AHC_OR_FHR_TRIGGERED_USER_LEVEL", + "STARTERKIT_CLUSTERS_ELIGIBLE_USER_LEVEL", + "ALLOWLIST_EXPANSION_FOR_P13N_INTERSTITIAL_USER_LEVEL", + "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL", + "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V0", + "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V1", + "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V2", + "NOVEL_TOPIC_CLUSTER_ELIGIBLE_USER_LEVEL_V3", + "NOVEL_TOPIC_CLUSTER_IMPRESSED_AT_USER_LEVEL", + "ALLOWLIST_EXPANSION_FOR_P13N_LIVEOPS_USER_LEVEL", + "SURVEY_RECS_LIST_AT_USER_LEVEL", + "DEV_OFFER_SWGOH_USER_LEVEL", + "ALLOWLIST_EXPANSION_FOR_P13N_NOTIFICATIONS_USER_LEVEL", + "GROWTH_COFFEE_CARD_IN_PURCHASE_FLOW_USER_LEVEL", + "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_USER_LEVEL", + "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_USER_LEVEL_V2", + "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITH_EXISTING_FOP_USER_LEVEL", + "SUBS_HIGH_CHURN_FOP_OPTIONS_AVAILABLE_WITHOUT_EXISTING_FOP_USER_LEVEL", + "WIDE_MEDIA_CLUSTER_INVALID_VIDEO_ASSET_USER_LEVEL", + "WEBSKY_SEARCH_THIRD_PARTY_CONTENT_ELIGIBLE_QUERY_USER_LEVEL", + "EDITORIAL_FCC_AT_USER_LEVEL", + "QUEST_CONTENT_CARD_IN_DEALS_HOME_USER_LEVEL", + "FOP_STEERING_PROMOTION_INITIAL_BILLING_PROFILE_USER_LEVEL", + "FOP_STEERING_PROMOTION_CART_ADD_FOP_USER_LEVEL", + "FOP_STEERING_PROMOTION_CART_CHANGE_FOP_USER_LEVEL", + "LOYALTY_STAMP_CARD_IN_PURCHASE_FLOW_USER_LEVEL", + "HAS_MONETIZATION_BEHAVIOR_USER_LEVEL", + "HAS_MONETIZATION_BEHAVIOR_LAST_180D_USER_LEVEL", + "LINK_BIOMETRICS_USER_LEVEL", + "USER_LEVEL_TEST_CODE_LIMIT" + ], + "enumDescriptions": [ + "useful always", + "useful always", + "useful always", + "useful always", + "useful always", + "useful always", + "", + "", + "", + "", + "Query is eligible to show Boots chips", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User should see the live op cluster.", + "go/books-language-handling for details", + "", + "Create test code for go/it-design experiment", + "", + "go/guided-discovery-design for details.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User has live op cluster candidates.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Aqua grammar is used to narrow to offline apps.", + "", + "", + "", + "", + "", + "", + "", + "", + "For verify the client test code logging flow.", + "", + "", + "User has books bigpool recs.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Candidate for Vanagon Escape hatch experiment", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Track entertainment cluster when FPR is enabled.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Details page of an app eligible for Books XSell", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Indicates triggering of Topic RFY cluster", + "Triggered Mini Topcharts in apps search.", + "", + "", + "", + "", + "", + "User eligible for Assistant first-run tooltip", + "User eligible for Assistant nth-run tooltip", + "User eligible for Assistant nth-run button tooltip", + "User eligible for Launcher first run tooltip", + "User eligible for Launcher nth run tooltip", + "User eligible for Notification first run tooltip", + "User eligible for Notification new tooltip", + "User eligible for Notification nth new tooltip", + "", + "", + "", + "", + "leon banner is targeted at event level.", + "", + "", + "User eligible for dialer contact tooltip", + "", + "", + "", + "", + "User input has touch hardware", + "User input has rotary hardware", + "User input has touchpad hardware", + "User input lacks touch hardware", + "User input lacks rotary hardware", + "User input lacks touchpad hardware", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Add test code for calendar tooltip", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "DEPRECATED. Unnecessary test code", + "", + "", + "", + "Indicates a work profile was detected while running Android Auto", + "Indicates Android Auto has detected a work profile, and could query for work data, but might (or might not) need to prompt for permissions first. Also indicates Android Auto has permission to post any needed permission prompts.", + "Indicates Android Auto has permission to query work data, and show it to the user", + "", + "", + "The mismatch for target id 12609441 in finsky targeting and skeleton framework.", + "", + "Indicates that Android Auto has detected multiple phone accounts, which are capable of placing/receiving calls. VOIP accounts are not included.", + "Indicates that a phone with multiple callable accounts has a default account specified for placing outgoing calls. This means account disambiguation generally won't be needed when placing a call from Android Auto.", + "", + "Indicates that Android Auto has displayed a multi-SIM calling tooltip.", + "", + "", + "", + "", + "", + "Indicates that default media app was set from \u003e 1 available media apps at startup.", + "", + "", + "", + "", + "Indicates that the Android Auto session is eligible to receive media autoplay (i.e. system requesting playback automatically)", + "", + "Indicates that some organic search results have generated large-format cluster candidates (i.e. to be shown as search results with media).", + "Event level test code for tracking fresh results seeking search queries.", + "Google funded series bundle discount bucket.", + "", + "", + "", + "", + "", + "Event level test code that indicates that a tg related query search cluster could be shown.", + "Event level test code that indicates that tg related queries could be inserted to related query cluster for navigational search.", + "Event level testcode for promotable apps in search.", + "Event level test codes containing result of tquality lookup during market details url matching. A failed tquality result suppresses inline details.", + "", + "Event level test code indicating external details URL is an inline URL.", + "Event level test codes for expandable cluster.", + "", + "", + "", + "Event level test code for Clusters in SERP", + "", + "", + "Event level test codes containing result of aQuality lookup during market details url matching. A failed aQuality result suppresses inline details.", + "", + "Event level test code for tracking fresh results seeking within the current year search queries.", + "Event level test code for when we filtered \u003e=1 apps due to tq failure.", + "Event level test code for Editorial Content/Articles in SERP (FHR)", + "Event level test codes containing results for aQuality and tQuality in the details page. See go/low-quality-dp-experiment-config for details.", + "", + "", + "", + "", + "", + "Event level test code for cluster, p13n ranking.", + "", + "", + "", + "", + "", + "", + "", + "User should see the live op cluster.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User has live op cluster candidates.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Aqua grammar is used to narrow to offline apps.", + "", + "", + "", + "", + "", + "", + "", + "", + "For verify the client test code logging flow.", + "", + "", + "User has books bigpool recs.", + "", + "", + "predict challenge but force not to.", + "predict challenge and prompt.", + "no predict made.", + "predict no challenge.", + "no predict no challenge.", + "no predict but has challenge.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Purchase profile abandonment dialog for DCB.", + "", + "Testcode for abusive query squashing experiment", + "", + "", + "", + "Cart abandonment flow for purchase flow.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Pseudocredit voucher UX revamp experiment.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Track entertainment cluster when FPR is enabled.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User should see liveops cluster on MyApps Page", + "", + "", + "", + "", + "", + "", + "Details page of an app eligible for Books XSell", + "", + "Subscribe \u0026 Install metadata comes from the server is available to the app for the current user. It helps us to slice metrics for the S\u0026I UDPR migration (a client change). Context: https://screenshot.googleplex.com/APAqqLFYpXjfmWQ.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Deprecated. Please use user level test code below.", + "User saw/would have seen the details page promotion in App", + "Details Page. User saw/would have seen the details page promotion in Books", + "Details Page. Cart with no fop shown.", + "go/cart-abandon-vx-rollout", + "go/cart-abandon-vx-rollout", + "go/cart-abandon-vx-rollout", + "go/cart-abandon-vx-rollout", + "go/cart-abandon-vx-rollout", + "", + "", + "", + "Cart abandonment exp for high-value carts (v3)", + "", + "", + "", + "", + "", + "", + "", + "", + "Search Page where Sponsored cluster is inserted", + "SERP where Sponsored cluster is not inserted", + "", + "", + "User saw/would have seen the promotion that was redeemd from", + "non details page in App Details Page. User saw/would have seen the promotion that was redeemd from", + "non details page in Books Details Page.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Counterfactual for SC in search categorical", + "", + "", + "", + "User eligible for 25% off for next renewal", + "User eligible for 50% off for next renewal", + "User eligible for 75% off for next renewal", + "User eligible for 90% off for next renewal", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User saw/would have seeen an in-app sale.", + "", + "", + "", + "", + "", + "", + "At least one navigational suggestion was returned.", + "", + "Uer sees/should have seen promotion for Burnsie(Prompt for", + "fop) in free app purchase.", + "", + "is_mdp query by QRewrite and OneTree matches", + "", + "", + "", + "", + "", + "", + "", + "Subscription retry fop flow when the primary fop is dcb.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User visited the first tab of Loyalty Home.", + "User visited the second tab of Loyalty Home.", + "User visited the third tab of Loyalty Home.", + "", + "Adds session level test code for marketing opt-in", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User sees/should have seen the loyalty signup interstitial.", + "", + "", + "Distigunish who see the incentivized opt-in prompt", + "", + "", + "leon banner is targeted at session level.", + "", + "", + "", + "User should see personalized Use Tab", + "", + "", + "User visited a child directed app details page.", + "User visited a mixed audience app details page.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is for splitting movies free users", + "This is for splitting movies family users", + "This is for splitting movies renter users", + "This is for splitting movies buyer users", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Gameplay video cluster.", + "Gameplay video cluster landing page.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User info has at least one feedback record", + "User has many feedback records", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Test Codes for in-app offers at session level.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "see go/reordering-subnav-tabs", + "see go/reordering-subnav-tabs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "User saw/would have seen the subscription one time pass offer", + "when abandonments the cart.", + "", + "", + "", + "", + "", + "", + "", + "Subscription update fop flow at signup when the primary fop", + "is dcb. Subscription update fop flow at sub center when the primary", + "fop is dcb.", + "", + "", + "", + "", + "Test codes for the feature and each early-access partners for the Play Store IAP sales project. go/play-store-iap-sales-dd", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Test codes for cross-device features. See go/play-cross-device.", + "", + "", + "Test code for other devices subnav. Logged for eligible users when home subnavs are fetched.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Test code logged on client side for users who see the Play Pass signup interstitial.", + "", + "User eligible for 10% off for next renewal", + "User eligible for 25% off for next renewal", + "User eligible for 50% off for next renewal", + "User eligible for 75% off for next renewal", + "", + "", + "", + "Indicates Cakewalk that legacy (phone screen) FRX was skipped in favor of the updated HU-only FRX (Cakewalk 2.0)", + "", + "LiveOps/Offer user coverage metrics. See: go/liveops-user-coverage", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Test code for tracking the new subscription document format in GetSkuDetails, Acquire and SubscriptionDocumentsFetcher flows", + "", + "", + "", + "", + "Test code for tracking sessions which are supposed to show a http://navstar/fs/visual_element/f/ios_gsa_client:DynamicHomeContainer", + "Test code for tracking whether an order was placed from a package with vetted game profile IDs.", + "", + "", + "Test code for tracking users eligible for the Play Pass cart marketing banner.", + "Test code for tracking eligble users who are shown the cart with marketing banner.", + "Test code for tracking users shown Play Pass perks icon in cart.", + "Testcode for slicing MDP triggering queries in Play search.", + "Testcode for slicing non-MDP triggering queries in Play search.", + "Testcode for slicing requests where the offer is considered to be personalized to the users, either by google or by Play Billing Library developers.", + "Indicates that legacy (phone screen) FRX could be skipped during a session, ignoring the feature flag and other conditions that differ between experiment arms. This will allow us to compare metrics between Cakewalk users in the experiment group and *potential* Cakewalk users in the control group.", + "Test code for play quest platform project", + "", + "", + "Test code for tracking sessions which are supposed to show a Play Pass parent-focused splash page.", + "", + "", + "Test code for tracking sessions where a review is submitted.", + "Test code for tracking sessions where the page is paginated by general query pagination.", + "Test code for tracking sessions where in cart exchange options are available.", + "Test code fpr tracking sessions where the page is being paginated by multinav pagination.", + "", + "Test code for subscriptions being shown in Featured SKU. Design: go/play-store-iap-sales-subs-dd", + "Session level test code for tracking users who should see the IAP Sku Deals liveops card.", + "Session level test code for tracking users who should see the IAP Sku Games Home liveops card.", + "Test code for tracking sessions where featuring AHC or FHR is triggered.", + "Session level test code for tracking sessions that include startkit clusters.", + "Session level test code for tracking users who have p13n interstitials impressions.", + "Session level test codes for Clusters Types.", + "", + "Session level test code for tracking users who have p13n LiveOps impressions.", + "Session-level test code logged when PRS returns a survey RecsList.", + "", + "Session-level test code logged when randomly shuffle clusters on target users.", + "Session-level test code logged when randomly shuffle both clusters and apps on target users.", + "Session level test code for tracking users who have p13n Notifications candidates.", + "Session level test code for tracking fresh results seeking search queries.", + "Google funded series bundle discount bucket.", + "", + "", + "", + "", + "", + "Session level test code that indicates that a tg related query search cluster could be shown.", + "Session level test code that indicates that tg related queries could be inserted to related query cluster for navigational search.", + "Event level test code that indicates promotable apps boosting is enabled.", + "Session level test code for Growth Coffee Card Phase 1 launch, for tracking users who made eligible purchases and are eligible for the GCC in purchase flow.", + "Test code for live ops ROI holdback experiment. Record the test code if user was in control/treatment and was eligible to see at least one liveop prior to filtering. For more info, see: go/roi-design", + "Session level test code that indicates that grouping is applied on TG or broad intent categorical quries.", + "Session level test code for clusters in SERP", + "", + "", + "Session level test code logged when the wide media card has invalid video asset in the asset agnostic 3x experiment.", + "Session level test code that indicates that the user has at least one alternate form factor device.", + "Session level test code that indicates that the user has at more than one alternate form factor devices per form factor.", + "Session level test code that indicates that an apps discovery cluster was triggered on the search page.", + "Session level test code that indicates that cross form factor wear Suggestion is enabled. b/222328256 for more details.", + "Session level test code that indicates that at least one cross form factor wear suggestion is available. b/222328256 for more details.", + "Session level test code that indicates the subtext is triggered for that group of suggestions. Could either be for XFF Cat, Nav or legacy subtext.", + "Session level test codes containing result of tQuality lookup during market details url matching. A failed tQuality result suppresses inline details.", + "", + "Session level test codes containing result of aQuality lookup during market details url matching. A failed aQuality result suppresses inline details.", + "", + "Session level test code indicating external details URL is an inline URL.", + "Session level test code that indicates that decline email is sent when the subscription enters grace period.", + "Session level test code that indicates that decline email is sent when the subscription enters suspended period.", + "Session level test code that indicates that user was eligible for ad linking recommendation.", + "Session level test code that indicates that user was eligible for merchant center upsell recommendation.", + "Session level test code that indicates that user was eligible for predictive insight recommendation.", + "Session level test code that indicates that user was eligible for consent mode insight.", + "Session level test code that indicates that user was eligible for diversity processing with 30d lookback window.", + "Session level test code that indicates that user was eligible for diversity processing with 60d lookback window.", + "Session level test code that indicates that user was eligible for the ads upsell recommendation.", + "Session level test code that indicates that user was eligible for the download mobile app recommendation", + "Session level test code that indicates that a user was served an editorial FCC (Flexible Content Cluster).", + "Session level test code for tracking fresh results seeking within the current year search queries.", + "Event level test code for when we filtered \u003e=1 apps due to tq failure.", + "Session level test code for Editorial Content/Articles in SERP (FHR)", + "Information about user's data connection.", + "", + "Information about user's video auto-play settings.", + "", + "", + "Session level test code that indicates the decline reason is populated to payment decline email.", + "Session level test code for Quest Content Card launch on Deals Home, for tracking users who made eligible purchases and are eligible for the QCC.", + "Session level test code for low quality app in details page. See go/low-quality-dp-experiment-config for details.", + "", + "", + "", + "", + "", + "Session level test code for query dependent snippet.", + "Session level test code for Fop Steering Promotion with initial billing profile.", + "Session level test code for Fop Steering Promotion displayed in cart with add fop action.", + "Session level test code for Fop Steering Promotion displayed in cart with change fop action.", + "Session level test code for cluster, p13n ranking.", + "Session level test code for query dependent snippet. It is logged when the front end shows at least 1 query dependent snippet.", + "Session level test code that indicates that at least one high churn fop options is available for user when visiting add fop page for subscription purchase. Deprecated, use 10779 instead.", + "", + "", + "", + "Session level test code for quality modulated MDP. It is logged when the front end receives a MDP without quality information.", + "Session level test code for quality modulated MDP. It is logged when the front end receives a MDP with high quality.", + "Session level test code for quality modulated MDP. It is logged when the front end receives a MDP with medium quality.", + "Session level test code for quality modulated MDP. It is logged when the front end receives a MDP with low quality.", + "Session level test code for headroom experiment. It is logged when MDP is triggered and the search is categorized as game seeking.", + "Session level test code for rfy cluster which is displayed above general query pagination for queries which are game seeking.", + "", + "Testcode for logging users with authentication deactivated or set to biometric who click on \"1-tap buy\" or its alternative", + "Session level test code that indicates the subscription payment decline email is sent.", + "Session level test code that indicates the related query cluster is supposed to be displayed at the manual pagination location.", + "Besides (10794), the query is also game seeking.", + "", + "User should see the live op cluster.", + "Cart abandonment flow for purchase flow.", + "User saw/should have seen purchasable subscription card in", + "App Details Page. Cart abandonment sub dollar experiment.", + "Cart abandonment V2 experiment1.", + "User saw/would have seen the in app products section in App", + "Details Page. User saw/would have seen the details page promotion in App", + "Details Page. User saw/would have seen the details page promotion in Books", + "Details Page. go/cart-abandon-vx-rollout", + "go/cart-abandon-vx-rollout", + "go/cart-abandon-vx-rollout", + "go/cart-abandon-vx-rollout", + "Quick fix expired credit card flow for purchase flow.", + "Details page promotion global holdback", + "Suer saw/should have seem promotion for Burnsie(Prompt for", + "fop) in free purchase. Cart abandonment exp for high-value carts (v3)", + "Cash top up experiment. go/cash-top-up-one-pager", + "go/burnsie-for-expired-cards", + "User saw/would have seen the promotion that was redeemd from", + "non details page in App Details Page. User saw/would have seen the promotion that was redeemd from", + "non details page in Books Details Page. User saw/would have seen the 10% off swoop campaign.", + "go/subs-swoop-experiment User saw/would have seen the 25% off swoop campaign.", + "go/subs-swoop-experiment User saw/would have seen the 50% off swoop campaign.", + "go/subs-swoop-experiment User saw/would have seen the 75% off swoop campaign.", + "go/subs-swoop-experiment User saw/would have seen the 90% off swoop campaign.", + "User saw/would have seen the \"wave 2\" purchasable", + "subscription card in App Details Page. Subscribe \u0026 Install metadata comes from the server is", + "available to the app for the current user. It helps us to slice metrics for the S\u0026I UDPR migration (a client change). Context: https://screenshot.googleplex.com/APAqqLFYpXjfmWQ. User is eligible for some campaign, and passes surface", + "matching and snooze check. go/p3-ge-cart-abandonment-dd Users who have ever sent acquire requests with existing", + "DEPRECATED. Use campaign-specific test codes (20034-20036).", + "User saw/would have seen the promotion that was redeemd from", + "non details page in App Details Page. User saw/would have seen the details page in-app item", + "promotion for Nevers in App Details Page. User saw/would have seen the details page in-app item", + "promotion for Lapsed Buyers in App Details Page. User saw/would have seen the details page premium app", + "promotion for Nevers in App Details Page. User saw/would have seen the details page premium app", + "promotion for Nevers in App Details Page. User saw/would have seen the details page in-app item", + "promotion for Lapsed Buyers in App Details Page.", + "", + "", + "Subscription cancellation flow for purchase flow per user.", + "Subscription update fop flow at signup when the primary fop", + "is dcb. Subscription update fop flow when the primary fop is dcb.", + "Subscription retry fop flow when the primary fop is dcb.", + "", + "", + "User visited the first tab of Loyalty Home.", + "User visited the second tab of Loyalty Home.", + "User visited the third tab of Loyalty Home.", + "Cart abandonment exp for retail excellence text experiment.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Glue score integration in Details Page.", + "User level test code for Details Page Global Holdback.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "leon banner is targeted at user level.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "This is for splitting movies free users", + "This is for splitting movies family users", + "This is for splitting movies renter users", + "This is for splitting movies buyer users", + "", + "", + "", + "", + "", + "", + "User saw/would have seen in-app messages.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Test codes for in-app offers at user level.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "First Party Promotion LiveOps", + "", + "", + "", + "", + "", + "User saw/would have seen the subscription one time pass offer", + "when abandonments the cart.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Test codes for the feature and each early-access partners for the Play Store IAP sales project. go/play-store-iap-sales-dd", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Test code for hype panel features on details page: go/vip-hype-panel-passport, go/vip-hype-panel2dot1-passport", + "", + "", + "", + "Test code for when a user was eligible for visual preview while in motion. E.g. received a notification and had visual preview setting enabled.", + "", + "", + "", + "", + "", + "", + "", + "", + "Test code logged on client side for users who see the Play Pass signup interstitial.", + "Test codes for seeing the effects of disabling topup in select countries.", + "", + "User saw/would have seen the 10% off swoop campaign.", + "http://shortn/_L6kJNPGsS0 User saw/would have seen the 25% off swoop campaign.", + "http://shortn/_L6kJNPGsS0 User saw/would have seen the 50% off swoop campaign.", + "http://shortn/_L6kJNPGsS0 User saw/would have seen the 75% off swoop campaign.", + "", + "", + "", + "", + "", + "Test code for tracking the new subscription document format in GetSkuDetails, Acquire and SubscriptionDocumentsFetcher flows", + "", + "", + "", + "", + "Test code for tracking whether GPP user saw app install promo on the earn tab. Only used for US/FR experiment for app install promotions.", + "Test code for tracking whether GPP user saw app install promo on the details page. Only used for US/FR experiment for app install promotions.", + "", + "", + "", + "Test code for tracking users eligible for the Play Pass cart marketing banner.", + "Test code for tracking banner eligble users who are shown the cart.", + "Test code for tracking users shown Play Pass perks icon in cart.", + "Test code for play quest platform project", + "", + "", + "Indicates that the user was eligible to be served a promotion, but the promotion was not served", + "Indicates that the user was eligible to be served a promotion, and the promotion was served", + "Test code for tracking users who see a Play Pass parent-focused splash page.", + "", + "", + "", + "Test code for tracking users where the page is paginated by general query pagination.", + "Test code for tracking users where in cart exchange options are available.", + "Test code for cart abandonment GE model experiment.", + "Test code for redeem save GE model experiment.", + "Test code for the coffee card I15n experiment", + "Test code for GE revenue acceleration experiment on Notification surface.", + "Test code GE ranker service unknown users.", + "Test code GE ranker service never users.", + "Test code GE ranker service new users.", + "Test code GE ranker service churn users.", + "Test code GE ranker service repeat users.", + "Test code GE ranker service unknown user value segment.", + "Test code GE ranker service low user value segment.", + "Test code GE ranker service medium user value segment.", + "Test code GE ranker service high user value segment.", + "Test code GE ranker service never user value segment.", + "Test codes for GE surfaces.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Test code for GE ranking config experiment", + "Test code for subscriptions being shown in Featured SKU. Design: go/play-store-iap-sales-subs-dd", + "User level test code for tracking users who should see the IAP Sku Deals liveops card.", + "User level test code for tracking users who should see the IAP Sku Games Home liveops card.", + "User level test code for tracking users who should see the featuring AHC or FHR.", + "User level test code for tracking sessions include startkit clusters.", + "User level test code for tracking users who have p13n interstitials impressions.", + "User level test codes for Cluster Types. Use 20352.", + "Use 20352.", + "Use 20352.", + "", + "", + "", + "User level test code for tracking users who have p13n LiveOps impressions.", + "User-level test code logged when PRS returns a survey RecsList.", + "User level test code logged when the Dev Offer EAP campaign is about to be returned.", + "User level test code for tracking users who have p13n Notifications candidates.", + "User level test code for Growth Coffee Card Phase 1 launch, for tracking users who made eligible purchases and are eligible for the GCC in purchase flow.", + "User level test code that indicates that at least one high churn fop options is available for user when visiting add fop page for subscription purchase. Deprecated, use 20361 instead.", + "", + "", + "", + "User level test code logged when the wide media card has invalid video asset in the asset agnostic 3x experiment.", + "User level test code that indicates a user's search query qualifies them to see third party content in Websky search stream.", + "User level test code that indicates that a user was served an editorial FCC (Flexible Content Cluster).", + "User level test code for Quest Content Card launch on Deals Home, for tracking users who made eligible purchases and are eligible for the QCC.", + "User level test code for Fop Steering Promotion with initial billing profile.", + "User level test code for Fop Steering Promotion displayed in cart with add fop action.", + "User level test code for Fop Steering Promotion displayed in cart with change fop action.", + "User level test code for Quest Platform Loyalty Stamp Card in Purchase flow.", + "User level test code for users who have made any monetization behavior(sub, iap) before (controlled by fsUlyssesBuyerState), used for AH/GH monetization experiments.", + "User level test code for users who have made any monetization behavior(sub, iap) for the last 180 days (controlled by ULYSSES_OOP_SPEND_PER_PURCHASE_180D), used for AH/GH monetization experiments.", + "User level test code for link biometrics for free app acquisitions.", + "" + ], + "type": "string" + }, + "type": "array" + }, + "trustedGenomeHierarchy": { + "description": "The list of trusted genome hierarchy. One trusted_genome_hierarchy may contain one or multiple entities. This is required for TG 2.0 tags.", + "items": { + "$ref": "VendingConsumerProtoTrustedGenomeHierarchy" + }, + "type": "array" + } + }, + "type": "object" + }, + "VendingConsumerProtoTrustedGenomeEntity": { + "description": "Proto message containing the id, localized title, score, and hierarchy level of a trusted genome entity.", + "id": "VendingConsumerProtoTrustedGenomeEntity", + "properties": { + "categoryId": { + "description": "The category id matching this trusted genome entity. e.g. Action tag with id /m/025zzc matches category of id GAME_ACTION", + "type": "string" + }, + "id": { + "description": "The identifier of a play trusted genome entity. Required.", + "type": "string" + }, + "level": { + "description": "The level of the entity. E.g. in hierarchy like Action -\u003e Platformer \u003e Endless Runner. Action is level 1, Platformer is level 2 and Endless Runner is level 3. Currently, only APP_TAXONOMY and GAME_TAXONOMY type may have the levels. For entity that does not have hierarchy, its level is 1. Required.", + "format": "int32", + "type": "integer" + }, + "queryText": { + "description": "The localized query string for this trusted genome entity. This query will be used when we want to bring users to SERP on click.", + "type": "string" + }, + "score": { + "description": "The confidence score of the entity to the app.", + "format": "float", + "type": "number" + }, + "title": { + "description": "The localized title. Required.", + "type": "string" + }, + "userVisible": { + "description": "This boolean is used to decide whether this entity will be shown on user-facing features in the Store or not.", + "type": "boolean" + } + }, + "type": "object" + }, + "VendingConsumerProtoTrustedGenomeHierarchy": { + "description": "Proto message containing one or multiple trusted genome entity. This is used to capture entities that belong to the same type and have parent-children relationship in the taxonomy. e.g. One hierarchy may include 3 entities with Game_Taxonomy Type: (1) Action (Level 1) (2) Platformer (Level 2 under Action) (3) Endless Runner (Level 3 under Platformer) e.g. One hierarchy may also include only 1 entity with Game_Graphic_Style: (1) Anime (No level information) Next ID: 5", + "id": "VendingConsumerProtoTrustedGenomeHierarchy", + "properties": { + "entity": { + "description": "List of entities (one or multiple) that belong in the same hierarchy. The entries will be ordered such that the first entry will be of level 1, and the second entry will be of level 2, and so on. Required", + "items": { + "$ref": "VendingConsumerProtoTrustedGenomeEntity" + }, + "type": "array" + }, + "hierarchyType": { + "description": "The (hierarchy-level) type of this Trusted Genome hierarchy. Will only be populated when meeting certain criteria, e.g. 'GD2_Game_Main' means this hierarchy of entities can serve as the main game genre for Game Discovery 2.0.", + "enum": [ + "UNKNOWN_HIERARCHY_TYPE", + "GD2_GAME_MAIN", + "GD2_GAME_SUB" + ], + "enumDescriptions": [ + "", + "Indicates this can be used as the main genre in Game Discovery 2.0 (GD2). See http://shortn/_3Aj6GDRdxM for more info.", + "Indicates this can be used as the sub genre in Game Discovery 2.0 (GD2). Specifically, sub genre tags are only limited to 'Casual' \u0026 'Arcade' and their children genres. See http://shortn/_3Aj6GDRdxM for more info." + ], + "type": "string" + }, + "source": { + "description": "The source of this Trusted Genome hierarchy.", + "enum": [ + "UNKNOWN_TRUSTED_GENOME_SOURCE", + "TRUSTED_GENOME_2", + "VALIDATED_DEVELOPER", + "DEVELOPER_PROVIDED" + ], + "enumDescriptions": [ + "", + "Source of truth for App KG annotations, a.k.a. TG2. See go/play-genome-g3doc for details.", + "If the categories provided by rater platform and developers are matched.", + "If there is no rater provided category or the categories provided by rater platform and developers are NOT matched." + ], + "type": "string" + }, + "trustedGenomeType": { + "description": "The (entity-level) type of trusted genome entities in this hierarchy. Required.", + "enum": [ + "UNKNOWN_ENTITY_TYPE", + "APP_TAXONOMY", + "APP_ATTRIBUTE", + "GAME_TAXONOMY", + "GAMEPLAY_ELEMENT", + "GAMEPLAY_MODE", + "GAME_GRAPHIC_STYLE", + "GAME_THEME_SETTING", + "GAME_CONNECTIVITY", + "ACCESSIBLITY", + "ASSISTANT", + "CHROMEBOOK_COMPATIBILITY" + ], + "enumDescriptions": [ + "", + "Apps taxonomy. e.g. Air travel.", + "Apps attribute, it can be universal, e.g. VR, or it can be category specific, e.g. Beauty type makeup.", + "Game taxonomy. e.g. Action.", + "Gameplay element. e.g. Arcade.", + "Gameplay mode. e.g. Single player", + "Game graphic stype. e.g. Anime", + "Game theme setting. e.g. Fantasy", + "Game connectivity. e.g. Offline", + "Accessiblity. e.g. Blind-Friendly", + "Assistant tags, e.g. Assistant-Enabled", + "Chrome OS compatibility tags. e.g. Optimized for Chromebooks" + ], + "type": "string" + } + }, + "type": "object" + }, + "VendingConsumerProtoTrustedGenomePolicy": { + "description": "Proto message containing policy related information.", + "id": "VendingConsumerProtoTrustedGenomePolicy", + "properties": { + "localizedRegionOverride": { + "description": "Override text for region for special treatment. Override will be used in special cases for example regions are too long to show in UI, the override will be \"CA/NV/...\" to cut it short. By keeping a region override string we'll have more flexibility to adjust what we show on UI. Optional.", + "type": "string" + }, + "policyType": { + "description": "Policy type. e.g. Government Endorsed, Apollo Required.", + "items": { + "enum": [ + "UNKNOWN_POLICY_TYPE", + "GOVERNMENT_COMMISSIONED", + "APOLLO_APPROVED", + "APOLLO_EXPRESS" + ], + "enumDescriptions": [ + "", + "Government Commissioned", + "Apollo Approved", + "Apollo ENX Approved" + ], + "type": "string" + }, + "type": "array" + }, + "targetRegion": { + "description": "Contains target region for the current policy. Optional", + "items": { + "$ref": "VendingConsumerProtoTrustedGenomePolicyTargetRegion" + }, + "type": "array" + } + }, + "type": "object" + }, + "VendingConsumerProtoTrustedGenomePolicyTargetRegion": { + "id": "VendingConsumerProtoTrustedGenomePolicyTargetRegion", + "properties": { + "localizedRegion": { + "description": "Localized name for targeted regions. e.g. San Francisco Bay Area Required.", + "type": "string" + }, + "mid": { + "description": "Associated KG entity mid for region. e.g. /m/06pvr", + "type": "string" + } + }, + "type": "object" + }, + "VideoAmbisonicsAmbisonicsMetadata": { + "id": "VideoAmbisonicsAmbisonicsMetadata", + "properties": { + "channelMap": { + "description": "Maps channel indexes of an audio stream to indexes corresponding to the specified ambisonics channel ordering scheme. For example: A 1st order pheriphonic ambisonics format is configured with 4 audio channels corresponding to ambisonic components W, X, Y, Z respectively. The channel_ordering scheme is specified as CHANNEL_ORDERING_ACN (which implies a W, Y, Z, X ordering). Therefore the channel_map is [0, 3, 1, 2].", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "channelOrdering": { + "enum": [ + "CHANNEL_ORDERING_UNKNOWN", + "CHANNEL_ORDERING_ACN" + ], + "enumDescriptions": [ + "", + "Ambisonic Channel Number" + ], + "type": "string" + }, + "nonDiegeticStereo": { + "type": "boolean" + }, + "normalization": { + "enum": [ + "NORMALIZATION_UNKNOWN", + "NORMALIZATION_SN3D" + ], + "enumDescriptions": [ + "", + "Schmidt semi-normalisation" + ], + "type": "string" + }, + "numChannels": { + "format": "int32", + "type": "integer" + }, + "order": { + "format": "int32", + "type": "integer" + }, + "type": { + "enum": [ + "TYPE_UNKNOWN", + "TYPE_PERIPHONIC", + "TYPE_HORIZONTAL" + ], + "enumDescriptions": [ + "", + "Full 360 degree sphere (x,y,z)", + "Planar horizontal-only plan (x,y)" + ], + "type": "string" + }, + "version": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoAssetsVenomACL": { + "description": "Valid fields in ACL are \"mdb/groupname\", or \"user/username\", e.g., \"mdb/youtube-prod\", or \"user/alice\".", + "id": "VideoAssetsVenomACL", + "properties": { + "owner": { + "description": "REQUIRED: the current owner of this video. Please note that owner does not get implicit reader/writer access. You must set them explicitly.", + "type": "string" + }, + "reader": { + "description": "Allowed readers of this video.", + "items": { + "type": "string" + }, + "type": "array" + }, + "writer": { + "description": "Allowed writers of this video.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoAssetsVenomSettings": { + "description": "Describes ingredient level settings. Clients are authoritative in defining Settings. See go/venom-trustme for how Settings and ProcessingCharacteristics work together. If your Settings extension contains PII fields, please 1) Annotate them appropriately with DataPol, and 2) Add your BUILD target to google3/video/assets/venom/proto/settings/BUILD:pii See google3/video/assets/venom/proto/settings/ for extension messages.", + "id": "VideoAssetsVenomSettings", + "properties": {}, + "type": "object" + }, + "VideoAssetsVenomTransition": { + "description": "As video mutations are reconciled by Venom, we can tell if the ingredient did or did not reach certain objectives. When processing has completed, all objectives will have a corresponding transition. All transitions are reset for every mutation, but will take into account assets outside of that mutation. For example, if Asset X fails, and was part of \"OBJECTIVE_PRIMARY_ASSETS_DONE\", a rerun of Asset Y is destined to result in OUTCOME_FAILED, regardless of the fate of Asset Y. Some phenonema have effects on most or all Objectives. For example, a bad input file will result on OUTCOME_INFEASIBLE across the board (eventually, for now it's just GO_LIVE and DO_ALL, work in progress), and a failure to produce Format 18 will cause OUTCOME_FAILED across most Objectives.", + "id": "VideoAssetsVenomTransition", + "properties": { + "objective": { + "description": "The objective this transition is about. REQUIRED.", + "enum": [ + "OBJECTIVE_UNKNOWN", + "OBJECTIVE_INGREDIENT_DO_ALL", + "OBJECTIVE_INGREDIENT_GO_LIVE", + "OBJECTIVE_INGREDIENT_VALIDATED", + "OBJECTIVE_PRIMARY_ASSETS_DONE", + "OBJECTIVE_PREVIEW_DONE", + "OBJECTIVE_TRANSMUXED_DONE", + "OBJECTIVE_MEDIA_INFO_DONE", + "OBJECTIVE_PRIMARY_720P_TRANSCODES_DONE", + "OBJECTIVE_PRIMARY_1080P_TRANSCODES_DONE", + "OBJECTIVE_PRIMARY_2K_TRANSCODES_DONE", + "OBJECTIVE_PRIMARY_4K_TRANSCODES_DONE", + "OBJECTIVE_PRIMARY_8K_TRANSCODES_DONE", + "OBJECTIVE_FINGERPRINTS_DONE", + "OBJECTIVE_CHECKSUMS_DONE", + "OBJECTIVE_CLAIM_DONE", + "OBJECTIVE_THUMBNAILS_DONE", + "OBJECTIVE_LIVE_STITCHABLE_ASSETS_DONE", + "OBJECTIVE_CRAWL_ASSETS_DONE", + "OBJECTIVE_VITAL_ASSETS_DONE", + "OBJECTIVE_SAM_FEATURES_DONE" + ], + "enumDescriptions": [ + "Should not happen.", + "Put all the assets in a satisfactory state.", + "Enough was done on the ingredient for the video to be playable.", + "The validation asset is ready.", + "The most important transcodes and other assets have been completed. Roughly equlvalent to GFLAG_FULLY_PROCESSED, limited to UGC and Reels. As of 6/2019, resolutions up to 4K are represented.", + "A representation for the video in advance of all completed assets is ready.", + "The transmuxed transcode for the video, used for faster playback in certain early GO_LIVE scenarios, is playable. This is currently limited to Photos.", + "Basic media information is available -- a rare single-asset objective, to advertise a video's general information as quickly as possible.", + "Subset of OBJECTIVE_PRIMARY_ASSETS_DONE for 720p resolution and below.", + "Subset of OBJECTIVE_PRIMARY_ASSETS_DONE for 1080p resolution and below.", + "Subset of OBJECTIVE_PRIMARY_ASSETS_DONE for 2K resolution and below.", + "Subset of OBJECTIVE_PRIMARY_ASSETS_DONE for 4K resolution and below.", + "Deprecated.", + "Fingerprint assets are complete.", + "ASSET_CHECKSUMS is complete. Only transmitted for SIGNIFICANCE_MAJOR_USER_INITATED changes.", + "Deprecated.", + "All thumbnails are complete.", + "All live server stitchable ad assets are complete.", + "All requested crawl assets for Amarna are complete. This is only needed for genus which is shared by Amarna and other clients. As of 10/2020, YT UGC is the only genus, and crawl assets include MOVING_THUMBNAIL_{8K, 30K, 90K, 300K_24FPS} and ASSET_TIMED_ANCHOR_THUMBNAIL_SPORTS_MOMENT.", + "A super set of OBJECTIVE_PRIMARY_ASSETS_DONE and a few other assets that are important for tracking the health of a video. Note: This is for internal health tracking and *not* intended for clients.", + "The set of features that Smart Auto Midrolls depends on for generating midroll ad breaks." + ], + "type": "string" + }, + "outcome": { + "description": "Whether the objective is reached or not. REQUIRED.", + "enum": [ + "OUTCOME_UNKNOWN", + "OUTCOME_SUCCESS", + "OUTCOME_FAILED", + "OUTCOME_INFEASIBLE", + "OUTCOME_NOT_REQUESTED", + "OUTCOME_PENDING" + ], + "enumDescriptions": [ + "Should not happen.", + "We managed to put the video in the state described by the transition. All assets are in STATE_DONE or have a good reason not to be. No asset is stuck in STATE_MISSING or STATE_DIRTY, and Venom has determined that all assets in either STATE_NOT_APPLICABLE (common) or were not requested (less common) are acceptable (e.g. not marked \"must_succeed\" in TrustMe).", + "Venom failed to put the video in the state described by the transition, due to failures in one or more assets. These are failures within video processing, rather than client issues. Venom won’t try any further, until another mutation occurs. This almost always indicates that assets failed in Viper/Kronos, and ran out of retries. Failure of some consistency checks within Venom can also cause this Outcome, in theory. Both OUTCOME_INFEASIBLE and OUTCOME_NOT_REQUESTED dominate this value, when different assets have differing fates.", + "* an asset marked as \"must_succeed\" in TrustMe is declared Not Applicable by Viper/Kronos. e.g.: a video so low-res we can't even make itag 18. The GENUS_DRIVE adapter has similar logic if *all* assets are somehow declared not applicable (http://google3/video/assets/venom/internal/genera/drive.cc?l=224\u0026rcl=368933695). These scenarios are not common. We didn’t put the video in the state described by the transition and won’t try any further, until another mutation occurs. This happens if we discovered that the State can’t possibly be reached for this specific video (for instance, it’s not even a video, it’s out of spec or it’s a live stream that can’t be archived,...)", + "One of the following has occurred: 1) at least one \"must_succeed\" asset (as defined by TrustMe) was not requested by the client, or 2) no assets defined in the Objective were requested whatsoever. 3) no assets are associated with the Objective whatsoever Deleting assets is considered equivalent to never having requested them. For most genera, this a sign of a serious bug in asset declaration, either TrustMe data, client code, or backfill request. However, Photos and HVC have a few expected use cases.", + "We are waiting to complete a transition. This is a temporary condition that should move to one of OUTCOME_SUCCESS, OUTCOME_FAILED, or OUTCOME_INFEASIBLE once processing on the video is able to complete. It's unlikely we will transition to OUTCOME_NOT_REQUESTED from here, because that outcome is determined immediately on first audit." + ], + "type": "string" + }, + "reason": { + "description": "An optional debug string indicating the reason for this transition. This is typically omitted for OUTCOME_SUCCESS. e.g. \"The video's content is invalid due to failed blobstore cloning.\"", + "type": "string" + } + }, + "type": "object" + }, + "VideoAssetsVenomVideoId": { + "description": "A VideoId is the unique identifier of a video. Privacy: VideoIds are visible in logs, notifications, etc and must not contain PII.", + "id": "VideoAssetsVenomVideoId", + "properties": { + "id": { + "description": "REQUIRED. IDs have some constraints: - 32 bytes max: this is enforced by the server - for the time being, must be parseable as a youtube ID (basically a base64-encoded string which maps to a 64-bit integer). This restriction will eventually be lifted.", + "format": "byte", + "type": "string" + }, + "ns": { + "description": "LINT.ThenChange( //depot/google3/googledata/production/playbooks/video-assets/clients.md ) REQUIRED.", + "enum": [ + "NS_UNKNOWN", + "NS_YOUTUBE", + "NS_YOUTUBE_MEDIA", + "NS_KIDS_HUB", + "NS_GMAIL", + "NS_YOUTUBE_DIRECTOR", + "NS_DCLK_VIDEO_ADS", + "NS_TESTING", + "NS_HVC_INGESTION", + "NS_DRIVE", + "NS_ASK_QNA", + "NS_LOCAL_VIDEO", + "NS_PLAY_AUDIOBOOKS", + "NS_HANGOUTS_CHAT", + "NS_VIDEO_INTEREST_FEED", + "NS_RECORDER", + "NS_STAMP", + "NS_CRAWL", + "NS_PHOTOS", + "NS_MATERIAL_GALLERY", + "NS_YT_REFERENCE", + "NS_LENSLETS_VIDEOS", + "NS_BLOGGER", + "NS_OCEAN", + "NS_OCEAN_DEV", + "NS_ADORA", + "NS_WEB_VIDEO_ADS", + "NS_STUDIO", + "NS_YT_TDSD_REFERENCE", + "NS_WEB_STORY", + "NS_NEST_CAMERA_CLOUD", + "NS_AREA120_BLUEBIRD", + "NS_ARTS_AND_CULTURE", + "NS_DAI_PODCAST", + "NS_DEMO", + "NS_KARTO", + "NS_CONTRIB_SERVICE_SHARED", + "NS_CONTRIB_SERVICE_GEO_UGC" + ], + "enumDescriptions": [ + "Default (invalid) namespace if the field is not set.", + "YouTube video ID. This is the public, encrypted, ID.", + "YouTube media content: videos in this namespace are _NOT_ visible directly to users, but act as the primary video for video aliases in the NS_YOUTUBE namespace. IDs in this namespace are independent from regular YouTube IDs.", + "", + "", + "", + "Namespace for the Truman project.", + "Used for Bandaid probe test videos.", + "Namespace for Play Movies.", + "", + "Namespace for AskJoe Video Q\u0026A.", + "Namespace for local imagery aka Photo/Video On Maps.", + "", + "Namespace for Hangouts Chat (Dynamite)", + "Namespace for Interest Feed Inline Video.", + "Namespace for Recorder - User generated local News content.", + "Namespace for STAMP - AMP Stories.", + "Namespace for Non-YouTube videos processed through Amarna.", + "", + "", + "Namespace for 'A-' References; audio or video references that are not playable on YouTube, and only used as references for ContentID claiming.", + "", + "", + "", + "Namespace for Ocean / Play Books dev/staging content. Needed because the Books staging server talks only to the prod video streaming environment.", + "", + "Namespace for Web Video Ads.", + "Namespace for RichMedia Studio.", + "Namespace for TDSD references. These are not playable on YouTube, and are only used for generating ContentID fingerprints.", + "Namespace for Kahani Web Stories.", + "Namespace for Nest Camera Cloud.", + "Namespace for Area120 project Bluebird", + "Namespace for Google Arts \u0026 Culture.", + "Namespace for Dynamic Ad Insertion Podcasts.", + "Namespace for the Demo tier used by new clients to try things out.", + "Namespace for Karto videos.", + "Namespace for shared ContribService UGC videos.", + "Namespace for GEO UGC videos processed by ContribService. Please receive approval via go/vp-newclients before adding a new namespace." + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoAudioStream": { + "description": "Next tag: 10", + "id": "VideoAudioStream", + "properties": { + "bitrate": { + "description": "Audio bitrate in bits/s.", + "format": "int64", + "type": "string" + }, + "channels": { + "description": "Number of audio channels.", + "format": "int32", + "type": "integer" + }, + "codecId": { + "description": "Audio codec ID. Uses the numeric value corresponding to the CodecId enum object, in order to avoid the dependency on vsi/videostreaminfo.proto. http://cs/symbol:CodecId%20f:google3/video/vidproc/vsi/videostreaminfo.proto", + "format": "int32", + "type": "integer" + }, + "contentType": { + "description": "Content type of the stream. Only populated with valid \"acont\" xtag values at the moment. Supported acont xtag values can be found in google3/video/storage/common/xtag_validation.cc. Examples: \"original\", \"dubbed\", \"descriptive\", \"commentary\", etc.", + "type": "string" + }, + "language": { + "description": "Language, examples: \"eng\", \"en\", \"enG\", etc.", + "type": "string" + }, + "lengthSec": { + "description": "Audio length, in seconds. This value is derived from metadata in the source video, and often differs from the actual duration of any given transcode. In videos without valid timestamps, this value is not calculable, and is reported as zero.", + "format": "double", + "type": "number" + }, + "loudness1770Lkfs": { + "format": "float", + "type": "number" + }, + "sampleRate": { + "description": "Audio sample rate.", + "format": "int64", + "type": "string" + }, + "streamIndex": { + "description": "Index of the stream in the file, 0-based.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoClipInfo": { + "description": "Generic clip information contains a key string and a value string.", + "id": "VideoClipInfo", + "properties": { + "key": { + "format": "byte", + "type": "string" + }, + "value": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "VideoClosedCaptions": { + "id": "VideoClosedCaptions", + "properties": { + "videoHasClosedCaptions": { + "type": "boolean" + } + }, + "type": "object" + }, + "VideoContentSearchAnchorCommonFeatureSet": { + "description": "Contains anchor level features that apply to all anchor types. Next id: 18.", + "id": "VideoContentSearchAnchorCommonFeatureSet", + "properties": { + "anchorQbstDistance": { + "description": "QBST distance between the anchor and the top navboost query of the video if exists, or the video title otherwise.", + "format": "float", + "type": "number" + }, + "bleurtFeatures": { + "$ref": "VideoContentSearchBleurtFeatures", + "description": "Features needed for Bleurt inference." + }, + "bleurtScore": { + "description": "The Bleurt inference score generated using the bleurt_features.", + "format": "float", + "type": "number" + }, + "descartesScoreWithTitle": { + "description": "Descartes similarity score between video title and anchor label.", + "format": "float", + "type": "number" + }, + "dolphinDescriptivenessScore": { + "description": "The predicted descriptiveness and usefulness rating scores generated by the Unified Dolphin model. Rating template: experimental/video/video_anchors_oneside_without_thumbnail/template.jhtml", + "format": "float", + "type": "number" + }, + "dolphinEnsembleScore": { + "description": "If the dolphin model is an ensemble model, this contains the scores associated to each individual ensemble model.", + "items": { + "$ref": "VideoContentSearchDolphinEnsembleScore" + }, + "type": "array" + }, + "dolphinFeatures": { + "$ref": "VideoContentSearchDolphinFeatures", + "description": "The features used to generate the Dolphin score." + }, + "dolphinScore": { + "description": "The score generated by the Dolphin callout model.", + "format": "float", + "type": "number" + }, + "dolphinUsefulnessScore": { + "format": "float", + "type": "number" + }, + "labelPhraseEmbedding": { + "description": "A phrase embedding for the anchor label. The model used to generate the embedding can be found in VideoAnchorSets: video_score_info.common_features.label_phrase_embedding_model", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "mumDescriptivenessScore": { + "description": "The predicted descriptiveness of the anchor using the MUM unified scoring model.", + "format": "float", + "type": "number" + }, + "mumUsefulnessScore": { + "description": "The predicted usefulness of the anchor using the MUM unified scoring model.", + "format": "float", + "type": "number" + }, + "retentionScore": { + "description": "A score that is correlated with retention probability of the interval associated with this anchor (start time to end time). Retention probability of an interval is 1 - (probability the user does not watch the interval all the way through, given they started watching it). This score may be predicted by a model, or calculated from actual retention data.", + "format": "float", + "type": "number" + }, + "saftDocument": { + "$ref": "NlpSaftDocument", + "description": "A saft document generated from the anchor label." + }, + "timedLabelFeatures": { + "description": "For annotating labels and their timing and context info. For example, this is used for anchor labels within a passage.", + "items": { + "$ref": "VideoContentSearchCaptionLabelFeatures" + }, + "type": "array" + }, + "timestamp": { + "items": { + "$ref": "VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp" + }, + "type": "array" + }, + "titleAnchorBabelMatchScore": { + "description": "Babel similarity between the anchor and the video title.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp": { + "description": "When an anchor label has a long duration (for example, labels that contain multiple sentences), this field stores the mapping between label segments and the start time.", + "id": "VideoContentSearchAnchorCommonFeatureSetLabelSpanTimestamp", + "properties": { + "asrConfidence": { + "description": "The ASR confidence for the label span, if available.", + "format": "float", + "type": "number" + }, + "isSentenceStart": { + "description": "Whether or not this token is the first token in a sentence.", + "type": "boolean" + }, + "labelBeginCharIndex": { + "description": "The character index range for the span. The end index is exclusive.", + "format": "int64", + "type": "string" + }, + "labelEndCharIndex": { + "format": "int64", + "type": "string" + }, + "timeMs": { + "description": "The time of the span.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchAnchorThumbnail": { + "description": "Properties of the thumbnail image to show for an anchor.", + "id": "VideoContentSearchAnchorThumbnail", + "properties": { + "imagesearchDocid": { + "description": "Serving docid for the thumbnail in the images-tbn tables.", + "format": "uint64", + "type": "string" + }, + "isThumbnailMissing": { + "description": "Set to true when no thumbnail could be generated for this anchor.", + "type": "boolean" + }, + "servingMetadata": { + "$ref": "ImageBaseThumbnailMetadata", + "description": "Metadata about the anchor thumbnail computed by Amarna, including dimensions and the size in bytes." + }, + "thumbnailInfo": { + "$ref": "VideoContentSearchAnchorThumbnailInfo", + "description": "Information about the thumbnail anchor." + }, + "timestampMs": { + "description": "Millisecond timestamp of the frame used for the thumbnail.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchAnchorThumbnailInfo": { + "id": "VideoContentSearchAnchorThumbnailInfo", + "properties": { + "colorEntropy": { + "description": "Entropy of the clustered color distribution.", + "format": "float", + "type": "number" + }, + "imageData": { + "$ref": "ImageData", + "description": "Thumbnail image data for SafeSearch classification." + }, + "isUnsafe": { + "description": "Convenience field that consolidates signals for whether this thumbnail is safe.", + "type": "boolean" + }, + "starburstV4Embedding": { + "$ref": "DrishtiDenseFeatureData", + "description": "64d float vector of starburst v4 embedings." + }, + "thumbnailBytes": { + "description": "The raw data for a thumbnail.", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchAnchorsCommonFeatureSet": { + "description": "Contains anchor set level features that apply to all anchor types.", + "id": "VideoContentSearchAnchorsCommonFeatureSet", + "properties": { + "dolphinDescriptivenessStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the Dolphin descriptiveness scores of the anchors in the set." + }, + "dolphinUsefulnessStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the Dolphin usefulness scores of the anchors in the set." + }, + "mumDescriptivenessStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the MUM descriptiveness scores of the anchors in the set." + }, + "mumUsefulnessStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the MUM usefulness scores of the anchors in the set." + } + }, + "type": "object" + }, + "VideoContentSearchAnchorsThumbnailInfo": { + "id": "VideoContentSearchAnchorsThumbnailInfo", + "properties": { + "hasMissingStarburst": { + "description": "Whether or not any of the anchor thumbnails have missing Starburst embeddings.", + "type": "boolean" + }, + "hasMissingThumbnails": { + "description": "Whether or not any of the anchors have missing thumbnails.", + "type": "boolean" + }, + "thumbnailDiversity": { + "description": "A score representing how diverse a set of thumbnails is. This is currently defined as one minus the median pairwise cosine similarity between thumbnail Starburst embeddings.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchAspect": { + "description": "Product aspect.", + "id": "VideoContentSearchAspect", + "properties": { + "fallbackAspect": { + "description": "Product aspect to be used if non of the other aspects exist.", + "type": "string" + }, + "saftAspect": { + "description": "Product aspect produced by running SAFT annotation.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchAsrCaption": { + "description": "Contains token-level information about ASR captions.", + "id": "VideoContentSearchAsrCaption", + "properties": { + "confidence": { + "description": "The confidence score of the token: between 0 and 1.", + "format": "float", + "type": "number" + }, + "durationMs": { + "description": "The duration that the token is spoken for.", + "format": "float", + "type": "number" + }, + "startTimeMs": { + "description": "The time in the video at which the token starts being spoken.", + "format": "int32", + "type": "integer" + }, + "text": { + "description": "The speech token.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchBleurtFeatures": { + "description": "Contains features needed for Bleurt inference.", + "id": "VideoContentSearchBleurtFeatures", + "properties": { + "candidate": { + "type": "string" + }, + "reference": { + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchCaptionEntityAnchorFeatures": { + "description": "Features and debug info for individual caption entity video anchors.", + "id": "VideoContentSearchCaptionEntityAnchorFeatures", + "properties": { + "asrMentionText": { + "description": "If the description anchor has been recognized as an entity and that entity has also been mention in the ASR, this is the mention text from the ASR.", + "type": "string" + }, + "asrMentionTranscriptOffset": { + "description": "The start index of the ASR entity mention from the beginning of the ASR transcript. The index is included so that individual mentions that share the same mid and time can be distinguished which happens when an entity is mentioned multiple times in an ASR sentence. Each mid/asr_mention_transcript_offset will be unique.", + "format": "int32", + "type": "integer" + }, + "asrSentence": { + "description": "The nearest ASR sentence.", + "type": "string" + }, + "asrStartTime": { + "description": "The begin time in ms of the ASR sentence.", + "format": "int32", + "type": "integer" + }, + "bertScores": { + "description": "The result of the BERT inference using the title, ASR sentence and entity mention text.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "broadness": { + "description": "A score to help determine how specific this entity is.", + "format": "float", + "type": "number" + }, + "durationCoverage": { + "description": "The percentage of the video covered by the span of the first mention to the last mention.", + "format": "float", + "type": "number" + }, + "entityConnectedness": { + "description": "The webref connectedness score of the entity.", + "format": "float", + "type": "number" + }, + "entityDescription": { + "description": "A short text describing the entity.", + "type": "string" + }, + "entityInfo": { + "$ref": "VideoContentSearchCaptionEntityDocInfo", + "description": "Information about how many documents the entity occurred in and how many total mentions the entity has across the entire video corpus." + }, + "entityMentionInDescription": { + "description": "Whether or not the entity mention text appears in the description of the video.", + "type": "boolean" + }, + "estimatedMentionTime": { + "description": "The estimated begin time in ms of the entity mention using the text offset divided by the ASR duration.", + "format": "int32", + "type": "integer" + }, + "groupCohesion": { + "description": "Average similarity between this anchor and other anchors in the set.", + "format": "float", + "type": "number" + }, + "hypernymConfidence": { + "description": "The confidence of the hypernym used as the set label.", + "format": "float", + "type": "number" + }, + "hypernymCount": { + "description": "Number of hypernyms used for calculating similarity.", + "format": "float", + "type": "number" + }, + "hyperpediaSalientTermsSimilarity": { + "description": "The cosine similarity between the document salient terms and the hyperpedia hypernyms for a given entity.", + "format": "float", + "type": "number" + }, + "inWebrefEntities": { + "description": "Whether or not this entity is in the webref entities.", + "type": "boolean" + }, + "isOracleEntity": { + "description": "True if the given entity appears as an Oracle followup query.", + "type": "boolean" + }, + "isProduct": { + "description": "Whether this entity counts as a 'product' for the purpose of dividing entities between the 'related topics' and 'products in this video' features.", + "type": "boolean" + }, + "maxMentionConfidence": { + "description": "The maximum confidence of all of the entity mentions in the transcript.", + "format": "float", + "type": "number" + }, + "mentionConfidence": { + "description": "The confidence that the ASR mention matches the given mid.", + "format": "float", + "type": "number" + }, + "mentions": { + "description": "Number of times an entity is mentioned in the ASR transcript.", + "format": "int32", + "type": "integer" + }, + "msFromLastAnchor": { + "description": "The duration in ms between this anchor and the previous anchor or the beginning of the video if this is the first anchor.", + "format": "int32", + "type": "integer" + }, + "nextAsrSentence": { + "description": "The ASR sentence after asr_sentence or \"\" if it is the last sentence.", + "type": "string" + }, + "otherAsrMentionText": { + "description": "The ASR text of each mention of the entity.", + "items": { + "type": "string" + }, + "type": "array" + }, + "otherEstimatedMentionTimes": { + "description": "Each time the entity was mentioned.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "previousAsrSentence": { + "description": "The ASR sentence before asr_sentence or \"\" if it is the first sentence.", + "type": "string" + }, + "trustedNameConfidence": { + "description": "The confidence that the ASR mention is a trusted name.", + "format": "float", + "type": "number" + }, + "webrefEntityTopicality": { + "description": "The webref entity topicality score if the entity is a webref entity and 0 if not.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchCaptionEntityAnchorSetFeatures": { + "description": "Features and debug info for clusters of caption entity video anchors.", + "id": "VideoContentSearchCaptionEntityAnchorSetFeatures", + "properties": { + "aggregateScore": { + "description": "The total score used for filtering and selecting entity sets.", + "format": "float", + "type": "number" + }, + "clusterSize": { + "description": "The prefiltered size of the entity set.", + "format": "int32", + "type": "integer" + }, + "entitiesInWebrefEntities": { + "description": "The number of entities in the anchor set that are in the webref entities.", + "format": "int32", + "type": "integer" + }, + "entityMentionInDescriptionCount": { + "description": "The number of anchors where the entity mention text appears in the description of the video.", + "type": "boolean" + }, + "groupCohesion": { + "description": "The average cosine similarity between hypernyms of members of the set.", + "format": "float", + "type": "number" + }, + "hypernym": { + "description": "The most prominent hypernym across the entities in the set.", + "type": "string" + }, + "hypernymSalience": { + "description": "The salience of the best hypernym for the set.", + "format": "float", + "type": "number" + }, + "medianMentions": { + "description": "Median number of times any member of the set was mentioned in the ASR transcript.", + "format": "int32", + "type": "integer" + }, + "mentionSalience": { + "description": "Mentions divided by the total number of entity mentions in the video.", + "format": "float", + "type": "number" + }, + "salience": { + "description": "Salience of the set computed by aggregating the hypernyms from each member and calculating the cosine similarity with the salient terms.", + "format": "float", + "type": "number" + }, + "topHypernym": { + "description": "The top N hypernyms for the entities in the set.", + "items": { + "type": "string" + }, + "type": "array" + }, + "totalMentions": { + "description": "Number of times any member of the group was mentioned in the ASR transcript.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchCaptionEntityDocInfo": { + "description": "Contains information about document appearances of an entity.", + "id": "VideoContentSearchCaptionEntityDocInfo", + "properties": { + "entityDocCount": { + "description": "The number of documents where this entity was mentioned at least once.", + "format": "int64", + "type": "string" + }, + "entityMentionCount": { + "description": "The number of times the entity was mentioned across the entire corpus.", + "format": "int64", + "type": "string" + }, + "mid": { + "description": "The entity id.", + "type": "string" + }, + "totalDocCount": { + "description": "The number of documents in the corpus.", + "format": "int64", + "type": "string" + }, + "totalMentionCount": { + "description": "The number of mentions of any entity across the entire corpus.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchCaptionInfo": { + "description": "Contains transcript-level data about a video whether it comes from ASR or closed captions.", + "id": "VideoContentSearchCaptionInfo", + "properties": { + "asrCaption": { + "items": { + "$ref": "VideoContentSearchAsrCaption" + }, + "type": "array" + }, + "saftDocument": { + "$ref": "NlpSaftDocument" + } + }, + "type": "object" + }, + "VideoContentSearchCaptionLabelFeatures": { + "description": "Contains timing and text for a given label.", + "id": "VideoContentSearchCaptionLabelFeatures", + "properties": { + "alignedOcrTexts": { + "description": "OCR anchors with overlapping time-window with this anchor", + "items": { + "$ref": "VideoContentSearchOCRText" + }, + "type": "array" + }, + "alignedTime": { + "description": "The time stamp in milliseconds for the reference text (e.g. description anchor time).", + "format": "int64", + "type": "string" + }, + "contextText": { + "description": "Text around the aligned_time of a long duration, say [-15 minutes, +15 minutes]", + "type": "string" + }, + "labelText": { + "description": "The main label text for the feature.", + "type": "string" + }, + "textSimilarityFeatures": { + "$ref": "VideoContentSearchTextSimilarityFeatures", + "description": "Identified matching text by similarity." + }, + "textSpanAtAlignedTime": { + "description": "The text span in the passage starting from the aligned time.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchCaptionSpanAnchorFeatures": { + "id": "VideoContentSearchCaptionSpanAnchorFeatures", + "properties": { + "dolphinFeatures": { + "$ref": "VideoContentSearchSpanDolphinFeatures", + "description": "The features used to construct the inference example." + }, + "dolphinScores": { + "$ref": "VideoContentSearchSpanDolphinScores", + "description": "The inference result from the Dolphin span model." + }, + "embeddingDistance": { + "description": "Embedding distances (e.g. cosine distance) to the other anchors of the same video.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "postGapInMs": { + "description": "Time gap in ms to the next anchor. Always positive number.", + "format": "int32", + "type": "integer" + }, + "preGapInMs": { + "description": "Time gap in ms to the previous anchor. Always a positive number.", + "format": "int32", + "type": "integer" + }, + "saftBeginTokenIndex": { + "description": "The range of tokens in video_info.saft_doc for the anchor label.", + "format": "int32", + "type": "integer" + }, + "saftEndTokenIndex": { + "format": "int32", + "type": "integer" + }, + "saftTranscriptEndCharOffset": { + "format": "int32", + "type": "integer" + }, + "saftTranscriptStartCharOffset": { + "description": "The range of characters in video_info.saft_transcript for the anchor label.", + "format": "int32", + "type": "integer" + }, + "spanAsrConfidenceStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the ASR confidence for the selected candidate." + }, + "spanDolphinScore": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the Dolphin span token scores for the selected candidate." + }, + "wordCount": { + "description": "Word count of the span text, tokenized with SAFT.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchCaptionSpanAnchorSetFeatures": { + "id": "VideoContentSearchCaptionSpanAnchorSetFeatures", + "properties": { + "anchorSetDolphinScoreStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the dolphin scores over the anchor set." + } + }, + "type": "object" + }, + "VideoContentSearchCommentAnchorSetFeatures": { + "description": "A message containing set-level comment anchor features. Next ID: 3", + "id": "VideoContentSearchCommentAnchorSetFeatures", + "properties": { + "replies": { + "items": { + "$ref": "VideoContentSearchCommentAnchorSetFeaturesComment" + }, + "type": "array" + }, + "rootComment": { + "$ref": "VideoContentSearchCommentAnchorSetFeaturesComment" + } + }, + "type": "object" + }, + "VideoContentSearchCommentAnchorSetFeaturesComment": { + "description": "A structure that represents a comment. Fields 1 through 6 are designed to store responses from the 3P YouTube Data API (see https://developers.google.com/youtube/v3/docs/comments). Field 7 is used to store the Google-internal representation of the comment; if it is populated, then all other fields may be empty. Next ID: 8", + "id": "VideoContentSearchCommentAnchorSetFeaturesComment", + "properties": { + "commentId": { + "description": "The ID that YouTube uses to uniquely identify the comment.", + "type": "string" + }, + "likeCount": { + "description": "The total number of likes (positive ratings) the comment has received.", + "format": "int32", + "type": "integer" + }, + "miniStanza": { + "$ref": "YoutubeCommentsClusteringMiniStanza", + "description": "The MiniStanza object that represents the comment. If populated, all other fields in this message may be empty." + }, + "publishedAt": { + "description": "The date and time when the comment was orignally published, specified in ISO 8601 format.", + "type": "string" + }, + "textDisplay": { + "description": "The comment's text, in HTML.", + "type": "string" + }, + "textOriginal": { + "description": "The original, raw text of the comment.", + "type": "string" + }, + "updatedAt": { + "description": "The date and time when the comment was last updated, specified in ISO 8601 format.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchDescriptionAnchorFeatures": { + "id": "VideoContentSearchDescriptionAnchorFeatures", + "properties": { + "entityTextCoverage": { + "description": "When the description anchor text has been recognized as an entity, how much of the description anchor text is covered by the entity mention.", + "format": "float", + "type": "number" + }, + "inAsr": { + "description": "Whether or not a mention of the description anchor exists in the ASR.", + "type": "boolean" + }, + "isDescriptionAnchor": { + "description": "Whether or not the anchor was created from the description for use in training data. This will be set to true for positive examples and false for negative examples.", + "type": "boolean" + }, + "spanToAsrTime": { + "description": "The distance from the ASR sentence to the description anchor time in ms.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchDescriptionAnchorSetFeatures": { + "id": "VideoContentSearchDescriptionAnchorSetFeatures", + "properties": { + "asrAnchorCount": { + "description": "The number of description anchors that were matched to captions in the ASR.", + "format": "int32", + "type": "integer" + }, + "asrAnchorFraction": { + "description": "The fraction of anchors that were matched to captions in the ASR.", + "format": "float", + "type": "number" + }, + "uniqueAsrMidCount": { + "description": "The number of unique mids which where matched to description anchors.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchDescriptionSpanInfo": { + "description": "Metadata about the span when the anchor source is description span.", + "id": "VideoContentSearchDescriptionSpanInfo", + "properties": { + "contextTokenCount": { + "description": "The number of tokens in the context (sentence) where the description span is extracted from.", + "format": "int32", + "type": "integer" + }, + "dolphinScores": { + "$ref": "VideoContentSearchSpanDolphinScores", + "description": "The inference result from the Dolphin span model if the anchor's source is description span." + }, + "spanDolphinScoreStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the Dolphin span token scores for the selected candidate. Currently, dolphin_scores in DescriptionSpanInfo would only contain a single span candidate so this field is essentially the copy of the score_stats for that span candidate." + }, + "spanTokenCount": { + "description": "The number of tokens in the description span. The description span is formed from non-contiguous segment spans of a sentence (context), where each segment span's score satifsies the min span thresholds.", + "format": "int32", + "type": "integer" + }, + "spanTokenCountRatio": { + "description": "The ratio of span_token_count / context_token_count.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchDolphinEnsembleScore": { + "description": "Contains information about the scores from each individual dolphin ensemble model.", + "id": "VideoContentSearchDolphinEnsembleScore", + "properties": { + "dolphinScore": { + "description": "The score generated by the Dolphin callout model.", + "format": "float", + "type": "number" + }, + "modelName": { + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchDolphinFeatures": { + "id": "VideoContentSearchDolphinFeatures", + "properties": { + "altQuery": { + "description": "The alt query used for building the Dolphin example.", + "type": "string" + }, + "answer": { + "description": "The answer used for building the Dolphin example.", + "type": "string" + }, + "query": { + "description": "The query used for building the Dolphin example.", + "type": "string" + }, + "timeMs": { + "description": "The time stamp of the video anchor in milliseconds.", + "format": "int64", + "type": "string" + }, + "title": { + "description": "The title used for building the Dolphin example.", + "type": "string" + }, + "url": { + "description": "The url of the video.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchDolphinScoringConfig": { + "id": "VideoContentSearchDolphinScoringConfig", + "properties": { + "descriptivenessOutputKey": { + "description": "The output put keys for Dolphin PredictResponse", + "type": "string" + }, + "ensembleModelNames": { + "description": "If the dolphin model is an ensemble model (e.g. Video QnA model which consists of 4 teacher models), stores each individual model name.", + "items": { + "type": "string" + }, + "type": "array" + }, + "inferenceBatchSize": { + "description": "The inference batch size to use for inference methods that handle batching.", + "format": "int32", + "type": "integer" + }, + "inferenceMethod": { + "description": "The method to use for inference. This must be set or inference will fail.", + "enum": [ + "NONE", + "RPC", + "IN_PROCESS" + ], + "enumDescriptions": [ + "", + "Use a remote model server (for example, TPU server) to run inference. If this mode is used, service_bns should be set.", + "Run inference in the flume workers. If this is used, model_path should be set." + ], + "type": "string" + }, + "maxRpcRetries": { + "description": "Holds value of flag --max_rpc_retries.", + "format": "int32", + "type": "integer" + }, + "modelName": { + "description": "Model name used for ModelSpec in PredictRequest used in the PredictionService API.", + "type": "string" + }, + "modelPath": { + "description": "Only used when using the bulk_inference API. See go/dolphin-models to learn about the different dolphin models.", + "type": "string" + }, + "outputKey": { + "description": "TODO(alexiaxu) To deprecate this field in the future Output key for Dolphin PredictResponse.", + "type": "string" + }, + "rpcDeadlineSeconds": { + "description": "Holds value of flag --rpc_deadline (converted to seconds).", + "format": "double", + "type": "number" + }, + "serviceBns": { + "description": "Tensorflow inference BNS address when using PredictionService API.", + "type": "string" + }, + "usefulnessOutputKey": { + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchEntityAnnotations": { + "description": "Entity annotations for one of the mids representing an anchor label or a query text.", + "id": "VideoContentSearchEntityAnnotations", + "properties": { + "category": { + "description": "The Webref category that this entity belongs to e.g. \"/moka/software\".", + "type": "string" + }, + "confidence": { + "description": "The overall confidence that this entity is annotated somewhere in the label.", + "format": "float", + "type": "number" + }, + "isRestricted": { + "description": "Whether or not this entity belongs to a set of blocklisted categories.", + "type": "boolean" + }, + "mid": { + "description": "The Webref entity mid.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchEntityGroupInfo": { + "id": "VideoContentSearchEntityGroupInfo", + "properties": { + "collectionId": { + "description": "Collection id.", + "type": "string" + }, + "label": { + "description": "Label for this anchor group.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchFrameSimilarityInterval": { + "description": "Frame-level similarities info for each topic for an interval of frames.", + "id": "VideoContentSearchFrameSimilarityInterval", + "properties": { + "frameSimilarity": { + "description": "The similarity between this topic and starburst features for frames in [frames[frame_level_starburst_start_index], frames[frame_level_starburst_start_index + len(frame_similarity)].", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "framesEndTimestampMs": { + "description": "Timestamp in milliseconds for the last frame in this frame interval.", + "format": "int64", + "type": "string" + }, + "framesStarburstStartIndex": { + "description": "The index of the first frame within this interval of similar frames. VideoMultimodalTopicFeatures.frame_starburst_data.", + "format": "int32", + "type": "integer" + }, + "framesStartTimestampMs": { + "description": "Timestamp in milliseconds for the first frame in this frame interval.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchFrameStarburstData": { + "description": "Starburst frame-level dense data.", + "id": "VideoContentSearchFrameStarburstData", + "properties": { + "denseVector": { + "description": "Raw float feature vector of the starburst representation.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "sbVersion": { + "description": "Starburst version. Possible values are: STARBURST_TEXT_V4 STARBURST_TEXT_V4_5 STARBURST_TEXT_V4_PLC STARBURST_TEXT_V5", + "enum": [ + "SIGNAL_VERSION_UNSPECIFIED", + "RAID_V1", + "RAID_V2", + "RAID_V2_2", + "RAID_V2_NEST", + "RAID_V3", + "RAID_FOREGROUND_SEGMENTER_V1", + "RAID_FOREGROUND_SEGMENTER_V2", + "RAID_PRODUCT_SEGMENTER_V1", + "RAID_PRODUCT_SEGMENTER_V2", + "BARCODE_V1", + "BARCODE_V2", + "BARCODE_V3", + "LOGO_DEEPLOGO", + "LOGO_V1", + "LOGO_V2", + "LOGO_V2_PLUS", + "LOGO_MNET_V2", + "LOGO_MNET_V2_HATE_SYMBOLS", + "ICA_HNET", + "ICA_INET", + "ICA_KNET", + "ICA_LNET", + "ICA_OIDV6_GNET", + "ICA_ONET", + "ICA_PNET", + "ICA_PNET_SENSITIVE", + "ICA_RNET", + "NIMA_VQ_V1", + "NIMA_AVA_V1", + "NIMA_VQ_V2", + "NIMA_AVA_V2", + "ATT_GMAIL", + "ATT_MS", + "IM2SHOP_LOCAL_V1", + "IM2SHOP_LOCAL_V2", + "NIMBY_RAW_V0", + "NIMBY_RAW_V1", + "NIMBY_TOKENIZER_V0", + "NIMBY_TOKENIZER_V1", + "IM2QUERY_LABELED_PRODUCTS_V1", + "IM2QUERY_LABELED_PRODUCTS_V2", + "PLACE_EMB_V1", + "PLACE_EMB_V2", + "STARBURST_V3", + "STARBURST_V4", + "STARBURST_V4_01", + "STARBURST_VISUAL_V4", + "STARBURST_V5", + "ATTRIBUTE_EMBEDDING_V1", + "PHOTOCAT_V1", + "PHOTOCAT_V3", + "PHOTOCAT_V4", + "PHOTOCAT_V5", + "STARBURST_TEXT_V4", + "STARBURST_TEXT_V4_5", + "STARBURST_TEXT_V4_PLC", + "STARBURST_TEXT_V5", + "STARBURST_TEXT_V5_PLC", + "COLLAGE_V1", + "SHOPPING_COLOR_INFO_V1_V2", + "SHOPPING_COLOR_INFO_V3", + "SHOPPING_COLOR_INFO_V3_WITHOUT_PER_DOMAIN_OUTPUTS", + "FOODNET_WIC_V1", + "FOODNET_WIC_V2", + "SINGLE_IMAGE_HOLISTIC_STABLE", + "SINGLE_IMAGE_HOLISTIC_EXP", + "MOKA_ATTRIBUTES_V1", + "MOKA_ATTRIBUTES_V1_1", + "MOKA_ATTRIBUTES_V1_2", + "MOKA_ATTRIBUTES_V2", + "GNN_OCR_EMB_V1", + "AKSARA_RPN_LAYOUT", + "GCN_LAYOUT", + "FACE_DETECTION_V1", + "FACE_DETECTION_LANDMARKLESS_V2", + "PRODUCT_POSE_SHOE_V1", + "GOCR_LATEST", + "GOCR_STABLE", + "PAGEBURST_V1", + "PAGEBURST_V2", + "ADSBURST_V09", + "ADSBURST_COMP_V09", + "ADSBURST_V1_COMP", + "ADSBURST_V1_CONCAT", + "ADSBURST_BASIC_COAT4_V0", + "ADSBURST_HUBBLE_V1_COMP", + "ADSBURST_HUBBLE_V1_CONCAT", + "ADSBURST_DISCOVERY_UNCOMFORTABLE_V1", + "ADSBURST_DISCOVERY_NERV_SUBS_V1", + "ADSBURST_BASIC_TEXT_TOWER_V0", + "SHOPPING_IMAGE_TRANSFORMATION_UNCROP", + "SHOPPING_IMAGE_TRANSFORMATION_V2", + "SCREENAI_V1", + "SCREENAI_V2", + "SCREENAI_V2_MOBILE", + "SCREENAI_CLASSIFIER_V1", + "PERSONNET_V4", + "PERSONNET_V5", + "DEEP_IMAGE_ENGAGINGNESS_V1" + ], + "enumDescriptions": [ + "UNSPECIFIED case for default value 0.", + "Raid versions.", + "", + "", + "Trained on RAID + Nest combined data, which improved detector performance on surveillance video frames.", + "", + "", + "", + "", + "", + "Barcode versions.", + "", + "", + "Logo versions.", + "DeepLogo", + "LogoMNet V1", + "LogoMNet V1 model with V2 index.", + "LogoMNet V2", + "LogoMNet V2 with hate symbol recognition.", + "ICA versions.", + "", + "", + "", + "", + "", + "", + "", + "", + "Nima versions.", + "", + "", + "", + "Attachment icon versions.", + "", + "Im2Shop local feature versions.", + "", + "NIMBY versions. The original version of the NIMBY raw feature from Q3 2019.", + "\"Mobile NIMBY\": A lightweight NIMBY model that take grayscale inputs. The output dimension is the same as NIMBY_V0, but the embeddings are different. Significant latency wins over NIMBY_V0 and also some quality wins.", + "The original version of NIMBY Tokens from Q3 2019.", + "\"Mobile NIMBY Tokens\": A lightweight NIMBY model that take grayscale inputs. The output dimension is the same as NIMBY_V0, but the embeddings are different. Significant latency wins over NIMBY_V0 and also some quality wins.", + "Im2Query labeled products versions.", + "", + "Place embedding versions.", + "", + "Starburst versions. LINT.IfChange", + "", + "Starburstv4 with stretch resize.", + "", + "LINT.ThenChange(//depot/google3/image/content/proto/image_content.proto)", + "Attribute embedding versions.", + "PhotoCat versions. The photocat v1 signal is based on the photocat qic v1 model trained from the Starburst v3 embeddings and the ICA labels.", + "The photocat v3 signal is based on the photocat qic v3 model trained from the Starburst v4.5 embeddings.", + "The photocat v4 signal is based on the photocat qic v4 model trained from the Starburst v5 embeddings.", + "The photocat v5 signal is based on the photocat qic v5 model trained from the Starburst v5.5 embeddings.", + "Starburst text co-embedding versions.", + "", + "", + "", + "", + "Image collage model versions.", + "ColorInfo versions", + "When both SHOPPING_COLOR_INFO_V3_WITHOUT_PER_DOMAIN_OUTPUTS and SHOPPING_COLOR_INFO_V3 are in the request, SHOPPING_COLOR_INFO_V3's response is returned.", + "", + "FoodNet whole image classifier versions.", + "", + "Single Image Holistic versions.", + "", + "Moka attributes.", + "", + "", + "", + "GNN OCR embedding.", + "OCR Page layout analysis versions.", + "", + "Face Detection versions. These versions are only used with module_wanted: \"face_detection\", with the intent of deprecating module_wanted: \"face_detection_nextgen\". When using FACE_DETECTION_V1, models with and without landmarks are specified by setting the \"Source\" value in VisualSearchRequestContext.face_detection_options to either FACESSD or FACESSD_LANDMARKLESS. Going forward, all new versions of face detectors will use the following enums to indicate whether the model produces landmarks, with a version numbering specifying how recent that model is. E.g. FACE_DETECTION_V3 will use a newer face detection model than FACE_DETECTION_V2, while FACE_DETECTION_LANDMARKLESS_V3 will use a newer landmarkless face detection model than FACE_DETECTION_LANDMARKLESS_V2.", + "", + "Pursuit product pose versions.", + "GOCR versions.", + "", + "Pageburst versions.", + "", + "Adsburst versions.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Shopping image transformation versions.", + "", + "ScreenAI versions. IconNet.", + "IconNet, any image size.", + "IconNet, mobile image size.", + "ScreenAI classifier versions.", + "PersonNet versions.", + "", + "Deep image engagingness versions." + ], + "type": "string" + }, + "timestampMs": { + "description": "Timestamp in milliseconds for this frame.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchGenerativePredictionFeatures": { + "id": "VideoContentSearchGenerativePredictionFeatures", + "properties": { + "passage": { + "description": "Features for inferences from generative models.", + "type": "string" + }, + "predictions": { + "description": "Inference results.", + "items": { + "type": "string" + }, + "type": "array" + }, + "target": { + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchGenerativeTopicPredictionFeatures": { + "description": "The inference result features coming from the prediction service that generates the topics.", + "id": "VideoContentSearchGenerativeTopicPredictionFeatures", + "properties": { + "groundTruthTopic": { + "description": "This field is present if we already have a ground truth topic from the training data.", + "type": "string" + }, + "modelName": { + "description": "The name of the model where the predictions come from.", + "type": "string" + }, + "predictions": { + "description": "Inference results from the prediction service. Since we generally use beam search with beam_size \u003e 1, this field is repeated to capture all the generated topic beams.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoContentSearchInstructionAnchorFeatures": { + "description": "Anchor-level Metadata about Instruction anchors. TODO(keyvana) Update this proto.", + "id": "VideoContentSearchInstructionAnchorFeatures", + "properties": {}, + "type": "object" + }, + "VideoContentSearchInstructionTrainingDataAnchorFeatures": { + "description": "Anchor-level metadata about the instruction anchors. Each instruction passage anchor can contain multiple instruction steps and multiple description anchors and thus the following fields are defined as repeated.", + "id": "VideoContentSearchInstructionTrainingDataAnchorFeatures", + "properties": { + "bestAsrAndDescriptionAnchorsMatchInfo": { + "description": "The match info about the description anchor matches with the ASR n-grams in the instruction passage. Each element represents the best match between a given description anchor and all qualified n-grams within the passage.", + "items": { + "$ref": "VideoContentSearchSimilarityMatchInfo" + }, + "type": "array" + }, + "bestDescriptionAndInstructionAnchorsMatchInfo": { + "description": "The match info about the description anchor matches with the instruction anchors in a instruction passage. Each element represents the best match between a given description anchor and all the instruction anchors in the passage.", + "items": { + "$ref": "VideoContentSearchSimilarityMatchInfo" + }, + "type": "array" + }, + "instructionAnchorsMatchInfo": { + "description": "The match info about the instruction steps matches with the ASR. Each instruction step corresponds to a step extracted from a web doc. Each instruction passage can contain multiple instruction step matches thus the repeated field.", + "items": { + "$ref": "VideoContentSearchSimilarityMatchInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoContentSearchListAnchorFeatures": { + "description": "Anchor-level Metadata about list description anchors.", + "id": "VideoContentSearchListAnchorFeatures", + "properties": { + "babelMatch": { + "$ref": "VideoContentSearchTextMatchInfo", + "description": "The babel match info of the list anchor with its matched ASR text." + }, + "descriptionSpanInfo": { + "$ref": "VideoContentSearchDescriptionSpanInfo", + "description": "The description span metadata about list anchor when the anchor source is DESCRIPTION_SPANS." + }, + "listItemIndex": { + "description": "The list item index of this anchor in the video description.", + "format": "int32", + "type": "integer" + }, + "matchScores": { + "description": "The metadata about this list item's matches with different ASR snippets. This is currently used in the base model (DTW) to generate candidate anchors.", + "items": { + "$ref": "VideoContentSearchMatchScores" + }, + "type": "array" + }, + "pretriggerScore": { + "description": "The score from the pretrigger model.", + "format": "float", + "type": "number" + }, + "titleAnchorBabelMatchScore": { + "description": "Babel similarity between the anchor and the video title.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchListAnchorSetFeatures": { + "description": "Cluster-level Metadata about list anchors. Next id: 15.", + "id": "VideoContentSearchListAnchorSetFeatures", + "properties": { + "aggregatedSpanText": { + "description": "The following fields are used for description span anchors, The aggregated span token texts over all the span candidates of the anchor set.", + "type": "string" + }, + "anchorSetSpanScoreStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the span scores over the anchor set. This summary is calculated over the aggregation of the individual token spans belonging to the span candidates of anchors." + }, + "babelMatchScoreStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Median, average and standard deviation of babel_match_score among anchors in the same VideoAnchors cluster." + }, + "contextTokenCountStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the context token counts over the anchor set." + }, + "durationSpanRatio": { + "description": "The ratio of anchors timespan duration over the total duration of the video. Anchors timespan duration is defined as the time span from the first anchor to the last anchor in VideoAnchors.", + "format": "float", + "type": "number" + }, + "durationToPredictedTimeMsStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Median, average and standard deviation of duration_to_predicted_time_ms among anchors in the same VideoAnchors cluster." + }, + "listAnchorSource": { + "description": "The source of anchors extracted from the video descriptions.", + "enum": [ + "UNKNOWN_SOURCE", + "ORDERED_LIST_PARSER", + "DESCRIPTION_SPANS", + "STEPS_PARSER", + "DESCRIPTION_LIST_EXTRACTION" + ], + "enumDescriptions": [ + "", + "Anchors that are generated from ordered list parser of webanswers.", + "Anchors that are generated from applying the span model to the video description.", + "Anchors that are generated from the steps parser that extracts certain template list patterns for a video description.", + "Anchors generated by extracting ordered list elements from video description." + ], + "type": "string" + }, + "listDescriptionItemsSize": { + "description": "The total number of list items mentioned in the video description. Not all these list items are necessarily found as list anchors.", + "format": "int32", + "type": "integer" + }, + "matchedListDescriptionAnchorsRatio": { + "description": "The number of matched anchors in the list anchors over the total number of post-filtering list items in the video description, i.e. matched_list_description_anchors_ratio = matched_list_description_anchors_size / post_filtering_list_description_items_size.", + "format": "float", + "type": "number" + }, + "matchedListDescriptionAnchorsSize": { + "description": "The number of matched list anchors found in the ASR. The matched list anchors are a subset of the post-filtering list items in the video description, and as such matched_list_description_anchors_size \u003c= post_filtering_list_description_items_size.", + "format": "int32", + "type": "integer" + }, + "postFilteringListDescriptionItemsSize": { + "description": "The total number of list items in the video description that are actually considered for matching. This is a subset of list items in the video description that passed filterings such as language filtering, i.e. post_filtering_list_description_items_size \u003c= list_description_items_size", + "format": "int32", + "type": "integer" + }, + "pretriggerScoreStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Median, average and standard deviation of pretrigger_score among anchors in the same cluster." + }, + "spanTokenCountRatioStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the span token count ratios over the anchor set." + }, + "spanTokenCountStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the span token counts over the anchor set." + } + }, + "type": "object" + }, + "VideoContentSearchListTrainingDataAnchorFeatures": { + "description": "Anchor-level metadata about the description anchors used as list items to build training data for list anchors.", + "id": "VideoContentSearchListTrainingDataAnchorFeatures", + "properties": { + "descriptionAnchorTimeMs": { + "description": "The timestamp of when the description anchor is annotated to appear in the video in ms.", + "format": "int32", + "type": "integer" + }, + "descriptionAnchorTimeToMatchedTimeMs": { + "description": "The time gap of when the description anchor is annotated to appear in the video (description_anchor_time_ms) from when it's matched in the ASR as the list anchor.", + "format": "int64", + "type": "string" + }, + "editDistance": { + "description": "Closest edit distance between the anchor generated by description span and the description anchor where the span anchor must be within small threshold time difference of the description anchor timestamp.", + "format": "int32", + "type": "integer" + }, + "editDistanceRatio": { + "description": "edit_distance over the description anchor's label length.", + "format": "float", + "type": "number" + }, + "matchedDescriptionText": { + "description": "The description anchor text used for matching to Span anchor text.", + "type": "string" + }, + "matchedSpanText": { + "description": "The description span anchor text that was the best match for the nearby description anchor.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchListTrainingDataSetFeatures": { + "description": "Cluster-level metadata about the description anchors used as list items to build training data for list anchors.", + "id": "VideoContentSearchListTrainingDataSetFeatures", + "properties": { + "editDistanceRatioStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Summary of the edit_distance_ratios of the description spans from their best matched description anchor texts." + }, + "editDistanceStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Summary of the edit_distances of the description spans from their best matched description anchor texts." + }, + "matchedDescriptionAnchorsTimegapStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Median, average and standard deviation of time gaps of when the description anchors is annotated to appear in the video (description_anchor_time_ms) from when they are matched in the ASR as the list description anchors." + }, + "numDescriptionAnchors": { + "description": "Number of description anchors in the description of this video.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchMatchScores": { + "id": "VideoContentSearchMatchScores", + "properties": { + "matchInfo": { + "items": { + "$ref": "VideoContentSearchTextMatchInfo" + }, + "type": "array" + }, + "method": { + "description": "The method used for matching, e.g. 'babel', 'nlp', 'neon', ßß'phonetic'.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchMetricStats": { + "description": "Median, mean and standard deviation of a feature value.", + "id": "VideoContentSearchMetricStats", + "properties": { + "max": { + "format": "float", + "type": "number" + }, + "mean": { + "format": "float", + "type": "number" + }, + "median": { + "format": "float", + "type": "number" + }, + "min": { + "format": "float", + "type": "number" + }, + "stddev": { + "format": "float", + "type": "number" + }, + "sum": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchMultimodalTopicFeatures": { + "description": "Multimodal features for a single generated topic. Next ID: 8", + "id": "VideoContentSearchMultimodalTopicFeatures", + "properties": { + "frameSimilarityInterval": { + "description": "The list of frame sequence similarities to this topic. The list of frames are picked to be around the topic timestamp. The set of frames selected are thresholded at a value to ensure the selected frame intervals are similar to the query.", + "items": { + "$ref": "VideoContentSearchFrameSimilarityInterval" + }, + "type": "array" + }, + "generativeTopicPredictionFeatures": { + "description": "The inference results from the prediction services that generate the topics.", + "items": { + "$ref": "VideoContentSearchGenerativeTopicPredictionFeatures" + }, + "type": "array" + }, + "navboostAnchorFeatures": { + "$ref": "VideoContentSearchNavboostAnchorFeatures", + "description": "Features related to queries generated using document navboost data with timed anchors. Only populated if the query was generated using this approach." + }, + "topic": { + "description": "The text of the generated topic.", + "type": "string" + }, + "topicEndMs": { + "description": "End time of the topic.", + "format": "int64", + "type": "string" + }, + "topicStartMs": { + "description": "Start time of the topic.", + "format": "int64", + "type": "string" + }, + "videoQuerySource": { + "description": "How the query was generated.", + "enum": [ + "UNKNOWN_QUERY_SOURCE", + "NAVBOOST_ANCHOR", + "ORACLE", + "GENERATED_NAVBOOST_ANCHOR", + "GENERATED_AQUARIUM_RETRIEVAL", + "ORACLE_PER_RESULT", + "ENTITY_ANCHOR", + "PRODUCT_ANCHOR", + "ANCHOR", + "RANKEMBED_GENERATED_NAVBOOST_ANCHOR" + ], + "enumDescriptions": [ + "", + "Queries generated from a combination of video anchors and navboost queries.", + "Queries from Oracle result-set followups.", + "Queries generated with a generative model using Navboost-anchors as training data.", + "Queries generated with a generative model with training data from a retrieval model fetching queries with Aquarium and scoring them against video passages.", + "Queries from Oracle per-result followups.", + "Queries from entities extracted by Webref from the video transcript.", + "Queries extracted from different data sources for the Related Products feature.", + "Queries from the anchor text directly.", + "Queries generated from the rankembed nearest neighbor candidates of the Navboost-anchors." + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchMultimodalTopicTrainingFeatures": { + "description": "Multimodal features for a single generated topic used to build training data.", + "id": "VideoContentSearchMultimodalTopicTrainingFeatures", + "properties": { + "maxFrameSimilarityInterval": { + "$ref": "VideoContentSearchFrameSimilarityInterval", + "description": "The similarity info for the frame with maximum similarity to the topic in its visual interval. The repeated similarity field in this proto has a single value corresponding to the maximum similarity. This similarity score is used to filter and pick the training data examples." + }, + "normalizedTopic": { + "description": "The topic/query normalized for Navboost and QBST lookups as well as fetching of the Rankembed nearest neighbors.", + "type": "string" + }, + "qbstTermsOverlapFeatures": { + "$ref": "VideoContentSearchQbstTermsOverlapFeatures", + "description": "QBST terms overlap features for a candidate query." + }, + "rankembedNearestNeighborsFeatures": { + "$ref": "VideoContentSearchRankEmbedNearestNeighborsFeatures", + "description": "Rankembed similarity features for a candidate nearest neighbor rankembed query." + }, + "saftEntityInfo": { + "$ref": "VideoContentSearchSaftEntityInfo", + "description": "The information about the saft entity annotation for this topic." + }, + "topicDenseVector": { + "description": "Raw float feature vector of the topic's co-text embedding representation in the Starburst space.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoContentSearchNamedEntity": { + "description": "Message for SAFT named entities.", + "id": "VideoContentSearchNamedEntity", + "properties": { + "entityType": { + "description": "Type name: e.g. /saft/person for a person's name.", + "type": "string" + }, + "text": { + "description": "Text referring to an entity of type entity_type;", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchNavboostAnchorFeatures": { + "description": "Features for queries generated using document navboost data with timed anchors.", + "id": "VideoContentSearchNavboostAnchorFeatures", + "properties": { + "anchorText": { + "description": "The anchor text used in the generated query.", + "type": "string" + }, + "navboostText": { + "description": "The navboost query used in the generated query.", + "type": "string" + }, + "source": { + "description": "How the navboost-anchor query was constructed.", + "enum": [ + "UNKNOWN_NAVBOOST_ANCHOR_SOURCE", + "ANCHOR_TEXT", + "NAVBOOST_AND_ANCHOR_TEXT", + "ANCHOR_SIMILAR_QUERY", + "NAVBOOST_AND_ANCHOR_SIMILAR_QUERY" + ], + "enumDescriptions": [ + "", + "The cleaned anchor text.", + "The cleaned anchor text concatenated with a navboost query for the video.", + "A similar query to the cleaned anchor text.", + "A similar query to the navboost-anchor concatenation." + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchOCRText": { + "description": "Contains OCR text, its start time and additional details about position/fonts", + "id": "VideoContentSearchOCRText", + "properties": { + "ocrFeature": { + "$ref": "VideoContentSearchOnScreenTextFeature", + "description": "Additional details about position/font/color etc. for the OCR text" + }, + "ocrText": { + "description": "The OCR recognized text label", + "type": "string" + }, + "timeMs": { + "description": "The time in ms at which the OCR text appears on the frame", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchOcrAsrFeature": { + "id": "VideoContentSearchOcrAsrFeature", + "properties": { + "minCharEditDistance": { + "description": "The minimum char edit distance between the normalized OCR text and candidate word strings taken from a time window around the OCR appearance.", + "format": "int32", + "type": "integer" + }, + "minCharEditDistanceAsrText": { + "description": "The matched ASR candidate for minimum char edit distance.", + "type": "string" + }, + "minCharEditDistancePercent": { + "description": "The min_char_edit_distance divided by the length of the OCR string.", + "format": "float", + "type": "number" + }, + "ocrTextNormalizedForCharMatch": { + "description": "The normalized OCR text which was used to match the candidate.", + "type": "string" + }, + "ocrTextNormalizedForCharMatchLength": { + "description": "The length of the normalized OCR text.", + "format": "int32", + "type": "integer" + }, + "pretriggerScore": { + "description": "The score from the pretrigger model.", + "format": "float", + "type": "number" + }, + "wordOverlapAsrText": { + "description": "The ASR text that was used for the word overlap calculation.", + "type": "string" + }, + "wordOverlapCount": { + "description": "The number of words found both in the OCR text and the ASR in a time window around OCR appearance.", + "format": "int32", + "type": "integer" + }, + "wordOverlapPercent": { + "description": "The word_overlap_count divided by the number of words in the OCR text.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchOcrAsrSetFeature": { + "id": "VideoContentSearchOcrAsrSetFeature", + "properties": { + "normalizedWordOverlapScore": { + "description": "The word_overlap_score divided by the greatest word_overlap_score for any cluster in the VideoAnchorSets.", + "format": "float", + "type": "number" + }, + "wordOverlapScore": { + "description": "A score based on the number of overlapped words between the OCR and ASR for anchors in the cluster.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures": { + "description": "Metadata about the join of description anchors and OCR data which is used to build training data.", + "id": "VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures", + "properties": { + "editDistance": { + "description": "The string edit distance from the anchor label to the nearest OCR text.", + "format": "int32", + "type": "integer" + }, + "editDistanceRatio": { + "description": "edit_distance over the description anchor's label length.", + "format": "float", + "type": "number" + }, + "matchedDescriptionText": { + "description": "The description anchor text used for matching to OCR text.", + "type": "string" + }, + "matchedFrameTimeMs": { + "description": "The time of the selected OCR frame in ms. The best frame in a window around the target description anchor will be selected.", + "format": "int32", + "type": "integer" + }, + "matchedOcrText": { + "description": "The OCR text that was the best match for the nearby description anchor.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchOcrDescriptionTrainingDataSetFeatures": { + "description": "Metadata about the join of description anchors and OCR data for a set of description anchors.", + "id": "VideoContentSearchOcrDescriptionTrainingDataSetFeatures", + "properties": { + "maxEditDistance": { + "description": "The max edit distance of any description anchor to its closest OCR text.", + "format": "int32", + "type": "integer" + }, + "maxEditDistanceRatio": { + "description": "The maximum of (edit distance of any description anchor to its closest OCR text over description anchor label length).", + "format": "float", + "type": "number" + }, + "medianEditDistance": { + "description": "The median edit distance of any description anchor to its closest OCR text.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchOcrVideoFeature": { + "description": "Features for video level info.", + "id": "VideoContentSearchOcrVideoFeature", + "properties": { + "averageTextAreaRatio": { + "description": "Average text area ratio throughout video frames. Text area ratio for a frame is defined by sum(text area) / image area.", + "format": "float", + "type": "number" + }, + "clusterIdToFrameSize": { + "additionalProperties": { + "format": "int32", + "type": "integer" + }, + "description": "Cluster id to the num of frames in each cluster.", + "type": "object" + }, + "durationInMs": { + "description": "Total time of this video in milliseconds.", + "format": "int32", + "type": "integer" + }, + "langIdDetectedLanguage": { + "description": "Video level detected language by lang id, aggregated from each frame.", + "type": "string" + }, + "numClusters": { + "description": "The number of ShotInfo clusters.", + "format": "int32", + "type": "integer" + }, + "numFrames": { + "description": "The number of video frames contained in ShotInfo cluster.", + "format": "int32", + "type": "integer" + }, + "ocrDetectedLanguage": { + "description": "Video level detected language, aggregated from each frame.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchOnScreenTextClusterFeature": { + "description": "Features for the set of OnScreenText.", + "id": "VideoContentSearchOnScreenTextClusterFeature", + "properties": { + "averageConfidence": { + "description": "Average confidence.", + "format": "float", + "type": "number" + }, + "averageDurationRatio": { + "format": "float", + "type": "number" + }, + "averageHorizontalPosition": { + "format": "float", + "type": "number" + }, + "averageOcrTextLength": { + "description": "Deprecated. Please use ocr_text_length_stats.median instead. The average length of anchor labels. average_ocr_text_length is deprecated, because now ocr_text_length_stats has a field for holding the same value.", + "format": "float", + "type": "number" + }, + "averageOfAverageTextHeightRatio": { + "description": "Deprecated. Please use text_height_ratio_stats.mean instead. Average value of text height ratio (over image height), which is taken average over the same text. average_of_average_text_height_ratio is deprecated, because now text_height_ratio_stats has a field for keeping the same value.", + "format": "float", + "type": "number" + }, + "averageVerticalPosition": { + "description": "Average of label center position.", + "format": "float", + "type": "number" + }, + "clusterRatio": { + "description": "The number of anchors in the cluster over the number of anchors in the video.", + "format": "float", + "type": "number" + }, + "clusterSize": { + "description": "The number of anchors in the cluster.", + "format": "int32", + "type": "integer" + }, + "countingNumberRatio": { + "description": "The number of anchors that had a counting number over the number of anchors in total.", + "format": "float", + "type": "number" + }, + "durationMsStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Median, average and standard deviation of duration_ms among anchors in the same cluster." + }, + "frameSizeRatio": { + "description": "Frame size ratio over total frames in video.", + "format": "float", + "type": "number" + }, + "logOcrTextLengthStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Average and standard deviation of logarithm of the length of labels among anchors in the same cluster." + }, + "logTextHeightRatioStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Average and standard deviation of log(average_text_height_ratio) among anchors in the same cluster." + }, + "logp1000DurationMsStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Average and standard deviation of log(1000 + duration_ms) among anchors in the same cluster. Since duration_ms can be zero, 1000 is added before applying logarithm." + }, + "maxVideoDurationRatioBetweenAnchors": { + "description": "The maximum ratio of duration between two consecutive anchors to video duration. This is calculated after all anchor filtering has been completed.", + "format": "float", + "type": "number" + }, + "maximumDurationRatio": { + "description": "Stats for ratio of frame time intervals, over total video time.", + "format": "float", + "type": "number" + }, + "medianClusteringDistance": { + "description": "The median cluster distance for the anchors in the cluster. The way the distance is calculated will vary depending on the clustering method.", + "format": "float", + "type": "number" + }, + "medianDurationRatio": { + "format": "float", + "type": "number" + }, + "medianOfAverageTextHeightRatio": { + "description": "Deprecated. Please use text_height_ratio_stats.median instead. Median value of text height ratio (over image height), which is taken average over the same text. median_of_average_text_height_ratio is deprecated, because now text_height_ratio_stats has a field for keeping the same value.", + "format": "float", + "type": "number" + }, + "ocrAsrFeature": { + "$ref": "VideoContentSearchOcrAsrSetFeature", + "description": "Features for the overlap between OCR and ASR." + }, + "ocrTextLengthStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Median, average and standard deviation of the length of labels among anchors in the same cluster." + }, + "stddevDurationRatio": { + "format": "float", + "type": "number" + }, + "textHeightRatioStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "Median, average and standard deviation of average_text_height_ratio among anchors in the same cluster." + } + }, + "type": "object" + }, + "VideoContentSearchOnScreenTextFeature": { + "description": "Keep feature values which are useful to filter titles, labels.", + "id": "VideoContentSearchOnScreenTextFeature", + "properties": { + "averageAngle": { + "description": "The average of rotation angles (degree) of texts.", + "format": "float", + "type": "number" + }, + "averageConfidence": { + "description": "Average value of confidence.", + "format": "float", + "type": "number" + }, + "averageFontsize": { + "description": "Font size or weight information. This is extracted from internal message, so may not be available in future.", + "format": "float", + "type": "number" + }, + "averageFontweight": { + "format": "float", + "type": "number" + }, + "averageHeightRatio": { + "format": "float", + "type": "number" + }, + "backgroundBlue": { + "format": "float", + "type": "number" + }, + "backgroundGray": { + "format": "float", + "type": "number" + }, + "backgroundGreen": { + "format": "float", + "type": "number" + }, + "backgroundRed": { + "format": "float", + "type": "number" + }, + "boxHeightRatio": { + "format": "float", + "type": "number" + }, + "boxWidthRatio": { + "description": "Box width and height ratio, against to the frame size, so the value range is [0, 1]. If this text feature consists of multiple text boxes, the box width / height is a union of each text box.", + "format": "float", + "type": "number" + }, + "centerHorizontalPositionRatio": { + "description": "Horizontal position of the center of this text, by ratio [0.0, 1.0].", + "format": "float", + "type": "number" + }, + "centerVerticalPositionRatio": { + "description": "Vertical position of the center of this text, by ratio [0.0, 1.0].", + "format": "float", + "type": "number" + }, + "countingNumber": { + "description": "Counting number in this anchor's original label.", + "format": "int32", + "type": "integer" + }, + "countingNumberOooRatio": { + "description": "# of numbered anchors that are not out-of-order / # of all the numbered anchors. If no counting number is detected, this will be empty.", + "format": "float", + "type": "number" + }, + "countingNumberPrefix": { + "description": "Prefix for counting number in this anchor's label. If no counting number is detected, this will be empty.", + "type": "string" + }, + "countingNumberSuffix": { + "description": "Suffix for counting number in this anchor's label. If no counting number is detected, this will be empty.", + "type": "string" + }, + "durationMs": { + "description": "Duration time in millisec.", + "format": "int32", + "type": "integer" + }, + "foregroundBlue": { + "format": "float", + "type": "number" + }, + "foregroundGray": { + "description": "Color information, normalized to [0-1]. This color information is extracted from the largest word in the line entities of PageLayout message. See goodoc::PageLayoutEntity::Colors for details.", + "format": "float", + "type": "number" + }, + "foregroundGreen": { + "format": "float", + "type": "number" + }, + "foregroundRed": { + "format": "float", + "type": "number" + }, + "hadUrlInLabel": { + "description": "Whether or not this anchor had URL in its label before the label fixing step.", + "type": "boolean" + }, + "handwrittenTextRatio": { + "description": "# of LINE entities that are recognized as handwritten texts over # of merged LINE entities.", + "format": "float", + "type": "number" + }, + "isCountingNumberOoo": { + "description": "Whether or not the counting number in this anchor's label is out-of-order. If no counting number is detected, this will be empty.", + "type": "boolean" + }, + "languages": { + "description": "Languages predicted by OCR. \"repeated\" is employed for this field because LINE entities of PageLayout message are sometimes annotated with multiple languages, and also two VideoAnchor that are annotated with different languages can be merged into one VideoAnchor. When two VideoAnchor are merged into one, the weight field values of the new VideoAnchor will be the average of weight field values weighted by merged_line_count.", + "items": { + "$ref": "GoodocLanguageCombinationLanguage" + }, + "type": "array" + }, + "leftPositionRatio": { + "description": "Left position of this text, by ratio [0, 1].", + "format": "float", + "type": "number" + }, + "medianClusteringDistance": { + "description": "The median distance between this anchor and other anchors in the cluster. The way the distance is calculated will vary depending on the clustering method.", + "format": "float", + "type": "number" + }, + "mergedLineCount": { + "description": "The number of LINE entities used for this text.", + "format": "int32", + "type": "integer" + }, + "occurrenceCount": { + "description": "The number of OCR texts that have the same text among temporally-merged OCR texts.", + "format": "float", + "type": "number" + }, + "occurrenceRatio": { + "description": "occurrence_count over the number of anchors merged to this anchor.", + "format": "float", + "type": "number" + }, + "ocrAsrFeature": { + "$ref": "VideoContentSearchOcrAsrFeature", + "description": "Features for the overlap between OCR and ASR." + }, + "originalLabel": { + "description": "The label this VideoAnchor originally had before label clearning steps.", + "type": "string" + }, + "relativeShotTimeMsPosteriorToEndTime": { + "format": "int32", + "type": "integer" + }, + "relativeShotTimeMsPosteriorToStartTime": { + "format": "int32", + "type": "integer" + }, + "relativeShotTimeMsPriorToEndTime": { + "format": "int32", + "type": "integer" + }, + "relativeShotTimeMsPriorToStartTime": { + "description": "Shot boundary time nearest to OnScreenText's start and end time. The time is relative to each OnScreenText's start / end time (ex. -1 means shot time exists prior to the start / end time). If shot time and start/end time is the same, 0 is set in 'prior' field. If no shot info is available, the below fields are not set.", + "format": "int32", + "type": "integer" + }, + "shotInfoCountDuringText": { + "format": "int32", + "type": "integer" + }, + "topOcrLanguage": { + "description": "OCR language that has the highest weight.", + "type": "string" + }, + "topPositionRatio": { + "description": "Note that top-left position is (0, 0) for position values. Top position of this text, by ratio [0, 1].", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchQbstTermsOverlapFeatures": { + "description": "QBST terms overlap features for the candidate query.", + "id": "VideoContentSearchQbstTermsOverlapFeatures", + "properties": { + "qbstAnchorOverlap": { + "description": "Fraction of salient terms of original query covered by anchor text.", + "format": "float", + "type": "number" + }, + "qbstNavboostOverlap": { + "description": "Fraction of salient terms of original query covered by top navboost query of the video.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchQnaAnchorFeatures": { + "description": "Features for individual Q\u0026A anchors. Next ID: 23", + "id": "VideoContentSearchQnaAnchorFeatures", + "properties": { + "answer": { + "description": "Segment of text from the ASR.", + "type": "string" + }, + "descartesDotScore": { + "format": "float", + "type": "number" + }, + "descartesRankingScore": { + "format": "float", + "type": "number" + }, + "dolphinModelType": { + "enum": [ + "DOLPHIN_MODEL_TYPE_UNKNOWN", + "VIDEO_QA_TEACHER_V2", + "VIDEO_QA_V11" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "dolphinScore": { + "description": "Dolphin score calculated using the question as the query, the ASR passage as the answer. See go/dolphin-models to learn more.", + "format": "float", + "type": "number" + }, + "editDistance": { + "description": "Edit distance of the question and the title from 0 to 1 where 1 is most similar.", + "format": "float", + "type": "number" + }, + "endMs": { + "description": "End time in milliseconds relative to the beginning of the video.", + "format": "int64", + "type": "string" + }, + "ensembleScore": { + "format": "float", + "type": "number" + }, + "isDuplicateOfTitle": { + "description": "True if question_title_similarity is less than 0.2.", + "type": "boolean" + }, + "neonScore": { + "description": "Neon similarity of question and title.", + "format": "float", + "type": "number" + }, + "pointwiseNormalizedGapScore": { + "description": "Pointwise GAP normalized score. Score ranges from 0 to 1 and corresponds to GAP precision. See go/wa-cgap-to-pgap-migration to learn more.", + "format": "float", + "type": "number" + }, + "qbstScore": { + "description": "QBST similarity of question and title.", + "format": "float", + "type": "number" + }, + "queryCount": { + "description": "NavBoostFeature f_query_count for questions that are NavBoost queries.", + "format": "float", + "type": "number" + }, + "queryDocCount": { + "description": "NavBoostFeature f_query_doc_count for questions that are NavBoost queries.", + "format": "float", + "type": "number" + }, + "question": { + "description": "Question from Related Questions SSTable or NavBoost.", + "type": "string" + }, + "questionTitleSimilarity": { + "format": "float", + "type": "number" + }, + "questionType": { + "enum": [ + "UNKNOWN", + "ENTITY", + "NAVBOOST", + "GLUE_WEBANS", + "INSTANT_NAVBOOST" + ], + "enumDescriptions": [ + "", + "Questions sourced from joining WebRef entities in CDocs with the Related Question's E2Q table.", + "Questions sourced from the CDoc's NavBoost queries.", + "Questions from WebAnswer queries that bypass D2Q filtering.", + "Questions sourced from the CDoc's Instant NavBoost queries." + ], + "type": "string" + }, + "startMs": { + "description": "Start time in milliseconds relative to the beginning of the video.", + "format": "int64", + "type": "string" + }, + "videoDurationMs": { + "description": "Duration of the video.", + "format": "int64", + "type": "string" + }, + "videoTitle": { + "description": "Video title.", + "type": "string" + }, + "webrefMid": { + "description": "Mid corresponding to the WebRef entity from the CDoc that was used to source the question.", + "type": "string" + }, + "webrefTopicalityScore": { + "description": "The WebRef entity topicality score. Learn more about this score at: http://go/topicality-score", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchQnaAnchorSetFeatures": { + "description": "Debug info for Q\u0026A anchors. Next ID: 15", + "id": "VideoContentSearchQnaAnchorSetFeatures", + "properties": { + "backgroundEncodingPath": { + "description": "Path to Descartes background encoding in the form of a serialized drishti.DenseFeatureData proto. This is generated by the flume_generate_background_encoding binary.", + "type": "string" + }, + "descartesModelVersion": { + "description": "This field is used for debugging which model the decartes_model_score is generated from. You can learn more about the Descartes model at go/descartes-qa.", + "type": "string" + }, + "descartesScoreThreshold": { + "description": "Descartes score threshold for determining whether to output a QA pair as an anchor. This currently effects only the Descartes ranking score.", + "format": "float", + "type": "number" + }, + "dolphinConfig": { + "$ref": "VideoContentSearchDolphinScoringConfig", + "description": "The configuration used for fetching Dolphin scores." + }, + "ensembleModelPath": { + "description": "Path to Ranklab ensemble model used in post-trigger step.", + "type": "string" + }, + "ensembleModelScoreThreshold": { + "description": "Minimum score for video anchor to pass the post-trigger step. Calculated by training a logisitic regression model with 95% precision. Training colab can be found at go/video-qa-ensemble.", + "format": "float", + "type": "number" + }, + "minEntityTopicalityScore": { + "description": "Threshold for determining whether to consider an entity from a CDoc for sourcing questions on that topic. Learn more about this score at: http://go/topicality-score", + "format": "float", + "type": "number" + }, + "minQuestionDistance": { + "description": "Threshold for determining whether questions belong in the same cluster.", + "format": "float", + "type": "number" + }, + "relatedQuestionsSstablePath": { + "description": "Path to the Related Questions SSTable that maps entities to questions.", + "type": "string" + }, + "spanDurationSecs": { + "description": "The duration threshold for merging captions.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchRankEmbedNearestNeighborsFeatures": { + "description": "Rankembed neighbor neighbor features for the candidate query.", + "id": "VideoContentSearchRankEmbedNearestNeighborsFeatures", + "properties": { + "anchorReSimilarity": { + "description": "Rankembed similarity between the rankembed neighbor and the video anchor.", + "format": "float", + "type": "number" + }, + "navQueryReSimilarity": { + "description": "Rankembed similarity between the rankembed neighbor and the top navboost query of the video.", + "format": "float", + "type": "number" + }, + "reSimilarity": { + "description": "Rankembed similarity between the rankembed neighbor and the original query candidate.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchSaftEntityInfo": { + "description": "Saft named-entities info for a given topic.", + "id": "VideoContentSearchSaftEntityInfo", + "properties": { + "canonicalEntityName": { + "description": "Representative canonical name for the entity.", + "type": "string" + }, + "entitySalience": { + "description": "Score indicating the saliency (centrality) of this entity to the original_text.", + "format": "double", + "type": "number" + }, + "entityTypeName": { + "description": "The type name, like \"/saft/person\", \"/saft/art\". See README.entity-types for the inventory of SAFT type tags.", + "type": "string" + }, + "mentionText": { + "description": "Representative entity name mention extracted from original_text.", + "type": "string" + }, + "mentionType": { + "description": "SAFT Mention type.", + "enum": [ + "NAM", + "NOM", + "PRE", + "PRO", + "CMC", + "NRP", + "VRB", + "IMP" + ], + "enumDescriptions": [ + "name mention (proper noun)", + "nominal mention (common noun)", + "pre-nominal mention", + "pronominal mention", + "conjoined mention construction", + "mention of a non-referential pronoun", + "Verbal mention (head of verb phrase antecedents in discourse deixis).", + "Implicit mention (e.g., elliptical subjects in pro-drop languages). The facet in the phrase indicates its role with respect to the phrase token." + ], + "type": "string" + }, + "mid": { + "description": "Freebase MID for entity if this the saft entity corresponds to a Webref KG mid. This field is not always populated and is taken from FREEBASE_MID mid in EntityProfile in the saft entity annotation.", + "type": "string" + }, + "originalText": { + "description": "The original input text (e.g. the anchor text) where the saft entity annotation was run on.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchShoppingOpinionsAnchorFeatures": { + "description": "Features for an individual Shopping Opinions Anchor. This file is used for video anchor use case. Next Id: 34", + "id": "VideoContentSearchShoppingOpinionsAnchorFeatures", + "properties": { + "anchorLabel": { + "description": "The anchor label.", + "type": "string" + }, + "anchorLabelFirstMentionPos": { + "description": "The first anchor_label mention position (word index, 0-based). It is computed from the snippet_sub_segment if exists. Otherwise it is computed from the snippet. It is not populated if there is no such mention.", + "format": "int32", + "type": "integer" + }, + "anchorLabelSentiment": { + "description": "The sentiment score of the anchor label, with range: [-1, 1]. If using Lumin Pro/Con tags as the anchor labels, the \"Pro\" Lumin tag will have a score of 1 and Con Lumin tag will have a score of -1.", + "format": "float", + "type": "number" + }, + "anchorLabelWordsMentions": { + "description": "The number of times words in anchor label (that is not a stopword) being mentioned in the snippet.", + "format": "int32", + "type": "integer" + }, + "anchorOrAspectFirstMentionPos": { + "description": "The smaller number of anchor_label_first_mention_pos and lumin_aspect_first_mention_pos.", + "format": "int32", + "type": "integer" + }, + "anchorOrAspectWordsMentions": { + "description": "The number of times words in anchor label or Lumin aspect (that is not a stopword) being mentioned in the snippet. If a word exists in both anchor label and Lumin aspect, it shall be only counted once for a mention in the snippet.", + "format": "int32", + "type": "integer" + }, + "aspect": { + "$ref": "VideoContentSearchAspect", + "description": "Product aspect being discussed by this Shopping Opinions." + }, + "asrForProConExtraction": { + "description": "The asr with sentence break that was used for pro/con extraction.", + "type": "string" + }, + "babelSimilarityScore": { + "description": "The Babel similarity score between the snippet and the anchor label.", + "format": "float", + "type": "number" + }, + "conScore": { + "description": "The classification score of the anchor being a con opinion.", + "format": "float", + "type": "number" + }, + "grampusScore": { + "description": "The score from the Grampus model if the pro/con is extracted by Grampus.", + "format": "float", + "type": "number" + }, + "isCon": { + "description": "Whether the anchor is classified as a con opinion.", + "type": "boolean" + }, + "isPro": { + "description": "Whether the anchor is classified as a pro opinion.", + "type": "boolean" + }, + "isProConWhenExtractedFromMum": { + "description": "True if the anchor is considered as pro or con when extracted from MUM.", + "type": "boolean" + }, + "luminAspect": { + "description": "The lumin aspect of the Pro/Con Lumin tag. e.g. \"weight\".", + "type": "string" + }, + "luminAspectFirstMentionPos": { + "description": "The first Lumin aspect mention position (word index, 0-based). It is computed from the snippet_sub_segment if exists. Otherwise it is computed from the snippet. It is not populated if there is no such mention.", + "format": "int32", + "type": "integer" + }, + "luminAspectWordsMentions": { + "description": "The number of times words in Lumin aspect (that is not a stopword) being mentioned in the snippet.", + "format": "int32", + "type": "integer" + }, + "luminScore": { + "description": "The Lumin model score for the anchor label against the segment.", + "format": "float", + "type": "number" + }, + "mumProductAspect": { + "description": "The product aspect of the pro/con generated using the MUM model.", + "type": "string" + }, + "mumScore": { + "description": "The score from the MUM model if the pro/con anchor is extracted by MUM.", + "format": "float", + "type": "number" + }, + "opinionsDolphinDescriptivenessScore": { + "description": "Scores from Opinions Dolphin scorer. Opinions Dolphin scorer is built by finetuning the Dolphin-based Video Anchor Unified Scorer V2 on the Opinions anchors ratings. It outputs two scores, which are optimized for descriptiveness and usefulness ratings respectively. 'descriptiveness_score' measures how well the anchor label describes the video section. 'usefulness_score' measures how useful the anchor label is for jumping to an important section in the video. go/vs-opinions-migration-report", + "format": "float", + "type": "number" + }, + "opinionsDolphinUsefulnessScore": { + "format": "float", + "type": "number" + }, + "proScore": { + "description": "The classification score of the anchor being a pro opinion.", + "format": "float", + "type": "number" + }, + "productNameFromTitle": { + "description": "The product name from title extracted by the grampus model.", + "type": "string" + }, + "question": { + "description": "The question used to score this video segment.", + "type": "string" + }, + "snippet": { + "description": "The ASR for the selected segment window.", + "type": "string" + }, + "snippetQaScore": { + "description": "The QA model score for the selected segment window against the question.", + "format": "float", + "type": "number" + }, + "snippetSentimentScore": { + "description": "The go/scarlett sentiment score of the selected segment window. Positive score represents positive sentiment. Negative score represents negative sentiment.", + "format": "float", + "type": "number" + }, + "snippetSubSegment": { + "description": "The ASR for the best matched sub segment inside the selected segment.", + "type": "string" + }, + "snippetSubSegmentQaScore": { + "description": "The QA model score for the best sub segment against the question.", + "format": "float", + "type": "number" + }, + "snippetSubSegmentSentimentScore": { + "description": "The go/scarlett sentiment score of the best matched sub segment. Positive score represents positive sentiment. Negative score represents negative sentiment.", + "format": "float", + "type": "number" + }, + "snippetSubSegmentWordCount": { + "description": "The number of words in the ASR for the best matched sub segment.", + "format": "int32", + "type": "integer" + }, + "snippetWordCount": { + "description": "The number of words in the ASR for the selected segment window.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchSimilarityMatchInfo": { + "id": "VideoContentSearchSimilarityMatchInfo", + "properties": { + "instructionStartMs": { + "description": "The timestamp of when the first token in the token sequence is spoken in the video.", + "format": "int32", + "type": "integer" + }, + "instructionText": { + "description": "The instruction step text coming from the web document. Currently only populated for best_description_and_instruction_anchors_match_info.", + "type": "string" + }, + "referenceText": { + "description": "The reference text used for matching against token_sequence (e.g. description anchor text or instruction step text).", + "type": "string" + }, + "referenceTextTimeMs": { + "description": "The timestamp of when the reference text is pointing in the video (e.g. this is the description anchor timestamp when reference_text is description anchor. For instruction step used as the reference, no timestamps exists and thus this field is not populated).", + "format": "int32", + "type": "integer" + }, + "scoringMethodName": { + "description": "Similarity scorer name.", + "type": "string" + }, + "similarityScore": { + "description": "The similarity score given by the scoring method specified by the message scoring_method_name.", + "format": "float", + "type": "number" + }, + "stepIndex": { + "description": "The index of the step in HowToInstructions that this token_sequence corresponds to.", + "format": "int32", + "type": "integer" + }, + "tokenSequence": { + "description": "The matched token sequence text in ASR.", + "type": "string" + }, + "tokenSequenceLength": { + "description": "The length of the tokens in the token sequence.", + "format": "int32", + "type": "integer" + }, + "tokenStartPos": { + "description": "The token offset of the matched token sequence from the beginning of the document.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchSpanDolphinFeatures": { + "id": "VideoContentSearchSpanDolphinFeatures", + "properties": { + "passage": { + "description": "The text passage from ASR.", + "type": "string" + }, + "title": { + "description": "The title of the video.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchSpanDolphinScores": { + "id": "VideoContentSearchSpanDolphinScores", + "properties": { + "spanCandidate": { + "description": "The span candidates extracted from the list of span tokens. Each token is added to a span if its score is above a certain threshold.", + "items": { + "$ref": "VideoContentSearchSpanDolphinScoresSpanCandidate" + }, + "type": "array" + }, + "spanToken": { + "description": "The token-score pairs for the passage.", + "items": { + "$ref": "VideoContentSearchSpanDolphinScoresSpanToken" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoContentSearchSpanDolphinScoresSpanCandidate": { + "id": "VideoContentSearchSpanDolphinScoresSpanCandidate", + "properties": { + "asrConfidenceStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the token asr_confidence scores that make up the candidate." + }, + "scoreStats": { + "$ref": "VideoContentSearchMetricStats", + "description": "A summary of the token scores that make up the candidate." + }, + "sourcePassage": { + "description": "The passage text from which this span candidate belongs to. In case of description spans, this field stores the sentence containing the span candidate where the sentence is a subset of the passage used for generating the span candidate.", + "type": "string" + }, + "text": { + "description": "The span candidate text.", + "type": "string" + }, + "timeMs": { + "description": "The start time for the span candidate.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchSpanDolphinScoresSpanToken": { + "id": "VideoContentSearchSpanDolphinScoresSpanToken", + "properties": { + "asrConfidence": { + "description": "The ASR confidence for the token, if available.", + "format": "float", + "type": "number" + }, + "isSentenceStart": { + "description": "Whether or not this token is the first token in a sentence.", + "type": "boolean" + }, + "score": { + "description": "A score correlated with the probability that the token is part of a span candidate.", + "format": "float", + "type": "number" + }, + "text": { + "description": "The token text.", + "type": "string" + }, + "timeMs": { + "description": "The start time of the passage with this token.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchSportsKeyMomentsAnchorSetFeatures": { + "description": "Features for a set of Sports Key Moments (SKM) Anchors. Each instance of this object should be associated with a VideoAnchorSets object. Next ID: 3", + "id": "VideoContentSearchSportsKeyMomentsAnchorSetFeatures", + "properties": { + "prefilterClassificationLabel": { + "description": "The Prefilter classification label associated with the video that contains the VideoAnchorSets this object is asociated with. E.g. \"basketball\".", + "type": "string" + }, + "tensorflowModelVersion": { + "description": "Version of the underlying TensorFlow model.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchTextMatchInfo": { + "id": "VideoContentSearchTextMatchInfo", + "properties": { + "durationToPredictedTimeMs": { + "description": "The time gap of the matched_time_ms from the predicted timestamp of when this anchor should appear in the video.", + "format": "int64", + "type": "string" + }, + "matchScore": { + "description": "The float similarty score from the anchor label to matched_asr_text.", + "format": "float", + "type": "number" + }, + "matchedAsrStartPos": { + "description": "The start token offset from the beginning of ASR where matched_asr_text starts.", + "format": "int32", + "type": "integer" + }, + "matchedAsrText": { + "description": "The ASR text that was a candidate match for the list anchor.", + "type": "string" + }, + "matchedAsrTimeMs": { + "description": "The timestamp of the matched ASR in the video in milliseconds.", + "format": "int64", + "type": "string" + }, + "matchedAsrTimeRatio": { + "description": "The ratio of the matched_asr_time_ms over the total duration of the video.", + "format": "float", + "type": "number" + }, + "matchedAsrTokenCount": { + "description": "The number of tokens in matched_asr_text", + "format": "int32", + "type": "integer" + }, + "matchedDescriptionItemIndexRatio": { + "description": "The ratio of the video description item index this match corresponds to over the total number of list description items for the video.", + "format": "float", + "type": "number" + }, + "matchedDescriptionText": { + "description": "The video description text matched with the ASR that's used as the anchor label.", + "type": "string" + }, + "matchedDescriptionTokenCount": { + "description": "The number of tokens in matched_description_text.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchTextSimilarityFeatures": { + "id": "VideoContentSearchTextSimilarityFeatures", + "properties": { + "hypothesisText": { + "description": "The hypothesis text that was used for the token overlap calculation.", + "type": "string" + }, + "hypothesisTextTime": { + "description": "The time in ms for the hypothesis_text.", + "format": "int64", + "type": "string" + }, + "referenceText": { + "type": "string" + }, + "scoringMethodName": { + "description": "Similarity scorer name.", + "type": "string" + }, + "similarityScore": { + "description": "The similarity score given by the scoring method specified by the message scoring_method_name.", + "format": "float", + "type": "number" + }, + "tokenMatchCount": { + "description": "Token by token matching stats. Exact matched token count.", + "format": "int32", + "type": "integer" + }, + "tokenMatchPercent": { + "description": "The token_overlap_count divided by the number of tokens in the hypothesis text.", + "format": "float", + "type": "number" + }, + "wordAlignment": { + "description": "Word by word alignment.", + "items": { + "$ref": "VideoContentSearchTokenAlignment" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoContentSearchTokenAlignment": { + "description": "Token by token mapping between hypothesis text and reference text.", + "id": "VideoContentSearchTokenAlignment", + "properties": { + "hypothesisIndex": { + "description": "Index of the token in hypothesis text.", + "format": "int32", + "type": "integer" + }, + "hypothesisToken": { + "description": "Token in hypothesis.", + "type": "string" + }, + "referenceIndex": { + "description": "Index of the word in reference.", + "format": "int32", + "type": "integer" + }, + "referenceToken": { + "description": "Token in label.", + "type": "string" + }, + "tokenIsMatched": { + "description": "Whether it's a perfect match.", + "type": "boolean" + } + }, + "type": "object" + }, + "VideoContentSearchTokenTimingInfo": { + "description": "Token level timing information for ASR spans. This is expected to be extracted from PseudoVideoData in the CDoc. Next ID: 5", + "id": "VideoContentSearchTokenTimingInfo", + "properties": { + "confidence": { + "description": "Generated from th PseudoVideoData Timestamp Confidence field, which is quantized values in range 0-127. To convert to range 0-1 this field divides the PseudoVideoData Timestamp Confidence field by 127.", + "format": "float", + "type": "number" + }, + "durationMs": { + "format": "int64", + "type": "string" + }, + "startMs": { + "format": "int64", + "type": "string" + }, + "text": { + "description": "Should be a single token.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchVideoActions": { + "description": "Video level info for online pipeline usage. For example: skip pattern as defined in https://schema.org/SeekToAction.", + "id": "VideoContentSearchVideoActions", + "properties": { + "skipPatternStartOffsetInput": { + "description": "startOffset_input name as defined in https://schema.org/SeekToAction", + "type": "string" + }, + "skipToTimePattern": { + "description": "Skip to time pattern as defined in https://schema.org/SeekToAction", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchVideoAnchor": { + "description": "Next ID: 22", + "id": "VideoContentSearchVideoAnchor", + "properties": { + "anchorScore": { + "description": "The score indicating anchor confidence.", + "format": "float", + "type": "number" + }, + "anchorType": { + "description": "Specifies the type of the anchor.", + "enum": [ + "UNKNOWN", + "DESCRIPTION_ANCHOR", + "LIST", + "OCR", + "LIST_ENTITY", + "CAPTION_ENTITY", + "KEY_MOMENT", + "QUESTION_AND_ANSWER", + "MARKUP", + "OCR_ASR", + "ASR_SPAN", + "INSTRUCTION", + "DESCRIPTION_SPAN", + "EXPERIMENTAL_MORE_VIDEO_ANSWERS", + "SHOPPING_OPINIONS", + "GENERATED_QUERY", + "HIGHLIGHTED_SNIPPET", + "SHORT_TOPIC_HEADING_GROUP", + "SHOPPING_ASR_SPAN", + "RADISH_QA", + "GENERATIVE_ASR", + "ASR_TRANSCRIPT", + "COMMENT" + ], + "enumDescriptions": [ + "", + "Anchors with the time stamps in the video description.", + "The lists of text items in the video description.", + "The OCR text items in the video content.", + "The entity mids from Oraclemania or Lisztomania.", + "The entity mids from the captions.", + "Sports Key Moments (go/skm-dd) anchors.", + "Anchors where the labels are questions that are answered in the video segment.", + "Anchors generated from the schema.org markup: https://schema.org/Clip", + "Anchors created with a combination of OCR and ASR from the video content.", + "Anchors created from ASR spans.", + "Anchors created from Instruction steps in the video.", + "Anchors created from Description spans.", + "Anchors created from MoreVideoAnswers. This is used for MVA experiment, will be deprecated after its LE.", + "Anchors created for shopping opinions (pros/cons).", + "Anchors from queries generated from video content.", + "Anchor that is created from highlighting matching metadata against the query.", + "Merged anchors where the labels are short topic heading. This can be used as AnchorTypeVersionSpec.merging_group_type.", + "Anchors created from shopping asr span model. This may be merged with ASR span anchor online.", + "QUESTION_AND_ANSWER anchors that are generated via Radish in Goldmine.", + "Generative ASR anchors.", + "Anchors where each timed anchor represents one sentence in the ASR transcript.", + "Anchors extracted from a YouTube comment." + ], + "type": "string" + }, + "destinationUrl": { + "description": "When set, this is the link that should be used when clicking on a video anchor. This should jump to the given time in the video.", + "type": "string" + }, + "duration": { + "description": "The duration of the video anchor in milliseconds.", + "format": "int64", + "type": "string" + }, + "entityScore": { + "description": "The score indicating the usefulness of the entity identified by 'mid'.", + "format": "float", + "type": "number" + }, + "filterReason": { + "description": "If is_filtered is true, this field illustrates the reasons.", + "items": { + "enum": [ + "UNKNOWN_REASON", + "DISPLAY_SIZE_LIMIT", + "THUMBNAIL_MISSING", + "THUMBNAIL_UNSAFE", + "LABEL_UNSAFE", + "TITLE_DUPLICATE_AND_CLOSE_TO_START", + "POLICY", + "INVALID_TIMESTAMP", + "NO_ANCHOR_DESTINATION_URL", + "LABEL_WITH_RESTRICTED_ENTITIES", + "LABEL_WITH_PERSON_NAMES", + "LABEL_IN_VIDEO_WITH_RESTRICTED_PETACATS", + "LABEL_REMOVED_BY_GENERAL_SAFE_SEARCH", + "LABEL_REMOVED_BY_FRINGE_SAFE_SEARCH", + "LABEL_REMOVED_BY_OFFENSIVE_SAFE_SEARCH", + "LABEL_IN_VIDEO_GENERAL_SAFE_SEARCH" + ], + "enumDescriptions": [ + "", + "Only limited number of video anchors are shown. Anchors could be filtered to reduce the number. Or the anchors are too few to be shown.", + "Anchors are filtered because their thumbnails are missing.", + "Anchors are filtered because their thumbnails are unsafe.", + "Anchors are filtered because their labels are unsafe.", + "This is specific to video Q\u0026A anchors. Anchors are filtered when their labels are similar to the video titles and located close to the starts of the videos.", + "Anchors are filtered due to policy violation (e.g. EUCD).", + "Timestamps that are invalid, e.g. negative timestamps or timestamps that are past the video duration.", + "No destination_url is set.", + "Anchors are filtered because their labels contain restricted entities.", + "Anchors are filtered because their labels contain person names", + "Anchors are filtered because the video has restricted petacat items.", + "Anchors are filtered because the label has violations by safe search.", + "Anchors are filtered because the label is fringe (more restricted than the general safe search threshold).", + "Anchors are filtered because the label is offsive (more restricted than the general safe search threshold).", + "Anchors are filtered bacause the video title has violations by safe search." + ], + "type": "string" + }, + "type": "array" + }, + "isFiltered": { + "description": "If true, the anchor is filtered and not served online.", + "type": "boolean" + }, + "isSafe": { + "description": "Convenience field that consolidates signals for whether this label is safe.", + "type": "boolean" + }, + "isScutiBad": { + "description": "whether this label is bad by go/scuti", + "type": "boolean" + }, + "label": { + "description": "The text label of the video anchor.", + "type": "string" + }, + "labelScore": { + "description": "The score indicating label confidence.", + "format": "float", + "type": "number" + }, + "mid": { + "description": "The mid of the video anchor.", + "type": "string" + }, + "namedEntity": { + "description": "Specifies named enitities the label has.", + "items": { + "$ref": "VideoContentSearchNamedEntity" + }, + "type": "array" + }, + "precisionScore": { + "description": "The precision for which the anchor should trigger. For example, if the desired precision is 95%, anchors with precision_score \u003c 0.95 should be removed.", + "format": "float", + "type": "number" + }, + "scoreInfo": { + "$ref": "VideoContentSearchVideoAnchorScoreInfo", + "description": "Additional scoring info used for debugging." + }, + "starburstFeatures": { + "$ref": "VideoContentSearchVisualFeatures", + "description": "Visual tokens for the anchor. Eg. starbust feature vectors for several frames concatenated together." + }, + "thumbnail": { + "$ref": "VideoContentSearchAnchorThumbnail", + "description": "Data about the thumbnail to display for this anchor." + }, + "thumbnailUrl": { + "description": "The url for a frame to display for this anchor.", + "type": "string" + }, + "time": { + "description": "The time stamp of the video anchor in milliseconds.", + "format": "int64", + "type": "string" + }, + "tokenTimingInfo": { + "description": "Timing info for each token in the anchor label.", + "items": { + "$ref": "VideoContentSearchTokenTimingInfo" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoContentSearchVideoAnchorRatingScore": { + "description": "Aggregated rating score, used in training pipeline, etc.", + "id": "VideoContentSearchVideoAnchorRatingScore", + "properties": { + "averageBookmarkUsefulness": { + "description": "Average score of bookmark usefulness.", + "format": "float", + "type": "number" + }, + "averageDescriptionQuality": { + "description": "Average score of description quality.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchVideoAnchorScoreInfo": { + "description": "Message to contain scoring / debugging information. If you want to add information which is not directly used in the final VideoAnchor data, it should be put here. Next ID: 25", + "id": "VideoContentSearchVideoAnchorScoreInfo", + "properties": { + "anchorCommonFeatureSet": { + "$ref": "VideoContentSearchAnchorCommonFeatureSet", + "description": "Common features for any anchor types." + }, + "attachments": { + "$ref": "Proto2BridgeMessageSet", + "description": "Additional attachments which extend MessageSet." + }, + "captionEntityAnchorFeatures": { + "$ref": "VideoContentSearchCaptionEntityAnchorFeatures", + "description": "Training features and debug info for caption entity anchors." + }, + "captionSpanAnchorFeatures": { + "$ref": "VideoContentSearchCaptionSpanAnchorFeatures", + "description": "Features for caption span anchors for use in training." + }, + "descriptionAnchorFeatures": { + "$ref": "VideoContentSearchDescriptionAnchorFeatures", + "description": "Description anchor features for use in training." + }, + "filterReason": { + "description": "A description of why the anchor was removed. This is intended for debugging anchor sets which use multiple heuristics to filter anchors.", + "items": { + "type": "string" + }, + "type": "array" + }, + "filtered": { + "description": "Whether or not the anchor will be removed in the final proto.", + "type": "boolean" + }, + "generativeFeatures": { + "description": "Generated predictions from generative models", + "items": { + "$ref": "VideoContentSearchGenerativePredictionFeatures" + }, + "type": "array" + }, + "instructionAnchorFeatures": { + "$ref": "VideoContentSearchInstructionAnchorFeatures", + "description": "Anchor level features for Instruction anchors." + }, + "instructionTrainingDataAnchorFeatures": { + "$ref": "VideoContentSearchInstructionTrainingDataAnchorFeatures", + "description": "Training data features for Instruction anchors." + }, + "labelLanguage": { + "description": "Detected language of label", + "type": "string" + }, + "labelTransformation": { + "items": { + "$ref": "VideoContentSearchVideoAnchorScoreInfoLabelTransformation" + }, + "type": "array" + }, + "listAnchorFeatures": { + "$ref": "VideoContentSearchListAnchorFeatures", + "description": "List anchor features." + }, + "listTrainingDataAnchorFeatures": { + "$ref": "VideoContentSearchListTrainingDataAnchorFeatures", + "description": "Anchor level metadata about the description anchors used to build training data for list anchors." + }, + "multimodalTopicFeatures": { + "$ref": "VideoContentSearchMultimodalTopicFeatures", + "description": "Multimodal features for a generated topic." + }, + "multimodalTopicTrainingFeatures": { + "$ref": "VideoContentSearchMultimodalTopicTrainingFeatures", + "description": "Features for a generated topic used to build training data for multimodal topics." + }, + "ocrAnchorFeature": { + "$ref": "VideoContentSearchOnScreenTextFeature", + "description": "OCR anchor features." + }, + "ocrDescriptionTrainingDataAnchorFeatures": { + "$ref": "VideoContentSearchOcrDescriptionTrainingDataAnchorFeatures", + "description": "Anchor level metadata about the join of description anchors and OCR data which is used to build training data." + }, + "opinionsAnchorFeatures": { + "$ref": "VideoContentSearchShoppingOpinionsAnchorFeatures", + "description": "Shopping Opinions anchor features." + }, + "qnaAnchorFeatures": { + "$ref": "VideoContentSearchQnaAnchorFeatures", + "description": "Q\u0026A anchor features for use in training." + }, + "ratingScore": { + "$ref": "VideoContentSearchVideoAnchorRatingScore", + "description": "Human rating score, used for training." + }, + "safeSearchClassifierOutput": { + "$ref": "ClassifierPornQueryMultiLabelClassifierOutput", + "description": "The output of Safe Search's MultiLabelClassifier." + }, + "textSimilarityFeatures": { + "description": "ASR matching feature for any anchor types.", + "items": { + "$ref": "VideoContentSearchTextSimilarityFeatures" + }, + "type": "array" + }, + "thumbnailInfo": { + "$ref": "VideoContentSearchAnchorThumbnailInfo", + "description": "Information about the thumbnail anchor." + } + }, + "type": "object" + }, + "VideoContentSearchVideoAnchorScoreInfoLabelTransformation": { + "description": "Used to store the label before label cleaning or other transformations. If the label goes through multiple transformations, the original_label vector will include the transformations in chronological order.", + "id": "VideoContentSearchVideoAnchorScoreInfoLabelTransformation", + "properties": { + "description": { + "description": "A label for the transformation.", + "type": "string" + }, + "sourceLabel": { + "description": "The label that was transformated from.", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchVideoAnchorSetRatingScore": { + "description": "Aggregated set level rating score, used in training pipeline, etc.", + "id": "VideoContentSearchVideoAnchorSetRatingScore", + "properties": { + "averageSetDescriptionQuality": { + "description": "Average score of set level description quality.", + "format": "float", + "type": "number" + }, + "averageSetNavigationUsefulness": { + "description": "Average score of how useful the set is for navigation.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoContentSearchVideoAnchorSets": { + "description": "One video can have multiple types of text anchors. For example, https://www.youtube.com/watch?v=Rtk0I5PVOIc has both list anchors and OCR anchors.", + "id": "VideoContentSearchVideoAnchorSets", + "properties": { + "videoActions": { + "$ref": "VideoContentSearchVideoActions" + }, + "videoAnchors": { + "items": { + "$ref": "VideoContentSearchVideoAnchors" + }, + "type": "array" + }, + "videoInfo": { + "$ref": "VideoContentSearchVideoInfo" + }, + "videoScoreInfo": { + "$ref": "VideoContentSearchVideoScoreInfo" + } + }, + "type": "object" + }, + "VideoContentSearchVideoAnchors": { + "description": "A video can have a list of text anchors, which have different anchor types. Next ID: 15", + "id": "VideoContentSearchVideoAnchors", + "properties": { + "anchorType": { + "enum": [ + "UNKNOWN", + "DESCRIPTION_ANCHOR", + "LIST", + "OCR", + "LIST_ENTITY", + "CAPTION_ENTITY", + "KEY_MOMENT", + "QUESTION_AND_ANSWER", + "MARKUP", + "OCR_ASR", + "ASR_SPAN", + "INSTRUCTION", + "DESCRIPTION_SPAN", + "EXPERIMENTAL_MORE_VIDEO_ANSWERS", + "SHOPPING_OPINIONS", + "GENERATED_QUERY", + "HIGHLIGHTED_SNIPPET", + "SHORT_TOPIC_HEADING_GROUP", + "SHOPPING_ASR_SPAN", + "RADISH_QA", + "GENERATIVE_ASR", + "ASR_TRANSCRIPT", + "COMMENT" + ], + "enumDescriptions": [ + "", + "Anchors with the time stamps in the video description.", + "The lists of text items in the video description.", + "The OCR text items in the video content.", + "The entity mids from Oraclemania or Lisztomania.", + "The entity mids from the captions.", + "Sports Key Moments (go/skm-dd) anchors.", + "Anchors where the labels are questions that are answered in the video segment.", + "Anchors generated from the schema.org markup: https://schema.org/Clip", + "Anchors created with a combination of OCR and ASR from the video content.", + "Anchors created from ASR spans.", + "Anchors created from Instruction steps in the video.", + "Anchors created from Description spans.", + "Anchors created from MoreVideoAnswers. This is used for MVA experiment, will be deprecated after its LE.", + "Anchors created for shopping opinions (pros/cons).", + "Anchors from queries generated from video content.", + "Anchor that is created from highlighting matching metadata against the query.", + "Merged anchors where the labels are short topic heading. This can be used as AnchorTypeVersionSpec.merging_group_type.", + "Anchors created from shopping asr span model. This may be merged with ASR span anchor online.", + "QUESTION_AND_ANSWER anchors that are generated via Radish in Goldmine.", + "Generative ASR anchors.", + "Anchors where each timed anchor represents one sentence in the ASR transcript.", + "Anchors extracted from a YouTube comment." + ], + "type": "string" + }, + "entityGroupInfo": { + "$ref": "VideoContentSearchEntityGroupInfo", + "description": "The list of entity groups derived from the caption entities." + }, + "experimentalPredictedQuerylessTocUsefulness": { + "description": "Same as above, but used for experimenting with new models.", + "format": "float", + "type": "number" + }, + "filterReason": { + "description": "If is_filtered is true, this field illustrates the reasons.", + "items": { + "enum": [ + "UNKNOWN_REASON", + "DISPLAY_SIZE_LIMIT", + "THUMBNAIL_MISSING", + "THUMBNAIL_UNSAFE", + "LABEL_UNSAFE", + "TITLE_DUPLICATE_AND_CLOSE_TO_START", + "POLICY", + "INVALID_TIMESTAMP", + "NO_ANCHOR_DESTINATION_URL", + "LABEL_WITH_RESTRICTED_ENTITIES", + "LABEL_WITH_PERSON_NAMES", + "LABEL_IN_VIDEO_WITH_RESTRICTED_PETACATS", + "LABEL_REMOVED_BY_GENERAL_SAFE_SEARCH", + "LABEL_REMOVED_BY_FRINGE_SAFE_SEARCH", + "LABEL_REMOVED_BY_OFFENSIVE_SAFE_SEARCH", + "LABEL_IN_VIDEO_GENERAL_SAFE_SEARCH" + ], + "enumDescriptions": [ + "", + "Only limited number of video anchors are shown. Anchors could be filtered to reduce the number. Or the anchors are too few to be shown.", + "Anchors are filtered because their thumbnails are missing.", + "Anchors are filtered because their thumbnails are unsafe.", + "Anchors are filtered because their labels are unsafe.", + "This is specific to video Q\u0026A anchors. Anchors are filtered when their labels are similar to the video titles and located close to the starts of the videos.", + "Anchors are filtered due to policy violation (e.g. EUCD).", + "Timestamps that are invalid, e.g. negative timestamps or timestamps that are past the video duration.", + "No destination_url is set.", + "Anchors are filtered because their labels contain restricted entities.", + "Anchors are filtered because their labels contain person names", + "Anchors are filtered because the video has restricted petacat items.", + "Anchors are filtered because the label has violations by safe search.", + "Anchors are filtered because the label is fringe (more restricted than the general safe search threshold).", + "Anchors are filtered because the label is offsive (more restricted than the general safe search threshold).", + "Anchors are filtered bacause the video title has violations by safe search." + ], + "type": "string" + }, + "type": "array" + }, + "isFiltered": { + "description": "If true, the anchor set is filtered and not served online.", + "type": "boolean" + }, + "mergedAnchorsSources": { + "description": "The anchor sources being used to generate this merged anchors. This field is filled only when this is a merged anchor.", + "items": { + "enum": [ + "UNKNOWN", + "DESCRIPTION_ANCHOR", + "LIST", + "OCR", + "LIST_ENTITY", + "CAPTION_ENTITY", + "KEY_MOMENT", + "QUESTION_AND_ANSWER", + "MARKUP", + "OCR_ASR", + "ASR_SPAN", + "INSTRUCTION", + "DESCRIPTION_SPAN", + "EXPERIMENTAL_MORE_VIDEO_ANSWERS", + "SHOPPING_OPINIONS", + "GENERATED_QUERY", + "HIGHLIGHTED_SNIPPET", + "SHORT_TOPIC_HEADING_GROUP", + "SHOPPING_ASR_SPAN", + "RADISH_QA", + "GENERATIVE_ASR", + "ASR_TRANSCRIPT", + "COMMENT" + ], + "enumDescriptions": [ + "", + "Anchors with the time stamps in the video description.", + "The lists of text items in the video description.", + "The OCR text items in the video content.", + "The entity mids from Oraclemania or Lisztomania.", + "The entity mids from the captions.", + "Sports Key Moments (go/skm-dd) anchors.", + "Anchors where the labels are questions that are answered in the video segment.", + "Anchors generated from the schema.org markup: https://schema.org/Clip", + "Anchors created with a combination of OCR and ASR from the video content.", + "Anchors created from ASR spans.", + "Anchors created from Instruction steps in the video.", + "Anchors created from Description spans.", + "Anchors created from MoreVideoAnswers. This is used for MVA experiment, will be deprecated after its LE.", + "Anchors created for shopping opinions (pros/cons).", + "Anchors from queries generated from video content.", + "Anchor that is created from highlighting matching metadata against the query.", + "Merged anchors where the labels are short topic heading. This can be used as AnchorTypeVersionSpec.merging_group_type.", + "Anchors created from shopping asr span model. This may be merged with ASR span anchor online.", + "QUESTION_AND_ANSWER anchors that are generated via Radish in Goldmine.", + "Generative ASR anchors.", + "Anchors where each timed anchor represents one sentence in the ASR transcript.", + "Anchors extracted from a YouTube comment." + ], + "type": "string" + }, + "type": "array" + }, + "predictedQuerylessTocUsefulness": { + "description": "The score that predicts the usefulness of this anchor set on the Huh table of contents eval without considering the query.", + "format": "float", + "type": "number" + }, + "score": { + "description": "The quality of the anchor set.", + "format": "float", + "type": "number" + }, + "scoreInfo": { + "$ref": "VideoContentSearchVideoAnchorsScoreInfo", + "description": "Additional scoring info used for debugging." + }, + "shouldServeThumbnails": { + "description": "Whether or not thumbnails should be displayed when serving anchors.", + "type": "boolean" + }, + "thumbnailForced": { + "description": "This field indicates that the thumbnail should be hidden but is forced to show.", + "type": "boolean" + }, + "thumbnailSetInfo": { + "$ref": "VideoContentSearchAnchorsThumbnailInfo", + "description": "Information about the set of thumbnails." + }, + "videoAnchor": { + "items": { + "$ref": "VideoContentSearchVideoAnchor" + }, + "type": "array" + }, + "videoIntroduction": { + "$ref": "VideoContentSearchVideoIntroduction", + "description": "Information about the video's introduction segment." + } + }, + "type": "object" + }, + "VideoContentSearchVideoAnchorsScoreInfo": { + "description": "Message to contain scoring / debugging information. If you want to add information which is not directly used in the final VideoAnchors data, it should be put here. Next ID: 14", + "id": "VideoContentSearchVideoAnchorsScoreInfo", + "properties": { + "anchorsCommonFeatureSet": { + "$ref": "VideoContentSearchAnchorsCommonFeatureSet", + "description": "Common set-level features for any anchor types." + }, + "captionEntityAnchorSetFeatures": { + "$ref": "VideoContentSearchCaptionEntityAnchorSetFeatures", + "description": "Training features and debug info for caption entity anchors." + }, + "captionSpanAnchorSetFeatures": { + "$ref": "VideoContentSearchCaptionSpanAnchorSetFeatures" + }, + "commentAnchorSetFeatures": { + "$ref": "VideoContentSearchCommentAnchorSetFeatures", + "description": "Set-level features for comment anchors." + }, + "descriptionAnchorSetFeatures": { + "$ref": "VideoContentSearchDescriptionAnchorSetFeatures", + "description": "Description anchor features for use in training." + }, + "filtered": { + "description": "Whether or not the anchors will be removed in the final proto.", + "type": "boolean" + }, + "listAnchorSetFeatures": { + "$ref": "VideoContentSearchListAnchorSetFeatures", + "description": "Set-level features for list anchors." + }, + "listTrainingDataSetFeatures": { + "$ref": "VideoContentSearchListTrainingDataSetFeatures", + "description": "Set level metadata about the description anchors used to build training data for List Description anchors." + }, + "ocrAnchorClusterFeature": { + "$ref": "VideoContentSearchOnScreenTextClusterFeature", + "description": "OCR anchor cluster features." + }, + "ocrDescriptionTrainingDataSetFeatures": { + "$ref": "VideoContentSearchOcrDescriptionTrainingDataSetFeatures", + "description": "Set level metadata about the join of description anchors and OCR data which is used to build training data." + }, + "qnaAnchorSetFeatures": { + "$ref": "VideoContentSearchQnaAnchorSetFeatures", + "description": "Metadata such as model versions for Q\u0026A anchors." + }, + "ratingScore": { + "$ref": "VideoContentSearchVideoAnchorSetRatingScore", + "description": "Human rating score, used for training." + }, + "sportsKeyMomentsAnchorSetFeatures": { + "$ref": "VideoContentSearchSportsKeyMomentsAnchorSetFeatures" + } + }, + "type": "object" + }, + "VideoContentSearchVideoCommonFeatures": { + "description": "Contains video level features that apply to all anchor types.", + "id": "VideoContentSearchVideoCommonFeatures", + "properties": { + "anchorCount": { + "description": "The total number of anchors in all video anchor sets.", + "format": "int32", + "type": "integer" + }, + "captionInfo": { + "$ref": "VideoContentSearchCaptionInfo", + "description": "The caption data for the video transcript. The models used for unified scorer. Should be a filepath that contains saved_model.pb and a variables/ folder" + }, + "labelPhraseEmbeddingModel": { + "description": "The model used for generating label_phrase_embedding.", + "type": "string" + }, + "unifiedScoringBertModels": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoContentSearchVideoGeneratedQueryFeatures": { + "description": "Contains video level features for generated queries that are applied at the video level.", + "id": "VideoContentSearchVideoGeneratedQueryFeatures", + "properties": { + "filterReason": { + "description": "A description of why the video was removed. This is intended for debugging generated queries that are filtered at the video level.", + "items": { + "type": "string" + }, + "type": "array" + }, + "prefilteredPassageCount": { + "description": "The total number of passages that were input to generating queries for this video. This count might be bigger than the total number of anchors in the video as some of the anchors might have been filtered by the pipeline.", + "format": "int32", + "type": "integer" + }, + "titleEntityAnnotations": { + "$ref": "VideoContentSearchEntityAnnotations", + "description": "Entity annotations for one of the mids representing the video title. This entity is either one of the blocklisted entities if at least of the mentioned entities in the title belongs to the blocklisted categories, or is the highest confidence entity for the title." + }, + "totalRestrictedQueries": { + "description": "The total number of queries that belong to the blocklisted categories for this video.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoContentSearchVideoInfo": { + "description": "This message holds metadata and signals of one video. It is typically used for holding debug data in tables produced by offline pipelines related to video anchors. Please never populate this message into the search serving stack. Next ID: 31", + "id": "VideoContentSearchVideoInfo", + "properties": { + "amarnaDocid": { + "description": "A hash of the video bytes used as a key to Amarna's video_metadata table.", + "type": "string" + }, + "asrLanguage": { + "description": "Language information, extracted from content_based_metadata.speech_properties.", + "type": "string" + }, + "crapsData": { + "$ref": "QualityNavboostCrapsCrapsData", + "description": "Craps data from the video cdoc." + }, + "description": { + "description": "Video description.", + "type": "string" + }, + "docLanguage": { + "description": "Language information, extracted from DocProperties.", + "type": "string" + }, + "durationMs": { + "description": "Video duration in ms.", + "format": "float", + "type": "number" + }, + "hasAsr": { + "description": "Whether or not automatic speech recognition has been generated for this video.", + "type": "boolean" + }, + "hasDescriptionAnchors": { + "description": "Whether or not the video has description anchors.", + "type": "boolean" + }, + "isSafe": { + "description": "Convenience field that is false if any of the video's anchors have their is_safe field set to false.", + "type": "boolean" + }, + "isWatchpage": { + "description": "Whether or not this is watchpage.", + "type": "boolean" + }, + "navqueries": { + "description": "Navqueries for the video.", + "items": { + "type": "string" + }, + "type": "array" + }, + "nsr": { + "description": "NSR for the video page document.", + "format": "float", + "type": "number" + }, + "numViews": { + "description": "Number of views.", + "format": "int64", + "type": "string" + }, + "pseudoVideoData": { + "$ref": "PseudoVideoData", + "description": "ASR with timing info for each token copied from doc_videos.content_based_metadata.transcript_asr." + }, + "saftDoc": { + "$ref": "NlpSaftDocument", + "description": "The Saft document generated from the anchor labels." + }, + "saftTranscript": { + "description": "The transcript used to generate the Saft doc.", + "type": "string" + }, + "salientTermSet": { + "$ref": "QualitySalientTermsSalientTermSet", + "description": "Salient term set from the document. This message contains a lot of data and dependencies, so sub-messages are disabled in model evaluation in scorer." + }, + "subindexid": { + "description": "The subindexid from the cdoc. Stored as an int to avoid a cyclical dependency. Should be convertible to CompositeDoc.SubIndexType.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "title": { + "description": "Video title.", + "type": "string" + }, + "titleLanguage": { + "description": "Video title language Language information, set automatically by the SAFT LangID.", + "type": "string" + }, + "transcriptAnnotations": { + "$ref": "QualityWebanswersTranscriptAnnotations", + "description": "Transcript annotations that include information about the ASR including timing and entity mentions." + }, + "uniqueChromeViews": { + "description": "Number of unique visits in Chrome.", + "format": "int32", + "type": "integer" + }, + "url": { + "description": "Document url.", + "type": "string" + }, + "verticalItem": { + "description": "Top petacat verticals of the video produced by indexing/ml/vertical, sorted in descending order by vertical confidence.", + "items": { + "$ref": "IndexingMlVerticalVerticalItem" + }, + "type": "array" + }, + "videoGenre": { + "description": "Genre of the video from the page metadata. Concatenate all with a comma separator if there are multiple genres.", + "type": "string" + }, + "videoType": { + "enum": [ + "UNKNOWN", + "LISTICLE", + "INSTRUCTION", + "SPORTS", + "SINGLE_PRODUCT_RESEARCH", + "EDU" + ], + "enumDescriptions": [ + "", + "The video shows a list of things (e.g. top 10 disney movies, etc.).", + "How-to or other educational video.", + "Video containing sports footage.", + "Shopping video that reviews a single product.", + "Educational video from /raffia/educational-videos." + ], + "type": "string" + }, + "videoUrl": { + "description": "Video url. Note that VideoInfo::url is a page url that has this video, while this is a video file url.", + "type": "string" + }, + "webrefEntities": { + "$ref": "RepositoryWebrefWebrefEntities", + "description": "Represents a collection of entities returned by the WebRef service. This message contains a lot of data and dependencies, so sub-messages are disabled in model evaluation in scorer." + } + }, + "type": "object" + }, + "VideoContentSearchVideoIntroduction": { + "description": "Specifies whether a video has an introduction part that can be skipped. An introduction is the beginning part of a video that can be safely skipped without impacting user's understanding of the overall video content.", + "id": "VideoContentSearchVideoIntroduction", + "properties": { + "hasIntro": { + "description": "If set to true, it means the video has an introduction spanning from intro_start_ms to intro_end_ms.", + "type": "boolean" + }, + "introEndMs": { + "description": "Timestamp of the end of an introduction. Will only be set if has_intro is true. Indicates video may be skipped to this timestamp with minimal impact on understanding the overall video contents.", + "format": "int64", + "type": "string" + }, + "introStartMs": { + "description": "Timestamp of the beginning of an introduction. Will only be set if has_intro is true. This value may be nonzero.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoContentSearchVideoMultimodalTopicFeatures": { + "description": "Video-level Multimodal features for generated topics. Next ID: 2", + "id": "VideoContentSearchVideoMultimodalTopicFeatures", + "properties": { + "frameStarburstData": { + "description": "Starburst vectors. Sorted by timestamp.", + "items": { + "$ref": "VideoContentSearchFrameStarburstData" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoContentSearchVideoScoreInfo": { + "description": "Video level scoring info.", + "id": "VideoContentSearchVideoScoreInfo", + "properties": { + "commonFeatures": { + "$ref": "VideoContentSearchVideoCommonFeatures", + "description": "Anchor scoring features that apply to all anchor types." + }, + "ocrVideoFeature": { + "$ref": "VideoContentSearchOcrVideoFeature", + "description": "OCR specific video level feature." + }, + "safeSearchClassifierOutput": { + "$ref": "ClassifierPornQueryMultiLabelClassifierOutput", + "description": "The output of Safe Search's MultiLabelClassifier for video title." + }, + "version": { + "description": "The version of this VideoAnchorSets in spanner.", + "type": "string" + }, + "videoGeneratedQueryFeatures": { + "$ref": "VideoContentSearchVideoGeneratedQueryFeatures", + "description": "Video-level features that apply to all the generated queries within this VideoAnchorSets." + }, + "videoMultimodalTopicFeatures": { + "$ref": "VideoContentSearchVideoMultimodalTopicFeatures", + "description": "Video-level features for Multimodal topics." + } + }, + "type": "object" + }, + "VideoContentSearchVisualFeatures": { + "description": "Startburst visual tokens or features, more details in go/starburst-mum-user-guide", + "id": "VideoContentSearchVisualFeatures", + "properties": { + "features": { + "description": "Starburst features semantic or visual/", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "starbustVersion": { + "enum": [ + "UNKNOWN_VERSION", + "STARBURST_V1", + "STARBURST_V2", + "STARBURST_V3", + "STARBURST_V4", + "STARBURST_VISUAL_V4", + "STARBURST_V5" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "tokens": { + "description": "Starburst visual tokens", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoCrawlVideoInlinePlaybackMetadata": { + "description": "This message is used to store information about Inline Playback in the VideoWebAttachment portion of the websearch index. LINT.IfChange", + "id": "VideoCrawlVideoInlinePlaybackMetadata", + "properties": { + "expirationTimestampSec": { + "description": "Timestamp (measured in seconds since epoch) when a video may not be used for inline playback in the interest feed.", + "format": "int64", + "type": "string" + }, + "googleAnalyticsId": { + "description": "Publisher's Google Analytics Id to which we can report view metrics.", + "type": "string" + }, + "playbackCountryBlacklist": { + "description": "All two-letter codes for countries where this video may NOT be played.", + "items": { + "type": "string" + }, + "type": "array" + }, + "playbackCountryWhitelist": { + "description": "All two-letter codes for countries where this video may be played. If empty, then all countries not on the blacklist are allowed for playback.", + "items": { + "type": "string" + }, + "type": "array" + }, + "transcodeItags": { + "description": "Set of transcodes which are available for the video.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "vastTag": { + "description": "VAST tag for ads to be played along with this video. Currently, we only support VAST tags from Doubleclick and FreeWheel.", + "type": "string" + }, + "videoId": { + "description": "Identifier video is known by in the video infrastructure. The format given here is the YoutubeId format (base-64) used in Venom; for Viper/Bandaid/ StreamingURLService, convert to ContentIdHex.", + "type": "string" + }, + "videoUrlOnExternalCdn": { + "description": "Set if the video is hosted on an external CDN, in which case it is not to be transcoded and hosted at Google for the Interest Feed.", + "type": "string" + } + }, + "type": "object" + }, + "VideoDoViDecoderConfiguration": { + "description": "Decoder configuration for Dolby Vision encoded by any codec. Dolby Vision defines a separate profile \u0026 level hierarchy regardless of the base codec. See Dolby Vision profiles, levels and compatibility: https://dolby.my.salesforce.com/sfc/p/#700000009YuG/a/4u000000l6G4/4R18riPaaW3gxpVx7XwyQLdEITLFjB.w.Si0LoQR5j8 Dolby Vision DASH streaming: https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolbyvisioninmpegdashspecification_v2_0_public_20190107.pdf HTTP Live Streaming: https://professional.dolby.com/siteassets/content-creation/dolby-vision-for-content-creators/dolby-vision-streams-within-the-http-live-streaming-format-v2.0-13-november-2018.pdf Dolby Vision bitstreams: https://professional.dolby.com/siteassets/pdfs/dolbyvisionstreamsinisobmffspecification-v2.1.2.pdf", + "id": "VideoDoViDecoderConfiguration", + "properties": { + "blPresentFlag": { + "description": "If a track contains the base layer substream.", + "type": "boolean" + }, + "dvBlSignalCompatibilityId": { + "description": "Whether the stream is compatible with other sets of standard.", + "format": "uint32", + "type": "integer" + }, + "dvLevel": { + "format": "uint32", + "type": "integer" + }, + "dvProfile": { + "format": "uint32", + "type": "integer" + }, + "dvVersionMajor": { + "description": "Specifies the major version number of the Dolby Vision specification that the stream complies with.", + "format": "uint32", + "type": "integer" + }, + "dvVersionMinor": { + "description": "Specifies the minor version number of the Dolby Vision specification that the stream complies with.", + "format": "uint32", + "type": "integer" + }, + "elPresentFlag": { + "description": "If a track contains the enhancement layer substream.", + "type": "boolean" + }, + "fourccTag": { + "description": "dvhe, dvh1, dvav, dva1: https://screenshot.googleplex.com/ipMGXFqLX9E", + "type": "string" + }, + "rpuPresentFlag": { + "description": "If a track contains the reference picture unit substream.", + "type": "boolean" + } + }, + "type": "object" + }, + "VideoFileColorInfo": { + "description": "A message holding all of the color information about a signal: -Color primaries identify the meaning of red, green, and blue ( and the white point). -The transfer characteristic identifies the mapping used to go between linear and coded values of light. -The matrix coefficients identifies, e.g., the conversion between Ycbcr to RGB (in the space of the primaries) -And the color range defines the min/max of the levels used.", + "id": "VideoFileColorInfo", + "properties": { + "matrixCoefficients": { + "enum": [ + "COLOR_MATRIX_COEFFICIENTS_RGB", + "COLOR_MATRIX_COEFFICIENTS_BT709", + "COLOR_MATRIX_COEFFICIENTS_UNSPECIFIED", + "COLOR_MATRIX_COEFFICIENTS_FCC", + "COLOR_MATRIX_COEFFICIENTS_BT470BG", + "COLOR_MATRIX_COEFFICIENTS_SMPTE170M", + "COLOR_MATRIX_COEFFICIENTS_SMPTE240M", + "COLOR_MATRIX_COEFFICIENTS_YCOCG", + "COLOR_MATRIX_COEFFICIENTS_BT2020_NCL", + "COLOR_MATRIX_COEFFICIENTS_BT2020_CL", + "COLOR_MATRIX_COEFFICIENTS_SMPTE2085", + "COLOR_MATRIX_COEFFICIENTS_CHROMA_DERIVED_NCL", + "COLOR_MATRIX_COEFFICIENTS_CHROMA_DERIVED_CL", + "COLOR_MATRIX_COEFFICIENTS_ICTCP" + ], + "enumDescriptions": [ + "", + "Also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B.", + "", + "", + "Also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL \u0026 / SECAM / IEC 61966-2-4 xvYCC601.", + "Also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / / functionally identical to above.", + "", + "Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16.", + "ITU-R BT2020 non-constant luminance system.", + "ITU-R BT2020 constant luminance system.", + "SMPTE 2085, Y'D'zD'x", + "Chromaticity-derived non-constant luminance.", + "Chromaticity-derived constant luminance.", + "ITU-R BT.[HDR-TV] ICtCp" + ], + "type": "string" + }, + "primaries": { + "enum": [ + "COLOR_PRIMARIES_BT709", + "COLOR_PRIMARIES_UNSPECIFIED", + "COLOR_PRIMARIES_BT470M", + "COLOR_PRIMARIES_BT470BG", + "COLOR_PRIMARIES_SMPTE170M", + "COLOR_PRIMARIES_SMPTE240M", + "COLOR_PRIMARIES_FILM", + "COLOR_PRIMARIES_BT2020", + "COLOR_PRIMARIES_SMPTEST428_1", + "COLOR_PRIMARIES_SMPTE431", + "COLOR_PRIMARIES_SMPTE432", + "COLOR_PRIMARIES_JEDEC_P22" + ], + "enumDescriptions": [ + "Also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B.", + "", + "", + "Also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL \u0026 SECAM.", + "Also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC.", + "Functionally identical to above.", + "Color filters using Illuminant C.", + "ITU-R BT2020.", + "SMPTE ST428-1.", + "SMPTE ST431-2", + "SMPTE ST432-1", + "JEDEC P22 phosphors" + ], + "type": "string" + }, + "range": { + "enum": [ + "COLOR_RANGE_UNSPECIFIED", + "COLOR_RANGE_MPEG", + "COLOR_RANGE_JPEG" + ], + "enumDescriptions": [ + "", + "The normal 219*2^(n-8) \"MPEG\" YUV ranges.", + "The normal 2^n-1 \"JPEG\" YUV ranges." + ], + "type": "string" + }, + "transferCharacteristics": { + "enum": [ + "COLOR_TRANSFER_CHARACTERISTICS_BT709", + "COLOR_TRANSFER_CHARACTERISTICS_UNSPECIFIED", + "COLOR_TRANSFER_CHARACTERISTICS_GAMMA22", + "COLOR_TRANSFER_CHARACTERISTICS_GAMMA28", + "COLOR_TRANSFER_CHARACTERISTICS_SMPTE170M", + "COLOR_TRANSFER_CHARACTERISTICS_SMPTE240M", + "COLOR_TRANSFER_CHARACTERISTICS_LINEAR", + "COLOR_TRANSFER_CHARACTERISTICS_LOG", + "COLOR_TRANSFER_CHARACTERISTICS_LOG_SQRT", + "COLOR_TRANSFER_CHARACTERISTICS_IEC61966_2_4", + "COLOR_TRANSFER_CHARACTERISTICS_BT1361_ECG", + "COLOR_TRANSFER_CHARACTERISTICS_IEC61966_2_1", + "COLOR_TRANSFER_CHARACTERISTICS_BT2020_10", + "COLOR_TRANSFER_CHARACTERISTICS_BT2020_12", + "COLOR_TRANSFER_CHARACTERISTICS_SMPTEST2084", + "COLOR_TRANSFER_CHARACTERISTICS_SMPTEST428_1", + "COLOR_TRANSFER_CHARACTERISTICS_ARIB_STD_B67" + ], + "enumDescriptions": [ + "Also ITU-R BT1361.", + "", + "Also ITU-R BT470M / ITU-R BT1700 625 PAL \u0026 SECAM.", + "Also ITU-R BT470BG.", + "Also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC.", + "", + "Linear transfer characteristics.", + "Logarithmic transfer characteristic (100:1 range).", + "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range).", + "IEC 61966-2-4.", + "ITU-R BT1361 Extended Colour Gamut.", + "IEC 61966-2-1 (sRGB or sYCC).", + "ITU-R BT2020 for 10 bit system.", + "ITU-R BT2020 for 12 bit system.", + "SMPTE ST 2084 for 10, 12, 14 and 16 bit systems.", + "SMPTE ST 428-1.", + "ARIB STD-B67, known as \"Hybrid log-gamma\"." + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoFileContentLightLevel": { + "description": "A message holding the equivalent of the content light level information in HEVC or its representation in matroska/webm. This gives coarse stats on the luminance levels in the content and may be used as a hint by algorithms \u0026 displays to tone map.", + "id": "VideoFileContentLightLevel", + "properties": { + "maxContentLightLevel": { + "description": "Defines the maximum content light level (in cd/m^2) over the entire video.", + "format": "int32", + "type": "integer" + }, + "maxFrameAverageLightLevel": { + "description": "The maximum (over entire video) of the frame average light level.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoFileFramePackingArrangement": { + "description": "Information on Frame Packing arrangement", + "id": "VideoFileFramePackingArrangement", + "properties": { + "gridOffset0Horizontal": { + "description": "Grid positions", + "format": "int32", + "type": "integer" + }, + "gridOffset0Vertical": { + "format": "int32", + "type": "integer" + }, + "gridOffset1Horizontal": { + "format": "int32", + "type": "integer" + }, + "gridOffset1Vertical": { + "format": "int32", + "type": "integer" + }, + "interpretation": { + "description": "Content interpretation", + "enum": [ + "FPA_INTERPRET_UNKNOWN", + "FPA_INTERPRET_LEFT_FIRST", + "FPA_INTERPRET_RIGHT_FIRST" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "quincunxSampling": { + "description": "Quincunx sampling flag indicating if quincunx sampling is used", + "type": "boolean" + }, + "type": { + "description": "Arrangement type", + "enum": [ + "FPA_NONE", + "FPA_CHECKERBOARD", + "FPA_COL_ALTERNATION", + "FPA_ROW_ALTERNATION", + "FPA_SIDE_BY_SIDE", + "FPA_TOP_TO_BOTTOM", + "FPA_FRAME_ALTERNATION" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoFileHDR10PlusStats": { + "description": "Stats on HDR10+ (SMPTE 2094-40:2016 standard) over video frames.", + "id": "VideoFileHDR10PlusStats", + "properties": { + "applicationVersion": { + "description": "Application version is set to max version over all frames.", + "format": "int32", + "type": "integer" + }, + "averageTargetedSystemDisplayMaximumLuminance": { + "description": "The average of the nominal maximum display luminance of the targeted system display over all frames.", + "format": "double", + "type": "number" + }, + "masteringDisplayActualPeakLuminanceFlag": { + "description": "This flag is set if any frame has it.", + "type": "boolean" + }, + "maxNumWindows": { + "format": "int32", + "type": "integer" + }, + "targetedSystemDisplayActualPeakLuminanceFlag": { + "description": "This flag is set if any frame has it.", + "type": "boolean" + } + }, + "type": "object" + }, + "VideoFileMasteringDisplayMetadata": { + "description": "A message holding information about the mastering display color volume. This metadata can be used when tone mapping an HDR signal to a display with a different gamut or brightness characteristics than the mastering display. This message is capable of containing SMPTE 2086 metadata.", + "id": "VideoFileMasteringDisplayMetadata", + "properties": { + "blue": { + "$ref": "VideoFileMasteringDisplayMetadataCIE1931Coordinate", + "description": "Coordinates of the blue primary of the mastering display." + }, + "green": { + "$ref": "VideoFileMasteringDisplayMetadataCIE1931Coordinate", + "description": "Coordinates of the green primary of the mastering display." + }, + "maxLuminance": { + "description": "Maximum luminance of the display (in cd/m^2).", + "format": "float", + "type": "number" + }, + "minLuminance": { + "description": "Minimum luminance of the display (in cd/m^2).", + "format": "float", + "type": "number" + }, + "red": { + "$ref": "VideoFileMasteringDisplayMetadataCIE1931Coordinate", + "description": "Coordinates of the red primary of the mastering display." + }, + "whitePoint": { + "$ref": "VideoFileMasteringDisplayMetadataCIE1931Coordinate", + "description": "Coordinates of the white point of the mastering display." + } + }, + "type": "object" + }, + "VideoFileMasteringDisplayMetadataCIE1931Coordinate": { + "description": "Representation of a color coordinate in CIE1931 color space.", + "id": "VideoFileMasteringDisplayMetadataCIE1931Coordinate", + "properties": { + "x": { + "format": "float", + "type": "number" + }, + "y": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoFileSphericalMetadata": { + "description": "Globally allowed spherical meta data.", + "id": "VideoFileSphericalMetadata", + "properties": { + "clampedOptimalFovBounds": { + "$ref": "VideoFileSphericalMetadataFOVBounds", + "description": "Like above, but with high-pass motion filtering applied and yaw rotation limited to +/- 15-degrees" + }, + "cubemap": { + "$ref": "VideoFileSphericalMetadataCubemapProjection" + }, + "deprecatedCroppedArea": { + "$ref": "VideoFileSphericalMetadataCroppedArea" + }, + "deprecatedInitialView": { + "$ref": "VideoFileSphericalMetadataViewDirection", + "description": "InitialView is from v1 spec, and is more or less equivalent to Pose from v2 spec. Therefore, InitialView found in xml metadata would populate the pose field in this proto." + }, + "equirect": { + "$ref": "VideoFileSphericalMetadataEquirectProjection" + }, + "fullPanoHeightPixels": { + "format": "int32", + "type": "integer" + }, + "fullPanoWidthPixels": { + "description": "Dimensions of the full video frame.", + "format": "int32", + "type": "integer" + }, + "mesh": { + "$ref": "VideoFileSphericalMetadataMeshProjection" + }, + "metadataSource": { + "description": "Metadata source v2(svhd)", + "type": "string" + }, + "optimalFovBounds": { + "$ref": "VideoFileSphericalMetadataFOVBounds", + "description": "If video contains Wally-sanitized mesh and camera motion metadata (see go/wally-format ), this contains the optimal FOV (smallest FOV that encompass all combinations of input mesh FOV and rotations). This field will only be present if full FfmpegAnalyze is performed." + }, + "pose": { + "$ref": "VideoFileSphericalMetadataPose" + }, + "projectionType": { + "description": "Mapping type used to map the sphere to the rectangular video E.g., \"equirectangular\", http://en.wikipedia.org/wiki/Equirectangular_projection This is kept as string so that we can retain values that are unknown to us.", + "type": "string" + }, + "sourceCount": { + "description": "The number of camera sources used to generate this video.", + "format": "int32", + "type": "integer" + }, + "spherical": { + "description": "Whether the video is spherical or not.", + "type": "boolean" + }, + "stereoMode": { + "description": "The stereo mode.", + "enum": [ + "STEREO_MODE_UNKNOWN", + "STEREO_MODE_MONO", + "STEREO_MODE_LEFT_RIGHT", + "STEREO_MODE_TOP_BOTTOM" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "stitched": { + "description": "Whether the video has already been stitched.", + "type": "boolean" + }, + "stitchingSoftware": { + "description": "The stitching software.", + "type": "string" + }, + "timestamp": { + "description": "Epoch Timestamp of when the first frame in the video was recorded", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoFileSphericalMetadataCroppedArea": { + "description": "The cropping coordinates, in pixels.", + "id": "VideoFileSphericalMetadataCroppedArea", + "properties": { + "height": { + "format": "int32", + "type": "integer" + }, + "left": { + "format": "int32", + "type": "integer" + }, + "top": { + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoFileSphericalMetadataCubemapProjection": { + "description": "Specifies usage of cubemap projection.", + "id": "VideoFileSphericalMetadataCubemapProjection", + "properties": { + "layout": { + "description": "Values 0 to 255 are reserved for current and future layouts. Value of 0 corresponds to a grid with 3 columns and 2 rows as follows: | right face | left face | up face | | down face | front face | back face |", + "format": "uint32", + "type": "integer" + }, + "padding": { + "description": "Number of pixels to pad from the edge of each cube face", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoFileSphericalMetadataEquirectProjection": { + "description": "Specifies usage of equirectangular projection. More specifically, these are the proportion of projection cropped from each edge not covered by the video frame. For uncropped frame, all values are 0. For v1 metadata, this contains CroppedArea information (CroppedAreaLeftPixels, CroppedAreaTopPixels, CroppedAreaImageWidthPixels, CroppedAreaImageHeightPixels)", + "id": "VideoFileSphericalMetadataEquirectProjection", + "properties": { + "projectionBoundsBottom": { + "format": "uint32", + "type": "integer" + }, + "projectionBoundsLeft": { + "format": "uint32", + "type": "integer" + }, + "projectionBoundsRight": { + "format": "uint32", + "type": "integer" + }, + "projectionBoundsTop": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoFileSphericalMetadataFOVBounds": { + "id": "VideoFileSphericalMetadataFOVBounds", + "properties": { + "endTiltInDegrees": { + "format": "double", + "type": "number" + }, + "endYawInDegrees": { + "format": "double", + "type": "number" + }, + "startTiltInDegrees": { + "format": "double", + "type": "number" + }, + "startYawInDegrees": { + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "VideoFileSphericalMetadataMeshProjection": { + "description": "Specifies usage of mesh projection. \"content\" contains the mshp atom: version/flags, CRC, compression method, description of the mesh(es) (vertices, coordinates corresponding to each vertex, and vertex lists to describe the projection). See go/pir-spec for mshp atom data layout.", + "id": "VideoFileSphericalMetadataMeshProjection", + "properties": { + "bounds": { + "$ref": "VideoFileSphericalMetadataFOVBounds", + "description": "Once mesh is analyzed, this field contains the bounds of the mesh(es) In case of stereo mesh, this will be the aggregate of both eye meshes" + }, + "content": { + "format": "byte", + "type": "string" + }, + "type": { + "description": "The mesh type field will only be populated when we have done analysis on the mesh. If this field is missing, mesh analysis has not been done.", + "enum": [ + "MESH_TYPE_UNKNOWN", + "MESH_TYPE_WALLY_FISHEYE", + "MESH_TYPE_WALLY_CROPPED_EQUIRECT", + "MESH_TYPE_WALLY_FOVEATED" + ], + "enumDescriptions": [ + "", + "Wally mesh: see go/wally-format and go/wallymesh.", + "", + "go/wally-foveated-mesh-dd" + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoFileSphericalMetadataPose": { + "description": "Specifies the compass heading, pitch \u0026 roll for the origin of the projection. The origin for the \"equirectangular\" projection is the center of the image. The origin for the other projection types is defined as the location in the image that corresponds to the origin of an \"equirectangular\" projection.", + "id": "VideoFileSphericalMetadataPose", + "properties": { + "headingDegrees": { + "format": "float", + "type": "number" + }, + "pitchDegrees": { + "format": "float", + "type": "number" + }, + "rollDegrees": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoFileSphericalMetadataViewDirection": { + "id": "VideoFileSphericalMetadataViewDirection", + "properties": { + "headingDegrees": { + "format": "int32", + "type": "integer" + }, + "pitchDegrees": { + "format": "int32", + "type": "integer" + }, + "rollDegrees": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoLegosLegosAnnotationsSet": { + "id": "VideoLegosLegosAnnotationsSet", + "properties": { + "featureSetName": { + "type": "string" + }, + "legosAnnotations": { + "$ref": "YoutubeDiscoveryLegosLegosAnnotations" + } + }, + "type": "object" + }, + "VideoLegosLegosAnnotationsSets": { + "id": "VideoLegosLegosAnnotationsSets", + "properties": { + "annotationsSet": { + "items": { + "$ref": "VideoLegosLegosAnnotationsSet" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoMediaInfo": { + "description": "Feel free to ignore this lint warning if only the trivia (e.g., comments) is is changed. LINT.IfChange", + "id": "VideoMediaInfo", + "properties": { + "audioStream": { + "description": "Each entry corresponds to one audio stream in the original media file.", + "items": { + "$ref": "VideoAudioStream" + }, + "type": "array" + }, + "containerId": { + "description": "Container type of the file, e.g. FLV, H264, MP3. Uses the numeric value corresponding to the ContainerId enum objects, in order to avoid the dependency on vsi/videostreaminfo.proto. http://cs/symbol:ContainerId%20f:google3/video/vidproc/vsi/videostreaminfo.proto", + "format": "int32", + "type": "integer" + }, + "fileSize": { + "description": "Media file size in bytes.", + "format": "int64", + "type": "string" + }, + "overview": { + "$ref": "VideoMediaOverview", + "description": "This is a high-level description of the media. It does not contain PII." + }, + "videoStream": { + "description": "Each entry corresponds to one video stream (usually just one) in the original media file.", + "items": { + "$ref": "VideoVideoStream" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoMediaOverview": { + "description": "Next ID: 19 IMPORTANT: This file is used in scattered directories, such that it is risky to add values to any enumerated type. (First of all, compilation breaks on switch statements without default clauses.) Run a global tap presubmit: tap_presubmit -p all --train -c before submitting. Also check out the blame layer of previous updates for hints on what other files to changes.", + "id": "VideoMediaOverview", + "properties": { + "aspectRatio": { + "enum": [ + "ASPECT_RATIO_UNKNOWN", + "ASPECT_RATIO_1_1", + "ASPECT_RATIO_3_2", + "ASPECT_RATIO_4_3", + "ASPECT_RATIO_16_9" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "audioOverview": { + "items": { + "$ref": "VideoMediaOverviewAudioOverview" + }, + "type": "array" + }, + "authoringTool": { + "enum": [ + "AUTHORING_TOOL_UNKNOWN", + "AUTHORING_TOOL_GWD" + ], + "enumDescriptions": [ + "", + "Google Web Designer" + ], + "type": "string" + }, + "colorDynamicRange": { + "enum": [ + "COLOR_DYNAMIC_RANGE_UNKNOWN", + "COLOR_DYNAMIC_RANGE_STANDARD", + "COLOR_DYNAMIC_RANGE_HIGH" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "creationTimeStampUsec": { + "description": "Creation timestamp of this media_info, in Unix timestamp since epoch.", + "format": "int64", + "type": "string" + }, + "dataOverview": { + "items": { + "$ref": "VideoMediaOverviewDataOverview" + }, + "type": "array" + }, + "frameRate": { + "enum": [ + "FRAME_RATE_UNKNOWN", + "FRAME_RATE_STANDARD", + "FRAME_RATE_HIGH", + "FRAME_RATE_ULTRA_HIGH" + ], + "enumDescriptions": [ + "", + "less than 40 fps.", + "40 \u003c= fps \u003c 80", + "80 \u003c= fps" + ], + "type": "string" + }, + "hasChapters": { + "description": "Currently used by originals replacement pipeline to exclude all videos containing chapter info.", + "type": "boolean" + }, + "mediaClipInfoOverview": { + "$ref": "VideoMediaOverviewMediaClipInfoOverview" + }, + "orientation": { + "enum": [ + "ORIENTATION_UNKNOWN", + "ORIENTATION_PORTRAIT", + "ORIENTATION_LANDSCAPE" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "origin": { + "enum": [ + "ORIGIN_UNKNOWN", + "ORIGIN_CLIENT", + "ORIGIN_UPLOAD", + "ORIGIN_PROCESSING" + ], + "enumDescriptions": [ + "", + "Provided by the client.", + "Assessed during upload before all bytes are available.", + "Assessed during processing." + ], + "type": "string" + }, + "projection": { + "enum": [ + "PROJECTION_UNKNOWN", + "PROJECTION_RECTANGULAR", + "PROJECTION_SPHERICAL", + "PROJECTION_PARTIALLY_SPHERICAL" + ], + "enumDescriptions": [ + "", + "a regular, non projected video", + "360 content", + "go/3d180" + ], + "type": "string" + }, + "resolution": { + "enum": [ + "RESOLUTION_UNKNOWN", + "RESOLUTION_ULTRA_LOW", + "RESOLUTION_LOW", + "RESOLUTION_SD", + "RESOLUTION_720P", + "RESOLUTION_1080P", + "RESOLUTION_2K", + "RESOLUTION_4K", + "RESOLUTION_8K" + ], + "enumDescriptions": [ + "", + "Common Interchange Format or smaller.", + "Below standard definition, larger than CIF.", + "Ever-larger levels of resolution. Check multiple values to check \"1080p or higher\", for example.", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "spatialAudioMode": { + "enum": [ + "SPATIAL_AUDIO_MODE_UNKNOWN", + "SPATIAL_AUDIO_MODE_NON_SPATIAL", + "SPATIAL_AUDIO_MODE_SPATIAL" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "stereoMode": { + "enum": [ + "STEREO_MODE_UNKNOWN", + "STEREO_MODE_TWO_D", + "STEREO_MODE_SIDE_BY_SIDE", + "STEREO_MODE_TOP_BOTTOM" + ], + "enumDescriptions": [ + "", + "", + "3-D. Always left-to-right.", + "3-D. Bottom-to-top not supported." + ], + "type": "string" + }, + "timedtextOverview": { + "items": { + "$ref": "VideoMediaOverviewTimedTextOverview" + }, + "type": "array" + }, + "videoOverview": { + "items": { + "$ref": "VideoMediaOverviewVideoOverview" + }, + "type": "array" + }, + "wallyMeshType": { + "description": "This only applies when: projection = PROJECTION_PARTIALLY_SPHERICAL", + "enum": [ + "MESH_TYPE_UNKNOWN", + "MESH_TYPE_WALLY_FISHEYE", + "MESH_TYPE_WALLY_CROPPED_EQUIRECT" + ], + "enumDescriptions": [ + "", + "Wally mesh: see go/wally-format and go/wallymesh.", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoMediaOverviewAudioOverview": { + "description": "Audio stream description with no PII.", + "id": "VideoMediaOverviewAudioOverview", + "properties": { + "channels": { + "description": "Number of audio channels.", + "format": "int32", + "type": "integer" + }, + "contentType": { + "description": "Content type of the audio track extracted from VSI. This is only populated with valid \"acont\" xtag values at the moment, i.e., if VSI reports an invalid string, we ignore it. Supported acont xtag values can be found in google3/video/storage/common/xtag_validation.cc. Examples: \"original\", \"dubbed\", \"descriptive\", \"commentary\", etc.", + "type": "string" + }, + "language": { + "description": "Language of the audio track extracted from VSI. Populated if it's deemed a valid code by ISO639-2b, ISO639-2t or III library.", + "type": "string" + }, + "loudness1770Lkfs": { + "format": "double", + "type": "number" + }, + "roundedUpOriginalDurationSec": { + "description": "Approximate audio length, has the same caveats as its video equivalent.", + "format": "int32", + "type": "integer" + }, + "spatialAudioMode": { + "enum": [ + "SPATIAL_AUDIO_MODE_UNKNOWN", + "SPATIAL_AUDIO_MODE_NON_SPATIAL", + "SPATIAL_AUDIO_MODE_SPATIAL" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoMediaOverviewDataOverview": { + "description": "Data stream description with no PII. Currently used by originals replacement pipeline to exclude all clips that have data streams. Fields in proto are used to exclude clips with certain types of data streams.", + "id": "VideoMediaOverviewDataOverview", + "properties": { + "hasCameraMotionMetadata": { + "description": "Whether the data stream has camera motion metadata (dynamic) or not (static). Some Wally/VR180 videos do.", + "type": "boolean" + }, + "hasOzoAudio": { + "description": "If true, source contains metadata for OZO spatial audio support. See b/62393568 for more information about the OZO spatial audio format. Note that SpatialAudioMode is independent of this format.", + "type": "boolean" + } + }, + "type": "object" + }, + "VideoMediaOverviewMediaClipInfoOverview": { + "description": "Video clip info description with no PII.", + "id": "VideoMediaOverviewMediaClipInfoOverview", + "properties": { + "hasGeolocation": { + "description": "Corresponds to vsi.video_clip_info().has_geolocation()", + "type": "boolean" + } + }, + "type": "object" + }, + "VideoMediaOverviewTimedTextOverview": { + "description": "Timed text stream description with no PII. Currently used by originals replacement pipeline to exclude all clips that have timed text streams. Add fields to proto if we want to only exclude clips with certain types of timed text streams in the future.", + "id": "VideoMediaOverviewTimedTextOverview", + "properties": {}, + "type": "object" + }, + "VideoMediaOverviewVideoOverview": { + "description": "Video stream description with no PII.", + "id": "VideoMediaOverviewVideoOverview", + "properties": { + "aspectRatio": { + "enum": [ + "ASPECT_RATIO_UNKNOWN", + "ASPECT_RATIO_1_1", + "ASPECT_RATIO_3_2", + "ASPECT_RATIO_4_3", + "ASPECT_RATIO_16_9" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "averageFps": { + "description": "Prefer average_fps to match the logic used in transcoder for format profile frame rate checks. First added for Photos, see b/165839654.", + "format": "double", + "type": "number" + }, + "codecId": { + "format": "int32", + "type": "integer" + }, + "colorDynamicRange": { + "enum": [ + "COLOR_DYNAMIC_RANGE_UNKNOWN", + "COLOR_DYNAMIC_RANGE_STANDARD", + "COLOR_DYNAMIC_RANGE_HIGH" + ], + "enumDescriptions": [ + "", + "", + "" + ], + "type": "string" + }, + "fps": { + "format": "double", + "type": "number" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "resolution": { + "enum": [ + "RESOLUTION_UNKNOWN", + "RESOLUTION_ULTRA_LOW", + "RESOLUTION_LOW", + "RESOLUTION_SD", + "RESOLUTION_720P", + "RESOLUTION_1080P", + "RESOLUTION_2K", + "RESOLUTION_4K", + "RESOLUTION_8K" + ], + "enumDescriptions": [ + "", + "Common Interchange Format or smaller.", + "Below standard definition, larger than CIF.", + "Ever-larger levels of resolution. Check multiple values to check \"1080p or higher\", for example.", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "roundedUpOriginalDurationSec": { + "description": "Approximate video length. Data is rounded up to the next second, to avoid being PII. (Long ago, YTFE set a precedent of rounding up durations, rather than rounding to the closest second.) This value is derived from metadata in the source video, and often differs from the actual duration of any given transcode. In videos without valid timestamps, this value is not calculable, and is reported as zero. Prefer the value from MediaInfo::VideoStream over this value, which was added to resolve b/202864365.", + "format": "int32", + "type": "integer" + }, + "videoHasClosedCaptions": { + "type": "boolean" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoPerDocData": { + "id": "VideoPerDocData", + "properties": { + "coreSignals": { + "$ref": "MediaIndexVideoCoreSignals" + }, + "frames": { + "$ref": "MediaIndexVideoFrames" + } + }, + "type": "object" + }, + "VideoPipelineViperThumbnailerColumnData": { + "id": "VideoPipelineViperThumbnailerColumnData", + "properties": { + "frameBlobRefs": { + "description": "The blobRef where the representative frame is stored. This is repeated in order to support multiple thumbnails in the future.", + "items": { + "$ref": "BlobstoreBlobRef" + }, + "type": "array" + }, + "frameFileList": { + "$ref": "VideoThumbnailsFrameFileList", + "description": "Video frame files (based on file_dir_to_save_frames parameter)" + }, + "frameTypeGenerated": { + "description": "Frame type generated (VR/360/3D/default).", + "enum": [ + "FRAME_TYPE_DEFAULT", + "FRAME_TYPE_VR", + "FRAME_TYPE_360", + "FRAME_TYPE_3D", + "FRAME_TYPE_VR180_LEFT_RIGHT", + "FRAME_TYPE_VR180_TOP_BOTTOM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "generatedFromDrishtiThumbnailer": { + "description": "True if the thumbnails are generated from drishti_thumbnailer.", + "type": "boolean" + }, + "highResPreviewThumbnailGenerated": { + "type": "boolean" + }, + "hq720Generated": { + "description": "hq720.jpg is a 1280x720 pixel image generated only when the input video resolution is 1280x720 or higher.", + "type": "boolean" + }, + "hqdefaultGenerated": { + "description": "The flags below indicate whether certain optional thumbnail images were generated. hqdefault.jpg is a 480x360 pixel high quality image which should normally be always generated.", + "type": "boolean" + }, + "hvcBackupGenerated": { + "description": "True if a set of backup HVC thumbnails is generated.", + "type": "boolean" + }, + "improvedVerticalGenerated": { + "description": "True if the thumbnails are generated with background crop and scrim.", + "type": "boolean" + }, + "maxresdefaultGenerated": { + "description": "maxresdefault.jpg is an image of the same resolution as the input video. It is generated only when the input video is significantly higher-resolution than 640x480.", + "type": "boolean" + }, + "maxresdefaultHeight": { + "description": "Height of the generated maxresdefault thumbnail.", + "format": "int32", + "type": "integer" + }, + "maxresdefaultWidth": { + "description": "Width of the generated maxresdefault thumbnail.", + "format": "int32", + "type": "integer" + }, + "movingThumbnailGenerated": { + "description": "True if moving thumbnails are generated.", + "type": "boolean" + }, + "privateThumbnailsGenerated": { + "description": "True if private thumbnails were generated and stored in the thumbnail database.", + "type": "boolean" + }, + "publicThumbnailsGenerated": { + "description": "True if public thumbnails were generated and stored in the thumbnail database.", + "type": "boolean" + }, + "rerunStatus": { + "description": "Analysis result of running the rerun thumbnailer", + "enum": [ + "RERUN_FAILED", + "RERUN_NO_ACTION_CUSTOM_THUMB", + "RERUN_NO_ACTION_ALREADY_EXISTS", + "RERUN_NO_ACTION_RECOMPUTE_DISABLED", + "RERUN_NO_ACTION_DEFAULT_THUMBNAILS_MISSING", + "RERUN_NO_ACTION_DEFAULT_THUMBNAILS_TIMESTAMP_MISSING", + "RERUN_NO_ACTION_THUMBNAIL_SERVICE_FAILURE", + "RERUN_NO_ACTION_UNUSUAL_THUMBNAIL_DATA", + "RERUN_PERFORM_EXTRACTION" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "sddefaultGenerated": { + "description": "sddefault.jpg is a 640x480 pixel image generated only when the input video resolution is 640x480 or higher.", + "type": "boolean" + }, + "storyboardGenerated": { + "description": "This flag indicates if storyboard mosaic images were generated and stored in the thumbnail database.", + "type": "boolean" + }, + "storyboardNumLevels": { + "description": "Number of levels of storyboard generated (0 if policy default).", + "format": "int32", + "type": "integer" + }, + "storyboardPolicy": { + "description": "Policy number that governed the storyboard generation. If zero, no policy was used and the storyboard format is not fully specified by the parameters contained in this message.", + "format": "int32", + "type": "integer" + }, + "storyboardVersion": { + "description": "Version of the storyboard.", + "format": "int32", + "type": "integer" + }, + "storyboardVideoDurationMs": { + "description": "Video duration of the video.", + "format": "int32", + "type": "integer" + }, + "storyboardVideoHeight": { + "description": "Height of the video that was storyboarded.", + "format": "int32", + "type": "integer" + }, + "storyboardVideoWidth": { + "description": "Width of the video that was storyboarded.", + "format": "int32", + "type": "integer" + }, + "webpGenerated": { + "description": "This flag indicates if images in WebP format were created and stored in the thumbnail database.", + "type": "boolean" + } + }, + "type": "object" + }, + "VideoPipelineViperVSIColumnData": { + "id": "VideoPipelineViperVSIColumnData", + "properties": { + "info": { + "$ref": "VideoVideoStreamInfo" + }, + "inputReadTime": { + "description": "Total time taken in seconds to read the input", + "format": "double", + "type": "number" + }, + "partialFile": { + "description": "Was the VSI computed on a partial file ?", + "type": "boolean" + }, + "totalVsiTime": { + "description": "Total time (of all attempts) taken in seconds to compute VSI", + "format": "double", + "type": "number" + }, + "vsiStats": { + "items": { + "$ref": "VideoPipelineViperVSIColumnDataVsiStats" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoPipelineViperVSIColumnDataVsiStats": { + "description": "The stats of each output vsi.", + "id": "VideoPipelineViperVSIColumnDataVsiStats", + "properties": { + "partialVsi": { + "description": "True if the output vsi is a partial vsi.", + "type": "boolean" + }, + "vsiTime": { + "description": "The time (in secondes) from vsi_engine init to vsi written to output buffer.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "VideoRational32": { + "id": "VideoRational32", + "properties": { + "denominator": { + "format": "int32", + "type": "integer" + }, + "numerator": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoSEIMessage": { + "description": "This SEI message only takes the payload type and the sum of the payload sizes for all SEI messages of this type. More informations, such as timestamp, payload, may be added in the future.", + "id": "VideoSEIMessage", + "properties": { + "count": { + "description": "message count of each payloadtype", + "format": "int32", + "type": "integer" + }, + "cumulativeSize": { + "description": "If the video stream has multiple SEI messages with the same payload type, this is the sum of all these payloads' sizes.", + "format": "int64", + "type": "string" + }, + "payloadtype": { + "description": "use int type in case there are payload types that are not included in the SEIPayloadType enum below. The enum can be used for lookup", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoStorageLoudnessData": { + "description": "Measurement of loudness. Next tag = 3", + "id": "VideoStorageLoudnessData", + "properties": { + "itu1770LoudnessDb": { + "description": "Loudness measured using ITU-R BS. 1770", + "format": "float", + "type": "number" + }, + "perceptualLoudnessDb": { + "description": "Perceived loudness of audio measured using replaygain.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "VideoThumbnailsFrameFile": { + "description": "Individual video frame saved in an image file.", + "id": "VideoThumbnailsFrameFile", + "properties": { + "filename": { + "type": "string" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "msOffset": { + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoThumbnailsFrameFileList": { + "description": "List of individual video frames, each saved as an image file", + "id": "VideoThumbnailsFrameFileList", + "properties": { + "frameFiles": { + "items": { + "$ref": "VideoThumbnailsFrameFile" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoThumbnailsThumbnailScore": { + "description": "LINT.IfChange Score calculated from a thumbnail. NextID: 15", + "id": "VideoThumbnailsThumbnailScore", + "properties": { + "checksum": { + "description": "Checksum of the thumbnail bytes used to identify which image the score belongs to. Only filled when thumbnail version is 0.", + "format": "uint64", + "type": "string" + }, + "colorSampling": { + "description": "Color sampling score encoded as uint32. Encode/Decode using youtube::color::RgbToUint / UIntToRgb. Field is only relevant for TYPE_COLOR_SAMPLING.", + "format": "uint32", + "type": "integer" + }, + "denseFeatures": { + "description": "Thumbnail dense features.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + }, + "denseGeneralExtraFeatures": { + "$ref": "DrishtiFeatureExtra", + "description": "FeatureExtra extension for dense features." + }, + "isAssigned": { + "description": "If true, score is manually assigned.", + "type": "boolean" + }, + "isInstant": { + "description": "If true, score will be instantly indexed by YouTube search indexer.", + "type": "boolean" + }, + "modelVersion": { + "enum": [ + "MODEL_VERSION_UNKNOWN", + "MODEL_VERSION_ONE", + "MODEL_VERSION_TWO", + "MODEL_VERSION_THREE", + "MODEL_VERSION_FOUR", + "MODEL_RACY_WATCHPAGE_2018_01_15", + "MODEL_RACY_WATCHPAGE_2020_04_20", + "MODEL_RACY_WATCHPAGE_2020_04_20A", + "MODEL_RACY_WATCHPAGE_2020_04_20_FLAGGED", + "MODEL_RACY_WATCHPAGE_2021_05_04", + "MODEL_RACY_WATCHPAGE_2021_05_04_FLAGGED", + "MODEL_RACY_WATCHPAGE_2021_05_04_FLAGGED_SHORTS", + "MODEL_RACY_WATCHPAGE_2021_05_04_FLAGGED_HOME", + "MODEL_RACY_WATCHPAGE_2021_05_04_FLAGGED_WATCHNEXT", + "MODEL_RACY_WATCHPAGE_V4", + "MODEL_RACY_SHORTS_WATCHPAGE_V1", + "MODEL_RACY_SHORTS_WATCHPAGE_V1_FLAGGED", + "MODEL_RACY_THUMB_2019_04_02", + "MODEL_RACY_THUMB_2019_08_12", + "MODEL_RACY_THUMB_2019_08_12A", + "MODEL_RACY_THUMB_2019_08_12B", + "MODEL_RACY_THUMB_2019_08_12C", + "MODEL_RACY_THUMB_2019_08_12D", + "MODEL_RACY_THUMB_2019_08_12E", + "MODEL_RACY_THUMB_2019_08_12_CALIBRATED", + "MODEL_RACY_THUMB_2019_08_12_FLAGGED", + "MODEL_QUALITY_2019_09_24", + "MODEL_QUALITY_2019_11_11", + "MODEL_QUALITY_2020_11_12", + "MODEL_RACY_THUMB_2019_08_12_4A", + "MODEL_RACY_THUMB_2019_08_12_4B", + "MODEL_RACY_THUMB_2019_08_12_4C", + "MODEL_RACY_THUMB_2019_08_12_UPDATEDSS", + "MODEL_RACY_THUMB_2019_04_02_ABLATE_ALL", + "MODEL_RACY_THUMB_2019_04_02_ABLATE_V3", + "MODEL_RACY_THUMB_2019_08_12_ABLATE_HUMAN_RATING", + "MODEL_RACY_THUMB_2019_08_12_ABLATE_USER_FLAGGING", + "MODEL_RACY_THUMB_2020_02_24", + "MODEL_RACY_THUMB_2020_02_24_CALIBRATED", + "MODEL_RACY_THUMB_2020_02_24_FLAGGED", + "MODEL_RACY_THUMB_2020_02_24_EFF", + "MODEL_RACY_THUMB_V5", + "MODEL_THUMB_EMBEDDING_20201201", + "MODEL_PQC_20210816_0", + "MODEL_VERSION_TEST" + ], + "enumDescriptions": [ + "", + "First version for each score type (except racy_watchpage). Score is calibrated to between [0, 1] (go/improve-yt-thumb-racy-scorer).", + "Second version for golden thumbnail features.", + "Third version for golden thumbnail features.", + "Fourth version for golden thumbnail features.", + "Model described here: https://g3doc.corp.google.com/company/teams/safesearch/signals/web/racy_watchpage/index.md", + "Racy watchpage score v5 using racy watchpage model v2 (go/racy-watchpage-v2).", + "Historical: Used before 07/01/2020. Racy watchpage model v2, experimenting calibration to precision.", + "Flagged racy watchpage score v5 using racy watchpage model v2.", + "Racy watchpage score v6 using racy watchpage model v3 (go/racy-watchpage-v3).", + "Flagged racy watchpage score v6 using racy watchpage model v3.", + "Flagged racy watchpage score v6 using racy watchpage model v3 and shorts video reports.", + "Flagged racy watchpage score v6 using racy watchpage model v3 calibrated for home.", + "Flagged racy watchpage score v6 using racy watchpage model v3 calibrated for watchnext.", + "Racy watchpage model v4 (go/racy-watchpage-v4).", + "Racy shorts watchpage model v1.", + "", + "Racy thumb model which corresponds to https://mldash.corp.google.com/experiments/156747527161891342", + "Racy thumb model V3 based on cotraining. https://mldash.corp.google.com/experiments/2626243069925683800", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant 1. https://mldash.corp.google.com/experiments/2626243069925683800", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant 2. https://mldash.corp.google.com/experiments/2626243069925683800", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant 3. https://mldash.corp.google.com/experiments/2626243069925683800", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant 4. https://mldash.corp.google.com/experiments/2626243069925683800", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant 5. https://mldash.corp.google.com/experiments/2626243069925683800", + "Racy thumb model V3 after calibration.", + "Flagged racy watchpage model using racy thumbnail V3 score.", + "Quality thumb model V2 trained using search page quality ratings.", + "", + "Quality thumb model V3.", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant 4A. https://mldash.corp.google.com/experiments/2626243069925683800", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant 4B. https://mldash.corp.google.com/experiments/2626243069925683800", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant 4C. https://mldash.corp.google.com/experiments/2626243069925683800", + "Historical: Used before 05/06/2020. Racy thumb model V3 based on cotraining. Variant for Safesearch Update.", + "Historical: Used before 03/11/2020.", + "Historical: Used before 03/11/2020.", + "Historical: Used before 03/11/2020.", + "Historical: Used before 03/11/2020.", + "Racy thumb model V4 based on unified training.", + "Racy thumb model V4 based on unified training after calibration with MODEL_VERSION_ONE.", + "Flagged racy watchpage model using racy thumbnail V4 score.", + "Historical: Used before 03/25/2020.", + "Racy thumb model V5 (go/racy-thumb-v5)", + "First thumbnail-Query embedding ready for SxS.", + "Porn Query Classifier (go/pqc).", + "Model version for test data that shouldn't be used in production." + ], + "type": "string" + }, + "overwriteReason": { + "enum": [ + "REASON_NO_OVERWRITE", + "REASON_UNKNOWN", + "REASON_RACY_WARTCHPAGE_RATING", + "REASON_RACY_THUMBNAIL_RATING", + "REASON_THUMBNAIL_REPORT", + "REASON_VIDEO_REPORT" + ], + "enumDescriptions": [ + "", + "", + "", + "Overwrite using CorpusTable::kDefaultThumbnailRacyRatingScoreCol.", + "Overwrite using thumbnail user reports and elmo score.", + "Overwrite using video user reports and elmo score." + ], + "type": "string" + }, + "quantizedFeatures": { + "description": "Thumbnail quantized dense features, available in TYPE_STARBURST_COMPRESSED", + "format": "byte", + "type": "string" + }, + "score": { + "format": "double", + "type": "number" + }, + "sparseFeatures": { + "$ref": "DrishtiSparseFeatureData", + "description": "Thumbnail sparse features, available in TYPE_STARBURST" + }, + "thumbnailSet": { + "enum": [ + "SET_UNKNOWN", + "SET_ONE", + "SET_TWO", + "SET_THREE", + "SET_DEFAULT" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "thumbnailVersion": { + "description": "Version number of the thumbnail. Should be consistent with the version number in the ytimg_content column family.", + "format": "uint64", + "type": "string" + }, + "type": { + "enum": [ + "TYPE_UNKNOWN", + "TYPE_RACY", + "TYPE_QUALITY", + "TYPE_JOY_FACE", + "TYPE_EYE_OPEN", + "TYPE_FACE_RATIO", + "TYPE_SHARPNESS", + "TYPE_COLORFULNESS", + "TYPE_NIMA", + "TYPE_STARBURST", + "TYPE_RACY_RATING", + "TYPE_RACY_WATCHPAGE", + "TYPE_RACY_LOCKUP", + "TYPE_RACY_WATCHPAGE_FLAGGED", + "TYPE_STARBURST_EMBEDDING", + "TYPE_FACE", + "TYPE_FDENSE_PCA", + "TYPE_FDENSE_PCA_MOE", + "TYPE_FNET_LOGREG", + "TYPE_FNET_TOPICALITY", + "TYPE_LOGO", + "TYPE_NEAR_DUP", + "TYPE_OCR", + "TYPE_OCR_UNIGRAMS", + "TYPE_OCR_UNIGRAMS_NON_TRIVIAL", + "TYPE_PINKY_FRAMING", + "TYPE_PQC_PORN_CHANNEL_DISPLAY_NAME", + "TYPE_PQC_PORN_DESCRIPTION", + "TYPE_PQC_PORN_TITLE", + "TYPE_PQC_VIOLENCE_CHANNEL_DISPLAY_NAME", + "TYPE_PQC_VIOLENCE_DESCRIPTION", + "TYPE_PQC_VIOLENCE_TITLE", + "TYPE_SAFESEARCH", + "TYPE_SAFESEARCH_PINKY", + "TYPE_STARBURST_COMPRESSED", + "TYPE_STARBURST_TOKENS", + "TYPE_MACRO_MARKERS", + "TYPE_THUMB_QUERY_EMBEDDING", + "TYPE_COLOR_SAMPLING" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "go/nima.", + "", + "go/thumb-safety-continuous-racy-model (\"Signal Export\").", + "", + "", + "Historical: Used before 05/08/2020.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Porn Query Classifier (go/pqc) scores.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoTimedtextS4ALIResults": { + "id": "VideoTimedtextS4ALIResults", + "properties": { + "langResults": { + "description": "The complete list of language scores, sorted from high score to low.", + "items": { + "$ref": "VideoTimedtextS4LangScore" + }, + "type": "array" + }, + "speechClass": { + "description": "What kind of speech (if any) was detected.", + "enum": [ + "UNKNOWN", + "NO_SPEECH", + "HAS_SPEECH_FOR_ASR" + ], + "enumDescriptions": [ + "Unspecified, or string label not recognized.", + "", + "Currently corresponds to simple speech" + ], + "type": "string" + } + }, + "type": "object" + }, + "VideoTimedtextS4LangScore": { + "id": "VideoTimedtextS4LangScore", + "properties": { + "confidence": { + "description": "A score between 0.0 and 1.0; the relative probability that this is the language of the video. This should not be interpreted as an absolute probability. For instance, scores may be calculated for all languages even for videos for which no speech was detected.", + "format": "float", + "type": "number" + }, + "langCode": { + "description": "The language code for one of the languages supported by automatic language identification.", + "type": "string" + } + }, + "type": "object" + }, + "VideoUserDataRegisteredItuTT35": { + "description": "This message contains user data registered itu-t t.35 data", + "id": "VideoUserDataRegisteredItuTT35", + "properties": { + "count": { + "description": "Counts itu-t t.35 message with the same country code and provider code", + "format": "int32", + "type": "integer" + }, + "countryCode": { + "format": "int32", + "type": "integer" + }, + "providerCode": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoUserDataUnregistered": { + "description": "This message contains unregistered user data identified by a UUID", + "id": "VideoUserDataUnregistered", + "properties": { + "count": { + "description": "Counts user data with the same uuid and payload If payload size is larger than limit, the payload will be 'Payload size is larger than limit: ' + limit size Count will be for user data with same uuid and payload exceeds limit in this case", + "format": "int32", + "type": "integer" + }, + "payload": { + "description": "Payload may not be filled in Payload may contain user data", + "format": "byte", + "type": "string" + }, + "uuid": { + "type": "string" + } + }, + "type": "object" + }, + "VideoVideoClipInfo": { + "description": "VideoClipInfo : meta information extracted from video file Next id: 26", + "id": "VideoVideoClipInfo", + "properties": { + "artist": { + "description": "Lists the artist of the original subject of the file.", + "format": "byte", + "type": "string" + }, + "audioVendorId": { + "description": "Audio vendor ID", + "format": "byte", + "type": "string" + }, + "author": { + "description": "Different containers use different video clip info. The following fields include info from popular formats: AVI, MOV, and WMV.", + "format": "byte", + "type": "string" + }, + "comment": { + "format": "byte", + "type": "string" + }, + "commissioned": { + "description": "Lists the name of the person or organization that commissioned the subject of the file.", + "format": "byte", + "type": "string" + }, + "copyright": { + "description": "Records the copyright information for the file.", + "format": "byte", + "type": "string" + }, + "digitizationTime": { + "format": "byte", + "type": "string" + }, + "director": { + "format": "byte", + "type": "string" + }, + "engineer": { + "description": "The engineer who worked on the file.", + "format": "byte", + "type": "string" + }, + "geolocation": { + "$ref": "VideoVideoGeoLocation", + "description": "Optional geo-location information in WGS 84." + }, + "info": { + "format": "byte", + "type": "string" + }, + "keywords": { + "description": "Provides a list of keywords that refer to the file or subject of the file.", + "format": "byte", + "type": "string" + }, + "make": { + "description": "The camera make such as Apple, Samsung etc.", + "format": "byte", + "type": "string" + }, + "medium": { + "description": "Describes the original subject of the file.", + "format": "byte", + "type": "string" + }, + "metadata": { + "description": "Container level metadata", + "items": { + "$ref": "VideoClipInfo" + }, + "type": "array" + }, + "model": { + "description": "The camera model such as iPhone7 or Pixel, etc.", + "format": "byte", + "type": "string" + }, + "performer": { + "format": "byte", + "type": "string" + }, + "producer": { + "format": "byte", + "type": "string" + }, + "requirements": { + "format": "byte", + "type": "string" + }, + "software": { + "description": "Identifies the name of the software packages used to create the file.", + "format": "byte", + "type": "string" + }, + "sourceProvider": { + "description": "Identifies the name of the person or organization who supplied the original subject of the file.", + "format": "byte", + "type": "string" + }, + "subject": { + "description": "Describes the contents of the file.", + "format": "byte", + "type": "string" + }, + "technician": { + "description": "Identifies the technician who digitized the subject file.", + "format": "byte", + "type": "string" + }, + "title": { + "format": "byte", + "type": "string" + }, + "videoVendorId": { + "description": "Video vendor ID", + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "VideoVideoGeoLocation": { + "description": "Generic geo-location information. This is error-prone due to the fact that is uses signed integer fields, which are not supported by proto1 API and are cast to unsigned integers. Consider using the metadata_util function directly, which fills out a version 2 API proto.", + "id": "VideoVideoGeoLocation", + "properties": { + "altitudeE2": { + "description": "Altitude is in meters and multiplied by 100 (i.e., in centimeters). Up till 10 km this fits in 3 bytes.", + "format": "int32", + "type": "integer" + }, + "latitudeE7": { + "description": "Latitude and longitude are in degrees and multiplied by 10^7. This gives the worst precision of about 1 cm at the equator.", + "format": "int32", + "type": "integer" + }, + "longitudeE7": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoVideoStream": { + "id": "VideoVideoStream", + "properties": { + "bitrate": { + "description": "Video bitrate in bits/s.", + "format": "int64", + "type": "string" + }, + "codecId": { + "description": "Video codec ID. Uses the numeric value corresponding to the CodecId enum object, in order to avoid the dependency on vsi/videostreaminfo.proto. http://cs/symbol:CodecId%20f:google3/video/vidproc/vsi/videostreaminfo.proto", + "format": "int32", + "type": "integer" + }, + "fps": { + "description": "Video frame per second, obtained by parsing video header information. The value can be inaccurate for some types of codecs. See comments at http://cs/symbol:video_fps%20f:google3/video/vidproc/vsi/videostreaminfo.proto", + "format": "double", + "type": "number" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "lengthSec": { + "description": "Video length, in seconds. This value is derived from metadata in the source video, and often differs from the actual duration of any given transcode. In videos without valid timestamps, this value is not calculable, and is reported as zero.", + "format": "double", + "type": "number" + }, + "streamIndex": { + "description": "Index of the stream in the file, 0-based.", + "format": "int64", + "type": "string" + }, + "width": { + "description": "video width and height.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoVideoStreamInfo": { + "description": "Note that when a VSI is from a user video, the information reflects the info in that source. Fields like lengths, fps, etc. are not guaranteed to be the same as those of transcodes. If the relevant info in source is too broken, the corresponding fields (e.g., lengths) could be unset or with the default value, meaning VSI cannot compute them from the given info. Next id: 82", + "id": "VideoVideoStreamInfo", + "properties": { + "audioBitrate": { + "description": "audio bitrate in bits/s", + "format": "double", + "type": "number" + }, + "audioChannels": { + "description": "audio channels", + "format": "int32", + "type": "integer" + }, + "audioCodecId": { + "description": "Primary audio codec information Fields 15-20, 41-42, 48, 52-53 for audio will be obsolete soon. Please start using the new repeated audio_stream and video_stream. For now, audio_stream(0) will match these fields. Primary audio codec information starts:", + "enum": [ + "CODEC_ID_NONE", + "CODEC_ID_MPEG1VIDEO", + "CODEC_ID_MPEG2VIDEO", + "CODEC_ID_MPEG2VIDEO_XVMC", + "CODEC_ID_H261", + "CODEC_ID_H263", + "CODEC_ID_RV10", + "CODEC_ID_RV20", + "CODEC_ID_MJPEG", + "CODEC_ID_MJPEGB", + "CODEC_ID_LJPEG", + "CODEC_ID_SP5X", + "CODEC_ID_JPEGLS", + "CODEC_ID_MPEG4", + "CODEC_ID_RAWVIDEO", + "CODEC_ID_MSMPEG4V1", + "CODEC_ID_MSMPEG4V2", + "CODEC_ID_MSMPEG4V3", + "CODEC_ID_WMV1", + "CODEC_ID_WMV2", + "CODEC_ID_H263P", + "CODEC_ID_H263I", + "CODEC_ID_FLV1", + "CODEC_ID_SVQ1", + "CODEC_ID_SVQ3", + "CODEC_ID_DVVIDEO", + "CODEC_ID_HUFFYUV", + "CODEC_ID_CYUV", + "CODEC_ID_H264", + "CODEC_ID_INDEO3", + "CODEC_ID_VP3", + "CODEC_ID_THEORA", + "CODEC_ID_ASV1", + "CODEC_ID_ASV2", + "CODEC_ID_FFV1", + "CODEC_ID_4XM", + "CODEC_ID_VCR1", + "CODEC_ID_CLJR", + "CODEC_ID_MDEC", + "CODEC_ID_ROQ", + "CODEC_ID_INTERPLAY_VIDEO", + "CODEC_ID_XAN_WC3", + "CODEC_ID_XAN_WC4", + "CODEC_ID_RPZA", + "CODEC_ID_CINEPAK", + "CODEC_ID_WS_VQA", + "CODEC_ID_MSRLE", + "CODEC_ID_MSVIDEO1", + "CODEC_ID_IDCIN", + "CODEC_ID_8BPS", + "CODEC_ID_SMC", + "CODEC_ID_FLIC", + "CODEC_ID_TRUEMOTION1", + "CODEC_ID_VMDVIDEO", + "CODEC_ID_MSZH", + "CODEC_ID_ZLIB", + "CODEC_ID_QTRLE", + "CODEC_ID_SNOW", + "CODEC_ID_TSCC", + "CODEC_ID_ULTI", + "CODEC_ID_QDRAW", + "CODEC_ID_VIXL", + "CODEC_ID_QPEG", + "CODEC_ID_XVID", + "CODEC_ID_PNG", + "CODEC_ID_PPM", + "CODEC_ID_PBM", + "CODEC_ID_PGM", + "CODEC_ID_PGMYUV", + "CODEC_ID_PAM", + "CODEC_ID_FFVHUFF", + "CODEC_ID_RV30", + "CODEC_ID_RV40", + "CODEC_ID_VC1", + "CODEC_ID_WMV3", + "CODEC_ID_LOCO", + "CODEC_ID_WNV1", + "CODEC_ID_AASC", + "CODEC_ID_INDEO2", + "CODEC_ID_FRAPS", + "CODEC_ID_TRUEMOTION2", + "CODEC_ID_BMP", + "CODEC_ID_CSCD", + "CODEC_ID_MMVIDEO", + "CODEC_ID_ZMBV", + "CODEC_ID_AVS", + "CODEC_ID_SMACKVIDEO", + "CODEC_ID_NUV", + "CODEC_ID_KMVC", + "CODEC_ID_FLASHSV", + "CODEC_ID_CAVS", + "CODEC_ID_JPEG2000", + "CODEC_ID_VMNC", + "CODEC_ID_VP5", + "CODEC_ID_VP6", + "CODEC_ID_VP6F", + "CODEC_ID_TARGA", + "CODEC_ID_DSICINVIDEO", + "CODEC_ID_TIERTEXSEQVIDEO", + "CODEC_ID_TIFF", + "CODEC_ID_GIF", + "CODEC_ID_FFH264", + "CODEC_ID_DXA", + "CODEC_ID_DNXHD", + "CODEC_ID_THP", + "CODEC_ID_SGI", + "CODEC_ID_C93", + "CODEC_ID_BETHSOFTVID", + "CODEC_ID_PTX", + "CODEC_ID_TXD", + "CODEC_ID_VP6A", + "CODEC_ID_AMV", + "CODEC_ID_VB", + "CODEC_ID_PCX", + "CODEC_ID_SUNRAST", + "CODEC_ID_INDEO4", + "CODEC_ID_INDEO5", + "CODEC_ID_MIMIC", + "CODEC_ID_RL2", + "CODEC_ID_8SVX_EXP", + "CODEC_ID_8SVX_FIB", + "CODEC_ID_ESCAPE124", + "CODEC_ID_DIRAC", + "CODEC_ID_BFI", + "CODEC_ID_CMV", + "CODEC_ID_MOTIONPIXELS", + "CODEC_ID_TGV", + "CODEC_ID_TGQ", + "CODEC_ID_TQI", + "CODEC_ID_AURA", + "CODEC_ID_AURA2", + "CODEC_ID_V210X", + "CODEC_ID_TMV", + "CODEC_ID_V210", + "CODEC_ID_DPX", + "CODEC_ID_MAD", + "CODEC_ID_FRWU", + "CODEC_ID_VP8", + "CODEC_ID_APPLE_PRORES_NQ", + "CODEC_ID_APPLE_PRORES_HQ", + "CODEC_ID_FLASHSV2", + "CODEC_ID_CDGRAPHICS", + "CODEC_ID_R210", + "CODEC_ID_ANM", + "CODEC_ID_BINKVIDEO", + "CODEC_ID_IFF_ILBM", + "CODEC_ID_IFF_BYTERUN1", + "CODEC_ID_KGV1", + "CODEC_ID_YOP", + "CODEC_ID_PICTOR", + "CODEC_ID_APPLE_PRORES_LT", + "CODEC_ID_APPLE_PRORES_PROXY", + "CODEC_ID_APPLE_PRORES_4444", + "CODEC_ID_APPLE_PIXLET", + "CODEC_ID_G2M", + "CODEC_ID_PRORES", + "CODEC_ID_ANSI", + "CODEC_ID_A64_MULTI", + "CODEC_ID_A64_MULTI5", + "CODEC_ID_R10K", + "CODEC_ID_MXPEG", + "CODEC_ID_LAGARITH", + "CODEC_ID_JV", + "CODEC_ID_DFA", + "CODEC_ID_WMV3IMAGE", + "CODEC_ID_VC1IMAGE", + "CODEC_ID_UTVIDEO", + "CODEC_ID_BMV_VIDEO", + "CODEC_ID_VBLE", + "CODEC_ID_DXTORY", + "CODEC_ID_V410", + "CODEC_ID_XWD", + "CODEC_ID_CDXL", + "CODEC_ID_XBM", + "CODEC_ID_ZEROCODEC", + "CODEC_ID_MSS1", + "CODEC_ID_MSA1", + "CODEC_ID_TSCC2", + "CODEC_ID_MTS2", + "CODEC_ID_CLLC", + "CODEC_ID_MSS2", + "CODEC_ID_Y41P", + "CODEC_ID_ESCAPE130", + "CODEC_ID_EXR", + "CODEC_ID_AVRP", + "CODEC_ID_AVUI", + "CODEC_ID_AYUV", + "CODEC_ID_V308", + "CODEC_ID_V408", + "CODEC_ID_YUV4", + "CODEC_ID_SANM", + "CODEC_ID_PAF_VIDEO", + "CODEC_ID_AVRN", + "CODEC_ID_CPIA", + "CODEC_ID_VP9", + "CODEC_ID_H265", + "CODEC_ID_CFHD", + "CODEC_ID_AV1", + "CODEC_ID_AIC", + "CODEC_ID_ALIAS_PIX", + "CODEC_ID_APNG", + "CODEC_ID_BRENDER_PIX", + "CODEC_ID_CLEARVIDEO", + "CODEC_ID_DDS", + "CODEC_ID_DXV", + "CODEC_ID_FIC", + "CODEC_ID_FITS", + "CODEC_ID_FMVC", + "CODEC_ID_GDV", + "CODEC_ID_HAP", + "CODEC_ID_HNM4_VIDEO", + "CODEC_ID_HQ_HQA", + "CODEC_ID_HQX", + "CODEC_ID_M101", + "CODEC_ID_MAGICYUV", + "CODEC_ID_MSCC", + "CODEC_ID_MVC1", + "CODEC_ID_MVC2", + "CODEC_ID_PIXLET", + "CODEC_ID_PSD", + "CODEC_ID_RSCC", + "CODEC_ID_SCPR", + "CODEC_ID_SCREENPRESSO", + "CODEC_ID_SGIRLE", + "CODEC_ID_SHEERVIDEO", + "CODEC_ID_SMVJPEG", + "CODEC_ID_SPEEDHQ", + "CODEC_ID_SRGC", + "CODEC_ID_TARGA_Y216", + "CODEC_ID_TDSC", + "CODEC_ID_TRUEMOTION2RT", + "CODEC_ID_VP7", + "CODEC_ID_BITPACKED", + "CODEC_ID_WEBP", + "CODEC_ID_XFACE", + "CODEC_ID_XPM", + "CODEC_ID_YLC", + "CODEC_ID_012V", + "CODEC_ID_AVS2", + "CODEC_ID_IMM4", + "CODEC_ID_MWSC", + "CODEC_ID_PROSUMER", + "CODEC_ID_RASC", + "CODEC_ID_WCMV", + "CODEC_ID_UNKNOWN", + "CODEC_ID_PCM_S16LE", + "CODEC_ID_PCM_S16BE", + "CODEC_ID_PCM_U16LE", + "CODEC_ID_PCM_U16BE", + "CODEC_ID_PCM_S8", + "CODEC_ID_PCM_U8", + "CODEC_ID_PCM_MULAW", + "CODEC_ID_PCM_ALAW", + "CODEC_ID_PCM_S32LE", + "CODEC_ID_PCM_S32BE", + "CODEC_ID_PCM_U32LE", + "CODEC_ID_PCM_U32BE", + "CODEC_ID_PCM_S24LE", + "CODEC_ID_PCM_S24BE", + "CODEC_ID_PCM_U24LE", + "CODEC_ID_PCM_U24BE", + "CODEC_ID_PCM_S24DAUD", + "CODEC_ID_PCM_ZORK", + "CODEC_ID_PCM_S16LE_PLANAR", + "CODEC_ID_PCM_DVD", + "CODEC_ID_PCM_F32BE", + "CODEC_ID_PCM_F32LE", + "CODEC_ID_PCM_F64BE", + "CODEC_ID_PCM_F64LE", + "CODEC_ID_PCM_BLURAY", + "CODEC_ID_PCM_LXF", + "CODEC_ID_S302M", + "CODEC_ID_PCM_S8_PLANAR", + "CODEC_ID_PCM_S24LE_PLANAR", + "CODEC_ID_PCM_S32LE_PLANAR", + "CODEC_ID_PCM_S16BE_PLANAR", + "CODEC_ID_PCM_S64LE", + "CODEC_ID_PCM_S64BE", + "CODEC_ID_PCM_F16LE", + "CODEC_ID_PCM_F24LE", + "CODEC_ID_ADPCM_IMA_QT", + "CODEC_ID_ADPCM_IMA_WAV", + "CODEC_ID_ADPCM_IMA_DK3", + "CODEC_ID_ADPCM_IMA_DK4", + "CODEC_ID_ADPCM_IMA_WS", + "CODEC_ID_ADPCM_IMA_SMJPEG", + "CODEC_ID_ADPCM_MS", + "CODEC_ID_ADPCM_4XM", + "CODEC_ID_ADPCM_XA", + "CODEC_ID_ADPCM_ADX", + "CODEC_ID_ADPCM_EA", + "CODEC_ID_ADPCM_G726", + "CODEC_ID_ADPCM_CT", + "CODEC_ID_ADPCM_SWF", + "CODEC_ID_ADPCM_YAMAHA", + "CODEC_ID_ADPCM_SBPRO_4", + "CODEC_ID_ADPCM_SBPRO_3", + "CODEC_ID_ADPCM_SBPRO_2", + "CODEC_ID_ADPCM_THP", + "CODEC_ID_ADPCM_IMA_AMV", + "CODEC_ID_ADPCM_EA_R1", + "CODEC_ID_ADPCM_EA_R3", + "CODEC_ID_ADPCM_EA_R2", + "CODEC_ID_ADPCM_IMA_EA_SEAD", + "CODEC_ID_ADPCM_IMA_EA_EACS", + "CODEC_ID_ADPCM_EA_XAS", + "CODEC_ID_ADPCM_EA_MAXIS_XA", + "CODEC_ID_ADPCM_IMA_ISS", + "CODEC_ID_ADPCM_G722", + "CODEC_ID_ADPCM_IMA_APC", + "CODEC_ID_VIMA", + "CODEC_ID_ADPCM_AFC", + "CODEC_ID_ADPCM_IMA_OKI", + "CODEC_ID_ADPCM_DTK", + "CODEC_ID_ADPCM_IMA_RAD", + "CODEC_ID_ADPCM_G726LE", + "CODEC_ID_ADPCM_THP_LE", + "CODEC_ID_ADPCM_PSX", + "CODEC_ID_ADPCM_AICA", + "CODEC_ID_ADPCM_IMA_DAT4", + "CODEC_ID_ADPCM_MTAF", + "CODEC_ID_ADPCM_VIMA", + "CODEC_ID_AMR_NB", + "CODEC_ID_AMR_WB", + "CODEC_ID_RA_144", + "CODEC_ID_RA_288", + "CODEC_ID_ROQ_DPCM", + "CODEC_ID_INTERPLAY_DPCM", + "CODEC_ID_XAN_DPCM", + "CODEC_ID_SOL_DPCM", + "CODEC_ID_GREMLIN_DPCM", + "CODEC_ID_SDX2_DPCM", + "CODEC_ID_MP2", + "CODEC_ID_MP3", + "CODEC_ID_AAC", + "CODEC_ID_MPEG4AAC_DEPRECATED", + "CODEC_ID_AC3", + "CODEC_ID_DTS", + "CODEC_ID_VORBIS", + "CODEC_ID_DVAUDIO", + "CODEC_ID_WMAV1", + "CODEC_ID_WMAV2", + "CODEC_ID_MACE3", + "CODEC_ID_MACE6", + "CODEC_ID_VMDAUDIO", + "CODEC_ID_SONIC", + "CODEC_ID_SONIC_LS", + "CODEC_ID_FLAC", + "CODEC_ID_MP3ADU", + "CODEC_ID_MP3ON4", + "CODEC_ID_SHORTEN", + "CODEC_ID_ALAC", + "CODEC_ID_WESTWOOD_SND1", + "CODEC_ID_GSM", + "CODEC_ID_QDM2", + "CODEC_ID_COOK", + "CODEC_ID_TRUESPEECH", + "CODEC_ID_TTA", + "CODEC_ID_SMACKAUDIO", + "CODEC_ID_QCELP", + "CODEC_ID_WAVPACK", + "CODEC_ID_DSICINAUDIO", + "CODEC_ID_ASAO", + "CODEC_ID_NELLYMOSER", + "CODEC_ID_WMAVOICE", + "CODEC_ID_WMAPRO", + "CODEC_ID_WMALOSSLESS", + "CODEC_ID_IMC", + "CODEC_ID_MUSEPACK7", + "CODEC_ID_MLP", + "CODEC_ID_GSM_MS", + "CODEC_ID_ATRAC3", + "CODEC_ID_VOXWARE", + "CODEC_ID_APE", + "CODEC_ID_MUSEPACK8", + "CODEC_ID_SPEEX", + "CODEC_ID_ATRAC3P", + "CODEC_ID_EAC3", + "CODEC_ID_SIPR", + "CODEC_ID_MP1", + "CODEC_ID_TWINVQ", + "CODEC_ID_TRUEHD", + "CODEC_ID_MP4ALS", + "CODEC_ID_ATRAC1", + "CODEC_ID_BINKAUDIO_RDFT", + "CODEC_ID_BINKAUDIO_DCT", + "CODEC_ID_AAC_LATM", + "CODEC_ID_QDMC", + "CODEC_ID_CELT", + "CODEC_ID_G723_1", + "CODEC_ID_G729", + "CODEC_ID_BMV_AUDIO", + "CODEC_ID_RALF", + "CODEC_ID_IAC", + "CODEC_ID_ILBC", + "CODEC_ID_FFWAVESYNTH", + "CODEC_ID_8SVX_RAW", + "CODEC_ID_PAF_AUDIO", + "CODEC_ID_OPUS", + "CODEC_ID_ATRAC3AL", + "CODEC_ID_ATRAC3PAL", + "CODEC_ID_DOLBY_E", + "CODEC_ID_DSD_LSBF", + "CODEC_ID_DSD_MSBF", + "CODEC_ID_DSD_LSBF_PLANAR", + "CODEC_ID_DSD_MSBF_PLANAR", + "CODEC_ID_DSS_SP", + "CODEC_ID_DST", + "CODEC_ID_EVRC", + "CODEC_ID_INTERPLAY_ACM", + "CODEC_ID_METASOUND", + "CODEC_ID_ON2AVC", + "CODEC_ID_TAK", + "CODEC_ID_XMA1", + "CODEC_ID_XMA2", + "CODEC_ID_COMFORT_NOISE", + "CODEC_ID_APTX", + "CODEC_ID_APTX_HD", + "CODEC_ID_SBC", + "CODEC_ID_ATRAC9", + "CODEC_ID_CODEC2", + "CODEC_ID_OGGTHEORA_DEPRECATED", + "CODEC_ID_DVD_SUBTITLE", + "CODEC_ID_DVB_SUBTITLE", + "CODEC_ID_TEXT", + "CODEC_ID_XSUB", + "CODEC_ID_SSA", + "CODEC_ID_MOV_TEXT", + "CODEC_ID_HDMV_PGS_SUBTITLE", + "CODEC_ID_DVB_TELETEXT", + "CODEC_ID_SRT", + "CODEC_ID_MICRODVD", + "CODEC_ID_EIA_608", + "CODEC_ID_JACOSUB", + "CODEC_ID_SAMI", + "CODEC_ID_REALTEXT", + "CODEC_ID_SUBVIEWER", + "CODEC_ID_SUBRIP", + "CODEC_ID_WEBVTT", + "CODEC_ID_ASS", + "CODEC_ID_MPL2", + "CODEC_ID_PJS", + "CODEC_ID_STL", + "CODEC_ID_SUBVIEWER1", + "CODEC_ID_VPLAYER", + "CODEC_ID_TTML", + "CODEC_ID_TTF", + "CODEC_ID_BINTEXT", + "CODEC_ID_XBIN", + "CODEC_ID_IDF", + "CODEC_ID_OTF", + "CODEC_ID_PROBE", + "CODEC_ID_MPEG2TS", + "CODEC_ID_MPEG4SYSTEMS", + "CODEC_ID_FFMETADATA", + "CODEC_ID_FFMPEG_OUT_OF_SYNC", + "CODEC_ID_WRAPPED_AVFRAME", + "CODEC_ID_CAMM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_MPEG4", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "moved to audio codecs section in upstream", + "moved to audio codecs section in upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various pcm \"codecs\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various adpcm codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AMR", + "", + "RealAudio codecs", + "", + "various DPCM codecs", + "", + "", + "", + "", + "", + "audio codecs", + "preferred ID for MPEG Audio layer 1, 2 or 3", + "", + "Use CODEC_ID_AAC instead", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Not in ffmpeg as of rev 20544.", + "Start of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "End of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Removed in ffmpeg rev 5877.", + "subtitle codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "other specific kind of codecs (generally used for attachments)", + "", + "", + "", + "", + "\u003c codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it", + "_FAKE_ codec to indicate a raw MPEG2 transport stream (only used by libavformat)", + "_FAKE_ codec to indicate a MPEG-4 Systems stream (only used by libavformat)", + "Dummy codec for streams containing only metadata information.", + "this one indicates an error in the mapping between this enum and libavcodec's", + "AVFrames wrapped in AVPacket", + "Camera motion metadata (http://go/wally-format)" + ], + "type": "string" + }, + "audioEndTimestamp": { + "format": "int64", + "type": "string" + }, + "audioFrameSize": { + "description": "audio frame size", + "format": "int64", + "type": "string" + }, + "audioLength": { + "description": "audio length in seconds Note that when the VSI is from users videos, it is not guaranteed to be the same as transcode lengths and it could be 0 when the full VSI cannot compute the length from the source header and timestamps (for example when header and timestamps are too broken).", + "format": "double", + "type": "number" + }, + "audioNumberOfFrames": { + "description": "Number of audio frames. Ffmpeg does not report the number of frames accurately. video::TranscodedVideoFileInformation calls Google's analyzer to get information of both audio and video frame numbers.", + "format": "int64", + "type": "string" + }, + "audioSampleRate": { + "description": "audio sample rate", + "format": "int64", + "type": "string" + }, + "audioSampleSize": { + "description": "Number of meaningful bits per decoded audio sample. This is an implicit conceptual meaning. This is *NOT* the same as ffmpeg's internal sample format that is used when actually decoding with ffmpeg.", + "format": "int32", + "type": "integer" + }, + "audioStartTimestamp": { + "format": "int64", + "type": "string" + }, + "audioStream": { + "items": { + "$ref": "VideoVideoStreamInfoAudioStream" + }, + "type": "array" + }, + "audioStreamCodecTag": { + "format": "int64", + "type": "string" + }, + "avDistance": { + "description": "Audio-Video interleaving distance between packets (in bytes)", + "format": "int32", + "type": "integer" + }, + "avLength": { + "description": "Audio and video length in seconds. It's the max of the audio and video length. Note that when the VSI is from users videos, it is not guaranteed to be the same as transcode lengths and it could be 0 when the full VSI cannot compute the length from the source header and timestamps (for example when header and timestamps are too broken).", + "format": "double", + "type": "number" + }, + "averageVideoFps": { + "description": "Average video fps from analyzing entire file.", + "format": "double", + "type": "number" + }, + "buildLabel": { + "description": "Build label of the VSI mpm.", + "type": "string" + }, + "containerId": { + "description": "Container Id.", + "enum": [ + "CONTAINER_ID_NONE", + "CONTAINER_ID_FOURXM", + "CONTAINER_ID_AIFF", + "CONTAINER_ID_AMR", + "CONTAINER_ID_ASF", + "CONTAINER_ID_AU", + "CONTAINER_ID_AUDIO", + "CONTAINER_ID_AVI", + "CONTAINER_ID_AVISYNTH", + "CONTAINER_ID_AVS", + "CONTAINER_ID_DAUD", + "CONTAINER_ID_DC1394", + "CONTAINER_ID_DSICIN", + "CONTAINER_ID_DV1394", + "CONTAINER_ID_DV", + "CONTAINER_ID_EA", + "CONTAINER_ID_FFM", + "CONTAINER_ID_FLIC", + "CONTAINER_ID_FLV", + "CONTAINER_ID_GIF", + "CONTAINER_ID_VIDEO_GRAB_DEVICE", + "CONTAINER_ID_GXF", + "CONTAINER_ID_IDCIN", + "CONTAINER_ID_ROQ", + "CONTAINER_ID_IMAGE2", + "CONTAINER_ID_IMAGE2PIPE", + "CONTAINER_ID_IMAGE", + "CONTAINER_ID_IMAGEPIPE", + "CONTAINER_ID_IPMOVIE", + "CONTAINER_ID_MATROSKA", + "CONTAINER_ID_MM", + "CONTAINER_ID_MMF", + "CONTAINER_ID_MOV", + "CONTAINER_ID_MP3", + "CONTAINER_ID_MPEGPS", + "CONTAINER_ID_MPEGTS", + "CONTAINER_ID_MTV", + "CONTAINER_ID_MXF", + "CONTAINER_ID_NSV", + "CONTAINER_ID_NUT", + "CONTAINER_ID_NUV", + "CONTAINER_ID_OGG", + "CONTAINER_ID_STR", + "CONTAINER_ID_SHORTEN", + "CONTAINER_ID_FLAC", + "CONTAINER_ID_AC3", + "CONTAINER_ID_DTS", + "CONTAINER_ID_AAC", + "CONTAINER_ID_H261", + "CONTAINER_ID_H263", + "CONTAINER_ID_M4V", + "CONTAINER_ID_H264", + "CONTAINER_ID_MPEGVIDEO", + "CONTAINER_ID_MJPEG", + "CONTAINER_ID_INGENIENT", + "CONTAINER_ID_PCM_S16LE", + "CONTAINER_ID_PCM_S16BE", + "CONTAINER_ID_PCM_U16LE", + "CONTAINER_ID_PCM_U16BE", + "CONTAINER_ID_PCM_S8", + "CONTAINER_ID_PCM_U8", + "CONTAINER_ID_PCM_MULAW", + "CONTAINER_ID_PCM_ALAW", + "CONTAINER_ID_RAWVIDEO", + "CONTAINER_ID_RM", + "CONTAINER_ID_SDP", + "CONTAINER_ID_REDIR", + "CONTAINER_ID_SEGAFILM", + "CONTAINER_ID_VMD", + "CONTAINER_ID_SMACKER", + "CONTAINER_ID_SOL", + "CONTAINER_ID_SWF", + "CONTAINER_ID_TTA", + "CONTAINER_ID_V4L2", + "CONTAINER_ID_VOC", + "CONTAINER_ID_WAV", + "CONTAINER_ID_WC3", + "CONTAINER_ID_WSAUD", + "CONTAINER_ID_WSVQA", + "CONTAINER_ID_WV", + "CONTAINER_ID_YUV4MPEGPIPE", + "CONTAINER_ID_TIERTEXSEQ", + "CONTAINER_ID_WEBM", + "CONTAINER_ID_EAC3", + "CONTAINER_ID_AA", + "CONTAINER_ID_ACM", + "CONTAINER_ID_ACT", + "CONTAINER_ID_ADF", + "CONTAINER_ID_ADP", + "CONTAINER_ID_ADS", + "CONTAINER_ID_ADX", + "CONTAINER_ID_AEA", + "CONTAINER_ID_AFC", + "CONTAINER_ID_AIX", + "CONTAINER_ID_ANM", + "CONTAINER_ID_APC", + "CONTAINER_ID_APE", + "CONTAINER_ID_APNG", + "CONTAINER_ID_AQTITLE", + "CONTAINER_ID_ASF_O", + "CONTAINER_ID_ASS", + "CONTAINER_ID_AST", + "CONTAINER_ID_AVR", + "CONTAINER_ID_BETHSOFTVID", + "CONTAINER_ID_BFI", + "CONTAINER_ID_BIN", + "CONTAINER_ID_BINK", + "CONTAINER_ID_BIT", + "CONTAINER_ID_BMV", + "CONTAINER_ID_BFSTM", + "CONTAINER_ID_BRSTM", + "CONTAINER_ID_BOA", + "CONTAINER_ID_C93", + "CONTAINER_ID_CAF", + "CONTAINER_ID_CAVSVIDEO", + "CONTAINER_ID_CDG", + "CONTAINER_ID_CDXL", + "CONTAINER_ID_CINE", + "CONTAINER_ID_CONCAT", + "CONTAINER_ID_DATA", + "CONTAINER_ID_DCSTR", + "CONTAINER_ID_DFA", + "CONTAINER_ID_DIRAC", + "CONTAINER_ID_DNXHD", + "CONTAINER_ID_DSF", + "CONTAINER_ID_DSS", + "CONTAINER_ID_DTSHD", + "CONTAINER_ID_DVBSUB", + "CONTAINER_ID_DVBTXT", + "CONTAINER_ID_DXA", + "CONTAINER_ID_EA_CDATA", + "CONTAINER_ID_EPAF", + "CONTAINER_ID_FFMETADATA", + "CONTAINER_ID_FILMSTRIP", + "CONTAINER_ID_FITS", + "CONTAINER_ID_FRM", + "CONTAINER_ID_FSB", + "CONTAINER_ID_G722", + "CONTAINER_ID_G723_1", + "CONTAINER_ID_G726", + "CONTAINER_ID_G726LE", + "CONTAINER_ID_G729", + "CONTAINER_ID_GDV", + "CONTAINER_ID_GENH", + "CONTAINER_ID_GSM", + "CONTAINER_ID_HEVC", + "CONTAINER_ID_HNM", + "CONTAINER_ID_ICO", + "CONTAINER_ID_IDF", + "CONTAINER_ID_IFF", + "CONTAINER_ID_ILBC", + "CONTAINER_ID_ALIAS_PIX", + "CONTAINER_ID_BRENDER_PIX", + "CONTAINER_ID_IRCAM", + "CONTAINER_ID_ISS", + "CONTAINER_ID_IV8", + "CONTAINER_ID_IVF", + "CONTAINER_ID_IVR", + "CONTAINER_ID_JACOSUB", + "CONTAINER_ID_JV", + "CONTAINER_ID_LMLM4", + "CONTAINER_ID_LOAS", + "CONTAINER_ID_LRC", + "CONTAINER_ID_LVF", + "CONTAINER_ID_LXF", + "CONTAINER_ID_MGSTS", + "CONTAINER_ID_MICRODVD", + "CONTAINER_ID_MJPEG_2000", + "CONTAINER_ID_MLP", + "CONTAINER_ID_MLV", + "CONTAINER_ID_MPC", + "CONTAINER_ID_MPC8", + "CONTAINER_ID_MPEGTSRAW", + "CONTAINER_ID_MPJPEG", + "CONTAINER_ID_MPL2", + "CONTAINER_ID_MPSUB", + "CONTAINER_ID_MSF", + "CONTAINER_ID_MSNWCTCP", + "CONTAINER_ID_MTAF", + "CONTAINER_ID_MUSX", + "CONTAINER_ID_MV", + "CONTAINER_ID_MVI", + "CONTAINER_ID_MXG", + "CONTAINER_ID_NC", + "CONTAINER_ID_NISTSPHERE", + "CONTAINER_ID_OMA", + "CONTAINER_ID_PAF", + "CONTAINER_ID_ALAW", + "CONTAINER_ID_MULAW", + "CONTAINER_ID_F64BE", + "CONTAINER_ID_F64LE", + "CONTAINER_ID_F32BE", + "CONTAINER_ID_F32LE", + "CONTAINER_ID_S32BE", + "CONTAINER_ID_S32LE", + "CONTAINER_ID_S24BE", + "CONTAINER_ID_S24LE", + "CONTAINER_ID_S16BE", + "CONTAINER_ID_S16LE", + "CONTAINER_ID_S8", + "CONTAINER_ID_U32BE", + "CONTAINER_ID_U32LE", + "CONTAINER_ID_U24BE", + "CONTAINER_ID_U24LE", + "CONTAINER_ID_U16BE", + "CONTAINER_ID_U16LE", + "CONTAINER_ID_U8", + "CONTAINER_ID_PJS", + "CONTAINER_ID_PMP", + "CONTAINER_ID_PVA", + "CONTAINER_ID_PVF", + "CONTAINER_ID_QCP", + "CONTAINER_ID_R3D", + "CONTAINER_ID_REALTEXT", + "CONTAINER_ID_REDSPARK", + "CONTAINER_ID_RL2", + "CONTAINER_ID_RPL", + "CONTAINER_ID_RSD", + "CONTAINER_ID_RSO", + "CONTAINER_ID_RTP", + "CONTAINER_ID_RTSP", + "CONTAINER_ID_S337M", + "CONTAINER_ID_SAMI", + "CONTAINER_ID_SAP", + "CONTAINER_ID_SBG", + "CONTAINER_ID_SCC", + "CONTAINER_ID_SDR2", + "CONTAINER_ID_SDS", + "CONTAINER_ID_SDX", + "CONTAINER_ID_FILM_CPK", + "CONTAINER_ID_SHN", + "CONTAINER_ID_SIFF", + "CONTAINER_ID_SLN", + "CONTAINER_ID_SMJPEG", + "CONTAINER_ID_SMUSH", + "CONTAINER_ID_SOX", + "CONTAINER_ID_SPDIF", + "CONTAINER_ID_SRT", + "CONTAINER_ID_STL", + "CONTAINER_ID_SUBVIEWER1", + "CONTAINER_ID_SUBVIEWER", + "CONTAINER_ID_SUP", + "CONTAINER_ID_SVAG", + "CONTAINER_ID_TAK", + "CONTAINER_ID_TEDCAPTIONS", + "CONTAINER_ID_THP", + "CONTAINER_ID_3DOSTR", + "CONTAINER_ID_TMV", + "CONTAINER_ID_TRUEHD", + "CONTAINER_ID_TXD", + "CONTAINER_ID_V210", + "CONTAINER_ID_V210X", + "CONTAINER_ID_VAG", + "CONTAINER_ID_VC1", + "CONTAINER_ID_VC1TEST", + "CONTAINER_ID_VIVO", + "CONTAINER_ID_VOBSUB", + "CONTAINER_ID_VPK", + "CONTAINER_ID_VPLAYER", + "CONTAINER_ID_VQF", + "CONTAINER_ID_W64", + "CONTAINER_ID_WC3MOVIE", + "CONTAINER_ID_WEBM_DASH_MANIFEST", + "CONTAINER_ID_WEBVTT", + "CONTAINER_ID_WSD", + "CONTAINER_ID_WTV", + "CONTAINER_ID_WVE", + "CONTAINER_ID_XA", + "CONTAINER_ID_XBIN", + "CONTAINER_ID_XMV", + "CONTAINER_ID_XVAG", + "CONTAINER_ID_XWMA", + "CONTAINER_ID_YOP", + "CONTAINER_ID_AMRNB", + "CONTAINER_ID_AMRWB", + "CONTAINER_ID_APTX", + "CONTAINER_ID_NSP", + "CONTAINER_ID_TY", + "CONTAINER_ID_APTX_HD", + "CONTAINER_ID_AVS2", + "CONTAINER_ID_CODEC2", + "CONTAINER_ID_CODEC2RAW", + "CONTAINER_ID_SBC", + "CONTAINER_ID_SER", + "CONTAINER_ID_GOOGLE_INDEX", + "CONTAINER_ID_MEDIASAMPLE", + "CONTAINER_ID_TOOTHLESS", + "CONTAINER_ID_MEDIASAMPLE_DEPRECATED" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Note: CONTAINER_ID_MOV refers to any MPEG 4 variant. Currently VideoStreamInfo does not have enough information to distinguish between the variants.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Note: CONTAINER_ID_DTS refers to the format for DTS audio codec. It does NOT refer to ADTS container for AAC codec.", + "Note: CONTAINER_ID_AAC refers to the ADTS format for AAC codec.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Google Proto types Detects ASCII Proto of video_pipeline::MediaProcessingFfmpegInput", + "A stream of video_file::Mediasamples. google3/video/vidproc/ffmpeg/formats/streaming_mediasample_format.h", + "Binary proto of video::toothless::ToothlessStreamManifest format currently has no probe in ffmpeg and cannot be detected by VSI. google3/video/vidproc/ffmpeg/formats/toothless_demuxer.proto", + "" + ], + "type": "string" + }, + "containerType": { + "description": "Name of the container format guessed by ffmpeg.", + "type": "string" + }, + "containsChapters": { + "description": "If the video contains chapters info.", + "type": "boolean" + }, + "dataStream": { + "items": { + "$ref": "VideoVideoStreamInfoDataStream" + }, + "type": "array" + }, + "displayHeight": { + "format": "int32", + "type": "integer" + }, + "displayWidth": { + "description": "final display video width and height if explicitly set in the video otherwise this can be calculated from source width/height and video_pixel_aspect_ratio", + "format": "int32", + "type": "integer" + }, + "fileHeaderFingerprint": { + "description": "Input file header fingerprint", + "format": "uint64", + "type": "string" + }, + "fileMagic": { + "description": "The file type string returned by libmagic, a third party library. It might accidentally include some user content. Some normal file_magic examples: -- RIFF (little-endian) data, AVI, 1016 x 696, 30.00 fps, video: XviD, audio: (stereo, 48000 Hz) -- MPEG sequence, v2, program multiplex -- ISO Media, MPEG v4 system, iTunes AVC-LC -- Microsoft Windows Movie Maker project file", + "type": "string" + }, + "fileModifiedTime": { + "description": "Input file modification time", + "format": "int64", + "type": "string" + }, + "fileName": { + "description": "Input file name. DEPRECATED; don't expect the file name to be correct.", + "type": "string" + }, + "fileSize": { + "description": "Input file size in bytes", + "format": "int64", + "type": "string" + }, + "fileType": { + "description": "High-level file type guessed by looking at the file headers and libmagic.", + "format": "int32", + "type": "integer" + }, + "imageStream": { + "items": { + "$ref": "VideoVideoStreamInfoVideoStream" + }, + "type": "array" + }, + "isAsf": { + "description": "True if the video is likely to be an ASF file.", + "type": "boolean" + }, + "isImageFile": { + "description": "True if the video is actually an image file (JPEG, PNG, GIF, etc) and not a video file.", + "type": "boolean" + }, + "isVideoInsaneSize": { + "description": "Check if a video size insane or not. It is set if the input file is an MOV file.", + "type": "boolean" + }, + "level": { + "format": "int32", + "type": "integer" + }, + "metadata": { + "$ref": "VideoVideoStreamInfoMetadata" + }, + "numAudioStreams": { + "description": "Total number of audio streams in the file", + "format": "int32", + "type": "integer" + }, + "numDataStreams": { + "description": "Total number of data streams in the file", + "format": "int32", + "type": "integer" + }, + "numImageStreams": { + "description": "Total number of image streams in the file", + "format": "int32", + "type": "integer" + }, + "numTimedtextStreams": { + "description": "Total number of timedtext streams in the file", + "format": "int32", + "type": "integer" + }, + "numVideoStreams": { + "description": "Total number of video streams in the file", + "format": "int32", + "type": "integer" + }, + "parsedByFfmpeg": { + "description": "If this field is not set, then only base video file information has been generated (and ffmpeg parsing hasn't yet been done). If this is set to 'false', then ffmpeg failed to parse the file - otherwise it will set to 'true'", + "type": "boolean" + }, + "partialFile": { + "description": "By default we assume that the entire file was given computing the VSI - if that is not true this flag should be set to true.", + "type": "boolean" + }, + "pixFmt": { + "description": "Pixel format for the video stream.", + "enum": [ + "PIX_FMT_NONE", + "PIX_FMT_YUV420P", + "PIX_FMT_YUYV422", + "PIX_FMT_RGB24", + "PIX_FMT_BGR24", + "PIX_FMT_YUV422P", + "PIX_FMT_YUV444P", + "PIX_FMT_RGB32", + "PIX_FMT_YUV410P", + "PIX_FMT_YUV411P", + "PIX_FMT_RGB565", + "PIX_FMT_RGB555", + "PIX_FMT_GRAY8", + "PIX_FMT_MONOWHITE", + "PIX_FMT_MONOBLACK", + "PIX_FMT_PAL8", + "PIX_FMT_YUVJ420P", + "PIX_FMT_YUVJ422P", + "PIX_FMT_YUVJ444P", + "PIX_FMT_XVMC_MPEG2_MC", + "PIX_FMT_XVMC_MPEG2_IDCT", + "PIX_FMT_UYVY422", + "PIX_FMT_UYYVYY411", + "PIX_FMT_BGR32", + "PIX_FMT_BGR565", + "PIX_FMT_BGR555", + "PIX_FMT_BGR8", + "PIX_FMT_BGR4", + "PIX_FMT_BGR4_BYTE", + "PIX_FMT_RGB8", + "PIX_FMT_RGB4", + "PIX_FMT_RGB4_BYTE", + "PIX_FMT_NV12", + "PIX_FMT_NV21", + "PIX_FMT_RGB32_1", + "PIX_FMT_BGR32_1", + "PIX_FMT_GRAY16BE", + "PIX_FMT_GRAY16LE", + "PIX_FMT_YUV440P", + "PIX_FMT_YUVJ440P", + "PIX_FMT_YUVA420P", + "PIX_FMT_VDPAU_H264", + "PIX_FMT_VDPAU_MPEG1", + "PIX_FMT_VDPAU_MPEG2", + "PIX_FMT_VDPAU_WMV3", + "PIX_FMT_VDPAU_VC1", + "PIX_FMT_RGB48BE", + "PIX_FMT_RGB48LE", + "PIX_FMT_RGB565BE", + "PIX_FMT_RGB555BE", + "PIX_FMT_BGR565BE", + "PIX_FMT_BGR555BE", + "PIX_FMT_VAAPI_MOCO", + "PIX_FMT_VAAPI_IDCT", + "PIX_FMT_VAAPI_VLD", + "PIX_FMT_YUV420P16LE", + "PIX_FMT_YUV420P16BE", + "PIX_FMT_YUV422P16LE", + "PIX_FMT_YUV422P16BE", + "PIX_FMT_YUV444P16LE", + "PIX_FMT_YUV444P16BE", + "PIX_FMT_VDPAU_MPEG4", + "PIX_FMT_DXVA2_VLD", + "PIX_FMT_RGB444LE", + "PIX_FMT_RGB444BE", + "PIX_FMT_BGR444LE", + "PIX_FMT_BGR444BE", + "PIX_FMT_GRAY8A", + "PIX_FMT_BGR48BE", + "PIX_FMT_BGR48LE", + "PIX_FMT_YUV420P9BE", + "PIX_FMT_YUV420P9LE", + "PIX_FMT_YUV420P10BE", + "PIX_FMT_YUV420P10LE", + "PIX_FMT_YUV422P10BE", + "PIX_FMT_YUV422P10LE", + "PIX_FMT_YUV444P9BE", + "PIX_FMT_YUV444P9LE", + "PIX_FMT_YUV444P10BE", + "PIX_FMT_YUV444P10LE", + "PIX_FMT_YUV422P9BE", + "PIX_FMT_YUV422P9LE", + "PIX_FMT_VDA_VLD", + "PIX_FMT_RGBA64BE", + "PIX_FMT_RGBA64LE", + "PIX_FMT_BGRA64BE", + "PIX_FMT_BGRA64LE", + "PIX_FMT_GBRP", + "PIX_FMT_GBRP9BE", + "PIX_FMT_GBRP9LE", + "PIX_FMT_GBRP10BE", + "PIX_FMT_GBRP10LE", + "PIX_FMT_GBRP16BE", + "PIX_FMT_GBRP16LE", + "PIX_FMT_0RGB", + "PIX_FMT_RGB0", + "PIX_FMT_0BGR", + "PIX_FMT_BGR0", + "PIX_FMT_YUVA444P", + "PIX_FMT_YUVA422P", + "PIX_FMT_YUV420P12BE", + "PIX_FMT_YUV420P12LE", + "PIX_FMT_YUV420P14BE", + "PIX_FMT_YUV420P14LE", + "PIX_FMT_YUV422P12BE", + "PIX_FMT_YUV422P12LE", + "PIX_FMT_YUV422P14BE", + "PIX_FMT_YUV422P14LE", + "PIX_FMT_YUV444P12BE", + "PIX_FMT_YUV444P12LE", + "PIX_FMT_YUV444P14BE", + "PIX_FMT_YUV444P14LE", + "PIX_FMT_GBRP12BE", + "PIX_FMT_GBRP12LE", + "PIX_FMT_GBRP14BE", + "PIX_FMT_GBRP14LE", + "PIX_FMT_ARGB", + "PIX_FMT_RGBA", + "PIX_FMT_ABGR", + "PIX_FMT_BGRA", + "PIX_FMT_RGB565LE", + "PIX_FMT_RGB555LE", + "PIX_FMT_BGR565LE", + "PIX_FMT_BGR555LE", + "PIX_FMT_VAAPI", + "PIX_FMT_YA8", + "PIX_FMT_Y400A", + "PIX_FMT_YUVA420P9BE", + "PIX_FMT_YUVA420P9LE", + "PIX_FMT_YUVA422P9BE", + "PIX_FMT_YUVA422P9LE", + "PIX_FMT_YUVA444P9BE", + "PIX_FMT_YUVA444P9LE", + "PIX_FMT_YUVA420P10BE", + "PIX_FMT_YUVA420P10LE", + "PIX_FMT_YUVA422P10BE", + "PIX_FMT_YUVA422P10LE", + "PIX_FMT_YUVA444P10BE", + "PIX_FMT_YUVA444P10LE", + "PIX_FMT_YUVA420P16BE", + "PIX_FMT_YUVA420P16LE", + "PIX_FMT_YUVA422P16BE", + "PIX_FMT_YUVA422P16LE", + "PIX_FMT_YUVA444P16BE", + "PIX_FMT_YUVA444P16LE", + "PIX_FMT_VDPAU", + "PIX_FMT_XYZ12LE", + "PIX_FMT_XYZ12BE", + "PIX_FMT_NV16", + "PIX_FMT_NV20LE", + "PIX_FMT_NV20BE", + "PIX_FMT_YVYU422", + "PIX_FMT_VDA", + "PIX_FMT_YA16BE", + "PIX_FMT_YA16LE", + "PIX_FMT_GBRAP", + "PIX_FMT_GBRAP16BE", + "PIX_FMT_GBRAP16LE", + "PIX_FMT_QSV", + "PIX_FMT_MMAL", + "PIX_FMT_D3D11VA_VLD", + "PIX_FMT_CUDA", + "PIX_FMT_YUVJ411P", + "PIX_FMT_BAYER_BGGR8", + "PIX_FMT_BAYER_RGGB8", + "PIX_FMT_BAYER_GBRG8", + "PIX_FMT_BAYER_GRBG8", + "PIX_FMT_BAYER_BGGR16LE", + "PIX_FMT_BAYER_BGGR16BE", + "PIX_FMT_BAYER_RGGB16LE", + "PIX_FMT_BAYER_RGGB16BE", + "PIX_FMT_BAYER_GBRG16LE", + "PIX_FMT_BAYER_GBRG16BE", + "PIX_FMT_BAYER_GRBG16LE", + "PIX_FMT_BAYER_GRBG16BE", + "PIX_FMT_XVMC", + "PIX_FMT_YUV440P10LE", + "PIX_FMT_YUV440P10BE", + "PIX_FMT_YUV440P12LE", + "PIX_FMT_YUV440P12BE", + "PIX_FMT_AYUV64LE", + "PIX_FMT_AYUV64BE", + "PIX_FMT_VIDEOTOOLBOX", + "PIX_FMT_P010LE", + "PIX_FMT_P010BE", + "PIX_FMT_GBRAP12BE", + "PIX_FMT_GBRAP12LE", + "PIX_FMT_GBRAP10BE", + "PIX_FMT_GBRAP10LE", + "PIX_FMT_MEDIACODEC", + "PIX_FMT_GRAY12BE", + "PIX_FMT_GRAY12LE", + "PIX_FMT_GRAY10BE", + "PIX_FMT_GRAY10LE", + "PIX_FMT_P016LE", + "PIX_FMT_P016BE", + "PIX_FMT_D3D11", + "PIX_FMT_GRAY9BE", + "PIX_FMT_GRAY9LE", + "PIX_FMT_GBRPF32BE", + "PIX_FMT_GBRPF32LE", + "PIX_FMT_GBRAPF32BE", + "PIX_FMT_GBRAPF32LE", + "PIX_FMT_DRM_PRIME", + "PIX_FMT_GACCEL", + "PIX_FMT_OPENCL", + "PIX_FMT_GRAY14BE", + "PIX_FMT_GRAY14LE", + "PIX_FMT_GRAYF32BE", + "PIX_FMT_GRAYF32LE", + "PIX_FMT_VULKAN", + "PIX_FMT_ID_FFMPEG_OUT_OF_SYNC" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "this one indicates an error in the mapping between this enum and libavcodec's" + ], + "type": "string" + }, + "profile": { + "description": "video profile", + "enum": [ + "PROFILE_UNKNOWN", + "PROFILE_AAC_MAIN", + "PROFILE_AAC_LOW", + "PROFILE_AAC_SSR", + "PROFILE_AAC_LTP", + "PROFILE_AAC_HE", + "PROFILE_AAC_HE_V2", + "PROFILE_AAC_LD", + "PROFILE_AAC_ELD", + "PROFILE_AVC_CONSTRAINED", + "PROFILE_AVC_INTRA", + "PROFILE_AVC_BASELINE", + "PROFILE_AVC_CONSTRAINED_BASELINE", + "PROFILE_AVC_MAIN", + "PROFILE_AVC_EXTENDED", + "PROFILE_AVC_HIGH", + "PROFILE_AVC_HIGH10", + "PROFILE_AVC_HIGH10_INTRA", + "PROFILE_AVC_HIGH422", + "PROFILE_AVC_HIGH422_INTRA", + "PROFILE_AVC_HIGH444", + "PROFILE_HIGH444_PREDICTIVE", + "PROFILE_AVC_HIGH444_INTRA", + "PROFILE_AVC_CAVLC444", + "PROFILE_VP9_0", + "PROFILE_VP9_1", + "PROFILE_VP9_2", + "PROFILE_VP9_3", + "PROFILE_HEVC_MAIN", + "PROFILE_HEVC_MAIN_10", + "PROFILE_HEVC_MAIN_STILL_PICTURE", + "PROFILE_HEVC_REXT", + "PROFILE_DOVI_5" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "(1 \u003c\u003c 8) constrained mode set bit", + "(1 \u003c\u003c 11) intra mode set bit", + "", + "PROFILE_AVC_CONSTRAINED_BASELINE = PROFILE_AVC_BASELINE | PROFILE_AVC_CONSTRAINED", + "", + "", + "", + "", + "PROFILE_AVC_HIGH10_INTRA = PROFILE_AVC_HIGH10 | PROFILE_AVC_INTRA", + "", + "PROFILE_AVC_HIGH422_INTRA = PROFILE_AVC_HIGH422 | PROFILE_AVC_INTRA", + "", + "", + "PROFILE_AVC_HIGH444_INTRA = PROFILE_AVC_HIGH444 | PROFILE_AVC_INTRA", + "", + "Since profile IDs might collide from different codecs, the profile IDs listed below are not identical to the numeric numbers defined in the spec due to collision. Next Profile ID: 10008 PROFILES for VP9. 0", + "1", + "2", + "3", + "1", + "2", + "3", + "4", + "DOVI Profile 5 can only be played as Dolby Vision so it has its own Profile." + ], + "type": "string" + }, + "timedtextStream": { + "items": { + "$ref": "VideoVideoStreamInfoTimedTextStream" + }, + "type": "array" + }, + "videoBitrate": { + "description": "video bitrate in bits/s", + "format": "double", + "type": "number" + }, + "videoClipInfo": { + "$ref": "VideoVideoClipInfo", + "description": "Video clip information, such as copyright, title, and author." + }, + "videoCodecId": { + "description": "Primary video codec information Fields 1-2, 4-10, 28, 37, 44, 49, 51, 54-55, 57-62, 69 will be obsolete soon. Please start using the new repeated video_stream. For now, video_stream(0) will match these fields. Note however that some of the fields in VideoStream are not populated correctly yet in videostreaminfo.cc, but that will be handled gradually.", + "enum": [ + "CODEC_ID_NONE", + "CODEC_ID_MPEG1VIDEO", + "CODEC_ID_MPEG2VIDEO", + "CODEC_ID_MPEG2VIDEO_XVMC", + "CODEC_ID_H261", + "CODEC_ID_H263", + "CODEC_ID_RV10", + "CODEC_ID_RV20", + "CODEC_ID_MJPEG", + "CODEC_ID_MJPEGB", + "CODEC_ID_LJPEG", + "CODEC_ID_SP5X", + "CODEC_ID_JPEGLS", + "CODEC_ID_MPEG4", + "CODEC_ID_RAWVIDEO", + "CODEC_ID_MSMPEG4V1", + "CODEC_ID_MSMPEG4V2", + "CODEC_ID_MSMPEG4V3", + "CODEC_ID_WMV1", + "CODEC_ID_WMV2", + "CODEC_ID_H263P", + "CODEC_ID_H263I", + "CODEC_ID_FLV1", + "CODEC_ID_SVQ1", + "CODEC_ID_SVQ3", + "CODEC_ID_DVVIDEO", + "CODEC_ID_HUFFYUV", + "CODEC_ID_CYUV", + "CODEC_ID_H264", + "CODEC_ID_INDEO3", + "CODEC_ID_VP3", + "CODEC_ID_THEORA", + "CODEC_ID_ASV1", + "CODEC_ID_ASV2", + "CODEC_ID_FFV1", + "CODEC_ID_4XM", + "CODEC_ID_VCR1", + "CODEC_ID_CLJR", + "CODEC_ID_MDEC", + "CODEC_ID_ROQ", + "CODEC_ID_INTERPLAY_VIDEO", + "CODEC_ID_XAN_WC3", + "CODEC_ID_XAN_WC4", + "CODEC_ID_RPZA", + "CODEC_ID_CINEPAK", + "CODEC_ID_WS_VQA", + "CODEC_ID_MSRLE", + "CODEC_ID_MSVIDEO1", + "CODEC_ID_IDCIN", + "CODEC_ID_8BPS", + "CODEC_ID_SMC", + "CODEC_ID_FLIC", + "CODEC_ID_TRUEMOTION1", + "CODEC_ID_VMDVIDEO", + "CODEC_ID_MSZH", + "CODEC_ID_ZLIB", + "CODEC_ID_QTRLE", + "CODEC_ID_SNOW", + "CODEC_ID_TSCC", + "CODEC_ID_ULTI", + "CODEC_ID_QDRAW", + "CODEC_ID_VIXL", + "CODEC_ID_QPEG", + "CODEC_ID_XVID", + "CODEC_ID_PNG", + "CODEC_ID_PPM", + "CODEC_ID_PBM", + "CODEC_ID_PGM", + "CODEC_ID_PGMYUV", + "CODEC_ID_PAM", + "CODEC_ID_FFVHUFF", + "CODEC_ID_RV30", + "CODEC_ID_RV40", + "CODEC_ID_VC1", + "CODEC_ID_WMV3", + "CODEC_ID_LOCO", + "CODEC_ID_WNV1", + "CODEC_ID_AASC", + "CODEC_ID_INDEO2", + "CODEC_ID_FRAPS", + "CODEC_ID_TRUEMOTION2", + "CODEC_ID_BMP", + "CODEC_ID_CSCD", + "CODEC_ID_MMVIDEO", + "CODEC_ID_ZMBV", + "CODEC_ID_AVS", + "CODEC_ID_SMACKVIDEO", + "CODEC_ID_NUV", + "CODEC_ID_KMVC", + "CODEC_ID_FLASHSV", + "CODEC_ID_CAVS", + "CODEC_ID_JPEG2000", + "CODEC_ID_VMNC", + "CODEC_ID_VP5", + "CODEC_ID_VP6", + "CODEC_ID_VP6F", + "CODEC_ID_TARGA", + "CODEC_ID_DSICINVIDEO", + "CODEC_ID_TIERTEXSEQVIDEO", + "CODEC_ID_TIFF", + "CODEC_ID_GIF", + "CODEC_ID_FFH264", + "CODEC_ID_DXA", + "CODEC_ID_DNXHD", + "CODEC_ID_THP", + "CODEC_ID_SGI", + "CODEC_ID_C93", + "CODEC_ID_BETHSOFTVID", + "CODEC_ID_PTX", + "CODEC_ID_TXD", + "CODEC_ID_VP6A", + "CODEC_ID_AMV", + "CODEC_ID_VB", + "CODEC_ID_PCX", + "CODEC_ID_SUNRAST", + "CODEC_ID_INDEO4", + "CODEC_ID_INDEO5", + "CODEC_ID_MIMIC", + "CODEC_ID_RL2", + "CODEC_ID_8SVX_EXP", + "CODEC_ID_8SVX_FIB", + "CODEC_ID_ESCAPE124", + "CODEC_ID_DIRAC", + "CODEC_ID_BFI", + "CODEC_ID_CMV", + "CODEC_ID_MOTIONPIXELS", + "CODEC_ID_TGV", + "CODEC_ID_TGQ", + "CODEC_ID_TQI", + "CODEC_ID_AURA", + "CODEC_ID_AURA2", + "CODEC_ID_V210X", + "CODEC_ID_TMV", + "CODEC_ID_V210", + "CODEC_ID_DPX", + "CODEC_ID_MAD", + "CODEC_ID_FRWU", + "CODEC_ID_VP8", + "CODEC_ID_APPLE_PRORES_NQ", + "CODEC_ID_APPLE_PRORES_HQ", + "CODEC_ID_FLASHSV2", + "CODEC_ID_CDGRAPHICS", + "CODEC_ID_R210", + "CODEC_ID_ANM", + "CODEC_ID_BINKVIDEO", + "CODEC_ID_IFF_ILBM", + "CODEC_ID_IFF_BYTERUN1", + "CODEC_ID_KGV1", + "CODEC_ID_YOP", + "CODEC_ID_PICTOR", + "CODEC_ID_APPLE_PRORES_LT", + "CODEC_ID_APPLE_PRORES_PROXY", + "CODEC_ID_APPLE_PRORES_4444", + "CODEC_ID_APPLE_PIXLET", + "CODEC_ID_G2M", + "CODEC_ID_PRORES", + "CODEC_ID_ANSI", + "CODEC_ID_A64_MULTI", + "CODEC_ID_A64_MULTI5", + "CODEC_ID_R10K", + "CODEC_ID_MXPEG", + "CODEC_ID_LAGARITH", + "CODEC_ID_JV", + "CODEC_ID_DFA", + "CODEC_ID_WMV3IMAGE", + "CODEC_ID_VC1IMAGE", + "CODEC_ID_UTVIDEO", + "CODEC_ID_BMV_VIDEO", + "CODEC_ID_VBLE", + "CODEC_ID_DXTORY", + "CODEC_ID_V410", + "CODEC_ID_XWD", + "CODEC_ID_CDXL", + "CODEC_ID_XBM", + "CODEC_ID_ZEROCODEC", + "CODEC_ID_MSS1", + "CODEC_ID_MSA1", + "CODEC_ID_TSCC2", + "CODEC_ID_MTS2", + "CODEC_ID_CLLC", + "CODEC_ID_MSS2", + "CODEC_ID_Y41P", + "CODEC_ID_ESCAPE130", + "CODEC_ID_EXR", + "CODEC_ID_AVRP", + "CODEC_ID_AVUI", + "CODEC_ID_AYUV", + "CODEC_ID_V308", + "CODEC_ID_V408", + "CODEC_ID_YUV4", + "CODEC_ID_SANM", + "CODEC_ID_PAF_VIDEO", + "CODEC_ID_AVRN", + "CODEC_ID_CPIA", + "CODEC_ID_VP9", + "CODEC_ID_H265", + "CODEC_ID_CFHD", + "CODEC_ID_AV1", + "CODEC_ID_AIC", + "CODEC_ID_ALIAS_PIX", + "CODEC_ID_APNG", + "CODEC_ID_BRENDER_PIX", + "CODEC_ID_CLEARVIDEO", + "CODEC_ID_DDS", + "CODEC_ID_DXV", + "CODEC_ID_FIC", + "CODEC_ID_FITS", + "CODEC_ID_FMVC", + "CODEC_ID_GDV", + "CODEC_ID_HAP", + "CODEC_ID_HNM4_VIDEO", + "CODEC_ID_HQ_HQA", + "CODEC_ID_HQX", + "CODEC_ID_M101", + "CODEC_ID_MAGICYUV", + "CODEC_ID_MSCC", + "CODEC_ID_MVC1", + "CODEC_ID_MVC2", + "CODEC_ID_PIXLET", + "CODEC_ID_PSD", + "CODEC_ID_RSCC", + "CODEC_ID_SCPR", + "CODEC_ID_SCREENPRESSO", + "CODEC_ID_SGIRLE", + "CODEC_ID_SHEERVIDEO", + "CODEC_ID_SMVJPEG", + "CODEC_ID_SPEEDHQ", + "CODEC_ID_SRGC", + "CODEC_ID_TARGA_Y216", + "CODEC_ID_TDSC", + "CODEC_ID_TRUEMOTION2RT", + "CODEC_ID_VP7", + "CODEC_ID_BITPACKED", + "CODEC_ID_WEBP", + "CODEC_ID_XFACE", + "CODEC_ID_XPM", + "CODEC_ID_YLC", + "CODEC_ID_012V", + "CODEC_ID_AVS2", + "CODEC_ID_IMM4", + "CODEC_ID_MWSC", + "CODEC_ID_PROSUMER", + "CODEC_ID_RASC", + "CODEC_ID_WCMV", + "CODEC_ID_UNKNOWN", + "CODEC_ID_PCM_S16LE", + "CODEC_ID_PCM_S16BE", + "CODEC_ID_PCM_U16LE", + "CODEC_ID_PCM_U16BE", + "CODEC_ID_PCM_S8", + "CODEC_ID_PCM_U8", + "CODEC_ID_PCM_MULAW", + "CODEC_ID_PCM_ALAW", + "CODEC_ID_PCM_S32LE", + "CODEC_ID_PCM_S32BE", + "CODEC_ID_PCM_U32LE", + "CODEC_ID_PCM_U32BE", + "CODEC_ID_PCM_S24LE", + "CODEC_ID_PCM_S24BE", + "CODEC_ID_PCM_U24LE", + "CODEC_ID_PCM_U24BE", + "CODEC_ID_PCM_S24DAUD", + "CODEC_ID_PCM_ZORK", + "CODEC_ID_PCM_S16LE_PLANAR", + "CODEC_ID_PCM_DVD", + "CODEC_ID_PCM_F32BE", + "CODEC_ID_PCM_F32LE", + "CODEC_ID_PCM_F64BE", + "CODEC_ID_PCM_F64LE", + "CODEC_ID_PCM_BLURAY", + "CODEC_ID_PCM_LXF", + "CODEC_ID_S302M", + "CODEC_ID_PCM_S8_PLANAR", + "CODEC_ID_PCM_S24LE_PLANAR", + "CODEC_ID_PCM_S32LE_PLANAR", + "CODEC_ID_PCM_S16BE_PLANAR", + "CODEC_ID_PCM_S64LE", + "CODEC_ID_PCM_S64BE", + "CODEC_ID_PCM_F16LE", + "CODEC_ID_PCM_F24LE", + "CODEC_ID_ADPCM_IMA_QT", + "CODEC_ID_ADPCM_IMA_WAV", + "CODEC_ID_ADPCM_IMA_DK3", + "CODEC_ID_ADPCM_IMA_DK4", + "CODEC_ID_ADPCM_IMA_WS", + "CODEC_ID_ADPCM_IMA_SMJPEG", + "CODEC_ID_ADPCM_MS", + "CODEC_ID_ADPCM_4XM", + "CODEC_ID_ADPCM_XA", + "CODEC_ID_ADPCM_ADX", + "CODEC_ID_ADPCM_EA", + "CODEC_ID_ADPCM_G726", + "CODEC_ID_ADPCM_CT", + "CODEC_ID_ADPCM_SWF", + "CODEC_ID_ADPCM_YAMAHA", + "CODEC_ID_ADPCM_SBPRO_4", + "CODEC_ID_ADPCM_SBPRO_3", + "CODEC_ID_ADPCM_SBPRO_2", + "CODEC_ID_ADPCM_THP", + "CODEC_ID_ADPCM_IMA_AMV", + "CODEC_ID_ADPCM_EA_R1", + "CODEC_ID_ADPCM_EA_R3", + "CODEC_ID_ADPCM_EA_R2", + "CODEC_ID_ADPCM_IMA_EA_SEAD", + "CODEC_ID_ADPCM_IMA_EA_EACS", + "CODEC_ID_ADPCM_EA_XAS", + "CODEC_ID_ADPCM_EA_MAXIS_XA", + "CODEC_ID_ADPCM_IMA_ISS", + "CODEC_ID_ADPCM_G722", + "CODEC_ID_ADPCM_IMA_APC", + "CODEC_ID_VIMA", + "CODEC_ID_ADPCM_AFC", + "CODEC_ID_ADPCM_IMA_OKI", + "CODEC_ID_ADPCM_DTK", + "CODEC_ID_ADPCM_IMA_RAD", + "CODEC_ID_ADPCM_G726LE", + "CODEC_ID_ADPCM_THP_LE", + "CODEC_ID_ADPCM_PSX", + "CODEC_ID_ADPCM_AICA", + "CODEC_ID_ADPCM_IMA_DAT4", + "CODEC_ID_ADPCM_MTAF", + "CODEC_ID_ADPCM_VIMA", + "CODEC_ID_AMR_NB", + "CODEC_ID_AMR_WB", + "CODEC_ID_RA_144", + "CODEC_ID_RA_288", + "CODEC_ID_ROQ_DPCM", + "CODEC_ID_INTERPLAY_DPCM", + "CODEC_ID_XAN_DPCM", + "CODEC_ID_SOL_DPCM", + "CODEC_ID_GREMLIN_DPCM", + "CODEC_ID_SDX2_DPCM", + "CODEC_ID_MP2", + "CODEC_ID_MP3", + "CODEC_ID_AAC", + "CODEC_ID_MPEG4AAC_DEPRECATED", + "CODEC_ID_AC3", + "CODEC_ID_DTS", + "CODEC_ID_VORBIS", + "CODEC_ID_DVAUDIO", + "CODEC_ID_WMAV1", + "CODEC_ID_WMAV2", + "CODEC_ID_MACE3", + "CODEC_ID_MACE6", + "CODEC_ID_VMDAUDIO", + "CODEC_ID_SONIC", + "CODEC_ID_SONIC_LS", + "CODEC_ID_FLAC", + "CODEC_ID_MP3ADU", + "CODEC_ID_MP3ON4", + "CODEC_ID_SHORTEN", + "CODEC_ID_ALAC", + "CODEC_ID_WESTWOOD_SND1", + "CODEC_ID_GSM", + "CODEC_ID_QDM2", + "CODEC_ID_COOK", + "CODEC_ID_TRUESPEECH", + "CODEC_ID_TTA", + "CODEC_ID_SMACKAUDIO", + "CODEC_ID_QCELP", + "CODEC_ID_WAVPACK", + "CODEC_ID_DSICINAUDIO", + "CODEC_ID_ASAO", + "CODEC_ID_NELLYMOSER", + "CODEC_ID_WMAVOICE", + "CODEC_ID_WMAPRO", + "CODEC_ID_WMALOSSLESS", + "CODEC_ID_IMC", + "CODEC_ID_MUSEPACK7", + "CODEC_ID_MLP", + "CODEC_ID_GSM_MS", + "CODEC_ID_ATRAC3", + "CODEC_ID_VOXWARE", + "CODEC_ID_APE", + "CODEC_ID_MUSEPACK8", + "CODEC_ID_SPEEX", + "CODEC_ID_ATRAC3P", + "CODEC_ID_EAC3", + "CODEC_ID_SIPR", + "CODEC_ID_MP1", + "CODEC_ID_TWINVQ", + "CODEC_ID_TRUEHD", + "CODEC_ID_MP4ALS", + "CODEC_ID_ATRAC1", + "CODEC_ID_BINKAUDIO_RDFT", + "CODEC_ID_BINKAUDIO_DCT", + "CODEC_ID_AAC_LATM", + "CODEC_ID_QDMC", + "CODEC_ID_CELT", + "CODEC_ID_G723_1", + "CODEC_ID_G729", + "CODEC_ID_BMV_AUDIO", + "CODEC_ID_RALF", + "CODEC_ID_IAC", + "CODEC_ID_ILBC", + "CODEC_ID_FFWAVESYNTH", + "CODEC_ID_8SVX_RAW", + "CODEC_ID_PAF_AUDIO", + "CODEC_ID_OPUS", + "CODEC_ID_ATRAC3AL", + "CODEC_ID_ATRAC3PAL", + "CODEC_ID_DOLBY_E", + "CODEC_ID_DSD_LSBF", + "CODEC_ID_DSD_MSBF", + "CODEC_ID_DSD_LSBF_PLANAR", + "CODEC_ID_DSD_MSBF_PLANAR", + "CODEC_ID_DSS_SP", + "CODEC_ID_DST", + "CODEC_ID_EVRC", + "CODEC_ID_INTERPLAY_ACM", + "CODEC_ID_METASOUND", + "CODEC_ID_ON2AVC", + "CODEC_ID_TAK", + "CODEC_ID_XMA1", + "CODEC_ID_XMA2", + "CODEC_ID_COMFORT_NOISE", + "CODEC_ID_APTX", + "CODEC_ID_APTX_HD", + "CODEC_ID_SBC", + "CODEC_ID_ATRAC9", + "CODEC_ID_CODEC2", + "CODEC_ID_OGGTHEORA_DEPRECATED", + "CODEC_ID_DVD_SUBTITLE", + "CODEC_ID_DVB_SUBTITLE", + "CODEC_ID_TEXT", + "CODEC_ID_XSUB", + "CODEC_ID_SSA", + "CODEC_ID_MOV_TEXT", + "CODEC_ID_HDMV_PGS_SUBTITLE", + "CODEC_ID_DVB_TELETEXT", + "CODEC_ID_SRT", + "CODEC_ID_MICRODVD", + "CODEC_ID_EIA_608", + "CODEC_ID_JACOSUB", + "CODEC_ID_SAMI", + "CODEC_ID_REALTEXT", + "CODEC_ID_SUBVIEWER", + "CODEC_ID_SUBRIP", + "CODEC_ID_WEBVTT", + "CODEC_ID_ASS", + "CODEC_ID_MPL2", + "CODEC_ID_PJS", + "CODEC_ID_STL", + "CODEC_ID_SUBVIEWER1", + "CODEC_ID_VPLAYER", + "CODEC_ID_TTML", + "CODEC_ID_TTF", + "CODEC_ID_BINTEXT", + "CODEC_ID_XBIN", + "CODEC_ID_IDF", + "CODEC_ID_OTF", + "CODEC_ID_PROBE", + "CODEC_ID_MPEG2TS", + "CODEC_ID_MPEG4SYSTEMS", + "CODEC_ID_FFMETADATA", + "CODEC_ID_FFMPEG_OUT_OF_SYNC", + "CODEC_ID_WRAPPED_AVFRAME", + "CODEC_ID_CAMM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_MPEG4", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "moved to audio codecs section in upstream", + "moved to audio codecs section in upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various pcm \"codecs\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various adpcm codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AMR", + "", + "RealAudio codecs", + "", + "various DPCM codecs", + "", + "", + "", + "", + "", + "audio codecs", + "preferred ID for MPEG Audio layer 1, 2 or 3", + "", + "Use CODEC_ID_AAC instead", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Not in ffmpeg as of rev 20544.", + "Start of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "End of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Removed in ffmpeg rev 5877.", + "subtitle codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "other specific kind of codecs (generally used for attachments)", + "", + "", + "", + "", + "\u003c codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it", + "_FAKE_ codec to indicate a raw MPEG2 transport stream (only used by libavformat)", + "_FAKE_ codec to indicate a MPEG-4 Systems stream (only used by libavformat)", + "Dummy codec for streams containing only metadata information.", + "this one indicates an error in the mapping between this enum and libavcodec's", + "AVFrames wrapped in AVPacket", + "Camera motion metadata (http://go/wally-format)" + ], + "type": "string" + }, + "videoEndTimestamp": { + "format": "int64", + "type": "string" + }, + "videoFps": { + "description": "video frame per second, obtained by parsing video header information. It could be inaccurate for some types of codecs, notably, WMV, ASF, and FLV. It will be inaccurate for videos that does not have constant frame rate since it is the smallest framerate that can accurately represent all timestamps (see ffmpeg doc for AVStream.r_frame_rate). Also frame rate can be parsed from headers and can be wrong if it is not available there since ffmpeg uses a heuristic for determining it.", + "format": "double", + "type": "number" + }, + "videoFrameSize": { + "description": "video frame size", + "format": "int64", + "type": "string" + }, + "videoHasBFrames": { + "description": "video has b frames", + "type": "boolean" + }, + "videoHasFragments": { + "description": "video (MOV) has fragments", + "type": "boolean" + }, + "videoHasLeadingMoovAtom": { + "description": "video (MOV) has moov atom before mdat atom allowing streaming transcoding", + "type": "boolean" + }, + "videoHasNonMonotonicDts": { + "description": "video has non-monotonic DTS (potential problem)", + "type": "boolean" + }, + "videoHasNonMonotonicPts": { + "description": "video has non-monotonic PTS.", + "type": "boolean" + }, + "videoHasNonZeroStartEditList": { + "description": "video (MOV) has a possibly av desync issue due to edit lists not starting at 0", + "type": "boolean" + }, + "videoHasPossibleOpenGop": { + "description": "video has possible open GOP", + "type": "boolean" + }, + "videoHasVariableAspectRatio": { + "description": "video has frames with different aspect ratios.", + "type": "boolean" + }, + "videoHeight": { + "format": "int32", + "type": "integer" + }, + "videoInterlace": { + "description": "Information on interlaced video.", + "enum": [ + "INTERLACE_NONE", + "INTERLACE_PIC_AFF", + "INTERLACE_MB_AFF" + ], + "enumDescriptions": [ + "No interlace", + "Adaptive frame-field coding in picture level", + "Adaptive frame-field coding in macroblock level" + ], + "type": "string" + }, + "videoLength": { + "description": "video length in seconds Note that when the VSI is from users videos, it is not guaranteed to be the same as transcode lengths and it could be 0 when the full VSI cannot compute the length from the source header and timestamps (for example when header and timestamps are too broken).", + "format": "double", + "type": "number" + }, + "videoNumberOfFrames": { + "description": "Number of Video frames Warning: running video::FfmpegVideoFileInformation() won't set this info Ffmpeg tool does not report the number of frames accurately. We can't rely on fps and video length. So we will set this after we processed every frame using the filter framework", + "format": "int64", + "type": "string" + }, + "videoNumberOfInvisibleFrames": { + "description": "Invisible frame count Keep a count of frames that are not displayed should the full frame count be needed for the video stream. The only codec currently reporting this value is VP8 with alternate reference frames enabled", + "format": "int32", + "type": "integer" + }, + "videoPixelAspectRatio": { + "description": "video pixel aspect ratio", + "format": "double", + "type": "number" + }, + "videoRotation": { + "description": "Is the video rotated ?", + "enum": [ + "ROTATION_NONE", + "ROTATION_OTHER", + "ROTATION_CW_90", + "ROTATION_CCW_90", + "ROTATION_180" + ], + "enumDescriptions": [ + "No rotation", + "Unspecified non-identity rotation", + "Rotate clockwise by 90 degrees", + "Rotate counter-clockwise by 90 degrees", + "Rotate 180 degrees" + ], + "type": "string" + }, + "videoStartTimestamp": { + "description": "Start/end timestamps of audio/video in ms.", + "format": "int64", + "type": "string" + }, + "videoStream": { + "items": { + "$ref": "VideoVideoStreamInfoVideoStream" + }, + "type": "array" + }, + "videoStreamCodecTag": { + "format": "int32", + "type": "integer" + }, + "videoWidth": { + "description": "source video width and height", + "format": "int32", + "type": "integer" + }, + "videostreaminfoVersion": { + "description": "Version number of the videostreaminfo application that generated this protobuf.", + "format": "int32", + "type": "integer" + }, + "yPsnr": { + "description": "Luma PSNR of the transcoded file.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoAudioStream": { + "description": "Next id: 25", + "id": "VideoVideoStreamInfoAudioStream", + "properties": { + "ambisonics": { + "$ref": "VideoAmbisonicsAmbisonicsMetadata", + "description": "Optional ambisonics metadata." + }, + "bitrate": { + "description": "audio bitrate in bits/s", + "format": "int64", + "type": "string" + }, + "channelPosition": { + "items": { + "enum": [ + "CHANNEL_UNKNOWN", + "CHANNEL_FRONT_LEFT", + "CHANNEL_FRONT_RIGHT", + "CHANNEL_FRONT_CENTER", + "CHANNEL_LOW_FREQUENCY", + "CHANNEL_BACK_LEFT", + "CHANNEL_BACK_RIGHT", + "CHANNEL_FRONT_LEFT_OF_CENTER", + "CHANNEL_FRONT_RIGHT_OF_CENTER", + "CHANNEL_BACK_CENTER", + "CHANNEL_SIDE_LEFT", + "CHANNEL_SIDE_RIGHT", + "CHANNEL_TOP_CENTER", + "CHANNEL_TOP_FRONT_LEFT", + "CHANNEL_TOP_FRONT_CENTER", + "CHANNEL_TOP_FRONT_RIGHT", + "CHANNEL_TOP_BACK_LEFT", + "CHANNEL_TOP_BACK_CENTER", + "CHANNEL_TOP_BACK_RIGHT", + "CHANNEL_STEREO_LEFT", + "CHANNEL_STEREO_RIGHT", + "CHANNEL_WIDE_LEFT", + "CHANNEL_WIDE_RIGHT", + "CHANNEL_SURROUND_DIRECT_LEFT", + "CHANNEL_SURROUND_DIRECT_RIGHT", + "CHANNEL_LOW_FREQUENCY_2" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "type": "array" + }, + "channels": { + "description": "number of audio channels", + "format": "int32", + "type": "integer" + }, + "clockDiscontinuityUs": { + "description": "some container allows for a clock discontinuity. In this case, the end_timestamp may not be the correct DTS of the stream.", + "format": "int64", + "type": "string" + }, + "codecFourcc": { + "type": "string" + }, + "codecId": { + "description": "Primary audio codec information", + "enum": [ + "CODEC_ID_NONE", + "CODEC_ID_MPEG1VIDEO", + "CODEC_ID_MPEG2VIDEO", + "CODEC_ID_MPEG2VIDEO_XVMC", + "CODEC_ID_H261", + "CODEC_ID_H263", + "CODEC_ID_RV10", + "CODEC_ID_RV20", + "CODEC_ID_MJPEG", + "CODEC_ID_MJPEGB", + "CODEC_ID_LJPEG", + "CODEC_ID_SP5X", + "CODEC_ID_JPEGLS", + "CODEC_ID_MPEG4", + "CODEC_ID_RAWVIDEO", + "CODEC_ID_MSMPEG4V1", + "CODEC_ID_MSMPEG4V2", + "CODEC_ID_MSMPEG4V3", + "CODEC_ID_WMV1", + "CODEC_ID_WMV2", + "CODEC_ID_H263P", + "CODEC_ID_H263I", + "CODEC_ID_FLV1", + "CODEC_ID_SVQ1", + "CODEC_ID_SVQ3", + "CODEC_ID_DVVIDEO", + "CODEC_ID_HUFFYUV", + "CODEC_ID_CYUV", + "CODEC_ID_H264", + "CODEC_ID_INDEO3", + "CODEC_ID_VP3", + "CODEC_ID_THEORA", + "CODEC_ID_ASV1", + "CODEC_ID_ASV2", + "CODEC_ID_FFV1", + "CODEC_ID_4XM", + "CODEC_ID_VCR1", + "CODEC_ID_CLJR", + "CODEC_ID_MDEC", + "CODEC_ID_ROQ", + "CODEC_ID_INTERPLAY_VIDEO", + "CODEC_ID_XAN_WC3", + "CODEC_ID_XAN_WC4", + "CODEC_ID_RPZA", + "CODEC_ID_CINEPAK", + "CODEC_ID_WS_VQA", + "CODEC_ID_MSRLE", + "CODEC_ID_MSVIDEO1", + "CODEC_ID_IDCIN", + "CODEC_ID_8BPS", + "CODEC_ID_SMC", + "CODEC_ID_FLIC", + "CODEC_ID_TRUEMOTION1", + "CODEC_ID_VMDVIDEO", + "CODEC_ID_MSZH", + "CODEC_ID_ZLIB", + "CODEC_ID_QTRLE", + "CODEC_ID_SNOW", + "CODEC_ID_TSCC", + "CODEC_ID_ULTI", + "CODEC_ID_QDRAW", + "CODEC_ID_VIXL", + "CODEC_ID_QPEG", + "CODEC_ID_XVID", + "CODEC_ID_PNG", + "CODEC_ID_PPM", + "CODEC_ID_PBM", + "CODEC_ID_PGM", + "CODEC_ID_PGMYUV", + "CODEC_ID_PAM", + "CODEC_ID_FFVHUFF", + "CODEC_ID_RV30", + "CODEC_ID_RV40", + "CODEC_ID_VC1", + "CODEC_ID_WMV3", + "CODEC_ID_LOCO", + "CODEC_ID_WNV1", + "CODEC_ID_AASC", + "CODEC_ID_INDEO2", + "CODEC_ID_FRAPS", + "CODEC_ID_TRUEMOTION2", + "CODEC_ID_BMP", + "CODEC_ID_CSCD", + "CODEC_ID_MMVIDEO", + "CODEC_ID_ZMBV", + "CODEC_ID_AVS", + "CODEC_ID_SMACKVIDEO", + "CODEC_ID_NUV", + "CODEC_ID_KMVC", + "CODEC_ID_FLASHSV", + "CODEC_ID_CAVS", + "CODEC_ID_JPEG2000", + "CODEC_ID_VMNC", + "CODEC_ID_VP5", + "CODEC_ID_VP6", + "CODEC_ID_VP6F", + "CODEC_ID_TARGA", + "CODEC_ID_DSICINVIDEO", + "CODEC_ID_TIERTEXSEQVIDEO", + "CODEC_ID_TIFF", + "CODEC_ID_GIF", + "CODEC_ID_FFH264", + "CODEC_ID_DXA", + "CODEC_ID_DNXHD", + "CODEC_ID_THP", + "CODEC_ID_SGI", + "CODEC_ID_C93", + "CODEC_ID_BETHSOFTVID", + "CODEC_ID_PTX", + "CODEC_ID_TXD", + "CODEC_ID_VP6A", + "CODEC_ID_AMV", + "CODEC_ID_VB", + "CODEC_ID_PCX", + "CODEC_ID_SUNRAST", + "CODEC_ID_INDEO4", + "CODEC_ID_INDEO5", + "CODEC_ID_MIMIC", + "CODEC_ID_RL2", + "CODEC_ID_8SVX_EXP", + "CODEC_ID_8SVX_FIB", + "CODEC_ID_ESCAPE124", + "CODEC_ID_DIRAC", + "CODEC_ID_BFI", + "CODEC_ID_CMV", + "CODEC_ID_MOTIONPIXELS", + "CODEC_ID_TGV", + "CODEC_ID_TGQ", + "CODEC_ID_TQI", + "CODEC_ID_AURA", + "CODEC_ID_AURA2", + "CODEC_ID_V210X", + "CODEC_ID_TMV", + "CODEC_ID_V210", + "CODEC_ID_DPX", + "CODEC_ID_MAD", + "CODEC_ID_FRWU", + "CODEC_ID_VP8", + "CODEC_ID_APPLE_PRORES_NQ", + "CODEC_ID_APPLE_PRORES_HQ", + "CODEC_ID_FLASHSV2", + "CODEC_ID_CDGRAPHICS", + "CODEC_ID_R210", + "CODEC_ID_ANM", + "CODEC_ID_BINKVIDEO", + "CODEC_ID_IFF_ILBM", + "CODEC_ID_IFF_BYTERUN1", + "CODEC_ID_KGV1", + "CODEC_ID_YOP", + "CODEC_ID_PICTOR", + "CODEC_ID_APPLE_PRORES_LT", + "CODEC_ID_APPLE_PRORES_PROXY", + "CODEC_ID_APPLE_PRORES_4444", + "CODEC_ID_APPLE_PIXLET", + "CODEC_ID_G2M", + "CODEC_ID_PRORES", + "CODEC_ID_ANSI", + "CODEC_ID_A64_MULTI", + "CODEC_ID_A64_MULTI5", + "CODEC_ID_R10K", + "CODEC_ID_MXPEG", + "CODEC_ID_LAGARITH", + "CODEC_ID_JV", + "CODEC_ID_DFA", + "CODEC_ID_WMV3IMAGE", + "CODEC_ID_VC1IMAGE", + "CODEC_ID_UTVIDEO", + "CODEC_ID_BMV_VIDEO", + "CODEC_ID_VBLE", + "CODEC_ID_DXTORY", + "CODEC_ID_V410", + "CODEC_ID_XWD", + "CODEC_ID_CDXL", + "CODEC_ID_XBM", + "CODEC_ID_ZEROCODEC", + "CODEC_ID_MSS1", + "CODEC_ID_MSA1", + "CODEC_ID_TSCC2", + "CODEC_ID_MTS2", + "CODEC_ID_CLLC", + "CODEC_ID_MSS2", + "CODEC_ID_Y41P", + "CODEC_ID_ESCAPE130", + "CODEC_ID_EXR", + "CODEC_ID_AVRP", + "CODEC_ID_AVUI", + "CODEC_ID_AYUV", + "CODEC_ID_V308", + "CODEC_ID_V408", + "CODEC_ID_YUV4", + "CODEC_ID_SANM", + "CODEC_ID_PAF_VIDEO", + "CODEC_ID_AVRN", + "CODEC_ID_CPIA", + "CODEC_ID_VP9", + "CODEC_ID_H265", + "CODEC_ID_CFHD", + "CODEC_ID_AV1", + "CODEC_ID_AIC", + "CODEC_ID_ALIAS_PIX", + "CODEC_ID_APNG", + "CODEC_ID_BRENDER_PIX", + "CODEC_ID_CLEARVIDEO", + "CODEC_ID_DDS", + "CODEC_ID_DXV", + "CODEC_ID_FIC", + "CODEC_ID_FITS", + "CODEC_ID_FMVC", + "CODEC_ID_GDV", + "CODEC_ID_HAP", + "CODEC_ID_HNM4_VIDEO", + "CODEC_ID_HQ_HQA", + "CODEC_ID_HQX", + "CODEC_ID_M101", + "CODEC_ID_MAGICYUV", + "CODEC_ID_MSCC", + "CODEC_ID_MVC1", + "CODEC_ID_MVC2", + "CODEC_ID_PIXLET", + "CODEC_ID_PSD", + "CODEC_ID_RSCC", + "CODEC_ID_SCPR", + "CODEC_ID_SCREENPRESSO", + "CODEC_ID_SGIRLE", + "CODEC_ID_SHEERVIDEO", + "CODEC_ID_SMVJPEG", + "CODEC_ID_SPEEDHQ", + "CODEC_ID_SRGC", + "CODEC_ID_TARGA_Y216", + "CODEC_ID_TDSC", + "CODEC_ID_TRUEMOTION2RT", + "CODEC_ID_VP7", + "CODEC_ID_BITPACKED", + "CODEC_ID_WEBP", + "CODEC_ID_XFACE", + "CODEC_ID_XPM", + "CODEC_ID_YLC", + "CODEC_ID_012V", + "CODEC_ID_AVS2", + "CODEC_ID_IMM4", + "CODEC_ID_MWSC", + "CODEC_ID_PROSUMER", + "CODEC_ID_RASC", + "CODEC_ID_WCMV", + "CODEC_ID_UNKNOWN", + "CODEC_ID_PCM_S16LE", + "CODEC_ID_PCM_S16BE", + "CODEC_ID_PCM_U16LE", + "CODEC_ID_PCM_U16BE", + "CODEC_ID_PCM_S8", + "CODEC_ID_PCM_U8", + "CODEC_ID_PCM_MULAW", + "CODEC_ID_PCM_ALAW", + "CODEC_ID_PCM_S32LE", + "CODEC_ID_PCM_S32BE", + "CODEC_ID_PCM_U32LE", + "CODEC_ID_PCM_U32BE", + "CODEC_ID_PCM_S24LE", + "CODEC_ID_PCM_S24BE", + "CODEC_ID_PCM_U24LE", + "CODEC_ID_PCM_U24BE", + "CODEC_ID_PCM_S24DAUD", + "CODEC_ID_PCM_ZORK", + "CODEC_ID_PCM_S16LE_PLANAR", + "CODEC_ID_PCM_DVD", + "CODEC_ID_PCM_F32BE", + "CODEC_ID_PCM_F32LE", + "CODEC_ID_PCM_F64BE", + "CODEC_ID_PCM_F64LE", + "CODEC_ID_PCM_BLURAY", + "CODEC_ID_PCM_LXF", + "CODEC_ID_S302M", + "CODEC_ID_PCM_S8_PLANAR", + "CODEC_ID_PCM_S24LE_PLANAR", + "CODEC_ID_PCM_S32LE_PLANAR", + "CODEC_ID_PCM_S16BE_PLANAR", + "CODEC_ID_PCM_S64LE", + "CODEC_ID_PCM_S64BE", + "CODEC_ID_PCM_F16LE", + "CODEC_ID_PCM_F24LE", + "CODEC_ID_ADPCM_IMA_QT", + "CODEC_ID_ADPCM_IMA_WAV", + "CODEC_ID_ADPCM_IMA_DK3", + "CODEC_ID_ADPCM_IMA_DK4", + "CODEC_ID_ADPCM_IMA_WS", + "CODEC_ID_ADPCM_IMA_SMJPEG", + "CODEC_ID_ADPCM_MS", + "CODEC_ID_ADPCM_4XM", + "CODEC_ID_ADPCM_XA", + "CODEC_ID_ADPCM_ADX", + "CODEC_ID_ADPCM_EA", + "CODEC_ID_ADPCM_G726", + "CODEC_ID_ADPCM_CT", + "CODEC_ID_ADPCM_SWF", + "CODEC_ID_ADPCM_YAMAHA", + "CODEC_ID_ADPCM_SBPRO_4", + "CODEC_ID_ADPCM_SBPRO_3", + "CODEC_ID_ADPCM_SBPRO_2", + "CODEC_ID_ADPCM_THP", + "CODEC_ID_ADPCM_IMA_AMV", + "CODEC_ID_ADPCM_EA_R1", + "CODEC_ID_ADPCM_EA_R3", + "CODEC_ID_ADPCM_EA_R2", + "CODEC_ID_ADPCM_IMA_EA_SEAD", + "CODEC_ID_ADPCM_IMA_EA_EACS", + "CODEC_ID_ADPCM_EA_XAS", + "CODEC_ID_ADPCM_EA_MAXIS_XA", + "CODEC_ID_ADPCM_IMA_ISS", + "CODEC_ID_ADPCM_G722", + "CODEC_ID_ADPCM_IMA_APC", + "CODEC_ID_VIMA", + "CODEC_ID_ADPCM_AFC", + "CODEC_ID_ADPCM_IMA_OKI", + "CODEC_ID_ADPCM_DTK", + "CODEC_ID_ADPCM_IMA_RAD", + "CODEC_ID_ADPCM_G726LE", + "CODEC_ID_ADPCM_THP_LE", + "CODEC_ID_ADPCM_PSX", + "CODEC_ID_ADPCM_AICA", + "CODEC_ID_ADPCM_IMA_DAT4", + "CODEC_ID_ADPCM_MTAF", + "CODEC_ID_ADPCM_VIMA", + "CODEC_ID_AMR_NB", + "CODEC_ID_AMR_WB", + "CODEC_ID_RA_144", + "CODEC_ID_RA_288", + "CODEC_ID_ROQ_DPCM", + "CODEC_ID_INTERPLAY_DPCM", + "CODEC_ID_XAN_DPCM", + "CODEC_ID_SOL_DPCM", + "CODEC_ID_GREMLIN_DPCM", + "CODEC_ID_SDX2_DPCM", + "CODEC_ID_MP2", + "CODEC_ID_MP3", + "CODEC_ID_AAC", + "CODEC_ID_MPEG4AAC_DEPRECATED", + "CODEC_ID_AC3", + "CODEC_ID_DTS", + "CODEC_ID_VORBIS", + "CODEC_ID_DVAUDIO", + "CODEC_ID_WMAV1", + "CODEC_ID_WMAV2", + "CODEC_ID_MACE3", + "CODEC_ID_MACE6", + "CODEC_ID_VMDAUDIO", + "CODEC_ID_SONIC", + "CODEC_ID_SONIC_LS", + "CODEC_ID_FLAC", + "CODEC_ID_MP3ADU", + "CODEC_ID_MP3ON4", + "CODEC_ID_SHORTEN", + "CODEC_ID_ALAC", + "CODEC_ID_WESTWOOD_SND1", + "CODEC_ID_GSM", + "CODEC_ID_QDM2", + "CODEC_ID_COOK", + "CODEC_ID_TRUESPEECH", + "CODEC_ID_TTA", + "CODEC_ID_SMACKAUDIO", + "CODEC_ID_QCELP", + "CODEC_ID_WAVPACK", + "CODEC_ID_DSICINAUDIO", + "CODEC_ID_ASAO", + "CODEC_ID_NELLYMOSER", + "CODEC_ID_WMAVOICE", + "CODEC_ID_WMAPRO", + "CODEC_ID_WMALOSSLESS", + "CODEC_ID_IMC", + "CODEC_ID_MUSEPACK7", + "CODEC_ID_MLP", + "CODEC_ID_GSM_MS", + "CODEC_ID_ATRAC3", + "CODEC_ID_VOXWARE", + "CODEC_ID_APE", + "CODEC_ID_MUSEPACK8", + "CODEC_ID_SPEEX", + "CODEC_ID_ATRAC3P", + "CODEC_ID_EAC3", + "CODEC_ID_SIPR", + "CODEC_ID_MP1", + "CODEC_ID_TWINVQ", + "CODEC_ID_TRUEHD", + "CODEC_ID_MP4ALS", + "CODEC_ID_ATRAC1", + "CODEC_ID_BINKAUDIO_RDFT", + "CODEC_ID_BINKAUDIO_DCT", + "CODEC_ID_AAC_LATM", + "CODEC_ID_QDMC", + "CODEC_ID_CELT", + "CODEC_ID_G723_1", + "CODEC_ID_G729", + "CODEC_ID_BMV_AUDIO", + "CODEC_ID_RALF", + "CODEC_ID_IAC", + "CODEC_ID_ILBC", + "CODEC_ID_FFWAVESYNTH", + "CODEC_ID_8SVX_RAW", + "CODEC_ID_PAF_AUDIO", + "CODEC_ID_OPUS", + "CODEC_ID_ATRAC3AL", + "CODEC_ID_ATRAC3PAL", + "CODEC_ID_DOLBY_E", + "CODEC_ID_DSD_LSBF", + "CODEC_ID_DSD_MSBF", + "CODEC_ID_DSD_LSBF_PLANAR", + "CODEC_ID_DSD_MSBF_PLANAR", + "CODEC_ID_DSS_SP", + "CODEC_ID_DST", + "CODEC_ID_EVRC", + "CODEC_ID_INTERPLAY_ACM", + "CODEC_ID_METASOUND", + "CODEC_ID_ON2AVC", + "CODEC_ID_TAK", + "CODEC_ID_XMA1", + "CODEC_ID_XMA2", + "CODEC_ID_COMFORT_NOISE", + "CODEC_ID_APTX", + "CODEC_ID_APTX_HD", + "CODEC_ID_SBC", + "CODEC_ID_ATRAC9", + "CODEC_ID_CODEC2", + "CODEC_ID_OGGTHEORA_DEPRECATED", + "CODEC_ID_DVD_SUBTITLE", + "CODEC_ID_DVB_SUBTITLE", + "CODEC_ID_TEXT", + "CODEC_ID_XSUB", + "CODEC_ID_SSA", + "CODEC_ID_MOV_TEXT", + "CODEC_ID_HDMV_PGS_SUBTITLE", + "CODEC_ID_DVB_TELETEXT", + "CODEC_ID_SRT", + "CODEC_ID_MICRODVD", + "CODEC_ID_EIA_608", + "CODEC_ID_JACOSUB", + "CODEC_ID_SAMI", + "CODEC_ID_REALTEXT", + "CODEC_ID_SUBVIEWER", + "CODEC_ID_SUBRIP", + "CODEC_ID_WEBVTT", + "CODEC_ID_ASS", + "CODEC_ID_MPL2", + "CODEC_ID_PJS", + "CODEC_ID_STL", + "CODEC_ID_SUBVIEWER1", + "CODEC_ID_VPLAYER", + "CODEC_ID_TTML", + "CODEC_ID_TTF", + "CODEC_ID_BINTEXT", + "CODEC_ID_XBIN", + "CODEC_ID_IDF", + "CODEC_ID_OTF", + "CODEC_ID_PROBE", + "CODEC_ID_MPEG2TS", + "CODEC_ID_MPEG4SYSTEMS", + "CODEC_ID_FFMETADATA", + "CODEC_ID_FFMPEG_OUT_OF_SYNC", + "CODEC_ID_WRAPPED_AVFRAME", + "CODEC_ID_CAMM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_MPEG4", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "moved to audio codecs section in upstream", + "moved to audio codecs section in upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various pcm \"codecs\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various adpcm codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AMR", + "", + "RealAudio codecs", + "", + "various DPCM codecs", + "", + "", + "", + "", + "", + "audio codecs", + "preferred ID for MPEG Audio layer 1, 2 or 3", + "", + "Use CODEC_ID_AAC instead", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Not in ffmpeg as of rev 20544.", + "Start of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "End of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Removed in ffmpeg rev 5877.", + "subtitle codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "other specific kind of codecs (generally used for attachments)", + "", + "", + "", + "", + "\u003c codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it", + "_FAKE_ codec to indicate a raw MPEG2 transport stream (only used by libavformat)", + "_FAKE_ codec to indicate a MPEG-4 Systems stream (only used by libavformat)", + "Dummy codec for streams containing only metadata information.", + "this one indicates an error in the mapping between this enum and libavcodec's", + "AVFrames wrapped in AVPacket", + "Camera motion metadata (http://go/wally-format)" + ], + "type": "string" + }, + "codecString": { + "description": "RFC6381 Codec string.", + "type": "string" + }, + "contentType": { + "description": "Specifies the content_type of the audio stream as given in the metadata.", + "type": "string" + }, + "decodeOffset": { + "description": "The bytes offset of the end of the first decodable packet.", + "format": "int64", + "type": "string" + }, + "endTimestamp": { + "format": "int64", + "type": "string" + }, + "frameSize": { + "description": "audio frame size", + "format": "int64", + "type": "string" + }, + "language": { + "description": "Specifies the language of the audio stream as given in the metadata.", + "type": "string" + }, + "length": { + "description": "audio length in seconds Note that when the VSI is from users videos, it is not guaranteed to be the same as transcode lengths and it could be 0 when the full VSI cannot compute the length from the source header and timestamps (for example when header and timestamps are too broken).", + "format": "double", + "type": "number" + }, + "metadata": { + "description": "Metadata for audio elementary stream;", + "items": { + "$ref": "VideoClipInfo" + }, + "type": "array" + }, + "numberOfFrames": { + "description": "Number of audio frames.", + "format": "int64", + "type": "string" + }, + "profile": { + "enum": [ + "PROFILE_UNKNOWN", + "PROFILE_AAC_MAIN", + "PROFILE_AAC_LOW", + "PROFILE_AAC_SSR", + "PROFILE_AAC_LTP", + "PROFILE_AAC_HE", + "PROFILE_AAC_HE_V2", + "PROFILE_AAC_LD", + "PROFILE_AAC_ELD", + "PROFILE_AVC_CONSTRAINED", + "PROFILE_AVC_INTRA", + "PROFILE_AVC_BASELINE", + "PROFILE_AVC_CONSTRAINED_BASELINE", + "PROFILE_AVC_MAIN", + "PROFILE_AVC_EXTENDED", + "PROFILE_AVC_HIGH", + "PROFILE_AVC_HIGH10", + "PROFILE_AVC_HIGH10_INTRA", + "PROFILE_AVC_HIGH422", + "PROFILE_AVC_HIGH422_INTRA", + "PROFILE_AVC_HIGH444", + "PROFILE_HIGH444_PREDICTIVE", + "PROFILE_AVC_HIGH444_INTRA", + "PROFILE_AVC_CAVLC444", + "PROFILE_VP9_0", + "PROFILE_VP9_1", + "PROFILE_VP9_2", + "PROFILE_VP9_3", + "PROFILE_HEVC_MAIN", + "PROFILE_HEVC_MAIN_10", + "PROFILE_HEVC_MAIN_STILL_PICTURE", + "PROFILE_HEVC_REXT", + "PROFILE_DOVI_5" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "(1 \u003c\u003c 8) constrained mode set bit", + "(1 \u003c\u003c 11) intra mode set bit", + "", + "PROFILE_AVC_CONSTRAINED_BASELINE = PROFILE_AVC_BASELINE | PROFILE_AVC_CONSTRAINED", + "", + "", + "", + "", + "PROFILE_AVC_HIGH10_INTRA = PROFILE_AVC_HIGH10 | PROFILE_AVC_INTRA", + "", + "PROFILE_AVC_HIGH422_INTRA = PROFILE_AVC_HIGH422 | PROFILE_AVC_INTRA", + "", + "", + "PROFILE_AVC_HIGH444_INTRA = PROFILE_AVC_HIGH444 | PROFILE_AVC_INTRA", + "", + "Since profile IDs might collide from different codecs, the profile IDs listed below are not identical to the numeric numbers defined in the spec due to collision. Next Profile ID: 10008 PROFILES for VP9. 0", + "1", + "2", + "3", + "1", + "2", + "3", + "4", + "DOVI Profile 5 can only be played as Dolby Vision so it has its own Profile." + ], + "type": "string" + }, + "sampleRate": { + "description": "audio sample rate", + "format": "int64", + "type": "string" + }, + "sampleSize": { + "description": "Number of meaningful bits per decoded audio sample. This is an implicit conceptual meaning. This is *NOT* the same as ffmpeg's internal sample format that is used when actually decoding with ffmpeg.", + "format": "int32", + "type": "integer" + }, + "startTimestamp": { + "description": "Start/end timestamps of audio in ms.", + "format": "int64", + "type": "string" + }, + "streamCodecTag": { + "format": "int64", + "type": "string" + }, + "streamIndex": { + "description": "Index of the stream in the file. it is 0 based.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoDataStream": { + "description": "Data streams refer to additional data separate from audio and video streams For example: camera motion metadata (see http://go/wally-format) Available tags: 4+", + "id": "VideoVideoStreamInfoDataStream", + "properties": { + "codecFourcc": { + "type": "string" + }, + "codecId": { + "description": "Codec information", + "enum": [ + "CODEC_ID_NONE", + "CODEC_ID_MPEG1VIDEO", + "CODEC_ID_MPEG2VIDEO", + "CODEC_ID_MPEG2VIDEO_XVMC", + "CODEC_ID_H261", + "CODEC_ID_H263", + "CODEC_ID_RV10", + "CODEC_ID_RV20", + "CODEC_ID_MJPEG", + "CODEC_ID_MJPEGB", + "CODEC_ID_LJPEG", + "CODEC_ID_SP5X", + "CODEC_ID_JPEGLS", + "CODEC_ID_MPEG4", + "CODEC_ID_RAWVIDEO", + "CODEC_ID_MSMPEG4V1", + "CODEC_ID_MSMPEG4V2", + "CODEC_ID_MSMPEG4V3", + "CODEC_ID_WMV1", + "CODEC_ID_WMV2", + "CODEC_ID_H263P", + "CODEC_ID_H263I", + "CODEC_ID_FLV1", + "CODEC_ID_SVQ1", + "CODEC_ID_SVQ3", + "CODEC_ID_DVVIDEO", + "CODEC_ID_HUFFYUV", + "CODEC_ID_CYUV", + "CODEC_ID_H264", + "CODEC_ID_INDEO3", + "CODEC_ID_VP3", + "CODEC_ID_THEORA", + "CODEC_ID_ASV1", + "CODEC_ID_ASV2", + "CODEC_ID_FFV1", + "CODEC_ID_4XM", + "CODEC_ID_VCR1", + "CODEC_ID_CLJR", + "CODEC_ID_MDEC", + "CODEC_ID_ROQ", + "CODEC_ID_INTERPLAY_VIDEO", + "CODEC_ID_XAN_WC3", + "CODEC_ID_XAN_WC4", + "CODEC_ID_RPZA", + "CODEC_ID_CINEPAK", + "CODEC_ID_WS_VQA", + "CODEC_ID_MSRLE", + "CODEC_ID_MSVIDEO1", + "CODEC_ID_IDCIN", + "CODEC_ID_8BPS", + "CODEC_ID_SMC", + "CODEC_ID_FLIC", + "CODEC_ID_TRUEMOTION1", + "CODEC_ID_VMDVIDEO", + "CODEC_ID_MSZH", + "CODEC_ID_ZLIB", + "CODEC_ID_QTRLE", + "CODEC_ID_SNOW", + "CODEC_ID_TSCC", + "CODEC_ID_ULTI", + "CODEC_ID_QDRAW", + "CODEC_ID_VIXL", + "CODEC_ID_QPEG", + "CODEC_ID_XVID", + "CODEC_ID_PNG", + "CODEC_ID_PPM", + "CODEC_ID_PBM", + "CODEC_ID_PGM", + "CODEC_ID_PGMYUV", + "CODEC_ID_PAM", + "CODEC_ID_FFVHUFF", + "CODEC_ID_RV30", + "CODEC_ID_RV40", + "CODEC_ID_VC1", + "CODEC_ID_WMV3", + "CODEC_ID_LOCO", + "CODEC_ID_WNV1", + "CODEC_ID_AASC", + "CODEC_ID_INDEO2", + "CODEC_ID_FRAPS", + "CODEC_ID_TRUEMOTION2", + "CODEC_ID_BMP", + "CODEC_ID_CSCD", + "CODEC_ID_MMVIDEO", + "CODEC_ID_ZMBV", + "CODEC_ID_AVS", + "CODEC_ID_SMACKVIDEO", + "CODEC_ID_NUV", + "CODEC_ID_KMVC", + "CODEC_ID_FLASHSV", + "CODEC_ID_CAVS", + "CODEC_ID_JPEG2000", + "CODEC_ID_VMNC", + "CODEC_ID_VP5", + "CODEC_ID_VP6", + "CODEC_ID_VP6F", + "CODEC_ID_TARGA", + "CODEC_ID_DSICINVIDEO", + "CODEC_ID_TIERTEXSEQVIDEO", + "CODEC_ID_TIFF", + "CODEC_ID_GIF", + "CODEC_ID_FFH264", + "CODEC_ID_DXA", + "CODEC_ID_DNXHD", + "CODEC_ID_THP", + "CODEC_ID_SGI", + "CODEC_ID_C93", + "CODEC_ID_BETHSOFTVID", + "CODEC_ID_PTX", + "CODEC_ID_TXD", + "CODEC_ID_VP6A", + "CODEC_ID_AMV", + "CODEC_ID_VB", + "CODEC_ID_PCX", + "CODEC_ID_SUNRAST", + "CODEC_ID_INDEO4", + "CODEC_ID_INDEO5", + "CODEC_ID_MIMIC", + "CODEC_ID_RL2", + "CODEC_ID_8SVX_EXP", + "CODEC_ID_8SVX_FIB", + "CODEC_ID_ESCAPE124", + "CODEC_ID_DIRAC", + "CODEC_ID_BFI", + "CODEC_ID_CMV", + "CODEC_ID_MOTIONPIXELS", + "CODEC_ID_TGV", + "CODEC_ID_TGQ", + "CODEC_ID_TQI", + "CODEC_ID_AURA", + "CODEC_ID_AURA2", + "CODEC_ID_V210X", + "CODEC_ID_TMV", + "CODEC_ID_V210", + "CODEC_ID_DPX", + "CODEC_ID_MAD", + "CODEC_ID_FRWU", + "CODEC_ID_VP8", + "CODEC_ID_APPLE_PRORES_NQ", + "CODEC_ID_APPLE_PRORES_HQ", + "CODEC_ID_FLASHSV2", + "CODEC_ID_CDGRAPHICS", + "CODEC_ID_R210", + "CODEC_ID_ANM", + "CODEC_ID_BINKVIDEO", + "CODEC_ID_IFF_ILBM", + "CODEC_ID_IFF_BYTERUN1", + "CODEC_ID_KGV1", + "CODEC_ID_YOP", + "CODEC_ID_PICTOR", + "CODEC_ID_APPLE_PRORES_LT", + "CODEC_ID_APPLE_PRORES_PROXY", + "CODEC_ID_APPLE_PRORES_4444", + "CODEC_ID_APPLE_PIXLET", + "CODEC_ID_G2M", + "CODEC_ID_PRORES", + "CODEC_ID_ANSI", + "CODEC_ID_A64_MULTI", + "CODEC_ID_A64_MULTI5", + "CODEC_ID_R10K", + "CODEC_ID_MXPEG", + "CODEC_ID_LAGARITH", + "CODEC_ID_JV", + "CODEC_ID_DFA", + "CODEC_ID_WMV3IMAGE", + "CODEC_ID_VC1IMAGE", + "CODEC_ID_UTVIDEO", + "CODEC_ID_BMV_VIDEO", + "CODEC_ID_VBLE", + "CODEC_ID_DXTORY", + "CODEC_ID_V410", + "CODEC_ID_XWD", + "CODEC_ID_CDXL", + "CODEC_ID_XBM", + "CODEC_ID_ZEROCODEC", + "CODEC_ID_MSS1", + "CODEC_ID_MSA1", + "CODEC_ID_TSCC2", + "CODEC_ID_MTS2", + "CODEC_ID_CLLC", + "CODEC_ID_MSS2", + "CODEC_ID_Y41P", + "CODEC_ID_ESCAPE130", + "CODEC_ID_EXR", + "CODEC_ID_AVRP", + "CODEC_ID_AVUI", + "CODEC_ID_AYUV", + "CODEC_ID_V308", + "CODEC_ID_V408", + "CODEC_ID_YUV4", + "CODEC_ID_SANM", + "CODEC_ID_PAF_VIDEO", + "CODEC_ID_AVRN", + "CODEC_ID_CPIA", + "CODEC_ID_VP9", + "CODEC_ID_H265", + "CODEC_ID_CFHD", + "CODEC_ID_AV1", + "CODEC_ID_AIC", + "CODEC_ID_ALIAS_PIX", + "CODEC_ID_APNG", + "CODEC_ID_BRENDER_PIX", + "CODEC_ID_CLEARVIDEO", + "CODEC_ID_DDS", + "CODEC_ID_DXV", + "CODEC_ID_FIC", + "CODEC_ID_FITS", + "CODEC_ID_FMVC", + "CODEC_ID_GDV", + "CODEC_ID_HAP", + "CODEC_ID_HNM4_VIDEO", + "CODEC_ID_HQ_HQA", + "CODEC_ID_HQX", + "CODEC_ID_M101", + "CODEC_ID_MAGICYUV", + "CODEC_ID_MSCC", + "CODEC_ID_MVC1", + "CODEC_ID_MVC2", + "CODEC_ID_PIXLET", + "CODEC_ID_PSD", + "CODEC_ID_RSCC", + "CODEC_ID_SCPR", + "CODEC_ID_SCREENPRESSO", + "CODEC_ID_SGIRLE", + "CODEC_ID_SHEERVIDEO", + "CODEC_ID_SMVJPEG", + "CODEC_ID_SPEEDHQ", + "CODEC_ID_SRGC", + "CODEC_ID_TARGA_Y216", + "CODEC_ID_TDSC", + "CODEC_ID_TRUEMOTION2RT", + "CODEC_ID_VP7", + "CODEC_ID_BITPACKED", + "CODEC_ID_WEBP", + "CODEC_ID_XFACE", + "CODEC_ID_XPM", + "CODEC_ID_YLC", + "CODEC_ID_012V", + "CODEC_ID_AVS2", + "CODEC_ID_IMM4", + "CODEC_ID_MWSC", + "CODEC_ID_PROSUMER", + "CODEC_ID_RASC", + "CODEC_ID_WCMV", + "CODEC_ID_UNKNOWN", + "CODEC_ID_PCM_S16LE", + "CODEC_ID_PCM_S16BE", + "CODEC_ID_PCM_U16LE", + "CODEC_ID_PCM_U16BE", + "CODEC_ID_PCM_S8", + "CODEC_ID_PCM_U8", + "CODEC_ID_PCM_MULAW", + "CODEC_ID_PCM_ALAW", + "CODEC_ID_PCM_S32LE", + "CODEC_ID_PCM_S32BE", + "CODEC_ID_PCM_U32LE", + "CODEC_ID_PCM_U32BE", + "CODEC_ID_PCM_S24LE", + "CODEC_ID_PCM_S24BE", + "CODEC_ID_PCM_U24LE", + "CODEC_ID_PCM_U24BE", + "CODEC_ID_PCM_S24DAUD", + "CODEC_ID_PCM_ZORK", + "CODEC_ID_PCM_S16LE_PLANAR", + "CODEC_ID_PCM_DVD", + "CODEC_ID_PCM_F32BE", + "CODEC_ID_PCM_F32LE", + "CODEC_ID_PCM_F64BE", + "CODEC_ID_PCM_F64LE", + "CODEC_ID_PCM_BLURAY", + "CODEC_ID_PCM_LXF", + "CODEC_ID_S302M", + "CODEC_ID_PCM_S8_PLANAR", + "CODEC_ID_PCM_S24LE_PLANAR", + "CODEC_ID_PCM_S32LE_PLANAR", + "CODEC_ID_PCM_S16BE_PLANAR", + "CODEC_ID_PCM_S64LE", + "CODEC_ID_PCM_S64BE", + "CODEC_ID_PCM_F16LE", + "CODEC_ID_PCM_F24LE", + "CODEC_ID_ADPCM_IMA_QT", + "CODEC_ID_ADPCM_IMA_WAV", + "CODEC_ID_ADPCM_IMA_DK3", + "CODEC_ID_ADPCM_IMA_DK4", + "CODEC_ID_ADPCM_IMA_WS", + "CODEC_ID_ADPCM_IMA_SMJPEG", + "CODEC_ID_ADPCM_MS", + "CODEC_ID_ADPCM_4XM", + "CODEC_ID_ADPCM_XA", + "CODEC_ID_ADPCM_ADX", + "CODEC_ID_ADPCM_EA", + "CODEC_ID_ADPCM_G726", + "CODEC_ID_ADPCM_CT", + "CODEC_ID_ADPCM_SWF", + "CODEC_ID_ADPCM_YAMAHA", + "CODEC_ID_ADPCM_SBPRO_4", + "CODEC_ID_ADPCM_SBPRO_3", + "CODEC_ID_ADPCM_SBPRO_2", + "CODEC_ID_ADPCM_THP", + "CODEC_ID_ADPCM_IMA_AMV", + "CODEC_ID_ADPCM_EA_R1", + "CODEC_ID_ADPCM_EA_R3", + "CODEC_ID_ADPCM_EA_R2", + "CODEC_ID_ADPCM_IMA_EA_SEAD", + "CODEC_ID_ADPCM_IMA_EA_EACS", + "CODEC_ID_ADPCM_EA_XAS", + "CODEC_ID_ADPCM_EA_MAXIS_XA", + "CODEC_ID_ADPCM_IMA_ISS", + "CODEC_ID_ADPCM_G722", + "CODEC_ID_ADPCM_IMA_APC", + "CODEC_ID_VIMA", + "CODEC_ID_ADPCM_AFC", + "CODEC_ID_ADPCM_IMA_OKI", + "CODEC_ID_ADPCM_DTK", + "CODEC_ID_ADPCM_IMA_RAD", + "CODEC_ID_ADPCM_G726LE", + "CODEC_ID_ADPCM_THP_LE", + "CODEC_ID_ADPCM_PSX", + "CODEC_ID_ADPCM_AICA", + "CODEC_ID_ADPCM_IMA_DAT4", + "CODEC_ID_ADPCM_MTAF", + "CODEC_ID_ADPCM_VIMA", + "CODEC_ID_AMR_NB", + "CODEC_ID_AMR_WB", + "CODEC_ID_RA_144", + "CODEC_ID_RA_288", + "CODEC_ID_ROQ_DPCM", + "CODEC_ID_INTERPLAY_DPCM", + "CODEC_ID_XAN_DPCM", + "CODEC_ID_SOL_DPCM", + "CODEC_ID_GREMLIN_DPCM", + "CODEC_ID_SDX2_DPCM", + "CODEC_ID_MP2", + "CODEC_ID_MP3", + "CODEC_ID_AAC", + "CODEC_ID_MPEG4AAC_DEPRECATED", + "CODEC_ID_AC3", + "CODEC_ID_DTS", + "CODEC_ID_VORBIS", + "CODEC_ID_DVAUDIO", + "CODEC_ID_WMAV1", + "CODEC_ID_WMAV2", + "CODEC_ID_MACE3", + "CODEC_ID_MACE6", + "CODEC_ID_VMDAUDIO", + "CODEC_ID_SONIC", + "CODEC_ID_SONIC_LS", + "CODEC_ID_FLAC", + "CODEC_ID_MP3ADU", + "CODEC_ID_MP3ON4", + "CODEC_ID_SHORTEN", + "CODEC_ID_ALAC", + "CODEC_ID_WESTWOOD_SND1", + "CODEC_ID_GSM", + "CODEC_ID_QDM2", + "CODEC_ID_COOK", + "CODEC_ID_TRUESPEECH", + "CODEC_ID_TTA", + "CODEC_ID_SMACKAUDIO", + "CODEC_ID_QCELP", + "CODEC_ID_WAVPACK", + "CODEC_ID_DSICINAUDIO", + "CODEC_ID_ASAO", + "CODEC_ID_NELLYMOSER", + "CODEC_ID_WMAVOICE", + "CODEC_ID_WMAPRO", + "CODEC_ID_WMALOSSLESS", + "CODEC_ID_IMC", + "CODEC_ID_MUSEPACK7", + "CODEC_ID_MLP", + "CODEC_ID_GSM_MS", + "CODEC_ID_ATRAC3", + "CODEC_ID_VOXWARE", + "CODEC_ID_APE", + "CODEC_ID_MUSEPACK8", + "CODEC_ID_SPEEX", + "CODEC_ID_ATRAC3P", + "CODEC_ID_EAC3", + "CODEC_ID_SIPR", + "CODEC_ID_MP1", + "CODEC_ID_TWINVQ", + "CODEC_ID_TRUEHD", + "CODEC_ID_MP4ALS", + "CODEC_ID_ATRAC1", + "CODEC_ID_BINKAUDIO_RDFT", + "CODEC_ID_BINKAUDIO_DCT", + "CODEC_ID_AAC_LATM", + "CODEC_ID_QDMC", + "CODEC_ID_CELT", + "CODEC_ID_G723_1", + "CODEC_ID_G729", + "CODEC_ID_BMV_AUDIO", + "CODEC_ID_RALF", + "CODEC_ID_IAC", + "CODEC_ID_ILBC", + "CODEC_ID_FFWAVESYNTH", + "CODEC_ID_8SVX_RAW", + "CODEC_ID_PAF_AUDIO", + "CODEC_ID_OPUS", + "CODEC_ID_ATRAC3AL", + "CODEC_ID_ATRAC3PAL", + "CODEC_ID_DOLBY_E", + "CODEC_ID_DSD_LSBF", + "CODEC_ID_DSD_MSBF", + "CODEC_ID_DSD_LSBF_PLANAR", + "CODEC_ID_DSD_MSBF_PLANAR", + "CODEC_ID_DSS_SP", + "CODEC_ID_DST", + "CODEC_ID_EVRC", + "CODEC_ID_INTERPLAY_ACM", + "CODEC_ID_METASOUND", + "CODEC_ID_ON2AVC", + "CODEC_ID_TAK", + "CODEC_ID_XMA1", + "CODEC_ID_XMA2", + "CODEC_ID_COMFORT_NOISE", + "CODEC_ID_APTX", + "CODEC_ID_APTX_HD", + "CODEC_ID_SBC", + "CODEC_ID_ATRAC9", + "CODEC_ID_CODEC2", + "CODEC_ID_OGGTHEORA_DEPRECATED", + "CODEC_ID_DVD_SUBTITLE", + "CODEC_ID_DVB_SUBTITLE", + "CODEC_ID_TEXT", + "CODEC_ID_XSUB", + "CODEC_ID_SSA", + "CODEC_ID_MOV_TEXT", + "CODEC_ID_HDMV_PGS_SUBTITLE", + "CODEC_ID_DVB_TELETEXT", + "CODEC_ID_SRT", + "CODEC_ID_MICRODVD", + "CODEC_ID_EIA_608", + "CODEC_ID_JACOSUB", + "CODEC_ID_SAMI", + "CODEC_ID_REALTEXT", + "CODEC_ID_SUBVIEWER", + "CODEC_ID_SUBRIP", + "CODEC_ID_WEBVTT", + "CODEC_ID_ASS", + "CODEC_ID_MPL2", + "CODEC_ID_PJS", + "CODEC_ID_STL", + "CODEC_ID_SUBVIEWER1", + "CODEC_ID_VPLAYER", + "CODEC_ID_TTML", + "CODEC_ID_TTF", + "CODEC_ID_BINTEXT", + "CODEC_ID_XBIN", + "CODEC_ID_IDF", + "CODEC_ID_OTF", + "CODEC_ID_PROBE", + "CODEC_ID_MPEG2TS", + "CODEC_ID_MPEG4SYSTEMS", + "CODEC_ID_FFMETADATA", + "CODEC_ID_FFMPEG_OUT_OF_SYNC", + "CODEC_ID_WRAPPED_AVFRAME", + "CODEC_ID_CAMM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_MPEG4", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "moved to audio codecs section in upstream", + "moved to audio codecs section in upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various pcm \"codecs\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various adpcm codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AMR", + "", + "RealAudio codecs", + "", + "various DPCM codecs", + "", + "", + "", + "", + "", + "audio codecs", + "preferred ID for MPEG Audio layer 1, 2 or 3", + "", + "Use CODEC_ID_AAC instead", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Not in ffmpeg as of rev 20544.", + "Start of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "End of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Removed in ffmpeg rev 5877.", + "subtitle codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "other specific kind of codecs (generally used for attachments)", + "", + "", + "", + "", + "\u003c codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it", + "_FAKE_ codec to indicate a raw MPEG2 transport stream (only used by libavformat)", + "_FAKE_ codec to indicate a MPEG-4 Systems stream (only used by libavformat)", + "Dummy codec for streams containing only metadata information.", + "this one indicates an error in the mapping between this enum and libavcodec's", + "AVFrames wrapped in AVPacket", + "Camera motion metadata (http://go/wally-format)" + ], + "type": "string" + }, + "streamCodecTag": { + "format": "int64", + "type": "string" + }, + "streamIndex": { + "description": "Index of the stream in the file", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoMetadata": { + "id": "VideoVideoStreamInfoMetadata", + "properties": { + "luts": { + "$ref": "VideoVideoStreamInfoMetadataLutAttachments" + }, + "videoFpa": { + "$ref": "VideoFileFramePackingArrangement", + "description": "Information on Frame Packing arrangement" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoMetadataLutAttachments": { + "description": "An attached 3D look up table", + "id": "VideoVideoStreamInfoMetadataLutAttachments", + "properties": { + "lut": { + "items": { + "$ref": "VideoVideoStreamInfoMetadataLutAttachmentsLut3D" + }, + "type": "array" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoMetadataLutAttachmentsLut3D": { + "description": "Description and encoding of a 3d lut.", + "id": "VideoVideoStreamInfoMetadataLutAttachmentsLut3D", + "properties": { + "data": { + "description": "Lut data, sanitized and encoded in google's binary coded form of 3D look-up tables.", + "format": "byte", + "type": "string" + }, + "fileName": { + "description": "Original file name of the lut (present in the original file)", + "type": "string" + }, + "size": { + "description": "The size (in each dimension) of the lut. For a 3D cube of size NxNxN, this will be N. If the value is -1, then the file was determined to be invalid. This is useful for logging files where the input could not be parsed, and is useful for to indicate info of the 3D lut without having to decode/inspect the binary data.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoTimedTextStream": { + "description": "Timed text streams refer to the streams that are separated from audio and video streams. Closed caption streams embedded in video streams (e.g. MPEG-2 - Line 21) do not belong here.", + "id": "VideoVideoStreamInfoTimedTextStream", + "properties": { + "codecId": { + "description": "Codec information.", + "enum": [ + "CODEC_ID_NONE", + "CODEC_ID_MPEG1VIDEO", + "CODEC_ID_MPEG2VIDEO", + "CODEC_ID_MPEG2VIDEO_XVMC", + "CODEC_ID_H261", + "CODEC_ID_H263", + "CODEC_ID_RV10", + "CODEC_ID_RV20", + "CODEC_ID_MJPEG", + "CODEC_ID_MJPEGB", + "CODEC_ID_LJPEG", + "CODEC_ID_SP5X", + "CODEC_ID_JPEGLS", + "CODEC_ID_MPEG4", + "CODEC_ID_RAWVIDEO", + "CODEC_ID_MSMPEG4V1", + "CODEC_ID_MSMPEG4V2", + "CODEC_ID_MSMPEG4V3", + "CODEC_ID_WMV1", + "CODEC_ID_WMV2", + "CODEC_ID_H263P", + "CODEC_ID_H263I", + "CODEC_ID_FLV1", + "CODEC_ID_SVQ1", + "CODEC_ID_SVQ3", + "CODEC_ID_DVVIDEO", + "CODEC_ID_HUFFYUV", + "CODEC_ID_CYUV", + "CODEC_ID_H264", + "CODEC_ID_INDEO3", + "CODEC_ID_VP3", + "CODEC_ID_THEORA", + "CODEC_ID_ASV1", + "CODEC_ID_ASV2", + "CODEC_ID_FFV1", + "CODEC_ID_4XM", + "CODEC_ID_VCR1", + "CODEC_ID_CLJR", + "CODEC_ID_MDEC", + "CODEC_ID_ROQ", + "CODEC_ID_INTERPLAY_VIDEO", + "CODEC_ID_XAN_WC3", + "CODEC_ID_XAN_WC4", + "CODEC_ID_RPZA", + "CODEC_ID_CINEPAK", + "CODEC_ID_WS_VQA", + "CODEC_ID_MSRLE", + "CODEC_ID_MSVIDEO1", + "CODEC_ID_IDCIN", + "CODEC_ID_8BPS", + "CODEC_ID_SMC", + "CODEC_ID_FLIC", + "CODEC_ID_TRUEMOTION1", + "CODEC_ID_VMDVIDEO", + "CODEC_ID_MSZH", + "CODEC_ID_ZLIB", + "CODEC_ID_QTRLE", + "CODEC_ID_SNOW", + "CODEC_ID_TSCC", + "CODEC_ID_ULTI", + "CODEC_ID_QDRAW", + "CODEC_ID_VIXL", + "CODEC_ID_QPEG", + "CODEC_ID_XVID", + "CODEC_ID_PNG", + "CODEC_ID_PPM", + "CODEC_ID_PBM", + "CODEC_ID_PGM", + "CODEC_ID_PGMYUV", + "CODEC_ID_PAM", + "CODEC_ID_FFVHUFF", + "CODEC_ID_RV30", + "CODEC_ID_RV40", + "CODEC_ID_VC1", + "CODEC_ID_WMV3", + "CODEC_ID_LOCO", + "CODEC_ID_WNV1", + "CODEC_ID_AASC", + "CODEC_ID_INDEO2", + "CODEC_ID_FRAPS", + "CODEC_ID_TRUEMOTION2", + "CODEC_ID_BMP", + "CODEC_ID_CSCD", + "CODEC_ID_MMVIDEO", + "CODEC_ID_ZMBV", + "CODEC_ID_AVS", + "CODEC_ID_SMACKVIDEO", + "CODEC_ID_NUV", + "CODEC_ID_KMVC", + "CODEC_ID_FLASHSV", + "CODEC_ID_CAVS", + "CODEC_ID_JPEG2000", + "CODEC_ID_VMNC", + "CODEC_ID_VP5", + "CODEC_ID_VP6", + "CODEC_ID_VP6F", + "CODEC_ID_TARGA", + "CODEC_ID_DSICINVIDEO", + "CODEC_ID_TIERTEXSEQVIDEO", + "CODEC_ID_TIFF", + "CODEC_ID_GIF", + "CODEC_ID_FFH264", + "CODEC_ID_DXA", + "CODEC_ID_DNXHD", + "CODEC_ID_THP", + "CODEC_ID_SGI", + "CODEC_ID_C93", + "CODEC_ID_BETHSOFTVID", + "CODEC_ID_PTX", + "CODEC_ID_TXD", + "CODEC_ID_VP6A", + "CODEC_ID_AMV", + "CODEC_ID_VB", + "CODEC_ID_PCX", + "CODEC_ID_SUNRAST", + "CODEC_ID_INDEO4", + "CODEC_ID_INDEO5", + "CODEC_ID_MIMIC", + "CODEC_ID_RL2", + "CODEC_ID_8SVX_EXP", + "CODEC_ID_8SVX_FIB", + "CODEC_ID_ESCAPE124", + "CODEC_ID_DIRAC", + "CODEC_ID_BFI", + "CODEC_ID_CMV", + "CODEC_ID_MOTIONPIXELS", + "CODEC_ID_TGV", + "CODEC_ID_TGQ", + "CODEC_ID_TQI", + "CODEC_ID_AURA", + "CODEC_ID_AURA2", + "CODEC_ID_V210X", + "CODEC_ID_TMV", + "CODEC_ID_V210", + "CODEC_ID_DPX", + "CODEC_ID_MAD", + "CODEC_ID_FRWU", + "CODEC_ID_VP8", + "CODEC_ID_APPLE_PRORES_NQ", + "CODEC_ID_APPLE_PRORES_HQ", + "CODEC_ID_FLASHSV2", + "CODEC_ID_CDGRAPHICS", + "CODEC_ID_R210", + "CODEC_ID_ANM", + "CODEC_ID_BINKVIDEO", + "CODEC_ID_IFF_ILBM", + "CODEC_ID_IFF_BYTERUN1", + "CODEC_ID_KGV1", + "CODEC_ID_YOP", + "CODEC_ID_PICTOR", + "CODEC_ID_APPLE_PRORES_LT", + "CODEC_ID_APPLE_PRORES_PROXY", + "CODEC_ID_APPLE_PRORES_4444", + "CODEC_ID_APPLE_PIXLET", + "CODEC_ID_G2M", + "CODEC_ID_PRORES", + "CODEC_ID_ANSI", + "CODEC_ID_A64_MULTI", + "CODEC_ID_A64_MULTI5", + "CODEC_ID_R10K", + "CODEC_ID_MXPEG", + "CODEC_ID_LAGARITH", + "CODEC_ID_JV", + "CODEC_ID_DFA", + "CODEC_ID_WMV3IMAGE", + "CODEC_ID_VC1IMAGE", + "CODEC_ID_UTVIDEO", + "CODEC_ID_BMV_VIDEO", + "CODEC_ID_VBLE", + "CODEC_ID_DXTORY", + "CODEC_ID_V410", + "CODEC_ID_XWD", + "CODEC_ID_CDXL", + "CODEC_ID_XBM", + "CODEC_ID_ZEROCODEC", + "CODEC_ID_MSS1", + "CODEC_ID_MSA1", + "CODEC_ID_TSCC2", + "CODEC_ID_MTS2", + "CODEC_ID_CLLC", + "CODEC_ID_MSS2", + "CODEC_ID_Y41P", + "CODEC_ID_ESCAPE130", + "CODEC_ID_EXR", + "CODEC_ID_AVRP", + "CODEC_ID_AVUI", + "CODEC_ID_AYUV", + "CODEC_ID_V308", + "CODEC_ID_V408", + "CODEC_ID_YUV4", + "CODEC_ID_SANM", + "CODEC_ID_PAF_VIDEO", + "CODEC_ID_AVRN", + "CODEC_ID_CPIA", + "CODEC_ID_VP9", + "CODEC_ID_H265", + "CODEC_ID_CFHD", + "CODEC_ID_AV1", + "CODEC_ID_AIC", + "CODEC_ID_ALIAS_PIX", + "CODEC_ID_APNG", + "CODEC_ID_BRENDER_PIX", + "CODEC_ID_CLEARVIDEO", + "CODEC_ID_DDS", + "CODEC_ID_DXV", + "CODEC_ID_FIC", + "CODEC_ID_FITS", + "CODEC_ID_FMVC", + "CODEC_ID_GDV", + "CODEC_ID_HAP", + "CODEC_ID_HNM4_VIDEO", + "CODEC_ID_HQ_HQA", + "CODEC_ID_HQX", + "CODEC_ID_M101", + "CODEC_ID_MAGICYUV", + "CODEC_ID_MSCC", + "CODEC_ID_MVC1", + "CODEC_ID_MVC2", + "CODEC_ID_PIXLET", + "CODEC_ID_PSD", + "CODEC_ID_RSCC", + "CODEC_ID_SCPR", + "CODEC_ID_SCREENPRESSO", + "CODEC_ID_SGIRLE", + "CODEC_ID_SHEERVIDEO", + "CODEC_ID_SMVJPEG", + "CODEC_ID_SPEEDHQ", + "CODEC_ID_SRGC", + "CODEC_ID_TARGA_Y216", + "CODEC_ID_TDSC", + "CODEC_ID_TRUEMOTION2RT", + "CODEC_ID_VP7", + "CODEC_ID_BITPACKED", + "CODEC_ID_WEBP", + "CODEC_ID_XFACE", + "CODEC_ID_XPM", + "CODEC_ID_YLC", + "CODEC_ID_012V", + "CODEC_ID_AVS2", + "CODEC_ID_IMM4", + "CODEC_ID_MWSC", + "CODEC_ID_PROSUMER", + "CODEC_ID_RASC", + "CODEC_ID_WCMV", + "CODEC_ID_UNKNOWN", + "CODEC_ID_PCM_S16LE", + "CODEC_ID_PCM_S16BE", + "CODEC_ID_PCM_U16LE", + "CODEC_ID_PCM_U16BE", + "CODEC_ID_PCM_S8", + "CODEC_ID_PCM_U8", + "CODEC_ID_PCM_MULAW", + "CODEC_ID_PCM_ALAW", + "CODEC_ID_PCM_S32LE", + "CODEC_ID_PCM_S32BE", + "CODEC_ID_PCM_U32LE", + "CODEC_ID_PCM_U32BE", + "CODEC_ID_PCM_S24LE", + "CODEC_ID_PCM_S24BE", + "CODEC_ID_PCM_U24LE", + "CODEC_ID_PCM_U24BE", + "CODEC_ID_PCM_S24DAUD", + "CODEC_ID_PCM_ZORK", + "CODEC_ID_PCM_S16LE_PLANAR", + "CODEC_ID_PCM_DVD", + "CODEC_ID_PCM_F32BE", + "CODEC_ID_PCM_F32LE", + "CODEC_ID_PCM_F64BE", + "CODEC_ID_PCM_F64LE", + "CODEC_ID_PCM_BLURAY", + "CODEC_ID_PCM_LXF", + "CODEC_ID_S302M", + "CODEC_ID_PCM_S8_PLANAR", + "CODEC_ID_PCM_S24LE_PLANAR", + "CODEC_ID_PCM_S32LE_PLANAR", + "CODEC_ID_PCM_S16BE_PLANAR", + "CODEC_ID_PCM_S64LE", + "CODEC_ID_PCM_S64BE", + "CODEC_ID_PCM_F16LE", + "CODEC_ID_PCM_F24LE", + "CODEC_ID_ADPCM_IMA_QT", + "CODEC_ID_ADPCM_IMA_WAV", + "CODEC_ID_ADPCM_IMA_DK3", + "CODEC_ID_ADPCM_IMA_DK4", + "CODEC_ID_ADPCM_IMA_WS", + "CODEC_ID_ADPCM_IMA_SMJPEG", + "CODEC_ID_ADPCM_MS", + "CODEC_ID_ADPCM_4XM", + "CODEC_ID_ADPCM_XA", + "CODEC_ID_ADPCM_ADX", + "CODEC_ID_ADPCM_EA", + "CODEC_ID_ADPCM_G726", + "CODEC_ID_ADPCM_CT", + "CODEC_ID_ADPCM_SWF", + "CODEC_ID_ADPCM_YAMAHA", + "CODEC_ID_ADPCM_SBPRO_4", + "CODEC_ID_ADPCM_SBPRO_3", + "CODEC_ID_ADPCM_SBPRO_2", + "CODEC_ID_ADPCM_THP", + "CODEC_ID_ADPCM_IMA_AMV", + "CODEC_ID_ADPCM_EA_R1", + "CODEC_ID_ADPCM_EA_R3", + "CODEC_ID_ADPCM_EA_R2", + "CODEC_ID_ADPCM_IMA_EA_SEAD", + "CODEC_ID_ADPCM_IMA_EA_EACS", + "CODEC_ID_ADPCM_EA_XAS", + "CODEC_ID_ADPCM_EA_MAXIS_XA", + "CODEC_ID_ADPCM_IMA_ISS", + "CODEC_ID_ADPCM_G722", + "CODEC_ID_ADPCM_IMA_APC", + "CODEC_ID_VIMA", + "CODEC_ID_ADPCM_AFC", + "CODEC_ID_ADPCM_IMA_OKI", + "CODEC_ID_ADPCM_DTK", + "CODEC_ID_ADPCM_IMA_RAD", + "CODEC_ID_ADPCM_G726LE", + "CODEC_ID_ADPCM_THP_LE", + "CODEC_ID_ADPCM_PSX", + "CODEC_ID_ADPCM_AICA", + "CODEC_ID_ADPCM_IMA_DAT4", + "CODEC_ID_ADPCM_MTAF", + "CODEC_ID_ADPCM_VIMA", + "CODEC_ID_AMR_NB", + "CODEC_ID_AMR_WB", + "CODEC_ID_RA_144", + "CODEC_ID_RA_288", + "CODEC_ID_ROQ_DPCM", + "CODEC_ID_INTERPLAY_DPCM", + "CODEC_ID_XAN_DPCM", + "CODEC_ID_SOL_DPCM", + "CODEC_ID_GREMLIN_DPCM", + "CODEC_ID_SDX2_DPCM", + "CODEC_ID_MP2", + "CODEC_ID_MP3", + "CODEC_ID_AAC", + "CODEC_ID_MPEG4AAC_DEPRECATED", + "CODEC_ID_AC3", + "CODEC_ID_DTS", + "CODEC_ID_VORBIS", + "CODEC_ID_DVAUDIO", + "CODEC_ID_WMAV1", + "CODEC_ID_WMAV2", + "CODEC_ID_MACE3", + "CODEC_ID_MACE6", + "CODEC_ID_VMDAUDIO", + "CODEC_ID_SONIC", + "CODEC_ID_SONIC_LS", + "CODEC_ID_FLAC", + "CODEC_ID_MP3ADU", + "CODEC_ID_MP3ON4", + "CODEC_ID_SHORTEN", + "CODEC_ID_ALAC", + "CODEC_ID_WESTWOOD_SND1", + "CODEC_ID_GSM", + "CODEC_ID_QDM2", + "CODEC_ID_COOK", + "CODEC_ID_TRUESPEECH", + "CODEC_ID_TTA", + "CODEC_ID_SMACKAUDIO", + "CODEC_ID_QCELP", + "CODEC_ID_WAVPACK", + "CODEC_ID_DSICINAUDIO", + "CODEC_ID_ASAO", + "CODEC_ID_NELLYMOSER", + "CODEC_ID_WMAVOICE", + "CODEC_ID_WMAPRO", + "CODEC_ID_WMALOSSLESS", + "CODEC_ID_IMC", + "CODEC_ID_MUSEPACK7", + "CODEC_ID_MLP", + "CODEC_ID_GSM_MS", + "CODEC_ID_ATRAC3", + "CODEC_ID_VOXWARE", + "CODEC_ID_APE", + "CODEC_ID_MUSEPACK8", + "CODEC_ID_SPEEX", + "CODEC_ID_ATRAC3P", + "CODEC_ID_EAC3", + "CODEC_ID_SIPR", + "CODEC_ID_MP1", + "CODEC_ID_TWINVQ", + "CODEC_ID_TRUEHD", + "CODEC_ID_MP4ALS", + "CODEC_ID_ATRAC1", + "CODEC_ID_BINKAUDIO_RDFT", + "CODEC_ID_BINKAUDIO_DCT", + "CODEC_ID_AAC_LATM", + "CODEC_ID_QDMC", + "CODEC_ID_CELT", + "CODEC_ID_G723_1", + "CODEC_ID_G729", + "CODEC_ID_BMV_AUDIO", + "CODEC_ID_RALF", + "CODEC_ID_IAC", + "CODEC_ID_ILBC", + "CODEC_ID_FFWAVESYNTH", + "CODEC_ID_8SVX_RAW", + "CODEC_ID_PAF_AUDIO", + "CODEC_ID_OPUS", + "CODEC_ID_ATRAC3AL", + "CODEC_ID_ATRAC3PAL", + "CODEC_ID_DOLBY_E", + "CODEC_ID_DSD_LSBF", + "CODEC_ID_DSD_MSBF", + "CODEC_ID_DSD_LSBF_PLANAR", + "CODEC_ID_DSD_MSBF_PLANAR", + "CODEC_ID_DSS_SP", + "CODEC_ID_DST", + "CODEC_ID_EVRC", + "CODEC_ID_INTERPLAY_ACM", + "CODEC_ID_METASOUND", + "CODEC_ID_ON2AVC", + "CODEC_ID_TAK", + "CODEC_ID_XMA1", + "CODEC_ID_XMA2", + "CODEC_ID_COMFORT_NOISE", + "CODEC_ID_APTX", + "CODEC_ID_APTX_HD", + "CODEC_ID_SBC", + "CODEC_ID_ATRAC9", + "CODEC_ID_CODEC2", + "CODEC_ID_OGGTHEORA_DEPRECATED", + "CODEC_ID_DVD_SUBTITLE", + "CODEC_ID_DVB_SUBTITLE", + "CODEC_ID_TEXT", + "CODEC_ID_XSUB", + "CODEC_ID_SSA", + "CODEC_ID_MOV_TEXT", + "CODEC_ID_HDMV_PGS_SUBTITLE", + "CODEC_ID_DVB_TELETEXT", + "CODEC_ID_SRT", + "CODEC_ID_MICRODVD", + "CODEC_ID_EIA_608", + "CODEC_ID_JACOSUB", + "CODEC_ID_SAMI", + "CODEC_ID_REALTEXT", + "CODEC_ID_SUBVIEWER", + "CODEC_ID_SUBRIP", + "CODEC_ID_WEBVTT", + "CODEC_ID_ASS", + "CODEC_ID_MPL2", + "CODEC_ID_PJS", + "CODEC_ID_STL", + "CODEC_ID_SUBVIEWER1", + "CODEC_ID_VPLAYER", + "CODEC_ID_TTML", + "CODEC_ID_TTF", + "CODEC_ID_BINTEXT", + "CODEC_ID_XBIN", + "CODEC_ID_IDF", + "CODEC_ID_OTF", + "CODEC_ID_PROBE", + "CODEC_ID_MPEG2TS", + "CODEC_ID_MPEG4SYSTEMS", + "CODEC_ID_FFMETADATA", + "CODEC_ID_FFMPEG_OUT_OF_SYNC", + "CODEC_ID_WRAPPED_AVFRAME", + "CODEC_ID_CAMM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_MPEG4", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "moved to audio codecs section in upstream", + "moved to audio codecs section in upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various pcm \"codecs\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various adpcm codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AMR", + "", + "RealAudio codecs", + "", + "various DPCM codecs", + "", + "", + "", + "", + "", + "audio codecs", + "preferred ID for MPEG Audio layer 1, 2 or 3", + "", + "Use CODEC_ID_AAC instead", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Not in ffmpeg as of rev 20544.", + "Start of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "End of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Removed in ffmpeg rev 5877.", + "subtitle codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "other specific kind of codecs (generally used for attachments)", + "", + "", + "", + "", + "\u003c codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it", + "_FAKE_ codec to indicate a raw MPEG2 transport stream (only used by libavformat)", + "_FAKE_ codec to indicate a MPEG-4 Systems stream (only used by libavformat)", + "Dummy codec for streams containing only metadata information.", + "this one indicates an error in the mapping between this enum and libavcodec's", + "AVFrames wrapped in AVPacket", + "Camera motion metadata (http://go/wally-format)" + ], + "type": "string" + }, + "metadata": { + "description": "Metadata for the stream.", + "items": { + "$ref": "VideoClipInfo" + }, + "type": "array" + }, + "streamCodecTag": { + "format": "int64", + "type": "string" + }, + "streamIndex": { + "description": "Index of the stream in the file. it is 0 based.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoVideoStream": { + "description": "TODO(yanghu) add 25/50/75 percentiles of FPS to have a 5 number summary. Next id: 48", + "id": "VideoVideoStreamInfoVideoStream", + "properties": { + "averageFps": { + "description": "This represents the canonical frame rate of the video. This is named average_fps for historical reasons, and may not actually be the arithmetic mean. For variable frame rate videos, the algorithm may change again in future. Currently, full vsi set it with arithmetic mean, and partial vsi set it with median.", + "format": "double", + "type": "number" + }, + "bitrate": { + "description": "video bitrate in bits/s", + "format": "int64", + "type": "string" + }, + "bitstreamColorInfo": { + "$ref": "VideoFileColorInfo", + "description": "Contains the color information obtained after inspection of the bitstream in cases where there may be inconsistencies between container and coded bitstream that are resolved in favor of the container." + }, + "cleanAperture": { + "$ref": "VideoVideoStreamInfoVideoStreamCleanAperture" + }, + "clockDiscontinuityUs": { + "description": "some container allows for a clock discontinuity. In this case, the end_timestamp may not be the correct DTS of the stream.", + "format": "int64", + "type": "string" + }, + "closedCaptions": { + "$ref": "VideoClosedCaptions" + }, + "closedGopSize": { + "$ref": "VideoVideoStreamInfoVideoStreamStatistics", + "description": "closed_gop_size refers to chunkable boundaries for each specified codec and may actually contain one or more GOPs, e.g. for H.264, closed_gop_size will denote the distance (frame count) between two IDR frames." + }, + "codecFourcc": { + "type": "string" + }, + "codecId": { + "description": "Primary video codec information", + "enum": [ + "CODEC_ID_NONE", + "CODEC_ID_MPEG1VIDEO", + "CODEC_ID_MPEG2VIDEO", + "CODEC_ID_MPEG2VIDEO_XVMC", + "CODEC_ID_H261", + "CODEC_ID_H263", + "CODEC_ID_RV10", + "CODEC_ID_RV20", + "CODEC_ID_MJPEG", + "CODEC_ID_MJPEGB", + "CODEC_ID_LJPEG", + "CODEC_ID_SP5X", + "CODEC_ID_JPEGLS", + "CODEC_ID_MPEG4", + "CODEC_ID_RAWVIDEO", + "CODEC_ID_MSMPEG4V1", + "CODEC_ID_MSMPEG4V2", + "CODEC_ID_MSMPEG4V3", + "CODEC_ID_WMV1", + "CODEC_ID_WMV2", + "CODEC_ID_H263P", + "CODEC_ID_H263I", + "CODEC_ID_FLV1", + "CODEC_ID_SVQ1", + "CODEC_ID_SVQ3", + "CODEC_ID_DVVIDEO", + "CODEC_ID_HUFFYUV", + "CODEC_ID_CYUV", + "CODEC_ID_H264", + "CODEC_ID_INDEO3", + "CODEC_ID_VP3", + "CODEC_ID_THEORA", + "CODEC_ID_ASV1", + "CODEC_ID_ASV2", + "CODEC_ID_FFV1", + "CODEC_ID_4XM", + "CODEC_ID_VCR1", + "CODEC_ID_CLJR", + "CODEC_ID_MDEC", + "CODEC_ID_ROQ", + "CODEC_ID_INTERPLAY_VIDEO", + "CODEC_ID_XAN_WC3", + "CODEC_ID_XAN_WC4", + "CODEC_ID_RPZA", + "CODEC_ID_CINEPAK", + "CODEC_ID_WS_VQA", + "CODEC_ID_MSRLE", + "CODEC_ID_MSVIDEO1", + "CODEC_ID_IDCIN", + "CODEC_ID_8BPS", + "CODEC_ID_SMC", + "CODEC_ID_FLIC", + "CODEC_ID_TRUEMOTION1", + "CODEC_ID_VMDVIDEO", + "CODEC_ID_MSZH", + "CODEC_ID_ZLIB", + "CODEC_ID_QTRLE", + "CODEC_ID_SNOW", + "CODEC_ID_TSCC", + "CODEC_ID_ULTI", + "CODEC_ID_QDRAW", + "CODEC_ID_VIXL", + "CODEC_ID_QPEG", + "CODEC_ID_XVID", + "CODEC_ID_PNG", + "CODEC_ID_PPM", + "CODEC_ID_PBM", + "CODEC_ID_PGM", + "CODEC_ID_PGMYUV", + "CODEC_ID_PAM", + "CODEC_ID_FFVHUFF", + "CODEC_ID_RV30", + "CODEC_ID_RV40", + "CODEC_ID_VC1", + "CODEC_ID_WMV3", + "CODEC_ID_LOCO", + "CODEC_ID_WNV1", + "CODEC_ID_AASC", + "CODEC_ID_INDEO2", + "CODEC_ID_FRAPS", + "CODEC_ID_TRUEMOTION2", + "CODEC_ID_BMP", + "CODEC_ID_CSCD", + "CODEC_ID_MMVIDEO", + "CODEC_ID_ZMBV", + "CODEC_ID_AVS", + "CODEC_ID_SMACKVIDEO", + "CODEC_ID_NUV", + "CODEC_ID_KMVC", + "CODEC_ID_FLASHSV", + "CODEC_ID_CAVS", + "CODEC_ID_JPEG2000", + "CODEC_ID_VMNC", + "CODEC_ID_VP5", + "CODEC_ID_VP6", + "CODEC_ID_VP6F", + "CODEC_ID_TARGA", + "CODEC_ID_DSICINVIDEO", + "CODEC_ID_TIERTEXSEQVIDEO", + "CODEC_ID_TIFF", + "CODEC_ID_GIF", + "CODEC_ID_FFH264", + "CODEC_ID_DXA", + "CODEC_ID_DNXHD", + "CODEC_ID_THP", + "CODEC_ID_SGI", + "CODEC_ID_C93", + "CODEC_ID_BETHSOFTVID", + "CODEC_ID_PTX", + "CODEC_ID_TXD", + "CODEC_ID_VP6A", + "CODEC_ID_AMV", + "CODEC_ID_VB", + "CODEC_ID_PCX", + "CODEC_ID_SUNRAST", + "CODEC_ID_INDEO4", + "CODEC_ID_INDEO5", + "CODEC_ID_MIMIC", + "CODEC_ID_RL2", + "CODEC_ID_8SVX_EXP", + "CODEC_ID_8SVX_FIB", + "CODEC_ID_ESCAPE124", + "CODEC_ID_DIRAC", + "CODEC_ID_BFI", + "CODEC_ID_CMV", + "CODEC_ID_MOTIONPIXELS", + "CODEC_ID_TGV", + "CODEC_ID_TGQ", + "CODEC_ID_TQI", + "CODEC_ID_AURA", + "CODEC_ID_AURA2", + "CODEC_ID_V210X", + "CODEC_ID_TMV", + "CODEC_ID_V210", + "CODEC_ID_DPX", + "CODEC_ID_MAD", + "CODEC_ID_FRWU", + "CODEC_ID_VP8", + "CODEC_ID_APPLE_PRORES_NQ", + "CODEC_ID_APPLE_PRORES_HQ", + "CODEC_ID_FLASHSV2", + "CODEC_ID_CDGRAPHICS", + "CODEC_ID_R210", + "CODEC_ID_ANM", + "CODEC_ID_BINKVIDEO", + "CODEC_ID_IFF_ILBM", + "CODEC_ID_IFF_BYTERUN1", + "CODEC_ID_KGV1", + "CODEC_ID_YOP", + "CODEC_ID_PICTOR", + "CODEC_ID_APPLE_PRORES_LT", + "CODEC_ID_APPLE_PRORES_PROXY", + "CODEC_ID_APPLE_PRORES_4444", + "CODEC_ID_APPLE_PIXLET", + "CODEC_ID_G2M", + "CODEC_ID_PRORES", + "CODEC_ID_ANSI", + "CODEC_ID_A64_MULTI", + "CODEC_ID_A64_MULTI5", + "CODEC_ID_R10K", + "CODEC_ID_MXPEG", + "CODEC_ID_LAGARITH", + "CODEC_ID_JV", + "CODEC_ID_DFA", + "CODEC_ID_WMV3IMAGE", + "CODEC_ID_VC1IMAGE", + "CODEC_ID_UTVIDEO", + "CODEC_ID_BMV_VIDEO", + "CODEC_ID_VBLE", + "CODEC_ID_DXTORY", + "CODEC_ID_V410", + "CODEC_ID_XWD", + "CODEC_ID_CDXL", + "CODEC_ID_XBM", + "CODEC_ID_ZEROCODEC", + "CODEC_ID_MSS1", + "CODEC_ID_MSA1", + "CODEC_ID_TSCC2", + "CODEC_ID_MTS2", + "CODEC_ID_CLLC", + "CODEC_ID_MSS2", + "CODEC_ID_Y41P", + "CODEC_ID_ESCAPE130", + "CODEC_ID_EXR", + "CODEC_ID_AVRP", + "CODEC_ID_AVUI", + "CODEC_ID_AYUV", + "CODEC_ID_V308", + "CODEC_ID_V408", + "CODEC_ID_YUV4", + "CODEC_ID_SANM", + "CODEC_ID_PAF_VIDEO", + "CODEC_ID_AVRN", + "CODEC_ID_CPIA", + "CODEC_ID_VP9", + "CODEC_ID_H265", + "CODEC_ID_CFHD", + "CODEC_ID_AV1", + "CODEC_ID_AIC", + "CODEC_ID_ALIAS_PIX", + "CODEC_ID_APNG", + "CODEC_ID_BRENDER_PIX", + "CODEC_ID_CLEARVIDEO", + "CODEC_ID_DDS", + "CODEC_ID_DXV", + "CODEC_ID_FIC", + "CODEC_ID_FITS", + "CODEC_ID_FMVC", + "CODEC_ID_GDV", + "CODEC_ID_HAP", + "CODEC_ID_HNM4_VIDEO", + "CODEC_ID_HQ_HQA", + "CODEC_ID_HQX", + "CODEC_ID_M101", + "CODEC_ID_MAGICYUV", + "CODEC_ID_MSCC", + "CODEC_ID_MVC1", + "CODEC_ID_MVC2", + "CODEC_ID_PIXLET", + "CODEC_ID_PSD", + "CODEC_ID_RSCC", + "CODEC_ID_SCPR", + "CODEC_ID_SCREENPRESSO", + "CODEC_ID_SGIRLE", + "CODEC_ID_SHEERVIDEO", + "CODEC_ID_SMVJPEG", + "CODEC_ID_SPEEDHQ", + "CODEC_ID_SRGC", + "CODEC_ID_TARGA_Y216", + "CODEC_ID_TDSC", + "CODEC_ID_TRUEMOTION2RT", + "CODEC_ID_VP7", + "CODEC_ID_BITPACKED", + "CODEC_ID_WEBP", + "CODEC_ID_XFACE", + "CODEC_ID_XPM", + "CODEC_ID_YLC", + "CODEC_ID_012V", + "CODEC_ID_AVS2", + "CODEC_ID_IMM4", + "CODEC_ID_MWSC", + "CODEC_ID_PROSUMER", + "CODEC_ID_RASC", + "CODEC_ID_WCMV", + "CODEC_ID_UNKNOWN", + "CODEC_ID_PCM_S16LE", + "CODEC_ID_PCM_S16BE", + "CODEC_ID_PCM_U16LE", + "CODEC_ID_PCM_U16BE", + "CODEC_ID_PCM_S8", + "CODEC_ID_PCM_U8", + "CODEC_ID_PCM_MULAW", + "CODEC_ID_PCM_ALAW", + "CODEC_ID_PCM_S32LE", + "CODEC_ID_PCM_S32BE", + "CODEC_ID_PCM_U32LE", + "CODEC_ID_PCM_U32BE", + "CODEC_ID_PCM_S24LE", + "CODEC_ID_PCM_S24BE", + "CODEC_ID_PCM_U24LE", + "CODEC_ID_PCM_U24BE", + "CODEC_ID_PCM_S24DAUD", + "CODEC_ID_PCM_ZORK", + "CODEC_ID_PCM_S16LE_PLANAR", + "CODEC_ID_PCM_DVD", + "CODEC_ID_PCM_F32BE", + "CODEC_ID_PCM_F32LE", + "CODEC_ID_PCM_F64BE", + "CODEC_ID_PCM_F64LE", + "CODEC_ID_PCM_BLURAY", + "CODEC_ID_PCM_LXF", + "CODEC_ID_S302M", + "CODEC_ID_PCM_S8_PLANAR", + "CODEC_ID_PCM_S24LE_PLANAR", + "CODEC_ID_PCM_S32LE_PLANAR", + "CODEC_ID_PCM_S16BE_PLANAR", + "CODEC_ID_PCM_S64LE", + "CODEC_ID_PCM_S64BE", + "CODEC_ID_PCM_F16LE", + "CODEC_ID_PCM_F24LE", + "CODEC_ID_ADPCM_IMA_QT", + "CODEC_ID_ADPCM_IMA_WAV", + "CODEC_ID_ADPCM_IMA_DK3", + "CODEC_ID_ADPCM_IMA_DK4", + "CODEC_ID_ADPCM_IMA_WS", + "CODEC_ID_ADPCM_IMA_SMJPEG", + "CODEC_ID_ADPCM_MS", + "CODEC_ID_ADPCM_4XM", + "CODEC_ID_ADPCM_XA", + "CODEC_ID_ADPCM_ADX", + "CODEC_ID_ADPCM_EA", + "CODEC_ID_ADPCM_G726", + "CODEC_ID_ADPCM_CT", + "CODEC_ID_ADPCM_SWF", + "CODEC_ID_ADPCM_YAMAHA", + "CODEC_ID_ADPCM_SBPRO_4", + "CODEC_ID_ADPCM_SBPRO_3", + "CODEC_ID_ADPCM_SBPRO_2", + "CODEC_ID_ADPCM_THP", + "CODEC_ID_ADPCM_IMA_AMV", + "CODEC_ID_ADPCM_EA_R1", + "CODEC_ID_ADPCM_EA_R3", + "CODEC_ID_ADPCM_EA_R2", + "CODEC_ID_ADPCM_IMA_EA_SEAD", + "CODEC_ID_ADPCM_IMA_EA_EACS", + "CODEC_ID_ADPCM_EA_XAS", + "CODEC_ID_ADPCM_EA_MAXIS_XA", + "CODEC_ID_ADPCM_IMA_ISS", + "CODEC_ID_ADPCM_G722", + "CODEC_ID_ADPCM_IMA_APC", + "CODEC_ID_VIMA", + "CODEC_ID_ADPCM_AFC", + "CODEC_ID_ADPCM_IMA_OKI", + "CODEC_ID_ADPCM_DTK", + "CODEC_ID_ADPCM_IMA_RAD", + "CODEC_ID_ADPCM_G726LE", + "CODEC_ID_ADPCM_THP_LE", + "CODEC_ID_ADPCM_PSX", + "CODEC_ID_ADPCM_AICA", + "CODEC_ID_ADPCM_IMA_DAT4", + "CODEC_ID_ADPCM_MTAF", + "CODEC_ID_ADPCM_VIMA", + "CODEC_ID_AMR_NB", + "CODEC_ID_AMR_WB", + "CODEC_ID_RA_144", + "CODEC_ID_RA_288", + "CODEC_ID_ROQ_DPCM", + "CODEC_ID_INTERPLAY_DPCM", + "CODEC_ID_XAN_DPCM", + "CODEC_ID_SOL_DPCM", + "CODEC_ID_GREMLIN_DPCM", + "CODEC_ID_SDX2_DPCM", + "CODEC_ID_MP2", + "CODEC_ID_MP3", + "CODEC_ID_AAC", + "CODEC_ID_MPEG4AAC_DEPRECATED", + "CODEC_ID_AC3", + "CODEC_ID_DTS", + "CODEC_ID_VORBIS", + "CODEC_ID_DVAUDIO", + "CODEC_ID_WMAV1", + "CODEC_ID_WMAV2", + "CODEC_ID_MACE3", + "CODEC_ID_MACE6", + "CODEC_ID_VMDAUDIO", + "CODEC_ID_SONIC", + "CODEC_ID_SONIC_LS", + "CODEC_ID_FLAC", + "CODEC_ID_MP3ADU", + "CODEC_ID_MP3ON4", + "CODEC_ID_SHORTEN", + "CODEC_ID_ALAC", + "CODEC_ID_WESTWOOD_SND1", + "CODEC_ID_GSM", + "CODEC_ID_QDM2", + "CODEC_ID_COOK", + "CODEC_ID_TRUESPEECH", + "CODEC_ID_TTA", + "CODEC_ID_SMACKAUDIO", + "CODEC_ID_QCELP", + "CODEC_ID_WAVPACK", + "CODEC_ID_DSICINAUDIO", + "CODEC_ID_ASAO", + "CODEC_ID_NELLYMOSER", + "CODEC_ID_WMAVOICE", + "CODEC_ID_WMAPRO", + "CODEC_ID_WMALOSSLESS", + "CODEC_ID_IMC", + "CODEC_ID_MUSEPACK7", + "CODEC_ID_MLP", + "CODEC_ID_GSM_MS", + "CODEC_ID_ATRAC3", + "CODEC_ID_VOXWARE", + "CODEC_ID_APE", + "CODEC_ID_MUSEPACK8", + "CODEC_ID_SPEEX", + "CODEC_ID_ATRAC3P", + "CODEC_ID_EAC3", + "CODEC_ID_SIPR", + "CODEC_ID_MP1", + "CODEC_ID_TWINVQ", + "CODEC_ID_TRUEHD", + "CODEC_ID_MP4ALS", + "CODEC_ID_ATRAC1", + "CODEC_ID_BINKAUDIO_RDFT", + "CODEC_ID_BINKAUDIO_DCT", + "CODEC_ID_AAC_LATM", + "CODEC_ID_QDMC", + "CODEC_ID_CELT", + "CODEC_ID_G723_1", + "CODEC_ID_G729", + "CODEC_ID_BMV_AUDIO", + "CODEC_ID_RALF", + "CODEC_ID_IAC", + "CODEC_ID_ILBC", + "CODEC_ID_FFWAVESYNTH", + "CODEC_ID_8SVX_RAW", + "CODEC_ID_PAF_AUDIO", + "CODEC_ID_OPUS", + "CODEC_ID_ATRAC3AL", + "CODEC_ID_ATRAC3PAL", + "CODEC_ID_DOLBY_E", + "CODEC_ID_DSD_LSBF", + "CODEC_ID_DSD_MSBF", + "CODEC_ID_DSD_LSBF_PLANAR", + "CODEC_ID_DSD_MSBF_PLANAR", + "CODEC_ID_DSS_SP", + "CODEC_ID_DST", + "CODEC_ID_EVRC", + "CODEC_ID_INTERPLAY_ACM", + "CODEC_ID_METASOUND", + "CODEC_ID_ON2AVC", + "CODEC_ID_TAK", + "CODEC_ID_XMA1", + "CODEC_ID_XMA2", + "CODEC_ID_COMFORT_NOISE", + "CODEC_ID_APTX", + "CODEC_ID_APTX_HD", + "CODEC_ID_SBC", + "CODEC_ID_ATRAC9", + "CODEC_ID_CODEC2", + "CODEC_ID_OGGTHEORA_DEPRECATED", + "CODEC_ID_DVD_SUBTITLE", + "CODEC_ID_DVB_SUBTITLE", + "CODEC_ID_TEXT", + "CODEC_ID_XSUB", + "CODEC_ID_SSA", + "CODEC_ID_MOV_TEXT", + "CODEC_ID_HDMV_PGS_SUBTITLE", + "CODEC_ID_DVB_TELETEXT", + "CODEC_ID_SRT", + "CODEC_ID_MICRODVD", + "CODEC_ID_EIA_608", + "CODEC_ID_JACOSUB", + "CODEC_ID_SAMI", + "CODEC_ID_REALTEXT", + "CODEC_ID_SUBVIEWER", + "CODEC_ID_SUBRIP", + "CODEC_ID_WEBVTT", + "CODEC_ID_ASS", + "CODEC_ID_MPL2", + "CODEC_ID_PJS", + "CODEC_ID_STL", + "CODEC_ID_SUBVIEWER1", + "CODEC_ID_VPLAYER", + "CODEC_ID_TTML", + "CODEC_ID_TTF", + "CODEC_ID_BINTEXT", + "CODEC_ID_XBIN", + "CODEC_ID_IDF", + "CODEC_ID_OTF", + "CODEC_ID_PROBE", + "CODEC_ID_MPEG2TS", + "CODEC_ID_MPEG4SYSTEMS", + "CODEC_ID_FFMETADATA", + "CODEC_ID_FFMPEG_OUT_OF_SYNC", + "CODEC_ID_WRAPPED_AVFRAME", + "CODEC_ID_CAMM" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_MPEG4", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "deprecated: removed from upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "moved to audio codecs section in upstream", + "moved to audio codecs section in upstream", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "deprecated: use CODEC_ID_PRORES", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various pcm \"codecs\"", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "various adpcm codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "AMR", + "", + "RealAudio codecs", + "", + "various DPCM codecs", + "", + "", + "", + "", + "", + "audio codecs", + "preferred ID for MPEG Audio layer 1, 2 or 3", + "", + "Use CODEC_ID_AAC instead", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Not in ffmpeg as of rev 20544.", + "Start of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "End of out of order with ffmpeg", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Removed in ffmpeg rev 5877.", + "subtitle codecs", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "other specific kind of codecs (generally used for attachments)", + "", + "", + "", + "", + "\u003c codec_id is not known (like CODEC_ID_NONE) but lavf should attempt to identify it", + "_FAKE_ codec to indicate a raw MPEG2 transport stream (only used by libavformat)", + "_FAKE_ codec to indicate a MPEG-4 Systems stream (only used by libavformat)", + "Dummy codec for streams containing only metadata information.", + "this one indicates an error in the mapping between this enum and libavcodec's", + "AVFrames wrapped in AVPacket", + "Camera motion metadata (http://go/wally-format)" + ], + "type": "string" + }, + "codecString": { + "description": "RFC6381 Codec string.", + "type": "string" + }, + "colorInfo": { + "$ref": "VideoFileColorInfo" + }, + "contentLightLevel": { + "$ref": "VideoFileContentLightLevel" + }, + "decodeOffset": { + "description": "The bytes offset of the end of the first decodable packet.", + "format": "int64", + "type": "string" + }, + "displayHeight": { + "format": "int32", + "type": "integer" + }, + "displayWidth": { + "description": "final display video width and height if explicitly set in the video otherwise this can be calculated from source width/height and video_pixel_aspect_ratio", + "format": "int32", + "type": "integer" + }, + "doviConfiguration": { + "$ref": "VideoDoViDecoderConfiguration", + "description": "Dolby Vision configuration if stream is compatible." + }, + "endTimestamp": { + "format": "int64", + "type": "string" + }, + "flip": { + "description": "Should the video be mirrored horizontally / vertically? When rotation and flip both are present for a video, it is assumed that the flip is applied first, and then the rotation.", + "enum": [ + "FLIP_NONE", + "FLIP_HORIZONTAL", + "FLIP_VERTICAL" + ], + "enumDescriptions": [ + "No mirroring.", + "Frame should be mirrored horizontally when displayed.", + "Frame should be mirrored vertically when displayed." + ], + "type": "string" + }, + "fps": { + "description": "video frame per second, obtained by parsing video header information. It could be inaccurate for some types of codecs, notably, WMV, ASF, and FLV. It will be inaccurate for videos that does not have constant frame rate since it is the smallest framerate that can accurately represent all timestamps (see ffmpeg doc for AVStream.r_frame_rate). Also frame rate can be parsed from headers and can be wrong if it is not available there since ffmpeg uses a heuristic for determining it.", + "format": "double", + "type": "number" + }, + "frameSize": { + "description": "video frame size", + "format": "int64", + "type": "string" + }, + "gopSize": { + "$ref": "VideoVideoStreamInfoVideoStreamStatistics", + "description": "Statistics about gop sizes of the video." + }, + "hasBFrames": { + "description": "video has b frames", + "type": "boolean" + }, + "hdr10PlusStats": { + "$ref": "VideoFileHDR10PlusStats", + "description": "Stats on HDR10+ over video frames." + }, + "height": { + "format": "int32", + "type": "integer" + }, + "interlace": { + "description": "Information on interlaced video.", + "enum": [ + "INTERLACE_NONE", + "INTERLACE_PIC_AFF", + "INTERLACE_MB_AFF" + ], + "enumDescriptions": [ + "No interlace", + "Adaptive frame-field coding in picture level", + "Adaptive frame-field coding in macroblock level" + ], + "type": "string" + }, + "isInsaneSize": { + "description": "Check if a video size insane or not. It is set if the input file is an MOV file.", + "type": "boolean" + }, + "ituTT35": { + "description": "User data registered Itu-T T.35 SEI message", + "items": { + "$ref": "VideoUserDataRegisteredItuTT35" + }, + "type": "array" + }, + "length": { + "description": "video length in seconds Note that when the VSI is from users videos, it is not guaranteed to be the same as transcode lengths and it could be 0 when the full VSI cannot compute the length from the source header and timestamps (for example when header and timestamps are too broken).", + "format": "double", + "type": "number" + }, + "level": { + "format": "int32", + "type": "integer" + }, + "masteringDisplayMetadata": { + "$ref": "VideoFileMasteringDisplayMetadata" + }, + "maxFps": { + "description": "Maximum instantaneous frame rate seen from analyzing the entire stream.", + "format": "double", + "type": "number" + }, + "metadata": { + "description": "Metadata for video elementary stream;", + "items": { + "$ref": "VideoClipInfo" + }, + "type": "array" + }, + "minFps": { + "description": "Minimum instantaneous frame rate seen from analyzing the entire stream.", + "format": "double", + "type": "number" + }, + "numberOfFrames": { + "description": "Number of video frames.", + "format": "int64", + "type": "string" + }, + "numberOfInvisibleFrames": { + "description": "Invisible frame count Keep a count of frames that are not displayed should the full frame count be needed for the video stream. The only codec currently reporting this value is VP8 with alternate reference frames enabled", + "format": "int32", + "type": "integer" + }, + "pixFmt": { + "description": "Pixel format for the video stream.", + "enum": [ + "PIX_FMT_NONE", + "PIX_FMT_YUV420P", + "PIX_FMT_YUYV422", + "PIX_FMT_RGB24", + "PIX_FMT_BGR24", + "PIX_FMT_YUV422P", + "PIX_FMT_YUV444P", + "PIX_FMT_RGB32", + "PIX_FMT_YUV410P", + "PIX_FMT_YUV411P", + "PIX_FMT_RGB565", + "PIX_FMT_RGB555", + "PIX_FMT_GRAY8", + "PIX_FMT_MONOWHITE", + "PIX_FMT_MONOBLACK", + "PIX_FMT_PAL8", + "PIX_FMT_YUVJ420P", + "PIX_FMT_YUVJ422P", + "PIX_FMT_YUVJ444P", + "PIX_FMT_XVMC_MPEG2_MC", + "PIX_FMT_XVMC_MPEG2_IDCT", + "PIX_FMT_UYVY422", + "PIX_FMT_UYYVYY411", + "PIX_FMT_BGR32", + "PIX_FMT_BGR565", + "PIX_FMT_BGR555", + "PIX_FMT_BGR8", + "PIX_FMT_BGR4", + "PIX_FMT_BGR4_BYTE", + "PIX_FMT_RGB8", + "PIX_FMT_RGB4", + "PIX_FMT_RGB4_BYTE", + "PIX_FMT_NV12", + "PIX_FMT_NV21", + "PIX_FMT_RGB32_1", + "PIX_FMT_BGR32_1", + "PIX_FMT_GRAY16BE", + "PIX_FMT_GRAY16LE", + "PIX_FMT_YUV440P", + "PIX_FMT_YUVJ440P", + "PIX_FMT_YUVA420P", + "PIX_FMT_VDPAU_H264", + "PIX_FMT_VDPAU_MPEG1", + "PIX_FMT_VDPAU_MPEG2", + "PIX_FMT_VDPAU_WMV3", + "PIX_FMT_VDPAU_VC1", + "PIX_FMT_RGB48BE", + "PIX_FMT_RGB48LE", + "PIX_FMT_RGB565BE", + "PIX_FMT_RGB555BE", + "PIX_FMT_BGR565BE", + "PIX_FMT_BGR555BE", + "PIX_FMT_VAAPI_MOCO", + "PIX_FMT_VAAPI_IDCT", + "PIX_FMT_VAAPI_VLD", + "PIX_FMT_YUV420P16LE", + "PIX_FMT_YUV420P16BE", + "PIX_FMT_YUV422P16LE", + "PIX_FMT_YUV422P16BE", + "PIX_FMT_YUV444P16LE", + "PIX_FMT_YUV444P16BE", + "PIX_FMT_VDPAU_MPEG4", + "PIX_FMT_DXVA2_VLD", + "PIX_FMT_RGB444LE", + "PIX_FMT_RGB444BE", + "PIX_FMT_BGR444LE", + "PIX_FMT_BGR444BE", + "PIX_FMT_GRAY8A", + "PIX_FMT_BGR48BE", + "PIX_FMT_BGR48LE", + "PIX_FMT_YUV420P9BE", + "PIX_FMT_YUV420P9LE", + "PIX_FMT_YUV420P10BE", + "PIX_FMT_YUV420P10LE", + "PIX_FMT_YUV422P10BE", + "PIX_FMT_YUV422P10LE", + "PIX_FMT_YUV444P9BE", + "PIX_FMT_YUV444P9LE", + "PIX_FMT_YUV444P10BE", + "PIX_FMT_YUV444P10LE", + "PIX_FMT_YUV422P9BE", + "PIX_FMT_YUV422P9LE", + "PIX_FMT_VDA_VLD", + "PIX_FMT_RGBA64BE", + "PIX_FMT_RGBA64LE", + "PIX_FMT_BGRA64BE", + "PIX_FMT_BGRA64LE", + "PIX_FMT_GBRP", + "PIX_FMT_GBRP9BE", + "PIX_FMT_GBRP9LE", + "PIX_FMT_GBRP10BE", + "PIX_FMT_GBRP10LE", + "PIX_FMT_GBRP16BE", + "PIX_FMT_GBRP16LE", + "PIX_FMT_0RGB", + "PIX_FMT_RGB0", + "PIX_FMT_0BGR", + "PIX_FMT_BGR0", + "PIX_FMT_YUVA444P", + "PIX_FMT_YUVA422P", + "PIX_FMT_YUV420P12BE", + "PIX_FMT_YUV420P12LE", + "PIX_FMT_YUV420P14BE", + "PIX_FMT_YUV420P14LE", + "PIX_FMT_YUV422P12BE", + "PIX_FMT_YUV422P12LE", + "PIX_FMT_YUV422P14BE", + "PIX_FMT_YUV422P14LE", + "PIX_FMT_YUV444P12BE", + "PIX_FMT_YUV444P12LE", + "PIX_FMT_YUV444P14BE", + "PIX_FMT_YUV444P14LE", + "PIX_FMT_GBRP12BE", + "PIX_FMT_GBRP12LE", + "PIX_FMT_GBRP14BE", + "PIX_FMT_GBRP14LE", + "PIX_FMT_ARGB", + "PIX_FMT_RGBA", + "PIX_FMT_ABGR", + "PIX_FMT_BGRA", + "PIX_FMT_RGB565LE", + "PIX_FMT_RGB555LE", + "PIX_FMT_BGR565LE", + "PIX_FMT_BGR555LE", + "PIX_FMT_VAAPI", + "PIX_FMT_YA8", + "PIX_FMT_Y400A", + "PIX_FMT_YUVA420P9BE", + "PIX_FMT_YUVA420P9LE", + "PIX_FMT_YUVA422P9BE", + "PIX_FMT_YUVA422P9LE", + "PIX_FMT_YUVA444P9BE", + "PIX_FMT_YUVA444P9LE", + "PIX_FMT_YUVA420P10BE", + "PIX_FMT_YUVA420P10LE", + "PIX_FMT_YUVA422P10BE", + "PIX_FMT_YUVA422P10LE", + "PIX_FMT_YUVA444P10BE", + "PIX_FMT_YUVA444P10LE", + "PIX_FMT_YUVA420P16BE", + "PIX_FMT_YUVA420P16LE", + "PIX_FMT_YUVA422P16BE", + "PIX_FMT_YUVA422P16LE", + "PIX_FMT_YUVA444P16BE", + "PIX_FMT_YUVA444P16LE", + "PIX_FMT_VDPAU", + "PIX_FMT_XYZ12LE", + "PIX_FMT_XYZ12BE", + "PIX_FMT_NV16", + "PIX_FMT_NV20LE", + "PIX_FMT_NV20BE", + "PIX_FMT_YVYU422", + "PIX_FMT_VDA", + "PIX_FMT_YA16BE", + "PIX_FMT_YA16LE", + "PIX_FMT_GBRAP", + "PIX_FMT_GBRAP16BE", + "PIX_FMT_GBRAP16LE", + "PIX_FMT_QSV", + "PIX_FMT_MMAL", + "PIX_FMT_D3D11VA_VLD", + "PIX_FMT_CUDA", + "PIX_FMT_YUVJ411P", + "PIX_FMT_BAYER_BGGR8", + "PIX_FMT_BAYER_RGGB8", + "PIX_FMT_BAYER_GBRG8", + "PIX_FMT_BAYER_GRBG8", + "PIX_FMT_BAYER_BGGR16LE", + "PIX_FMT_BAYER_BGGR16BE", + "PIX_FMT_BAYER_RGGB16LE", + "PIX_FMT_BAYER_RGGB16BE", + "PIX_FMT_BAYER_GBRG16LE", + "PIX_FMT_BAYER_GBRG16BE", + "PIX_FMT_BAYER_GRBG16LE", + "PIX_FMT_BAYER_GRBG16BE", + "PIX_FMT_XVMC", + "PIX_FMT_YUV440P10LE", + "PIX_FMT_YUV440P10BE", + "PIX_FMT_YUV440P12LE", + "PIX_FMT_YUV440P12BE", + "PIX_FMT_AYUV64LE", + "PIX_FMT_AYUV64BE", + "PIX_FMT_VIDEOTOOLBOX", + "PIX_FMT_P010LE", + "PIX_FMT_P010BE", + "PIX_FMT_GBRAP12BE", + "PIX_FMT_GBRAP12LE", + "PIX_FMT_GBRAP10BE", + "PIX_FMT_GBRAP10LE", + "PIX_FMT_MEDIACODEC", + "PIX_FMT_GRAY12BE", + "PIX_FMT_GRAY12LE", + "PIX_FMT_GRAY10BE", + "PIX_FMT_GRAY10LE", + "PIX_FMT_P016LE", + "PIX_FMT_P016BE", + "PIX_FMT_D3D11", + "PIX_FMT_GRAY9BE", + "PIX_FMT_GRAY9LE", + "PIX_FMT_GBRPF32BE", + "PIX_FMT_GBRPF32LE", + "PIX_FMT_GBRAPF32BE", + "PIX_FMT_GBRAPF32LE", + "PIX_FMT_DRM_PRIME", + "PIX_FMT_GACCEL", + "PIX_FMT_OPENCL", + "PIX_FMT_GRAY14BE", + "PIX_FMT_GRAY14LE", + "PIX_FMT_GRAYF32BE", + "PIX_FMT_GRAYF32LE", + "PIX_FMT_VULKAN", + "PIX_FMT_ID_FFMPEG_OUT_OF_SYNC" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "this one indicates an error in the mapping between this enum and libavcodec's" + ], + "type": "string" + }, + "pixelAspectRatio": { + "description": "video pixel aspect ratio", + "format": "double", + "type": "number" + }, + "profile": { + "enum": [ + "PROFILE_UNKNOWN", + "PROFILE_AAC_MAIN", + "PROFILE_AAC_LOW", + "PROFILE_AAC_SSR", + "PROFILE_AAC_LTP", + "PROFILE_AAC_HE", + "PROFILE_AAC_HE_V2", + "PROFILE_AAC_LD", + "PROFILE_AAC_ELD", + "PROFILE_AVC_CONSTRAINED", + "PROFILE_AVC_INTRA", + "PROFILE_AVC_BASELINE", + "PROFILE_AVC_CONSTRAINED_BASELINE", + "PROFILE_AVC_MAIN", + "PROFILE_AVC_EXTENDED", + "PROFILE_AVC_HIGH", + "PROFILE_AVC_HIGH10", + "PROFILE_AVC_HIGH10_INTRA", + "PROFILE_AVC_HIGH422", + "PROFILE_AVC_HIGH422_INTRA", + "PROFILE_AVC_HIGH444", + "PROFILE_HIGH444_PREDICTIVE", + "PROFILE_AVC_HIGH444_INTRA", + "PROFILE_AVC_CAVLC444", + "PROFILE_VP9_0", + "PROFILE_VP9_1", + "PROFILE_VP9_2", + "PROFILE_VP9_3", + "PROFILE_HEVC_MAIN", + "PROFILE_HEVC_MAIN_10", + "PROFILE_HEVC_MAIN_STILL_PICTURE", + "PROFILE_HEVC_REXT", + "PROFILE_DOVI_5" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "(1 \u003c\u003c 8) constrained mode set bit", + "(1 \u003c\u003c 11) intra mode set bit", + "", + "PROFILE_AVC_CONSTRAINED_BASELINE = PROFILE_AVC_BASELINE | PROFILE_AVC_CONSTRAINED", + "", + "", + "", + "", + "PROFILE_AVC_HIGH10_INTRA = PROFILE_AVC_HIGH10 | PROFILE_AVC_INTRA", + "", + "PROFILE_AVC_HIGH422_INTRA = PROFILE_AVC_HIGH422 | PROFILE_AVC_INTRA", + "", + "", + "PROFILE_AVC_HIGH444_INTRA = PROFILE_AVC_HIGH444 | PROFILE_AVC_INTRA", + "", + "Since profile IDs might collide from different codecs, the profile IDs listed below are not identical to the numeric numbers defined in the spec due to collision. Next Profile ID: 10008 PROFILES for VP9. 0", + "1", + "2", + "3", + "1", + "2", + "3", + "4", + "DOVI Profile 5 can only be played as Dolby Vision so it has its own Profile." + ], + "type": "string" + }, + "rationalFps": { + "$ref": "VideoRational32", + "description": "The nominal frame rate ('fps' field) represented as a fraction." + }, + "rotation": { + "description": "Is the video rotated ?", + "enum": [ + "ROTATION_NONE", + "ROTATION_OTHER", + "ROTATION_CW_90", + "ROTATION_CCW_90", + "ROTATION_180" + ], + "enumDescriptions": [ + "No rotation", + "Unspecified non-identity rotation", + "Rotate clockwise by 90 degrees", + "Rotate counter-clockwise by 90 degrees", + "Rotate 180 degrees" + ], + "type": "string" + }, + "seiMessage": { + "description": "video SEI payload types and total payload size of a type this is only for H.264 and H.265", + "items": { + "$ref": "VideoSEIMessage" + }, + "type": "array" + }, + "spherical": { + "$ref": "VideoFileSphericalMetadata", + "description": "Optional spherical video information." + }, + "startTimestamp": { + "description": "Start/end timestamps of audio/video in ms.", + "format": "int64", + "type": "string" + }, + "streamCodecTag": { + "format": "int64", + "type": "string" + }, + "streamIndex": { + "description": "Index of the stream in the file. it is 0 based.", + "format": "int64", + "type": "string" + }, + "userDataUnregistered": { + "description": "User data unregistered SEI message", + "items": { + "$ref": "VideoUserDataUnregistered" + }, + "type": "array" + }, + "width": { + "description": "source video width and height", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoVideoStreamCleanAperture": { + "id": "VideoVideoStreamInfoVideoStreamCleanAperture", + "properties": { + "height": { + "format": "int32", + "type": "integer" + }, + "horizontalOffset": { + "format": "int32", + "type": "integer" + }, + "verticalOffset": { + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "VideoVideoStreamInfoVideoStreamStatistics": { + "id": "VideoVideoStreamInfoVideoStreamStatistics", + "properties": { + "max": { + "format": "int64", + "type": "string" + }, + "mean": { + "format": "double", + "type": "number" + }, + "min": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "VideoYoutubeCommentsClassificationProtoSmartSuggestion": { + "id": "VideoYoutubeCommentsClassificationProtoSmartSuggestion", + "properties": { + "diversificationThreshold": { + "description": "Diversification threshold used in prediction. Additional responses which are closer than the threshold to the already selected responses will be skipped.", + "format": "float", + "type": "number" + }, + "likelihoodBiasWeight": { + "description": "Bias weight used in prediction.", + "format": "float", + "type": "number" + }, + "replyContent": { + "description": "Content of the reply snippet (could include emoji as well as text).", + "type": "string" + }, + "score": { + "description": "Model score for the predicted reply snippet.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "VideoYoutubeCommentsClassificationProtoYouTubeCommentSmartReply": { + "description": "Smart reply suggestions for comment.", + "id": "VideoYoutubeCommentsClassificationProtoYouTubeCommentSmartReply", + "properties": { + "smartSuggestions": { + "description": "The order of the reply snippets in the list determines how they should be displayed in the UI and the client is not supposed to re-order the list using the scores.", + "items": { + "$ref": "VideoYoutubeCommentsClassificationProtoSmartSuggestion" + }, + "type": "array" + }, + "suggestionListIdentifier": { + "description": "Identifier (language_code, channel_id, etc) for the suggestion list from which the top k suggestions are selected.", + "type": "string" + } + }, + "type": "object" + }, + "VideoYoutubeCommentsRankingCTRMetrics": { + "description": "Used for stanza KV pair. Next tag: 7.", + "id": "VideoYoutubeCommentsRankingCTRMetrics", + "properties": { + "downvotes": { + "format": "int64", + "type": "string" + }, + "impressions": { + "format": "int64", + "type": "string" + }, + "measureWindow": { + "enum": [ + "UNKNOWN", + "THREE_DAYS", + "SEVEN_DAYS", + "FULL_HISTORY" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "teaserClicks": { + "format": "int64", + "type": "string" + }, + "teaserImpressions": { + "format": "int64", + "type": "string" + }, + "upvotes": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "WWWDocInfo": { + "description": "Some per-doc info is returned for all www DocInfo requests. Next id: 92", + "id": "WWWDocInfo", + "properties": { + "additionalSafesearchStats": { + "description": "Additional stats output by SafeSearch. See classifier/porn/public/porn-attachments.h.", + "items": { + "format": "uint32", + "type": "integer" + }, + "type": "array" + }, + "authMethod": { + "description": "Sometimes called secureid", + "format": "int32", + "type": "integer" + }, + "badMetadescription": { + "description": "Bad meta flag", + "type": "boolean" + }, + "bodySize": { + "description": "Size of document", + "format": "int32", + "type": "integer" + }, + "bodyTitleLanguages": { + "items": { + "type": "string" + }, + "type": "array" + }, + "boilerplateMetadescription": { + "type": "boolean" + }, + "colorDetectionResult": { + "description": "Detected color in the image in RGB565 format in the lower 16 bits.", + "format": "uint32", + "type": "integer" + }, + "contentType": { + "description": "If not present, then the type", + "format": "int64", + "type": "string" + }, + "coupledUrl": { + "description": "Url of coupled doc (e.g. image)", + "type": "string" + }, + "coupledUrlEncoding": { + "format": "int32", + "type": "integer" + }, + "crawlTime": { + "description": "Last time this doc crawled", + "format": "int64", + "type": "string" + }, + "cropData": { + "description": "Thumbnail cropping information.", + "format": "uint32", + "type": "integer" + }, + "dataVersion": { + "type": "string" + }, + "docVersionId": { + "description": "Fields generated by the docserver, but whose meaning is unclear. Sometimes last crawl time", + "format": "int64", + "type": "string" + }, + "encoding": { + "format": "int64", + "type": "string" + }, + "failsSafeSearch": { + "description": "fails_safe_search is never filled in production.", + "format": "int64", + "type": "string" + }, + "fileTypeId": { + "description": "If converted to TEXT or HTML", + "format": "int64", + "type": "string" + }, + "foreignMetadescription": { + "description": "Indicate if the meta description in a different language than its page.", + "type": "boolean" + }, + "fuzzyMetadescription": { + "type": "boolean" + }, + "googleLabelData": { + "description": "Addition to support google label per-search-result annotation.", + "format": "byte", + "type": "string" + }, + "hasBadSslCertificate": { + "description": "If true, the original document has a bad SSL certificate.", + "type": "boolean" + }, + "imageHeight": { + "description": "image height", + "format": "int32", + "type": "integer" + }, + "imageLicenseInfo": { + "$ref": "ImageSearchImageLicenseInfo", + "description": "Image license info such as license url and how to acquire the license." + }, + "imagePublisher": { + "type": "string" + }, + "imageSize": { + "description": "size in bytes;", + "format": "int32", + "type": "integer" + }, + "imageWidth": { + "description": "image width", + "format": "int32", + "type": "integer" + }, + "indexingTs": { + "description": "The timestamp (the time since the Epoch, in microseconds) when the docjoin is exported from indexing. This is mainly exported and used by Youtube Search. See MustangBasicInfo.indexing_ts for more details.", + "format": "int64", + "type": "string" + }, + "ip": { + "description": "If ipaddr is set, ip should be ignored (it should not be set). Ipaddr should be either 4- or 16-byte string for IPv4 or IPv6 addresses. If ipaddr is not set, ip is set to the IPv4 address for the host.", + "format": "int32", + "type": "integer" + }, + "ipaddr": { + "format": "byte", + "type": "string" + }, + "isAnimated": { + "description": "Is this image animated?", + "type": "boolean" + }, + "isHostedImage": { + "description": "Hosted Images related fields.", + "type": "boolean" + }, + "isPorn": { + "description": "Doc porn classification.", + "type": "boolean" + }, + "isRoboted": { + "description": "Is disallowed for crawling according to host's robots.txt.", + "type": "boolean" + }, + "isSitePorn": { + "description": "Consider the page classification is_porn as an alternative for is_site_porn, and talk to safesearch@google.com for additional information if needed.", + "type": "boolean" + }, + "isSoftporn": { + "description": "Doc softporn classification.", + "type": "boolean" + }, + "language": { + "description": "go/iii-td b/130371355", + "format": "int64", + "type": "string" + }, + "languageTag": { + "description": "This returns the most probable language for the document. The complete set of languages is in the GenericSearchResponse. (If some future use requires all languages from the doc request, note that fetching that will require decoding the entire per-doc data attachment, which is a performance hit) Use docinfo-util.h to set \u0026 read language fields. Language tag as defined by http://www.unicode.org/reports/tr35/#Identifiers and https://tools.ietf.org/html/bcp47 If not present, then use language.", + "type": "string" + }, + "lastModTime": { + "description": "Unused by gws", + "format": "int64", + "type": "string" + }, + "licensedWebImagesOptInState": { + "description": "Indicates the web-master opt-in state of this image. This project is still in MVP stage, please contact us licensed-media-team@ before use.", + "enum": [ + "IMAGES_OPTIN_NONE", + "IMAGES_OPTIN_FULL", + "PAGE_SNIPPET_CONTROL_SIZE_NONE", + "PAGE_SNIPPET_CONTROL_SIZE_STANDARD", + "PAGE_SNIPPET_CONTROL_SIZE_LARGE", + "IMAGE_TAG_SNIPPET_CONTROL_SIZE_NONE", + "IMAGE_TAG_SNIPPET_CONTROL_SIZE_STANDARD", + "IMAGE_TAG_SNIPPET_CONTROL_SIZE_LARGE" + ], + "enumDescriptions": [ + "DEFAULT", + "", + "Followings are extracted from page snippet restriction. Publisher explicitly requires a no-image treatment.", + "Translates to 50k pixels.", + "Translates to 300k pixels.", + "Followings are extracted from per image tag snippet restriction. Publisher explicitly requires a no-image treatment.", + "Translates to 50k pixels.", + "Translates to 300k pixels." + ], + "type": "string" + }, + "lowQualityMetadescription": { + "type": "boolean" + }, + "metaDescriptionLanguages": { + "description": "If meta description/body title were detected to be in a different language from the document language (the 'language' field above) in RosettaLanguageAnnotator, the detected languages are populated here. Note: as of ariane/154728, no more than one language is populated for each field.", + "items": { + "type": "string" + }, + "type": "array" + }, + "nearbyText": { + "description": "Nearby text of the image on landing page. Used to construct Scroll to Image urls.", + "type": "string" + }, + "noimageframeoverlayreason": { + "description": "If not 0, we should not show the image in overlay mode in image snippets.", + "format": "int32", + "type": "integer" + }, + "partialBoilerplateMetadescription": { + "type": "boolean" + }, + "pornStats": { + "description": "'porn_stats' is used in porn demotion and filtering. See classifier/porn/public/porn-attachments.h.", + "format": "int32", + "type": "integer" + }, + "qualityWithoutAdjustment": { + "description": "Quality score (also known as QScore, see go/qscore-faq).", + "format": "float", + "type": "number" + }, + "referrerUrl": { + "description": "Url of referring doc", + "type": "string" + }, + "relatedimages": { + "items": { + "$ref": "WWWDocInfoRelatedImages" + }, + "type": "array" + }, + "rootpageDuplicateMetadescription": { + "description": "True if the meta-description is duplicated on many other pages and this page is the rootpage of such pages which have the same meta-description.", + "type": "boolean" + }, + "seenNoarchive": { + "description": "Has noarchive meta robots flag", + "type": "boolean" + }, + "seenNoindex": { + "description": "Has noindex meta robots flag", + "type": "boolean" + }, + "seenNoodp": { + "description": "NOTE(kinoue): ODP/GWD snippet is unlaunched as of June 2017. This is no longer used.", + "type": "boolean" + }, + "seenNopreview": { + "description": "Has nopreview meta robots flag", + "type": "boolean" + }, + "seenNosnippet": { + "description": "Has nosnippet meta robots flag", + "type": "boolean" + }, + "seenNotranslate": { + "description": "Has notranslate meta robots flag", + "type": "boolean" + }, + "shoppingAttachment": { + "$ref": "QualityShoppingShoppingAttachment" + }, + "shoppingOffers": { + "description": "Shopping offer info from Inventory \u0026 Policy Service.", + "items": { + "$ref": "ImageMustangShoppingOffer" + }, + "type": "array" + }, + "subindex": { + "description": "Subindex id of the document should be one of the values defined by enum CompositeDoc::SubIndexType. Used for superroot/gws logging if a shard has documents from multiple indices.", + "format": "int32", + "type": "integer" + }, + "thumbHeight": { + "description": "thumbnail height", + "format": "int32", + "type": "integer" + }, + "thumbWidth": { + "description": "Additions for image search.", + "format": "int32", + "type": "integer" + }, + "thumbnail": { + "items": { + "$ref": "WWWDocInfoThumbnail" + }, + "type": "array" + }, + "title": { + "description": "Landing page title.", + "type": "string" + }, + "unionBuildTime": { + "format": "int64", + "type": "string" + }, + "url": { + "description": "Url", + "type": "string" + }, + "urlAfterRedirects": { + "description": "empty =\u003e same as url", + "type": "string" + }, + "urlEncoding": { + "description": "See webutil/urlencoding", + "format": "int32", + "type": "integer" + }, + "visibleImage": { + "description": "If an image request, was the coupled image visible on the page?", + "type": "boolean" + }, + "visualType": { + "description": "Is this doc visual RTL? See enum VisualType in visualtype.h. Default is NOT_VISUAL_DOCUMENT.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "WWWDocInfoRelatedImages": { + "description": "Return related images.", + "id": "WWWDocInfoRelatedImages", + "properties": { + "imageDocid": { + "format": "uint64", + "type": "string" + }, + "thumbHeight": { + "format": "int32", + "type": "integer" + }, + "thumbType": { + "enum": [ + "THUMBNAIL_TYPE_DEFAULT", + "THUMBNAIL_TYPE_AREA_50K", + "THUMBNAIL_TYPE_400", + "THUMBNAIL_TYPE_800", + "THUMBNAIL_TYPE_ORIGINAL", + "THUMBNAIL_TYPE_ORIGINAL_HQ", + "THUMBNAIL_TYPE_FAVICON_16", + "THUMBNAIL_TYPE_FAVICON_32", + "THUMBNAIL_TYPE_FAVICON_64", + "THUMBNAIL_TYPE_FAVICON_ORIGINAL", + "THUMBNAIL_TYPE_FAVICON_16_DARK", + "THUMBNAIL_TYPE_FAVICON_32_DARK", + "THUMBNAIL_TYPE_FAVICON_64_DARK", + "THUMBNAIL_TYPE_FAVICON_ORIGINAL_DARK", + "THUMBNAIL_TYPE_1080", + "THUMBNAIL_TYPE_1600_HQ", + "THUMBNAIL_TYPE_AREA_300K", + "THUMBNAIL_TYPE_AREA_50K_ALPHA", + "THUMBNAIL_TYPE_AREA_50K_SYNTHETIC_ALPHA", + "THUMBNAIL_TYPE_AREA_2M", + "THUMBNAIL_TYPE_AREA_2M_METADATA", + "THUMBNAIL_TYPE_800_ALPHA_WHITE", + "THUMBNAIL_TYPE_ORIGINAL_ALPHA_WHITE", + "THUMBNAIL_TYPE_ANIMATED_H144", + "THUMBNAIL_TYPE_ORIGINAL_HQ_LICENSED", + "THUMBNAIL_TYPE_TENOR_250K_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_GIF", + "THUMBNAIL_TYPE_TENOR_30K_OPTIMIZED_THUMBNAIL_GIF", + "THUMBNAIL_TYPE_TENOR_45K_OPTIMIZED_90P_GIF", + "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100P_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200P_GIF", + "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100W_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200W_GIF", + "THUMBNAIL_TYPE_TENOR_45K_PREVIEW_GIF", + "THUMBNAIL_TYPE_TENOR_250K_MEDIUM_GIF", + "THUMBNAIL_TYPE_AREA_2M_WEBP", + "THUMBNAIL_TYPE_AREA_2M_WEBP_METADATA", + "THUMBNAIL_TYPE_AREA_2M_AVIF", + "THUMBNAIL_TYPE_AREA_2M_AVIF_METADATA", + "THUMBNAIL_TYPE_AREA_50K_WEBP", + "THUMBNAIL_TYPE_AREA_50K_AVIF", + "THUMBNAIL_TYPE_ORIGINAL_HQ_KG" + ], + "enumDescriptions": [ + "DEPRECATED - use THUMBNAIL_TYPE_AREA_50K if possible. The default thumbnail type is deprecated and no longer served by SFFE. For legacy users (e.g. imagesearch heirloom UI) you must request a downsized THUMBNAIL_TYPE_AREA_50K thumbnail.", + "This is the most common thumbnail type, used in image search results. It is defined to have 50625 pixels (= 225 x 225).", + "This refers to a thumbnail that fits in a 400x400 box.", + "This refers to a thumbnail that fits in a 800x800 box.", + "This refers to re-encoding original image to JPEG at the same size (up to 10000x10000). Output quality may be lower.", + "Re-encode image at the same size as original (up to 10000x10000) but with high-quality (q=90). This was introduced by TYPHOON client and is expected only for very few images in our table (under 10k). If you plan to use this contact amarna-dev@ and/or crt@", + "These refer to favicon thumbnails of 16x16, 32x32 or 64x64. If the original image is an ico file containing multiple embedded images including 16x16, 32x32 or 64x64, these thumbnails are derived from the embedded image of the corresponding size. (If no such embedded image is found, prefer the closest size that's larger. If still no such size exists, prefer largest.) If no such size exists, these thumbnails are rescaled to an image whose maximum dimension is 16, 32 or 64.", + "", + "", + "This type of favicon will preserve the size of the original image.", + "These refer to favicon thumbnails for dark mode. This triggers dark mode on the SVG decoding (and otherwise, the same as the above favicon types)", + "", + "", + "", + "This refers to a thumbnail that fits in a 1080x1080 box.", + "This refers to a thumbnail that fits in a 1600x1600 box and is encoded with high-quality (q=90). Contact amarna-dev@/crt@/bingwang@ for using it.", + "This uses the same MaxAreaSizer as THUMBNAIL_TYPE_AREA_50K. The exact area is defined to be 307200 (= 640 x 480).", + "This is like THUMBNAIL_TYPE_AREA_50K, but with an alpha channel.", + "DEPRECATED - Please do not introduce new requests for this type. It will be eliminated soon. Until then, it will behave like the AREA_50K_ALPHA type -- use that instead.", + "This refers to a thumbnail with at most 2073600 pixels (=1920*1080). The image will be scaled down to 2M while preserving the aspect ratio if it's too large. If the thumbnail is in JPEG format, it is encoded with quality = 85. Besides, it supports alpha channel by default and does not convert lossless formats to JPEG.", + "Similar to THUMBNAIL_TYPE_AREA_2M, but with the source image metadata propagated.", + "In alpha-white thumbs, colors are remapped in RGBA to be more transparent the closer they are to white. This is for use with white-background images, so that the perceived background color can be darkened by rendering over gray. See go/alpha-white-thumbs for details and limitations. Sizing matches non-ALPHA_WHITE equivalents.", + "", + "Height-scaled animated thumb types, encoded as H264 previews. Suffix gives height, e.g. _H144 indicates height 144. Width is a scaled multiple-of-8 value so the thumb has approximately the same aspect ratio as the original. For more info, see http://go/animated-thumbs.", + "New thumbnail type for licensed contents. From a thumbnail generation perspective this behaves similarly to THUMBNAIL_TYPE_ORIGINAL_HQ, but it exists as a separate thumbnail type to enable takedowns requested by owner. WARNING: This type is primarily used by go/licensed-media-service and is subject to policy changes. Please contact g/license-media-service-team before using.", + "Tenor gifs go/tenor-integration-binary-serving-discussion", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Similar to THUMBNAIL_TYPE_AREA_2M but pre-transcoded to WebP and AVIF format, as those two format can be slow to transcode in serving time. Currently only generated for AMP images. These two thumbnails are static images despite that their formats support animation.", + "Similar to THUMBNAIL_TYPE_AREA_2M_WEBP, but with the source image metadata propagated.", + "AVIF is not yet a supported input for SCS serving time thumbnailing, trying to do so will give errors.", + "Similar to THUMBNAIL_TYPE_AREA_2M_AVIF, but with the source image metadata propagated.", + "WebP format. Currently only generated for navboost images.", + "AVIF format. Currently only generated for navboost images.", + "WARNING: This type is dedicated to KG_IMAGE client. http://b/234653726" + ], + "type": "string" + }, + "thumbWidth": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "WWWDocInfoThumbnail": { + "id": "WWWDocInfoThumbnail", + "properties": { + "expirationTimestampMicros": { + "format": "int64", + "type": "string" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "type": { + "description": "The type here corresponds to image_base::ThumbnailType defined in image/base/thumbnail-type.proto.", + "format": "int32", + "type": "integer" + }, + "width": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "WWWMetaTag": { + "description": "We can return the content attribute for some or all meta tags.", + "id": "WWWMetaTag", + "properties": { + "content": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "type": "object" + }, + "WWWResultInfoSubImageDocInfo": { + "description": "The following message contains info of sub image docs, it is populated in query_state and consumed in web image boost twiddler: (go/WebImageBoostTwiddler).", + "id": "WWWResultInfoSubImageDocInfo", + "properties": { + "additionalSafesearchSignals": { + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "bestThumbnailType": { + "description": "The best thumbnail type is either 300K or 50K.", + "enum": [ + "THUMBNAIL_TYPE_DEFAULT", + "THUMBNAIL_TYPE_AREA_50K", + "THUMBNAIL_TYPE_400", + "THUMBNAIL_TYPE_800", + "THUMBNAIL_TYPE_ORIGINAL", + "THUMBNAIL_TYPE_ORIGINAL_HQ", + "THUMBNAIL_TYPE_FAVICON_16", + "THUMBNAIL_TYPE_FAVICON_32", + "THUMBNAIL_TYPE_FAVICON_64", + "THUMBNAIL_TYPE_FAVICON_ORIGINAL", + "THUMBNAIL_TYPE_FAVICON_16_DARK", + "THUMBNAIL_TYPE_FAVICON_32_DARK", + "THUMBNAIL_TYPE_FAVICON_64_DARK", + "THUMBNAIL_TYPE_FAVICON_ORIGINAL_DARK", + "THUMBNAIL_TYPE_1080", + "THUMBNAIL_TYPE_1600_HQ", + "THUMBNAIL_TYPE_AREA_300K", + "THUMBNAIL_TYPE_AREA_50K_ALPHA", + "THUMBNAIL_TYPE_AREA_50K_SYNTHETIC_ALPHA", + "THUMBNAIL_TYPE_AREA_2M", + "THUMBNAIL_TYPE_AREA_2M_METADATA", + "THUMBNAIL_TYPE_800_ALPHA_WHITE", + "THUMBNAIL_TYPE_ORIGINAL_ALPHA_WHITE", + "THUMBNAIL_TYPE_ANIMATED_H144", + "THUMBNAIL_TYPE_ORIGINAL_HQ_LICENSED", + "THUMBNAIL_TYPE_TENOR_250K_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_GIF", + "THUMBNAIL_TYPE_TENOR_30K_OPTIMIZED_THUMBNAIL_GIF", + "THUMBNAIL_TYPE_TENOR_45K_OPTIMIZED_90P_GIF", + "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100P_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200P_GIF", + "THUMBNAIL_TYPE_TENOR_50K_OPTIMIZED_100W_GIF", + "THUMBNAIL_TYPE_TENOR_100K_OPTIMIZED_200W_GIF", + "THUMBNAIL_TYPE_TENOR_45K_PREVIEW_GIF", + "THUMBNAIL_TYPE_TENOR_250K_MEDIUM_GIF", + "THUMBNAIL_TYPE_AREA_2M_WEBP", + "THUMBNAIL_TYPE_AREA_2M_WEBP_METADATA", + "THUMBNAIL_TYPE_AREA_2M_AVIF", + "THUMBNAIL_TYPE_AREA_2M_AVIF_METADATA", + "THUMBNAIL_TYPE_AREA_50K_WEBP", + "THUMBNAIL_TYPE_AREA_50K_AVIF", + "THUMBNAIL_TYPE_ORIGINAL_HQ_KG" + ], + "enumDescriptions": [ + "DEPRECATED - use THUMBNAIL_TYPE_AREA_50K if possible. The default thumbnail type is deprecated and no longer served by SFFE. For legacy users (e.g. imagesearch heirloom UI) you must request a downsized THUMBNAIL_TYPE_AREA_50K thumbnail.", + "This is the most common thumbnail type, used in image search results. It is defined to have 50625 pixels (= 225 x 225).", + "This refers to a thumbnail that fits in a 400x400 box.", + "This refers to a thumbnail that fits in a 800x800 box.", + "This refers to re-encoding original image to JPEG at the same size (up to 10000x10000). Output quality may be lower.", + "Re-encode image at the same size as original (up to 10000x10000) but with high-quality (q=90). This was introduced by TYPHOON client and is expected only for very few images in our table (under 10k). If you plan to use this contact amarna-dev@ and/or crt@", + "These refer to favicon thumbnails of 16x16, 32x32 or 64x64. If the original image is an ico file containing multiple embedded images including 16x16, 32x32 or 64x64, these thumbnails are derived from the embedded image of the corresponding size. (If no such embedded image is found, prefer the closest size that's larger. If still no such size exists, prefer largest.) If no such size exists, these thumbnails are rescaled to an image whose maximum dimension is 16, 32 or 64.", + "", + "", + "This type of favicon will preserve the size of the original image.", + "These refer to favicon thumbnails for dark mode. This triggers dark mode on the SVG decoding (and otherwise, the same as the above favicon types)", + "", + "", + "", + "This refers to a thumbnail that fits in a 1080x1080 box.", + "This refers to a thumbnail that fits in a 1600x1600 box and is encoded with high-quality (q=90). Contact amarna-dev@/crt@/bingwang@ for using it.", + "This uses the same MaxAreaSizer as THUMBNAIL_TYPE_AREA_50K. The exact area is defined to be 307200 (= 640 x 480).", + "This is like THUMBNAIL_TYPE_AREA_50K, but with an alpha channel.", + "DEPRECATED - Please do not introduce new requests for this type. It will be eliminated soon. Until then, it will behave like the AREA_50K_ALPHA type -- use that instead.", + "This refers to a thumbnail with at most 2073600 pixels (=1920*1080). The image will be scaled down to 2M while preserving the aspect ratio if it's too large. If the thumbnail is in JPEG format, it is encoded with quality = 85. Besides, it supports alpha channel by default and does not convert lossless formats to JPEG.", + "Similar to THUMBNAIL_TYPE_AREA_2M, but with the source image metadata propagated.", + "In alpha-white thumbs, colors are remapped in RGBA to be more transparent the closer they are to white. This is for use with white-background images, so that the perceived background color can be darkened by rendering over gray. See go/alpha-white-thumbs for details and limitations. Sizing matches non-ALPHA_WHITE equivalents.", + "", + "Height-scaled animated thumb types, encoded as H264 previews. Suffix gives height, e.g. _H144 indicates height 144. Width is a scaled multiple-of-8 value so the thumb has approximately the same aspect ratio as the original. For more info, see http://go/animated-thumbs.", + "New thumbnail type for licensed contents. From a thumbnail generation perspective this behaves similarly to THUMBNAIL_TYPE_ORIGINAL_HQ, but it exists as a separate thumbnail type to enable takedowns requested by owner. WARNING: This type is primarily used by go/licensed-media-service and is subject to policy changes. Please contact g/license-media-service-team before using.", + "Tenor gifs go/tenor-integration-binary-serving-discussion", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Similar to THUMBNAIL_TYPE_AREA_2M but pre-transcoded to WebP and AVIF format, as those two format can be slow to transcode in serving time. Currently only generated for AMP images. These two thumbnails are static images despite that their formats support animation.", + "Similar to THUMBNAIL_TYPE_AREA_2M_WEBP, but with the source image metadata propagated.", + "AVIF is not yet a supported input for SCS serving time thumbnailing, trying to do so will give errors.", + "Similar to THUMBNAIL_TYPE_AREA_2M_AVIF, but with the source image metadata propagated.", + "WebP format. Currently only generated for navboost images.", + "AVIF format. Currently only generated for navboost images.", + "WARNING: This type is dedicated to KG_IMAGE client. http://b/234653726" + ], + "type": "string" + }, + "crops": { + "format": "uint32", + "type": "integer" + }, + "deepCropBytes": { + "description": "Deepcrop thumbnail cropping hints.", + "format": "byte", + "type": "string" + }, + "docid": { + "format": "uint64", + "type": "string" + }, + "documentTrust": { + "format": "float", + "type": "number" + }, + "eqStar": { + "description": "EQ* is a unified signal to capture the emotional quality (e.g. inspiration, lifestyle, context, etc.) of an image. For more information, please refer to go/image-inspiration-ranking-framework.", + "format": "float", + "type": "number" + }, + "estRelevance": { + "description": "Estimated Image Relevance ranging between 0.0 (Off-Topic) to 1.0 (Very Useful).", + "format": "float", + "type": "number" + }, + "flowOutput": { + "$ref": "ImageContentFlowProtoProd" + }, + "height": { + "format": "int32", + "type": "integer" + }, + "height50k": { + "format": "uint32", + "type": "integer" + }, + "humanModelScore": { + "description": "DeepTags human model score. go/VisualShoppingImageAttributes", + "format": "float", + "type": "number" + }, + "imageUrl": { + "type": "string" + }, + "pamirNormalizedScore": { + "format": "float", + "type": "number" + }, + "pornSignals": { + "description": "Encoded Safe Search annotations of the image. See image/safesearch/overall/public/image_porn_attachments.h for decoding functions.", + "format": "int32", + "type": "integer" + }, + "safeForUniversal": { + "description": "Result is not on the Images Universal blacklist. For more comprehensive filtering of IU images, including this bit, see superroot/impls/images/quality/safesearch/iu_inappropriate_filter_lib.h", + "type": "boolean" + }, + "salience": { + "description": "Salient score, indicating how important an image is to the page it's on. Check go/salient-images-design-doc for details.", + "format": "float", + "type": "number" + }, + "salientColorInfo": { + "description": "4-bytes: (low order on the left) RRRRRRRR GGGGGGGG BBBBBBBB SS where R: 8-bits encoding color 'r' G: 8-bits encoding color 'g' B: 8-bits encoding color 'b' S: 2-bits encoding the color source - 00 = from color detection result - 01 = from cairo This field has the salient color information.", + "format": "uint32", + "type": "integer" + }, + "score": { + "format": "float", + "type": "number" + }, + "tqStar": { + "description": "TQ* is a signal to capture the technical quality (e.g. exposure, sharpness, composition, etc.) of an image. For more information, please refer to go/tqstar.", + "format": "float", + "type": "number" + }, + "tradFrac": { + "format": "float", + "type": "number" + }, + "width": { + "format": "int32", + "type": "integer" + }, + "width50k": { + "description": "Width and height of the AREA_50K thumbnail for this image.", + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "WWWSnippetResponse": { + "description": "Per-document response for a www DocInfo request. Next field position: 55", + "id": "WWWSnippetResponse", + "properties": { + "answerDocMatches": { + "description": "A list of answers that had at least one hit in the document. Answers are identified by their index into the QRewriteQueryParams_AnswerSnippetInfo array (see //query/proto/query-params.proto).", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "chosenBodyTidbits": { + "description": "Tidbits chosen from the document body. Consists of repeated [begin, end) half-open ranges in token offsets from the beginning of the document.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "docInfo": { + "$ref": "WWWDocInfo" + }, + "docPreviewRestrictions": { + "$ref": "QualityDniDocPreviewRestrictions", + "description": "DocPreviewRestrictions for canonical url." + }, + "docPreviewRestrictionsForAmp": { + "$ref": "QualityDniDocPreviewRestrictions", + "description": "DocPreviewRestrictions for amp result." + }, + "events": { + "description": "Bitfield of snippet events and the various events. See SnippetEvents in ./snippets/defines.h for details on the contents.", + "format": "uint64", + "type": "string" + }, + "extraInfo": { + "$ref": "ExtraSnippetInfoResponse", + "description": "If requested, the extra snippet info" + }, + "findyTidbits": { + "description": "A bitvector of the tidbits in the snippet that are appropriate for the Quick Scroll (Findy) Chrome extension. Typically these contain \"extra body matches\", i.e., important query items not in the title.", + "format": "int32", + "type": "integer" + }, + "hasMessageType": { + "description": "Additional available data (message type ids)", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "info": { + "$ref": "Proto2BridgeMessageSet", + "description": "Additional data. Currently, this is used for sitelinks, localinfo, manybox, discussion metadata, richsnippets, similarpages and breadcrumbs." + }, + "isLoginPage": { + "description": "True if the document represents a login page.", + "type": "boolean" + }, + "isValidResult": { + "description": "Assume this is true unless we discover that the result doesn't match the the query, in which case this result is invalid despite having returned docinfo.", + "type": "boolean" + }, + "keyword": { + "description": "Document keywords", + "items": { + "type": "string" + }, + "type": "array" + }, + "listSnippet": { + "$ref": "ListSnippetResponse", + "description": "List snippet data." + }, + "listSummary": { + "description": "List summary phrase for list pages.", + "type": "string" + }, + "longStructuredSnippet": { + "$ref": "LongStructuredSnippet", + "description": "Returned if want_long_structured_snippets. If present, caller should ignore the normal snippet." + }, + "matchesBitmapEncoded": { + "description": "Bitmap representing matches to leaf query terms within document (body section and url). It gets populated if query_matches_info = true.", + "format": "byte", + "type": "string" + }, + "matchesBitmapSize": { + "format": "int32", + "type": "integer" + }, + "metaTags": { + "description": "Meta tags", + "items": { + "$ref": "WWWMetaTag" + }, + "type": "array" + }, + "numTokensSkippedByInDocRestrictionsInPrinting": { + "description": "Similar to num_tokens_skipped_by_in_doc_restrictions_in_scoring, but this number is for tokens skipped during printing, since printer owns its own token info manager which populates tokens.", + "format": "int32", + "type": "integer" + }, + "numTokensSkippedByInDocRestrictionsInScoring": { + "description": "Number of tokens that is skipped because of in doc restrictions during scoring. This is an estimate, as the list of tokens is cached in TokenInfoManager. We should only monitor the cases where this number is too big or non-zero.", + "format": "int32", + "type": "integer" + }, + "numberOfPages": { + "format": "int32", + "type": "integer" + }, + "obsoleteLocalinfo": { + "description": "LocalWWWInfo", + "type": "string" + }, + "obsoleteManybox": { + "description": "ManyboxData", + "type": "string" + }, + "obsoleteSitemap": { + "description": "These fields were previously optional messages, but CL 2388905 moved them into the MessageSet. However, at this time, old Mustang binaries are still deployed in production and probably will be around for awhile. So, servers which need to talk to old binaries and need to use these fields need to check both the obsolete versions and the MessageSet version. Sitemap", + "type": "string" + }, + "odp": { + "description": "Was odp used in the snippets? DEPRECATED - this is no longer populated as of June 2017.", + "type": "boolean" + }, + "orionEntities": { + "$ref": "OrionDocEntitiesProto", + "description": "DEPRECATED If requested, the orion entities" + }, + "scienceInfo": { + "$ref": "ScienceIndexSignal", + "description": "Abbreviated bibliographic data from Google Scholar." + }, + "sectionHeadingAnchorName": { + "type": "string" + }, + "sectionHeadingText": { + "description": "If requested, the snippet generator may take note of query items present in an entry in an on-page table-of-contents (i.e. a series of on-page links to named anchors.) If so, these two fields contain the formatted and highlighted entry and the name of the on-page anchor it links to, respectively. This may be used by GWS to show a direct link to that named anchor on the page.", + "type": "string" + }, + "seenNotTerm": { + "description": "Did a negative query term match the meta description?", + "type": "boolean" + }, + "sentimentSnippets": { + "description": "DEPRECATED Sentiment snippets", + "items": { + "$ref": "RepositoryAnnotationsMustangSentimentSnippetAnnotations" + }, + "type": "array" + }, + "siteDisplayName": { + "description": "The display name of the document's domain used as the first part of VisUrl, e.g, \"Google \u003e play \u003e store\" is the VisUrl of \"https://play.google.com/store/\". Wherein, \"Google\" is site_display_name of the domain \"google.com\". See go/site-display-name for more details.", + "type": "string" + }, + "snippetBylineDate": { + "description": "Byline date for time sensitive snippets. Most of the time it originates from quality_timebased::SyntacticDate and it is floored to PT midnight.", + "format": "int64", + "type": "string" + }, + "snippetExtraInfo": { + "$ref": "SnippetExtraInfo" + }, + "snippetHighlightMatchesBitmap": { + "description": "List of bitmaps representing matches to leaf query terms within each of the highlighted snippet text fragments. Consecutive bitmaps correspond to consecutive text fragments. It gets populated iff return_query_snippet_highlight_matches = true. Example: document body section: \"This cafe has pet friendly patio.\" squery: (a (o dog :o pet :syn:general) friendly :o (o restaurant :o cafe :syn:general)) Let's assume the returned snippet text contains the whole document body section where two fragments get highlighted as follows: \"This *cafe* has *pet friendly* patio.\" Then, the returned snippet_highlight_matches_bitmap[] list will have two bitmaps: bitmap[0] = \u003c\"cafe\" -\u003e leaf term with index 4\u003e = {encoded: DenseEncode(\"00001\"), size: 5} bitmap[1] = \u003c\"pet\" and \"friendly\" -\u003e leaf terms with indexes 1 and 2\u003e = {encoded: DenseEncode(\"011\"), size: 3}", + "items": { + "$ref": "WWWSnippetResponseBitmapPB" + }, + "type": "array" + }, + "snippetPageNumber": { + "description": "If requested the page number on which the snippet begins. (Only for documents such as PDFs where page numbers are well-defined.)", + "format": "int32", + "type": "integer" + }, + "snippetPrefixCharCount": { + "description": "Character counts of snippet prefix, if any. E.g. section heading, list summary, byline date.", + "format": "int32", + "type": "integer" + }, + "snippetRenderedToken": { + "description": "How tokens are rendered in generating snippet.", + "items": { + "$ref": "MustangSnippetsRenderedToken" + }, + "type": "array" + }, + "snippethash": { + "description": "A hash for duplicate detection. Two results with the same content can return different snippets if, for example, one has an ODP entry and the other does not. Gws can use this value reliably to filter duplicates. It is a hash of body only tidbits.", + "format": "int64", + "type": "string" + }, + "snippetsRanklabFeatures": { + "$ref": "MustangReposWwwSnippetsSnippetsRanklabFeatures", + "description": "Records features to analyze titles/snippets in ranklab." + }, + "squeryFingerprint": { + "description": "This field is never set.", + "format": "uint64", + "type": "string" + }, + "titleLengthAdjustedForBrowserWidth": { + "description": "True if the title length is already adjusted for the browser width. If it is true, GWS needs not truncate the title.", + "type": "boolean" + }, + "titleRenderedToken": { + "description": "How tokens are rendered in generating title. Note: In rendering a title, the page title part and the site/host/domain title part can be flipped after initial rendering. The flip, if happend, may not be reflected in this field. That is, this field may contain the tokens in the original, pre-flip, order.", + "items": { + "$ref": "MustangSnippetsRenderedToken" + }, + "type": "array" + }, + "titleSizeParams": { + "$ref": "TitleSizeParams", + "description": "Will only be set when `title_use_num_of_chars` is false." + }, + "truncatedTitle": { + "description": "Only for desktop web search. Please refer to Title.keep_original_title_and_populate_truncated_one for more details.", + "type": "string" + } + }, + "type": "object" + }, + "WWWSnippetResponseBitmapPB": { + "description": "Encoded bitmap.", + "id": "WWWSnippetResponseBitmapPB", + "properties": { + "encoded": { + "format": "byte", + "type": "string" + }, + "size": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "WatchpageLanguageWatchPageLanguageResult": { + "id": "WatchpageLanguageWatchPageLanguageResult", + "properties": { + "watchpageLanguage": { + "description": "The language predicted by the WatchPage Language model.", + "enum": [ + "ENGLISH", + "DANISH", + "DUTCH", + "FINNISH", + "FRENCH", + "GERMAN", + "HEBREW", + "ITALIAN", + "JAPANESE", + "KOREAN", + "NORWEGIAN", + "POLISH", + "PORTUGUESE", + "RUSSIAN", + "SPANISH", + "SWEDISH", + "CHINESE", + "CZECH", + "GREEK", + "ICELANDIC", + "LATVIAN", + "LITHUANIAN", + "ROMANIAN", + "HUNGARIAN", + "ESTONIAN", + "TG_UNKNOWN_LANGUAGE", + "UNKNOWN_LANGUAGE", + "BULGARIAN", + "CROATIAN", + "SERBIAN", + "IRISH", + "GALICIAN", + "TAGALOG", + "TURKISH", + "UKRAINIAN", + "HINDI", + "MACEDONIAN", + "BENGALI", + "INDONESIAN", + "LATIN", + "MALAY", + "MALAYALAM", + "WELSH", + "NEPALI", + "TELUGU", + "ALBANIAN", + "TAMIL", + "BELARUSIAN", + "JAVANESE", + "OCCITAN", + "URDU", + "BIHARI", + "GUJARATI", + "THAI", + "ARABIC", + "CATALAN", + "ESPERANTO", + "BASQUE", + "INTERLINGUA", + "KANNADA", + "PUNJABI", + "SCOTS_GAELIC", + "SWAHILI", + "SLOVENIAN", + "MARATHI", + "MALTESE", + "VIETNAMESE", + "FRISIAN", + "SLOVAK", + "CHINESE_T", + "FAROESE", + "SUNDANESE", + "UZBEK", + "AMHARIC", + "AZERBAIJANI", + "GEORGIAN", + "TIGRINYA", + "PERSIAN", + "BOSNIAN", + "SINHALESE", + "NORWEGIAN_N", + "PORTUGUESE_P", + "PORTUGUESE_B", + "XHOSA", + "ZULU", + "GUARANI", + "SESOTHO", + "TURKMEN", + "KYRGYZ", + "BRETON", + "TWI", + "YIDDISH", + "SERBO_CROATIAN", + "SOMALI", + "UIGHUR", + "KURDISH", + "MONGOLIAN", + "ARMENIAN", + "LAOTHIAN", + "SINDHI", + "RHAETO_ROMANCE", + "AFRIKAANS", + "LUXEMBOURGISH", + "BURMESE", + "KHMER", + "TIBETAN", + "DHIVEHI", + "CHEROKEE", + "SYRIAC", + "LIMBU", + "ORIYA", + "ASSAMESE", + "CORSICAN", + "INTERLINGUE", + "KAZAKH", + "LINGALA", + "MOLDAVIAN", + "PASHTO", + "QUECHUA", + "SHONA", + "TAJIK", + "TATAR", + "TONGA", + "YORUBA", + "CREOLES_AND_PIDGINS_ENGLISH_BASED", + "CREOLES_AND_PIDGINS_FRENCH_BASED", + "CREOLES_AND_PIDGINS_PORTUGUESE_BASED", + "CREOLES_AND_PIDGINS_OTHER", + "MAORI", + "WOLOF", + "ABKHAZIAN", + "AFAR", + "AYMARA", + "BASHKIR", + "BISLAMA", + "DZONGKHA", + "FIJIAN", + "GREENLANDIC", + "HAUSA", + "HAITIAN_CREOLE", + "INUPIAK", + "INUKTITUT", + "KASHMIRI", + "KINYARWANDA", + "MALAGASY", + "NAURU", + "OROMO", + "RUNDI", + "SAMOAN", + "SANGO", + "SANSKRIT", + "SISWANT", + "TSONGA", + "TSWANA", + "VOLAPUK", + "ZHUANG", + "KHASI", + "SCOTS", + "GANDA", + "MANX", + "MONTENEGRIN", + "AKAN", + "IGBO", + "MAURITIAN_CREOLE", + "HAWAIIAN", + "CEBUANO", + "EWE", + "GA", + "HMONG", + "KRIO", + "LOZI", + "LUBA_LULUA", + "LUO_KENYA_AND_TANZANIA", + "NEWARI", + "NYANJA", + "OSSETIAN", + "PAMPANGA", + "PEDI", + "RAJASTHANI", + "SESELWA_CREOLE_FRENCH", + "TUMBUKA", + "VENDA", + "WARAY_PHILIPPINES", + "NUM_LANGUAGES" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Norwegian\" = \"no\" normally implies Bokmål (\"nb\"). See also NORWEGIAN_N. Consider using IsNorwegianLanguage().", + "", + "WARNING: \"Portuguese\" in the enum Language implies the Iberian variant, while Google and industry standard practice is for \"pt\" to imply Brazilian, for the much larger population. The old LanguageCode() function returns \"pt\" for legacy reasons. The III LanguageEnumLanguageCodeConverter converts it to \"pt-PT\" to preserve the semantics. Converting between this legacy enum and industry-standard language tags cannot preserve the distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage().", + "", + "", + "", + "\"Chinese\" normally implies simplified Han characters (\"zh-Hans\"). See also CHINESE_T. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage().", + "", + "", + "", + "", + "", + "", + "Serbian is commonly written in two scripts. The default is Cyrillic (\"sr\" = \"sr-Cyrl\"). It is also often written with Latin letters (\"sr-Latn\"). This enum does not convey that distinction.", + "", + "", + "TAGALOG is used to mean both Tagalog (tl) and Filipino (fil). These are nearly the same; Filipino is the official language, and \"fil\" is normally used for UI settings etc. The old LanguageCode() function returns \"tl\".", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "\"Bihari\" is not a language: There are several different languages spoken in and around the Indian state of Bihar. This is like saying \"Swiss\" to mean German+French+Italian+Romansh.", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "Chinese written in traditional Han characters (\"zh-Hant\"). See also CHINESE. Consider using IsChineseLanguage().", + "", + "", + "", + "", + "", + "", + "UI only.", + "", + "UI only. LangId language: CROATIAN (28)", + "", + "Norwegian Nynorsk (\"nn\"). See also NORWEGIAN. Consider using IsNorwegianLanguage(). UI only. LangId language: NORWEGIAN (10)", + "Portuguese in Portugal (\"pt-PT\"). See the WARNING at PORTUGUESE. Avoid a distinction between PORTUGUESE and PORTUGUESE_P. Relying on it is a bug. Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "Portuguese in Brazil (\"pt-BR\"). Consider using IsPortugueseLanguage(). UI only. LangId language: PORTUGUESE (12)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "", + "UI only.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "", + "This has been documented as \"Kurmanji (kmr) + Sorani (ckb) + Kurdish (ku)\". There are several kinds of Kurdish languages. \"ku\" normally implies Northern Kurdish = Kurmanji (kmr) which is normally written in Latin letters. \"ckb\" is Central Kurdish (largely in Iraq) which is normally written in Arabic letters (thus right-to-left).", + "", + "", + "", + "", + "UI only.", + "", + "", + "", + "", + "", + "sometimes spelled Divehi; lang of Maldives", + "", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "\"Moldavian\" is the same language as Romanian. In language tags, \"ro-MD\" can be used but is not normally necessary. Avoid making a distinction between ROMANIAN and MOLDAVIAN. Consider using IsRomanianLanguage(). UI only. LangId language: ROMANIAN (22)", + "", + "", + "UI only.", + "", + "", + "", + "", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "This is a vague group of languages, not one language. UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "UI only. More commonly called Luganda.", + "UI only.", + "UI only. LangId language: SERBIAN (29)", + "UI only.", + "UI only.", + "UI only.", + "UI only.", + "Translate only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "CLD only.", + "Translate only.", + "Translate only.", + "CLD only.", + "Translate only.", + "CLD only.", + "CLD only.", + "CLD only.", + "Translate only.", + "Always keep this at the end. It is not a" + ], + "type": "string" + } + }, + "type": "object" + }, + "WeboftrustLiveResultDocBoostData": { + "description": "Page boosting using Live Results data. Attaching this proto to a document indicates that a Live Result feed exists for that document, and that this feed has sufficient reliability to warrant potential boosting of the document rank. Next ID: 3", + "id": "WeboftrustLiveResultDocBoostData", + "properties": { + "boostLevel": { + "description": "Identifies the degree to which the existence of this LiveResult should boost a query's score (when the query is performed within the hot_times range). This field is always in the range [0,1]. A missing field, a value of 0, or a value outside the legal range indicates that no boosting is performed. A value of 1 indicates that the maximum level of boosting will be applied. This field will be updated from time to time based on CTR and other signals.", + "format": "float", + "type": "number" + }, + "hotTimes": { + "$ref": "WeboftrustTimeRange", + "description": "Specifies the time range within which this LiveResult is relevant. Used for deciding whether the rank of the corresponding page should be boosted. For example, this range can be set to encompass a few days before and after a sports game to which the page refers. If this field is missing, no boosting is performed. Specifying that a page should always be boosted is not recommended, but can be accomplished by setting hot_times.start_unix_time=0 and hot_time.end_unix_time=0x7fffffff. Note that multiple time ranges can be implemented by adding several LiveResultDocBoostData messages to the LiveResultsDocAttachments proto. If overlapping time ranges are used, the proto containing the highest boost level will be used." + } + }, + "type": "object" + }, + "WeboftrustLiveResultProviderDocAttachment": { + "description": "Per-provider attachment of a LiveResult. Used to identify pages for which result-based triggering of Live Results should appear. Theoretically there can be more than one attachment per web document, so we keep them as a repeated field of the LiveResultsDocAttachment. Next ID: 4", + "id": "WeboftrustLiveResultProviderDocAttachment", + "properties": { + "providerId": { + "format": "uint64", + "type": "string" + }, + "tag": { + "description": "Tag that specifies the use-case within provider's data. It appears as a string in Alexandria signal and in the DocJoins. During the indexing stage this field will be converted to a 64-bit fingerprint to save space. See the \"tag_fp\" field, below.", + "type": "string" + }, + "tagFp": { + "description": "A fingerprint of the \"tag\" field, automatically calculated during the indexing stage. Will be used as a key for fetching the data.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "WeboftrustLiveResultsDocAttachments": { + "description": "Message to which we attach to web documents in order to decide which LiveResult to trigger. Next ID: 3", + "id": "WeboftrustLiveResultsDocAttachments", + "properties": { + "docBoost": { + "description": "Information about potential rank boosting for the document by virtue of its Live Result feed.", + "items": { + "$ref": "WeboftrustLiveResultDocBoostData" + }, + "type": "array" + }, + "providerAttachment": { + "description": "Identifies a Live Result which is to be attached to the document.", + "items": { + "$ref": "WeboftrustLiveResultProviderDocAttachment" + }, + "type": "array" + } + }, + "type": "object" + }, + "WeboftrustTimeRange": { + "description": "Time range (start time and end time). Used to indicate the times in which a LiveResult is considered \"hot\" and thus a potential for boosting. Specified as Unix time (seconds since midnight, January 1, 1970). Time zone is same as that for query_start_time (i.e., GMT). Next ID: 3", + "id": "WeboftrustTimeRange", + "properties": { + "endUnixTime": { + "format": "int64", + "type": "string" + }, + "startUnixTime": { + "description": "Start and end times should always appear. Marked as optional to avoid breaking code.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "WebutilHtmlTypesSafeHtmlProto": { + "description": "IMPORTANT: It is unsafe to accept this message from an untrusted source, since it's trivial for an attacker to forge serialized messages that don't fulfill the type's safety contract -- for example, it could contain attacker controlled script. A system which receives a SafeHtmlProto implicitly trusts the producer of the SafeHtmlProto. So, it's generally safe to return this message in RPC responses, but generally unsafe to accept it in RPC requests.", + "id": "WebutilHtmlTypesSafeHtmlProto", + "properties": { + "privateDoNotAccessOrElseSafeHtmlWrappedValue": { + "description": "IMPORTANT: Never set or read this field, even from tests, it is private. See documentation at the top of .proto file for programming language packages with which to create or read this message.", + "type": "string" + } + }, + "type": "object" + }, + "WirelessTranscoderFetchFetchMetadata": { + "id": "WirelessTranscoderFetchFetchMetadata", + "properties": { + "name": { + "type": "string" + }, + "value": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, + "WirelessTranscoderFetchFetchSourceInfo": { + "description": "To tag which fetcher satisfied this fetch request with optional detail.", + "id": "WirelessTranscoderFetchFetchSourceInfo", + "properties": { + "detail": { + "description": "Provides fetcher-specific detail about how source satisfied the request.", + "type": "string" + }, + "source": { + "description": "The fetcher that ultimately satisfied this fetch request.", + "type": "string" + } + }, + "type": "object" + }, + "YoutubeBackstageSuperVodCommentInfo": { + "description": "Contains information about comment that is posted through a Super VOD purchase. Next ID: 6", + "id": "YoutubeBackstageSuperVodCommentInfo", + "properties": { + "currencyCode": { + "description": "Currency code the user uses to purchase this Super VOD item.", + "type": "string" + }, + "entitlementId": { + "description": "The ID of the Super VOD entitlement. It uniquely identifies a Super VOD purchase.", + "type": "string" + }, + "priceInMicros": { + "description": "Price of Super VOD item the user purchases in micros.", + "format": "uint64", + "type": "string" + }, + "superVodItemId": { + "description": "The Super VOD item the user purchases, it represents price tier.", + "type": "string" + }, + "version": { + "description": "Which version of experiment this Super VOD comment is posted in.", + "enum": [ + "UNSPECIFIED_VERSION", + "V1_DEFAULT_MESSAGE", + "V2_DECORATED_DEFAULT_MESSAGE", + "V3_USER_GENERATED_MESSAGE" + ], + "enumDescriptions": [ + "", + "DEPRECATED since decorated comments are fully launched. Comments previously posted with this enum value will continue to exist. Undecorated Comment. When user buys a Super VOD, a comment with default message will be automatically posted on behalf of the user.", + "Decorated Comment. When user buys a Super VOD, a comment with default message and a special decoration will be automatically posted on behalf of the user. https://screenshot.googleplex.com/6aYvGnX5Bp9bT9Q", + "UGC. When user buys a Super VOD, they can write their own UGC comment which will be decorated and automatically posted on behalf of the user." + ], + "type": "string" + } + }, + "type": "object" + }, + "YoutubeCommentsClusteringMiniStanza": { + "description": "Intended to be simpler to work with than the ExportedStanza it's derived from See documentation: https://g3doc.corp.google.com/company/teams/youtube/community_intelligence/eng_resources/data_sources.md#ministanza Next available: 74", + "id": "YoutubeCommentsClusteringMiniStanza", + "properties": { + "ansibleScores": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "TnS Ansible scores map. Keyed by various model names.", + "type": "object" + }, + "automodScores": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Automod scores map. Keyed by various model names.", + "type": "object" + }, + "blarneyStoneScore": { + "$ref": "YoutubeDistillerBlarneyStoneScores", + "description": "The blarney stone score." + }, + "channelDiscussionId": { + "description": "The channel this channel discussion comment belongs to. Note that this will match channel_id for such comments.", + "type": "string" + }, + "channelId": { + "description": "The channel of the video this comment belongs to.", + "type": "string" + }, + "channelProfileQualityScores": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Channel profile quality scores map. Keyed by various model names.", + "type": "object" + }, + "charEntropy": { + "description": "Char entropy of the comment.", + "format": "double", + "type": "number" + }, + "commentClassification": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Comment classification mapping all secondary keys to values. E.g. {\"joke_v1\":0.8, \"joke_v2\":0.7, \"question_v1\":0.3}.", + "type": "object" + }, + "commentClassificationBuckets": { + "description": "List of pre-defined classification score buckets to which the comment belongs. E.g. satisfaction_v1_percentile_80.", + "items": { + "type": "string" + }, + "type": "array" + }, + "commentClassificationRanking": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Comment classification for ranking mapping all secondary keys to values. E.g. {\"joke_v1\":0.8, \"joke_v2\":0.7, \"question_v1\":0.3}.", + "type": "object" + }, + "commentType": { + "description": "Whether the comment is on a video, post, or other product.", + "enum": [ + "UNKNOWN_PRODUCT_TYPE", + "UNSUPPORTED_PRODUCT_TYPE", + "YT_VIDEO_COMMENT", + "YT_CHANNEL_DISCUSSION", + "YT_BACKSTAGE_COMMENT", + "YT_LIVE_CHAT", + "YT_LIVE_CHAT_CONFIG", + "YT_CHANNEL_CONFIG", + "YT_POST_COMMENT" + ], + "enumDescriptions": [ + "", + "Product which the model currently does not support for moderation.", + "YouTube video comments.", + "YouTube channel discussions.", + "YouTube backstage comments.", + "YouTube live chat messages.", + "YouTube live chat configurations: contains the kv pair indicating whether auto moderation is enabled.", + "YouTube channel configurations: contains channel configured badwords and moderators.", + "YouTube post comments (using the unified comment system)." + ], + "type": "string" + }, + "content": { + "description": "The text content of the comment.", + "type": "string" + }, + "contentUpdateTimestamp": { + "description": "The stanza content last update timestamp, as observed by the server. Note that for many comments older than Nov. 2014 this is unset in the original stanza. MiniStanza tries to be consistent with the original so for such comments it remains unset in MiniStanza. If you use this field you should check has_content_update_timestamp().", + "format": "google-datetime", + "type": "string" + }, + "coverageSamplingEligible": { + "description": "Whether or not this comment is eligible for comment classifier coverage sampling (in Kapla). Refer to go/coverage-monitoring-for-kapla-comment-classifiers for more information.", + "type": "boolean" + }, + "creationDevice": { + "description": "The creation device. Derived from shares:yt_creation_device", + "enum": [ + "UNKNOWN_INTERFACE", + "WEB", + "WEB_GAMING", + "WEB_MUSIC", + "WEB_MUSIC_EMBEDDED_PLAYER", + "WEB_REMIX", + "WEB_EXPERIMENTS", + "WEB_MOVIES", + "WEB_HEROES", + "WEB_CREATOR", + "WEB_LIVE_STREAMING", + "WEB_KIDS", + "WEB_INTERNAL_ANALYTICS", + "WEB_PARENT_TOOLS", + "WEB_PHONE_VERIFICATION", + "WEB_EMBEDDED_PLAYER", + "WEB_UNPLUGGED", + "WEB_UNPLUGGED_ONBOARDING", + "WEB_UNPLUGGED_OPS", + "WEB_UNPLUGGED_PUBLIC", + "MWEB", + "MWEB_TIER_2", + "ANDROID", + "ANDROID_CASUAL", + "ANDROID_CREATOR", + "ANDROID_GAMING", + "ANDROID_KIDS", + "ANDROID_INSTANT", + "ANDROID_MUSIC", + "ANDROID_TESTSUITE", + "ANDROID_UNPLUGGED", + "ANDROID_VR", + "ANDROID_WITNESS", + "ANDROID_SPORTS", + "ANDROID_LITE", + "ANDROID_MOVIES", + "ANDROID_EMBEDDED_PLAYER", + "ANDROID_PRODUCER", + "IOSAPPLE", + "IOS", + "IOS_CREATOR", + "IOS_DIRECTOR", + "IOS_GAMING", + "IOS_INSTANT", + "IOS_KIDS", + "IOS_LIVE_CREATION_EXTENSION", + "IOS_MESSAGES_EXTENSION", + "IOS_MUSIC", + "IOS_TABLOID", + "IOS_UNPLUGGED", + "IOS_WITNESS", + "IOS_SPORTS", + "IOS_EMBEDDED_PLAYER", + "IOS_MOVIES", + "IOS_PILOT_STUDIO", + "IOS_UPTIME", + "IOS_PRODUCER", + "OTHERAPP", + "TVHTML5", + "TVHTML5_AUDIO", + "TVHTML5_CAST", + "TVHTML5_KIDS", + "TVHTML5_FOR_KIDS", + "TVHTML5_MOVIES", + "TVHTML5_SIMPLY", + "TVHTML5_SIMPLY_EMBEDDED_PLAYER", + "TVHTML5_UNPLUGGED", + "TVHTML5_VR", + "TVHTML5_YONGLE", + "TVLITE", + "TV_UNPLUGGED_CAST", + "TV_UNPLUGGED_ANDROID", + "XL", + "ROKU_MOVIES", + "CC_MOVIES", + "TVANDROID", + "ANDROID_TV", + "ANDROID_TV_KIDS", + "ANDROID_TV_MOVIES", + "XBOX", + "XBOXONEGUIDE", + "CLIENTX", + "TVAPPLE", + "TVAPPLE_MOVIES", + "AIRPLAY_MOVIES", + "WEB_MUSIC_ANALYTICS", + "MUSIC_INTEGRATIONS", + "WEB_HANGOUTS_MEET", + "KAIOS_LAUNCHER", + "WEB_GVP_ADS", + "ANDROID_GVP_ADS", + "IOS_GVP_ADS", + "GOOGLE_ASSISTANT", + "GOOGLE_LIST_RECS", + "GOOGLE_MEDIA_ACTIONS", + "MEDIA_CONNECT_FRONTEND" + ], + "enumDescriptions": [ + "", + "Targeted for desktop. youtube.com", + "", + "Legacy YouTube Music playback page for shares. Deprecated with", + "unbundling (2017). For music.youtube.com, see WEB_REMIX. YouTube Music embedded web player.", + "YouTube Music web app.", + "", + "Play Movies: go/avi.", + "YT Heroes: go/yt-heroes.", + "YouTube Creator Studio Desktop app.", + "YouTube Live Streaming Desktop app (go/rotom).", + "YouTube Kids web app.", + "YouTube Internal Analytics", + "YT Parent Tools web app (go/parent-zone-prd).", + "YouTube Phone Verification web app", + "(go/wexit-phone-verify).", + "Unplugged web clients. Sign-in, member experience (Polymer app).", + "Onboarding web app.", + "Unplugged ops tools.", + "Public web experience (e.g. browse).", + "Targeted for mobile and/or tablet devices. m.youtube.com for smart phones and tablets", + "MWEB_TIER_2 is deprecated, turned down August 2019, go/future-of-v2", + "Android Main app", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "", + "DO NOT USE", + "", + "Play Movies: go/avi.", + "", + "Producer: go/yt-producer", + "Apple-controlled app for iOS, deprecated in ~2013", + "iOS Main App (YouTube-controlled)", + "", + "DO NOT USE", + "", + "", + "", + "", + "YT integration for Apple's iMessage. go/ytios-imessage-extension-design", + "TL bgoodrich@", + "DO NOT USE", + "", + "", + "DO NOT USE", + "go/ytios-embedded-player", + "Play Movies: go/avi.", + "go/pilot", + "go/uptime", + "Producer: go/yt-producer", + "ANDROID_EMBEDDED_PLAYER used to be OTHERAPP. Android embeds viewed on devices that have not upgraded the YouTube Main App in a long time still report as OTHERAPP. (Legacy embeds use the ClientName ANDROID and the SoftwareInterface OTHERAPP.) This may have been used in other contexts in the past (e.g. players created by third-parties), but the third-party case is unsupported today. Do not use this client name for new apps.", + "Targeted for TV and/or game console devices. youtube.com/tv", + "youtube.com/tv, on display-less Cast receivers.", + "youtube.com/tv, on Cast Receivers.", + "Kids youtube app.", + "Kids mode within the TVHTML5 app.", + "Play Movies: go/avi.", + "go/yt-simply.", + "go/yt-simply-embedded-design", + "Unplugged Living Room app.", + "NOT USED, /tv based VR devices log TVHTML5.", + "go/yongle go/yongle-playback.", + "youtube.com/leanbacklite", + "Unplugged Chromecast app", + "Unplugged Android TV app", + "youtube.com/xl. No longer available.", + "Play Movies: go/avi.", + "Chromecast Play Movies: go/avi.", + "Old Google TV app. No longer available.", + "Android TV app, introduced at I/O 2014.", + "Kids Android TV app.", + "Play Movies: go/avi.", + "Silverlight Xbox 360 app. No longer available.", + "Xbox One launcher app.", + "clientx.corp.google.com", + "Apple TV app", + "Play Movies: go/avi.", + "Play Movies: go/avi.", + "Music Analytics (charts.youtube.com)", + "Music Integrations (go/music-integrations).", + "Hangouts meet broadcast (go/yt-thor-broadcast)", + "YouTube Launcher on KaiOS phones.", + "GVP clients (IMA and GMA SDKs) go/gvp-sdk These are ad SDKs used by non-YouTube publishers to play ads, including YouTube hosted ads. The main interaction with YouTube is for TrueView, which increments YouTube viewcount of the ad video after the delay is reached. Thus, the ad SDKs send requests to the viewcount/VSS pipeline. IMA SDK", + "GMA SDK Android", + "GMA SDK iOS", + "Middleware or Frontend Server Clients Google Assistant integration with Voz", + "List Recs Service Clients", + "Media Actions Service Clients", + "YouTube Media Connect Frontend (YMCFE)" + ], + "type": "string" + }, + "creationTimeInSeconds": { + "description": "The time when the comment is created.", + "format": "int64", + "type": "string" + }, + "detailedLanguageCode": { + "description": "The language code with extra script details. This is derived from detailed_language_code if it's populated, otherwise the same as language_code. E.g. mr-Latn", + "type": "string" + }, + "distillerEngagements": { + "$ref": "AppsPeopleActivityStreamqualityDistillerEngagements", + "description": "All distiller engagements like reports and downvotes." + }, + "eligibleQualifiedTeaserFilters": { + "description": "The qualified comment teaser filters that this comment is eligible for. Refer to go/comment-teaser-design for more information.", + "items": { + "type": "string" + }, + "type": "array" + }, + "empiricalCtrs": { + "$ref": "VideoYoutubeCommentsRankingCTRMetrics", + "description": "Comments empirical CTRs." + }, + "fds": { + "description": "Fountain Discovery Score, which represents the reputation of the author.", + "format": "double", + "type": "number" + }, + "hasCreatorHeart": { + "description": "Indicator for whether there is creator heart on this comment.", + "type": "boolean" + }, + "hasCreatorReply": { + "description": "If the comment has a creator reply.", + "type": "boolean" + }, + "isAuthorSponsor": { + "description": "If the author is a channel member (sponsor).", + "type": "boolean" + }, + "isDeleted": { + "description": "Whether a comment is from deleted shares. See stanza_restrictions for more specific information and is_publicly_visible for comments which are allowed to be seen by everyone.", + "type": "boolean" + }, + "isPinned": { + "description": "Whether the comment is pinned. This is derived from the DestinationStreamDump.", + "type": "boolean" + }, + "isPubliclyVisible": { + "description": "If the post is publicly visible.", + "type": "boolean" + }, + "isReply": { + "description": "Whether the comment is a reply.", + "type": "boolean" + }, + "isSubscriber": { + "description": "If the comment author is publicly subscribed to the channel.", + "type": "boolean" + }, + "languageCode": { + "description": "Unicode CLDR language code of the segments, as implemented by //depot/google3/java/com/google/i18n/identifiers/LanguageCode.java This is derived from user_content and should be considered the canonical language code of the comment.", + "type": "string" + }, + "lastReplyTimestampUsec": { + "description": "The time when last reply is created.", + "format": "int64", + "type": "string" + }, + "lowQualityDecisions": { + "additionalProperties": { + "type": "boolean" + }, + "description": "Low quality decisions. Keyed by decision types corresponding to secondary keys.", + "type": "object" + }, + "mentionedTimestampCommentSecond": { + "description": "Timed comments for the \"mentioned\" secondary key.", + "format": "int32", + "type": "integer" + }, + "misinfoScores": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Misinfo scores map. Keyed by various model names.", + "type": "object" + }, + "numDislikes": { + "description": "Number of dislikes the comment has.", + "format": "int32", + "type": "integer" + }, + "numLikes": { + "description": "Number of likes the comment has.", + "format": "int32", + "type": "integer" + }, + "numRepliers": { + "description": "Number of different repliers the comment has.", + "format": "int32", + "type": "integer" + }, + "numReplies": { + "description": "Number of non-abusive replies the comment has.", + "format": "int32", + "type": "integer" + }, + "numSubscribersBucket": { + "description": "Bucketed number of subscribers held by comment author.", + "format": "int32", + "type": "integer" + }, + "offlineEngagementScores": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Offline engagement scores map. Keyed by various model names.", + "type": "object" + }, + "parentId": { + "description": "The parent stanza's stanza_id, empty for top-level posts (non-replies). Prefer is_reply field for checking if a comment is a reply since that is unaffected by surrogatization. For replies to replies, this is the root stanza_id (not guaranteed AFAIK).", + "type": "string" + }, + "postId": { + "description": "The post this comment belongs to.", + "type": "string" + }, + "rankingPostLanguage": { + "description": "The language code stored in the KV pair ranking:post_language. This should usually be the same as language_code but is not guaranteed to be identical. The KV pair is needed because ranking can't consume user_content.", + "type": "string" + }, + "segments": { + "$ref": "SocialCommonSegments", + "description": "A textual content for the context." + }, + "sensitivityScores": { + "additionalProperties": { + "format": "double", + "type": "number" + }, + "description": "Sensitivity scores map for smart reply sensitivity scores. Keyed by model names. See (g3doc/company/teams/expander/research/conversation/sensitive.md) for more information on sensitivity scores.", + "type": "object" + }, + "sentiment": { + "$ref": "YoutubeCommentsSentimentSentiment", + "description": "Sentiment. This omits entity_sentiment and keeps only the polarity, magnitude, and score. Sentiment as currently implemented is not debiased and has limited language coverage. Please read go/comments-sentiment-access before using." + }, + "smartReplies": { + "additionalProperties": { + "$ref": "VideoYoutubeCommentsClassificationProtoYouTubeCommentSmartReply" + }, + "description": "Smart replies for this comment. Keyed by model names.", + "type": "object" + }, + "stanzaId": { + "description": "Refers to the stanza this data is derived from.", + "type": "string" + }, + "stanzaRestrictions": { + "description": "Contains various restriction information about a stanza.", + "items": { + "$ref": "SocialStanzaStanzaRestriction" + }, + "type": "array" + }, + "subject": { + "$ref": "SecurityCredentialsPrincipalProto", + "description": "The author of the comment" + }, + "subjectIsVideoOwner": { + "description": "Whether the comment is authored by the creator.", + "type": "boolean" + }, + "subscriptionTimestamp": { + "description": "The timestamp (in seconds) when the author subscribed to the channel.", + "format": "int64", + "type": "string" + }, + "superThanksInfo": { + "$ref": "YoutubeBackstageSuperVodCommentInfo", + "description": "Super Thanks related info if a comment is posted through a Super Thanks purchase." + }, + "textEmbedding": { + "additionalProperties": { + "$ref": "YoutubeCommentsRankingYouTubeCommentTextEmbedding" + }, + "description": "Comment text embedding.", + "type": "object" + }, + "textLength": { + "description": "Text length of the comment.", + "format": "int32", + "type": "integer" + }, + "textQualityScores": { + "$ref": "YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation", + "description": "Predicted probability of the comment being flagged based on the text." + }, + "videoId": { + "description": "The video this comment belongs to.", + "type": "string" + }, + "videoTimestamps": { + "description": "Unique video timestamps in seconds sorted by timestamp. This is derived from text Segments, not from a KV. These may exceed the length of the video since that isn't checked at segmentation time. The segmentation rules have changed over time e.g. in the past \"10:00 PM\" was treated as a timestamp.", + "items": { + "format": "int32", + "type": "integer" + }, + "type": "array" + }, + "wordEntropy": { + "description": "Word entropy of the comment.", + "format": "double", + "type": "number" + }, + "ytCommentQualityScore": { + "description": "Existing quality corpus scores.", + "format": "double", + "type": "number" + }, + "ytCommentQualityScore2": { + "format": "double", + "type": "number" + }, + "ytCommentQualityScore3": { + "format": "double", + "type": "number" + }, + "ytReplyToItemId": { + "description": "For replies to replies, this contains the parent reply's id. The parent_id field is actually the root stanza_id (not guaranteed AFAIK).", + "type": "string" + } + }, + "type": "object" + }, + "YoutubeCommentsRankingYouTubeCommentTextEmbedding": { + "description": "Comment text embedding.", + "id": "YoutubeCommentsRankingYouTubeCommentTextEmbedding", + "properties": { + "textEmbedding": { + "description": "Comment text embedding.", + "items": { + "format": "float", + "type": "number" + }, + "type": "array" + } + }, + "type": "object" + }, + "YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation": { + "description": "Text quality scores for a single comment.", + "id": "YoutubeCommentsRankingYouTubeCommentTextQualityAnnotation", + "properties": { + "flagPredictionScore": { + "description": "Score produced by the user flag prediction model.", + "format": "float", + "type": "number" + }, + "flagPredictionVersion": { + "description": "Version identifier of the flag prediction model.", + "type": "string" + } + }, + "type": "object" + }, + "YoutubeCommentsSentimentSentiment": { + "description": "Sentiment information extracted from the annotated content by Goldmine. This mirrors nlp_sentiment.SentimentAnnotation. Next tag: 5.", + "id": "YoutubeCommentsSentimentSentiment", + "properties": { + "entitySentiment": { + "items": { + "$ref": "YoutubeCommentsSentimentSentimentEntitySentimentAnnotation" + }, + "type": "array" + }, + "magnitude": { + "description": "Total magnitude of the sentiment. A positive number representing the total intensity of sentiment regardless of positive vs negative polarity.", + "format": "float", + "type": "number" + }, + "polarity": { + "description": "Polarity of the sentiment. Value is between -1.0 and 1.0 inclusive, with larger numbers representing more positive sentiment and negative numbers representing negative sentiment.", + "format": "float", + "type": "number" + }, + "score": { + "description": "The average score over sentences. This combines the polarity and magnitude signals into one value. Bounded between -1.0 and 1.0.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "YoutubeCommentsSentimentSentimentEntitySentimentAnnotation": { + "description": "An entity level sentiment annotation containing the sentiment values aggregated over all mentions of an entity. Next tag: 7.", + "id": "YoutubeCommentsSentimentSentimentEntitySentimentAnnotation", + "properties": { + "entityName": { + "description": "The representative entity name. This can be blank for cases when there is no explicit name like \"I\" or \"it\". The mentions' tokens can be used to get more details about each entity.", + "type": "string" + }, + "magnitude": { + "description": "Total magnitude of the sentiment.", + "format": "float", + "type": "number" + }, + "mentionSentiment": { + "items": { + "$ref": "YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation" + }, + "type": "array" + }, + "mid": { + "description": "MID for this entity, if available.", + "type": "string" + }, + "polarity": { + "description": "Polarity of the sentiment. See above for detail.", + "format": "float", + "type": "number" + }, + "score": { + "description": "The per entity score between -1.0 and 1.0. Combines the signal from polarity and magnitude values.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation": { + "description": "A mention level sentiment annotation containing the sentiment values for a single entity mention. // Next tag: 6.", + "id": "YoutubeCommentsSentimentSentimentEntitySentimentAnnotationMentionSentimentAnnotation", + "properties": { + "endToken": { + "description": "Token end index in corresponding SAFT document (inclusive).", + "format": "int64", + "type": "string" + }, + "magnitude": { + "description": "Total magnitude of the sentiment.", + "format": "float", + "type": "number" + }, + "polarity": { + "description": "Polarity of the sentiment. See above for detail.", + "format": "float", + "type": "number" + }, + "score": { + "description": "The per mention score between -1.0 and 1.0. Combines the signal from polarity and magnitude values.", + "format": "float", + "type": "number" + }, + "startToken": { + "description": "Token start index in corresponding SAFT document.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "YoutubeDiscoveryLegosLegosAnnotation": { + "description": "The annotation of a document by a given entity, for a given type of relationship. The annotation should be valid for the complete annotated document, not simply a part of the document such as a video segment.", + "id": "YoutubeDiscoveryLegosLegosAnnotation", + "properties": { + "entity": { + "$ref": "YoutubeDiscoveryLegosLegosEntity", + "description": "The entity annotating the document." + }, + "format": { + "$ref": "YoutubeDiscoveryLegosLegosFormatRelationship", + "description": "The annotation is a format annotation, i.e. it tells the format of the video." + }, + "semantic": { + "$ref": "YoutubeDiscoveryLegosLegosSemanticRelationship", + "description": "The annotation is a semantic annotation, i.e. it tells what the document is about." + }, + "taxonomic": { + "$ref": "YoutubeDiscoveryLegosLegosTaxonomicRelationship", + "description": "The annotation is a taxonomic annotation, i.e. it tells to which class of the Legos taxonomy the document belongs to." + } + }, + "type": "object" + }, + "YoutubeDiscoveryLegosLegosAnnotations": { + "description": "A collection of annotations returned by Legos for a document.", + "id": "YoutubeDiscoveryLegosLegosAnnotations", + "properties": { + "annotations": { + "description": "The annotations for this document. For a given (entity, relationship type) pair, there will be at most one annotation. The list has no particular order.", + "items": { + "$ref": "YoutubeDiscoveryLegosLegosAnnotation" + }, + "type": "array" + } + }, + "type": "object" + }, + "YoutubeDiscoveryLegosLegosEntity": { + "description": "The identification of a Knowledge Graph (KG) entity in Legos.", + "id": "YoutubeDiscoveryLegosLegosEntity", + "properties": { + "debugName": { + "description": "DO NOT USE THIS FIELD. The entity name here can be random garbage and when it's actually a name it will be in a random language (most of the time English but not always). This field is going away soon. For a replacement you should probably use the following RPC: cs/symbol:Ytpedia.GetNames please read go/ytks-calling details on how to call it and don't hesitate to write to us for help with this (or in any case before starting to send real traffic to us) at: g/yt-knowledge-service", + "type": "string" + }, + "kgId": { + "description": "The ID of the Knowledge Graph entity. Note: this is the primary ID at generation time. See https://sites.google.com/a/google.com/knowledge-graph/data/primary_ids", + "type": "string" + } + }, + "type": "object" + }, + "YoutubeDiscoveryLegosLegosFormatRelationship": { + "description": "Description of a format Legos annotation. http://go/legos/formats.md", + "id": "YoutubeDiscoveryLegosLegosFormatRelationship", + "properties": { + "confidence": { + "description": "Format classification confidence score, in the 0-1 range. A score of XX% means that we expect at least XX% of the documents annotated with this format to be correctly annotated; i.e. thresholding at XX% yields a precision of at least XX%.", + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "YoutubeDiscoveryLegosLegosSemanticRelationship": { + "description": "Description of a semantic Legos annotation. http://go/legos/project.md#semantic-intent-annotations", + "id": "YoutubeDiscoveryLegosLegosSemanticRelationship", + "properties": { + "confidence": { + "description": "Confidence score. Thresholding at the confidence score at 0.XX yields annotations of precision of at least XX%. Only filled in the intent definition Legos. Please use IsSemanticAnnotationAtConfidenceThreshold() from video/youtube/discovery/legos/annotations/public/legos_annotations_util.h to obtain only intent definition Legos. For more information on the migration please look at go/legos-intent-migration.", + "format": "float", + "type": "number" + }, + "contexts": { + "items": { + "$ref": "YoutubeDiscoveryLegosLegosSemanticRelationshipContext" + }, + "type": "array" + }, + "topicalityScore": { + "description": "DEPRECATED. Please use confidence instead. Will be set to the same value as confidence in early January 2019. See go/legos-intent-migration for more information.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "YoutubeDiscoveryLegosLegosSemanticRelationshipContext": { + "description": "Extra context about how the entity relates to the document. Typically vertical-specific.", + "id": "YoutubeDiscoveryLegosLegosSemanticRelationshipContext", + "properties": { + "subject": { + "$ref": "YoutubeDiscoveryLegosLegosEntity", + "description": "The subject of the semantic relationship. This is set when the relationship is derived from some other entity. The exact meaning of this field depends on the ContextType." + }, + "type": { + "description": "The type of semantic relationship between the document and the entity. This allows one to retrieve vertical-specific fine-grained information about the document.", + "enum": [ + "UNKNOWN_CONTEXT_TYPE", + "MUSIC_RECORDING_CLUSTER", + "MUSIC_EXACT_RECORDING", + "MUSIC_PRIMARY_RECORDING", + "MUSIC_RECORDING_ARTIST", + "MUSIC_FEATURED_ARTIST", + "MUSIC_COMPOSITION", + "MUSIC_ORIGINAL_ARTIST_OF_COVER", + "MUSIC_ORIGINAL_RECORDING_CLUSTER_OF_COVER", + "MUSIC_OFFICIAL_VIDEO", + "MUSIC_OFFICIAL_AUDIO", + "MUSIC_OFFICIAL_EXACT_RECORDING_WITHOUT_CLUSTER", + "MUSIC_LYRICS_VIDEO", + "MUSIC_LIVE_RECORDING", + "MUSIC_REMIX_RECORDING", + "MUSIC_KARAOKE_VERSION", + "MUSIC_INSTRUMENTAL_RECORDING", + "MUSIC_REMIX_ARTIST", + "MUSIC_BOLLYWOOD_ACTOR", + "MUSIC_UGC_SONG", + "MUSIC_ART_TRACK_OR_PREMIUM_CLAIM", + "SHORT_VIDEO_BACKGROUND_MUSIC", + "SHORT_VIDEO_BACKGROUND_MUSIC_COMPOSITION", + "SHORT_VIDEO_BACKGROUND_MUSIC_EXACT_RECORDING", + "MUSIC_BASS_TOP_LEVEL_GENRE", + "MUSIC_BASS_SUBGENRE", + "CREATOR_OFFICIAL_CHANNEL", + "CREATOR_VEVO_SINGLE_CHANNEL", + "CREATOR_OTHER_SINGLE_CHANNEL", + "CREATOR_MULTIPLE_CHANNEL", + "TV_SHOW_FOOTAGE", + "TV_SHOW_GENRE", + "MOVIE_GENRE", + "GAMING_TOP_VIDEO_GAME", + "GAMING_IS_ITEM_EQUIPPED_BY", + "GAMING_IS_ITEM_USED_BY", + "GAMING_IS_ALLIED_CHARACTER_OF", + "GAMING_IS_CHARACTER_CONTROLLED_BY", + "LEGOS_OVERRIDE_LIVE_SPORTS", + "KG_SOCIAL_MEDIA_PROFILE", + "PERSON_CREATOR", + "PREMIUM_TVOD_MOVIE", + "PREMIUM_AVOD_MOVIE", + "PREMIUM_TVOD_SHOW", + "PREMIUM_MOVIE_ACTOR", + "PREMIUM_MOVIE_DIRECTOR", + "PREMIUM_MOVIE_GENRE", + "PUBLIC_FIGURE_UPLOADER", + "PUBLIC_FIGURE_ABOUT", + "RESPONSIBILITY_CLARIFICATION_NEEDED", + "CLARIFY_TFX_MODEL", + "DENORM_VIDEO_GAME_TO_VIDEO_GAME_GENRES", + "DENORM_VIDEO_GAME_TO_VIDEO_GAME_SERIES", + "DENORM_PRODUCT_LINE_TO_BRAND", + "DENORM_ORGANIZATION_TO_BRAND", + "DENORM_PODCAST_SERIES_TO_PODCAST", + "DENORM_COVID_VACCINE", + "DENORM_PRODUCT_TO_DOMINANT_PRODUCT_CATEGORY", + "DENORM_PRODUCT_TO_PRODUCT_CATEGORY", + "DENORMALIZATIONS", + "SHOPPING_PRODUCT", + "SHOPPING_PRODUCT_LINE", + "SHOPPING_BRAND", + "SHOPPING_CATEGORY", + "CREATOR_SHOPPING_PRODUCT", + "VSU_SHOPPING_PRODUCT", + "GEO_TYPE_RESTAURANT_OR_CAFE", + "GEO_TYPE_ESTABLISHMENT_POI", + "GEO_TYPES_COLLECTION_TRAVEL_AND_TOURISM", + "GEO_TYPE_ENTERTAINMENT_AND_RECREATION", + "GEO_TYPES_COLLECTION_BUSINESSES", + "GEO_TYPES_COLLECTION_POTENTIALLY_SENSITIVE", + "GEO_TYPE", + "ADDED_DURING_GEO_ENTITIES_PROMOTION", + "GEO_TYPE_PUBLIC_SPACES_AND_MONUMENTS", + "GEO_TYPE_COMPOUND_BUILDING", + "GEO_TYPE_POLITICAL", + "GEO_TYPES_COLLECTION_SMALL_POLITICALS", + "GEO_TYPES_COLLECTION_CITY_LEVEL_POLITICALS", + "GEO_TYPES_COLLECTION_LARGE_POLITICALS", + "GEO_TYPES_COLLECTION_NATURAL_FEATURES", + "DENORM_LOCATION_TO_CONTAINING_COUNTRY", + "DENORM_LOCATION_TO_CONTAINING_REGION", + "DENORM_LOCATION_TO_CONTAINING_CITY", + "MOVIE", + "TV_SHOW", + "SPORT_TEAM", + "SPORT_LEAGUE", + "ELECTIONS_ANNOTATION_PRE_RULES", + "HAS_A_VOTING_MID", + "GEO_LEGOS_TEST_SET_V2_POLITICAL", + "GEO_LEGOS_TEST_SET_V2_TRAVEL_DESTINATIONS", + "GEO_LEGOS_TEST_SET_V2_DINING" + ], + "enumDescriptions": [ + "", + "The entity refers to the recording cluster featured on the video. We will always create a supplementary RECORDING_CLUSTER when an EXACT_RECORDING annotation is present by denormalizing KG data. LegosAnnotation.LegosSemanticRelationship.Context.subject should be empty.", + "The mid refers to exact recording featured on the video. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the recording cluster. The subject can be empty, if no recording cluster exists.", + "The entity refers to the primary_recording of the recording cluster featured on the video. This exists only for backward compatibility until WebRef, QRef and all its clients migrate to /music/recording_cluster. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the recording cluster.", + "The entity refers to the musical artist performing a recording featured on the video. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the recording cluster of the featured recording, if known.", + "The entity refers to the featured artist relationship mined from KG, featured on the video. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the recording cluster of the featured recording, if known.", + "The entity refers to composition of the recording featured on the video. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the recording cluster of the featured recording, if known.", + "The entity refers to the original musical artist for which the recording is a cover of. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the recording cluster of the cover recording, if known.", + "The entity refers to the original musical recording cluster for which the recording is a cover of. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the recording cluster of the cover recording, if known.", + "The entity refers to the musical recording cluster for which the recording is an official video of.", + "The entity refers to the musical recording cluster for which the recording is an official audio-only (no visuals) video of. Typically an Art Track.", + "The mid refers to exact recording for which the video is an official video. The subject is empty because the recording cluster does not exist yet. This context should only exist in the beginning of the lifetime of a recording.", + "The entity refers to the musical recording cluster for which the recording is a lyrics video of.", + "The entity refers to the musical recording cluster and the video is featuring a live recording of this recording cluster.", + "The entity refers to the musical recording cluster and the video features a remix recording of this recording cluster.", + "The entity refers to the original musical recording cluster for which the recording is a karaoke version of.", + "The entity refers to the original musical recording cluster for which the recording is an instrumental version of.", + "The entity refers to the remix artist relationship mined from KG, doing the remix and only exists for a recording. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the recording made by this remixer, if known.", + "The entity refers to /film/actor that are associated with music videos from allowed Bollywood music channels. Allowlist: google3/googledata/video/youtube/discovery/metadata_aggregation/lists/bollywood_music_channels.txt", + "Information whether a song is user generated content or not. This information was originally carried with a Legos extension but since it's getting deprecated (b/153987502), context is now used for this.", + "Information whether the song was an art-track or the song was found in a premium claim on the video (the content owner is the owner of the video). This context is used to replace Disco2 Detours extension which is getting deprecated (b/153987502).", + "The entity refers to the recording cluster featured on a Short form video, where the music is playing in the background. This context is an equivalent of MUSIC_RECORDING_CLUSTER for background music on Shorts.", + "The entity refers to a composition present on a Short form video, where the music is playing in the background. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the SHORT_VIDEO_BACKGROUND_MUSIC recording cluster of the featured recording, if known. This context is an equivalent of MUSIC_COMPOSITION for background music on Shorts.", + "The entity refers to an exact recording featured on a Short form video, where the music is playing in the background. LegosAnnotation.LegosSemanticRelationship.Context.subject should point to the SHORT_VIDEO_BACKGROUND_MUSIC recording cluster of the featured recording, if known. This context is an equivalent of MUSIC_EXACT_RECORDING for background music on Shorts.", + "Context for music genres that come from Music Classification team.", + "", + "The entity refers to a creator who has uploaded this video on their verified official channel. go/avg-use-cases go/artist-channels contact: ytm-classification-eng@google.com", + "The entity refers to a creator who has uploaded this video on a VEVO channel with no other creators. go/avg-use-cases go/artist-channels contact: ytm-classification-eng@google.com", + "The entity refers to a creator who has uploaded this video on a channel that they are verified to control, but not their official channel go/avg-use-cases go/artist-channels contact: ytm-classification-eng@google.com", + "The entity refers to a creator who has uploaded this video on a channel that they are verified to be related to, but may not control exclusively go/avg-use-cases go/artist-channels contact: ytm-classification-eng@google.com", + "The entity refers to the TV show that this video contains footage of, in a way that is appropriate for watching the show itself. A show with commentary voiceover shouldn't get this context. Typically determined using ContentID with audiovisual matches. This means that a show which is not claimed can't have this context.", + "The entity refers to a TV show genre added from a TV show annotated on this video. Note that this does not imply that TV_SHOW_FOOTAGE is present on any annotation for this video; the show may have been obtained using metadata methods and we don't know for sure that footage is present.", + "The entity refers to a movie genre added from a movie annotated on this video. Note that this might also trigger for shoulder content such as trailers or interviews.", + "The entity refers to the top scored game title(s) for a particular gaming related video.", + "The entity refers to an item equiped by some \"object\" (in the subject-predicate-object sense) in the game in this video. This context comes from the game state annotation process detailed at go/game-state-annotation-design.", + "The entity refers to an item used by some \"object\" (in the subject-predicate-object sense) in the game in this video. This context comes from the game state annotation process detailed at go/game-state-annotation-design, and an example of its generation and meaning is described in go/clash-legos-semantics.", + "The entity refers to a character who is an ally of some \"object\" (in the subject-predicate-object sense) in the game in this video. This context comes from the game state annotation process detailed at go/game-state-annotation-design.", + "The entity refers to a character who is controlled by some \"object\" (in the subject-predicate-object sense) in the game in this video. This context comes from the game state annotation process detailed at go/game-state-annotation-design.", + "The entity refers to a Legos annotation that is manually requested by the live discovery team for sports live streams.", + "The entity refers to a creator who has uploaded this video on one of their channels that is present as a social profile in KG, e.g. https://screenshot.googleplex.com/RCNN3YPizpe.png. Annotations with this context may overlap with CREATOR_OFFICIAL_CHANNEL which is Disco3 specific.", + "Deprecated context, do not use.", + "The video is a premium TVOD (Transaction-based Video On Demand) movie described by the entity. Premium movies and shows are owned by the YT Popcorn team (go/popcorn).", + "The video is a premium AVOD (Advertisement-based Video On Demand) movie described by the entity. Premium movies and shows are owned by the YT Popcorn team (go/popcorn).", + "The video is a premium TVOD (Transaction-based Video On Demand) show described by the entity. Premium movies and shows are owned by the YT Popcorn team (go/popcorn).", + "The entity is a genre, actor or director mid that has been inferred from the presence of a movie mid, in a premium movie. See go/legos-premium-movie-associations. Premium movies and shows are owned by the YT Popcorn team (go/popcorn).", + "", + "", + "The video is by the public figure who owns the uploading channel.", + "The entity owns a channel part of the Public Figure corpus.", + "The video needs clarification about the entity. This typically means we should display a message establishing facts or scientific consensus about the entity next to the video. NOTE: this is not a public context type yet. Please reach out to yt-knowledge-responsibility-features@google.com before using it. Its semantics and precision are very specific and subject to change without warning.", + "Deprecated context, do not use.", + "Video game genre entity that has been denormalized from a video game.", + "Video game series entity that has been denormalized from a video game.", + "Brand entity that has been denormalized by a product-related entity.", + "Brand entity that has been denormalized by an organization entity.", + "Podcast entity that has been denormalized from a base Podcast by KG type.", + "Covid vaccine entity denormalized from a particular vaccine (e.g. Sputnik).", + "Dominant product category denormalized from a particular product.", + "Product category denormalized from a particular product.", + "Generic KG denormalization, scored by doc cooccurrence. For testing only! If it looks good it should be launched with its own context. In the meantime you can see the type in the debugger trace.", + "This context indicates when a Legos is of type /business/variant_cluster. Further product related KG types will be added in the future and the context will stop corresponding to a single KG type. Furthermore, the context is only applied, if the entity passes additional filtering (e.g. requiring a name).", + "This context indicates that a Legos annotation is of a product line See go/shopping-kg-schema#product-lines.", + "This context indicates that a Legos annotation is of a shopping brand. See go/shopping-kg-schema#brands.", + "This context indicates that a Legos annotation is of a shopping category. See go/shopping-kg-schema#product-categories.", + "This context indicates that a Legos annotation comes from a creator shopping product annotation (go/shoptube).", + "This context indicates that a Legos annotation was output by VSU.", + "Context used by Geo that indicates if an entity is a restaurant or cafe.", + "Context used by Geo that indicates if an entity is an establishment point of interest.", + "Context used by Geo to indicate destination which is included in the travel vertical, corresponding to kg_types for both travel and tourism.", + "Context used by Geo that indicates an entity is an entertainment and recreation destination.", + "Context used by Geo that indicates an entity is part of business vertical. Includes /geo/type/services, /geo/type/business_related, and /geo/type/vehicle_dealers.", + "Context used by Geo to filter out destinations which might be sensitive to users from showing up in the structured description UI. Includes /geo/type/potentially_sensitive_entity, /geo/type/government, and /geo/type/religious_institution.", + "Context used by Geo that indicates if an entity is a geo feature.", + "Assigned only to geo entities that are added during postprocessing due to their high webref topicalities and confidences.", + "Assigned to geo entities of type public spaces and monuments.", + "Assigned to geo entities of type compound building.", + "Assigned to geo entities of type political.", + "Assigned to geo entities of type political that represent areas smaller than a city, such as sublocalities and neighborhoods.", + "Assigned to geo entities of type political that could represent a city, such as localities and small administrative areas.", + "Assigned to geo entities of type political that are larger than a city, such as large administrative areas and countries.", + "Assigned to geo entities of type natural, except for continents.", + "Assigned to an entity that has been denormalized from an entity which it geographically contains according to the containing entity's type.", + "", + "", + "This context indicates that a Legos annotation is of a movie.", + "This context indicates that a Legos annotation is of a tv show.", + "This context indicates that a Legos annotation is of a sport team.", + "This context indicates that a Legos annotation is of a sport league.", + "To help with monitoring: marks preexisting annotations before applying rules that increase recall for this mid.", + "", + "To use in Geo Legos launch report. Each context defines a slice of docs to subsample in a test.", + "", + "" + ], + "type": "string" + } + }, + "type": "object" + }, + "YoutubeDiscoveryLegosLegosTaxonomicRelationship": { + "description": "Description of a taxonomic Legos annotation. http://go/legos/project.md#taxonomy-annotations", + "id": "YoutubeDiscoveryLegosLegosTaxonomicRelationship", + "properties": { + "isRedundant": { + "description": "Set to true if the taxonomy annotation is redundant amongst the set of other taxonomy annotations for the same document, i.e. if there is at least one other taxonomy annotation that is a child node of this one.", + "type": "boolean" + }, + "score": { + "description": "A score, in the 0-1 range, used to rank taxonomy annotations.", + "format": "double", + "type": "number" + } + }, + "type": "object" + }, + "YoutubeDistillerBlarneyStoneScores": { + "description": "Blarney Stone classification scores: go/blarneystone Next available ID: 6", + "id": "YoutubeDistillerBlarneyStoneScores", + "properties": { + "familySafeV1Score": { + "format": "float", + "type": "number" + }, + "mildHateHarassV1Score": { + "format": "float", + "type": "number" + }, + "mildHateHarassV2Score": { + "format": "float", + "type": "number" + }, + "modelScores": { + "description": "The scores corresponds to each of the abe_models in /cns/yk-d/home/blarneystone/model0/config-2015-11-20.pbtxt", + "items": { + "$ref": "YoutubeDistillerModelScore" + }, + "type": "array" + }, + "severeHateHarassV1Score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + }, + "YoutubeDistillerModelScore": { + "description": "Next available ID: 4", + "id": "YoutubeDistillerModelScore", + "properties": { + "classifier": { + "description": "The classifier trained with tensor flow.", + "enum": [ + "UNKNOWN", + "OFFENSIVE_NON_POLICY", + "OFFENSIVE_YT_POLICY", + "COMMERCIAL_INTENT" + ], + "enumDescriptions": [ + "", + "", + "", + "" + ], + "type": "string" + }, + "model": { + "description": "The model trained with dist belief [going to be deprecated].", + "enum": [ + "UNKNOWN", + "HATE", + "HARASSMENT", + "HATE_OR_HARASSMENT", + "COMMERCIAL_INTENT", + "SEVERE_HATE_HARASSMENT", + "MILD_HATE_HARASSMENT", + "MILD_HATE_HARASSMENT_V2" + ], + "enumDescriptions": [ + "", + "", + "", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "score": { + "format": "float", + "type": "number" + } + }, + "type": "object" + } + }, + "servicePath": "", + "title": "contentwarehouse API", + "version": "v1", + "version_module": true +} \ No newline at end of file diff --git a/contentwarehouse/v1/contentwarehouse-gen.go b/contentwarehouse/v1/contentwarehouse-gen.go new file mode 100644 index 00000000000..a1000d1f14d --- /dev/null +++ b/contentwarehouse/v1/contentwarehouse-gen.go @@ -0,0 +1,157421 @@ +// Copyright 2022 Google LLC. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Code generated file. DO NOT EDIT. + +// Package contentwarehouse provides access to the contentwarehouse API. +// +// For product documentation, see: https://cloud.google.com/document-warehouse +// +// # Creating a client +// +// Usage example: +// +// import "google.golang.org/api/contentwarehouse/v1" +// ... +// ctx := context.Background() +// contentwarehouseService, err := contentwarehouse.NewService(ctx) +// +// In this example, Google Application Default Credentials are used for authentication. +// +// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials. +// +// # Other authentication options +// +// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey: +// +// contentwarehouseService, err := contentwarehouse.NewService(ctx, option.WithAPIKey("AIza...")) +// +// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource: +// +// config := &oauth2.Config{...} +// // ... +// token, err := config.Exchange(ctx, ...) +// contentwarehouseService, err := contentwarehouse.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token))) +// +// See https://godoc.org/google.golang.org/api/option/ for details on options. +package contentwarehouse // import "google.golang.org/api/contentwarehouse/v1" + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "fmt" + "io" + "net/http" + "net/url" + "strconv" + "strings" + + googleapi "google.golang.org/api/googleapi" + internal "google.golang.org/api/internal" + gensupport "google.golang.org/api/internal/gensupport" + option "google.golang.org/api/option" + internaloption "google.golang.org/api/option/internaloption" + htransport "google.golang.org/api/transport/http" +) + +// Always reference these packages, just in case the auto-generated code +// below doesn't. +var _ = bytes.NewBuffer +var _ = strconv.Itoa +var _ = fmt.Sprintf +var _ = json.NewDecoder +var _ = io.Copy +var _ = url.Parse +var _ = gensupport.MarshalJSON +var _ = googleapi.Version +var _ = errors.New +var _ = strings.Replace +var _ = context.Canceled +var _ = internaloption.WithDefaultEndpoint + +const apiId = "contentwarehouse:v1" +const apiName = "contentwarehouse" +const apiVersion = "v1" +const basePath = "https://contentwarehouse.googleapis.com/" +const mtlsBasePath = "https://contentwarehouse.mtls.googleapis.com/" + +// OAuth2 scopes used by this API. +const ( + // See, edit, configure, and delete your Google Cloud data and see the + // email address for your Google Account. + CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform" +) + +// NewService creates a new Service. +func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) { + scopesOption := internaloption.WithDefaultScopes( + "https://www.googleapis.com/auth/cloud-platform", + ) + // NOTE: prepend, so we don't override user-specified scopes. + opts = append([]option.ClientOption{scopesOption}, opts...) + opts = append(opts, internaloption.WithDefaultEndpoint(basePath)) + opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath)) + client, endpoint, err := htransport.NewClient(ctx, opts...) + if err != nil { + return nil, err + } + s, err := New(client) + if err != nil { + return nil, err + } + if endpoint != "" { + s.BasePath = endpoint + } + return s, nil +} + +// New creates a new Service. It uses the provided http.Client for requests. +// +// Deprecated: please use NewService instead. +// To provide a custom HTTP client, use option.WithHTTPClient. +// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead. +func New(client *http.Client) (*Service, error) { + if client == nil { + return nil, errors.New("client is nil") + } + s := &Service{client: client, BasePath: basePath} + s.Projects = NewProjectsService(s) + return s, nil +} + +type Service struct { + client *http.Client + BasePath string // API endpoint base URL + UserAgent string // optional additional User-Agent fragment + + Projects *ProjectsService +} + +func (s *Service) userAgent() string { + if s.UserAgent == "" { + return googleapi.UserAgent + } + return googleapi.UserAgent + " " + s.UserAgent +} + +func NewProjectsService(s *Service) *ProjectsService { + rs := &ProjectsService{s: s} + rs.Locations = NewProjectsLocationsService(s) + return rs +} + +type ProjectsService struct { + s *Service + + Locations *ProjectsLocationsService +} + +func NewProjectsLocationsService(s *Service) *ProjectsLocationsService { + rs := &ProjectsLocationsService{s: s} + rs.DocumentSchemas = NewProjectsLocationsDocumentSchemasService(s) + rs.Documents = NewProjectsLocationsDocumentsService(s) + rs.RuleSets = NewProjectsLocationsRuleSetsService(s) + rs.SynonymSets = NewProjectsLocationsSynonymSetsService(s) + return rs +} + +type ProjectsLocationsService struct { + s *Service + + DocumentSchemas *ProjectsLocationsDocumentSchemasService + + Documents *ProjectsLocationsDocumentsService + + RuleSets *ProjectsLocationsRuleSetsService + + SynonymSets *ProjectsLocationsSynonymSetsService +} + +func NewProjectsLocationsDocumentSchemasService(s *Service) *ProjectsLocationsDocumentSchemasService { + rs := &ProjectsLocationsDocumentSchemasService{s: s} + return rs +} + +type ProjectsLocationsDocumentSchemasService struct { + s *Service +} + +func NewProjectsLocationsDocumentsService(s *Service) *ProjectsLocationsDocumentsService { + rs := &ProjectsLocationsDocumentsService{s: s} + rs.DocumentLinks = NewProjectsLocationsDocumentsDocumentLinksService(s) + rs.ReferenceId = NewProjectsLocationsDocumentsReferenceIdService(s) + return rs +} + +type ProjectsLocationsDocumentsService struct { + s *Service + + DocumentLinks *ProjectsLocationsDocumentsDocumentLinksService + + ReferenceId *ProjectsLocationsDocumentsReferenceIdService +} + +func NewProjectsLocationsDocumentsDocumentLinksService(s *Service) *ProjectsLocationsDocumentsDocumentLinksService { + rs := &ProjectsLocationsDocumentsDocumentLinksService{s: s} + return rs +} + +type ProjectsLocationsDocumentsDocumentLinksService struct { + s *Service +} + +func NewProjectsLocationsDocumentsReferenceIdService(s *Service) *ProjectsLocationsDocumentsReferenceIdService { + rs := &ProjectsLocationsDocumentsReferenceIdService{s: s} + return rs +} + +type ProjectsLocationsDocumentsReferenceIdService struct { + s *Service +} + +func NewProjectsLocationsRuleSetsService(s *Service) *ProjectsLocationsRuleSetsService { + rs := &ProjectsLocationsRuleSetsService{s: s} + return rs +} + +type ProjectsLocationsRuleSetsService struct { + s *Service +} + +func NewProjectsLocationsSynonymSetsService(s *Service) *ProjectsLocationsSynonymSetsService { + rs := &ProjectsLocationsSynonymSetsService{s: s} + return rs +} + +type ProjectsLocationsSynonymSetsService struct { + s *Service +} + +type AbuseiamAbuseType struct { + // Possible values: + // "NONE" - no abuse + // "OTHER_ABUSE" - generic abuse that isn't enumerated here + // "CHILD_PORN" - illegal child porn images + // "PORNOGRAPHY" + // "SPAM" + // "PHISHING" + // "HATE" + // "TOS_OTHER" - To be only used for Multi-Image Review. + // "MALWARE" - MALWARE includes viruses, worms, trojans, adware and + // even potentially unwanted software which may not necessarily be + // harmful. + // "MALICIOUS_JAVASCRIPT" + // "NOT_FAMILY_SAFE" - DEPRECATED - For safe searches, etc. + // "IMPERSONATION" + // "PEDOPHILIA" - Not illegal, but image or text content + // "PERSONAL_INFO" - promoting or related to young pornography + // Personally identifiable information + // "COPYRIGHT" + // "HIGH_RISK" - High risk reviews for any client. + // "VIOLENCE" + // "UNSAFE_RACY" - Content that is unsafe because it is sexually + // "UNSAFE_OTHER" - suggestive/racy Content that is unsafe for other + // reasons than + // "FAKE_USER" - being sexually suggestive/racy. Category for users + // who are not real + // "NAME_VIOLATION" - User's name that violates policy. + // "PLUSONE_VIOLATION" - Violates PLUSONE policy. + // "DEFAMATION" - Defamation claims + // "TRADEMARK" - Trademark violations where Google could be + // "COURT_ORDER" - liable Third-party court orders + // "GOVERNMENT_ORDER" - Government request, regardless of reason + // "LOCAL_LAWS" - Other misc country-specific laws + // "PRIVACY" - Local privacy laws + // "ES_BLACKLIST" - Internal type to check es content against + // "ES_COMMENTS_BLACKLIST" - the ocelot blacklist. Internal type. + // "HARASSMENT" - Consistent harassing behaviour directed + // "COMPROMISED" - towards a person. Hijacked or Compromised profile. + // "LOW_QUALITY" - Low quality/Annoying content. + // "API_VIOLATION" - Violates APIARY policy. + // "REGULATED" - Contains regulated products and services, such as + // pharmaceuticals, alcohol, tobacco, etc. For details, + // https://sites.google.com/a/google.com/crt-policy-site/regulated + // "CAROUSEL_FRAME_BLACKLIST" - Internal type. + // "QUOTA_EXCEEDED" - Quota exceeded for the action. + // "FOUNTAIN_BLACKLIST" - Internal type. + // "COPPA_REGULATED" - Contains content regulated by COPPA. + // "DOXXING" - Revealing personal/protected information. + // "SOFT_HATE" - Pattern of behavior verdicts. Used to aggregate + // verdicts that aren't typically bad enough for one of the above + // verdicts, but something we want to keep track of in cases of rotten + // behavior. Hate without incitement + // "SOFT_HARASSMENT" - Harassment that does meet the harm bar. + // "OBNOXIOUS" - Obnoxious, Lousy behavior, not against TOS. + // "UNWANTED" - Content targeted at a person who considered + // "NOT_UNICORN_SAFE" - Not safe for kids. + // "FAKE_ENGAGEMENT" - Engagements that are not organic. + // "COUNTERFEIT" - Promotion of counterfeit product claims. + // "CTM" - Circumvention of Technological measures + Id string `json:"id,omitempty"` + + // Subtype: 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. + Subtype string `json:"subtype,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamAbuseType) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamAbuseType + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamAgeRestriction struct { + // AgeYears: This restriction applies if the user is between + // [min_age_years, age_years) years old. + AgeYears int64 `json:"ageYears,omitempty"` + + MinAgeYears int64 `json:"minAgeYears,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgeYears") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgeYears") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamAgeRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamAgeRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamAndRestriction struct { + // Child: This restriction applies if all of the children apply. + Child []*AbuseiamUserRestriction `json:"child,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Child") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Child") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamAndRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamAndRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamClient: A client is be a Google product, or subproduct that +// provides content for AbuseIAm to classify. +type AbuseiamClient struct { + // Possible values: + // "ABUSE_TEAM" + // "SQE" - Search Quality Eval + // "SEARCH" - Web Search. + // "POSTINI" + // "BLOGGER" + // "ORKUT" + // "ZIPIT" + // "GROUPS" + // "RIPTIDE" + // "GADGETS" - OpenSocial + // "SITES" + // "READER" + // "DOCS" - Obsolete. Use WRITELY. + // "U2U" - Obsolete. Merged into Google Groups. + // "YOUTUBE" + // "POPTART" - Obsolete. + // "COSMO" + // "PROFILES" + // "KNOL" - Obsolete. + // "SKETCHUP" + // "CALENDAR" + // "HOTSHOTS" + // "TRIKI" - Obsolete. + // "MAPS" + // "COMMUNITY_TRANSLATION" + // "WRITELY" - Being superseded by KIX soon. + // "SPREADSHEET_FORM" - Freebird forms only. + // "SPREADSHEET" - Trix, and Bluebird forms. + // "EXPLORER" - Blobs stored by explorer. + // "FINANCE" - Obsolete. + // "GMR" + // "LAIBA" - Obsolete. Product has been shut down. + // "CONFUCIUS" - Obsolete. Product has been shut down. + // "PRESENTATION" + // "CHROME_EXTENSION" - Obsolete. It will be replaced by + // CHROME_WEBSTORE + // "WENDA" - Obsolete. It has been merged into Confucius. + // "TACOTOWN" - Obsolete. Has been replaced with ES. + // "KRAKEN" - Obsolete. + // "URL_SHORTENER" + // "WAREHOUSE" + // "ANDROID_VM" + // "CODESITE" + // "FRIEND_CONNECT" + // "GEOWIKI" + // "GOOGLE_LABS" + // "HELP_CENTER" - Obsolete. + // "SEARCHWIKI" - Obsolete. + // "SIDEWIKI" - Obsolete. + // "TOPIC_SEARCH" - Obsolete. + // "VIDEO" + // "GOOGLEBASE" + // "FEEDBURNER" + // "PUBLISHER_QUALITY" + // "NOTEBOOK" - Obsolete. + // "SMARTLISTS" + // "ENTERPRISE_MARKETPLACE" + // "BOOKS" + // "IGOOGLE" + // "USENET" + // "TRANSLATE" + // "PERFECT_STREAM" - Obsolete. + // "PHOTOS" + // "AFMA" - Obsolete. + // "LIKES" + // "QUESTIONS" + // "SKYJAM" + // "MIC" - Obsolete. + // "ANDROID_MARKET" + // "CHROME_WEBSTORE" + // "FINSKY" + // "BARNOWL" + // "STREET_VIEW" + // "ADCONNECT" - Obsolete. + // "ES" - Emerald Sea. + // "HELLO" - Obsolete. Project has been terminated. + // "TRADER" + // "SCHEMER" + // "ANDROID" - Android and its clients/subservice. + // "MINE" - Obsolete. + // "GAIA" + // "GOGGLES" - Obsolete. + // "SIGNUP" + // "BABEL" + // "CHECKOUT" + // "TASTEMAKER" + // "STRATUS" - Stratus uses the corpus name as subservice. + // "DRAGONFLY" - Obsolete. + // "APIARY" - API integration with DevConsole. + // "CAROUSEL" - ES FrameService traffic (initialy intended for Diary). + // "FOUNTAIN" - ES content from fountain widget. + // "GEOPIX" - Photo content in geo (e.g. Google+ Local). + // "VILLAGE" - UGC for knowledge graph + // "KIX" - Replaces WRITELY. + // "AMARNA" - Image search indexing pipeline team. + // "GINKGO" - Social shopping. + // "TEE" - Obsolete. Helpouts has been shut down. + // "SHOPPING" - Product reviews. + // "SLAM" - SLAM server + // "APPENGINE" - App Engine + // "GUNS" - Google Unified Notifications Service + // "CULTURAL" - Cultural Institute products. + // "COMPUTEENGINE" - Compute Engine. + // "BIGSTORE" - Big Store. + // "COPACABANA" - Service that keeps a COPPA content list. + // "ANALYTICS" - Google Analytics and its subservices. + // "GRANDCENTRAL" - Google Voice. + // "GMAIL" - Gmail. + // "GLASS" - Project Glass. + // "CRISIS_RESPONSE" - OBSOLETE - Google.org Crisis Response UGC. + // "GJOBS" - Garage, or G+ Jobs. + // "HAZMAT" - Hazmat, or Child Safety Server. + // "SAFE_BROWSING" - Safe browsing team (Mawler, Ictis, + // anti-phishing). + // "CLOUD" - Common client for Cloud services. + // "PANTHEON" - Cloud main front end console. + // "CLUSTER" - Common client for Cluff pipelines. + // "KEEP" - Google Keep client. + // "APP_HISTORY" - App History. + // "COMMERCIAL_ENTITY" - For expanding commercial entity graph: + // go/daisy-design + // "ARES_DATA_PROVIDER" - Access data provided by Ares. + // go/project-ares for more details. + // "ARES_DATA_WRITER" + // "BIZBUILDER" - Local businesses. + // "RITZ" - Google Sheets (this and SPREADSHEET_FORM replace + // SPREADSHEET) + // "POLLS" - Google Polls client. + // "APPINVITE" - Social Platform AppInvite (go/appinvite). + Id string `json:"id,omitempty"` + + // Subservice: The name of the subservice within a client. This + // subservice can be used to affect the flow of decision script, or + // selection of backend classifiers. For example, StreetView may want to + // specify a panel is insufficiently blurred (maybe there is a lisense + // plate or public sex, etc), which requires manual review then the + // subservice might be "blurring". + Subservice string `json:"subservice,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamClient) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamClient + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamClusterEvaluationContext: Extra information regarding +// evaluations received through cluster review. +type AbuseiamClusterEvaluationContext struct { + // ClusterFamily: The family of the cluster where the case received the + // evaluation. + ClusterFamily string `json:"clusterFamily,omitempty"` + + // ClusterRowkey: The AbuseIAm rowkey of the cluster where the case + // received an evaluation. + ClusterRowkey string `json:"clusterRowkey,omitempty"` + + // GaiaIdToEscalate: The gaia id of a mail box that ops can send + // inquiries to for appeals. Used only by user clusters to fill a + // required gatekeeper param. See + // gaia_disableserver.DisableSpec.escalate_to field. + GaiaIdToEscalate int64 `json:"gaiaIdToEscalate,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "ClusterFamily") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterFamily") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamClusterEvaluationContext) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamClusterEvaluationContext + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamConstantRestriction struct { + // Type: A constant of type TRUE always applies, and of type FALSE never + // applies. + // + // Possible values: + // "ALWAYS_TRUE" + // "ALWAYS_FALSE" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamConstantRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamConstantRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamContentRestriction: Pair of Verdicts used for ProjectR +// age/geo gating. See http://go/projectr for more information. +type AbuseiamContentRestriction struct { + // AdminVerdict: Takedowns specified by admins via AbuseIAm + AdminVerdict []*AbuseiamVerdict `json:"adminVerdict,omitempty"` + + // UserVerdict: User-specified takedowns + UserVerdict []*AbuseiamVerdict `json:"userVerdict,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AdminVerdict") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AdminVerdict") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamContentRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamContentRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamEvaluation: Backends return Evaluations to AbuseIAm. One of +// the things Evaluations are used for is to explain Verdicts. +type AbuseiamEvaluation struct { + AbuseType *AbuseiamAbuseType `json:"abuseType,omitempty"` + + // Backend: Who creates this Evaluation. This field is required. + // + // Possible values: + // "UNKNOWN" + // "ADMIN" - Eval directly from the AbuseIAm server. + // "GRADS" + // "OCELOT" + // "SPAMIAM" + // "MANUAL_REVIEW" + // "MAWLER" + // "SNEAKY_JS" - Deprecated and code removed. + // "DOWNLOADER" + // "PORN_CLASSIFIER" - Text-based porn classifier. + // "GIBBERISH_DETECTOR" - Language model-based gibberish detector. + // "ANTIVIRUS" + // "GAUSS" - Gauss positive score. + // "REALUSERS" + // "USERRANK" - Gmail userrank goodness score. + // "GRADS_AGGRESSIVE" + // "BULK_ACTION" - Intended for manually executed bulk actions. + // "BADWORD" - Deprecated. Please use PATTERNLIST instead. + // "GAIA" - Gaia account maninuplation (disable, enable). + // "LINKS_COUNT" + // "RE_RULE" - The most common type of rule. + // "SLAM" + // "AUTHORRANK" - Authorrank.percentile -> score. + // "USERRANK_BADNESS" - Gmail userrank badness score. + // "GAUSS_EXPLICIT" + // "GAUSS_IMPLICIT" + // "RETRIEVE_MESSAGE" - For message retrieving only. + // "SPAM_REPORT" + // "SQUEAL" + // "BLOGGER_LOGS" + // "TRUSTRANK_PHISHING" + // "CATFOOD" + // "IMAGE_PORN_CLASSIFIER" + // "OCELOT_IMPORT" + // "FIFE_IMAGE_FETCHER" + // "FAST_RISING_FEATURES" + // "BOTGUARD" - Special rule in decision scripts. + // "NAME_CHECKER" + // "CHEETAH" - Deprecated. Do not use. Use CHEETAH_IMPORT + // "GALLIFREY" + // "OCELOT_DELETE" + // "RULE" - For miscellaneous rules in decision scripts + // "FOCUS" - that are not separate backends. + // "VIDEO_THUMBNAILER" + // "PATTERNLIST" - Check texts against a list of regex patterns. + // "METADATA" - Reads data from metadata store (aka BadWolf). + // "METADATA_IMPORT" - Metadata import adapter. + // "NAME_DETECTOR" - Name detector adapter. + // "SHINGLE_COMPUTER" - Computes shingles for text messages. + // "WIGGUM" - Does search-by-image using Wiggum Server. + // "BINARY_EXPLORATION" - Slow backend. See http://go/bineval. + // "REVNET" - Review graph analysis, stored in metadata. + // "FURS" + // "YOUTUBE_CLASSIFIER" - Classifies messages using the youtube + // models. + // "IDV" - Reads UserProfile from the IDV server. + // "CLUSTERCAT" + // "CHEETAH_IMPORT" - Adapter that writes to Cheetah. + // "CHEETAH_READ" - Adapter that reads from Cheetah. + // "BOTGUARD_DECODE" - Adapter that decodes BotGuard response. + // "QUOTASERVER" - Quota server adapter. + // "YOUTUBE" - Video classification from youtube. + // "BLOGGER" + // "SOCIAL_GRAPH" - Evaluation from SocialGraph adapter. + // "WEB_SIGNALS" + // "TRAWLER" + // "NOTIFICATIONS" - Adapter that sends notifications to users. + // "CASES" - Adapter that interacts with Cases. + // "BADURLS" + // "LINK_IMPORT" - Adatper that imports link signals. + // "SHINGLE_DEDUPER" - Badwolf based shingle deduper. + // "DEV_CONSOLE" - Dev Console info for cloud projects. + // "METADATA_QUERY" - Rich query facility for BadWolf. + // "PLUS_PAGE" - Adapter for querying pluspage info. + // "YOUTUBE_VIDEO_INFO" - Queries video info from YT. + // "GOOGLE_ADMIN" - Google Admin for manual operations. + // "RESPAY" - Clould billing information and termination. + // "COOKBOOK" - Matched to some Cookbook recipes. + // "EASY_LEARN" - Machine learning models evaluations. + // "QUALITY_SAMPLER" - Decides if a message is sampled for quality. + // "BLOBSTORE" - Blobstore adapter. + // "OWNER" - For evaluation initiated by content owner. + // "POLICY" - For evaluation generated according to policy. + // "EXTERNAL" - For evaluations generated by services outside + // "ABUSEIAM_FEEDBACK" - AbuseIAm. Adapter that sends feedbacks + // between clients. + // "BIGSTORE" - Adapters that access Bigstore files. + // "PHOTO_SERVICE" - Adapter that queries Photo Service. + // "GRADS_RELATED" - Fetch grads related accounts. + // "REAPER" - Site reputation service by safe browsing team + // "GATEKEEPER" - Gaia disableserver. + // "VIPER" - Adapters that run a Viper graph. + // "MSISDN" - Phone metadata adapter. + // "VIDEO_REVIEW" - The YouTube Video review service. + // "CSAI_MATCH" - Video matching for CSAI. + // "REDQUEEN" - RedQueen reputation adapter. + // "STREAMER_INDEXER" - Streamer Indexer Service to get locations + // "DREMEL" - of a video for various formats. Dremel service. + // "VISUAL_SEARCH_SERVICE_PORN" - Visual search service for porn + // scores. + // "VISUAL_SEARCH_SERVICE_OCR" - Visual search service for OCR. + // "IMPLICIT_SOCIAL_GRAPH" - implicit social graph for affinity scores + // "EASY_LEARN_BLEND" - Blend Service for Easy Learn (ML models) + // "USER_AURA" - User aura service. + // "GOOPS" - Goops adapter used for publishing messages. + // "ANDROID_CHECKIN" - Android checkin data including device info + // "ARES_DATA_PROVIDER" - Adapter that fetches data from Ares. + // "DROIDGUARD_VERDICT" - Retrieves droidguard verdict for the device. + // "ARES_DATA_WRITER" - Adapter that writes data into Ares. + // "ADAPTIVE_QUOTA" - Adapter to talk to Adaptive Quota system. + // "AIAPLX" - For evaluations derived from aia-plx queries. + // "INFAME" - For evaluations derived from infame. + // "ARES" - For evaluations generated by Ares. + // "VISUAL_SEARCH_SERVICE_ICA" - Visual search service for ICA. + // "VISUAL_SEARCH_SERVICE_BUTTON_DETECTION" + // "VISUAL_SEARCH_SERVICE_LOGO_DETECTION" - Visual search service for + Backend string `json:"backend,omitempty"` + + // ClusterEvaluationContext: Extra information regarding the cluster + // review context where the case received the evaluation. + ClusterEvaluationContext *AbuseiamClusterEvaluationContext `json:"clusterEvaluationContext,omitempty"` + + // Comment: Backends can choose to put some debug info in addition to + // abuse_type, score, and status. + Comment string `json:"comment,omitempty"` + + // Feature: A set of repeated features to allow adapters to return semi + // structured data. Please, prefer using feature instead of the old + // misc_data field since it supports richer and more structured data to + // be passed back. + Feature []*AbuseiamFeature `json:"feature,omitempty"` + + // ManualReviewInfo: Information about the manual review, for manual + // review evaluations. Do NOT expect this field to be set if `backend != + // MANUAL_REVIEW`. + ManualReviewInfo *AbuseiamManualReviewEvaluationInfo `json:"manualReviewInfo,omitempty"` + + // MiscData: This field is used to store miscellaneous information that + // Backend might provide. If you find youself here considering to use + // this field, please prefer using the repeated feature field below + // instead. It supports a richer structure for passing complex data back + // from the backend. + MiscData []*AbuseiamNameValuePair `json:"miscData,omitempty"` + + // ProcessTimeMillisecs: Time in milliseconds when the Backend processed + // this Evaluation. + ProcessTimeMillisecs int64 `json:"processTimeMillisecs,omitempty,string"` + + // ProcessedMicros: When the evaluation was processed by the decision + // script. + ProcessedMicros int64 `json:"processedMicros,omitempty,string"` + + // Region: The list of regions where the evaluation applies. + Region []*AbuseiamRegion `json:"region,omitempty"` + + Score float64 `json:"score,omitempty"` + + // Possible values: + // "OK" + // "ERROR" - The Backend failed to process the target. + Status string `json:"status,omitempty"` + + Target *AbuseiamTarget `json:"target,omitempty"` + + // TimestampMicros: When the Evaluation was generated. + TimestampMicros int64 `json:"timestampMicros,omitempty,string"` + + // UserRestriction: A boolean expression tree used to define the + // restrictions where the verdict applies. Please use + // java/com/google/ccc/abuse/abuseiam/client/TakedownManager.java to + // evaluate this proto. + UserRestriction *AbuseiamUserRestriction `json:"userRestriction,omitempty"` + + // Version: Version of Backend. For rules, this string is the only way + // to differentiate between them. + Version string `json:"version,omitempty"` + + // VideoReviewData: Information about the video review, for video review + // evaluations. Do NOT expect this field to be set if `backend != + // VIDEO_REVIEW`. + VideoReviewData *AbuseiamVideoReviewData `json:"videoReviewData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AbuseType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AbuseType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamEvaluation) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamEvaluation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AbuseiamEvaluation) UnmarshalJSON(data []byte) error { + type NoMethod AbuseiamEvaluation + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + return nil +} + +type AbuseiamFeature struct { + // BooleanValue: Exactly one of the following should be filled in. + BooleanValue bool `json:"booleanValue,omitempty"` + + DoubleValue float64 `json:"doubleValue,omitempty"` + + // FeatureCount: Useful for applications that need to know how many + // times a specific feature occurs + FeatureCount int64 `json:"featureCount,omitempty,string"` + + // Int64Value: Useful for timestamps, or for numerical features where it + // is helpful for decision scripts to have exact values. + Int64Value int64 `json:"int64Value,omitempty,string"` + + // IntegerValue: integer value field is deprecated and shall only be + // used for passing the following features hardcoded in + // spamiam::SpamIAmMessage: spamiam::OrkutSenderId + // spamiam::OrkutPostnumReports spamiam::BloggerNumComments + // spamiam::BloggerNumCommentsByOthers Another hard-coded spamiam + // feature is spamiam::BlogName, which can be specified via string + // value. + IntegerValue int64 `json:"integerValue,omitempty"` + + Name string `json:"name,omitempty"` + + StringValue []string `json:"stringValue,omitempty"` + + // TimestampSequence: This field should only be used to store a sequence + // of timestamps associated with the feature. + TimestampSequence googleapi.Int64s `json:"timestampSequence,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BooleanValue") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BooleanValue") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamFeature) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamFeature + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AbuseiamFeature) UnmarshalJSON(data []byte) error { + type NoMethod AbuseiamFeature + var s1 struct { + DoubleValue gensupport.JSONFloat64 `json:"doubleValue"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.DoubleValue = float64(s1.DoubleValue) + return nil +} + +// AbuseiamGeoRestriction: 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. +type AbuseiamGeoRestriction struct { + Locale []*AbuseiamGeoRestrictionLocale `json:"locale,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Locale") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Locale") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamGeoRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamGeoRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamGeoRestrictionLocale struct { + // Location: The location where the restriction applies. Defaults to the + // "The world". See go/iii. + Location string `json:"location,omitempty"` + + // Restriction: The UserRestriction that applies to this location. If + // not specified evaluates to true. + Restriction *AbuseiamUserRestriction `json:"restriction,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Location") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Location") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamGeoRestrictionLocale) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamGeoRestrictionLocale + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamHash: Information about various hashes that can be computed +// on a message ex: simhash, attachment hash, etc +type AbuseiamHash struct { + // Hash: 64 bit hash in the hex form. + Hash string `json:"hash,omitempty"` + + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Hash") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Hash") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamHash) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamHash + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamManualReviewEvaluationInfo: Relevant information for manual +// review evaluations. +type AbuseiamManualReviewEvaluationInfo struct { + // Reviewer: Reviewer performing the manual review. + Reviewer *AbuseiamManualReviewerInfo `json:"reviewer,omitempty"` + + // Tool: Tool used to perform the manual review. + Tool *AbuseiamManualReviewTool `json:"tool,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Reviewer") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Reviewer") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamManualReviewEvaluationInfo) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamManualReviewEvaluationInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamManualReviewTool struct { + ExperimentId string `json:"experimentId,omitempty"` + + // Possible values: + // "UNKNOWN" + // "NUFF" - content-review.corp.google.com + // "GOOGLE_ADMIN" - google-admin.corp.google.com + // "YOUTUBE" - admin.youtube.com + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ExperimentId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExperimentId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamManualReviewTool) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamManualReviewTool + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamManualReviewerInfo struct { + // Possible values: + // "UNKNOWN" + // "LEGAL" - Member of mdb/legal-removals-contentreview-abuseiam. + // "POLICY" - Member of mdb/user-policy. + // "ANALYST" - Member of mdb/abuse-analysts. + // "LEGAL_PANEL" - A group of two or more members of + // mdb/legal-removals-contentreview-abuseiam who review content + // collectively. This credential will be set manually in decision + // scripts when reviews come from the appropriate queue and will not be + // automatically set by the manual review server. + Credential []string `json:"credential,omitempty"` + + Username string `json:"username,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Credential") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Credential") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamManualReviewerInfo) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamManualReviewerInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamNameValuePair struct { + Name string `json:"name,omitempty"` + + NonUtf8Value string `json:"nonUtf8Value,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamNameValuePair) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamNameValuePair + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamNotRestriction struct { + // Child: This restriction applies if the child does not apply. Only one + // is allowed. "repeated" is used to avoid breaking Sawzall (See + // b/6758277). + Child []*AbuseiamUserRestriction `json:"child,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Child") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Child") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamNotRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamNotRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamOrRestriction struct { + // Child: This restriction applies if any of the children apply. + Child []*AbuseiamUserRestriction `json:"child,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Child") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Child") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamOrRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamOrRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamRegion struct { + // Region: This is a CLDR Region Code: + // http://wiki/Main/IIIHowTo#using_region It is used to denote the + // region affected by a verdict. + Region string `json:"region,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Region") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Region") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamRegion) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamRegion + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamSpecialRestriction: A SpecialRestriction is a standardized +// UserRestriction which lives in a table maintained via CDD. +type AbuseiamSpecialRestriction struct { + // Possible values: + // "ALCOHOL" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamSpecialRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamSpecialRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AbuseiamTarget struct { + Id string `json:"id,omitempty"` + + // Possible values: + // "MESSAGE_ID" - verdict is issued on the whole message + // "CHUNK_ID" - verdict is issued on the specified chunk + // "IMAGE_URL" - target id is an image url inside chunk content + // "URL" - target id is a non-image url inside chunk content + // "USER_ID" - abuse happens at gaia user level + // "IP" - target id is an IP address + // "SITE" - target id is a sitechunk + // "SITEDOMAIN" - target id is a domain + // "ENTITY_ID" - The 4 entries below are *only* for the +1 pipeline. + // Please do not use elsewhere. entity id is a generic Zipit ID + // "PERFECT_STREAM_ID" - Obsolete. + // "ACTIVITY_ID" - activity id in ASBE for ES + // "COMMENT_ID" - comment id for ASBE comments in ES + // "AD_ID" - ad id for ES + // "TEXT" - text target. Used in Ocelot name reputation. + // "TEXT_FRAGMENT" - text fragment. Ocelot for name reputation. + // "CLUSTER_MEMBER_ID" - Targets for Cluster reviews. See + // http://go/cluff-design-doc. Message ID for the targetted cluster + // member + // "EMBED_ID" - embed_id for ASBE embeds in ES + // "ANDROID_ID" - android_id of the device + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamTarget) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamTarget + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamUserNotification: A structure used to configure a +// notification to a user. +type AbuseiamUserNotification struct { + // Possible values: + // "UNKNOWN" + // "BUILT_IN" - Use product built-in notification, such as pop-ups. + // "EMAIL" - Email user, e.g., through ANS(http://sites/cat/ans). + // "GAIA" - Show notifications at Gaia level, such as during login. + Channel string `json:"channel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Channel") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Channel") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamUserNotification) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamUserNotification + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamUserRestriction: Describes restrictions on where the verdict +// applies. Please use {@code TakedownManager} to evaluate this proto. +type AbuseiamUserRestriction struct { + AgeRestriction *AbuseiamAgeRestriction `json:"ageRestriction,omitempty"` + + // AndRestriction: Operators + AndRestriction *AbuseiamAndRestriction `json:"andRestriction,omitempty"` + + // ConstantRestriction: Constant + ConstantRestriction *AbuseiamConstantRestriction `json:"constantRestriction,omitempty"` + + // GeoRestriction: Leaf Nodes + GeoRestriction *AbuseiamGeoRestriction `json:"geoRestriction,omitempty"` + + NotRestriction *AbuseiamNotRestriction `json:"notRestriction,omitempty"` + + OrRestriction *AbuseiamOrRestriction `json:"orRestriction,omitempty"` + + SpecialRestriction *AbuseiamSpecialRestriction `json:"specialRestriction,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgeRestriction") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgeRestriction") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamUserRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamUserRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamVerdict: Verdict against a target. AbuseIAm generates a +// verdict based on evaluations. AbuseIAm can send such verdicts to +// clients for enforcement. +type AbuseiamVerdict struct { + // Client: Target client of the verdict. It can be used to differentiate + // verdicts from multiple clients when such verdicts are processed in + // one common place. + Client *AbuseiamClient `json:"client,omitempty"` + + // Comment: Additional info regarding the verdict. + Comment string `json:"comment,omitempty"` + + // Possible values: + // "ERROR" + // "NO_ACTION" - The content is okay and no action needs to be taken. + // "GOOD" - To mark content/user as good. + // "DELETE" + // "INTERSTITIAL" - Give a user an interstial message. E.g., via a + // pop-up or an email. + // "HIDE" + // "BLACK_LIST" - The product should black list this content itself. + // "MARK_AS_SPAM" + // "REWRITE_LINKS" - There's something bad about the links, so we + // recommend that the links be 'scrubbed' to go through the GWS + // redirector to protect against malware and phishing: + // http://wiki.corp.google.com/twiki/bin/view/Main/SafeRedirector + // "HIDE_AND_NOTIFY" - HIDE_AND_NOTIFY is used when the target needs + // to be hidden, but the UI needs to show an appropriate error message. + // "FREEZE_SERVICE" - Freeze a user on service level. E.g., a frozen + // user can not generate new content. + // "SUSPEND_SERVICE" - Suspend a user on service level. + // "SMS_DISABLE" - SMS-disable a user on Gaia level. + // "NOTIFY" - Notify a user (e.g., warn a user). + Decision string `json:"decision,omitempty"` + + // DurationMins: Time duration (in minutes) of the verdict. + DurationMins int64 `json:"durationMins,omitempty"` + + // Evaluation: Evaluations relevant to this verdict. Every Verdict + // should contain at least one Evaluation. + Evaluation []*AbuseiamEvaluation `json:"evaluation,omitempty"` + + // Hashes: Details of all the hashes that can be computed on a message, + // such as simhash and attachment hash + Hashes []*AbuseiamHash `json:"hashes,omitempty"` + + // IsLegalIssued: Is this verdict issued by legal? + IsLegalIssued bool `json:"isLegalIssued,omitempty"` + + // MiscScores: This field is used to pass relevant / necessary scores to + // our clients. For eg: ASBE propogates these scores to moonshine. + MiscScores []*AbuseiamNameValuePair `json:"miscScores,omitempty"` + + // ReasonCode: A short description of the reason why the verdict + // decision is made. + ReasonCode string `json:"reasonCode,omitempty"` + + // Region: The regions in which this verdict should be enforced. Absence + // of this field indicates that the verdict is applicable everywhere. + Region []*AbuseiamRegion `json:"region,omitempty"` + + // Restriction: Restrictions on where this verdict applies. If any + // restriction is met, the verdict is applied there. If no restrictions + // are present, the verdict is considered global. + Restriction []*AbuseiamVerdictRestriction `json:"restriction,omitempty"` + + // StrikeCategory: Category of the strike if this is a strike verdict. + // + // Possible values: + // "ES" - General Emerald Sea. + // "CP" - Child porn. + // "COPYRIGHT" - Copyright violations. + // "BLOGGER" - Blogger. + // "GRANDCENTRAL" - Google Voice. + // "DRIVE" - Drive. + // "CLOUD" - Cloud platform. + // "SITES" - Google Sites. + StrikeCategory string `json:"strikeCategory,omitempty"` + + Target *AbuseiamTarget `json:"target,omitempty"` + + // TargetTimestampMicros: The timestamp of the target. E.g., the time + // when the target was updated. + TargetTimestampMicros int64 `json:"targetTimestampMicros,omitempty,string"` + + // TimestampMicros: When the verdict is generated + TimestampMicros int64 `json:"timestampMicros,omitempty,string"` + + // UserNotification: Extra notification(s) to be delivered to target + // user or message owner about the verdict. + UserNotification []*AbuseiamUserNotification `json:"userNotification,omitempty"` + + // Version: version of decision script + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Client") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Client") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamVerdict) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamVerdict + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamVerdictRestriction: Describes restrictions on where the +// verdict applies. +type AbuseiamVerdictRestriction struct { + // Context: For a restriction to apply, all contexts must be satisfied. + // For example, if context[0] is COUNTRY/'GERMANY' and context[1] is + // DESTINATION_STREAM/'gplus:SQUARE:knitting_discussion', then the + // verdict applies only when the 'knitting discussion' square is viewed + // from inside Germany. Please note that this is present for legacy + // reasons and users of this field would be migrated to use the + // user_restriction field defined below. + Context []*AbuseiamVerdictRestrictionContext `json:"context,omitempty"` + + // UserRestriction: A boolean expression tree used to define the + // restrictions where the verdict applies. Please use + // java/com/google/ccc/abuse/abuseiam/client/TakedownManager.java to + // evaluate this proto. + UserRestriction *AbuseiamUserRestriction `json:"userRestriction,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Context") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Context") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamVerdictRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamVerdictRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamVerdictRestrictionContext: Describes a dimension of a context +// where a verdict applies. +type AbuseiamVerdictRestrictionContext struct { + // Id: String identifying the context. + Id string `json:"id,omitempty"` + + // Possible values: + // "UNKNOWN" - Dummy default value. Avoid using it explicitly as a + // Type. + // "DESTINATION_STREAM" - DESTINATION_STREAM is used when a verdict + // only applies to content in a particular indexed stream/channel. + // Examples include Squares, Blogs, and Youtube videos. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamVerdictRestrictionContext) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamVerdictRestrictionContext + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamVideoReviewData: Information about a video review. +type AbuseiamVideoReviewData struct { + // ReferenceFragment: Serialized repeated + // youtube_admin.adminmatch.csai.ReferenceFragment + ReferenceFragment []string `json:"referenceFragment,omitempty"` + + // Reviewer: Information about the video reviewer. + Reviewer *AbuseiamVideoReviewer `json:"reviewer,omitempty"` + + // VideoId: The Viper id of the video. + VideoId string `json:"videoId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ReferenceFragment") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ReferenceFragment") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamVideoReviewData) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamVideoReviewData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AbuseiamVideoReviewer: Information about video reviewers. +type AbuseiamVideoReviewer struct { + // Possible values: + // "UNKNOWN" - Default value, do not use explicitly. + // "CRT" - Content review team. This team does general reviews. + // "TIERED_CRT" - Special high quality CRT which do more high + // confidence reviews. + // "POLICY" - Policy team. + // "ANALYSTS" - Analysts from the abuse team. + // "LEGAL" - The general legal team. + // "LEGAL_CSAI" - Queue for LEGAL_CSAI team for high priority items. + // "LEGAL_REMOVALS" - The legal team which handles content removals + // (e.g. copyright). + // "HIJACKING_TEAM" - Team which deals with hijacking reviews. + // "CRT_CSAI" - CRT Team in Dublin, which handles CSAI-related + // reviews. + // "LEGAL_CSAI_LOW_PRIORITY" - Queue for lower priority suspected CSAI + // items (e.g. content from disabled users) + Type string `json:"type,omitempty"` + + // Username: The username of the person doing the video review. + Username string `json:"username,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AbuseiamVideoReviewer) MarshalJSON() ([]byte, error) { + type NoMethod AbuseiamVideoReviewer + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AdsShoppingReportingOffersSerializedSoriId: 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. +type AdsShoppingReportingOffersSerializedSoriId struct { + HighId uint64 `json:"highId,omitempty,string"` + + LowId1 uint64 `json:"lowId1,omitempty,string"` + + LowId2 uint64 `json:"lowId2,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "HighId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HighId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AdsShoppingReportingOffersSerializedSoriId) MarshalJSON() ([]byte, error) { + type NoMethod AdsShoppingReportingOffersSerializedSoriId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type Anchors struct { + Anchor []*AnchorsAnchor `json:"anchor,omitempty"` + + // HomepageAnchorsDropped: The total # of local homepage anchors dropped + // in AnchorAccumulator. + HomepageAnchorsDropped int64 `json:"homepageAnchorsDropped,omitempty,string"` + + // IndexTier: 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. + IndexTier int64 `json:"indexTier,omitempty"` + + // LocalAnchorsDropped: The total # of local non-homepage anchors + // dropped in AnchorAccumulator. + LocalAnchorsDropped int64 `json:"localAnchorsDropped,omitempty,string"` + + // NonlocalAnchorsDropped: The total # of non-local anchors dropped in + // AnchorAccumulator. + NonlocalAnchorsDropped int64 `json:"nonlocalAnchorsDropped,omitempty,string"` + + // RedundantAnchorsDropped: The *_anchors_dropped fields below are not + // populated by Alexandria, which uses cdoc.anchor_stats instead. The + // total # of redundant anchors dropped in linkextractor. + RedundantAnchorsDropped int64 `json:"redundantAnchorsDropped,omitempty,string"` + + Redundantanchorinfo []*AnchorsRedundantAnchorInfo `json:"redundantanchorinfo,omitempty"` + + // SupplementalAnchorsDropped: The total # of supplemental anchors + // dropped in AnchorAccumulator. ## DEPRECATED. + SupplementalAnchorsDropped int64 `json:"supplementalAnchorsDropped,omitempty,string"` + + // TargetDocid: may be implicit + TargetDocid uint64 `json:"targetDocid,omitempty,string"` + + // TargetSite: HOST_LEVEL site chunking. + TargetSite string `json:"targetSite,omitempty"` + + // TargetUrl: This is produced during link extraction but not written + // out in the linklogs in order to save space. + TargetUrl string `json:"targetUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Anchor") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Anchor") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *Anchors) MarshalJSON() ([]byte, error) { + type NoMethod Anchors + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AnchorsAnchor struct { + Bucket int64 `json:"bucket,omitempty"` + + // CatfishTags: 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 + CatfishTags []int64 `json:"catfishTags,omitempty"` + + // CompressedImageUrls: If the anchor contained images, these image urls + // are stored here in compressed form. + CompressedImageUrls []string `json:"compressedImageUrls,omitempty"` + + // CompressedOriginalTargetUrl: The anchor's original target url, + // compressed. Available only in Alexandria docjoins when the anchor is + // forwarded. + CompressedOriginalTargetUrl string `json:"compressedOriginalTargetUrl,omitempty"` + + Context int64 `json:"context,omitempty"` + + // Context2: This is a hash of terms near the anchor. (This is a + // second-generation hash replacing the value stored in the 'context' + // field.) + Context2 int64 `json:"context2,omitempty"` + + // CreationDate: 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. + CreationDate int64 `json:"creationDate,omitempty"` + + Deleted bool `json:"deleted,omitempty"` + + DeletionDate int64 `json:"deletionDate,omitempty"` + + // Demotionreason: DEPRECATED + Demotionreason int64 `json:"demotionreason,omitempty"` + + // EncodedNewsAnchorData: 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.tx + // t Scores are being computed with quality/freshness/news_anchors/ + // routines. + EncodedNewsAnchorData int64 `json:"encodedNewsAnchorData,omitempty"` + + // Experimental: If true, the anchor is for experimental purposes and + // should not be used in serving. + Experimental bool `json:"experimental,omitempty"` + + // Expired: true iff exp domain + Expired bool `json:"expired,omitempty"` + + // FirstseenDate: # 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 + FirstseenDate int64 `json:"firstseenDate,omitempty"` + + // FirstseenNearCreation: 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. + FirstseenNearCreation bool `json:"firstseenNearCreation,omitempty"` + + Fontsize int64 `json:"fontsize,omitempty"` + + // ForwardingTypes: 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. + ForwardingTypes int64 `json:"forwardingTypes,omitempty"` + + // Fragment: The URL fragment for this anchor (the foo in + // http://www.google.com#foo) + Fragment string `json:"fragment,omitempty"` + + // FullLeftContext: The full context. These are not written out in the + // linklogs. + FullLeftContext googleapi.Uint64s `json:"fullLeftContext,omitempty"` + + FullRightContext googleapi.Uint64s `json:"fullRightContext,omitempty"` + + // IsLocal: 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). + IsLocal bool `json:"isLocal,omitempty"` + + // LastUpdateTimestamp: Used for history and freshness tracking - the + // timestamp this anchor is updated in indexing. + LastUpdateTimestamp int64 `json:"lastUpdateTimestamp,omitempty"` + + // LinkAdditionalInfo: Additional information related to the anchor, + // such as additional anchor text or scores. + LinkAdditionalInfo *Proto2BridgeMessageSet `json:"linkAdditionalInfo,omitempty"` + + // LinkTags: Contains info on link type, source page, etc. + LinkTags []int64 `json:"linkTags,omitempty"` + + // Locality: For ranking purposes, the quality of an anchor is measured + // by its "locality" and "bucket". See quality/anchors/definitions.h for + // more information. + Locality int64 `json:"locality,omitempty"` + + // Offset: 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. + Offset int64 `json:"offset,omitempty"` + + // OrigText: Original text, including capitalization and punctuation. + // Runs of whitespace are collapsed into a single space. + OrigText string `json:"origText,omitempty"` + + // OriginalTargetDocid: The docid of the anchor's original target. This + // field is available if and only if the anchor is forwarded. + OriginalTargetDocid uint64 `json:"originalTargetDocid,omitempty,string"` + + // PagerankWeight: Weight to be stored in linkmaps for pageranker + PagerankWeight float64 `json:"pagerankWeight,omitempty"` + + // ParallelLinks: The number of additional links from the same source + // page to the same target domain. Not populated if is_local is true. + ParallelLinks int64 `json:"parallelLinks,omitempty"` + + // PossiblyOldFirstseenDate: 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. + PossiblyOldFirstseenDate bool `json:"possiblyOldFirstseenDate,omitempty"` + + // SetiPagerankWeight: TEMPORARY + SetiPagerankWeight float64 `json:"setiPagerankWeight,omitempty"` + + Source *AnchorsAnchorSource `json:"source,omitempty"` + + // SourceType: 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. + SourceType int64 `json:"sourceType,omitempty"` + + // TargetUrlEncoding: 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. + TargetUrlEncoding int64 `json:"targetUrlEncoding,omitempty"` + + // Text: Space-delimited anchor words. Text that needs segmentation + // (like CJK or Thai) is unsegmented, since we set + // FLAGS_segment_during_lexing to false in mr-linkextractor.cc . + Text string `json:"text,omitempty"` + + // Timestamp: This field is DEPRECATED and no longer filled. For source + // page crawl timestamp, use Source.crawl_timestamp. Next tag id should + // be 62. + Timestamp int64 `json:"timestamp,omitempty,string"` + + // Type: DEPRECATED: Now in link_tags + Type int64 `json:"type,omitempty"` + + // Weight: weights are 0-127 + Weight int64 `json:"weight,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Bucket") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Bucket") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AnchorsAnchor) MarshalJSON() ([]byte, error) { + type NoMethod AnchorsAnchor + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AnchorsAnchor) UnmarshalJSON(data []byte) error { + type NoMethod AnchorsAnchor + var s1 struct { + PagerankWeight gensupport.JSONFloat64 `json:"pagerankWeight"` + SetiPagerankWeight gensupport.JSONFloat64 `json:"setiPagerankWeight"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.PagerankWeight = float64(s1.PagerankWeight) + s.SetiPagerankWeight = float64(s1.SetiPagerankWeight) + return nil +} + +// AnchorsAnchorSource: attributes of the source document for the link +type AnchorsAnchorSource struct { + // AdditionalInfo: Additional information related to the source, such as + // news hub info. + AdditionalInfo *Proto2BridgeMessageSet `json:"additionalInfo,omitempty"` + + // Cluster: anchor++ cluster id + Cluster int64 `json:"cluster,omitempty"` + + // CompressedUrl: compressed source url + CompressedUrl string `json:"compressedUrl,omitempty"` + + // CrawlTimestamp: Source page crawl timestamp. + CrawlTimestamp int64 `json:"crawlTimestamp,omitempty,string"` + + // Docid: The docid field used to be "required", but it is now + // "optional" because it is not present when anchors are stored in + // webtable. When anchors are stored as part of docjoin files in the + // segment indexer, however, docid should be considered required. + Docid uint64 `json:"docid,omitempty,string"` + + // Doclength: necessary for anything? + Doclength int64 `json:"doclength,omitempty"` + + // HomePageInfo: Information about if the source page is a home page. It + // can be one of the enum values defined in PerDocData::HomePageInfo + // (NOT_HOMEPAGE, NOT_TRUSTED, PARTIALLY_TRUSTED, and FULLY_TRUSTED). + HomePageInfo int64 `json:"homePageInfo,omitempty"` + + // Indyrank: uint16 scale + Indyrank int64 `json:"indyrank,omitempty"` + + // Ipaddr: DEPRECATED, use packed_ipaddress + Ipaddr int64 `json:"ipaddr,omitempty"` + + // Language: default -> English + Language int64 `json:"language,omitempty"` + + // Linkhash: 0 -> no hash + Linkhash uint64 `json:"linkhash,omitempty,string"` + + // LocalCountryCodes: Countries to which the source page is local/most + // relevant; stored as III identifiers for country/region codes (see + // http://go/iii). + LocalCountryCodes []int64 `json:"localCountryCodes,omitempty"` + + // Nsr: This NSR value has range [0,1000] and is the original value + // [0.0,1.0] multiplied by 1000 rounded to an integer. + Nsr int64 `json:"nsr,omitempty"` + + Outdegree int64 `json:"outdegree,omitempty"` + + // Outsites: approx num of pointed-to sites + Outsites int64 `json:"outsites,omitempty"` + + // PackedIpaddress: string in IPAddress::ToPackedString() format. + PackedIpaddress string `json:"packedIpaddress,omitempty"` + + // PageTags: Page tags are described by enum PageTag in PerDocData. Page + // tags are used in anchors to identify properties of the linking page. + // These are DEPRECATED: in the future, use link_tags instead. + // DEPRECATED + PageTags []int64 `json:"pageTags,omitempty"` + + // Pagerank: uint16 scale + Pagerank int64 `json:"pagerank,omitempty"` + + // PagerankNs: unit16 scale + PagerankNs int64 `json:"pagerankNs,omitempty"` + + // Seglanguage: DEPRECATED + Seglanguage int64 `json:"seglanguage,omitempty"` + + Site string `json:"site,omitempty"` + + // Spamrank: uint16 scale + Spamrank int64 `json:"spamrank,omitempty"` + + // Spamscore1: deprecated, to be removed after October 20. 0-127 scale + Spamscore1 int64 `json:"spamscore1,omitempty"` + + // Spamscore2: 0-127 scale + Spamscore2 int64 `json:"spamscore2,omitempty"` + + // WebtableKey: Webtable key of source + WebtableKey string `json:"webtableKey,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AdditionalInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AdditionalInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AnchorsAnchorSource) MarshalJSON() ([]byte, error) { + type NoMethod AnchorsAnchorSource + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AnchorsRedundantAnchorInfo: 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. +type AnchorsRedundantAnchorInfo struct { + AnchorsDropped int64 `json:"anchorsDropped,omitempty,string"` + + Domain string `json:"domain,omitempty"` + + Text string `json:"text,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AnchorsDropped") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AnchorsDropped") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AnchorsRedundantAnchorInfo) MarshalJSON() ([]byte, error) { + type NoMethod AnchorsRedundantAnchorInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsDynamiteCustomerId: Represents a GSuite customer ID. Obfuscated +// with CustomerIdObfuscator. +type AppsDynamiteCustomerId struct { + CustomerId string `json:"customerId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CustomerId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CustomerId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsDynamiteCustomerId) MarshalJSON() ([]byte, error) { + type NoMethod AppsDynamiteCustomerId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsDynamiteSharedOrganizationInfo: Contains info about the entity +// that something is, or is owned by. +type AppsDynamiteSharedOrganizationInfo struct { + ConsumerInfo *AppsDynamiteSharedOrganizationInfoConsumerInfo `json:"consumerInfo,omitempty"` + + CustomerInfo *AppsDynamiteSharedOrganizationInfoCustomerInfo `json:"customerInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ConsumerInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ConsumerInfo") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsDynamiteSharedOrganizationInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsDynamiteSharedOrganizationInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsDynamiteSharedOrganizationInfoConsumerInfo: Intentionally empty. +// Used to disambiguate consumer and customer use cases in oneof below. +type AppsDynamiteSharedOrganizationInfoConsumerInfo struct { +} + +type AppsDynamiteSharedOrganizationInfoCustomerInfo struct { + CustomerId *AppsDynamiteCustomerId `json:"customerId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CustomerId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CustomerId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsDynamiteSharedOrganizationInfoCustomerInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsDynamiteSharedOrganizationInfoCustomerInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleActivityBackendDestinationStream: A DestinationStream is a +// /namespace/id[0]/id[1]/.../id[n] that represents a collection of +// Activities. Example destinations: -The Profile Stream on +// http://plus.google.com/+JohnDoe/posts -A Square Stream on +// http://plus.google.com/squares/123 -A "comment Stream" (Fountain) on +// http://www.youtube.com/watch?id=123 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 +type AppsPeopleActivityBackendDestinationStream struct { + // Id: The hierarchy of IDs. Each individual ID is "flat" and the + // repeated list defines the hierarchy. Namespaces define the "validity" + // of this hierachy (depth, naming convention, etc) and the server will + // reject invalid IDs. + Id []string `json:"id,omitempty"` + + // Possible values: + // "UNKNOWN_DESTINATION_NAMESPACE" - To prevent issues with + // out-of-sync clients sending unexpected values. + // "SQUARES" - Use for G+ community. The ID is the square gaia id. If + // this is a square substream, second ID is the substream stream ID. + // Write-time logic: -Verify that the AUTHOR is a member of this Square. + // Read-time logic: -Fetch the name of the Square and substream. + // "FOUNTAIN" - For Blogger Fountain, the ID is the canonical URL of + // the site. For Distiller, the ID is "youtube"/channel_id/video_id. For + // Distiller Discussion Page, the ID is "youtube"/channel_id/"channel". + // For Distiller Private Msg, the ID is "youtube"/channel_id/"private". + // For Backstage, the ID is "youtube"/channel_id/"backstage". For Live, + // the ID is "youtube"/channel_id/"live"/"chat" and + // "youtube"/channel_id/video_id/"live"/"chat". + // "PROFILE" - Used for Profile Stream fetches. The ID is the + // (decimal) Gaia ID of the user whose profile is being fetched. + // "COLLEXIONS" - Used for Collexions feature (go/g+c) ID is the + // Collexion ID to which the post is assigned. These IDs are allocated + // from their own id space maintained via UniqueId. They are NOT gaia + // ids, nor do they need to be used in conjunction with a gaia id when + // identifying a collection. In general a post will be assigned to at + // most 1 collexion, however there do exist corner cases where + // multi-inclusion can occur. + // "TEST" - Used for test data for clients to prototype with. This + // should only ever be used in the SBE_PLAYGROUND corpus + // (go/sbe-playground), or in tests. + // "HIGHLIGHT" - Used for Search Highlight (go/seng-highlight). The ID + // is the account id to which a highlight belongs. + // "SOCIETY" - Used for Society (go/society) ID is an s2 cell id + // (go/s2), optionally with an additional ID of a "topic" string within + // that cell. + // "MEMEGEN" - Used for Memegen integration with SBE + // (go/memegen-sbe-onboarding) The ID is "meme" followed by the meme id + // to which a comment belongs. + // "PHOTOS" - Used for Photos integration with SBE + // (go/envelope-comments-design-doc) + // "SUPPLY_CHAIN_CENTRAL" - Used for Supply Chain Central commenting + // capability (go/scc-comment). ID format: - For purchase order app: + // resource/purchase_order//line_item/ - For data exchange app: + // application/data_exchange/report/ + // "PAISA" - Used for Paisa integration with SBE + // (go/paisa-stanza-plan) + // "SOCIETY_CHAT" - Use for Society Chat (http://go/society-chat). The + // ID format is /society/users/private/. + // "PLUS_ENTERPRISE_LOG" - Use for G+ Enterprise Log API Event API + // (http://go/gplus_interaction_event_sync_queue) The ID format is + // /enterprise// + // "SEARCH_UGC" - Used for UGC for knowledge (go/knowledge-ugc). The + // ID format is /livestream/sports/ + // "LOUPE" - Loupe go/sbe-loupe-requirements. + // "MINDSEARCH" - Mindsearch go/india-qa. + // "SOS_LIVE_COMMENTS" - Used for SOS Live comments + // (go/live-comments-sos-alerts). The ID format is /livestream/sos/ + // "SBE_LOADTEST" - Used for SBE loadtests. + // "SYSTEM1" - Used for System 1 (go/sys1-sbe) + // "G_PLUS" - Use if you want the Activity to show in the regular G+ + // product, i.e. the main Stream, user's profile streams, the G+ search + // stream, etc. No ID should be used with this DestinationNamespace. + // "YOUTUBE" - Used to serve consumption stream on Youtube homepage. + // The stream is essentially a user's consumption stream with restricts + // set during write-time indexing such that only activities with Youtube + // video are retrieved during read-time. Deprecated - Do not use. + // "EVENTS" - DEPRECATED - once used for the G+ Events feature, but + // never launched. + // "DEPRECATED_COLLECTIONS" - It is deprecated and replaced by + // COLLEXIONS. + // "REVIEWS" - Used for Review Stream fetches. The ID is the canonical + // representation of the entity being reviewed (for place reviews, it is + // cluster_id). + // "BACKSTAGE" - Deprecated - do not use. Backstage uses FOUNTAIN + // DestinationNamespace. + // "SPACES" - Deprecated. Used for Spaces (go/spaces) ID is the space + // ID in which the post is made. Posts will reside in exactly one space. + Namespace string `json:"namespace,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleActivityBackendDestinationStream) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleActivityBackendDestinationStream + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleActivityStreamqualityDistillerEngagements: 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. +type AppsPeopleActivityStreamqualityDistillerEngagements struct { + // ReportCompromised: Corresponds on "This account might be compromised + // or hacked" reporting action. + ReportCompromised int64 `json:"reportCompromised,omitempty,string"` + + // ReportHarassment: Corresponds on "Harassment or bullying" reporting + // action. + ReportHarassment int64 `json:"reportHarassment,omitempty,string"` + + // ReportHate: Corresponds on "Hate speach or graphic violence" + // reporting action. + ReportHate int64 `json:"reportHate,omitempty,string"` + + // ReportPorn: Corresponds on "Pornography or sexually explicit + // material" reporting action. + ReportPorn int64 `json:"reportPorn,omitempty,string"` + + // ReportSpam: Corresponds on "Unwanted commercial content or spam" + // reporting action. + ReportSpam int64 `json:"reportSpam,omitempty,string"` + + // ServeCount: Number of times this activity was served out of + // asbe/stanza. + ServeCount int64 `json:"serveCount,omitempty,string"` + + // TimeSec: Timestamp in seconds for which time this record is valid. + TimeSec int64 `json:"timeSec,omitempty,string"` + + // YtThumbsDown: Corresponds on Distiller comment thumbs down action. + YtThumbsDown int64 `json:"ytThumbsDown,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "ReportCompromised") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ReportCompromised") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleActivityStreamqualityDistillerEngagements) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleActivityStreamqualityDistillerEngagements + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiAbout struct { + // Possible values: + // "TEXT_PLAIN" + // "TEXT_HTML" + ContentType string `json:"contentType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // SafeHtmlValue: Sanitized HTML value that is only populated when the + // SANITIZE_ABOUT_HTML extension is requested. + SafeHtmlValue *WebutilHtmlTypesSafeHtmlProto `json:"safeHtmlValue,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContentType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContentType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAbout) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAbout + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData: Extension +// data for use in AboutMe. +type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData struct { + NameDisplayOptions *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions `json:"nameDisplayOptions,omitempty"` + + PhotosCompareData *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData `json:"photosCompareData,omitempty"` + + ProfileEditability *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability `json:"profileEditability,omitempty"` + + ProfileNameModificationHistory *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory `json:"profileNameModificationHistory,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NameDisplayOptions") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NameDisplayOptions") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptio +// ns: See NameDisplayOptions in +// //depot/google3/focus/backend/proto/backend.proto. See also +// go/nickname-mess. +type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions struct { + // Possible values: + // "UNKNOWN_NICKNAME_OPTION" + // "QUOTED_NICKNAME" - Include the nickname, in quotes, in the display + // name. In English, the nickname appears between the given and family + // names. Example: Victor "Pug" Henry. + // "PAREN_NICKNAME" - Include the nickname, in parentheses, in the + // display name. In English, the nickname appears after the given and + // family names. Example: Victor Henry (Pug). + NicknameOption string `json:"nicknameOption,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NicknameOption") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NicknameOption") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataNameDisplayOptions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData struct { + DiffData *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData `json:"diffData,omitempty"` + + HighResUrl string `json:"highResUrl,omitempty"` + + // InconsistentPhoto: 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 + InconsistentPhoto bool `json:"inconsistentPhoto,omitempty"` + + // LowResData: Only present if the photo diff is greater than 0.01 on + // any color band. + LowResData string `json:"lowResData,omitempty"` + + LowResUrl string `json:"lowResUrl,omitempty"` + + MonogramUrl string `json:"monogramUrl,omitempty"` + + // PrivateLowResAcl: True if the low-res photo has a private ACL set. + PrivateLowResAcl bool `json:"privateLowResAcl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DiffData") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DiffData") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData struct { + BlueDiff float64 `json:"blueDiff,omitempty"` + + GreenDiff float64 `json:"greenDiff,omitempty"` + + RedDiff float64 `json:"redDiff,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BlueDiff") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BlueDiff") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData) UnmarshalJSON(data []byte) error { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataPhotosCompareDataDiffData + var s1 struct { + BlueDiff gensupport.JSONFloat64 `json:"blueDiff"` + GreenDiff gensupport.JSONFloat64 `json:"greenDiff"` + RedDiff gensupport.JSONFloat64 `json:"redDiff"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.BlueDiff = float64(s1.BlueDiff) + s.GreenDiff = float64(s1.GreenDiff) + s.RedDiff = float64(s1.RedDiff) + return nil +} + +// AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditabili +// ty: See UserEditedLockedMask in +// //depot/google3/focus/backend/proto/backend.proto. +type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability struct { + // LockedField: Read-only set of zero or more field paths that are + // locked for update on this person, such as "person.name", + // "person.email", etc. The set of fields is only populated for the + // requester's profile. Fields in the set cannot be edited, added, or + // deleted from the profile. Attempting to update any of these fields + // will result in an exception. + LockedField []string `json:"lockedField,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LockedField") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LockedField") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileEditability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModif +// icationHistory: See ABUSE_NAME_LAST_MODIFIED in +// //depot/google3/focus/backend/proto/backend.proto which maps to +// //depot/google3/focus/proto/profileattribute.proto +type AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory struct { + // ComputedNameChangesRemaining: The number of name changes remaining at + // RPC request time. This can be more than name_changes_remaining, if + // user hasn't changed name for some time and accrued quota since last + // change. + ComputedNameChangesRemaining int64 `json:"computedNameChangesRemaining,omitempty"` + + // ComputedNicknameChangesRemaining: The number of nickname changes + // remaining at RPC request time. This can be more than + // nickname_changes_remaining, if user hasn't changed nickname for some + // time and accrued quota since last change. + ComputedNicknameChangesRemaining int64 `json:"computedNicknameChangesRemaining,omitempty"` + + // NameChangesRemaining: The number of name changes remaining at the + // time the name was last modified. + NameChangesRemaining int64 `json:"nameChangesRemaining,omitempty"` + + // NameLastModified: The last time the profile name was modified in + // milliseconds UTC. + NameLastModified int64 `json:"nameLastModified,omitempty,string"` + + // NicknameChangesRemaining: The number of nickname changes remaining at + // the time the nickname was last modified. + NicknameChangesRemaining int64 `json:"nicknameChangesRemaining,omitempty"` + + // NicknameLastModified: The last time the profile nickname was modified + // in milliseconds UTC. + NicknameLastModified int64 `json:"nicknameLastModified,omitempty,string"` + + // Possible values: + // "UNKNOWN_QUOTA_ENFORCEMENT_STATUS" + // "ENFORCED" - Name change quota is enforced. + // "NOT_ENFORCED" - Name change quota exists but is not enforced. This + // is used for users suspended due to abusive names, where users are + // allowed to change their names back to non-abusive state without being + // charged against the quota. + // "NOT_APPLICABLE" - Name change quota does not apply. This is used + // for premium dasher users. + QuotaEnforcementStatus string `json:"quotaEnforcementStatus,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ComputedNameChangesRemaining") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "ComputedNameChangesRemaining") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedDataProfileNameModificationHistory + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiAccountEmail struct { + Email string `json:"email,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Email") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Email") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAccountEmail) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAccountEmail + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo: +// Additional information about a container. TO BE DELETED: replaced by +// DeviceContactInfo. +type AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo struct { + // RawDeviceContactInfo: When the container is a DEVICE_CONTACT, this + // list provides account information from the raw contact which is the + // source of this field. + RawDeviceContactInfo []*AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo `json:"rawDeviceContactInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "RawDeviceContactInfo") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RawDeviceContactInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiAddress struct { + Country string `json:"country,omitempty"` + + CountryCode string `json:"countryCode,omitempty"` + + // EncodedPlaceId: FeatureId associated with the address. The format is + // the same as that used for ids in PLACE containers in SourceIdentity. + EncodedPlaceId string `json:"encodedPlaceId,omitempty"` + + ExtendedAddress string `json:"extendedAddress,omitempty"` + + Formatted string `json:"formatted,omitempty"` + + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Locality string `json:"locality,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + PoBox string `json:"poBox,omitempty"` + + PointSpec *AppsPeopleOzExternalMergedpeopleapiPointSpec `json:"pointSpec,omitempty"` + + PostalCode string `json:"postalCode,omitempty"` + + Region string `json:"region,omitempty"` + + StreetAddress string `json:"streetAddress,omitempty"` + + // Type: The type of the address. The type can be free form or one of + // these predefined values: * `home` * `work` * `other` + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Country") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Country") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAddress) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAddress + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiAffinity: Similar to +// social.graph.storage.Affinity, but pared down to what the clients of +// the People API are interested in. +type AppsPeopleOzExternalMergedpeopleapiAffinity struct { + // AffinityMetadata: Contains extra ranking information returned by DAS. + AffinityMetadata *SocialGraphWireProtoPeopleapiAffinityMetadata `json:"affinityMetadata,omitempty"` + + // Possible values: + // "AFFINITY_TYPE_UNKNOWN" + // "EMAIL_AUTOCOMPLETE" + // "CONTACTS_PLUS_FREQUENTLY_CONTACTED" + // "CHAT_AUTOCOMPLETE" + // "GPLUS_AUTOCOMPLETE" + // "GLASS_AFFINITY" + // "PEOPLE_AUTOCOMPLETE_SOCIAL" + // "FIELD_AUTOCOMPLETE_SOCIAL" + // "CONTACTS_PLUS_EMAIL" + // "PHOTOS_PEOPLE_TO_SHARE_WITH_SUGGESTIONS" - Will eventually be + // deprecated in favor of PHOTOS_SUGGESTED_TARGETS. + // "PHOTOS_FIELDS_TO_SHARE_WITH_SUGGESTIONS" - Will eventually be + // deprecated in favor of PHOTOS_SUGGESTED_TARGETS. + // "INBOX_AFFINITY" + // "DYNAMITE_AFFINITY" + // "PHOTOS_SUGGESTIONS_AFFINITY" - Will eventually be deprecated in + // favour of PHOTOS_SUGGESTED_TARGETS. + // "PHOTOS_SUGGESTED_TARGETS" + // "PHOTOS_ASSISTANT_SUGGESTIONS_AFFINITY" + // "DRIVE_AUTOCOMPLETE" + // "WALLET_PEOPLE_TO_PAY_SUGGESTIONS" + // "CONTACTS_PLUS_CONTACT_CENTRIC" + // "POMEROY_AFFINITY" + // "CALENDAR_AFFINITY" + // "SPACES_APP_PEOPLE_AFFINITY" + // "HOMEROOM_AFFINITY" + // "PEOPLE_PLAYGROUND_AFFINITY" + // "FAMILY_AFFINITY" + // "CONTACTS_ASSISTANT_SUGGESTED_CONTACTS" + // "TRIPS_AFFINITY" + // "GOOGLE_VOICE_AFFINITY" + // "PHOTOS_FACE_AFFINITY" + // "G3DOC_AUTOCOMPLETE" + // "LOUPE_SUGGESTIONS_AFFINITY" + // "MAPS_SHARING_AFFINITY" + // "CLOUD_SEARCH_AFFINITY" + // "YOUTUBE_UNPLUGGED" + // "JAM_AFFINITY" + // "ITEM_SUGGEST_AFFINITY" + // "ISSUE_TRACKER_AFFINITY" + // "APPS_ASSISTANT_AFFINITY" + // "APDL_CONTACT_CENTRIC_DEFAULT_AFFINITY" + // "APDL_PROFILE_CENTRIC_DEFAULT_AFFINITY" + // "SOCIAL_RECOVERY" + // "TEZ_AFFINITY" + // "NEWS_AFFINITY" + // "ALLO_AFFINITY" + // "GPLUS_PEOPLE_RECOMMENDATIONS" + // "GPLUS_PEOPLE_RECOMMENDATIONS_SAME_DOMAIN" + // "DRIVE_AFFINITY" + // "PODIUM_AFFINITY" + // "ZOOM_SIGHTS_EMAIL_AFFINITY" + // "AIRDROME_AFFINITY" + // "HANGOUTS_MEET_AFFINITY" + // "GALLERY_AFFINITY" + // "AGSA_AFFINITY" + // "PAY_AFFINITY" + // "SAVES_AFFINITY" + // "JASPER_AFFINITY" + // "GOOGLE_HOME_APP_AFFINITY" + // "TOPAZ_TEAMS_AFFINITY" + // "DYNAMITE_OUT_OF_DOMAIN_AFFINITY" + // "GOOGLE_VOICE_SIRI_EXTENSION_AFFINITY" + // "COURSE_KIT_AFFINITY" + // "FORMS_AFFINITY" + // "NOVITAS_AFFINITY" + // "GTI_PEER_INTERACTIONS_AFFINITY" + // "ANDROID_EMERGENCY_AFFINITY" + // "DATA_STUDIO_AFFINITY" + // "SPUR_AFFINITY" + // "PLAY_GAMES_SERVICES_AFFINITY" + // "GROUPS_ADD_MEMBER_AFFINITY" + // "DUO_AFFINITY" + // "MY_BUSINESS_AFFINITY" + // "GMAIL_COMPOSE" + // "NON_GPLUS_AFFINITY" + // "ABUSE_AFFINITY" + // "ABUSE_AFFINITY_LITE" + // "CALENDAR_PEEK_AFFINITY" + // "HUB_CALL_AFFINITY" + // "GSUITE_WORKFLOW_AFFINITY" + // "VR_POLY_PRO_AFFINITY" + // "TASKS_AFFINITY" + // "GOOGLE_ONE_AFFINITY" + // "TRAVEL_AFFINITY" + // "GEO_DISCOVERY_FOLLOW_AFFINITY" + // "GMAIL_WEB_AFFINITY" + // "ASSISTANT_SETTINGS_WEB_UI_AFFINITY" + // "ARTIFEX_AFFINITY" + // "CONTACT_STORE_DEFAULT_AFFINITY" + // "CONTACT_STORE_SELF_EXCLUSIVE" + // "PHOTOS_FACE_STALE_AFFINITY" + // "LANDSPEEDER_AFFINITY" + // "GOOGLE_FI_AFFINITY" + // "CONTACTS_PLUS_DOMAIN_ONLY" + // "PHOTOS_SUGGESTED_TARGETS_IN_APP_ONLY" + // "SOCIETY_AFFINITY" + // "NANDHI_TEST_SCHEDULER_AFFINITY" + // "HIJACKING_HIGH_RISK_AFFINITY" + // "TRUECOLOURS_AFFINITY" + // "ESPRESSO_AFFINITY" + // "TAG_AFFINITY" + // "CORPBOT_AFFINITY" + // "SHOPPING_LIST_AFFINITY" + // "INTEGRATION_PLATFORM_AFFINITY" + // "HOT_ORDERS_UI_AFFINITY" + // "TELLY_MOBILE_APP_AFFINITY" + // "NGA_SUGGESTION_RESOLUTION_AFFINITY" + // "DUC_COMPANION_AFFINITY" + // "TOG_AFFINITY" + // "ANDROID_SYSTEM_INTELLIGENCE_AFFINITY" + // "EARTH_AFFINITY" + // "SHORTCUT_AFFINITY" + // "CHROME_OS_SCALING_AFFINITY" + // "SHOWTIME_AFFINITY" + // "PLAY_GAMES_SERVICES_EXPERIMENTAL" + // "GUPPEEPS_AFFINITY" + // "NEST_AFFINITY" + // "BLOGGER_AFFINITY" + // "INDIVIDUAL_OUTGOING_INTERACTIONS_RECENCY_RANK" + // "ASSISTANT_TOOLCHAIN_AFFINITY" + // "CHAT_CONSERVER_FAVORITE_CONTACTS_AFFINITY" + // "CHAT_CONSERVER_INVITEE_AFFINITY" + // "GANTRY_AFFINITY" + // "KINTARO_AFFINITY" + // "KEEP_AFFINITY" + // "INCIDENTFLOW_AFFINITY" + // "DRIVE_MENTION_AFFINITY" + // "DRIVE_LOOKUP_AFFINITY" + // "PODCASTS_MANAGER_AFFINITY" + // "EMAIL_AUTOCOMPLETE_GG" + // "ONE_REVIEWER_TOOL_AFFINITY" + // "ASSISTANT_FAMILY_VERTICAL_AFFINITY" + // "STADIA_AFFINITY" + // "ATLAS_AFFINITY" + // "CONSTELLATION_AFFINITY" + // "CORONADO_AFFINITY" + // "WALLET_GOLDEN_GATE_AFFINITY" + // "PUMICE_AFFINITY" + // "DEMO_AFFINITY_DEFAULT_ALGO" + // "DEMO_AFFINITY_DEFAULT_ALGO_DOMAIN_ONLY" + // "DEMO_AFFINITY_EMAIL_ALGO" + // "DEMO_AFFINITY_EMAIL_ALGO_DOMAIN_ONLY" + // "BACKLIGHT_AFFINITY" + // "DYNAMITE_GROUPS_AFFINITY" + // "DYNAMITE_OUT_OF_DOMAIN_GROUPS_AFFINITY" + // "GLOSSARY_MANAGER_AFFINITY" + // "ONEDEV_WORKFLOW_AFFINITY" + // "GSUITE_HUB_CALL_AFFINITY" + // "AVALANCHE_AFFINITY" + // "SANDTROUT_DEVICE_CONTACTS_AFFINITY" + // "DYNAMITE_ROOM_AFFINITY" + // "DESKBOOKING_AFFINITY" + // "TEZ_EXTENDED_AFFINITY" + // "DRIVE_PROFILE_ONLY_AFFINITY" + // "OFFSEC_AFFINITY" + // "GOOGLE_HOME_FAMILY_AFFINITY" + // "ONEMARKET_CALENDAR_AFFINITY" + // "GPAY_MERCHANT_CONSOLE_AFFINITY" + // "WORDFLOW_AFFINITY" + // "YOUTUBE_CREATOR_STUDIO_AFFINITY" + // "BRICKS_AFFINITY" + // "BUG_OBSERVER_AFFINITY" + // "ALPHASCHEDULE_AFFINITY" + // "BURROW_AFFINITY" + // "TEAMSPACES_AFFINITY" + // "GMAIL_SMARTADDRESS_REPLACE_AFFINITY" + // "GMAIL_SMARTADDRESS_EXPAND_AFFINITY" + // "ASSISTANT_OPA_AFFINITY" + // "POLYGLOT_AFFINITY" + // "TRANSLATION_MEMORY_MANAGER_AFFINITY" + // "THREADIT_AFFINITY" + // "RESOURCE_SYMPHONY_AFFINITY" + // "HOUSEHOLD_CONTACTS_PICKER_AFFINITY" + // "L10N_INFRA_SHARED_AFFINITY" + // "WORK_TRACKER_AFFINITY" + // "ARIANE_AFFINITY" + // "DRIVE_ROOM_AFFINITY" + // "MOMA_SEARCH_AFFINITY" + // "COLAB_INTERNAL_AFFINITY" + // "COLAB_EXTERNAL_AFFINITY" + // "TALENT_GROW_AFFINITY" + // "SOCIAL_CONNECTION_CHECKER_AFFINITY" + // "GMS_PEOPLE_AFFINITY" + // "ROCKET_LABS_AFFINITY" + // "DYNAMITE_ROOM_AND_INDIVIDUAL_ONLY_AFFINITY" + // "TEZ_PHONE_SEARCH_AFFINITY" + // "MY_GOOGLE_FAMILIES_AFFINITY" + // "DYNAMITE_UNIFIED_AFFINITY" + // "SHORTCUT_SERVER_AFFINITY" + // "LEGAL_CONTRACTS_AFFINITY" + // "CALENDAR_WEB_AFFINITY" + // "DATA_CATALOG_AFFINITY" + // "BRIEF_API_AFFINITY" + // "HARDWARE_MFG_DATA_VENUS_AFFINITY" + // "BETTERBUG_AFFINITY" + // "DCMS_AFFINITY" + // "PLAY_BOOKS_PUBENG_AFFINITY" + // "YAQS_AFFINITY" + // "RESPONSIBLE_FEATURE_ACCESS_AFFINITY" + // "PROSPER_AFFINITY" + // "PEOPLE_TO_ADD_BIRTHDAY_FOR_AFFINITY" + // "FLOURISH_AFFINITY" + // "CAMPAIGN_MANAGEMENT_TOOL_AFFINITY" + // "RECORDER_AFFINITY" + // "CLASSROOM_SEARCH_AFFINITY" + // "HIRING_AFFINITY" + // "DATACENTER_SOFTWARE_AFFINITY" + // "PHOTOS_INVITE_AFFINITY" + // "PHOTOS_PARTNER_SHARING_AFFINITY" + // "MARKETING_WORKFLOWS_AFFINITY" + // "INTROSPECT_AFFINITY" + // "YOUTUBE_PARENT_TOOLS_AFFINITY" + // "RELIABILITY_INSIGHTS_PST_AFFINITY" + // "GMAIL_ANDROID_AFFINITY" + // "CUSTOMER_CARE_PORTAL_AFFINITY" + // "MOMAHOME_3C_AFFINITY" + // "DIGITAL_CAR_KEY_AFFINITY" + // "PLAY_BOOKS_DISTRIBUTION_AFFINITY" + // "GOOGLE_ASSIGNMENTS_AFFINITY" + // "TEST_FUSION_AFFINITY" + // "PRODUCTION2020_UIE_AFFINITY" + // "SPEAKEASY_AFFINITY" + // "DOCS_TASKS_AFFINITY" + // "DYNAMITE_SEARCH_AFFINITY" + AffinityType string `json:"affinityType,omitempty"` + + // ContainerId: The ID of the container + ContainerId string `json:"containerId,omitempty"` + + // ContainerType: The type of container to which this affinity applies + // + // Possible values: + // "UNKNOWN_CONTAINER" + // "PROFILE" - Google Profile. PROFILE fields are editable by the + // profile owner, unless the field metadata includes writeable=false. + // "CONTACT" - Google Contact + // "CIRCLE" - Deprecated. E-mail only circle membership should be + // dead. E-mail only circle membership of non-g+ user. + // "PLACE" - A maps place + // "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are + // not editable by anyone. They only occur when the requester is "me". + // In the event an ACCOUNT field is ACLed non-private, it will be + // returned as a PROFILE field when viewed by a requester who is not + // "me". + // "EXTERNAL_ACCOUNT" - LinkedExternalSites + // (go/PeopleApiConnectedSites) + // "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields + // are editable by the Dasher administrator of the domain. They are not + // editable by the profile owner. + // "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned + // by a domain and represents a person, but is not a user in the domain. + // For more details see https://support.google.com/a/answer/9281635. + // "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT + // See go/mergedperson-for-device-contacts Aggregation is represented + // using person.metadata.device_contact_info + // "GOOGLE_GROUP" - Google group. Examples: sales@zara.es. + // "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a + // Baggins Roster with label DYNAMITE_SPACE *and* label + // DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms + // "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a + // Baggins Roster with label DYNAMITE_SPACE but does *not* have label + // DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms + // "AFFINITY" - Device contacts that are used in interaction ranking, + // but have not been uploaded to Google. These are synthesized people + // from interaction data. This container type is only used in + // ListRankedPeople and ListRankedTargets actions. See + // go/TopNWithClusteringPart1. + // "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device + // contact. See go/mergedperson-for-device-contacts + // "CONTACT_ANNOTATION" - Data from contact annotation. Contact + // annotations are currently generated and used by Google Assistant. + // "DELEGATED_CONTACT" - Data from delegated contacts. Delegated + // contacts are the contacts delegated to the current requester. The + // requester can then access those contacts. See go/ph-delegation. + ContainerType string `json:"containerType,omitempty"` + + // LoggingId: Used to log events for this affinity value, for disco + // diagnostic-purposes. See go/disco-diagnostics. + LoggingId string `json:"loggingId,omitempty"` + + // Value: Affinity value. Frequently represented as an inverse ranking, + // sometimes with additional data encoded. If + // data_formats.affinity_formats.score_format is set to RAW_SCORE then + // the value will be the score returned by DAS. + Value float64 `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AffinityMetadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AffinityMetadata") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAffinity) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAffinity + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAffinity) UnmarshalJSON(data []byte) error { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAffinity + var s1 struct { + Value gensupport.JSONFloat64 `json:"value"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Value = float64(s1.Value) + return nil +} + +// AppsPeopleOzExternalMergedpeopleapiAgeRangeType: 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. +type AppsPeopleOzExternalMergedpeopleapiAgeRangeType struct { + // AgeInYears: Please read go/people-api-howto:age on how to get age + // data. Age of the user. The field is set based on profile storage + // fields such as account birthday. If the source fields are not + // present, `age_in_years` will be left unset. + AgeInYears int64 `json:"ageInYears,omitempty"` + + // AgeOfConsentStatus: Deprecated. Use + // go/supervised-accounts#capabilities-for-child-accounts instead. + // Denotes whether the user is under the region based Age of Consent. + // The user's region is based on ClientUserInfo.GlobalTos.AgreedLocation + // The age is inferred from Birthday field or CertifiedBornBefore field. + // The region based AoC is specified at go/aoc. + // + // Possible values: + // "AOC_STATUS_UNKNOWN" - We do not have enough information to + // determine the user's age. e.g. user has no declared age or region is + // not known. + // "UNDER_AOC" - The user is under the Age of Consent of the region + // the user is in. + // "AT_OR_ABOVE_AOC" - The user is at or older than the Age of Consent + // of the region the user is in. + AgeOfConsentStatus string `json:"ageOfConsentStatus,omitempty"` + + // AgeRange: Deprecated. Please read go/people-api-howto:age on how to + // get age data. Age range is populated based on `account_birthday` and + // `certified_born_before`, which may not be set for dasher users. + // + // Possible values: + // "UNKNOWN" + // "LESS_THAN_EIGHTEEN" + // "TWENTY_ONE_OR_OLDER" + // "EIGHTEEN_TO_TWENTY" + AgeRange string `json:"ageRange,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgeInYears") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgeInYears") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAgeRangeType) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAgeRangeType + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo: Store all app +// unique info that are needed for app action fulfillment. +type AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo struct { + // AppUniqueId: Store the app unique id endpoint. This will be passed + // over to app to fulfill the action. For example, app_unique_id for + // Whatsapp will be "11234567890@s.whatsapp.net" + AppUniqueId string `json:"appUniqueId,omitempty"` + + // DisplayAppUniqueId: Store third party endpoint that is displayed to + // users. For example, display_app_unique_id for Whatsapp will be + // "Message +11234567890". + DisplayAppUniqueId string `json:"displayAppUniqueId,omitempty"` + + // Label: Store third party endpoint label. For example, "HOME", "WORK" + Label string `json:"label,omitempty"` + + // Mimetype: Store mimetype of this endpoint. We will use this as the + // differentiator for Assistant to know whether to use the RawContact + // for messaging, call or video call. For example, send message mimetype + // for whatsapp: "vnd.android.cursor.item/vnd.com.whatsapp.profile" + // voice call mimetype for whatsapp: + // "vnd.android.cursor.item/vnd.com.whatsapp.voip.call" + Mimetype string `json:"mimetype,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AppUniqueId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AppUniqueId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiBestDisplayName: 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. +type AppsPeopleOzExternalMergedpeopleapiBestDisplayName struct { + // ContainerType: The container the suggested name was sourced from + // + // Possible values: + // "UNKNOWN_CONTAINER" + // "PROFILE" - Google Profile. PROFILE fields are editable by the + // profile owner, unless the field metadata includes writeable=false. + // "CONTACT" - Google Contact + // "CIRCLE" - Deprecated. E-mail only circle membership should be + // dead. E-mail only circle membership of non-g+ user. + // "PLACE" - A maps place + // "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are + // not editable by anyone. They only occur when the requester is "me". + // In the event an ACCOUNT field is ACLed non-private, it will be + // returned as a PROFILE field when viewed by a requester who is not + // "me". + // "EXTERNAL_ACCOUNT" - LinkedExternalSites + // (go/PeopleApiConnectedSites) + // "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields + // are editable by the Dasher administrator of the domain. They are not + // editable by the profile owner. + // "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned + // by a domain and represents a person, but is not a user in the domain. + // For more details see https://support.google.com/a/answer/9281635. + // "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT + // See go/mergedperson-for-device-contacts Aggregation is represented + // using person.metadata.device_contact_info + // "GOOGLE_GROUP" - Google group. Examples: sales@zara.es. + // "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a + // Baggins Roster with label DYNAMITE_SPACE *and* label + // DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms + // "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a + // Baggins Roster with label DYNAMITE_SPACE but does *not* have label + // DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms + // "AFFINITY" - Device contacts that are used in interaction ranking, + // but have not been uploaded to Google. These are synthesized people + // from interaction data. This container type is only used in + // ListRankedPeople and ListRankedTargets actions. See + // go/TopNWithClusteringPart1. + // "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device + // contact. See go/mergedperson-for-device-contacts + // "CONTACT_ANNOTATION" - Data from contact annotation. Contact + // annotations are currently generated and used by Google Assistant. + // "DELEGATED_CONTACT" - Data from delegated contacts. Delegated + // contacts are the contacts delegated to the current requester. The + // requester can then access those contacts. See go/ph-delegation. + ContainerType string `json:"containerType,omitempty"` + + // DisplayName: The display name. This name is intended to be the best + // name to display for this Person. It may be built from a variety of + // fields, even if those fields are not explicitly requested in the + // request mask. Generally, the display name is formatted in 'first + // last' format. If the name appears to be a CJK name (as determined by + // a heuristic), the 'last first' format will be used. There may be + // other cases that the 'last first' format is used which are not + // documented here. See the code at: + // http://google3/java/com/google/focus/backend/client/DisplayNameFormatter.java?l=659&rcl=351360938 + DisplayName string `json:"displayName,omitempty"` + + // DisplayNameLastFirst: The display name, always in 'last first' + // format. This field does not depend on the format of `display_name` + // and will always be in 'last first' format. + DisplayNameLastFirst string `json:"displayNameLastFirst,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContainerType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContainerType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiBestDisplayName) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiBestDisplayName + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiBirthday: 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. +type AppsPeopleOzExternalMergedpeopleapiBirthday struct { + AgeDisableGracePeriod *AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod `json:"ageDisableGracePeriod,omitempty"` + + // BirthdayDecoration: Whether the user has opted in to display their + // birthday via photo decorations. + BirthdayDecoration *SocialGraphApiProtoBirthdayDecoration `json:"birthdayDecoration,omitempty"` + + // Possible values: + // "FULL" - Birthday includes year, month, and day. + // "MONTH_AND_APPROXIMATED_YEAR" - Birthday includes approximate year + // and month. + // "APPROXIMATED_YEAR" - Birthday includes an approximate year. + BirthdayResolution string `json:"birthdayResolution,omitempty"` + + // CalendarDay: Birthdays 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. Currently this is + // always returned by PeopleApi on reads that include birthday fields. + // New clients should write using calendar_day. Clients that were + // already writing via date_ms are allowlisted such that writes use that + // field. Old callers should migrate to writing BOTH date_ms and + // calendar_day values. If those are consistent, they may be removed + // from the 'legacy_timestamp_event_write_behavior_enabled' capability. + CalendarDay *GoogleTypeDate `json:"calendarDay,omitempty"` + + // DateMs: Birthdays are currently represented as timestamp values, + // although the interpretation of these timestamp values is a calendar + // date. Clients are recommended to read the calendar_day field, which + // is easier to work with than date_ms. New clients writing to PeopleApi + // must set calendar_day instead of date_ms. There are a few important + // details about how this value should be mapped to a calendar date that + // should be consistent among all clients. 1. Epoch - The epoch or + // calendar date equivalent to 0 ms is chosen to be 1970-01-01 UTC. 2. + // Timezone - All of the conversions to calendars should occur in the + // UTC timezone. We don't typically think of someones birthday changing + // when they travel, so clients should not use local times. 3. Calendar + // - The calendar used for the dates should be a Gregorian proleptic + // calendar. Proleptic means that the rules of the Gregorian calendar + // are retrofitted to before its adoption. It is easy to get this wrong, + // particularly with the java GregorianCalendar class, which by default + // is a mixed Gregorian/Julian calendar. Joda Time makes this easy, but + // if it's not an option, look into + // GregorianCalendar.setGregorianChange(). 4. Omitted years - Clients + // have chosen to represent birthdays or events without years as + // timestamps within the year zero. When the computed date has a year of + // 0, it means the client did not specify a year. Note that a year 0 + // does not exist in a chronology like the familiar Anno Domini (A.D. + // and B.C.); clients must agree on year numbering. 5. Year Numbering - + // The chronology used to map dates to the calendar should use + // Astronomical Year Numbering so that the year 0 is defined and dates + // before it have a negative year. If libraries only provide Anno + // Domini, then the year of 1 BC corresponds to year zero and an omitted + // user provided year. Other BC values are presumed rare, but clients + // should still not ignore the era and interpret the year as an A.D. + // value, especially if writing values back to PeopleApi. + DateMs int64 `json:"dateMs,omitempty,string"` + + // DateMsAsNumber: date_ms_as_number contains the same data as date_ms, + // but has a different type in generated javascript bindings. Non + // javascript clients can ignore it. + DateMsAsNumber int64 `json:"dateMsAsNumber,omitempty,string"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Value: Actual value entered. Allows unstructured values. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AgeDisableGracePeriod") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgeDisableGracePeriod") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiBirthday) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiBirthday + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod: +// 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. +type AppsPeopleOzExternalMergedpeopleapiBirthdayAgeDisableGracePeriod struct { + // CalendarDay: Provisional birthday gaia + // link, but when the trust link is initiated gaia might not be known. + // Until gaia is discovered, pomeroy_id is used to identify the contact + // uniquely. If trust_level is missing or set to TRUST_LEVEL_UNSPECIFIED + // pomeroy_id must be empty. + PomeroyId string `json:"pomeroyId,omitempty"` + + // Possible values: + // "TRUST_LEVEL_UNSPECIFIED" - The person does not have a specified + // trust level. + // "TRUST_LEVEL_EMERGENCY_CONTACT" - The person is an Emergency + // Contact. + TrustLevel string `json:"trustLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiEmergencyInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiEmergencyInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiEvent struct { + // CalendarDay: 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. + CalendarDay *GoogleTypeDate `json:"calendarDay,omitempty"` + + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // TimestampMillis: 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. + TimestampMillis int64 `json:"timestampMillis,omitempty,string"` + + // Type: The type of the event. The type can be free form or one of + // these predefined values: * `anniversary` * `other` + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CalendarDay") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CalendarDay") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiEvent) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiEvent + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiExternalId: External identifier +// associated with the person. +type AppsPeopleOzExternalMergedpeopleapiExternalId struct { + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Type: The type of the external ID. The type can be free form or one + // of these predefined values: * `account` * `customer` * `loginId` * + // `network` * `organization` + Type string `json:"type,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FormattedType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FormattedType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiExternalId) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiExternalId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiFieldAcl: The field ACL. Currently +// only populated on profile fields for the profile owner. A Person +// field ACL; see http://go/peopleapi-acl +type AppsPeopleOzExternalMergedpeopleapiFieldAcl struct { + // AclEntry: A custom type of field ACL entry. The set of all ACL + // entries includes those listed in acl_entry as well as + // predefined_acl_entry. + AclEntry []*AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry `json:"aclEntry,omitempty"` + + // AuthorizedViewers: Set of users that will be authorized to view the + // field by this field ACL. If the ACL is public, this will only contain + // ALL_USERS. This field is synthesized, read-only, and currently only + // used for profile photos. It's populated under + // "person.photo.metadata.field_acl" for the current photo ACL and + // "person.photo.metadata.acl_choices" for available photo ACL choices. + // Note: The set of authorized viewers for a given FieldAcl may depend + // on the user's account type and domain configuration. For example, a + // PRIVATE_READ FieldAcl could have any of the following authorized + // viewers: Consumer user: [IDENTITY_ACL_ESTABLISHED] Dasher user + // without domain contact sharing: [IDENTITY_ACL_ESTABLISHED] Unicorn + // user: [SAME_UNICORN_FAMILY] Hafez user: [] + // + // Possible values: + // "AUTHORIZED_VIEWER_UNSPECIFIED" + // "IDENTITY_ACL_ESTABLISHED" - Users with an identity ACL established + // with the field owner through user-to-user interactions. + // "SAME_ORGANIZATION" - Users in the same enterprise organization as + // the field owner. + // "SAME_UNICORN_FAMILY" - Users in the same Unicorn family as the + // field owner. + // "ALL_USERS" - All users, including anonymous viewers. + AuthorizedViewers []string `json:"authorizedViewers,omitempty"` + + // PredefinedAclEntry: A common type of field ACL entry. A predefined + // ACL entry is a shortcut for a commonly occurring case of role and + // scope. For example, PUBLIC_READ is the same as an AclEntry with role + // = READER and scope.all_users = true. The set of all ACL entries + // includes those listed in acl_entry as well as predefined_acl_entry. + // + // Possible values: + // "UNKNOWN" + // "OWNER" - Equivalent to role = OWNER and scope.person.person_id = + // requester's person ID. + // "PUBLIC_READ" - Equivalent to role = READER and scope.all_users = + // true. + // "DOMAIN_READ" - Equivalent to role = READER and scope.domain_users + // = true. + // "YOUR_CIRCLES_READ" - Equivalent to role = READER and + // scope.membership.circle.circle_set = YOUR_CIRCLES. + // "EXTENDED_CIRCLES_READ" - Equivalent to role = READER and + // scope.membership.circle.circle_set = EXTENDED_CIRCLES. + // "PRIVATE_READ" - This is under implementation and not populated in + // PeopleAPI yet. Equivalent to role = READER and scope.person.person_id + // = requester's person ID. Presence of this entry means the field is + // private and is not visible to others. + PredefinedAclEntry []string `json:"predefinedAclEntry,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AclEntry") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AclEntry") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFieldAcl) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAcl + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry struct { + // Possible values: + // "UNKNOWN" + // "READER" + // "WRITER" + // "OWNER" - owner can change ACL + Role string `json:"role,omitempty"` + + Scope *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope `json:"scope,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Role") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Role") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntry + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope struct { + // AllUsers: Indicates that the field is accessible to all users + // including unauthenticated users. For some fields this means "to + // everyone except blocked users". + AllUsers bool `json:"allUsers,omitempty"` + + // DomainUsers: 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. + DomainUsers bool `json:"domainUsers,omitempty"` + + Membership *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl `json:"membership,omitempty"` + + // Person: Indicates that the field is accessible to a person. + Person *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl `json:"person,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AllUsers") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AllUsers") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScope + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl: +// +// Used when the field is accessible to a membership that the person +// +// has. +type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl struct { + Circle *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl `json:"circle,omitempty"` + + ContactGroup *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl `json:"contactGroup,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Circle") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Circle") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAcl + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclC +// ircleAcl: Used when a field is accessible to a circle. +type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl struct { + CircleId string `json:"circleId,omitempty"` + + // Possible values: + // "UNKNOWN" + // "YOUR_CIRCLES" + // "EXTENDED_CIRCLES" + CircleSet string `json:"circleSet,omitempty"` + + // DisplayName: Equivalent to Circle.display_name for the circle_id. + // Included when FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This + // field is read-only and ignored on update. + DisplayName string `json:"displayName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CircleId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CircleId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclCircleAcl + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclC +// ontactGroupAcl: 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. +type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl struct { + // ContactGroupId: A contact group ID. This is either a user-defined + // contact group hex ID, or it is the string name of the enum constant + // in Group.PredefinedId in FBS backend.proto for predefined groups. + // Common values for the predefined name include, but are not limited + // to: all, myContacts, starred, chatBuddies, friends, family, + // coworkers, and blocked. + ContactGroupId string `json:"contactGroupId,omitempty"` + + // DisplayName: The localized display name for the predefined group, if + // known; or, the display name for the user-defined contact group. + // Included when FieldAclOption.FULL_ACL_WITH_DETAILS is requested. + DisplayName string `json:"displayName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContactGroupId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContactGroupId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopeMembershipAclContactGroupAcl + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl: +// 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. +type AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl struct { + // DisplayName: DEPRECATED. This is not different than reading from + // person.name for a self-read; ACLs to a circle or to a non-self person + // are no longer supported. Equivalent to Name.display_name for the + // person_id profile. Included when the profile Name is ACLed to the + // requester and FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This + // field is read-only and ignored on update. + DisplayName string `json:"displayName,omitempty"` + + PersonId string `json:"personId,omitempty"` + + // PhotoUrl: DEPRECATED. This is not different than reading from + // person.photo for a self-read; ACLs to a circle or to a non-self + // person are no longer supported. Equivalent to Photo.url for the + // person_id profile. Included when the profile Photo is ACLed to the + // requester and FieldAclOption.FULL_ACL_WITH_DETAILS is requested. This + // field is read-only and ignored on update. + PhotoUrl string `json:"photoUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldAclAclEntryScopePersonAcl + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo: Emergency +// information for Person field, such as Phone or Email. See +// go/emergency-trusted-contacts-papi. +type AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo struct { + // Possible values: + // "EMERGENCY_LEVEL_UNSPECIFIED" - The field (such as phone) is not + // designated for emergency communication. + // "EMERGENCY_LEVEL_PRIMARY" - The field (such as phone) is designated + // for emergency communication. + EmergencyLevel string `json:"emergencyLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EmergencyLevel") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EmergencyLevel") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiFileAs: The FileAs field in +// Contacts is used to override the DisplayName of a Contact for that +// User. +type AppsPeopleOzExternalMergedpeopleapiFileAs struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiFileAs) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiFileAs + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiGPayExtendedData: Extension data +// for use in GPay Product Profile. go/gpay-product-profile-1-pager +// Contact: profiles-eng-fe@google.com +type AppsPeopleOzExternalMergedpeopleapiGPayExtendedData struct { + // Failure: Failure type if there is an error when fetching product + // profile data. + Failure *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure `json:"failure,omitempty"` + + // InternationalNumber: A number in international format including the + // country code that is made user readable by including formatting such + // as spaces. Example: "+41 44 668 1800" DEPRECATED: A user's phone + // number should be masked and not in an international format + InternationalNumber string `json:"internationalNumber,omitempty"` + + // MaskedNumber: The masked string of a user's phone number The number + // will be obfucsated with * except the last 4 digits. Refer to: + // //java/com/google/nbu/paisa/common/PhoneNumberMasker.java + MaskedNumber string `json:"maskedNumber,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Failure") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Failure") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiGPayExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiGPayExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiGender: 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. +type AppsPeopleOzExternalMergedpeopleapiGender struct { + // AddressMeAs: Preferred pronoun choice. It's unclear whether this + // value is constrained to a finite domain by UIs. `address_me_as` may + // be populated regardless of whether `type` is "male", "female", or + // "other", although most writers only set it if `type` is "other". + AddressMeAs string `json:"addressMeAs,omitempty"` + + // CustomType: A free-form string indicating what the user entered as + // their gender. `custom_type` may exist even if the type is "male" or + // "female", although most writers do not set it unless `type` is + // "other". + CustomType string `json:"customType,omitempty"` + + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Type: The gender. "male", "female", or "other". If "other", + // typically, additional fields will have additional information. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AddressMeAs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AddressMeAs") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiGender) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiGender + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiGplusExtendedData struct { + // Possible values: + // "UNKNOWN" + // "PUBLIC" - Can send and consume public content + // "DISCOVERY" - Restricted to only sending content internally, cannot + // mutate external content in any manner + // "WALLED_GARDEN" - Restricted to sending content internally, no + // public content naturally surfaces + ContentRestriction string `json:"contentRestriction,omitempty"` + + // IsEnterpriseUser: Equivalent to having the DASHER_POLICY bit in the + // REGISTERED state. + IsEnterpriseUser bool `json:"isEnterpriseUser,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContentRestriction") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContentRestriction") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiGplusExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiGplusExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData: Extension +// data for use in Hangouts. +type AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData struct { + // Possible values: + // "UNKNOWN_PAST_HANGOUT_STATE" + // "HAD_PAST_HANGOUT" + // "NO_PAST_HANGOUT" + HadPastHangoutState string `json:"hadPastHangoutState,omitempty"` + + // InvitationStatus: Populated for all contacts. Only set if + // had_past_hangout_state == HAD_PAST_HANGOUT. INVITATION_NEEDED is not + // a valid value because there already is a past hangout, which means + // either the invitation is still pending or it’s been accepted. + // + // Possible values: + // "UNKNOWN_INVITATION_STATUS" + // "PENDING_INVITATION" - The invitation is still pending, or was + // declined + // "ACCEPTED_INVITATION" - The other user accepted the invitation + // "INVITATION_NEEDED" - An invitation is needed to chat with this + // user + InvitationStatus string `json:"invitationStatus,omitempty"` + + // IsBot: True if this is a Hangouts bot. + IsBot bool `json:"isBot,omitempty"` + + IsDismissed bool `json:"isDismissed,omitempty"` + + IsFavorite bool `json:"isFavorite,omitempty"` + + IsPinned bool `json:"isPinned,omitempty"` + + // Possible values: + // "UNKNOWN_USER_TYPE" + // "INVALID" - No entity found. + // "GAIA" - Regular GAIA users. + // "OFF_NETWORK_PHONE" - Phone numbers represented as GAIA ids. + // "MALFORMED_PHONE_NUMBER" - Malformed number. Those are numbers that + // don't comfirm to an E.164 format that we get with phone + // calls/voicemails (e.g. "HELLO"). + // "UNKNOWN_PHONE_NUMBER" - Unknown number. This is a number that the + // caller has chosen not to broadcast. + // "ANONYMOUS_PHONE_NUMBER" - Phone number that Google knows about, + // but the caller chose not to reveal to the recipient. + UserType string `json:"userType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "HadPastHangoutState") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HadPastHangoutState") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiIdentityInfo struct { + // OriginalLookupToken: Original lookup token from the request that + // resulted in this person or one of its containers. + OriginalLookupToken []string `json:"originalLookupToken,omitempty"` + + // PreviousPersonId: 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. + PreviousPersonId []string `json:"previousPersonId,omitempty"` + + // SourceIds: A list of sources contributing to the merged person, + // including profiles (with gaia-id), contacts and synthetic-contacts. + SourceIds []*AppsPeopleOzExternalMergedpeopleapiSourceIdentity `json:"sourceIds,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OriginalLookupToken") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OriginalLookupToken") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiIdentityInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiIdentityInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiIm struct { + // FormattedProtocol: The `protocol` translated and formatted in the + // request locale. See go/people-api-howto/localization for details on + // how to usage. + FormattedProtocol string `json:"formattedProtocol,omitempty"` + + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Protocol: 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` + Protocol string `json:"protocol,omitempty"` + + // Type: The type of the IM. The type can be free form or one of these + // predefined values: * `home` * `work` * `other` + Type string `json:"type,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FormattedProtocol") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FormattedProtocol") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiIm) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiIm + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget: 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 = bob@gmail.com 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 ] +type AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget struct { + // Possible values: + // "UNKNOWN" - Should never be stored in practice + // "BABEL" - Aka Hangouts + // "YOUTUBE" - Aka Reactr + // "WHOS_DOWN" - Aka Who's Down + // "YOUTUBE_MANGO" - Aka YouTube for Emerging Markets + // "PHOTOS" - Aka Google Photos + // "GOOGLE_ASSISTANT" + // "KABOO" - Aka PAISA, aka Tez + // "COMMERCE_PLATFORM" - Aka Naksha + // "SPACES" - Aka Google Spaces + // "MAPS" - Aka Google Map + // "LOUPE_UNUSED" - This field is deprecated. + // "POMEROY" - Aka Trusted Contacts + // "LOUPE" - Aka Camera by Google Photos + // "PEOPLE_PLAYGROUND" - See go/people-playground-design. + // "NEWS_360" - Also mdb/social-magazines + // "DUO" - Aka Taychon + App []string `json:"app,omitempty"` + + ClientData []*AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData `json:"clientData,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // OriginatingField: There may be more than one field from which this + // IANT originates, as in the case of Bob's public profile. + OriginatingField []*AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField `json:"originatingField,omitempty"` + + // Possible values: + // "UNKNOWN_KEY_TYPE" + // "PHONE" + // "OBFUSCATED_GAIA_ID" + // "EMAIL" + Type string `json:"type,omitempty"` + + // Value: The value of the target, used for delivery. E.g., the + // obfuscated gaia ID for a visible profile. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "App") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "App") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData: +// Client-specific data pertaining to app reachability. No PII data or +// user content should be stored in this blob. +type AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData struct { + // App: The app to which this client data applies. + // + // Possible values: + // "UNKNOWN" - Should never be stored in practice + // "BABEL" - Aka Hangouts + // "YOUTUBE" - Aka Reactr + // "WHOS_DOWN" - Aka Who's Down + // "YOUTUBE_MANGO" - Aka YouTube for Emerging Markets + // "PHOTOS" - Aka Google Photos + // "GOOGLE_ASSISTANT" + // "KABOO" - Aka PAISA, aka Tez + // "COMMERCE_PLATFORM" - Aka Naksha + // "SPACES" - Aka Google Spaces + // "MAPS" - Aka Google Map + // "LOUPE_UNUSED" - This field is deprecated. + // "POMEROY" - Aka Trusted Contacts + // "LOUPE" - Aka Camera by Google Photos + // "PEOPLE_PLAYGROUND" - See go/people-playground-design. + // "NEWS_360" - Also mdb/social-magazines + // "DUO" - Aka Taychon + App string `json:"app,omitempty"` + + ByteValue string `json:"byteValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. "App") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "App") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetClientData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingF +// ield: 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. +type AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField struct { + // FieldIndex: The index of the relevant field in the merged person + FieldIndex int64 `json:"fieldIndex,omitempty"` + + // Possible values: + // "UNKNOWN_FIELD_TYPE" + // "PHONE" + // "EMAIL" + FieldType string `json:"fieldType,omitempty"` + + // Value: The value of the origin field + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FieldIndex") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FieldIndex") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppNotificationTargetOriginatingField + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiInAppReachability: This is +// deprecated in PEOPLE_API/SHARPEN, and should only be used for +// PROFILES. Which apps the person has indicated they are reachable at +// for the requester. See go/d13y and +// com.google.focus.proto.InAppReachability. +type AppsPeopleOzExternalMergedpeopleapiInAppReachability struct { + // Possible values: + // "UNKNOWN" - should never be stored in practice + // "BABEL" - aka Hangouts + // "YOUTUBE" - aka Reactr + // "WHOS_DOWN" - aka Who's Down? + // "YOUTUBE_MANGO" - aka YouTube for Emerging Markets + // "PHOTOS" - aka Google Photos + // "KABOO" - aka PAISA + // "COMMERCE_PLATFORM" - aka Naksha + // "SPACES" + // "GOOGLE_ASSISTANT" + // "PEOPLE_PLAYGROUND" - See go/people-playground-design. + // "MAPS" - Aka Google Map + // "LOUPE_UNUSED" - This field is deprecated. + // "POMEROY" - aka Trusted Contacts + // "LOUPE" - Aka Camera by Google Photos + // "NEWS_360" - Also mdb/social-magazines + // "DUO" - aka Taychon + AppType string `json:"appType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + ReachabilityKey *AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey `json:"reachabilityKey,omitempty"` + + // Possible values: + // "UNKNOWN_REACHABLE_STATUS" + // "REACHABLE" + // "NOT_REACHABLE" + Status string `json:"status,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AppType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AppType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiInAppReachability) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppReachability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey: +// Information pertaining to how this reachable state was established. +type AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey struct { + // Possible values: + // "UNKNOWN_KEY_TYPE" + // "PHONE" + // "OBFUSCATED_GAIA_ID" + KeyType string `json:"keyType,omitempty"` + + // KeyValue: The value of the key by which the user said they may be + // reachable. E.g., the phone number. + KeyValue string `json:"keyValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. "KeyType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "KeyType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiInAppReachabilityReachabilityKey + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiInteractionSettings: Defines +// interactions that are allowed or disallowed with this person. +type AppsPeopleOzExternalMergedpeopleapiInteractionSettings struct { + Allowed bool `json:"allowed,omitempty"` + + // Possible values: + // "UNKNOWN" + // "INCOMING_CIRCLE_MEMBERSHIP" + // "INCOMING_SOCIAL_EDGE" + // "INVITE_TO_EMAIL" + Interaction string `json:"interaction,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Allowed") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Allowed") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiInteractionSettings) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiInteractionSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiInterest struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiInterest) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiInterest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiLanguage: 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. +type AppsPeopleOzExternalMergedpeopleapiLanguage struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiLanguage) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiLanguage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiLatLng struct { + Lat float64 `json:"lat,omitempty"` + + Lng float64 `json:"lng,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Lat") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Lat") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiLatLng) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiLatLng + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AppsPeopleOzExternalMergedpeopleapiLatLng) UnmarshalJSON(data []byte) error { + type NoMethod AppsPeopleOzExternalMergedpeopleapiLatLng + var s1 struct { + Lat gensupport.JSONFloat64 `json:"lat"` + Lng gensupport.JSONFloat64 `json:"lng"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Lat = float64(s1.Lat) + s.Lng = float64(s1.Lng) + return nil +} + +// AppsPeopleOzExternalMergedpeopleapiLegacyFields: Fields used in +// legacy applications. Useful for joining legacy and new data streams. +// Most applications should not care about these fields. +type AppsPeopleOzExternalMergedpeopleapiLegacyFields struct { + // MobileOwnerId: Mobile obfuscated gaia id. This is the same gaia id in + // metadata.owner_id, but obfuscated with the legacy mobile obfuscator. + MobileOwnerId string `json:"mobileOwnerId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MobileOwnerId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MobileOwnerId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiLegacyFields) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiLegacyFields + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField struct { + LimitedProfileSettings *SocialGraphApiProtoLimitedProfileSettings `json:"limitedProfileSettings,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "LimitedProfileSettings") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LimitedProfileSettings") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiLocation struct { + BuildingId string `json:"buildingId,omitempty"` + + // BuildingName: The building_name field is only filled if the + // DESK_LOCATION_ADDITIONAL_DATA extension is active. + BuildingName string `json:"buildingName,omitempty"` + + Current bool `json:"current,omitempty"` + + // DeskCode: Most specific textual description of individual desk + // location. + DeskCode string `json:"deskCode,omitempty"` + + ExtendedData *AppsPeopleOzExternalMergedpeopleapiLocationExtendedData `json:"extendedData,omitempty"` + + FloorName string `json:"floorName,omitempty"` + + FloorSection string `json:"floorSection,omitempty"` + + // LastUpdateTime: Indicates the time this location was added or last + // edited. + LastUpdateTime string `json:"lastUpdateTime,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Source: Value indicates the origin of this location information. + // + // Possible values: + // "UNKNOWN" + // "EXPLICIT" - The location was directly set by the user or admin. + // "INFERRED" - The location was inferred from available signals (e.g. + // past rooms usage). + Source string `json:"source,omitempty"` + + // Type: Describes the type of location. For e.g. Grew_up, Desk. + // Corresponds to FBS backend.proto Location.StandardTag + Type string `json:"type,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BuildingId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BuildingId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiLocation) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiLocation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiLocationExtendedData struct { + // CorpDeskbookingExtendedData: Populated by + // CORP_DESKBOOKING_FLEXIBLE_DESK_LOCATIONS extension. + CorpDeskbookingExtendedData *SocialGraphWireProtoPeopleapiExtensionCorpDeskbookingLocationExtendedData `json:"corpDeskbookingExtendedData,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CorpDeskbookingExtendedData") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "CorpDeskbookingExtendedData") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiLocationExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiLocationExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiManagementUpchain struct { + // IndirectManager: List of managers in the chain. If user has manager + // email "abc@google.com" and manager's manager has email + // "xyz@google.com" then the list will be: [0]: { email: + // "abc@google.com" } [1]: { email: "xyz@google.com" } + IndirectManager []*AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager `json:"indirectManager,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Possible values: + // "UNKNOWN" + // "OK" + // "PARTIAL" - An error occurred while retrieving next manager so + // resulting management upchain is partial up to manager that was not + // retrieved. + // "LOOP" - A loop was found in management upchain so resulting + // upchain contains all managers retrieved in first iteration of the + // loop. + Status string `json:"status,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IndirectManager") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IndirectManager") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiManagementUpchain) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiManagementUpchain + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager struct { + Email string `json:"email,omitempty"` + + PersonId string `json:"personId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Email") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Email") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiManagementUpchainIndirectManager + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiMapsExtendedData: Extension data +// for use in Maps Product Profile. +type AppsPeopleOzExternalMergedpeopleapiMapsExtendedData struct { + // Failure: Failure type if there is an error when fetching product + // profile data. + Failure *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure `json:"failure,omitempty"` + + // FolloweeCount: Number of people the user is following. + FolloweeCount int64 `json:"followeeCount,omitempty,string"` + + // FollowerCount: Number of people who are following the user. + FollowerCount int64 `json:"followerCount,omitempty"` + + // NumContributions: Sum of creators contributions i.e. reviews, rating, + // questions, etc. + NumContributions int64 `json:"numContributions,omitempty,string"` + + // ProfilePhotoUrl: The user's profile photo that might have a badge + // rendered at the corner if the user is eligible for a badge. + ProfilePhotoUrl string `json:"profilePhotoUrl,omitempty"` + + // Tagline: A user's bio, or tagline. + Tagline string `json:"tagline,omitempty"` + + // TopicExpertise: A topic that creator has expertise in. This will be + // in the format: emoji associated with the topic, display name of the + // topic, topic score + TopicExpertise []string `json:"topicExpertise,omitempty"` + + // UserCaption: A user's caption displayed under the user name on their + // profile page i.e. 'Local Guide Level 8' + UserCaption string `json:"userCaption,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Failure") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Failure") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiMapsExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiMapsExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiMapsProfile: Maps Profile Data. +// See go/product-profiles-backend-api. +type AppsPeopleOzExternalMergedpeopleapiMapsProfile struct { + FieldRestriction []*AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction `json:"fieldRestriction,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Tagline string `json:"tagline,omitempty"` + + // WebsiteLink: A link to the profile owner's website to be displayed in + // profile. + WebsiteLink *AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink `json:"websiteLink,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FieldRestriction") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FieldRestriction") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiMapsProfile) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiMapsProfile + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction struct { + // ClientData: Opaque data associated with this restriction e.g. abuse + // status. + ClientData string `json:"clientData,omitempty"` + + // Possible values: + // "TYPE_UNSPECIFIED" + // "HIDE_TAGLINE" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClientData") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClientData") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiMapsProfileFieldRestriction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink struct { + // AnchorText: Anchor text to be displayed as clickable link. If not + // present, the URL should be displayed directly. + AnchorText string `json:"anchorText,omitempty"` + + // Url: The URL to be linked to. + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AnchorText") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AnchorText") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiMapsProfileUrlLink + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiMatchInfo: Represents the matching +// information for a field when there is a query. +type AppsPeopleOzExternalMergedpeopleapiMatchInfo struct { + // Match: The list of matches ordered by most relevant matching for + // autocomplete coming first. + Match []*AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch `json:"match,omitempty"` + + // Query: The query token we are matching against. + Query string `json:"query,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Match") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Match") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiMatchInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiMatchInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch: All the +// substring that were matched for the given query against the current +// field. Represents a substring of another string. +type AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch struct { + // EndIndex: Index right after the last character that matches the + // query. length = end-start, we have substring = [start, end). + EndIndex int64 `json:"endIndex,omitempty"` + + // StartIndex: Index of the first unicode character that matches the + // query. + StartIndex int64 `json:"startIndex,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndIndex") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndIndex") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiMatchInfoLookupTokenMatch + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiMembership: 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. +type AppsPeopleOzExternalMergedpeopleapiMembership struct { + // CircleId: A circle that the person belongs to. + CircleId string `json:"circleId,omitempty"` + + // ContactGroupId: A contact-group that the person belong to. The id can + // be either a hex-formatted id or a camel-cased SystemContactGroup + // predefined group name. The id will be predefined group name iff the + // system_contact_group_id has a value. + ContactGroupId string `json:"contactGroupId,omitempty"` + + // Metadata: The metadata field can be used to determine which container + // generated the membership. For example, when the membership has a + // contact_group_id, the metadata.container will be CONTACT and the + // container_id will be the contact Id. + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // SystemContactGroupId: The membership has a contact_group_id, this + // field will be populated when the membership is in a system-reserved + // contact-group. + // + // Possible values: + // "UNKNOWN" + // "MY_CONTACTS" + // "STARRED" + // "FRIENDS" + // "FAMILY" + // "COWORKERS" + SystemContactGroupId string `json:"systemContactGroupId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CircleId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CircleId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiMembership) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiMembership + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiMission struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiMission) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiMission + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiName: 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_name`, `middle_name`, `family_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_name`, `family_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. +type AppsPeopleOzExternalMergedpeopleapiName struct { + // DisplayName: Read-only. A name synthesized based on + // `unstructured_name` and the structured name fields. Example: "John + // Smith" If a language code is passed in the side channel using + // http://cs/symbol:framework.rpc.DeprecatedPropagatedLanguageCode.value + // or http://cs/symbol:google.rpc.context.OriginContext.accept_language + // and the name does not have `honorific_prefix`, `middle_name`, or + // `honorific_suffix` set, the language code will be used to format + // `display_name`. If `include_account_locale` is set on the + // `MergePersonSourceOptions` and a language code is not passed in the + // side channel. The language code from go/uls will be used as the + // language code for formatting `display_name`. + DisplayName string `json:"displayName,omitempty"` + + // DisplayNameLastFirst: Read-only. A name synthesized based on + // `unstructured_name` and the structured name fields with the last name + // first. Example: "Smith, John" + DisplayNameLastFirst string `json:"displayNameLastFirst,omitempty"` + + // DisplayNameSource: Read-only. The source of the display name. + DisplayNameSource *SocialGraphApiProtoDisplayNameSource `json:"displayNameSource,omitempty"` + + FamilyName string `json:"familyName,omitempty"` + + // FormattedName: DEPRECATED(b/70571931). Use `unstructured_name` + // instead. + FormattedName string `json:"formattedName,omitempty"` + + GivenName string `json:"givenName,omitempty"` + + HonorificPrefix string `json:"honorificPrefix,omitempty"` + + HonorificSuffix string `json:"honorificSuffix,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + MiddleName string `json:"middleName,omitempty"` + + // Pronunciations: This field is stored in contact annotations and + // merged at read-time. It is available with CONTACT_ANNOTATION + // container type at read time. + Pronunciations *SocialGraphApiProtoPronunciations `json:"pronunciations,omitempty"` + + // ShortDisplayName: Read-only. A possibly shorter version of the user's + // name. - The purpose of this field is to address the needs of UIs + // where a full display name might be too large to fit. Instead of + // relying on `first_name`, which might not be present, + // `short_display_name` is preferred. - This is only available for + // PROFILE and DOMAIN_PROFILE container types. - About the actual + // content in this field: will be the first name when it's visible to + // the requester, or the same as `display_name`, otherwise. A sample + // scenario where the first name may not be visible is when the limited + // profile is returned. For more info, see: http://shortn/_9iV7TJ33la + ShortDisplayName string `json:"shortDisplayName,omitempty"` + + // UnstructuredName: The free form name value. For contact mutates it is + // recommended for clients to set either the `unstructured_name` or the + // set of structured name fields, not both. + UnstructuredName string `json:"unstructuredName,omitempty"` + + YomiFamilyName string `json:"yomiFamilyName,omitempty"` + + YomiFullName string `json:"yomiFullName,omitempty"` + + YomiGivenName string `json:"yomiGivenName,omitempty"` + + YomiHonorificPrefix string `json:"yomiHonorificPrefix,omitempty"` + + YomiHonorificSuffix string `json:"yomiHonorificSuffix,omitempty"` + + YomiMiddleName string `json:"yomiMiddleName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiName) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiName + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiNickname struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Possible values: + // "NICKNAME_UNKNOWN" + // "DEFAULT" + // "OTHER_NAME" - Used in Profiles UI + // "MAIDEN_NAME" + // "SHORT_NAME" + // "INITIALS" + // "ALTERNATE_NAME" - The nickname or alternate name, incorporated + // into Display Name. + Type string `json:"type,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiNickname) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiNickname + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiOccupation struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOccupation) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOccupation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiOpeningHours: 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. +type AppsPeopleOzExternalMergedpeopleapiOpeningHours struct { + // OpenNow: Is this place open right now? Always present unless we lack + // time-of-day or timezone data for these opening hours. + OpenNow bool `json:"openNow,omitempty"` + + Periods []*AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod `json:"periods,omitempty"` + + // WeekdayTexts: Localized strings describing the opening hours of this + // place, one string for each day of the week. Will be empty if the + // hours are unknown or could not be converted to localized text. + // Example: "Sun: 18:00-06:00" + WeekdayTexts []string `json:"weekdayTexts,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OpenNow") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OpenNow") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOpeningHours) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOpeningHours + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint struct { + // Day: A day of the week, as an integer in the range 0-6. 0 is Sunday, + // 1 is Monday, etc. + Day int64 `json:"day,omitempty"` + + // Time: A time in 24-hour "hhmm" format (i.e. range is 0000 to 2359). + Time string `json:"time,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Day") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Day") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod struct { + Close *AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint `json:"close,omitempty"` + + Open *AppsPeopleOzExternalMergedpeopleapiOpeningHoursEndpoint `json:"open,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Close") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Close") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOpeningHoursPeriod + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiOrganization struct { + Assignment []*AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment `json:"assignment,omitempty"` + + Certification string `json:"certification,omitempty"` + + CostCenter string `json:"costCenter,omitempty"` + + Current bool `json:"current,omitempty"` + + Department string `json:"department,omitempty"` + + Description string `json:"description,omitempty"` + + Domain string `json:"domain,omitempty"` + + // EndCalendarDay: 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. + EndCalendarDay *GoogleTypeDate `json:"endCalendarDay,omitempty"` + + // EndMs: 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. + EndMs int64 `json:"endMs,omitempty,string"` + + EndMsAsNumber int64 `json:"endMsAsNumber,omitempty,string"` + + // FormattedStringType: The `string_type` translated and formatted in + // the request locale. See go/people-api-howto/localization for details + // on how to usage. + FormattedStringType string `json:"formattedStringType,omitempty"` + + FteMilliPercent int64 `json:"fteMilliPercent,omitempty"` + + Importance float64 `json:"importance,omitempty"` + + Location string `json:"location,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Name string `json:"name,omitempty"` + + Project []*AppsPeopleOzExternalMergedpeopleapiOrganizationProject `json:"project,omitempty"` + + // StartCalendarDay: 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. + StartCalendarDay *GoogleTypeDate `json:"startCalendarDay,omitempty"` + + // StartMs: 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. + StartMs int64 `json:"startMs,omitempty,string"` + + StartMsAsNumber int64 `json:"startMsAsNumber,omitempty,string"` + + // StringType: The type of the organization. The type can be free form + // or one of these predefined values: * `work` * `school` + StringType string `json:"stringType,omitempty"` + + Symbol string `json:"symbol,omitempty"` + + Title string `json:"title,omitempty"` + + // Possible values: + // "UNKNOWN" + // "WORK" + // "SCHOOL" + // "DOMAIN_ONLY" - Used for domains inferred from verified email + // addresses. May be deprecated when/if we start mapping SCHOOL and WORK + // Names to Domain. + Type string `json:"type,omitempty"` + + YomiName string `json:"yomiName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Assignment") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Assignment") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOrganization) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOrganization + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOrganization) UnmarshalJSON(data []byte) error { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOrganization + var s1 struct { + Importance gensupport.JSONFloat64 `json:"importance"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Importance = float64(s1.Importance) + return nil +} + +type AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment struct { + Name string `json:"name,omitempty"` + + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOrganizationAssignment + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiOrganizationProject struct { + Description string `json:"description,omitempty"` + + Name string `json:"name,omitempty"` + + Role string `json:"role,omitempty"` + + // Type: Mapped from StandardProjectTag / CustomProjectTag + Type string `json:"type,omitempty"` + + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Description") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Description") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOrganizationProject) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOrganizationProject + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiOtherKeyword struct { + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Possible values: + // "SOURCE_UNKNOWN" + // "OUTLOOK" - Following field is added to support Outlook schema. + // This field is a general storage for Outlook string data that shall be + // encoded as: "name:" + value strings where name of the Outlook field + // cannot contain colons. Multiple Outlook fields shall be encoded as + // multiple Keywords. + // "CUSTOM" + Source string `json:"source,omitempty"` + + // Type: The type of the event. The type depends on the + // `OtherKeyword.source`. `OUTLOOK` 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` + Type string `json:"type,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FormattedType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FormattedType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiOtherKeyword) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiOtherKeyword + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPerson: 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 +type AppsPeopleOzExternalMergedpeopleapiPerson struct { + About []*AppsPeopleOzExternalMergedpeopleapiAbout `json:"about,omitempty"` + + Address []*AppsPeopleOzExternalMergedpeopleapiAddress `json:"address,omitempty"` + + // AgeRange: Deprecated. If age is needed use + // `person.age_range_repeated` instead. Please see + // go/people-api-howto:age on how to correctly get age data. + // + // Possible values: + // "UNKNOWN" + // "LESS_THAN_EIGHTEEN" + // "TWENTY_ONE_OR_OLDER" + // "EIGHTEEN_TO_TWENTY" + AgeRange string `json:"ageRange,omitempty"` + + // AgeRangeRepeated: Data on the person's age range, adult status, and + // age of consent. NOTE: Please read go/people-api-howto:age on how to + // correctly get age data. + AgeRangeRepeated []*AppsPeopleOzExternalMergedpeopleapiAgeRangeType `json:"ageRangeRepeated,omitempty"` + + Birthday []*AppsPeopleOzExternalMergedpeopleapiBirthday `json:"birthday,omitempty"` + + // BraggingRights: Used only by contacts, no data will be returned for + // profiles. + BraggingRights []*AppsPeopleOzExternalMergedpeopleapiBraggingRights `json:"braggingRights,omitempty"` + + // Calendar: b/145671020: Deprecated for Profiles, but not for Contacts. + Calendar []*AppsPeopleOzExternalMergedpeopleapiCalendar `json:"calendar,omitempty"` + + CertifiedBornBefore []*AppsPeopleOzExternalMergedpeopleapiCertifiedBornBefore `json:"certifiedBornBefore,omitempty"` + + // CircleMembership: Circles that this person is a member of. + CircleMembership []*AppsPeopleOzExternalMergedpeopleapiCircleMembership `json:"circleMembership,omitempty"` + + ClientData []*AppsPeopleOzExternalMergedpeopleapiClientData `json:"clientData,omitempty"` + + CommunicationEmail []*AppsPeopleOzExternalMergedpeopleapiCommunicationEmail `json:"communicationEmail,omitempty"` + + // ContactGroupMembership: Contact groups that this person is a member + // of. + ContactGroupMembership []*AppsPeopleOzExternalMergedpeopleapiContactGroupMembership `json:"contactGroupMembership,omitempty"` + + // ContactStateInfo: Contact state and related metadata. See + // go/fbs-contacts-trash. If this field was requested but is not set on + // the Person then the contact is in the DEFAULT contact state. This + // field is read-only, and should not be set on a mutate (e.g. + // UpdatePerson) call. Clients must call the explicit APIs (e.g. + // UntrashPerson) to change contact state. + ContactStateInfo []*AppsPeopleOzExternalMergedpeopleapiContactStateInfo `json:"contactStateInfo,omitempty"` + + // CoverPhoto: DEPRECATED. Now always returns a default cover photo. See + // go/sunset-cover-photo. + CoverPhoto []*AppsPeopleOzExternalMergedpeopleapiCoverPhoto `json:"coverPhoto,omitempty"` + + CustomSchemaField []*AppsPeopleOzExternalMergedpeopleapiCustomSchemaField `json:"customSchemaField,omitempty"` + + Email []*AppsPeopleOzExternalMergedpeopleapiEmail `json:"email,omitempty"` + + // EmergencyInfo: Emergency information. See + // go/emergency-trusted-contacts-papi. + EmergencyInfo []*AppsPeopleOzExternalMergedpeopleapiEmergencyInfo `json:"emergencyInfo,omitempty"` + + // Event: Event is currently in use by contacts. + Event []*AppsPeopleOzExternalMergedpeopleapiEvent `json:"event,omitempty"` + + // ExtendedData: Data added by extensions that are not specific to a + // particular field. + ExtendedData *AppsPeopleOzExternalMergedpeopleapiPersonExtendedData `json:"extendedData,omitempty"` + + ExternalId []*AppsPeopleOzExternalMergedpeopleapiExternalId `json:"externalId,omitempty"` + + FileAs []*AppsPeopleOzExternalMergedpeopleapiFileAs `json:"fileAs,omitempty"` + + // Fingerprint: A fingerprint that can be used to reliably determine if + // a resource has changed. Externally it is used as part of the etag. + Fingerprint string `json:"fingerprint,omitempty"` + + Gender []*AppsPeopleOzExternalMergedpeopleapiGender `json:"gender,omitempty"` + + Im []*AppsPeopleOzExternalMergedpeopleapiIm `json:"im,omitempty"` + + // InAppNotificationTarget: Ways to send in-app notifications to this + // person. See go/reachability. This field is read-only and ignored for + // mutates. + InAppNotificationTarget []*AppsPeopleOzExternalMergedpeopleapiInAppNotificationTarget `json:"inAppNotificationTarget,omitempty"` + + // InAppReachability: Used only by profile service, deprecated for + // PeopleAPI and Sharpen. If you aren't sure, contact people-api-users@ + // and profile-service-eng@. + InAppReachability []*AppsPeopleOzExternalMergedpeopleapiInAppReachability `json:"inAppReachability,omitempty"` + + // InteractionSettings: DEPRECATED. This field isn't populated in + // people.list. + InteractionSettings []*AppsPeopleOzExternalMergedpeopleapiInteractionSettings `json:"interactionSettings,omitempty"` + + Interest []*AppsPeopleOzExternalMergedpeopleapiInterest `json:"interest,omitempty"` + + Language []*AppsPeopleOzExternalMergedpeopleapiLanguage `json:"language,omitempty"` + + // LegacyFields: DEPRECATED. This field was only for backwards + // compatibility with legacy GData callers, and should not be used by + // new clients. Legacy fields used for mobile clients. + LegacyFields *AppsPeopleOzExternalMergedpeopleapiLegacyFields `json:"legacyFields,omitempty"` + + // LimitedProfileSettings: Settings for the limited profile. See + // go/limited-profiles-api. + LimitedProfileSettings []*AppsPeopleOzExternalMergedpeopleapiLimitedProfileSettingsField `json:"limitedProfileSettings,omitempty"` + + // LinkedPerson: Other person resources linked indirectly by an edge. + // The full person or just the IDs may be populated depending on request + // parameters. We consider linked people distinct people, but they share + // information. Example: A contact with two outgoing edges. The two + // edges are considered separate, but linked people. + LinkedPerson []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"linkedPerson,omitempty"` + + Location []*AppsPeopleOzExternalMergedpeopleapiLocation `json:"location,omitempty"` + + ManagementUpchain []*AppsPeopleOzExternalMergedpeopleapiManagementUpchain `json:"managementUpchain,omitempty"` + + // MapsProfile: MapsProfile, see go/product-profiles-backend-api + MapsProfile []*AppsPeopleOzExternalMergedpeopleapiMapsProfile `json:"mapsProfile,omitempty"` + + // Membership: DEPRECATED. Please use `circle_membership` or + // `contact_group_membership` instead. Contact-groups and circles that + // this person is a member of. + Membership []*AppsPeopleOzExternalMergedpeopleapiMembership `json:"membership,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonMetadata `json:"metadata,omitempty"` + + Mission []*AppsPeopleOzExternalMergedpeopleapiMission `json:"mission,omitempty"` + + // Name: See go/people-api-howto:names for details about names in + // PeopleAPI. + Name []*AppsPeopleOzExternalMergedpeopleapiName `json:"name,omitempty"` + + Nickname []*AppsPeopleOzExternalMergedpeopleapiNickname `json:"nickname,omitempty"` + + Occupation []*AppsPeopleOzExternalMergedpeopleapiOccupation `json:"occupation,omitempty"` + + Organization []*AppsPeopleOzExternalMergedpeopleapiOrganization `json:"organization,omitempty"` + + // OtherKeyword: Legacy arbitrary key value fields + OtherKeyword []*AppsPeopleOzExternalMergedpeopleapiOtherKeyword `json:"otherKeyword,omitempty"` + + // PeopleInCommon: DEPRECATED. This feature was stubbed, but never + // implemented. This field will not be populated with any results. + PeopleInCommon []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"peopleInCommon,omitempty"` + + // PersonAttribute: In order to request this field, the client must set + // desired PersonAttributeKey in the dedicated RequestMask field + // `person_attribute`. Unlike other person fields, this field cannot be + // requested in the `include_field` field mask. + PersonAttribute []*AppsPeopleOzExternalMergedpeopleapiPersonAttribute `json:"personAttribute,omitempty"` + + // PersonId: The ID of the person. This is determined by the backend, is + // unstable, and may not be the same as a user_id. Internally referred + // as 'personKey' to distinguish from the common PersonId pojo. See + // go/fwgau + PersonId string `json:"personId,omitempty"` + + Phone []*AppsPeopleOzExternalMergedpeopleapiPhone `json:"phone,omitempty"` + + // Photo: See go/people-api-concepts/photos for usage details + Photo []*AppsPeopleOzExternalMergedpeopleapiPhoto `json:"photo,omitempty"` + + // PlaceDetails: Data specific to places. Data which also applies to + // contacts and profiles such as name, phone, photo, etc. are returned + // in the corresponding Person fields. + PlaceDetails []*AppsPeopleOzExternalMergedpeopleapiPlaceDetails `json:"placeDetails,omitempty"` + + // PlusPageInfo: DEPRECATED. Info about plus pages in the person. + PlusPageInfo []*AppsPeopleOzExternalMergedpeopleapiPlusPageInfo `json:"plusPageInfo,omitempty"` + + PosixAccount []*AppsPeopleOzExternalMergedpeopleapiPosixAccount `json:"posixAccount,omitempty"` + + // ProfileUrl: DEPRECATED. (go/people-api-concepts#repeated): Use + // person.profile_url_repeated instead. Access to this field is + // restricted to a set of legacy clients. This is a Google+-only field. + // See go/fbs-g+-deprecation. NOTE: `Person.profile_url` is only + // populated for profile-centric person. + ProfileUrl string `json:"profileUrl,omitempty"` + + // ProfileUrlRepeated: This is a Google+-only field. See + // go/fbs-g+-deprecation. + ProfileUrlRepeated []*AppsPeopleOzExternalMergedpeopleapiProfileUrl `json:"profileUrlRepeated,omitempty"` + + Pronoun []*AppsPeopleOzExternalMergedpeopleapiPronoun `json:"pronoun,omitempty"` + + // ReadOnlyProfileInfo: Information about the profiles that are a part + // of this Person. This is only applicable to PROFILE and DOMAIN_PROFILE + // containers. + ReadOnlyProfileInfo []*AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo `json:"readOnlyProfileInfo,omitempty"` + + Relation []*AppsPeopleOzExternalMergedpeopleapiRelation `json:"relation,omitempty"` + + // RelationshipInterest: DEPRECATED. No data is returned for this field + // anymore. + RelationshipInterest []*AppsPeopleOzExternalMergedpeopleapiRelationshipInterest `json:"relationshipInterest,omitempty"` + + // RelationshipStatus: DEPRECATED. No data is returned for this field + // anymore. + RelationshipStatus []*AppsPeopleOzExternalMergedpeopleapiRelationshipStatus `json:"relationshipStatus,omitempty"` + + RightOfPublicityState []*AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState `json:"rightOfPublicityState,omitempty"` + + // RosterDetails: Data specific to rosters (such as Google Groups and + // Chat Rooms). Data which also applies to contacts and profiles such as + // name, email, and photo, etc are returned in the corresponding Person + // fields. + RosterDetails []*AppsPeopleOzExternalMergedpeopleapiRosterDetails `json:"rosterDetails,omitempty"` + + // SearchProfile: Profile for Janata and Search. + // go/janata-profile-in-sgbe + SearchProfile []*AppsPeopleOzExternalMergedpeopleapiSearchProfile `json:"searchProfile,omitempty"` + + // SipAddress: SipAddress is currently in use by contacts. + SipAddress []*AppsPeopleOzExternalMergedpeopleapiSipAddress `json:"sipAddress,omitempty"` + + Skills []*AppsPeopleOzExternalMergedpeopleapiSkills `json:"skills,omitempty"` + + // SocialConnection: NOTE: this is used by go/starlight, but not + // actually used or returned in PeopleAPI. See b/27281119 for context. + // Please reach out to people-api-eng@ if you have questions. + SocialConnection []*AppsPeopleOzExternalMergedpeopleapiSocialConnection `json:"socialConnection,omitempty"` + + SortKeys *AppsPeopleOzExternalMergedpeopleapiSortKeys `json:"sortKeys,omitempty"` + + SshPublicKey []*AppsPeopleOzExternalMergedpeopleapiSshPublicKey `json:"sshPublicKey,omitempty"` + + // Tagline: Only supported for PLACE container results, no data will be + // returned for profiles. + Tagline []*AppsPeopleOzExternalMergedpeopleapiTagline `json:"tagline,omitempty"` + + // TeamsExtendedData: DEPRECATED. *UNSUPPORTED*. This field is never + // populated. + TeamsExtendedData *AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData `json:"teamsExtendedData,omitempty"` + + // UserDefined: UserDefined is currently in use by contacts. + UserDefined []*AppsPeopleOzExternalMergedpeopleapiUserDefined `json:"userDefined,omitempty"` + + // VisibleToGuests: Add annotation_id and metadata (product_source) for + // visible to guests contacts go/visible-to-guests. + VisibleToGuests []*AppsPeopleOzExternalMergedpeopleapiVisibleToGuests `json:"visibleToGuests,omitempty"` + + Website []*AppsPeopleOzExternalMergedpeopleapiWebsite `json:"website,omitempty"` + + // ForceSendFields is a list of field names (e.g. "About") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "About") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPerson) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPerson + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPersonAttribute: Client-specific +// binary blob stored with Person data. This differs from ClientData, +// which stores structured, key-value pairs. +type AppsPeopleOzExternalMergedpeopleapiPersonAttribute struct { + // Possible values: + // "PERSON_ATTRIBUTE_UNKNOWN" + // "REJECTED_CLEANUP_CARD_SUGGESTIONS" - The value field of a + // PersonAttribute object with this key will contain a byte serialized + // RejectedCleanupCardSuggestions proto, see http://shortn/_3KyFdhbZfW + AttributeKey string `json:"attributeKey,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AttributeKey") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AttributeKey") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPersonAttribute) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonAttribute + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPersonExtendedData: Extension data +// for the whole person entity. +type AppsPeopleOzExternalMergedpeopleapiPersonExtendedData struct { + // AboutMeExtendedData: For use by AboutMe and SmartProfile clients. + AboutMeExtendedData *AppsPeopleOzExternalMergedpeopleapiAboutMeExtendedData `json:"aboutMeExtendedData,omitempty"` + + // AppsWaldoExtendedData: For use with Apps Waldo Availability Data + // extension + AppsWaldoExtendedData *SocialGraphWireProtoPeopleapiExtensionAppsWaldoExtendedData `json:"appsWaldoExtendedData,omitempty"` + + // CallerIdExtendedData: For use with caller ID extension + CallerIdExtendedData *AppsPeopleOzExternalMergedpeopleapiCallerIdExtendedData `json:"callerIdExtendedData,omitempty"` + + // ContactsExtendedData: For use with Contacts extension. + ContactsExtendedData *AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData `json:"contactsExtendedData,omitempty"` + + // DomainName: Hosted domain this person is a member of. The domain_name + // is also returned as part of the person's ReadOnlyProfileInfo, so + // requesting it via this extension is no longer necessary. + DomainName []string `json:"domainName,omitempty"` + + // DynamiteExtendedData: For use with Dynamite extension. + DynamiteExtendedData *SocialGraphWireProtoPeopleapiExtensionDynamiteExtendedData `json:"dynamiteExtendedData,omitempty"` + + // GpayExtendedData: For use with Google Pay extension. + GpayExtendedData *AppsPeopleOzExternalMergedpeopleapiGPayExtendedData `json:"gpayExtendedData,omitempty"` + + // GplusExtendedData: For use with Google+ extension. + GplusExtendedData *AppsPeopleOzExternalMergedpeopleapiGplusExtendedData `json:"gplusExtendedData,omitempty"` + + // HangoutsExtendedData: For use with Hangouts extension. + HangoutsExtendedData *AppsPeopleOzExternalMergedpeopleapiHangoutsExtendedData `json:"hangoutsExtendedData,omitempty"` + + // IsPlaceholder: For use with gmail extensions and lookup by email. If + // true, no person was actually found using the specified email address, + // but we want to return TLS info about the email address regardless. + IsPlaceholder bool `json:"isPlaceholder,omitempty"` + + // MapsExtendedData: For use with Maps extension. + MapsExtendedData *AppsPeopleOzExternalMergedpeopleapiMapsExtendedData `json:"mapsExtendedData,omitempty"` + + // PaisaExtendedData: For use with Paisa extension + PaisaExtendedData *SocialGraphWireProtoPeopleapiExtensionPaisaExtendedData `json:"paisaExtendedData,omitempty"` + + // PeopleStackExtendedData: DEPRECATED: Use + // people_stack_person_extended_data instead. For use with PeopleStack + // extension. + PeopleStackExtendedData *SocialGraphWireProtoPeopleapiExtensionPeopleStackExtendedData `json:"peopleStackExtendedData,omitempty"` + + // PeopleStackPersonExtendedData: For use with PeopleStack extension. + PeopleStackPersonExtendedData *SocialGraphWireProtoPeopleapiExtensionPeopleStackPersonExtendedData `json:"peopleStackPersonExtendedData,omitempty"` + + // PlayGamesExtendedData: For use with Play Games Product Profile + // extension. See go/jam-games-profile. The play games profile will be + // returned only for profile-centric requests. + PlayGamesExtendedData *AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData `json:"playGamesExtendedData,omitempty"` + + // TlsIsPlaceholder: For use with the TLS extension and lookup by email. + // If true, no person was actually found using the specified email + // address, but we want to return TLS info about the email address + // regardless. DEPRECATED: Use is_placeholder instead. + TlsIsPlaceholder bool `json:"tlsIsPlaceholder,omitempty"` + + // YoutubeExtendedData: For use with Youtube extension. + YoutubeExtendedData *AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData `json:"youtubeExtendedData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AboutMeExtendedData") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AboutMeExtendedData") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPersonExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata: Metadata for +// a single Person field. See go/understanding-merged-person +type AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata struct { + // AclChoices: When the container is PROFILE/DOMAIN_PROFILE and the + // profile owner is the requester, this read-only, synthesized field + // indicates which ACLs the user is allowed to set on the profile field. + // This is distinct from field_acl, which is the field's currently set + // ACL. field_acl will always be a valid ACL choice, except for the case + // of default synthesized profile fields like monogram profile photos. + // For those, field_acl does not represent a user-set field ACL, so it + // may or may not be a valid choice. In all cases, default_acl_choice + // will always be a valid choice. This is currently only populated on + // the photo field when the "person.photo.metadata.acl_choices" mask is + // set. + AclChoices []*AppsPeopleOzExternalMergedpeopleapiFieldAcl `json:"aclChoices,omitempty"` + + // AdditionalContainerInfo: Additional information about the container + // of this field. + AdditionalContainerInfo *AppsPeopleOzExternalMergedpeopleapiAdditionalContainerInfo `json:"additionalContainerInfo,omitempty"` + + // Affinity: For field-level affinity scores. The affinity between the + // requester and this particular field in the Person (e.g., frequency of + // calling a particular phone number). + Affinity []*AppsPeopleOzExternalMergedpeopleapiAffinity `json:"affinity,omitempty"` + + // ContactVisibility: Each field can have different visibility settings + // Only returned when explicitly requested. + // + // Possible values: + // "CONTACT_VISIBILITY_UNSPECIFIED" + // "VISIBLE_TO_GUEST" - This can be set for annotation fields(e.g. + // nicknames, relationship) that the user wants to expose to other + // people in their household. Example use case: differentiate between + // speed dial nicknames, regular nicknames and relationships + ContactVisibility []string `json:"contactVisibility,omitempty"` + + // Container: DEPRECATED. Use container_type instead. Having the + // Container be an enum at the PFM message level causes circular + // dependency when other types try to refer to it. It breaks javascript + // build targets. + // + // Possible values: + // "UNKNOWN" + // "PROFILE" - Google Profile. PROFILE fields are editable by the + // profile owner, unless the field metadata includes writeable=false. + // "CONTACT" - Google Contact + // "CIRCLE" - Circle membership of non-g+ user. + // "PLACE" - A maps place + // "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are + // not editable by anyone. They only occur when the requester is "me". + // In the event an ACCOUNT field is ACLed non-private, it will be + // returned as a PROFILE field when viewed by a requester who is not + // "me". + // "EXTERNAL_ACCOUNT" - LinkedExternalSites + // (go/PeopleApiConnectedSites) + // "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields + // are editable by the Dasher administrator of the domain. They are not + // editable by the profile owner. + // "DOMAIN_CONTACT" - Domain shared contact + // "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT + // See go/mergedperson-for-device-contacts Aggregation is represented + // using person.metadata.device_contact_info + // "GOOGLE_GROUP" - Google group. Examples: sales@zara.es. + // "AFFINITY" - Data from the user's frequent interactions. + // "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device + // contact. See go/mergedperson-for-device-contacts + // "CONTACT_ANNOTATION" - Data from contact annotation. Contact + // annotations are currently generated and used by Google Assistant. + // "DELEGATED_CONTACT" - Data from delegated contacts. Delegated + // contacts are the contacts delegated to the current requester. The + // requester can then access those contacts. See go/ph-delegation. + Container string `json:"container,omitempty"` + + // ContainerId: DEPRECATED. Use encoded_container_id instead. The + // numeric id of the data source. The id is only unique within a single + // container type. This is only set when the id of the container is + // numeric, e.g. contact id. + ContainerId int64 `json:"containerId,omitempty,string"` + + // ContainerPrimary: Indicates if this field is the primary field for + // the container and container_id. + ContainerPrimary bool `json:"containerPrimary,omitempty"` + + // ContainerType: The source for the data in the field. + // + // Possible values: + // "UNKNOWN_CONTAINER" + // "PROFILE" - Google Profile. PROFILE fields are editable by the + // profile owner, unless the field metadata includes writeable=false. + // "CONTACT" - Google Contact + // "CIRCLE" - Deprecated. E-mail only circle membership should be + // dead. E-mail only circle membership of non-g+ user. + // "PLACE" - A maps place + // "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are + // not editable by anyone. They only occur when the requester is "me". + // In the event an ACCOUNT field is ACLed non-private, it will be + // returned as a PROFILE field when viewed by a requester who is not + // "me". + // "EXTERNAL_ACCOUNT" - LinkedExternalSites + // (go/PeopleApiConnectedSites) + // "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields + // are editable by the Dasher administrator of the domain. They are not + // editable by the profile owner. + // "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned + // by a domain and represents a person, but is not a user in the domain. + // For more details see https://support.google.com/a/answer/9281635. + // "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT + // See go/mergedperson-for-device-contacts Aggregation is represented + // using person.metadata.device_contact_info + // "GOOGLE_GROUP" - Google group. Examples: sales@zara.es. + // "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a + // Baggins Roster with label DYNAMITE_SPACE *and* label + // DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms + // "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a + // Baggins Roster with label DYNAMITE_SPACE but does *not* have label + // DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms + // "AFFINITY" - Device contacts that are used in interaction ranking, + // but have not been uploaded to Google. These are synthesized people + // from interaction data. This container type is only used in + // ListRankedPeople and ListRankedTargets actions. See + // go/TopNWithClusteringPart1. + // "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device + // contact. See go/mergedperson-for-device-contacts + // "CONTACT_ANNOTATION" - Data from contact annotation. Contact + // annotations are currently generated and used by Google Assistant. + // "DELEGATED_CONTACT" - Data from delegated contacts. Delegated + // contacts are the contacts delegated to the current requester. The + // requester can then access those contacts. See go/ph-delegation. + ContainerType string `json:"containerType,omitempty"` + + // CrossDeviceAllowed: True if this field can be used on other devices + // than the one it originated from. Assigned by the server. Currently + // only used for device contacts. + CrossDeviceAllowed bool `json:"crossDeviceAllowed,omitempty"` + + // DefaultAclChoice: When the container is PROFILE/DOMAIN_PROFILE and + // the profile owner is the requester, this read-only, synthesized field + // contains the default ACL choice. This can be used to select a + // preferred choice from acl_choices. Generally, default_acl_choice + // should only be preferred for default synthesized profile fields like + // monogram profile photos. Otherwise, the existing field_acl should be + // preferred. This is currently only populated on the photo field when + // the "person.photo.metadata.acl_choices" mask is set. + DefaultAclChoice *AppsPeopleOzExternalMergedpeopleapiFieldAcl `json:"defaultAclChoice,omitempty"` + + // DeprecatedContactContainerId: DEPRECATED. Use container_id. Not + // populated or used at all. + DeprecatedContactContainerId int64 `json:"deprecatedContactContainerId,omitempty,string"` + + // EdgeKey: Field is an edge key for this person. Modifying it breaks + // the link between data sources. This is equivalent to edge_key_info + // having at least one entry with materialized = true. + EdgeKey bool `json:"edgeKey,omitempty"` + + // EdgeKeyInfo: Edges that this field creates. This includes all edges + // and not necessarily just the edge relevant to the joined entities. + EdgeKeyInfo []*AppsPeopleOzExternalMergedpeopleapiEdgeKeyInfo `json:"edgeKeyInfo,omitempty"` + + // EncodedContainerId: The encoded id of the data source. The id is only + // unique within a single container type. This field correlates to + // person.metadata.identity_info.source_id.id. This field may not be + // populated in some special cases, where the id is not visible to the + // querying user. e.g. ListAutocompletions with full phone number query. + EncodedContainerId string `json:"encodedContainerId,omitempty"` + + // FieldAcl: When the container is PROFILE and the profile owner is the + // requester, this field indicates how the profile field is accessible. + FieldAcl *AppsPeopleOzExternalMergedpeopleapiFieldAcl `json:"fieldAcl,omitempty"` + + // LastUpdateTime: Indicates the time that the field was added or last + // edited. Currently this is populated for: (1) person.birthday with + // ContainerType PROFILE, DOMAIN_PROFILE or ACCOUNT. (2) person.name, + // person.address, person.relation, person.email and person.phone with + // ContainerType CONTACT_ANNOTATION; + LastUpdateTime string `json:"lastUpdateTime,omitempty"` + + // MatchingInfo: The matching informations if there was a query against + // this field. + MatchingInfo []*AppsPeopleOzExternalMergedpeopleapiMatchInfo `json:"matchingInfo,omitempty"` + + // OtherDedupedContainers: When deduping fields by value, list of + // containers of the fields that where deduped. + OtherDedupedContainers []*AppsPeopleOzExternalMergedpeopleapiDedupedContainerInfo `json:"otherDedupedContainers,omitempty"` + + // Primary: If true, indicates this field is the Person's primary field + // eg. Contact, and (Profile) Person could have different Name fields, + // and the Name represented by the Person is primary. For selecting a + // primary field from RepeatedFields within a Person, use + // container_primary. + Primary bool `json:"primary,omitempty"` + + // ProductMetadata: The product(s) that generated the data in this + // field. Empty is equivalent to DEFAULT. ST_USER_METADATA + ProductMetadata []*AppsPeopleOzExternalMergedpeopleapiProductMetadata `json:"productMetadata,omitempty"` + + // Verified: Indicates whether this is a verified field. It is + // synthesized from verification and is read-only. If there is at least + // one verification with status PASSED, the field is considered + // verified. Currently this is applicable to address, email, name, and + // phone for PROFILE and DOMAIN_PROFILE. Use .metadata.verified in the + // request mask. + Verified bool `json:"verified,omitempty"` + + // Visibility: Currently, only people.get may set this value + // + // Possible values: + // "VISIBILITY_UNKNOWN" + // "PUBLIC" - The field is visible to every user. + // "USER" - The field is visible to the requester. The server cannot + // provide additional indication beyond that. The field may or may not + // be also visible to users other than the requester. + Visibility string `json:"visibility,omitempty"` + + // Writeable: Whether the field is writeable to the requester. + Writeable bool `json:"writeable,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AclChoices") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AclChoices") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber: A +// person list with total number specified. +type AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber struct { + People []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"people,omitempty"` + + // TotalNumber: The total number of people, which is aways no less than + // the size of the above list. + TotalNumber int64 `json:"totalNumber,omitempty"` + + // ForceSendFields is a list of field names (e.g. "People") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "People") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPersonMetadata: Metadata for the +// entire Person resource. +type AppsPeopleOzExternalMergedpeopleapiPersonMetadata struct { + // Affinity: Affinities associated with the person, with respect to the + // requester. + Affinity []*AppsPeopleOzExternalMergedpeopleapiAffinity `json:"affinity,omitempty"` + + // Attribution: Populated when the data for the MergedPerson comes from + // a 3rd party provider or data source. Clients must display these + // attributions to the user if they are present. NOTE: This field is + // only relevant when requesting the following containers: - PLACE (data + // read from Maps) + Attribution []string `json:"attribution,omitempty"` + + // BestDisplayName: The best name to use for this person for user-facing + // display. See go/people-api-howto:names for details about how this + // field is computed. In many cases this will simply be Person.name[0]. + // However, Person.name returns only explicit Name fields, but other + // fields maybe usable as a name (for example: nicknames, file_as, ...). + // `best_display_name` will be calculated from all fields in storage + // which are usable as a name, even fields which are not explicitly + // requested in the MergedPerson result. See PersonNameFormatter.java: + // go/lvztl. + BestDisplayName *AppsPeopleOzExternalMergedpeopleapiBestDisplayName `json:"bestDisplayName,omitempty"` + + // BlockType: DEPRECATED. Indicates whether the profile owner has + // blocked this person. Please use + // `person.read_only_profile_info.block_type` instead. + // + // Possible values: + // "BLOCK_TYPE_UNKNOWN" + // "CIRCLE" - Profile-blocked users + // "LEGACY" - Chat-blocked users + BlockType []string `json:"blockType,omitempty"` + + // CircleId: DEPRECATED. The circles the person belongs to. + CircleId []string `json:"circleId,omitempty"` + + // ContactGroupId: DEPRECATED. Please use + // `person.contact_group_memberships` instead. The contact groups the + // person belongs to. + ContactGroupId []string `json:"contactGroupId,omitempty"` + + // ContactId: The IDs of all contacts contributing to this person. + ContactId googleapi.Int64s `json:"contactId,omitempty"` + + // CustomResponseMaskingType: DEPRECATED. Customized masking of the + // response similar to the legacy People2RequestMask People2Params + // request message. NOTE: This param is inherently client-specific, + // limited to specific legacy clients, and not open to new usage. NOTE: + // Effects may be applied to a subset of people in the response. + // + // Possible values: + // "UNKNOWN" + // "NONE" - No filtering of the response. + // "MENAGERIE" - Used by Menagerie to request menagerie-specific + // custom filtering or masking on the response. + CustomResponseMaskingType string `json:"customResponseMaskingType,omitempty"` + + // Deleted: For sync requests (i.e., changed since the provided + // sync_token), indicates the resource is a tombstone for a Person + // resource that has been entirely deleted. + Deleted bool `json:"deleted,omitempty"` + + // DeprecatedBlocked: DEPRECATED. Please use + // `person.read_only_profile_info.block_type` instead. + DeprecatedBlocked bool `json:"deprecatedBlocked,omitempty"` + + // DeprecatedMembershipCircleId: DEPRECATED. This field is no longer + // populated or read. + DeprecatedMembershipCircleId googleapi.Int64s `json:"deprecatedMembershipCircleId,omitempty"` + + // DeprecatedMembershipContactGroupId: DEPRECATED. This field is no + // longer populated or read. + DeprecatedMembershipContactGroupId googleapi.Int64s `json:"deprecatedMembershipContactGroupId,omitempty"` + + // DeviceContactInfo: Info about the aggregated device contacts. When + // the person contains RAW_DEVICE_CONTACT containers, each + // DeviceContactInfo represents a single aggregate device contact made + // up of one or more raw device contacts. + DeviceContactInfo []*AppsPeopleOzExternalMergedpeopleapiDeviceContactInfo `json:"deviceContactInfo,omitempty"` + + // IdentityInfo: Detailed metadata about the lookup IDs and data sources + // included in a MergedPerson result. + IdentityInfo *AppsPeopleOzExternalMergedpeopleapiIdentityInfo `json:"identityInfo,omitempty"` + + // InViewerDomain: DEPRECATED. Indicates whether this person is in the + // same domain as the viewer. For proxying trust between two users based + // on organization membership, see: - go/flex-orgs-platform - + // go/flex-orgs-compliance-handbook (especially + // http://shortn/_ChwfAY36Ys) + InViewerDomain bool `json:"inViewerDomain,omitempty"` + + // IncomingBlockType: DEPRECATED. Indicates whether this person is + // blocking the profile owner. Please use + // `person.read_only_profile_info.incoming_block_type` instead. + // + // Possible values: + // "BLOCK_TYPE_UNKNOWN" + // "CIRCLE" - Profile-blocked users + // "LEGACY" - Chat-blocked users + IncomingBlockType []string `json:"incomingBlockType,omitempty"` + + // LastUpdateTimeMicros: DEPRECATED. The last update timestamps for the + // constituent components of this person are available in + // `identity_info.source_ids`. The time of the most recent change to + // this person, in !!!NANOS!!! (due to a bug). May be a change to any of + // the underlying parts of the person (profile, contact, etc.). Not + // guaranteed to be the timestamp of the most recent change, due to + // limitations in the backend. This field is not fully deprecated for + // backend container-specific storage services like ProfileService which + // lack identity_info. The use is still discouraged in such systems and + // they should prefer to use the `last_update_time` field of this + // message instead. + LastUpdateTimeMicros int64 `json:"lastUpdateTimeMicros,omitempty,string"` + + // Model: The person model that is used to construct this person. + // + // Possible values: + // "PERSON_MODEL_UNKNOWN" + // "PROFILE_CENTRIC" - The default People API model where a person can + // contain no more than one profile and potentially many contacts. + // "CONTACT_CENTRIC" - The inversion of the default profile-centric + // model, i.e. a person can contain no more than one contact but + // potentially many profiles. See go/contact-centric-person-model for + // more details. + Model string `json:"model,omitempty"` + + // ObjectType: DEPRECATED. + // + // Possible values: + // "OBJECT_TYPE_UNKNOWN" + // "PERSON" + // "PAGE" + ObjectType string `json:"objectType,omitempty"` + + // OwnerId: DEPRECATED. Please use + // `person.read_only_profile_info.owner_id` instead. + OwnerId string `json:"ownerId,omitempty"` + + // OwnerUserType: DEPRECATED. See + // `person.read_only_profile_info.owner_user_type` instead. + // + // Possible values: + // "OWNER_USER_TYPE_UNKNOWN" + // "GOOGLE_USER" - The owner is a Google user. + // "GPLUS_USER" - The owner is a Currents user. + // "GPLUS_DISABLED_BY_ADMIN" - Google+, i.e. INSServiceID::GOOGLE_ME + // service, is disabled by dasher admin. Only returned for requester's + // own profile. + // "GOOGLE_APPS_USER" - The owner is a Google Apps for Work user. + // "GOOGLE_APPS_SELF_MANAGED_USER" - The owner is a self-managed + // Google Apps for Work user. Only returned for requester's own profile. + // "GOOGLE_FAMILY_USER" - The owner is a Google for Families user. + // Only returned for requester's own profile. + // "GOOGLE_FAMILY_CHILD_USER" - The owner is a Google for Families + // child user. Only returned for requester's own profile. + // "GOOGLE_APPS_ADMIN_DISABLED" - The owner has been disabled + // (archived, suspended) by the G Suite admin. + // "GOOGLE_ONE_USER" - The owner is a Google One user (go/googleone). + // Only returned for requester's own profile. + // "GOOGLE_FAMILY_CONVERTED_CHILD_USER" - The owner is a Google for + // Families child user that was converted from an existing user. Only + // returned for requester's own profile. (go/griffin-account) + OwnerUserType []string `json:"ownerUserType,omitempty"` + + // PlusPageType: DEPRECATED. Please use `Person.plus_page_info` instead. + // + // Possible values: + // "PLUS_PAGE_TYPE_UNKNOWN" + // "LOCAL" + // "COMPANY" + // "BRAND" + // "CELEBRITY" + // "CAUSE" + // "ENTERTAINMENT" + // "OTHER" + // "OBSOLETE_PRIVATE" - Formerly a private madison + // account(go/private-madison-account). Don't use it anymore. + PlusPageType string `json:"plusPageType,omitempty"` + + // PreviousPersonId: DEPRECATED. This field is no longer populated or + // read. + PreviousPersonId []string `json:"previousPersonId,omitempty"` + + // ProfileOwnerStats: DEPRECATED. Stats/counters pertaining to followers + // and incoming edges. Please use + // `person.read_only_profile_info.profile_owner_stats` instead. + ProfileOwnerStats *AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats `json:"profileOwnerStats,omitempty"` + + // ScoringInfo: Contact people-directory-dev-team@ if you want to use + // this field. + ScoringInfo *AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo `json:"scoringInfo,omitempty"` + + // UserVisibleStats: DEPRECATED. This field is no longer populated or + // read. + UserVisibleStats *AppsPeopleOzExternalMergedpeopleapiUserVisibleStats `json:"userVisibleStats,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Affinity") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Affinity") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPersonMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo struct { + // RawMatchQualityScore: Only populated on a SearchDirectoryPeople call, + // when results are scored. Contact people-directory-dev-team@ if you + // want to use this field. + RawMatchQualityScore float64 `json:"rawMatchQualityScore,omitempty"` + + // StExpressionResults: 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. + StExpressionResults []*AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult `json:"stExpressionResults,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "RawMatchQualityScore") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RawMatchQualityScore") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo) UnmarshalJSON(data []byte) error { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfo + var s1 struct { + RawMatchQualityScore gensupport.JSONFloat64 `json:"rawMatchQualityScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.RawMatchQualityScore = float64(s1.RawMatchQualityScore) + return nil +} + +type AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult struct { + Name string `json:"name,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPersonMetadataScoringInfoStExpressionResult + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiPhone struct { + // CanonicalizedForm: Canonicalized form that follows ITU-T E.164 + // international public telecommunication numbering plan. + CanonicalizedForm string `json:"canonicalizedForm,omitempty"` + + // EmergencyInfo: Emergency information. See + // go/emergency-trusted-contacts-papi. + EmergencyInfo *AppsPeopleOzExternalMergedpeopleapiFieldEmergencyInfo `json:"emergencyInfo,omitempty"` + + // ExtendedData: Read-only. Field requested by specifying + // `HANGOUTS_PHONE_DATA` in `extension_set.extension_names`. + ExtendedData *AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData `json:"extendedData,omitempty"` + + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Type: 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` + Type string `json:"type,omitempty"` + + Uri string `json:"uri,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CanonicalizedForm") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CanonicalizedForm") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPhone) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPhone + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData struct { + // StructuredPhone: For use with Hangouts extension. + StructuredPhone *AppsPeopleOzExternalMergedpeopleapiStructuredPhone `json:"structuredPhone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "StructuredPhone") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "StructuredPhone") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPhoneExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiPhoto struct { + // EmojiAvatarUrl: 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 + EmojiAvatarUrl string `json:"emojiAvatarUrl,omitempty"` + + // Glyph: 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 + Glyph string `json:"glyph,omitempty"` + + // HtmlAttribution: 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 + HtmlAttribution []string `json:"htmlAttribution,omitempty"` + + // IsDefault: True when the photo is synthetic or generated (i.e. a + // monogram or default photo), false when the person has a custom photo. + IsDefault bool `json:"isDefault,omitempty"` + + // IsMonogram: 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. + IsMonogram bool `json:"isMonogram,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // MonogramBackground: When is_monogram=true, this is the background + // color of the monogram photo as a hex RGB formatted string "RRGGBB". + MonogramBackground string `json:"monogramBackground,omitempty"` + + // PhotoId: For writes only. Indicates photo content for person + // photo-field update. Currently only used for profile-photo updates + // (not contact photos yet). + PhotoId *AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId `json:"photoId,omitempty"` + + // PhotoToken: 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. + PhotoToken string `json:"photoToken,omitempty"` + + // Url: See go/people-api-concepts/photos for info on the different + // representations of URLs. + Url string `json:"url,omitempty"` + + // ViewerUrl: 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. + ViewerUrl string `json:"viewerUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EmojiAvatarUrl") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EmojiAvatarUrl") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPhoto) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPhoto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId: Info +// necessary for looking up a photo in storage. +type AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId struct { + // MediaKey: For writes only, pass the media key that represents the + // image in photos backend. Note, this is not populated on reads. + MediaKey string `json:"mediaKey,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MediaKey") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MediaKey") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPhotoPhotoStorageId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPlaceDetails: Metadata specific to +// places. +type AppsPeopleOzExternalMergedpeopleapiPlaceDetails struct { + // GoogleUrl: A URL hosted by Google providing more information about + // this place This is the URL returned by Places API in the + // Place.Url.google field + GoogleUrl string `json:"googleUrl,omitempty"` + + LatLng *AppsPeopleOzExternalMergedpeopleapiLatLng `json:"latLng,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + OpeningHours *AppsPeopleOzExternalMergedpeopleapiOpeningHours `json:"openingHours,omitempty"` + + // PrimaryTypeName: The name of the primary type. Examples of primary + // type are: "art_school", "clothing_wholesaler", etc. All primary types + // can be found at http://shortn/_veqh6UwWdc + PrimaryTypeName string `json:"primaryTypeName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GoogleUrl") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GoogleUrl") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPlaceDetails) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPlaceDetails + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData: Extension +// data for use in Play Games Product Profile. See go/jam-games-profile. +type AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData struct { + // Achievements: User's top achievements that are sorted for example by + // rarity. + Achievements []*AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement `json:"achievements,omitempty"` + + // AvatarImageUrl: The avatar image to display for the user. + AvatarImageUrl string `json:"avatarImageUrl,omitempty"` + + // Failure: Failure type if there is an error when fetching product + // profile data. + Failure *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure `json:"failure,omitempty"` + + // GamerTag: The gamer tag set by the user. Not set if the user hasn't + // set a gamer tag yet. + GamerTag string `json:"gamerTag,omitempty"` + + // PlayerLevel: User's level. + PlayerLevel int64 `json:"playerLevel,omitempty"` + + // ProfileVisibility: Specifies the visibility of the player's profile. + // + // Possible values: + // "UNKNOWN_CLIENT_PLAYER_PROFILE_VISIBILITY" - Safe default. + // "PRIVATE_VISIBILITY" - The profile is not visible to anyone but the + // player themselves. + // "PUBLIC_VISIBILITY" - The profile is visible to everyone. + // "FRIENDS_VISIBILITY" - The profile is visible to the player and + // their PGS friends. + ProfileVisibility string `json:"profileVisibility,omitempty"` + + // TotalFriendsCount: Total number of friends. + TotalFriendsCount int64 `json:"totalFriendsCount,omitempty,string"` + + // TotalUnlockedAchievements: How many achievements this player has + // unlocked. + TotalUnlockedAchievements int64 `json:"totalUnlockedAchievements,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Achievements") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Achievements") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement: +// Details of an achievement that the user has unlocked. +type AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement struct { + // AchievementName: The name of the achievement. + AchievementName string `json:"achievementName,omitempty"` + + // AchievementUnlockedIconUrl: The achievement icon url shown to the + // user if it is unlocked. + AchievementUnlockedIconUrl string `json:"achievementUnlockedIconUrl,omitempty"` + + // RarityPercentage: Rarity of unlocking this achievement (3% of players + // unlocked would be 3) + RarityPercentage float64 `json:"rarityPercentage,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AchievementName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AchievementName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement) UnmarshalJSON(data []byte) error { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPlayGamesExtendedDataAchievement + var s1 struct { + RarityPercentage gensupport.JSONFloat64 `json:"rarityPercentage"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.RarityPercentage = float64(s1.RarityPercentage) + return nil +} + +// AppsPeopleOzExternalMergedpeopleapiPlusPageInfo: Information about a +// plus page and the entity it represents. +type AppsPeopleOzExternalMergedpeopleapiPlusPageInfo struct { + // ApplicationId: Int64 ID of packaging-service entry; if set, the plus + // page is associated with a third-party application. + ApplicationId int64 `json:"applicationId,omitempty,string"` + + // Possible values: + // "ENTITY_TYPE_UNSPECIFIED" + // "LOCAL" - These are the top-level entity types for plus pages. + // "COMPANY" + // "BRAND" + // "CELEBRITY" + // "CAUSE" + // "ENTERTAINMENT" + // "OTHER" + // "OBSOLETE_PRIVATE" - Used to identify a private madison + // account(go/private-madison-account). Don't use it anymore. + EntityType string `json:"entityType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ApplicationId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ApplicationId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPlusPageInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPlusPageInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPointSpec: Map marker location for +// an address. +type AppsPeopleOzExternalMergedpeopleapiPointSpec struct { + Bounds *GeostoreRectProto `json:"bounds,omitempty"` + + Point *GeostorePointProto `json:"point,omitempty"` + + // Possible values: + // "UNKNOWN_POINT_SOURCE" + // "POINT_SOURCE_UNSPECIFIED" + // "USER_PROVIDED" - User has explicitly moved the point. + // "SYSTEM_PROVIDED" - System has generated the marker. + // "USER_CONFIRMED" - System has generated the marker, but user has + // viewed and saved it unchanged. + PointSource string `json:"pointSource,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Bounds") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Bounds") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPointSpec) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPointSpec + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPosixAccount: 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. +type AppsPeopleOzExternalMergedpeopleapiPosixAccount struct { + // AccountId: The user visible value is used to distinguish identical + // posix account fields with different customer key values. + AccountId string `json:"accountId,omitempty"` + + // AccountNamespace: Value indicates the uniqueness namespace that + // applies to the POSIX information. The value is included in all POSIX + // account uniqueness indices. The indexing prevents two accounts within + // the same customer from having the same username. Namespacing allows + // Windows and Linux users to share the same username. + // + // Possible values: + // "LINUX_GSUITE" - A Linux user for a G Suite domain. + // "LINUX_CONSUMER" - A Linux user for a Google account. + // "WINDOWS_GSUITE" - A Windows user for a G Suite domain. + // "WINDOWS_CONSUMER" - A Windows user for a Google account. + AccountNamespace string `json:"accountNamespace,omitempty"` + + // AccountType: Value indicates whether the POSIX information is + // associated with a non-human entity and the validation logic to apply + // during PosixAccount mutation. + // + // Possible values: + // "LINUX_USER_ACCOUNT" - Linux account associated with a human user. + // "LINUX_SERVICE_ACCOUNT" - Linux account for a non-human entity. + // Service accounts are used for unattended automation scripts. See + // go/riseoftherobots for details. + // "LINUX_EXTERNAL_USER" - Linux account associated with a human user + // where the owner of the POSIX data is granted access to resources + // (VMs) owned by a different (external) organization. + // "WINDOWS_USER_ACCOUNT" - Windows account associated with a human + // user. + // "WINDOWS_SERVICE_ACCOUNT" - Windows account for a non-human entity. + // Service accounts are used for unattended automation scripts. + // "WINDOWS_EXTERNAL_USER" - Windows account associated with a human + // user where the owner of the account data is granted access to + // resources (VMs) owned by a different (external) organization. + AccountType string `json:"accountType,omitempty"` + + // CustomerKey: The customer associated with the POSIX identity. If the + // user is already associated with a G Suite Customer, this field has + // the same value as + // http://google3/ccc/hosted/policies/settings/dthree_customer_info.proto + CustomerKey int64 `json:"customerKey,omitempty,string"` + + // Fingerprint: The value is automatically set to a SHA-256 fingerprint + // of the POSIX account. A fingerprint should uniquely identify a POSIX + // account entry. + Fingerprint string `json:"fingerprint,omitempty"` + + // Gecos: The GECOS (user information) entry for this account. + Gecos string `json:"gecos,omitempty"` + + // Gid: The default group ID. + Gid uint64 `json:"gid,omitempty,string"` + + // HomeDirectory: The path to the home directory for this account. + HomeDirectory string `json:"homeDirectory,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // OperatingSystemType: Value indicates whether to use Linux or Windows + // specific validation logic during PosixAccount mutation. + // + // Possible values: + // "OPERATING_SYSTEM_TYPE_UNSPECIFIED" - The operating system type + // associated with the user account information is unspecified. + // "LINUX" - Linux user account information. + // "WINDOWS" - Windows user account information. + OperatingSystemType string `json:"operatingSystemType,omitempty"` + + // Shell: The path to the login shell for this account. + Shell string `json:"shell,omitempty"` + + // SystemId: System identifier for which account Username or Uid apply + // to. If not specified on mutate by a caller it will default to empty + // value if either Username or Uid are being set. SystemId does require + // to have a value (even an empty one) because it is included into + // null-filtered Spanner index used to enforce uniqueness on Username + // and Uid fields. + SystemId string `json:"systemId,omitempty"` + + // Uid: The user ID. + Uid uint64 `json:"uid,omitempty,string"` + + // Username: The username of the account. + Username string `json:"username,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccountId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPosixAccount) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPosixAccount + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiProductMetadata struct { + // Possible values: + // "PRODUCT_SOURCE_UNKNOWN" + // "PRODUCT_SOURCE_DEFAULT" + // "PRODUCT_SOURCE_ASSISTANT" + // "PRODUCT_SOURCE_JANATA" - The product for non-prominent people + // creating their profiles and sharing contact info on Google search + // (go/project-janata). + // "PRODUCT_SOURCE_SPEED_DIAL" + ProductSource string `json:"productSource,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ProductSource") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ProductSource") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiProductMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiProductMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiProductProfileFailure: Product +// profiles failure type: the status of the rpc to fetch the product +// profile. +type AppsPeopleOzExternalMergedpeopleapiProductProfileFailure struct { + // Possible values: + // "PRODUCT_PROFILE_FAILURE_TYPE_UNKNOWN" + // "RPC_FAILURE" + FailureType string `json:"failureType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FailureType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FailureType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiProductProfileFailure + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats: Stats +// pertaining to incoming edges and views, visible to the requester +// (with acls applied). Related to, but not equal to, +// com.google.focus.proto.Storage.UserVisibleStats. +type AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats struct { + // IncomingAnyCircleCount: Replacement for deprecated follower_count. + // Comes from the EdgeSummary. + IncomingAnyCircleCount int64 `json:"incomingAnyCircleCount,omitempty,string"` + + // ViewCount: Deprecated. This field is no longer populated by the + // server. + ViewCount int64 `json:"viewCount,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. + // "IncomingAnyCircleCount") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IncomingAnyCircleCount") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiProfileUrl: This is a Google+-only +// field (and thus does not exist for consumer users). See +// go/fbs-g+-deprecation. +type AppsPeopleOzExternalMergedpeopleapiProfileUrl struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiProfileUrl) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiProfileUrl + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiPronoun: Message to represent a +// user's set of preferred pronouns, see go/pronouns-backend. +type AppsPeopleOzExternalMergedpeopleapiPronoun struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + PronounData *SocialGraphApiProtoPronounData `json:"pronounData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiPronoun) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiPronoun + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo struct { + // DataSet: The data set within the account that this raw contact + // belongs to. + DataSet string `json:"dataSet,omitempty"` + + // Dirty: The CP2 dirty field which indicates the sync state of the raw + // contact: + // https://developer.android.com/reference/android/provider/ContactsContract.SyncColumns#DIRTY + // True if the row is changed but not synced + Dirty bool `json:"dirty,omitempty"` + + // SourceIdExist: Whether the source ID exists for non-Google contacts. + // Won't set for Google contacts. + SourceIdExist bool `json:"sourceIdExist,omitempty"` + + // SyncInfo: The Sync Info of a raw contact. + SyncInfo *SocialGraphApiProtoSyncInfo `json:"syncInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DataSet") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DataSet") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo: Raw device +// contact information. +type AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo struct { + // AccountName: Account name of raw contact, e.g. "google@gmail.com". + AccountName string `json:"accountName,omitempty"` + + // AccountType: Account type of raw contact, e.g. "com.google" or + // "com.linkedin.android". + AccountType string `json:"accountType,omitempty"` + + // AppContactData: The detailed app-specific endpoint data available for + // the given RawDeviceContactInfo instance. This proto should be used to + // obtain the list of actions and mimetypes supported by the third-party + // app. Design: go/3p-contact-upload + AppContactData []*SocialGraphApiAppContactData `json:"appContactData,omitempty"` + + // AppInfo: The app-specific endpoint data needed for app action + // fulfillment. Usage of this field should be avoided on the + // server-side, and should use the more detailed |full_app_info| field. + AppInfo *AppsPeopleOzExternalMergedpeopleapiAppUniqueInfo `json:"appInfo,omitempty"` + + // CrossDeviceAllowed: If true, this raw contact can be used on other + // devices than the one it originated from. Assigned by the server. + CrossDeviceAllowed bool `json:"crossDeviceAllowed,omitempty"` + + // DeviceContactMetadata: Extra metadata for this raw contact. + DeviceContactMetadata *AppsPeopleOzExternalMergedpeopleapiDeviceContactExtraMetadata `json:"deviceContactMetadata,omitempty"` + + // GoogleContactId: The focus contact id for Google contacts. + GoogleContactId int64 `json:"googleContactId,omitempty,string"` + + // Id: The base64 serialized + // social.graph.peopleapi.proto.internal.RawDeviceContactId. This id + // should be used to correlate to field.metadata.encoded_container_id + // when the field.metadata.container_type is RAW_DEVICE_CONTACT The id + // also correlates to person.metadata.identity_info.source_id.id. + Id string `json:"id,omitempty"` + + // PhotoType: The type of photo from the device (if any). + // + // Possible values: + // "PHOTO_TYPE_UNKNOWN" + // "NO_PHOTO" - This raw contact doesn't have a photo. + // "THUMBNAIL" - This raw contact only has a thumbnail. + // "FULL_SIZE_PHOTO" - This raw contact has a full size photo. + PhotoType string `json:"photoType,omitempty"` + + // RawContactId: The id of the raw contact on the device. + RawContactId int64 `json:"rawContactId,omitempty,string"` + + // RawDeviceContactAnalyticalInfo: Only to be used by Romanesco team + // specifically for analytics. + RawDeviceContactAnalyticalInfo *AppsPeopleOzExternalMergedpeopleapiRawDeviceContactAnalyticalInfo `json:"rawDeviceContactAnalyticalInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccountName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRawDeviceContactInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo: 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). +type AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo struct { + // AccountEmail: The account email linked to the profile, if any exists + // and is visible to the requester. + AccountEmail *AppsPeopleOzExternalMergedpeopleapiAccountEmail `json:"accountEmail,omitempty"` + + // BlockType: Indicates whether the profile owner has blocked this + // person. + // + // Possible values: + // "BLOCK_TYPE_UNKNOWN" + // "CIRCLE" - Profile-blocked users + // "LEGACY" - Chat-blocked users + BlockType []string `json:"blockType,omitempty"` + + // CustomerInfo: CustomerInfo for dasher user. The reader has to + // explicitly request this in the field_mask as + // 'read_only_profile_info.customer_info' + CustomerInfo *AppsPeopleOzExternalMergedpeopleapiCustomerInfo `json:"customerInfo,omitempty"` + + // DomainInfo: DEPRECATED. Use the `ReadOnlyProfileInfo.customer_info` + // field instead (b/138120418). Only populated if in_viewer_domain is + // true. + DomainInfo *AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo `json:"domainInfo,omitempty"` + + // InViewerDomain: DEPRECATED. Proxying trust between users in a domain + // should use go/flex-orgs-platform. For more info see: + // http://doc/18i0-C7vWcz2UuXYBsmulnriVCK3_EuMPpRlPa2OmMHw#heading=h.dobotdwx25kg + // Indicates whether the profile owner is in the same domain as the + // viewer. + InViewerDomain bool `json:"inViewerDomain,omitempty"` + + // IncomingBlockType: Indicates whether this person is blocking the + // profile owner. + // + // Possible values: + // "BLOCK_TYPE_UNKNOWN" + // "CIRCLE" - Profile-blocked users + // "LEGACY" - Chat-blocked users + IncomingBlockType []string `json:"incomingBlockType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // ObjectType: DEPRECATED. + // + // Possible values: + // "OBJECT_TYPE_UNKNOWN" + // "PERSON" + // "PAGE" + ObjectType string `json:"objectType,omitempty"` + + // OwnerId: The Focus-obfuscated Gaia ID of the profile owner + // (go/obfuscated-ids). + OwnerId string `json:"ownerId,omitempty"` + + // Possible values: + // "OWNER_USER_TYPE_UNKNOWN" + // "GOOGLE_USER" - The owner is a Google user. + // "GPLUS_USER" - The owner is a Currents user. + // "GPLUS_DISABLED_BY_ADMIN" - Google+, i.e. INSServiceID::GOOGLE_ME + // service, is disabled by dasher admin. Only returned for requester's + // own profile. + // "GOOGLE_APPS_USER" - The owner is a Google Apps for Work user. + // "GOOGLE_APPS_SELF_MANAGED_USER" - The owner is a self-managed + // Google Apps for Work user. Only returned for requester's own profile. + // "GOOGLE_FAMILY_USER" - The owner is a Google for Families user. + // Only returned for requester's own profile. + // "GOOGLE_FAMILY_CHILD_USER" - The owner is a Google for Families + // child user. Only returned for requester's own profile. + // "GOOGLE_APPS_ADMIN_DISABLED" - The owner has been disabled + // (archived, suspended) by the G Suite admin. + // "GOOGLE_ONE_USER" - The owner is a Google One user (go/googleone). + // Only returned for requester's own profile. + // "GOOGLE_FAMILY_CONVERTED_CHILD_USER" - The owner is a Google for + // Families child user that was converted from an existing user. Only + // returned for requester's own profile. (go/griffin-account) + OwnerUserType []string `json:"ownerUserType,omitempty"` + + // PlusPageType: DEPRECATED. Please use `person.plus_page_info` instead. + // + // Possible values: + // "PLUS_PAGE_TYPE_UNKNOWN" + // "LOCAL" + // "COMPANY" + // "BRAND" + // "CELEBRITY" + // "CAUSE" + // "ENTERTAINMENT" + // "OTHER" + // "OBSOLETE_PRIVATE" - Formerly a private madison + // account(go/private-madison-account). Don't use it anymore. + PlusPageType string `json:"plusPageType,omitempty"` + + // ProfileOwnerStats: Stats/counters pertaining to followers and + // incoming edges. + ProfileOwnerStats *AppsPeopleOzExternalMergedpeopleapiProfileOwnerStats `json:"profileOwnerStats,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccountEmail") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountEmail") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo: +// DEPRECATED. +type AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo struct { + // DomainBadge: DEPRECATED. Organization badge for the domain this + // person is a member of. The badge is the primary hosted domain. + DomainBadge []string `json:"domainBadge,omitempty"` + + // DomainName: DEPRECATED. Hosted domain this person is a member of. + // Formerly only available via PersonExtendedData. + DomainName []string `json:"domainName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DomainBadge") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DomainBadge") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiReadOnlyProfileInfoDomainInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiRelation: Relation stores the +// related person between the contact or profile and a third person 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. +type AppsPeopleOzExternalMergedpeopleapiRelation struct { + // CanonicalValue: Canonicalized `value` of the relation from this + // person to the user. This is currently used for data from contact + // annotations. Possible canonical values are based from + // http://google3/googledata/quality/aliases/relationship_en.config. + CanonicalValue string `json:"canonicalValue,omitempty"` + + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // RelationDetails: The person whose email matches the Relation.value + // field, if it is a valid email address. This field is read-only and + // ignored on update. + RelationDetails *AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails `json:"relationDetails,omitempty"` + + // Type: The relation type. The type can be free form or one of these + // predefined values: * `spouse` * `child` * `mother` * `father` * + // `parent` * `brother` * `sister` * `friend` * `relative` * + // `domesticPartner` * `manager` * `assistant` * `referredBy` * + // `partner` + Type string `json:"type,omitempty"` + + // Value: The person this relation applies to. Custom value provided by + // the user. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CanonicalValue") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CanonicalValue") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRelation) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRelation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails struct { + // DisplayName: Equivalent to Name.display_name for the person_id + // profile. + DisplayName string `json:"displayName,omitempty"` + + // JobTitle: Equivalent to Organization.title for the primary + // organization of the person_id profile. + JobTitle string `json:"jobTitle,omitempty"` + + PersonId string `json:"personId,omitempty"` + + // PhotoUrl: Equivalent to Photo.url for the person_id profile. + PhotoUrl string `json:"photoUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRelationRelationDetails + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiRelationshipInterest: Deprecated +// in b/122464133. No data returned for this field. +type AppsPeopleOzExternalMergedpeopleapiRelationshipInterest struct { + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Type: These fields may give away the sexual orientation of the user. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FormattedType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FormattedType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRelationshipInterest) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRelationshipInterest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiRelationshipStatus: Deprecated in +// b/122464133. No data returned for this field. +type AppsPeopleOzExternalMergedpeopleapiRelationshipStatus struct { + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FormattedType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FormattedType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRelationshipStatus) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRelationshipStatus + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState: User +// preference for shared endorsements. See go/se-devguide and +// go/sharedendorsements for details, including guidance on which +// contexts are which. +type AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Possible values: + // "STATE_UNSPECIFIED" + // "NOT_OK_TO_DISPLAY" - OK to display in non-commercial contexts, but + // not in commercial ones. + // "OK_TO_DISPLAY" - Okay to display in commercial or advertising + // contexts. + // "OK_TO_DISPLAY_IN_NON_ADS_COMMERCIAL_CONTEXT" - Okay to display in + // commercial contexts other than advertising. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRightOfPublicityState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiRosterDetails: Information +// specific to rosters like Google Groups and Chatrooms. +type AppsPeopleOzExternalMergedpeopleapiRosterDetails struct { + // AbridgedRosterMemberships: Abridged / sample subset of member details + // of the roster. NOTE: This field is only returned if the request's + // field mask includes + // "person.roster_details.abridged_roster_memberships". + // http://cs/symbol:google.apps.cloudidentity.groups.internal.GroupSummary.abridged_memberships + AbridgedRosterMemberships []*AppsPeopleOzExternalMergedpeopleapiRosterMember `json:"abridgedRosterMemberships,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // RosterMemberCount: Indicates the number of members and sub-rosters of + // the roster. Corresponds to + // http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.direct_member_count_per_type + RosterMemberCount *AppsPeopleOzExternalMergedpeopleapiRosterMemberCount `json:"rosterMemberCount,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AbridgedRosterMemberships") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AbridgedRosterMemberships") to include in API requests with the JSON + // null value. By default, fields with empty values are omitted from API + // requests. However, any field with an empty value appearing in + // NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRosterDetails) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRosterDetails + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiRosterMember: Represents details +// of a member of a roster. Used in RosterDetails. Corresponds to +// http://cs/symbol:google.apps.cloudidentity.groups.internal.Membership +type AppsPeopleOzExternalMergedpeopleapiRosterMember struct { + // MemberType: Type of the member. + // + // Possible values: + // "ROSTER_MEMBER_TYPE_UNSPECIFIED" + // "PERSON" - CIG's Membership.Type.USER + // "ROSTER" - CIG's Membership.Type.GROUP + MemberType string `json:"memberType,omitempty"` + + // PersonId: Focus-Obfuscated Gaia Id of the member. + PersonId string `json:"personId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MemberType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MemberType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRosterMember) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRosterMember + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiRosterMemberCount: Represents the +// summary of member counts of a roster. Used in RosterDetails. +// Corresponds to +// http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType +type AppsPeopleOzExternalMergedpeopleapiRosterMemberCount struct { + // DirectGroupCount: Indicates the number of direct sub-rosters of the + // roster. This comes from + // http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType.group_count + DirectGroupCount int64 `json:"directGroupCount,omitempty,string"` + + // DirectUserCount: Indicates the number of direct, non-roster members + // of the roster. This comes from + // http://cs/symbol:google.apps.cloudidentity.groups.internal.Group.DirectMemberCountPerType.user_count + DirectUserCount int64 `json:"directUserCount,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "DirectGroupCount") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DirectGroupCount") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiRosterMemberCount) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiRosterMemberCount + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiSearchProfile: Profile for Janata +// and Search. go/janata-profile-in-sgbe +type AppsPeopleOzExternalMergedpeopleapiSearchProfile struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + SearchProfileData *SocialGraphApiProtoSearchProfileData `json:"searchProfileData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiSearchProfile) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiSearchProfile + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiSipAddress: As of 03/2018 is not +// supported for user Profile. +type AppsPeopleOzExternalMergedpeopleapiSipAddress struct { + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Type: The type of the SIP address. The type can be free form or or + // one of these predefined values: * `home` * `work` * `mobile` * + // `other` + Type string `json:"type,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FormattedType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FormattedType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiSipAddress) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiSipAddress + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiSkills struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiSkills) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiSkills + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiSocialConnection: 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. +type AppsPeopleOzExternalMergedpeopleapiSocialConnection struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Possible values: + // "SOCIAL_CONNECTION_UNKNOWN" + // "NO_CONNECTION" - This person is not connected to the viewer. + // "GPLUS_SECOND_HOP" - Google+ user is a second hop relative to + // viewer. + // "DIRECT_CONNECTION" - User is a contact or in circles of the + // viewer. + // "SELF" - This person is the viewer. + Type []string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiSocialConnection) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiSocialConnection + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiSortKeys struct { + Affinity []*AppsPeopleOzExternalMergedpeopleapiAffinity `json:"affinity,omitempty"` + + // InteractionRank: Deprecated. This field is only populated with 0.000 + // for legacy reasons. Clients should not use this field. + InteractionRank string `json:"interactionRank,omitempty"` + + LastName string `json:"lastName,omitempty"` + + LastNameRaw string `json:"lastNameRaw,omitempty"` + + Name string `json:"name,omitempty"` + + // NameRaw: 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). + NameRaw string `json:"nameRaw,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Affinity") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Affinity") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiSortKeys) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiSortKeys + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiSourceIdentity: Id of a single +// source from the merged person. +type AppsPeopleOzExternalMergedpeopleapiSourceIdentity struct { + // Container: The type of source. To be deprecated infavor of + // container_type + // + // Possible values: + // "UNKNOWN" + // "PROFILE" - Google Profile. PROFILE fields are editable by the + // profile owner, unless the field metadata includes writeable=false. + // "CONTACT" - Google Contact + // "CIRCLE" - Circle membership of non-g+ user. + // "PLACE" - A maps place + // "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are + // not editable by anyone. They only occur when the requester is "me". + // In the event an ACCOUNT field is ACLed non-private, it will be + // returned as a PROFILE field when viewed by a requester who is not + // "me". + // "EXTERNAL_ACCOUNT" - LinkedExternalSites + // (go/PeopleApiConnectedSites) + // "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields + // are editable by the Dasher administrator of the domain. They are not + // editable by the profile owner. + // "DOMAIN_CONTACT" - Domain shared contact + // "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT + // See go/mergedperson-for-device-contacts Aggregation is represented + // using person.metadata.device_contact_info + // "GOOGLE_GROUP" - Google group. Examples: sales@zara.es. + // "AFFINITY" - Data from the user's frequent interactions. + // "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device + // contact. See go/mergedperson-for-device-contacts + // "CONTACT_ANNOTATION" - Data from contact annotation. Contact + // annotations are currently generated and used by Google Assistant. + // "DELEGATED_CONTACT" - Data from delegated contacts. Delegated + // contacts are the contacts delegated to the current requester. The + // requester can then access those contacts. See go/ph-delegation. + Container string `json:"container,omitempty"` + + // ContainerType: The type of the source. + // + // Possible values: + // "UNKNOWN_CONTAINER" + // "PROFILE" - Google Profile. PROFILE fields are editable by the + // profile owner, unless the field metadata includes writeable=false. + // "CONTACT" - Google Contact + // "CIRCLE" - Deprecated. E-mail only circle membership should be + // dead. E-mail only circle membership of non-g+ user. + // "PLACE" - A maps place + // "ACCOUNT" - The requester's own Gaia account. ACCOUNT fields are + // not editable by anyone. They only occur when the requester is "me". + // In the event an ACCOUNT field is ACLed non-private, it will be + // returned as a PROFILE field when viewed by a requester who is not + // "me". + // "EXTERNAL_ACCOUNT" - LinkedExternalSites + // (go/PeopleApiConnectedSites) + // "DOMAIN_PROFILE" - Google-For-Work Profile. DOMAIN_PROFILE fields + // are editable by the Dasher administrator of the domain. They are not + // editable by the profile owner. + // "DOMAIN_CONTACT" - Domain shared contact. An entity that is owned + // by a domain and represents a person, but is not a user in the domain. + // For more details see https://support.google.com/a/answer/9281635. + // "DEVICE_CONTACT" - To be deprecated in favor of RAW_DEVICE_CONTACT + // See go/mergedperson-for-device-contacts Aggregation is represented + // using person.metadata.device_contact_info + // "GOOGLE_GROUP" - Google group. Examples: sales@zara.es. + // "NAMED_CHAT_ROOM" - Dynamite "Named Flat Room" (NFR). This is a + // Baggins Roster with label DYNAMITE_SPACE *and* label + // DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms + // "UNNAMED_CHAT_ROOM" - Dynamite "Unnamed Flat Room" (UFR). This is a + // Baggins Roster with label DYNAMITE_SPACE but does *not* have label + // DYNAMITE_NAMED_SPACE. See go/people-api-concepts#chat-rooms + // "AFFINITY" - Device contacts that are used in interaction ranking, + // but have not been uploaded to Google. These are synthesized people + // from interaction data. This container type is only used in + // ListRankedPeople and ListRankedTargets actions. See + // go/TopNWithClusteringPart1. + // "RAW_DEVICE_CONTACT" - Data from a raw (non-aggregated) device + // contact. See go/mergedperson-for-device-contacts + // "CONTACT_ANNOTATION" - Data from contact annotation. Contact + // annotations are currently generated and used by Google Assistant. + // "DELEGATED_CONTACT" - Data from delegated contacts. Delegated + // contacts are the contacts delegated to the current requester. The + // requester can then access those contacts. See go/ph-delegation. + ContainerType string `json:"containerType,omitempty"` + + // Deleted: In sync responses, indicates whether the identity source has + // been deleted. Not applicable to GOOGLE_GROUP. + Deleted bool `json:"deleted,omitempty"` + + // Id: The encoded id of the data source. This field correlates to + // PersonFieldMetadata.encoded_container_id. The possible values of this + // `id` field are as follows based on the value of the `container_type` + // field: CONTACT: Hex-encoded contact id. PROFILE: DOMAIN_PROFILE: + // GOOGLE_GROUP: NAMED_CHAT_ROOM: Focus-obfuscated Gaia ID. + // DOMAIN_CONTACT: Synthetic-contact id representing the domain shared + // contact. PLACE: Encoded PlaceId, encoded using go/djlcf + // (PlaceIdEncoder.java) RAW_DEVICE_CONTACT: Pair of device_id and + // raw_contact_id, encoded as base64 serialized + // social.graph.peopleapi.proto.internal.RawDeviceContactId proto. + // CONTACT_ANNOTATION: Pair of annotation_id and event_timestamp, + // encoded as base64 serialized + // social.graph.peopleapi.proto.internal.ContactAnnotationId proto. -- + // DEPRECATED container types -- If the container is CIRCLE, then the id + // is going to be the synthetic- contact id representing the email-only + // circle member or gaia circle member for which the requester does not + // have a contact for. + Id string `json:"id,omitempty"` + + // LastUpdated: Last update timestamp of this source. NOTE: Only + // populated for CONTACT container type in Java PeopleAPI. Populated for + // CONTACT, PROFILE, DOMAIN_PROFILE in Sharpen implementation. NOTE: Not + // populated for GOOGLE_GROUP. + LastUpdated string `json:"lastUpdated,omitempty"` + + // LastUpdatedMicros: **DEPRECATED** Please use `last_updated` field + // instead. Last update timestamp of this source in microseconds. NOTE: + // Only populated for CONTACT container type. + LastUpdatedMicros int64 `json:"lastUpdatedMicros,omitempty,string"` + + // SourceEtag: NOTE: Not populated for GOOGLE_GROUP. + SourceEtag string `json:"sourceEtag,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Container") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Container") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiSourceIdentity) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiSourceIdentity + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiSshPublicKey: 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. +type AppsPeopleOzExternalMergedpeopleapiSshPublicKey struct { + ExpirationTime string `json:"expirationTime,omitempty"` + + // Fingerprint: The value is automatically set to a SHA-256 fingerprint + // of an SSH public key. A fingerprint should uniquely identify an SSH + // public key. + Fingerprint string `json:"fingerprint,omitempty"` + + Key string `json:"key,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ExpirationTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExpirationTime") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiSshPublicKey) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiSshPublicKey + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiStructuredPhone: 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. +type AppsPeopleOzExternalMergedpeopleapiStructuredPhone struct { + // FormattedType: The phone formatted type. See docs from mirrored + // proto: + // http://google3/ccc/grand_central/common/types.proto?l=128&rcl=241000760 + FormattedType string `json:"formattedType,omitempty"` + + PhoneNumber *AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber `json:"phoneNumber,omitempty"` + + ShortCode *AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode `json:"shortCode,omitempty"` + + // Type: The type of phone. See docs from mirrored proto: + // http://google3/ccc/grand_central/common/types.proto?l=125&rcl=241000760 + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FormattedType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FormattedType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiStructuredPhone) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiStructuredPhone + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber struct { + E164 string `json:"e164,omitempty"` + + I18nData *AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData `json:"i18nData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "E164") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "E164") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumber + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData struct { + CountryCode int64 `json:"countryCode,omitempty"` + + InternationalNumber string `json:"internationalNumber,omitempty"` + + IsValid bool `json:"isValid,omitempty"` + + NationalNumber string `json:"nationalNumber,omitempty"` + + RegionCode string `json:"regionCode,omitempty"` + + // Possible values: + // "UNKNOWN" + // "IS_POSSIBLE" + // "INVALID_COUNTRY_CODE" + // "TOO_SHORT" + // "TOO_LONG" + // "IS_POSSIBLE_LOCAL_ONLY" + // "INVALID_LENGTH" + ValidationResult string `json:"validationResult,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CountryCode") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CountryCode") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiStructuredPhonePhoneNumberI18nData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode struct { + // Code: The phone code. See docs from mirrored proto: + // http://google3/ccc/grand_central/common/types.proto?l=70&rcl=241000760 + Code string `json:"code,omitempty"` + + CountryCode string `json:"countryCode,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiStructuredPhoneShortCode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiTagline struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiTagline) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiTagline + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData: *UNSUPPORTED*. +// This message is never populated and is no longer used. +type AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData struct { + AdminTo []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"adminTo,omitempty"` + + Admins []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"admins,omitempty"` + + DottedLineManagers []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"dottedLineManagers,omitempty"` + + DottedLineReports *AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber `json:"dottedLineReports,omitempty"` + + // Possible values: + // "UNKNOWN_FAILURE" + // "MANAGEMENT_CHAIN" + // "REPORTS" + // "DOTTED_LINE_REPORTS" + // "DOTTED_LINE_MANAGERS" + // "ADMINS" + // "ADMIN_TO" + Failures []string `json:"failures,omitempty"` + + ManagementChain []*AppsPeopleOzExternalMergedpeopleapiPerson `json:"managementChain,omitempty"` + + Reports *AppsPeopleOzExternalMergedpeopleapiPersonListWithTotalNumber `json:"reports,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AdminTo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AdminTo") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiTeamsExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiUserDefined struct { + Key string `json:"key,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiUserDefined) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiUserDefined + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiUserVisibleStats: 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, com.google.focus.proto.Storage.UserVisibleStats. +type AppsPeopleOzExternalMergedpeopleapiUserVisibleStats struct { + // IncomingAnyCircleCount: Replacement for deprecated follower_count. + // Comes from the EdgeSummary. + IncomingAnyCircleCount int64 `json:"incomingAnyCircleCount,omitempty,string"` + + ViewCount int64 `json:"viewCount,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. + // "IncomingAnyCircleCount") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IncomingAnyCircleCount") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiUserVisibleStats) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiUserVisibleStats + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiVisibleToGuests: Store metadata +// information like annotation-id and product source for visible to +// guests contacts go/visible-to-guests. +type AppsPeopleOzExternalMergedpeopleapiVisibleToGuests struct { + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiVisibleToGuests) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiVisibleToGuests + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData struct { + // IsIncomplete: Used by Contacts client-side to indicate whether a + // person is not completed. + IsIncomplete bool `json:"isIncomplete,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsIncomplete") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsIncomplete") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiWebContactsExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiWebsite struct { + // FormattedType: The `type` translated and formatted in the request + // locale. See go/people-api-howto/localization for details on how to + // usage. + FormattedType string `json:"formattedType,omitempty"` + + Metadata *AppsPeopleOzExternalMergedpeopleapiPersonFieldMetadata `json:"metadata,omitempty"` + + // Rel: 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. + Rel []*AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo `json:"rel,omitempty"` + + // Type: 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` + Type string `json:"type,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FormattedType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FormattedType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiWebsite) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiWebsite + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo struct { + // Possible values: + // "UNKNOWN" + // "ME" - rel="me" + // "NOT_ME" - rel="" + // "CONTRIBUTOR_TO" - rel="contributor-to" + // "PAST_CONTRIBUTOR_TO" - rel="past-contributor-to" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiWebsiteRelationshipInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData: Extension +// data for use in Youtube Product Profile. +type AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData struct { + // ChannelData: Information about a channel created by the user. A user + // can create multiple Youtube channels. + ChannelData []*AppsPeopleOzExternalMergedpeopleapiChannelData `json:"channelData,omitempty"` + + // Failure: Failure type if there is an error when fetching product + // profile data. + Failure *AppsPeopleOzExternalMergedpeopleapiProductProfileFailure `json:"failure,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChannelData") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChannelData") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData) MarshalJSON() ([]byte, error) { + type NoMethod AppsPeopleOzExternalMergedpeopleapiYoutubeExtendedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiAccessControlOutput: Access settings for providers. +type AssistantApiAccessControlOutput struct { + // AllowNonUnicornUserAccessYoutubeKids: If true, the user consented to + // use YouTube Kids as a video provider for non-unicorn users(voice + // recognized adults or guest). Unicorn accounts shouldn’t use this + // setting. + AllowNonUnicornUserAccessYoutubeKids bool `json:"allowNonUnicornUserAccessYoutubeKids,omitempty"` + + // Possible values: + // "UNKNOWN_GUEST_ACCESS" + // "USE_DEFAULT_ACCOUNT_FOR_GUEST" - Guests can access content using + // linked users' account. + // "DISABLED_FOR_GUEST" - No access for guests. + GuestAccessOnYoutube string `json:"guestAccessOnYoutube,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AllowNonUnicornUserAccessYoutubeKids") to unconditionally include in + // API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AllowNonUnicornUserAccessYoutubeKids") to include in API requests + // with the JSON null value. By default, fields with empty values are + // omitted from API requests. However, any field with an empty value + // appearing in NullFields will be sent to the server as null. It is an + // error if a field in this list has a non-empty value. This may be used + // to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAccessControlOutput) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAccessControlOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiActionV2SupportedFeatures: The features supported by the +// ActionV2 protocol. Note that after we move on to ConversationProto +// for all surfaces we can remove this message. +type AssistantApiActionV2SupportedFeatures struct { + // ExpressUrlInSettingsResponseSupported: This flag is used to work + // around a bug in AGSA 6.8 that got away. The bug prevents users from + // accessing their shopping list if the URL of the shopping list is not + // a keep.google.com URL. This will happen when switch the backend that + // stores the shopping list from Keep to a backend maintained by the + // Google Shopping Express team. + ExpressUrlInSettingsResponseSupported bool `json:"expressUrlInSettingsResponseSupported,omitempty"` + + // ReconnectClientInputSupported: Whether client supports reconnect + // client input in action v2 payload. This capability is needed to + // determine if client supports parsing client input payload from + // actionv2 proto for workflow purposes. See go/personal-workflow. + // OWNER:nyzstar,vvvemuri. + ReconnectClientInputSupported bool `json:"reconnectClientInputSupported,omitempty"` + + // SimpleActionV2PuntSupported: Whether or not the surface supports a + // simple UnsupportedAction instead of a ModalState punt card for + // rendering. For ActionV2 punt cards, the ModalState extension on the + // ResourceSet is the canonical way of building punt cards. However, + // while most all devices support the ActionV2 protocol, not all devices + // handle the ModalState rendering as part of the ActionV2. For these + // devices, we want to build a modified ActionV2 for punt cards which + // omits this ModalState. At present, this is only Android Wear and + // should not be used for other devices if they support ModalState or + // Conversation protocol. + SimpleActionV2PuntSupported bool `json:"simpleActionV2PuntSupported,omitempty"` + + // SupportedActionType: A list of all the action types supported by the + // client. These should be the string representation of + // majel.ActionTypes within "quality/majel/api/proto/action_v2.proto". + SupportedActionType []string `json:"supportedActionType,omitempty"` + + // TakeScreenshotSupported: Checks if screenshots can be taken on the + // client. This field is set on the client from AGSA 7.2 onwards. + TakeScreenshotSupported bool `json:"takeScreenshotSupported,omitempty"` + + // VoiceDelightImmersiveUiSupported: If IMMERSIVE_ACTIONS UiType is + // supported by the client. + VoiceDelightImmersiveUiSupported bool `json:"voiceDelightImmersiveUiSupported,omitempty"` + + // VoiceDelightStickersSupported: If Voice Delight Stickers are + // supported by the client. In order to support Voice Delight stickers, + // the client should know how to extract sticker_url from + // VoiceDelightSystemInteractionSegment. + VoiceDelightStickersSupported bool `json:"voiceDelightStickersSupported,omitempty"` + + // VoiceDelightSuggestionsSupported: If Voice Delight Suggestion Chips + // are supported by the client. In order to support Voice Delight + // Suggestion Chips, the client should know how to extract suggestions + // form VoiceDelightSystemInteraction.ResourceSet. + VoiceDelightSuggestionsSupported bool `json:"voiceDelightSuggestionsSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ExpressUrlInSettingsResponseSupported") to unconditionally include + // in API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "ExpressUrlInSettingsResponseSupported") to include in API requests + // with the JSON null value. By default, fields with empty values are + // omitted from API requests. However, any field with an empty value + // appearing in NullFields will be sent to the server as null. It is an + // error if a field in this list has a non-empty value. This may be used + // to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiActionV2SupportedFeatures) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiActionV2SupportedFeatures + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiAndroidIntentCapabilities: 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. +type AssistantApiAndroidIntentCapabilities struct { + AndroidIntentCapability []*AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability `json:"androidIntentCapability,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AndroidIntentCapability") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AndroidIntentCapability") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAndroidIntentCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAndroidIntentCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability struct { + // IntentActionName: The Action name of the Android Intent in standard + // notation + // (https://developer.android.com/reference/android/content/Intent#getAction()). + IntentActionName string `json:"intentActionName,omitempty"` + + // PackageNames: The Android provider packages that support the intent, + // e.g. "com.google.android.deskclock". + PackageNames []string `json:"packageNames,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IntentActionName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IntentActionName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAndroidIntentCapabilitiesAndroidIntentCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiAppCapabilities: Used to describe app capabilities of the +// device installed apps reported to the server. +type AssistantApiAppCapabilities struct { + // AllowlistedForMediaFulfillment: Indicates whether the provider is + // compatible for media fulfillment on this surface. For example, Amazon + // Music isn't compatible with the driving mode. + AllowlistedForMediaFulfillment bool `json:"allowlistedForMediaFulfillment,omitempty"` + + // AppIntegrationsSettings: Currently unused. Will be used in the future + // when integrating with incremental app capabilities. + AppIntegrationsSettings *AssistantApiAppIntegrationsSettings `json:"appIntegrationsSettings,omitempty"` + + // DisabledSystemApp: This system app is disabled in settings. + DisabledSystemApp bool `json:"disabledSystemApp,omitempty"` + + // Provider: The installed app of the provider. + Provider *AssistantApiCoreTypesProvider `json:"provider,omitempty"` + + // RoutableToProviderCloud: This provider has integrated its cloud + // backend with Google, and Google can route the user queries to the + // provider's cloud. + RoutableToProviderCloud bool `json:"routableToProviderCloud,omitempty"` + + // SearchableOnDevice: This provider has an app that supports on-device + // search through the provider's own inventory. + SearchableOnDevice bool `json:"searchableOnDevice,omitempty"` + + // SearchableOnServer: This provider has integrated its content with + // Google, and Google has enabled to serve its content as a server-side + // solution. + SearchableOnServer bool `json:"searchableOnServer,omitempty"` + + // SupportsScreenlessInitiation: This provider has an app that supports + // starting new media playback when there is no screen (e.g. by + // integrating with the Bisto SDK). + SupportsScreenlessInitiation bool `json:"supportsScreenlessInitiation,omitempty"` + + // WhitelistedForAnnotation: This provider is an app which should be + // used for query annotations. This is useful for apps which may not be + // already indexed by Google or are client specific. + WhitelistedForAnnotation bool `json:"whitelistedForAnnotation,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AllowlistedForMediaFulfillment") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AllowlistedForMediaFulfillment") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAppCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAppCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiAppCapabilitiesDelta: Used to describe the incremental +// change of app capabilities of the device installed apps reported to +// the server. +type AssistantApiAppCapabilitiesDelta struct { + // AppIntegrationsSettings: Currently unused. Will be used in the future + // when integrating with incremental app capabilities. + AppIntegrationsSettings *AssistantApiAppIntegrationsSettings `json:"appIntegrationsSettings,omitempty"` + + // ProviderDelta: The installed app of the provider. + ProviderDelta *AssistantApiCoreTypesProviderDelta `json:"providerDelta,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AppIntegrationsSettings") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AppIntegrationsSettings") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAppCapabilitiesDelta) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAppCapabilitiesDelta + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiAppControlSupport struct { + Enabled bool `json:"enabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAppControlSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAppControlSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiAppIntegrationsSettings: Contains the app privacy bits +// used for App Integrations implicit request. +// (go/app-privacy-settings-for-implicit-requests) +type AssistantApiAppIntegrationsSettings struct { + // HandleRequestsWithPredictedApps: Whether to enable Assistant to + // handle request with predicted apps. + // + // Possible values: + // "UNSET" + // "FALSE" + // "TRUE" + HandleRequestsWithPredictedApps string `json:"handleRequestsWithPredictedApps,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "HandleRequestsWithPredictedApps") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "HandleRequestsWithPredictedApps") to include in API requests with + // the JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAppIntegrationsSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAppIntegrationsSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiAssistantContinuedPresenceSupport struct { + // PlateSupport: 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. + // + // Possible values: + // "DEFAULT_NO_PLATE" - Assistant continued presence cannot be shown. + // "SEARCH_ONLY" - Assistant continued presence can be shown only in + // SearchNowActivity. See go/lockhart-acp. + PlateSupport string `json:"plateSupport,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PlateSupport") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PlateSupport") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAssistantContinuedPresenceSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAssistantContinuedPresenceSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiAudioInput: 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. +type AssistantApiAudioInput struct { + // Possible values: + // "SURROUNDING_USERS" - Audio may be produced by or visible to any + // users in the vicinity of the authenticated user -- e.g., a speaker. + // NOTE that this is the default value since it's better to assume that + // the user is in public when they're not than vice versa. + // "AUTHENTICATED_USER_ONLY" - Audio can be assumed to come from or go + // to the authenticated user -- e.g., the mic or headphone on a phone or + // headset. + Environment string `json:"environment,omitempty"` + + // Possible values: + // "VOICE_QUALITY" - An audio device capable of handling audio at + // fidelity high enough for voice use (TTS, speech recognition, + // telephone) but insufficient for media playback. + // "MUSIC_QUALITY" - An audio device capable of handling high-fidelity + // audio, suitable for use as a media device. + Quality string `json:"quality,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Environment") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Environment") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAudioInput) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAudioInput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiAudioOutput: 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. +type AssistantApiAudioOutput struct { + // Possible values: + // "UNKNOWN" - The setting for always on speaker is unknown. + // "NOT_SUPPORTED" - Always on speaker is not supported. + // "SUPPORTED" - Always on speaker is supported. + AlwaysOnSpeaker string `json:"alwaysOnSpeaker,omitempty"` + + // Possible values: + // "SURROUNDING_USERS" - Audio may be produced by or visible to any + // users in the vicinity of the authenticated user -- e.g., a speaker. + // NOTE that this is the default value since it's better to assume that + // the user is in public when they're not than vice versa. + // "AUTHENTICATED_USER_ONLY" - Audio can be assumed to come from or go + // to the authenticated user -- e.g., the mic or headphone on a phone or + // headset. + Environment string `json:"environment,omitempty"` + + // Possible values: + // "MEDIA_TTS_MIXABLE_UNKNOWN" - Unknown whether device supports + // mixing TTS and device media. + // "MEDIA_TTS_MIXABLE_NOT_SUPPORTED" - Device cannot mix TTS and + // device media. + // "MEDIA_TTS_MIXABLE_SUPPORTED" - Device can mix TTS and device + // media. + MediaTtsMixable string `json:"mediaTtsMixable,omitempty"` + + // Possible values: + // "VOICE_QUALITY" - An audio device capable of handling audio at + // fidelity high enough for voice use (TTS, speech recognition, + // telephone) but insufficient for media playback. + // "MUSIC_QUALITY" - An audio device capable of handling high-fidelity + // audio, suitable for use as a media device. + Quality string `json:"quality,omitempty"` + + VolumeProperties *AssistantApiVolumeProperties `json:"volumeProperties,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AlwaysOnSpeaker") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AlwaysOnSpeaker") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiAudioOutput) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiAudioOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCallCapabilities: CallCapabilities supported by a +// surface. See go/call-capabilities. Next ID: 7 +type AssistantApiCallCapabilities struct { + // CallFormats: The supported call formats on the surface. + // + // Possible values: + // "UNSPECIFIED_FORMAT" + // "AUDIO" + // "VIDEO" + // "TEXT" + CallFormats []string `json:"callFormats,omitempty"` + + // CallMediums: The supported call mediums on the surface. + // + // Possible values: + // "UNSPECIFIED_MEDIUM" + // "PSTN" - Public Switched Telephone Network. + // "VOIP" - Voice Over IP. + // "EMAIL" + // "ONLINE_CHAT" + // "TEXT_MESSAGING" - Super set of SMS and MMS + // "MESSAGE" - Super set of EMAIL, ONLINE_CHAT, TEXT_MESSAGING + CallMediums []string `json:"callMediums,omitempty"` + + // CallOptions: The call options this surface can provide. For example, + // SPEAKERPHONE is available on Android OPA while iOPA doesn't support + // it yet. + // + // Possible values: + // "UNSPECIFIED_CALL_OPTION" + // "SPEAKERPHONE" + // "BLUETOOTH" + // "HEADSET" + // "MIC" - Optional to set since call.CONTROL_MIC client_op infers + // this option. + // "CAMERA" - Optional to set since video_call.CONTROL_CAMERA + // client_op + CallOptions []string `json:"callOptions,omitempty"` + + // FallbackToTetheredDeviceAppCapabilities: 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). + FallbackToTetheredDeviceAppCapabilities bool `json:"fallbackToTetheredDeviceAppCapabilities,omitempty"` + + // SupportedRecipientTypes: Should only be checked if nonempty. + // + // Possible values: + // "UNSPECIFIED_ENDPOINT" + // "PHONE_NUMBER" + // "EMAIL_ADDRESS" + // "APP_UNIQUE_ID" + // "EMERGENCY_PHONE_NUMBER" + // "VOICEMAIL" + SupportedRecipientTypes []string `json:"supportedRecipientTypes,omitempty"` + + // SupportsDuoEmailEndpoint: Whether the surface supports Duo calling + // email endpoints. + SupportsDuoEmailEndpoint bool `json:"supportsDuoEmailEndpoint,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CallFormats") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CallFormats") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCallCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCallCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCameraCapabilities: These capabilities represent the +// camera features associated with the device. +type AssistantApiCameraCapabilities struct { + // FaceMatchCapable: Whether the device supports Face Match. + FaceMatchCapable bool `json:"faceMatchCapable,omitempty"` + + // HasCamera: Whether the device has a camera. + HasCamera bool `json:"hasCamera,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FaceMatchCapable") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FaceMatchCapable") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCameraCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCameraCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCameraReceiverCapabilities: These capabilities present +// the capability of the device running camera receiver apps. +type AssistantApiCameraReceiverCapabilities struct { + // HasLimitedCameraStreamCapability: Whether the device has limited + // camera stream capability. If true, check supported_camera_receivers + // for detailed supported cameras. + HasLimitedCameraStreamCapability bool `json:"hasLimitedCameraStreamCapability,omitempty"` + + // SupportedCameraReceivers: The camera receiver cast apps the device + // supports. Only used if has_limited_camera_stream_capability is true. + SupportedCameraReceivers []*AssistantApiCoreTypesCastAppInfo `json:"supportedCameraReceivers,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "HasLimitedCameraStreamCapability") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "HasLimitedCameraStreamCapability") to include in API requests with + // the JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCameraReceiverCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCameraReceiverCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCarAssistantCapabilities: 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. +type AssistantApiCarAssistantCapabilities struct { + // ShouldPuntMultiAssistantMode: Indicates whether the current Assistant + // should provide a multi Assistant specific punt when there are + // multiple Auto specific Google Assistants (Android Auto Projected + // (AAP) and Android Auto Embedded (AAE)) in the same GAS enabled car. + // This will be used by both AAP and AAE. Design doc: go/doubledash++ + ShouldPuntMultiAssistantMode bool `json:"shouldPuntMultiAssistantMode,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ShouldPuntMultiAssistantMode") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "ShouldPuntMultiAssistantMode") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCarAssistantCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCarAssistantCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCarSettingsCapabilities: Capabilities that are associated +// with Assistant Settings on auto surfaces. +type AssistantApiCarSettingsCapabilities struct { + // PlayWarmerWelcome: If true, it indicates that the auto surface client + // should receive a warmer welcome TTS for signed-out users. For + // signed-in user, we will rely on server side metadata. + // go/aaae:preview-lang + PlayWarmerWelcome bool `json:"playWarmerWelcome,omitempty"` + + // SupportsAddingCars: If true, it indicates that the client can be used + // to add cars after account linking with the OEM. + SupportsAddingCars bool `json:"supportsAddingCars,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PlayWarmerWelcome") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PlayWarmerWelcome") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCarSettingsCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCarSettingsCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiCastAssistantSettingLinkingResult struct { + // CastLinkingStatus: 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). + // + // Possible values: + // "NOT_SET" - LINT.IfChange + // "SUCCEED" + // "DEVICE_CONFLICT" + // "DEVICE_NAME_EMPTY" + // "CLIENT_ID_MISSING_TAG" + // "INVALID_DEVICE_ID" + // "DATA_SYNC_THROTTLED" + // "CREATE_ROBOT_ACCOUNT_FAILED" + // "UNAUTHORIZED_CLIENT" + // "OTHER_ERROR" - + // LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log. + // proto) + CastLinkingStatus string `json:"castLinkingStatus,omitempty"` + + // TruncatedErrorMsg: The error msg returned from COS, truncated in case + // it's too large. + TruncatedErrorMsg string `json:"truncatedErrorMsg,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CastLinkingStatus") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CastLinkingStatus") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCastAssistantSettingLinkingResult) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCastAssistantSettingLinkingResult + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCastCapabilities: These capabilities represent +// capabilities that have to do with casting that pertain to this +// device. Next ID: 9 +type AssistantApiCastCapabilities struct { + // CameraReceiverCapabilities: Whether the device has limited camera + // stream capability and if yes, which receivers are supported. + CameraReceiverCapabilities *AssistantApiCameraReceiverCapabilities `json:"cameraReceiverCapabilities,omitempty"` + + // CameraStreamSupportedProtocols: The supported protocols for camera + // streaming. The value is used as string in + // go/smarthome-internal-api#camera-stream, so using a string for this + // field instead of an enum. Supported protocols: (align the definition + // in go/smarthome-camerastream-trait) - "hls": HTTP Live Streaming - + // "dash": Dynamic Adaptive Streaming over HTTP - "smooth_stream": + // Smooth Streaming - "progressive_mp4": Progressive MP4 (will likely + // only be used for Clips) - "webrtc": WebRTC (currently, only H.264 is + // supported) - "nexustalk": Internal-only protocol used for Nest + CameraStreamSupportedProtocols []string `json:"cameraStreamSupportedProtocols,omitempty"` + + // CanReceiveCast: True if we can cast things to this device. + CanReceiveCast bool `json:"canReceiveCast,omitempty"` + + // DeviceId: Optional for primarily cast devices (e.g., Chirp, + // Chromecast). For devices that are NOT primarily cast devices, but + // having a cast receiver as secondary functionality, this field SHOULD + // store the cast-device-id to be used to send remote casting commands + // to the device. Example: Android TV, which supports both + // Android-native actions as well as remote casting using its built-in + // cast receiver. Android TV device id contains a DUSI id, which is not + // a cast-device-id. When executing a cast command on the Android TV, + // this field is used to route the cast command (through + // CloudCastService) to the cast receiver on the device. + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // DynamicGroupsSupported: Whether this device supports dynamic groups + // or not. It implies if a Stream Control operation (transfer, + // expansion, and contraction) could be applied on this device since + // Stream Control is implemented as part of dynamic groups (ie, + // adding/removing devices from playback) + DynamicGroupsSupported bool `json:"dynamicGroupsSupported,omitempty"` + + // Possible values: + // "NONE" + // "STATIC_GROUP" - Static group is created by the user through UI. It + // contains two or more devices. + // "DYNAMIC_GROUP" - Dynamic group is a temporary group created when + // devices are added to / removed from a playback. It should be torn + // down after the playback is done. + // "STEREO_PAIR" - Stereo pair is created by the user through UI. It + // contains exact two devices, a left device and a right device. + GroupType string `json:"groupType,omitempty"` + + // OverlayApplicationsSupported: Whether UI overlay applications are + // supported on this device. It's used by Chromecast only. + OverlayApplicationsSupported bool `json:"overlayApplicationsSupported,omitempty"` + + // YetiGamingSupported: Whether the device supports playing games + // through Yeti. This is set by the cast device when the device is + // updated: Chromecast updates -> Chromecast registers its capabilities + // with CCS -> CCS passes the capabilities to the + // AssistantSettingsService -> AssistantSettingsService stores the + // device's capabilities. go/yeti-gaming-supported-cast-capability + YetiGamingSupported bool `json:"yetiGamingSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CameraReceiverCapabilities") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "CameraReceiverCapabilities") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCastCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCastCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty: +// The properties of the client op device.MODIFY_SETTING. This proto is +// stored in the SupportedClientOp proto. +type AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty struct { + // SkipAndroidAndGsaVersionCheck: Additional specific setting + // capabilities. This boolean is used to indicate whether we want to + // skip the Android and GSA version check in + // CheckSettingSchemaAndMaybeGetUris() from + // assistant/vertical/device/fulfillment/utils/setting_utils.h. Consider + // setting this field to true if your device is neither Android or GSA + // (especially when the UserAgent string of your device's TaskRequest + // will not contain a valid/up-to-date Android/GSA version). + SkipAndroidAndGsaVersionCheck bool `json:"skipAndroidAndGsaVersionCheck,omitempty"` + + // SupportedSettings: Uses DeviceSetting enum which corresponds to + // setting_id. This indicates which specific settings are supported by + // client. An empty list implies all settings are supported. + // + // Possible values: + // "UNSPECIFIED" + // "ABOUT_ME" + // "ACCESSIBILITY" + // "ACTIVE_EDGE" + // "ACTIVE_EDGE_SENSITIVITY" + // "ADAPTIVE_BATTERY" + // "ADAPTIVE_BRIGHTNESS" + // "ADD_DEVICE" + // "ADD_FINGERPRINT" + // "AIRPLANE_MODE" + // "ALARM_VOLUME" + // "AMBIENT_DISPLAY_ALWAYS_ON" + // "AMBIENT_DISPLAY_NEW_NOTIFICATION" + // "ANDROID_VERSION" + // "APP_BATTERY_USAGE" + // "APP_DATA_USAGE" + // "APP_DETAILS" + // "APP_SHORTCUT" + // "APPS_STORAGE" + // "ASSISTANT_ACCOUNT" + // "ASSISTANT_FACE_MATCH" + // "ASSISTANT_LANGUAGE" + // "ASSISTANT_VOICE_MATCH" + // "AUTO_ROTATE" + // "BATTERY_LEVEL" + // "BATTERY_LOW" + // "BATTERY_PERCENTAGE" + // "BATTERY_PRESENT" + // "BATTERY_SAVER" + // "BATTERY_USAGE" + // "BIOMETRIC" + // "BLUETOOTH" + // "BRIGHTNESS_LEVEL" + // "CALL_VOLUME" + // "CAMERA_DOUBLE_TWIST" + // "CAST" + // "COLOR_INVERSION" + // "CONTACTLESS_PAYMENTS" + // "DATA_ROAMING" + // "DATA_SAVER" + // "DATA_USAGE" - Cellular carrier (non-wifi) data usage statistics & + // settings for the device. + // "DEFAULT_APPS" + // "DEVELOPER_OPTIONS" + // "DISPLAY_OVER_OTHER_APPS" + // "DISPLAY_SIZE" + // "DO_NOT_DISTURB" + // "DOUBLE_TAP_CHECK_PHONE" + // "EMERGENCY_INFORMATION" + // "ETHERNET_TETHERING" + // "FACTORY_RESET" + // "FLASHLIGHT" + // "FOCUS_MODE" + // "FONT_SIZE" + // "FREE_UP_SPACE" + // "GESTURES" + // "HOT_SPOT" + // "HOTSPOT_TETHERING" + // "HOT_WORD" + // "JUMP_TO_CAMERA" + // "KEYBOARD_SHORTCUTS" + // "LIFT_CHECK_PHONE" + // "LOCATION" + // "LOCK_SCREEN" + // "MAGNIFY_BUTTON" + // "MAGNIFY_TRIPLE_TAP" + // "MANIFY_BUTTON" + // "MANIFY_TRIPLE_TAP" + // "MEDIA" + // "MEDIA_VOLUME" + // "MOBILE" - Wireless internet settings, including WiFi, Cellular, + // etc. + // "MOBILE_DATA" - Setting to enable/disable cellular data connection + // being used on the device. + // https://screenshot.googleplex.com/jMSRtW3Aq4o + // "MUSIC" + // "NETWORK" + // "NFC" + // "NIGHT_LIGHT_INTENSITY" + // "NIGHT_LIGHT_SWITCH" + // "NIGHT_MODE" + // "NOTIFICATION_BADGE" + // "PASSWORD" + // "PERSONALIZATION" + // "PICTURE_IN_PICTURE" + // "POWER_MENU" + // "REMINDERS" + // "REQUIRE_DEVICE_UNLOCK_FOR_NFC" + // "RINGTONE" + // "RING_VOLUME" + // "SCREEN_TIMEOUT" + // "SELECT_TO_SPEAK" + // "SETTINGS" + // "SIM" + // "SPEECH_RATE" + // "STORAGE_USAGE" + // "SWIPE_FOR_NOTIFICATION" + // "SWITCH_ACCESS" + // "SYSTEM_UPDATE" + // "TEXT_TO_SPEECH" + // "USB_TETHERING" + // "VERBOSE_TTS" + // "VOICE" + // "VOLUME_LEVEL" + // "WAKE_SCREEN_FOR_NOTIFICATIONS" + // "WALLPAPERS" + // "WEBVIEW" + // "WIFI" + // "WIFI_CALLING" + // "WIFI_HOTSPOT" + // "ABOUT_PHONE" - Begin of NGA proto consistence + // "ACCOUNTS" + // "APPLICATION" + // "ASSISTANT" + // "AUDIO" + // "BATTERY" + // "BELL_SCHEDULE" + // "CONTINUED_CONVERSATION" + // "DATE_TIME" + // "DARK_THEME" + // "DEVICE_INFO" + // "DICTIONARY" + // "DIGITAL_WELLBEING" + // "DISPLAY" + // "LANGUAGE" + // "NIGHT_LIGHT" + // "NOTIFICATION" + // "NOTIFICATION_VOLUME" + // "PHONE_RINGTONE" + // "PRIVACY" + // "ROAMING" + // "ROUTINES" + // "SEARCH" + // "SECURITY" + // "SOUND" + // "SPELL_CHECKER" + // "SYSTEM" + // "STORAGE" + // "VPN" - End of NGA proto consistence + // "AUTOCLICK" - Chrome OS specific accessibility settings + // "CARET_HIGHLIGHT" + // "CHROMEVOX" + // "CURSOR_HIGHLIGHT" + // "DOCKED_MAGNIFIER" + // "FOCUS_HIGHLIGHT" + // "FULLSCREEN_MAGNIFIER" + // "HIGH_CONTRAST_MODE" + // "LARGE_CURSOR" + // "MONO_AUDIO" + // "STICKY_KEYS" + // "TAP_DRAGGING" + // "VIRTUAL_KEYBOARD" - End of Chrome OS specific accessibility + // settings + // "WEARABLE_AMBIENT" - Wearable device settings + // "WEARABLE_NOISE_CANCELLATION" + // "WEARABLE_TOUCH_CONTROLS" + // "RAISE_TO_TALK" - End of Wearable device settings + SupportedSettings []string `json:"supportedSettings,omitempty"` + + // SupportsDoNotDisturbWithDuration: Additional specific setting + // capabilities. This boolean is used to indicate if do not disturb with + // duration is supported through device.MODIFY_SETTING clientop on a + // client or not. + SupportsDoNotDisturbWithDuration bool `json:"supportsDoNotDisturbWithDuration,omitempty"` + + // SupportsMuteUnmute: Additional specific setting capabilities. This + // boolean is used to indicate if new unmute logic is enabled on a + // client or not. + SupportsMuteUnmute bool `json:"supportsMuteUnmute,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SkipAndroidAndGsaVersionCheck") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "SkipAndroidAndGsaVersionCheck") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiClientOpPropertiesProviderOpenClientOpProperty: The +// properties of the provider.OPEN ClientOp. This proto is stored in the +// SupportedClientOp proto with the key provider.OPEN. +type AssistantApiClientOpPropertiesProviderOpenClientOpProperty struct { + // KeepsConversationAliveAfterOpeningApp: Whether conversation is kept + // alive after opening the app. See go/keep-opa-conversation-alive for + // details. + KeepsConversationAliveAfterOpeningApp bool `json:"keepsConversationAliveAfterOpeningApp,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "KeepsConversationAliveAfterOpeningApp") to unconditionally include + // in API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "KeepsConversationAliveAfterOpeningApp") to include in API requests + // with the JSON null value. By default, fields with empty values are + // omitted from API requests. However, any field with an empty value + // appearing in NullFields will be sent to the server as null. It is an + // error if a field in this list has a non-empty value. This may be used + // to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiClientOpPropertiesProviderOpenClientOpProperty) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiClientOpPropertiesProviderOpenClientOpProperty + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiClockCapabilities: 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). +type AssistantApiClockCapabilities struct { + // MaxSupportedAlarms: Maximum number of alarms that can be created on + // the client. + MaxSupportedAlarms int64 `json:"maxSupportedAlarms,omitempty"` + + // MaxSupportedExtendedTimerDuration: Maximum extended timer duration + // supported by the client. The extended timer duration is the total + // start-to-finish duration after an AddTimeToTimer operation. E.g. if a + // user sets a timer for 30 minutes, and later adds 10 minutes, the + // extended duration is 40 minutes. + MaxSupportedExtendedTimerDuration *AssistantApiDuration `json:"maxSupportedExtendedTimerDuration,omitempty"` + + // MaxSupportedTimerDuration: Maximum duration of timers that can be + // created on the client. + MaxSupportedTimerDuration *AssistantApiDuration `json:"maxSupportedTimerDuration,omitempty"` + + // MaxSupportedTimers: Maximum number of timers that can be created on + // the client. + MaxSupportedTimers int64 `json:"maxSupportedTimers,omitempty"` + + // PreferredStopwatchProvider: The preferred provider to use for + // stopwatch related functionality. + PreferredStopwatchProvider *AssistantApiCoreTypesProvider `json:"preferredStopwatchProvider,omitempty"` + + // RestrictAlarmsToNext24h: Whether the client restricts alarms to ring + // within the next 24 hours. + RestrictAlarmsToNext24h bool `json:"restrictAlarmsToNext24h,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MaxSupportedAlarms") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MaxSupportedAlarms") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiClockCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiClockCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCommunicationUiCapabilities: UI capabilities for the +// surfaces rendering Comms features. See +// go/rohan-comms-fluid-actions-customization. +type AssistantApiCommunicationUiCapabilities struct { + // Possible values: + // "DEFAULT" + // "SIMPLIFIED" - Fluid actions output optimized for small devices, + // with no on-device management of conversation state available. + FluidActionsUiType string `json:"fluidActionsUiType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FluidActionsUiType") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FluidActionsUiType") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCommunicationUiCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCommunicationUiCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiContactLookupCapabilities struct { + // FallbackToTetheredDevice: 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. + FallbackToTetheredDevice bool `json:"fallbackToTetheredDevice,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "FallbackToTetheredDevice") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FallbackToTetheredDevice") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiContactLookupCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiContactLookupCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesAndroidAppInfo: The android app information of +// the provider. Like, Spotify. Next ID: 15 LINT.IfChange +type AssistantApiCoreTypesAndroidAppInfo struct { + AccountType string `json:"accountType,omitempty"` + + // AndroidIntent: Intent associated with the app. We include intents + // here as different versions of the same app may support different + // intents. In those cases, the package_name is not enough to identify + // the app and we should use the combination of package_name and + // android_intent. This field might contain sensitive data, if + // represents ClientOp with encapsulated PII such as user query. + AndroidIntent string `json:"androidIntent,omitempty"` + + // AppUniqueId: Store the app unique id endpoint. This will be passed + // over to app to fulfill the action. + AppUniqueId string `json:"appUniqueId,omitempty"` + + // AppVersion: The android app version. Deprecated because + // https://developer.android.com/reference/android/content/pm/PackageInfo.html#getLongVersionCode + AppVersion int64 `json:"appVersion,omitempty"` + + // DataMimetype: data_mimetype and account_type are the what AGSA uses + // to filter which contacts support this Android app in ContactProvider. + DataMimetype string `json:"dataMimetype,omitempty"` + + // IsBroadcastIntent: If true, client should broadcast the intent + // instead of open the intent. + IsBroadcastIntent bool `json:"isBroadcastIntent,omitempty"` + + // IsDefault: App is the default app for it's core functionality. For + // example, it will be true for Android messages if it is the default + // app to send and receive SMS on the phone. + IsDefault bool `json:"isDefault,omitempty"` + + // LocalizedAppName: The localized app name. + LocalizedAppName string `json:"localizedAppName,omitempty"` + + // LongVersionCode: The long android app version. + LongVersionCode int64 `json:"longVersionCode,omitempty,string"` + + // Mimetype: Store mimetype of this endpoint. We will use this as the + // differentiator for Assistant to know whether to use the RawContact + // for messaging, call or video call. For example, send message mimetype + // for whatsapp: "vnd.android.cursor.item/vnd.com.whatsapp.profile" + // voice call mimetype for whatsapp: + // "vnd.android.cursor.item/vnd.com.whatsapp.voip.call" + Mimetype string `json:"mimetype,omitempty"` + + // PackageName: The android app package of the provider, like + // "com.spotify.music". + PackageName string `json:"packageName,omitempty"` + + // ProviderType: The OemProviderType is specific for OEM system Android + // apps. For example, in Auto Embedded, the OEM will have a system + // Radio/Media app. The system app’s capabilities/core functionalities + // are captured here. For physical media sources, the OEM may decide to + // implement one media app (thus, one package name) that handles + // multiple physical media sources. For these cases, each physical media + // source will be sent as different providers even though the package + // name is the same. + // + // Possible values: + // "UNKNOWN_OEM_PROVIDER_TYPE" + // "RADIO_PROVIDER_TYPE" - Refers to an app that handles AM/FM Radio + // via a physical radio tuner in the device. See + // go/radio-assistant-for-auto. + // "SXM_RADIO_PROVIDER_TYPE" - Refers to an app that handles Satellite + // (SiriusXM) Radio via a physical Satellite tuner in the device. See + // go/sxm-on-gas. + ProviderType string `json:"providerType,omitempty"` + + // ShortcutId: Id of the app's Android shortcut to be launched by + // Assistant. The client is expected to use the Android LauncherApps API + // to execute this shortcut which in turn will open the app. For + // example, Whatsapp may create an Android shortcut for a frequently + // messaged contact with an id "contact_123". This field will contain + // that id and the client can execute it to open up the chat with that + // particular contact. If this field is set, the package_name field must + // also be set since both will be used by the LauncherApps API for + // execution. If this field is set, the intent related fields will be + // ignored and not used as a fallback. Design: + // go/shortcut-id-in-provider-open-clientop This field should only be + // set for devices with Android API level >= 25 (since that is the + // version from which the LauncherApps startShortcut API is available) + ShortcutId string `json:"shortcutId,omitempty"` + + // VersionName: The android app version name, like "4.1.091.05.40d", + // "11.2.7.21.alpha". Android Docs: + // https://developer.android.com/reference/android/content/pm/PackageInfo#versionName + VersionName string `json:"versionName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccountType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesAndroidAppInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesAndroidAppInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesAndroidAppInfoDelta: The change of +// AndroidAppInfo, e.g. app installation or deletion for incremental +// delta app info upload. +type AssistantApiCoreTypesAndroidAppInfoDelta struct { + // AndroidAppInfo: The android app information of the provider. Like, + // Spotify. + AndroidAppInfo *AssistantApiCoreTypesAndroidAppInfo `json:"androidAppInfo,omitempty"` + + // LastUpdateTimestamp: The client-side timestamp in millis when the app + // is last updated, installed or deleted. + LastUpdateTimestamp string `json:"lastUpdateTimestamp,omitempty"` + + // UpdateType: App is installed or deleted. + // + // Possible values: + // "UNKNOWN_TYPE" + // "IS_INSTALLED" + // "IS_DELETED" + UpdateType string `json:"updateType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AndroidAppInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AndroidAppInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesAndroidAppInfoDelta) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesAndroidAppInfoDelta + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesCalendarEvent: This proto contains the +// information of a calendar event, including title, start time, end +// time, etc. IMPORTANT: The definition of CalendarEvent proto is being +// moved to +// //assistant/api/core_types/governed/calendar_event_type.proto. All +// existing references will be updated to point to the new location. If +// you are adding a reference, use the new one instead. +// LINT.IfChange(CalendarEvent) NEXT_ID: 26 +type AssistantApiCoreTypesCalendarEvent struct { + // Attendees: Attendees invited to the event, usually includes also the + // organizer. + Attendees []*AssistantApiCoreTypesCalendarEventAttendee `json:"attendees,omitempty"` + + // BackgroundColor: The background color of the event, in RGB format. + BackgroundColor int64 `json:"backgroundColor,omitempty"` + + // CalendarId: Optional calendar containing the event. + CalendarId string `json:"calendarId,omitempty"` + + // Creator: The person who created this event. + Creator *AssistantApiCoreTypesCalendarEventAttendee `json:"creator,omitempty"` + + // Description: Optional description of the event (plain text). + Description string `json:"description,omitempty"` + + // End: The end time of the event. Start and end time must either both + // be date or both be datetime. End is exclusive, ie. the first day / + // first second when the event is over. + End *AssistantApiDateTime `json:"end,omitempty"` + + // EventId: Optional event id provided by assistant server. Needs to be + // unique, at least on a per-user and calendar level, ideally globally + // unique. If none is given, the server will assign an id. + EventId string `json:"eventId,omitempty"` + + // FlairName: The flair name, calculated according to the event title + // (go/as-cal-flair). With the flair name, background images can be got + // from gstatic (go/scs): + // https://ssl.gstatic.com/tmly/f8944938hffheth4ew890ht4i8/flairs/ + FlairName string `json:"flairName,omitempty"` + + // ForegroundColor: The foreground color of the event, in RGB format. + ForegroundColor int64 `json:"foregroundColor,omitempty"` + + // GuestsCanInviteOthers: Whether the guests can invite other guests. + GuestsCanInviteOthers bool `json:"guestsCanInviteOthers,omitempty"` + + // GuestsCanModify: Whether the guests can modify the event. + GuestsCanModify bool `json:"guestsCanModify,omitempty"` + + // GuestsCanSeeGuests: Whether the guests of the event can be seen. If + // false, the user is reported as the only attendee to the event, even + // though there may be more attendees. + GuestsCanSeeGuests bool `json:"guestsCanSeeGuests,omitempty"` + + // HabitId: Optional id of the Habit (Calendar Goal) this event is + // linked to + HabitId string `json:"habitId,omitempty"` + + // HabitStatus: Optional status for this habit event instance. + // + // Possible values: + // "UNKNOWN_STATUS" + // "ACTIVE" + // "DEFERRAL_REQUESTED" + // "COMPLETE" + // "UNDEFERRABLE" + HabitStatus string `json:"habitStatus,omitempty"` + + // HtmlLink: Absolute link to this event in the Calendar web UI. + HtmlLink string `json:"htmlLink,omitempty"` + + // Location: Optional location of the event (plain text). + Location string `json:"location,omitempty"` + + MeetingContacts []*AssistantApiCoreTypesCalendarEventMeetingContact `json:"meetingContacts,omitempty"` + + // Organizer: The organizer of this event. + Organizer *AssistantApiCoreTypesCalendarEventAttendee `json:"organizer,omitempty"` + + // OtherAttendeesExcluded: Whether not all attendees are included in the + // attendee list. This is set when the attendees list has been truncated + // (e.g., when the number of attendees is beyond the maxAttendees + // limitation). + OtherAttendeesExcluded bool `json:"otherAttendeesExcluded,omitempty"` + + // ParticipationResponse: The user's response (the owner of this copy of + // the event) to this event. + // + // Possible values: + // "RESPONSE_STATUS_UNSPECIFIED" + // "NEEDS_ACTION" + // "DECLINED" + // "TENTATIVE" + // "ACCEPTED" + ParticipationResponse string `json:"participationResponse,omitempty"` + + // RecurringEventId: If this is an instance of a recurring event, + // recurring_event_id identifies the recurring series as a whole. + RecurringEventId string `json:"recurringEventId,omitempty"` + + // Rooms: Meeting rooms associated to this event. + Rooms []*AssistantApiCoreTypesCalendarEventRoom `json:"rooms,omitempty"` + + // Start: The start time of the event. This event is an all-day event if + // start has no time_of_day. + Start *AssistantApiDateTime `json:"start,omitempty"` + + // Summary: The title of the event. + Summary string `json:"summary,omitempty"` + + // Visibility: Optional visibility of the event. + // + // Possible values: + // "DEFAULT" + // "PUBLIC" + // "PRIVATE" + // "CONFIDENTIAL" + // "SECRET" + // "SHADOW" + // "UNKNOWN" - When we receive a value outside of this enum it will be + // replaced with this UNKNOWN field. When trying to send UNKNOWN it will + // be silently converted to DEFAULT. + Visibility string `json:"visibility,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Attendees") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Attendees") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesCalendarEvent) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesCalendarEvent + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesCalendarEventAttendee: Next id: 8 +type AssistantApiCoreTypesCalendarEventAttendee struct { + // DisplayName: Display name, present only if available. + DisplayName string `json:"displayName,omitempty"` + + // Email: Email address of the attendee (calendar), for regular events. + // For +Events, this field is not populated, instead "id" is used. + Email string `json:"email,omitempty"` + + // GivenName: Given (first) name, present only if available. This is + // used for generating meeting titles as given name is preferred over + // display (full) name (ie: "Jeff : Sundar" is better than "Jeff Dean : + // Sundar Pichai"). + GivenName string `json:"givenName,omitempty"` + + // Id: Profile ID of the principal, for +Events. For regular events, + // this field is not populated, instead "email" is used. + Id string `json:"id,omitempty"` + + // Organizer: Is this the organizer? + Organizer bool `json:"organizer,omitempty"` + + // ResponseStatus: Attendees response status. + // + // Possible values: + // "RESPONSE_STATUS_UNSPECIFIED" + // "NEEDS_ACTION" + // "DECLINED" + // "TENTATIVE" + // "ACCEPTED" + ResponseStatus string `json:"responseStatus,omitempty"` + + // Self: Is this the owner of this copy of the event? + Self bool `json:"self,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesCalendarEventAttendee) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesCalendarEventAttendee + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesCalendarEventMeetingContact: Next id: 10 +type AssistantApiCoreTypesCalendarEventMeetingContact struct { + // ConferenceId: ID that corresponds to in ConferenceData.conference_id + // in calendar.common.ConferenceData proto. For Meet, this is the + // identifier used to join a meeting via URL. + ConferenceId string `json:"conferenceId,omitempty"` + + // Possible values: + // "NUMBER_CLASS_UNSPECIFIED" - No number class has been specified. + // "LOW_COST" - The number has a low cost to receive calls on. + // "HIGH_COST" - The number has a high cost to receive calls on. + // "LEGACY" - Class for legacy numbers. + DialInNumberClasses []string `json:"dialInNumberClasses,omitempty"` + + // PhoneNumberUri: Default meeting phone number, for example: + // "tel:+1-475-777-1840" + PhoneNumberUri string `json:"phoneNumberUri,omitempty"` + + // PinNumber: A PIN that the participant will need to input after + // dialing in the conference. + PinNumber string `json:"pinNumber,omitempty"` + + // Provider: Provider info for the meeting. + Provider *AssistantApiCoreTypesProvider `json:"provider,omitempty"` + + // RegionCode: The region code for the default meeting phone number + RegionCode string `json:"regionCode,omitempty"` + + // Possible values: + // "SOURCE_UNSPECIFIED" - The source is unknown. + // "STRUCTURED_DATA" - The conference information was retrieved from + // structured fields. + // "UNSTRUCTURED_DATA" - The conference information was parsed and + // extracted from unstructured fields (e.g. event description). + Source string `json:"source,omitempty"` + + // UniversalPinNumber: The universal meeting PIN number for phone + // numbers in all available countries + UniversalPinNumber string `json:"universalPinNumber,omitempty"` + + // Url: URL that can be used to join the meeting. + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ConferenceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ConferenceId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesCalendarEventMeetingContact) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesCalendarEventMeetingContact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesCalendarEventRoom: A room that is available for +// a potential meeting or has been booked for a scheduled meeting. Next +// id: 4 +type AssistantApiCoreTypesCalendarEventRoom struct { + // Email: Room email that identifies the room and is used to book it. + Email string `json:"email,omitempty"` + + // LocationDetails: Additional room details. Read-only, populated on + // request. + LocationDetails *AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails `json:"locationDetails,omitempty"` + + // Name: Room name (ex: "MTV-PR55-5-A-Shadow 5K0 (13) GVC (No external + // guests)"). + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Email") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Email") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesCalendarEventRoom) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesCalendarEventRoom + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails: Room +// location details. Read-only, populated on request. Next id: 8 +type AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails struct { + // Building: Building where the room is (ex: "PR55"). + Building string `json:"building,omitempty"` + + // City: City where the room is (ex: "MTV"). + City string `json:"city,omitempty"` + + // Floor: Floor where the room is (ex: "5"). + Floor string `json:"floor,omitempty"` + + // Latitude: The latitude in degrees. + Latitude float64 `json:"latitude,omitempty"` + + // Longitude: The longitude in degrees. + Longitude float64 `json:"longitude,omitempty"` + + // Section: Section in the floor (ex: "A"). + Section string `json:"section,omitempty"` + + // SimpleName: Room name (ex: "Shadow 5K0"). + SimpleName string `json:"simpleName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Building") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Building") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails) UnmarshalJSON(data []byte) error { + type NoMethod AssistantApiCoreTypesCalendarEventRoomRoomLocationDetails + var s1 struct { + Latitude gensupport.JSONFloat64 `json:"latitude"` + Longitude gensupport.JSONFloat64 `json:"longitude"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Latitude = float64(s1.Latitude) + s.Longitude = float64(s1.Longitude) + return nil +} + +// AssistantApiCoreTypesCalendarEventWrapper: 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 +// IMPORTANT: The definition of CalendarEventWrapper proto is being +// moved to +// //assistant/api/core_types/governed/calendar_event_type.proto. All +// existing references will be updated to point to the new location. If +// you are adding a reference, use the new one instead. +type AssistantApiCoreTypesCalendarEventWrapper struct { +} + +// AssistantApiCoreTypesCastAppInfo: The cast app information of the +// provider. +type AssistantApiCoreTypesCastAppInfo struct { + // CastAppId: The cast app id. |cast_app_id| is the ID of the cast app + // used on the current device and |content_app_id| is the ID of the app + // that provides the actual content. For example, in a group playback, + // on a follower device, the |cast_app_id| is the follower cast app ID + // and the |content_app_id| is the leader cast app ID. + CastAppId string `json:"castAppId,omitempty"` + + // ContentAppId: The id of the cast app that provides the content in a + // group. The field will always be filled. In the case of a group + // playback and the current device is a follower, the |cast_app_id| has + // the ID of the follower app, and |content_app_id| has ID of the actual + // content app. In all other cases, |content_app_id| and |cast_app_id| + // will be the same. + ContentAppId string `json:"contentAppId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CastAppId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CastAppId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesCastAppInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesCastAppInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesChromeOsAppInfo: The ChromeOS app information of +// the provider. Next ID: 3 +type AssistantApiCoreTypesChromeOsAppInfo struct { + // LocalizedAppName: The localized app name. + LocalizedAppName string `json:"localizedAppName,omitempty"` + + // PackageName: Unique package name that identifies a ChromeOS app of + // the provider. + PackageName string `json:"packageName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LocalizedAppName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LocalizedAppName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesChromeOsAppInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesChromeOsAppInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesCloudProviderInfo: The third party provider +// information. +type AssistantApiCoreTypesCloudProviderInfo struct { + AgentStyle *AssistantApiCoreTypesCloudProviderInfoAgentStyle `json:"agentStyle,omitempty"` + + // DirectoryUrl: URL to a directory page about the third party agent in + // Assistant HQ. This is a universal (https) URL that may be handled + // natively by clients to show HQ or launch to the HQ directory web + // page. + DirectoryUrl string `json:"directoryUrl,omitempty"` + + // LogoUrl: The logo url for the third party provider. + LogoUrl string `json:"logoUrl,omitempty"` + + // Name: The user visible name of the cloud provider, which may be used + // for example in the chat header during a conversation with the third + // party. + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgentStyle") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgentStyle") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesCloudProviderInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesCloudProviderInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesCloudProviderInfoAgentStyle: The style +// customizations for the 3p agent. +type AssistantApiCoreTypesCloudProviderInfoAgentStyle struct { + // BackgroundColor: The background color of the agent. Used if no + // background image is specified for the given display orientation, or + // if the provided background image does not fit. + BackgroundColor *AssistantApiCoreTypesGovernedColor `json:"backgroundColor,omitempty"` + + // Possible values: + // "DEFAULT" - The client's default theme. + // "DARK" - The theme used when the card has a background image. See + // go/aog-cards-header-theme-dark for details on applying this theme. + // "LIGHT" - The theme used when the card has a background color (and + // no background image). See go/aog-cards-header-theme-light for details + // on applying this theme. + HeaderTheme string `json:"headerTheme,omitempty"` + + // LandscapeBackgroundImageUrl: URL for the background image of the + // agent on landscape display. + LandscapeBackgroundImageUrl string `json:"landscapeBackgroundImageUrl,omitempty"` + + // LogoUrl: URL for the image containing the 3p logo. This can include + // logomark and logotype, or logotype only. If present, this can be used + // in place of the square logo contained in the top level logo_url field + // in CloudProviderInfo. See go/cards-logo-customization for details on + // applying this logo. + LogoUrl string `json:"logoUrl,omitempty"` + + // MaskColor: The color of the mask to apply to the background. See + // go/aog-cards-background-mask for details on applying this mask. + MaskColor *AssistantApiCoreTypesGovernedColor `json:"maskColor,omitempty"` + + // PortraitBackgroundImageUrl: URL for the background image of the agent + // on portrait display. + PortraitBackgroundImageUrl string `json:"portraitBackgroundImageUrl,omitempty"` + + // PrimaryColor: The primary color of the agent. Used by the client to + // style the header and suggestion chips. + PrimaryColor *AssistantApiCoreTypesGovernedColor `json:"primaryColor,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BackgroundColor") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BackgroundColor") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesCloudProviderInfoAgentStyle) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesCloudProviderInfoAgentStyle + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesDeviceConfig: 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 +type AssistantApiCoreTypesDeviceConfig struct { + // AgentId: Pantheon Project ID that uniquely identifies the consumer + // project ID. Required + AgentId string `json:"agentId,omitempty"` + + // DeviceId: Unique identifier for the device. Example: DBCDW098234. + // Required + DeviceId string `json:"deviceId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgentId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgentId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesDeviceConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesDeviceConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesDeviceId: 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 `DeviceId`s, 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/device_id_util.cc;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/DeviceIdHelper.java;l=9;rcl=390378522 +// See http://go/deviceid-equality for more details. Next ID: 14 +type AssistantApiCoreTypesDeviceId struct { + // AgsaClientInstanceId: The client_instance_id on devices with GSA. See + // 'client_instance_field' in go/androidids. + AgsaClientInstanceId string `json:"agsaClientInstanceId,omitempty"` + + // AlloDeviceId: Allo Id. Corresponds to the GBotRequest.Sender.sender. + // NOTE(dychen): This may change to standard android/ios physical device + // ids in order to enable shared data (e.g. installed app on physical + // device shared between Allo and Opa apps on Nexus). + AlloDeviceId string `json:"alloDeviceId,omitempty"` + + // CanonicalDeviceId: A unique device ID for Assistant devices as + // proposed by go/ocelot-team to solve the device id fragmentation + // problem. The value of this id is the HomeGraph id of the device. See + // go/ocelot-track-0-registry-design. New surfaces should use the + // canonical_device_id instead of using other ids, and the registration + // should utilize the DeviceDataLayer (go/ddl-v0). Please contact the + // assistant-state-management@ team for guidance. Note: We didn't reuse + // |home_graph_device_id| because in Assistant code base + // |home_graph_device_id| is common to associate it with 3P devices. See + // go/project-yellowstone for more context. + CanonicalDeviceId string `json:"canonicalDeviceId,omitempty"` + + // CastDeviceId: If set, indicates that the device is a cast device, and + // contains the UUID of the cast device. Corresponds to the device_id + // field of the CastDevice proto. + CastDeviceId string `json:"castDeviceId,omitempty"` + + // ClientInstanceId: DUSI (go/dusi) is used as the identifier here. This + // identifier is unique to the user and device. This will help identify + // which device or application the user's request originated from. This + // is not to be confused with the client_instance_id that android + // devices provide. This is currently used by surfaces that use the + // assistant-legacy-nexus and assistant-legacy-clockwork pipelines. DUSI + // is created and set in S3. This field is only filled for GAIA + // requests. + ClientInstanceId string `json:"clientInstanceId,omitempty"` + + // ConnectedDockId: A device ID produced by a connected dock, which is + // registered in HomeGraph. + ConnectedDockId string `json:"connectedDockId,omitempty"` + + // DeviceConfig: The unique DeviceConfig to the specific third party + // device. It is also used by Android Auto Embedded first party device. + // See go/opa-ids. + DeviceConfig *AssistantApiCoreTypesDeviceConfig `json:"deviceConfig,omitempty"` + + // DeviceType: The device's surface type. This is the string version of + // surface_type. The server should use the SurfaceType value derived + // from this string. If the device_type isn't supported within the + // SurfaceType enum, it will be set as UNKNOWN. Developers should use + // the enum in ServerParams instead of this string. + DeviceType string `json:"deviceType,omitempty"` + + // HomeGraphDeviceId: The unique device ID for HomeGraph devices. This + // is the HomeGraph ID, created when the device is registered into + // HomeGraph. It is immutable for the same device unless it is + // completely deleted and recreated. See go/home-graph for details. + HomeGraphDeviceId string `json:"homeGraphDeviceId,omitempty"` + + // LibassistantDeviceId: The unique ID for libassistant based devices. + // See go/libassistant-id for details. + LibassistantDeviceId string `json:"libassistantDeviceId,omitempty"` + + // MultiHotwordArbitrationDeviceId: If set, indicates that the device is + // participating the multi-hotword arbitration and the id is an UUID to + // distinguish it from other devices. It should also be consistent + // between requests from a single device within a session (or short + // duration). + MultiHotwordArbitrationDeviceId string `json:"multiHotwordArbitrationDeviceId,omitempty"` + + // OpaIosDeviceId: The unique device ID for the Assistant App on iOS. + // See go/opa-ios-design for details. + OpaIosDeviceId string `json:"opaIosDeviceId,omitempty"` + + // QuartzDeviceId: The unique ID of a Quartz device. See + // go/quartz-design-doc for more details. Quartz ID is a hash of + // (android_id + gaia). + QuartzDeviceId string `json:"quartzDeviceId,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AgsaClientInstanceId") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgsaClientInstanceId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesDeviceId) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesDeviceId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesDeviceUserIdentity: IMPORTANT: The definition of +// DeviceUserIdentity is being moved to +// //assistant/api/core_types/governed/device_user_identity.proto. All +// existing references will be updated to point to the new location. If +// you are adding a reference, use the new DeviceUserIdentity instead of +// this one. // LINT.IfChange +type AssistantApiCoreTypesDeviceUserIdentity struct { + // DeviceId: The identifier of the device. + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // GaiaId: The identifier of the user. + GaiaId int64 `json:"gaiaId,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesDeviceUserIdentity) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesDeviceUserIdentity + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesGovernedColor: Represents a color in the RGBA +// color space. This message mirrors google.type.Color. +type AssistantApiCoreTypesGovernedColor struct { + // Alpha: The fraction of this color that should be applied to the + // pixel. That is, the final pixel color is defined by the equation: + // pixel color = alpha * (this color) + (1.0 - alpha) * (background + // color) This means that a value of 1.0 corresponds to a solid color, + // whereas a value of 0.0 corresponds to a completely transparent color. + // If omitted, this color object is to be rendered as a solid color (as + // if the alpha value had been explicitly given with a value of 1.0). + Alpha float64 `json:"alpha,omitempty"` + + // Blue: The amount of blue in the color as a value in the interval [0, + // 1]. + Blue float64 `json:"blue,omitempty"` + + // Green: The amount of green in the color as a value in the interval + // [0, 1]. + Green float64 `json:"green,omitempty"` + + // Red: The amount of red in the color as a value in the interval [0, + // 1]. + Red float64 `json:"red,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Alpha") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Alpha") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesGovernedColor) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesGovernedColor + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AssistantApiCoreTypesGovernedColor) UnmarshalJSON(data []byte) error { + type NoMethod AssistantApiCoreTypesGovernedColor + var s1 struct { + Alpha gensupport.JSONFloat64 `json:"alpha"` + Blue gensupport.JSONFloat64 `json:"blue"` + Green gensupport.JSONFloat64 `json:"green"` + Red gensupport.JSONFloat64 `json:"red"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Alpha = float64(s1.Alpha) + s.Blue = float64(s1.Blue) + s.Green = float64(s1.Green) + s.Red = float64(s1.Red) + return nil +} + +// AssistantApiCoreTypesGovernedRingtoneTaskMetadata: Task metadata +// information describing the ringtone. Next id: 11 +type AssistantApiCoreTypesGovernedRingtoneTaskMetadata struct { + // Category: The category related with the ringtone. It's used to + // generate ringtone related with the category if the entity_mid is not + // be populated. E.g. for instrument, the ringtone may be piano sound. + // + // Possible values: + // "UNKNOWN_CATEGORY" + // "ANIMAL" + // "CHARACTER" - Character alarm is a kind of media alarm. CHARACTER + // category should be removed. Use MEDIA for character alarms + // "EMOTION" + // "INSTRUMENT" + // "MEDIA" + // "SPORTS_EQUIPMENT" + // "VEHICLE" + // "ON_DEVICE" - An alarm sound that the user can select to play when + // an alarm is firing, the alarm sound resource is located on device in + // libassistant. + // "FUNTIME" - An alarm sound that is based upon the label that the + // timer or alarm is invoked with (ie pizza timer invokes an Italian + // accordian theme). The assets are streamed from web storage. + Category string `json:"category,omitempty"` + + CharacterAlarmMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata `json:"characterAlarmMetadata,omitempty"` + + CharacterTag string `json:"characterTag,omitempty"` + + // EntityMid: The freebase mid of the entity related to the ringtone. It + // will be used to generate the ringtone for the alarm or timer (with + // support for i18n). For instance, for the "cat" mid, the related + // ringtone will be a cat sound in some language, and for the "Beyonce" + // mid, the ringtone will be, e.g., a playlist of Beyonce's best hits. + EntityMid string `json:"entityMid,omitempty"` + + FuntimeMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata `json:"funtimeMetadata,omitempty"` + + GenMlAlarmMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata `json:"genMlAlarmMetadata,omitempty"` + + // GentleWakeInfo: Gentle wake information for this alarm. + GentleWakeInfo *AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo `json:"gentleWakeInfo,omitempty"` + + OnDeviceAlarmMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata `json:"onDeviceAlarmMetadata,omitempty"` + + // OnDeviceAlarmSound: Will be deprecated. Use OnDeviceAlarmMetadata. + // + // Possible values: + // "DEFAULT" + // "MELLOW" + // "MODERN_TIMES" + // "BEAUTIFUL_MIND" + // "LITTLE_SUNSHINE" + // "TOUCH_OF_ZEN" + // "ABOUT_TIME" + // "RANDOM" + // "BOROBUDUR" + // "PEBBLES" + // "BRIGHT_MORNING" + // "ACROSS_THE_VALLEY" + // "MORNING_SONG" + // "KYOTO" + // "AWAKEN" + // "CUCKOO" + // "DIGITAL_BLAST" + // "ACOUSTIC_SUNLIGHT" + // "SUNRISE_BOSSA" + // "CALM_GLOW" + // "ANTIQUE_CLOCK" + // "JUST_BIRDS" + // "JUNGLE_AMBIENCE" + // "QUAINT_VILLAGE" + // "BUBBLY_BOSSA" + // "ACOUSTIC_JAM" + // "EUPHORIC" + OnDeviceAlarmSound string `json:"onDeviceAlarmSound,omitempty"` + + RoutineAlarmMetadata *AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata `json:"routineAlarmMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Category") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Category") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata struct { + // AgentIds: 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. + AgentIds []string `json:"agentIds,omitempty"` + + // CharacterTags: 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. + CharacterTags []string `json:"characterTags,omitempty"` + + // IconUrls: 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. + IconUrls []string `json:"iconUrls,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgentIds") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgentIds") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataCharacterAlarmMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata: +// Used to make timers and alarms more delightful. See +// go/funtime-engdesign for more details. +type AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata struct { + // AgentIds: For FunTime alarms and timers, the media resources are + // provided through AOG apps during their ringtone. Multiple AoG agents + // can satisfy a label. So a random agent will be chosen from those that + // are supplied. See go/funtime-engdesign. + AgentIds []string `json:"agentIds,omitempty"` + + // AnimationBlob: These bytes may represent the blob of the Rive + // animation that we pass to the Opal App. We will deprecate this field + // if we figure out a solution to load the animation from the web. + AnimationBlob string `json:"animationBlob,omitempty"` + + // AnimationUrl: Url for Rive animation that is brought up on ring. Rive + // is a lightweight animation library that is compatible with Flutter on + // Opal. See https://rive.app/. + AnimationUrl string `json:"animationUrl,omitempty"` + + // TimerHeroUrl: The url used to load the image that is at the center of + // the timer during timer countdown visuals. + TimerHeroUrl string `json:"timerHeroUrl,omitempty"` + + // TtsServiceRequestBytes: This is used to call S3 to realize the TTS. + // Is in the form of bytes because of a circular dependency issue in + // libassistant protos. It is a serialized proto of type + // speech.s3.TtsServiceRequest. + TtsServiceRequestBytes string `json:"ttsServiceRequestBytes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgentIds") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgentIds") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataFuntimeMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata: +// 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). +type AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata struct { + IsEnabled bool `json:"isEnabled,omitempty"` + + // RingtoneLabel: Label for the generated ringtone. + RingtoneLabel string `json:"ringtoneLabel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsEnabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsEnabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataGenMlAlarmMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo: +// Gentle wake actions like slowly brightening the room/device screen +// leading up to the alarm firing (go/cube-gentle-wake-up). +type AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo struct { + // EffectDurationMs: Specifies how long the effect lasts. Allowed for + // effect to last after the alarm has started ringing. If unset or + // negative or 0, effect is assumed to last until alarm trigger time. + EffectDurationMs int64 `json:"effectDurationMs,omitempty,string"` + + // IsEnabled: Indicates if gentle wake action is to be performed before + // this alarm fires. This is enabled only if the device supports sunrise + // alarm capability. + // http://cs/symbol:assistant.api.SunriseFeaturesSupport + IsEnabled bool `json:"isEnabled,omitempty"` + + // StartTimedeltaMs: Specifies how long before the alarm fire time, the + // wakeup effect will start. ALWAYS POSITIVE. + StartTimedeltaMs int64 `json:"startTimedeltaMs,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "EffectDurationMs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EffectDurationMs") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataGentleWakeInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata +// : 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. +type AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata struct { + // OnDeviceAlarmSound: Opal/UI layer will set this bit based on the user + // selection. + // + // Possible values: + // "DEFAULT" + // "MELLOW" + // "MODERN_TIMES" + // "BEAUTIFUL_MIND" + // "LITTLE_SUNSHINE" + // "TOUCH_OF_ZEN" + // "ABOUT_TIME" + // "RANDOM" + // "BOROBUDUR" + // "PEBBLES" + // "BRIGHT_MORNING" + // "ACROSS_THE_VALLEY" + // "MORNING_SONG" + // "KYOTO" + // "AWAKEN" + // "CUCKOO" + // "DIGITAL_BLAST" + // "ACOUSTIC_SUNLIGHT" + // "SUNRISE_BOSSA" + // "CALM_GLOW" + // "ANTIQUE_CLOCK" + // "JUST_BIRDS" + // "JUNGLE_AMBIENCE" + // "QUAINT_VILLAGE" + // "BUBBLY_BOSSA" + // "ACOUSTIC_JAM" + // "EUPHORIC" + OnDeviceAlarmSound string `json:"onDeviceAlarmSound,omitempty"` + + // OnDeviceAlarmSoundLabel: A string label to identify the alarm sound + // name. Opal/UI layer will set this as per product definition. This + // will be used to display the name of the selected ringtone. + OnDeviceAlarmSoundLabel string `json:"onDeviceAlarmSoundLabel,omitempty"` + + // TtsServiceRequestBytes: This is used to call S3 to realize the TTS. + // Is in the form of bytes because of a circular dependency issue in + // libassistant protos. It is a serialized proto of type + // speech.s3.TtsServiceRequest. This request will contain an ssml with + // the url to the ringtone files hosted on gstatic. + TtsServiceRequestBytes string `json:"ttsServiceRequestBytes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OnDeviceAlarmSound") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OnDeviceAlarmSound") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataOnDeviceAlarmMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata struct { + // RoutineId: The unique id for each routine. When the alrm is + // dismissed, it will trigger the routine of the routine alarm's creator + // if feasible. + RoutineId string `json:"routineId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RoutineId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RoutineId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesGovernedRingtoneTaskMetadataRoutineAlarmMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesHomeAppInfo: The Home app information of the +// provider. Next ID: 3 +type AssistantApiCoreTypesHomeAppInfo struct { + // LocalizedAppName: The localized app name. + LocalizedAppName string `json:"localizedAppName,omitempty"` + + // PackageName: Unique package name that identifies a Home app of the + // provider. + PackageName string `json:"packageName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LocalizedAppName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LocalizedAppName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesHomeAppInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesHomeAppInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesImage: An image represents the data about an +// image or a photo. IMPORTANT: The definition of the Image message is +// being moved to //assistant/api/core_types/governed/image_type.proto. +// All existing references will be updated to point to the new location. +// If you are adding a reference, use the new Image message instead of +// this one. LINT.IfChange NextId: 13 +type AssistantApiCoreTypesImage struct { + // AccessibilityText: A text description of the image to be used for + // accessibility, e.g. screen readers. + AccessibilityText string `json:"accessibilityText,omitempty"` + + // AppIconIdentifier: App identifier. This field is specific to mobile + // surfaces and stands for app package name for Android surface, and app + // bundle identifier for iOS. In case identifier is specified but + // invalid, some default icon will be used, e.g. + // PackageManager.getDefaultActivityIcon() for Android. If you want to + // show image for AGSA versions which don't support this field, you can + // specify source_url as backup. + AppIconIdentifier string `json:"appIconIdentifier,omitempty"` + + // BadgeImage: This is the image that is displayed as the badge on the + // main image. + BadgeImage *AssistantApiCoreTypesImage `json:"badgeImage,omitempty"` + + // Content: Content of the image in bytes. + Content string `json:"content,omitempty"` + + Height int64 `json:"height,omitempty"` + + // ImageSource: Indicate the data source where the image is fetched. + // + // Possible values: + // "UNKNOWN" - Unknown image source. + // "PLACEHOLDER" - Indicates this image is a default placeholder + // because no valid image is found. + // "VISUAL_DICT" - Indicates the image is fetched from Visual + // Dictionary. + // "LAVD" - Indicates the image is fetched from LAVD + // (visual-dictionary-license-aware-requirements). + // "VISUAL_DICT_DEFAULT_LOCALE" - Indicates the image is fetched from + // Visual Dictionary of default locale "en". + ImageSource string `json:"imageSource,omitempty"` + + // JsonContent: Content of image in form of JSON representation. + JsonContent string `json:"jsonContent,omitempty"` + + // LetterDrawableText: Text used to generate a letter drawable (a letter + // icon with color). It will be the default icon if the source_url is + // empty or cannot be rendered. + LetterDrawableText string `json:"letterDrawableText,omitempty"` + + // ProviderUrl: Url of the image provider, which is the website + // containing the image. For example, https://www.agentx.com. + ProviderUrl string `json:"providerUrl,omitempty"` + + // SourceUrl: The source url of the image. For example, + // https://www.agentx.com/logo.png + SourceUrl string `json:"sourceUrl,omitempty"` + + // SourceUrlType: Type of the source url. + // + // Possible values: + // "DEFAULT_URL_TYPE" + // "LOTTIE" - Json url used to drive animation on surfaces using + // Airbnb lottie library. + // "DUO_CLIENT" - Duo url specifying the Duo resource id to be used + // ('duo://'). WARNING: This may not be supported on all clients. At the + // moment, only Dragonglass surfaces are supporting this. + // "CONTACT_ID" - Contact ID specifying contact resource to be used. + SourceUrlType string `json:"sourceUrlType,omitempty"` + + // Width: The width and height of the image in pixels. + Width int64 `json:"width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccessibilityText") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccessibilityText") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesImage) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesImage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesInternalProviderInfo: 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. +type AssistantApiCoreTypesInternalProviderInfo struct { + // Type: Specifying which type of internal provider. + // + // Possible values: + // "UNKNOWN_INTERNAL_PROVIDER_TYPE" + // "AUDIO_PLAYER" - Deprecated, because supported AGSA implementation + // had a bug (b/72229328). Use AUDIO_PLAYER_V2 instead. + // "AUDIO_PLAYER_V2" - Internal provider for playing audio. + // "MEDIA_PLAYER" - Internal provider for playing audio and video for + // AGSA. + // "MEDIA_PLAYER_IOS" - iOS MEDIA_PLAYER. + // "AUDIO_ONLY_PLAYER" - Internal provider for playing audio only, + // different from MEDIA_PLAYER. It is used by KaiOS, for news vertical. + // It is different from AUDIO_PLAYER_V2 which is for AGSA, and not + // supported by news vertical. + // "NARRATED_WEB_MEDIA_PLAYER" - Internal provider for playing audio + // narration of web pages. + // "LIBASSISTANT_MEDIA_PLAYER" - Internal provider for playing audio + // for libassistant. Historically each enum represents a different media + // player implementation. This one is meant for the playing media on the + // libassistant enabled surfaces. + // "LENS_PLAYER" - Internal provider for playing audio using lens + // audio player, for screenshot based readout. + // "NEWS_PLAYER" - Internal provider for news vertical on + // AssistantMediaPlayer in AGSA. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesInternalProviderInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesInternalProviderInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesIosAppInfo: The iOS app information of the +// provider. Next ID: 4 +type AssistantApiCoreTypesIosAppInfo struct { + // BundleIdentifier: Bundle identifier that identifies an iOS app of the + // provider. + BundleIdentifier string `json:"bundleIdentifier,omitempty"` + + // LocalizedAppName: The localized app name. + LocalizedAppName string `json:"localizedAppName,omitempty"` + + // OpenAppUrl: A URL to open the provider's app. + OpenAppUrl string `json:"openAppUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BundleIdentifier") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BundleIdentifier") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesIosAppInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesIosAppInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesKaiOsAppInfo: The KaiOS app information of the +// provider. Next ID: 4 +type AssistantApiCoreTypesKaiOsAppInfo struct { + // LocalizedAppName: The localized app name. + LocalizedAppName string `json:"localizedAppName,omitempty"` + + // OpenAppUrl: A URL to open the provider's app. + OpenAppUrl string `json:"openAppUrl,omitempty"` + + // PackageName: Unique package name that identifies a KaiOS app of the + // provider. + PackageName string `json:"packageName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LocalizedAppName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LocalizedAppName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesKaiOsAppInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesKaiOsAppInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesLocationCoordinates: Geographic coordinate +// information for location. +type AssistantApiCoreTypesLocationCoordinates struct { + // AccuracyMeters: The accuracy of the coordinates in meters. + AccuracyMeters float64 `json:"accuracyMeters,omitempty"` + + // LatDegrees: Latitude degrees. + LatDegrees float64 `json:"latDegrees,omitempty"` + + // LngDegrees: Longitude degrees. + LngDegrees float64 `json:"lngDegrees,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccuracyMeters") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccuracyMeters") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesLocationCoordinates) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesLocationCoordinates + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AssistantApiCoreTypesLocationCoordinates) UnmarshalJSON(data []byte) error { + type NoMethod AssistantApiCoreTypesLocationCoordinates + var s1 struct { + AccuracyMeters gensupport.JSONFloat64 `json:"accuracyMeters"` + LatDegrees gensupport.JSONFloat64 `json:"latDegrees"` + LngDegrees gensupport.JSONFloat64 `json:"lngDegrees"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AccuracyMeters = float64(s1.AccuracyMeters) + s.LatDegrees = float64(s1.LatDegrees) + s.LngDegrees = float64(s1.LngDegrees) + return nil +} + +// AssistantApiCoreTypesMessageNotification: This proto captures the +// contents of a messaging app notification that is typically part of a +// conversation thread. Next Id: 20 +type AssistantApiCoreTypesMessageNotification struct { + // AppName: App name of the message notification, e.g. Hangouts. + AppName string `json:"appName,omitempty"` + + // BundleId: The key used to group this notification into a cluster. + BundleId string `json:"bundleId,omitempty"` + + // DataUri: Uri for the attachment (image, audio, video etc.). + DataUri string `json:"dataUri,omitempty"` + + // GroupName: Name of the group associated with the message + // notification. This field is set iff this is a group message. + GroupName string `json:"groupName,omitempty"` + + // GroupingKey: The group key of a proactive notification. Details in + // assistant.api.client_op.NotificationArgs.grouping_key. + GroupingKey string `json:"groupingKey,omitempty"` + + // Index: Index of the message notification. + Index int64 `json:"index,omitempty"` + + // MarkAsReadActionAvailable: Boolean indicating if the mark_as_read + // action is available for this message. + MarkAsReadActionAvailable bool `json:"markAsReadActionAvailable,omitempty"` + + // MessageLength: Length of the message/notification content in + // characters. Note: We can't send the full content because of privacy + // restriction, preventing sending client content to our backends. + // Concatenated message_length of all notification_entries. + MessageLength int64 `json:"messageLength,omitempty"` + + // Possible values: + // "UNKNOWN" + // "INDIVIDUAL" + // "GROUP" + MessageRecipientType string `json:"messageRecipientType,omitempty"` + + // MimeType: Mime type of the data_uri. e.g. 'audio/wav', 'video/mp4', + // 'image/png'. + MimeType string `json:"mimeType,omitempty"` + + NotificationEntries []*AssistantApiCoreTypesMessageNotificationNotificationEntry `json:"notificationEntries,omitempty"` + + // NotificationIconKey: On-device cache key for notification icon. + NotificationIconKey string `json:"notificationIconKey,omitempty"` + + // NotificationKey: String key of the notification. It is the key from + // original StatusBarNotification received from Android OS. It is used + // to identify the original notification to send a reply. + NotificationKey string `json:"notificationKey,omitempty"` + + // OpaqueToken: The opaque_token of a proactive notification. Details in + // assistant.api.client_op.NotificationArgs.opaque_token. + OpaqueToken string `json:"opaqueToken,omitempty"` + + // PackageName: App pkg of the message notification, e.g. + // "com.google.android.talk". + PackageName string `json:"packageName,omitempty"` + + // PostTime: Timestamp of the last notification's post time. + PostTime int64 `json:"postTime,omitempty,string"` + + // ReplyActionAvailable: Boolean indicating if the reply action is + // available for this message. + ReplyActionAvailable bool `json:"replyActionAvailable,omitempty"` + + Sender *AssistantApiCoreTypesMessageNotificationPerson `json:"sender,omitempty"` + + // SenderName: Sender's name of the message notification, e.g. Elsa. + // Last sender name in case of a group conversation. + SenderName string `json:"senderName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AppName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AppName") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesMessageNotification) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesMessageNotification + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesMessageNotificationNotificationEntry: Structure +// of each notification in the MessageNotification Bundle. Attribute +// sender_name could be different in case of group messages. Next Id: 6 +type AssistantApiCoreTypesMessageNotificationNotificationEntry struct { + // DataUri: Uri for the attachment (image, audio, video etc.). + DataUri string `json:"dataUri,omitempty"` + + // MessageBody: Content of the message body in the notification. + MessageBody string `json:"messageBody,omitempty"` + + // MimeType: Mime type of the data_uri. e.g. 'audio/wav', 'video/mp4', + // 'image/png'. + MimeType string `json:"mimeType,omitempty"` + + // PostTime: Timestamp of the notification's post time. + PostTime string `json:"postTime,omitempty"` + + // Sender: Sender of the message notification. + Sender *AssistantApiCoreTypesMessageNotificationPerson `json:"sender,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DataUri") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DataUri") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesMessageNotificationNotificationEntry) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesMessageNotificationNotificationEntry + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesMessageNotificationPerson: Mirrors part of +// https://developer.android.com/reference/android/app/Person Next Id: 4 +type AssistantApiCoreTypesMessageNotificationPerson struct { + IsImportant bool `json:"isImportant,omitempty"` + + Key string `json:"key,omitempty"` + + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsImportant") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsImportant") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesMessageNotificationPerson) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesMessageNotificationPerson + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesProvider: Provider. Like, Spotify or +// iHeartRadio. Next ID: 13 +type AssistantApiCoreTypesProvider struct { + // AndroidAppInfo: The android app information of the provider. + AndroidAppInfo *AssistantApiCoreTypesAndroidAppInfo `json:"androidAppInfo,omitempty"` + + // CastAppInfo: The cast app information of the provider. + CastAppInfo *AssistantApiCoreTypesCastAppInfo `json:"castAppInfo,omitempty"` + + // ChromeosAppInfo: The ChromeOS app information of the provider. + ChromeosAppInfo *AssistantApiCoreTypesChromeOsAppInfo `json:"chromeosAppInfo,omitempty"` + + // CloudProviderInfo: The third party provider information. + CloudProviderInfo *AssistantApiCoreTypesCloudProviderInfo `json:"cloudProviderInfo,omitempty"` + + // FallbackUrl: A URL to fallback to if app can not be opened. + FallbackUrl string `json:"fallbackUrl,omitempty"` + + HomeAppInfo *AssistantApiCoreTypesHomeAppInfo `json:"homeAppInfo,omitempty"` + + // IconImageUrl: Public URL pointing to an icon image for the provider. + // e.g. + // https://lh3.googleusercontent.com/UrY7BAZ-XfXGpfkeWg0zCCeo-7ras4DCoRalC_WXXWTK9q5b0Iw7B0YQMsVxZaNB7DM + IconImageUrl string `json:"iconImageUrl,omitempty"` + + // InternalProviderInfo: The internal assistant provider information. + InternalProviderInfo *AssistantApiCoreTypesInternalProviderInfo `json:"internalProviderInfo,omitempty"` + + // IosAppInfo: The iOS app information of the provider. + IosAppInfo *AssistantApiCoreTypesIosAppInfo `json:"iosAppInfo,omitempty"` + + // KaiosAppInfo: The KaiOS app information of the provider. + KaiosAppInfo *AssistantApiCoreTypesKaiOsAppInfo `json:"kaiosAppInfo,omitempty"` + + // SipProviderInfo: The sip information of the provider. + SipProviderInfo *AssistantApiCoreTypesSipProviderInfo `json:"sipProviderInfo,omitempty"` + + // WebProviderInfo: The web provider information. + WebProviderInfo *AssistantApiCoreTypesWebProviderInfo `json:"webProviderInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AndroidAppInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AndroidAppInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesProvider) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesProvider + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesProviderDelta: 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 +type AssistantApiCoreTypesProviderDelta struct { + // AndroidAppInfoDelta: The android app information of the provider. + AndroidAppInfoDelta *AssistantApiCoreTypesAndroidAppInfoDelta `json:"androidAppInfoDelta,omitempty"` + + // FallbackUrl: A URL to fallback to if app can not be opened. + FallbackUrl string `json:"fallbackUrl,omitempty"` + + // IconImageUrl: Public URL pointing to an icon image for the provider. + // e.g. + // https://lh3.googleusercontent.com/UrY7BAZ-XfXGpfkeWg0zCCeo-7ras4DCoRalC_WXXWTK9q5b0Iw7B0YQMsVxZaNB7DM + IconImageUrl string `json:"iconImageUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AndroidAppInfoDelta") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AndroidAppInfoDelta") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesProviderDelta) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesProviderDelta + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesSipProviderInfo: Session Initiation Protocol +// (SIP) information for providers that use SIP to initiate multimedia +// communication sessions, like Google Voice and Fi. +// https://en.wikipedia.org/wiki/Session_Initiation_Protocol +type AssistantApiCoreTypesSipProviderInfo struct { + // ProviderId: The providers id (MID) which is the primary identifier + // for a call provider within the Assistant. A MID, or machine + // identifier, is a unique identifier issued by Knowledge Graph for all + // entities contained in it's graph. + ProviderId string `json:"providerId,omitempty"` + + // Realm: Calling realm to be use for each call. i.e. For anonymous, + // this would be set to anonymous.chirp.google.com + Realm string `json:"realm,omitempty"` + + // UseBirdsongTacl: If true, client should use the Birdsong TaCL API for + // this call. Uses the VoiceCallManager API by default. For more + // details: go/birdsong-migration-google-home + UseBirdsongTacl bool `json:"useBirdsongTacl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ProviderId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ProviderId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesSipProviderInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesSipProviderInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesSurfaceIdentity: 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: 5 IMPORTANT: The definitions of the +// SurfaceIdentity and SurfaceVersion protos are being moved to +// //assistant/api/core_types/governed/surface_identity.proto All +// existing references will be updated to point to the new location. If +// you are adding a reference, use the new SurfaceIdentity and +// SurfaceVersion protos instead of the protos defined here. +// LINT.IfChange +type AssistantApiCoreTypesSurfaceIdentity struct { + // DeviceId: The identifier of the device. + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // SurfaceType: The device's surface type. The types are defined at + // google3/assistant/api/core_types/surfaces.gcl. NOTE: This is the new + // field that is going to replace the `surface_type_string` field above. + // For more details please refer to go/ontologicalize-surface-type. + // + // Possible values: + // "UNKNOWN_TYPE" - Unknown surface type. + // "ACCL" - Android conversation client library (go/accl) is an + // Android library which implements the Conversation Protocol that + // allows a surface to have conversations with the Assistant server. + // OWNERS: surfaces-infra-core@ + // "AGSA" - Android Google Search App (go/agsa). OWNERS: + // surfaces-infra-core@ + // "ANDROID" - Android. OWNERS: surfaces-infra-core@ + // "ANDROID_AUTO" - Assistant on Android Auto (go/ast-auto). OWNERS: + // opa-android-leads@ + // "ANDROID_LITE" - Assistant on Android Go (not part of AGSA). + // OWNERS: assistantgo-eng@ + // "ANDROID_PHONE" - Assistant on Android phones accessed through the + // Google App (velvet). This surface is formerly known as OPA_AGSA. + // OWNERS: opa-android-leads@ + // "ANDROID_SCREENLESS" - Assistant on Nexus with screen off/locked. + // Use go/bisto device to trigger. OWNERS: opa-android-leads@ + // "ANDROID_SMART_DISPLAY" - Assistant on Titan hub mode + // (go/titan-hubmode-surface). This is OPA Android first party Smart + // Display devices. The UI experience is built on Opal (Gallium and + // Flutter) and native Android. OWNERS: opa-android-leads@ + // "ANDROID_TABLET" - Assistant on Android tablet. OWNERS: + // opa-android-leads@ + // "ANDROID_THINGS" - Android Things (go/things). OWNERS: + // surfaces-infra-core@ + // "ANDROID_THINGS_CUBE" - Lenovo Smart Clock v1, a stationary smart + // display device with a 4-inch screen, targeted for bedroom/bedside use + // cases like alarm, sleep tracking. Based on Android Things. See + // go/cube-home. OWNERS: cube-eng@ + // "ANDROID_THINGS_JASPER" - Former codename for 3P 8-inch and 10-inch + // Smart Displays from Lenovo, JBL and LG, targeted for use in the + // kitchen. Based on Android Things. See go/jasper-home. OWNERS: + // jasper-eng@ + // "ANDROID_TV" - The Android platform that powers smart televisions, + // set-top-boxes, and over-the-top devices. See go/atv-eng and + // go/opa-tv. OWNERS: opa-tv-eng@ + // "ANDROID_WEAR" - Wear OS Assistant. OWNERS: wear-assistant-eng@ + // "ASSISTANT_KIT" - AssistantKit (go/assistantkit) is a collection of + // iOS libraries allowing first party apps to integrate Google Assistant + // features. OWNERS: assistantkit-eng@ + // "ASSISTANT_SDK" - Standalone libassistant speakers, such as Bose + // and Sonos. OWNERS: assistant-speaker-leads@ + // "AUTO" - Automobile. OWNERS: surfaces-infra-core@ + // "CAST_OS" - Cast OS (go/opal-castos-docs#what-is-castos). OWNERS: + // surfaces-infra-core@ + // "CHROME_OS" - Chrome OS (go/chromsos) OWNERS: surfaces-infra-core@ + // "CHROMECAST_MANHATTAN" - For chromecast with assistant + screen, + // e.g. Newman. OWNERS: cast-eng-platform@ + // "CLOUD_DEVICE" - Virtual device for event-based triggering, e.g. + // executing time scheduled routines: go/scheduled-routines. OWNERS: + // surfaces-infra-core@ + // "CROS" - Assistant on native Chrome OS (go/croissant). OWNERS: + // croissant@ + // "GOOGLE_HOME" - Google home speaker, i.e., Chirp devices. See + // go/assistant-speakers. OWNERS: assistant-speaker-leads@ + // "IOPA" - Assistant on iOS devices (go/opa-ios). OWNERS: + // opa-ios-eng@ + // "IOS" - iOS. OWNERS: surfaces-infra-core@ + // "IOS_SCREENLESS" - Assistant on iOS with screen off/locked. Use + // go/bisto device to trigger. OWNERS: bisto-team@ + // "IPAD" - iPad devices. OWNERS: surfaces-infra-core@ + // "IPHONE" - iPhone devices. OWNERS: surfaces-infra-core@ + // "KAI_OS" - Kai OS (go/kaios). OWNERS: surfaces-infra-core@ + // "KAI_OS_AMA" - Assistant on KaiOS (go/kaiosama). OWNERS: + // assistant-kaios-eng@ + // "LIBASSISTANT" - LibAssistant (go/libassistant) C++ SDK that powers + // Assistant experience on both 1P devices like Google Home and 3P + // devices like Sonos. OWNERS: libassistant-core@ + // "PHONE" - A phone. OWNERS: surfaces-infra-core@ + // "PIXEL" - Pixel devices. OWNERS: surfaces-infra-core@ + // "PIXEL5" - Pixel 5. OWNERS: surfaces-infra-core@ + // "PIXEL6" - Pixel 6. OWNERS: surfaces-infra-core@ + // "PIXEL7" - Pixel 7. OWNERS: surfaces-infra-core@ + // "SCREENLESS" - Devices with screen off or locked (go/bisto). + // OWNERS: surfaces-infra-core@ + // "SMART_DISPLAY" - Smart surface, such as Titan. OWNERS: + // surfaces-infra-core@ + // "SPEAKER" - A speaker. OWNERS: surfaces-infra-core@ + // "TABLET" - A tablet. OWNERS: surfaces-infra-core@ + // "TELEPHONE" - Assistant on a phone call (go/telephone). OWNERS: + // telephone-assistant-eng@ + // "THING" - IoT device. OWNERS: surfaces-infra-core@ + SurfaceType string `json:"surfaceType,omitempty"` + + // SurfaceTypeString: The device's surface type. This is the string + // version of the assistant.api.core_types.SurfaceType enum. The server + // should not use this field, rather it should use the SurfaceType value + // derived from this string. + SurfaceTypeString string `json:"surfaceTypeString,omitempty"` + + // SurfaceVersion: The version of the surface/client. This is different + // from the Conversation protocol version. + SurfaceVersion *AssistantApiCoreTypesSurfaceVersion `json:"surfaceVersion,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesSurfaceIdentity) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesSurfaceIdentity + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesSurfaceType: Specifies the types of device +// surfaces. LINT.IfChange When adding new surface types make sure that +// My Activity (https://myactivity.google.com/product/assistant) will +// correctly render by adding your enum to +// http://cs/symbol:GetAssistSurfaceName%20f:%5C.cc$ 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. +type AssistantApiCoreTypesSurfaceType struct { + // Possible values: + // "UNKNOWN" + // "ANDROID_ALLO" + // "ANDROID_AUTO" - Deprecated (never used). Use OPA_ANDROID_AUTO + // instead. + // "ANDROID_THINGS_CUBE" - Assistant on small screen stationary + // device. + // "ANDROID_THINGS_JASPER" + // "ANDROID_TV" + // "ANDROID_TV_KIDS" + // "ANDROID_WEAR" + // "AR_GLASSES" - Assistant on AR Glasses with both visual and audio + // experiences. Ask ar-assistant@ for details. + // "ASSISTANT_SDK" - For Assistant SDK gRPC client. + // "AUDIOWEAR" + // "BUBBLE_CHARACTERS_IOS" - go/assistant-lamda-overview-characters + // "CAPABILITY_BASED_SURFACE" - Surface for capability based testing. + // "CHROMECAST_ASSISTANT" - For chrome cast assistant web app. + // "CHROMECAST_MANHATTAN" - For chrome cast with assistant + screen + // (e.g., Google Nest Hub). + // "CHROMECAST_SEARCH" + // "CLOUD_DEVICE" - Virtual device for event-based triggering, e.g. + // executing time + // "COMPANION_SCREEN" - scheduled routines: go/routine-cloud-ex For + // Quartz. + // "DYNAMITE_WEB" + // "ENSEMBLE" + // "EYESFREE_AGSA" - Deprecated. Please use OPA_ANDROID_SCREENLESS. + // "EYESFREE_GMM" + // "GBOARD" - For Gboard app + // "GLASS" + // "GOOGLE_HOME" + // "HANGOUTS_CHATBOT" + // "IOS_ALLO" + // "IOS_GSA" + // "IOS_WEAR" + // "LIBASSISTANT" - For standalone libassistant devices. + // "LINE_CHATBOT" - LINE 3P messaging app + // "MULTIMODAL_AGSA" - Deprecated. + // "NON_ASSISTANT_SURFACE" - Surfaces that do not speak to the + // Assistant, i.e. web HQ + // "OPA_AGSA" - Assistant on Android phones accessed through the + // Google App (velvet). This represents neither all of the assistant on + // android phones (ANDROID_ALLO, VERILY_ONDUO, etc.) nor all of the + // assistant built on top of AGSA (ANDROID_WEAR, OPA_ANDROID_SCREENLESS, + // OPA_AGSA_CHROME_OS, etc.). + // "OPA_AGSA_CHROME_OS" - Deprecated. Please use OPA_CROS. + // "OPA_ANDROID_AUTO" + // "OPA_ANDROID_LITE" - This is OPA on Android Go (not part of AGSA) + // "OPA_ANDROID_SCREENLESS" - Assistant on Nexus with screen + // off/locked. Use go/bisto device to trigger. + // "OPA_ANDROID_SMART_DISPLAY" - Assistant on Titan hub mode + // (go/titan-hubmode-surface). This is OPA Android first party Smart + // Display devices. The UI experience is built on Opal (Gallium and + // Flutter) and native Android. + // "OPA_ANDROID_TABLET" - Assistant on Android tablet + // "OPA_CROS" - Assistant on native Chrome OS (go/croissant). + // "OPA_GACS" - For assistant on GACS devices (go/gacs-dd). Google + // Assistant Conversation Service (GACS) defines intents the device + // accepts. This surface serves the intents in the assistant response. + // "OPA_IOS" + // "OPA_IOS_SCREENLESS" - Assistant on iOS with screen off/locked. Use + // go/bisto device to trigger. + // "OPA_KAIOS" - Assistant on KaiOS. go/kaiosama + // "OPA_MOBILE_WEB" - Assistant on Mobile Web. go/opa-spidey + // "RTOS_PHONE" - Assistant on low-cost RTOS phones (go/conceRTOS). + // "SMS_CHATBOT" + // "TELEGRAM_CHATBOT" - Telegram 3P messaging app + // "TELEPHONE_ASSISTANT" - Assistant on a phone call (go/telephone). + // "VERILY_ONDUO" + // "YOUTUBE_APP" - A Youtube app. + // "AGSA_BISTO_FOR_EVAL" - Eval-only surfaces. These surfaces are not + // real surfaces. They are only used in intermediate steps of eval query + // and request generation: 1. Eval samplers (OPA query sampler and + // Cannery sampler) checks logs and temporarily assigns these surface + // types to the logs, to put Bisto, Lockhart Mic, ... queries in the + // correct query pools. 2. Request builders uses these surface types to + // determine how TaskRequest for Bisto, Lockhart Mic, ... should be + // built, like whether some user user agent should be used, whether some + // entry source should be set. The surface types in the generated + // TaskRequest is still the production surface types, like + // OPA_ANDROID_SCREENLESS or OPA_AGSA. Temp surface for Bisto Android + // eval. Will be merged with OPA_ANDROID_SCREENLESS in the future. + // "COGSWORTH_FOR_EVAL" + // "LOCKHART_MIC_FOR_EVAL" + // "OPA_ANDROID_AUTO_EMBEDDED_FAKE" - OPA_ANDROID_AUTO has another + // sub-surface (embedded) that differs in the reported capabilities, + // client-ops, flags but uses the same surface_type string of + // OPA_ANDROID_AUTO. This fake surface would allow running turing2 tests + // and evals for this embedded surface. Deprecated as of Feb 2019. + // Please use "OPA_ANDROID_AUTO_EMBEDDED" client type for tests and + // eval. See go/client-onboarding for more details. + // https://cs.corp.google.com/piper///depot/google3/assistant/assistant_server/tools/util/consts.h?l=32&rcl=247481455 + // "SPARK" - Unlaunched new surface prototype, ask spark-eng@. + // "WALLE" - Wall-E is an Area120 Project building assistant powered + // robots. The surface is an extended joplin which have same + // capabilities as a google home adding custom robot features. Currently + // in active development. Please reach out walle-software@ or bingxin@ + // for questions. For details see go/walle-as-pipeline-1-pager. + // "UNIT_TESTING" - Surface used for unit-testing purposes. Unit-tests + // might still require the existence of a "valid" SurfaceType to succeed + // (eg. initialization of the CapabilityBuilder, proto matching, etc.). + // With the move away from SurfaceType checks, a generic "TESTING" + // SurfaceType can be used for such tests without affecting the test + // behavior. Unlike the CAPABILITY_BASED_SURFACE, this proto does not + // have any capabilities or ResponseType tied to it. It should only be + // used for unit-tests and should not be exposed in the ASDebugger. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesSurfaceType) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesSurfaceType + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesSurfaceVersion: 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. +type AssistantApiCoreTypesSurfaceVersion struct { + Major int64 `json:"major,omitempty"` + + Minor int64 `json:"minor,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Major") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Major") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesSurfaceVersion) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesSurfaceVersion + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiCoreTypesWebProviderInfo: The web information of the +// provider. Next ID: 5 +type AssistantApiCoreTypesWebProviderInfo struct { + // HomeStorage: Serialized storage (context) persisted and retrieved for + // the app and home. + HomeStorage string `json:"homeStorage,omitempty"` + + // LocalizedAppName: The localized app name. + LocalizedAppName string `json:"localizedAppName,omitempty"` + + // OpenAppUrl: A URL to open the provider's app. + OpenAppUrl string `json:"openAppUrl,omitempty"` + + // ThirdPartyCustomNluInfo: Info about 3P Custom NLU used in this web + // provider. TODO(b/321644453) remove when QRewrite is able to call + // SERoot. + ThirdPartyCustomNluInfo *AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo `json:"thirdPartyCustomNluInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "HomeStorage") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HomeStorage") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesWebProviderInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesWebProviderInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo struct { + // Locale: 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. + Locale string `json:"locale,omitempty"` + + // NluAgentId: Unique internal identifier of 3P Custom NLU agent. UUID. + NluAgentId string `json:"nluAgentId,omitempty"` + + // NluAgentVersion: Identifies the 3P Custom NLU agent version. + NluAgentVersion int64 `json:"nluAgentVersion,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Locale") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Locale") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCoreTypesWebProviderInfoThirdPartyCustomNluInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiCrossDeviceExecutionCapability struct { + // LocalConnectivityEnabled: Whether the device has torus/usonia + // capabililities enabled or not. + LocalConnectivityEnabled bool `json:"localConnectivityEnabled,omitempty"` + + // RemoteCastMediaEnabled: 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. + RemoteCastMediaEnabled bool `json:"remoteCastMediaEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "LocalConnectivityEnabled") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LocalConnectivityEnabled") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiCrossDeviceExecutionCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiCrossDeviceExecutionCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiDate: A Gregorian calendar date. IMPORTANT: The +// definition of Date proto is being moved to +// //assistant/api/core_types/governed/datetime_type.proto. All existing +// references will be updated to point to the new location. If you are +// adding a reference, use the new one instead. +type AssistantApiDate struct { + // Day: The day, in 1...31. + Day int64 `json:"day,omitempty"` + + // Month: The month, in 1...12. + Month int64 `json:"month,omitempty"` + + // Year: The year, e.g. 2016. + Year int64 `json:"year,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Day") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Day") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiDate) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiDate + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiDateTime: A date-time specification, combining a date and +// civil time (relative to a given timezone). IMPORTANT: The definition +// of DateTime proto is being moved to +// //assistant/api/core_types/governed/datetime_type.proto. All existing +// references will be updated to point to the new location. If you are +// adding a reference, use the new one instead. +type AssistantApiDateTime struct { + // Date: A Gregorian calendar date. + Date *AssistantApiDate `json:"date,omitempty"` + + // TimeOfDay: A civil time relative to a timezone. + TimeOfDay *AssistantApiTimeOfDay `json:"timeOfDay,omitempty"` + + // TimeZone: A time zone in IANA format. + TimeZone *AssistantApiTimeZone `json:"timeZone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Date") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Date") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiDateTime) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiDateTime + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiDeviceCapabilities: 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: 32 +type AssistantApiDeviceCapabilities struct { + // AndroidIntentCapabilities: Capabilites related to Android intent + // support. + AndroidIntentCapabilities *AssistantApiAndroidIntentCapabilities `json:"androidIntentCapabilities,omitempty"` + + // AudioInput: These capabilities are scoped to the ability to gather + // audio. It includes information like the type of audio that can be + // gathered (e.g. public, private). + AudioInput *AssistantApiAudioInput `json:"audioInput,omitempty"` + + // AudioOutput: These capabilities are scoped to the ability to play + // audio. It includes information like the type of audio that can be + // played (e.g. public, private). + AudioOutput *AssistantApiAudioOutput `json:"audioOutput,omitempty"` + + // CallCapabilities: The call capabilities of this device. + // go/call-capabilities + CallCapabilities *AssistantApiCallCapabilities `json:"callCapabilities,omitempty"` + + // Camera: These capabilities are scoped to the camera abilities of this + // device. + Camera *AssistantApiCameraCapabilities `json:"camera,omitempty"` + + // Cast: These capabilities are scoped to the cast abilities of this + // device. + Cast *AssistantApiCastCapabilities `json:"cast,omitempty"` + + CommunicationUiCapabilities *AssistantApiCommunicationUiCapabilities `json:"communicationUiCapabilities,omitempty"` + + ContactLookupCapabilities *AssistantApiContactLookupCapabilities `json:"contactLookupCapabilities,omitempty"` + + // DeviceId: This is the same device id that is specified in the + // conversation protocol and should be unique to each device/user/model + // combination. For example, if a request is coming from a watch through + // AGSA the watch and AGSA should have different device_ids. Note: this + // field should only be used to determine which device the capabilities + // belong to and not to access the id of the device. Instead + // DeviceProperties should be used and accessed through ParamsAccessor. + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // DeviceUxMode: Capabilities related to Android tablet UX experience. + // + // Possible values: + // "DEVICE_UX_MODE_DEFAULT" + // "DEVICE_UX_MODE_SUPPORT_LIMITED_SHARED_LOCKSCREEN" - Device + // supports the Shared Lock Screen: a glanceable space that lets anyone + // in the house use shared apps and the Assistant, without unlocking the + // device. This is for devices which only support limited SLS, e.g. TKY. + DeviceUxMode string `json:"deviceUxMode,omitempty"` + + // HasVoiceTelephony: Indicates that the device has connection to + // cellular network that allows it to make voice calls. This is distinct + // from device just being capable of voice telephony, because the device + // can be capable yet miss the suitable SIM card (for example, it could + // miss SIM card altogether, or have data-only SIM card). + HasVoiceTelephony bool `json:"hasVoiceTelephony,omitempty"` + + // JwnCapabilities: Indicates if the client supports Javascript + // Whatsnext (go/jwn). Also contains the Jwn libraries present on the + // client along with their versions. + JwnCapabilities *AssistantApiJwnCapabilities `json:"jwnCapabilities,omitempty"` + + // LensPerceptionCapabilities: Capabilities related to Lens Perception, + // i.e. image understanding. See go/lens-perception-sdk. + LensPerceptionCapabilities *AssistantApiLensPerceptionCapabilities `json:"lensPerceptionCapabilities,omitempty"` + + // Location: These capabilities are scoped to the location abilities of + // this device. + Location *AssistantApiLocationCapabilities `json:"location,omitempty"` + + // LoggingOnlyData: Data which is produced for logging and debugging. + // Servers MUST NOT use this for any other purposes, such as branching + // on it. + LoggingOnlyData *AssistantApiLoggingOnlyData `json:"loggingOnlyData,omitempty"` + + MessageCapabilities *AssistantApiMessageCapabilities `json:"messageCapabilities,omitempty"` + + // Movement: These capabilities are scoped to abilities of the device to + // move around. + Movement *AssistantApiMovementCapabilities `json:"movement,omitempty"` + + // NotificationCapabilities: DEPRECATED: Use + // SystemNotificationRestrictions instead. Specifies whether the surface + // is able to display notifications. This field is superficially similar + // to ProactiveNotificationOutput, but unlike that field which tracks a + // per-user preference on the OPA side, this field captures whether the + // surface is capable of displaying notifications. + // + // Possible values: + // "NO_NOTIFICATION_CAPABILITY" - The surface is not able to display + // notifications. + // "NOTIFICATIONS_DISABLED" - The notifications are disabled on the + // surface. + // "NOTIFICATIONS_ENABLED" - The notifications are enabled. + NotificationCapabilities string `json:"notificationCapabilities,omitempty"` + + // NotificationOutputRestrictions: Settings, that reflect whether a + // specific notification type is allowed for current device, e.g. if the + // user opted out from notification category or category group. This + // settings are server-side stored and evaluated unlike + // SystemNotificationRestrictions field. + NotificationOutputRestrictions *AssistantApiNotificationOutputRestrictions `json:"notificationOutputRestrictions,omitempty"` + + // OutputRestrictions: These are user configured restrictions indicating + // what the device is allowed to output from the privacy point of view. + OutputRestrictions *AssistantApiOutputRestrictions `json:"outputRestrictions,omitempty"` + + // SafetyRestrictions: Indicates if the client has safety related + // restriction. + // + // Possible values: + // "DEFAULT_NO_SAFETY_RESTRICTION" - The surface has no safety + // restriction. + // "DISTRACTION_SAFETY_RESTRICTION" - The surface has safety + // restriction due to any distraction. + SafetyRestrictions string `json:"safetyRestrictions,omitempty"` + + // Screen: These capabilities are scoped to the ability to see and + // interact with the Assistant through a screen. If the device has no + // screen it should send an empty ScreenCapabilities. Sending no + // ScreenCapabilities will cause this to be overridden with the surface + // default. + Screen *AssistantApiScreenCapabilities `json:"screen,omitempty"` + + // SodaCapabilities: Capabilities related to SODA (Speech On-Device + // API). + SodaCapabilities *AssistantApiSodaCapabilities `json:"sodaCapabilities,omitempty"` + + // Software: These capabilities are scoped to the software available on + // the device as well as the set of supported Assistant features. + Software *AssistantApiSoftwareCapabilities `json:"software,omitempty"` + + // SpeechCapabilities: DEPRECATED Capabilities related to speech + // detection on devices. + SpeechCapabilities *AssistantApiSpeechCapabilities `json:"speechCapabilities,omitempty"` + + // SupportedLocale: Locales supported by assistant settings for speaking + // and display. This is independent from device language that is defined + // in device setting. New locales are added based on rollout, whitelist + // and app version releases because older versions does not have model + // support. Currently supported locale list differs by surface type. + SupportedLocale []string `json:"supportedLocale,omitempty"` + + // SurfaceIdentity: The set of information that helps the server + // identify the surface. + SurfaceIdentity *AssistantApiCoreTypesSurfaceIdentity `json:"surfaceIdentity,omitempty"` + + // SurfaceTypeString: The device's surface type. This is the string + // version of the assistant.api.core_types.SurfaceType enum. The server + // should not use this field, rather it should use the SurfaceType value + // derived from this string. + SurfaceTypeString string `json:"surfaceTypeString,omitempty"` + + // SystemNotificationRestrictions: Restrictions related to system-level + // notifications. This field is superficially similar to + // ProactiveNotificationOutput, but unlike that field which tracks a + // per-user preference on the OPA side, this field captures system level + // notifications restrictions. This field is not stored and is merged to + // capablities from conversation params. It exists mostly for logging + // purposes of android channel state and global app-level notification + // opt out. + SystemNotificationRestrictions *AssistantApiSystemNotificationRestrictions `json:"systemNotificationRestrictions,omitempty"` + + // ThirdPartyCapabilities: Capabilities related to third party + // integration. + ThirdPartyCapabilities *AssistantApiThirdPartyCapabilities `json:"thirdPartyCapabilities,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AndroidIntentCapabilities") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AndroidIntentCapabilities") to include in API requests with the JSON + // null value. By default, fields with empty values are omitted from API + // requests. However, any field with an empty value appearing in + // NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiDeviceCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiDeviceCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiDuration: 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. +type AssistantApiDuration struct { + // Nanos: Signed fractions of a second at nanosecond resolution of the + // span of time. Durations less than one second are represented with a 0 + // `seconds` field and a positive or negative `nanos` field. For + // durations of one second or more, a non-zero value for the `nanos` + // field must be of the same sign as the `seconds` field. Must be from + // -999,999,999 to +999,999,999 inclusive. + Nanos int64 `json:"nanos,omitempty"` + + // Seconds: Signed seconds of the span of time. Must be from + // -315,576,000,000 to +315,576,000,000 inclusive. + Seconds int64 `json:"seconds,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Nanos") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Nanos") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiDuration) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiDuration + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiFeatureSpecificActionSupport struct { + // ClarificationDataSupported: Whether client supports clarification + // suggestion chip to be displayed see + // |assistant.suggestions.ClarificationData| + ClarificationDataSupported bool `json:"clarificationDataSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ClarificationDataSupported") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "ClarificationDataSupported") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiFeatureSpecificActionSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiFeatureSpecificActionSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiFitnessFeatureSupport struct { + // SupportedActivities: A list of fitness activity types supported by + // this client. + // + // Possible values: + // "TYPE_UNSPECIFIED" - The type is unknown. + // "WALK" - Represents a walking activity type. + // "RUN" - Represents a running activity type. + // "ELLIPTICAL" - Represents an elliptical activity type. + // "SWIM" - Represents a swimming activity type. + // "WEIGHTS" - Represents a weightlifting activity type. + // "TREADMILL" - Represents a treadmill activity type (e.g. + // walking/running on a treadmill). + // "BIKE" - Represents a cycling activity type. + // "YOGA" - Represents a yoga activity type. + // "WORKOUT" - Represents a generic workout activity. + // "BOOT_CAMP" - Represents a bootcamp activity type. + // "CIRCUIT_TRAINING" - Represents a circuit training activity type. + // "GOLF" - Represents a golf activity type. + // "HIKING" - Represents a hiking activity type. + // "INTERVAL_TRAINING" - Represents an interval training activity + // type. + // "KICKBOXING" - Represents a kickboxing activity type. + // "MARTIAL_ARTS" - Represents a martial arts activity type. + // "PILATES" - Represents a pilates activity type. + // "SPINNING" - Represents a spinning(indoor cycling, stationary + // biking) activity type. + // "STAIR_CLIMBING" - Represents a stair climbing activity type. + // "TENNIS" - Represents a tennis activity type. + // "AEROBICS" - Represents an aerobics activity type. + // "CORE_TRAINING" - Represents a core training activity type. + // "DANCING" - Represents a dancing activity type. + // "HIGH_INTENSITY_INTERVAL_TRAINING" - Represents a HIIT activity + // type. + // "KAYAKING" - Represents a kayaking activity type. + // "ROWING" - Represents a rowing activity type. + // "SKIING" - Represents a skiing activity type. + // "STANDUP_PADDLEBOARDING" - Represents a standup paddleboading(SUP) + // activity type. + // "STRENGTH_TRAINING" - Represents a strength training activity type. + // "SNOWBOARDING" - Represents a snowboarding activity type. + SupportedActivities []string `json:"supportedActivities,omitempty"` + + // ForceSendFields is a list of field names (e.g. "SupportedActivities") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SupportedActivities") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiFitnessFeatureSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiFitnessFeatureSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiFluidActionsSupport struct { + // StateSyncMethod: Specifies the params proto that Fluid Actions uses + // to sync state with server. + // + // Possible values: + // "STATE_SYNC_METHOD_UNSPECIFIED" - Unspecified state sync method. + // "DIALOG_STATE_PARAMS" - New params proto used to sync state between + // client and server. New clients must use this value. For proto + // details, see: + // http://google3/assistant/api/params/dialog_state_params.proto + StateSyncMethod string `json:"stateSyncMethod,omitempty"` + + // ForceSendFields is a list of field names (e.g. "StateSyncMethod") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "StateSyncMethod") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiFluidActionsSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiFluidActionsSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiGacsCapabilities: Capabilities of Google assistant +// conversation service(GACS) devices. These capabilites including +// supported GACS actions and response size limitations. +type AssistantApiGacsCapabilities struct { + // DeviceId: DeviceId of the accessory device (eg. watch) Commonly the + // go/dusi (eg. client_instance_id) is provided. + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // ResponseConfig: Configuration sent by device. + ResponseConfig *GoogleAssistantAccessoryV1ResponseConfig `json:"responseConfig,omitempty"` + + // TtsEncoding: DEPRECATED: Format of TTS audio requested by the device. + // + // Possible values: + // "LINEAR_16BIT" - Signed 16-bit little-endian (a.k.a s16le) linear + // PCM. + // "MULAW" - G.711 audio companding. + // https://en.wikipedia.org/wiki/G.711 8-bit μ-law encoding according + // to G.711 + // "ALAW" - 8-bit A-law encoding according to G.711. + // "MP3" - The default MP3 encoding is 32kbps. Text-to-speech audio at + // this bit rate has audible compression artifacts and is not + // recommended. Please use OPUS_IN_OGG instead. + // "MP3_64KBPS" - MP3 at 64kbps sounds nearly identical to + // uncompressed for 24kHz TTS audio, and sounds similar to OPUS_IN_OGG. + // "SPEEX" - Raw speex stream with each frame concatenated together. + // The size of each frame will need to be communciated separately. + // Variable bitrate encoding is unsupported using this output type. + // "SPEEX_WITH_HEADER_BYTE" - Similar to SPEEX, this mode will + // concatenate together the speex frames. However, each frame will have + // prepended a single byte that describes the length of the following + // frame. + // "SPEEX_IN_OGG" - In this case, we'll wrap the speex contents in an + // ogg container, resulting in a more generally decode-able format but + // one with more storage overhead. + // "OPUS_IN_OGG" - Opus encoded audio wrapped in an ogg container. The + // result will be a file which can be played natively on Android, and in + // browsers (at least Chrome and Firefox). The quality of the encoding + // is considerably higher than MP3 when using the same bitrate. At the + // moment, this defaults to 32kbps but the TTS team reserves the right + // to adjust the bitrate to provide the best experience. + // "OPUS_24KBPS_IN_OGG" - Opus encoded audio in 24kbps wrapped in an + // ogg container. The result will be a file which can be played natively + // on Android, and in browsers while reducing data consumption slightly. + // "OPUS_16KBPS_IN_OGG" - The following bitrates for Opus below 24kbps + // are here only for special usecases; they result in a significant + // reduction in quality. Please get in touch with the TTS team if you + // think you might have a valid usecase. NOTE(staz): These bitrates are + // not officially supported. TTS is to be served at a minimum of 24kbps + // everywhere, including in NBU countries. See b/137234032#comment13 on + // why lower bitrates don't help in tangible ways even in NBU markets. + // "OPUS_12KBPS_IN_OGG" + // "OPUS_16KBPS_CONTAINERLESS" - Opus encoded audio using the + // specified bitrate without a container such as Ogg, RTP or WebM. The + // response is a stream which can be played natively on low powered + // wearable devices. Delivered as multiple frames per S3 response. These + // frames need to be carefully byte-delimited (constant bitrate) by the + // client. They use a statically defined frame duration of 20ms. Frame + // size per bit-rate: 16kbps: each frame is of size 40 bytes 24kbps: + // each frame is of size 60 bytes 32kbps: each frame is of size 80 bytes + // "OPUS_24KBPS_CONTAINERLESS" + // "OPUS_32KBPS_CONTAINERLESS" + TtsEncoding string `json:"ttsEncoding,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiGacsCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiGacsCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiGcmCapabilities: Capabilities related to GCM. +type AssistantApiGcmCapabilities struct { + // GcmRegistrationId: GCM registration id for the device. Used to pass + // messages to the device. + GcmRegistrationId string `json:"gcmRegistrationId,omitempty"` + + // SupportsAssistantGcm: Assistant supports GCM on the device. ClientOps + // can be sent to it over GCM and will be executed. + SupportsAssistantGcm bool `json:"supportsAssistantGcm,omitempty"` + + // SupportsClientInputOverGcm: If it is set to true, then it indicates + // to server that device is capable of receiving a GCM payload with + // serialized client input. The client input will be sent back to + // Assistant Server over conversation protocol. + SupportsClientInputOverGcm bool `json:"supportsClientInputOverGcm,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GcmRegistrationId") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GcmRegistrationId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiGcmCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiGcmCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiGestureCapabilities: The gesture capabilities related to +// Selina. Next ID: 4 +type AssistantApiGestureCapabilities struct { + // GestureSensing: Whether Gesture is supported. When false, override + // the value for tap and omniswipe. + GestureSensing bool `json:"gestureSensing,omitempty"` + + // OmniswipeGestureCapable: Whether omniswipe is supported + OmniswipeGestureCapable bool `json:"omniswipeGestureCapable,omitempty"` + + // TapGestureCapable: Whether tap is supported + TapGestureCapable bool `json:"tapGestureCapable,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GestureSensing") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GestureSensing") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiGestureCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiGestureCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiGuestAccessOutput: DEPRECATED: Use AccessControlOutput +// instead. Access settings for guests. +type AssistantApiGuestAccessOutput struct { + // Possible values: + // "UNKNOWN_GUEST_ACCESS" + // "USE_DEFAULT_ACCOUNT_FOR_GUEST" - Guests can access content using + // linked users' account. + // "DISABLED_FOR_GUEST" - No access for guests. + GuestAccessOnYoutube string `json:"guestAccessOnYoutube,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "GuestAccessOnYoutube") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GuestAccessOnYoutube") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiGuestAccessOutput) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiGuestAccessOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiImmersiveCanvasSupport struct { + // ConfirmationMessageSupported: Whether the client supports + // confirmation messages in Immersive Canvas actions. + ConfirmationMessageSupported bool `json:"confirmationMessageSupported,omitempty"` + + // PauseSignalSupported: Whether the client support canvas pause signal. + // If true, the Assistant Server will send a signal when canvas + // transitioning to pause mode. + PauseSignalSupported bool `json:"pauseSignalSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ConfirmationMessageSupported") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "ConfirmationMessageSupported") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiImmersiveCanvasSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiImmersiveCanvasSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiJwnCapabilities: These capabilities are used to determine +// the jwn libraries and their versions that are present on the client. +type AssistantApiJwnCapabilities struct { + // LibrariesVersionMap: The name and version of the jwn libraries + // currently stored on the client. These are the same that the server + // communicated when the library was first sent down. + LibrariesVersionMap map[string]string `json:"librariesVersionMap,omitempty"` + + // SupportedCompressionMode: Compression algorithms supported on the + // client. Server can choose one of these to compress WhatsNext + // Javascript programs and libraries. + // + // Possible values: + // "NONE" - jwn_program is not in compressed state. + // "BROTLI" - Brotli (google3/third_party/brotli) compression used. + // Recommended compressor for Javascript. + // "FLATE" - Flate (google3/util/compression/flate) compression used. + SupportedCompressionMode []string `json:"supportedCompressionMode,omitempty"` + + // SupportsJwn: Whether the client supports running jwn code. + SupportsJwn bool `json:"supportsJwn,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LibrariesVersionMap") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LibrariesVersionMap") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiJwnCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiJwnCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiLensPerceptionCapabilities: Capabilities related to Lens +// Perception, i.e. image understanding. See +// go/loa-lens-device-capabilities. Next ID: 6 +type AssistantApiLensPerceptionCapabilities struct { + // HasLensPerception: Whether the device supports Lens Perception. + HasLensPerception bool `json:"hasLensPerception,omitempty"` + + // IsLensDirectIntentAvailable: Indicates whether Lens supports Lens + // Direct Intent (go/lensdirectintent). + IsLensDirectIntentAvailable bool `json:"isLensDirectIntentAvailable,omitempty"` + + // IsLensLiveViewfinderAvailable: Indicates whether Lens supports Live + // view-finder experience. + IsLensLiveViewfinderAvailable bool `json:"isLensLiveViewfinderAvailable,omitempty"` + + // IsLensPostCaptureAvailable: Indicates whether Lens supports + // Post-capture experience with an image payload. + IsLensPostCaptureAvailable bool `json:"isLensPostCaptureAvailable,omitempty"` + + // LensCapabilities: Contains the capabilities that Lens can support. + LensCapabilities *AssistantApiLensPerceptionCapabilitiesLensCapabilities `json:"lensCapabilities,omitempty"` + + // ForceSendFields is a list of field names (e.g. "HasLensPerception") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HasLensPerception") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLensPerceptionCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLensPerceptionCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiLensPerceptionCapabilitiesLensCapabilities: 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 +type AssistantApiLensPerceptionCapabilitiesLensCapabilities struct { + // Dining: The presence of this message means that Dining is supported. + Dining *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining `json:"dining,omitempty"` + + // Education: The presence of this message means that Education is + // supported. + Education *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation `json:"education,omitempty"` + + // Outdoor: The presence of this message means that Outdoor is + // supported. + Outdoor *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor `json:"outdoor,omitempty"` + + // Shopping: The presence of this message means that Shopping is + // supported. + Shopping *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping `json:"shopping,omitempty"` + + // Text: The presence of this message means that intenting directly into + // the text filter is supported. + Text *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText `json:"text,omitempty"` + + // Translate: The presence of this message means that Translation is + // supported. + Translate *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate `json:"translate,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dining") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dining") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLensPerceptionCapabilitiesLensCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLensPerceptionCapabilitiesLensCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining: Dining +// recognition capability. For example popular dishes on a given +// restaurant menu image. +type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesDining struct { +} + +// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation: +// Education recognition capability. +type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesEducation struct { +} + +// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor: +// Outdoor place recognition capability. For example recognizing +// storefronts. +type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesOutdoor struct { +} + +// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping: +// Shopping recognition capability. +type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesShopping struct { +} + +// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText: Text +// recognition capability. +type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText struct { + // IsTextToSpeechSupported: Indicates whether text-to-speech is + // supported. + IsTextToSpeechSupported bool `json:"isTextToSpeechSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "IsTextToSpeechSupported") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsTextToSpeechSupported") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLensPerceptionCapabilitiesLensCapabilitiesText + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate: +// Translation capability. +type AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate struct { + // SupportedLanguageTags: The list of language IETF BCP 47 tags that are + // supported. See the full list at go/androidlanguages. + SupportedLanguageTags []string `json:"supportedLanguageTags,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SupportedLanguageTags") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SupportedLanguageTags") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLensPerceptionCapabilitiesLensCapabilitiesTranslate + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiLiveTvChannelCapabilities struct { + // ChannelsByProvider: A list of channel providers each of which + // provides a list of its channels. + ChannelsByProvider []*AssistantApiLiveTvChannelCapabilitiesChannelsByProvider `json:"channelsByProvider,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChannelsByProvider") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChannelsByProvider") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLiveTvChannelCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLiveTvChannelCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiLiveTvChannelCapabilitiesChannelsByProvider struct { + // Channels: 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. + Channels []*AssistantApiLiveTvChannelCapabilitiesLiveTvChannel `json:"channels,omitempty"` + + // InputId: 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 https://source.android.com/devices/tv + InputId string `json:"inputId,omitempty"` + + // ProviderType: Type of provider who provides this channel input. + // + // Possible values: + // "UNKNOWN_PROVIDER_TYPE" + // "OTT_PROVIDER" - OTT providers providing live tv contents like + // Sling, Youtube TV. + // "TUNER" - TV Tuner apps providing live tv contents. + ProviderType string `json:"providerType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Channels") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Channels") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLiveTvChannelCapabilitiesChannelsByProvider) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLiveTvChannelCapabilitiesChannelsByProvider + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiLiveTvChannelCapabilitiesLiveTvChannel struct { + // ChannelId: Unique channel identifier. + ChannelId string `json:"channelId,omitempty"` + + // ChannelName: A list of channel names and synonyms. + ChannelName []string `json:"channelName,omitempty"` + + // ChannelNumber: Channel number displayed to user. Optional. + ChannelNumber string `json:"channelNumber,omitempty"` + + // Deeplink: A deep link into the Live player app that tunes to this + // channel. + Deeplink string `json:"deeplink,omitempty"` + + // Mid: KG mid of the channel if it exists in KG. + Mid string `json:"mid,omitempty"` + + // NetworkMid: Network KG mid of the channel if it exists in KG + NetworkMid string `json:"networkMid,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChannelId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChannelId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLiveTvChannelCapabilitiesLiveTvChannel) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLiveTvChannelCapabilitiesLiveTvChannel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiLiveTvProvider struct { + // ProviderInfo: Contains detailed provider information such as android + // app package name. + ProviderInfo *AssistantApiCoreTypesProvider `json:"providerInfo,omitempty"` + + // ProviderKey: An 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 + // https://source.android.com/devices/tv + ProviderKey string `json:"providerKey,omitempty"` + + // Possible values: + // "UNKNOWN_PROVIDER_TYPE" + // "OTT_PROVIDER" - OTT providers providing live tv contents like + // Sling, Youtube TV. + // "TUNER" - TV Tuner apps providing live tv contents. + ProviderType string `json:"providerType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ProviderInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ProviderInfo") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLiveTvProvider) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLiveTvProvider + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiLocationCapabilities struct { + GpsAvailable bool `json:"gpsAvailable,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GpsAvailable") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GpsAvailable") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLocationCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLocationCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiLoggingOnlyData: Data which is produced for logging and +// debugging. Servers MUST NOT use this for any other purposes, such as +// branching on it. +type AssistantApiLoggingOnlyData struct { + // AcpVersion: A user-readable string describing the ACP version + // (go/acp-version) of the client app used by the user to originate the + // conversation. + AcpVersion string `json:"acpVersion,omitempty"` + + // AppVersion: A user-readable string describing the version of the + // client app used by the user to originate the conversation. + AppVersion string `json:"appVersion,omitempty"` + + // AssistantSettingsSource: An enum specifying when was this ATV + // AssistantSettings entry initially created. + // + // Possible values: + // "NOT_SET" - LINT.IfChange + // "FIRST_SCREEN_DEVICE_OOBE" - Created during ATV Device + // OOBE(setupwraith) + // "FIRST_SCREEN_KATNISS_OOBE" - Created within Katniss(Assistant + // client on TV) + // "FIRST_SCREEN_DELEGATION_OOBE" - Created within Katniss delegation + // path + // "FIRST_SCREEN_FIXER_JOB" - Created by fix settings job in katniss. + // "FIRST_SCREEN_FCM_JOB" - Created by FCM jobs in katnisss. + // "FIRST_SCREEN_HOME_GRAPH_JOB" - Created by home graph jobs in + // katniss. + // "FIRST_SCREEN_PERSONAL_BIT" - Created by enable personal bit button + // in Settings UI + // "FIRST_SCREEN_VOICE_INPUT_BIT" - Created by enable voice input bit + // button in Settings UI + // "FIRST_SCREEN_OTHER" - Created by other parts in katniss + // "SECOND_SCREEN_AGSA" - Created by AGSA + // "SECOND_SCREEN_GHA_IOS" - Created by Google Home App IOS + // "SECOND_SCREEN_GHA_ANDROID" - Created by Google Home App Android + // LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log. + // proto) + AssistantSettingsSource string `json:"assistantSettingsSource,omitempty"` + + // BoardName: The type of board used by manufacturer for this device + BoardName string `json:"boardName,omitempty"` + + // BoardRevision: The revision of board used + BoardRevision string `json:"boardRevision,omitempty"` + + // CastAssistantSettingLinkingResult: This field records the linking + // status between Assistant setting entry and Cast setting entry. + // Currently only ATV surface populates this field for profiling + // purpose. + CastAssistantSettingLinkingResult *AssistantApiCastAssistantSettingLinkingResult `json:"castAssistantSettingLinkingResult,omitempty"` + + // DeviceModel: A user-readable string describing the device's hardware + // platform. + DeviceModel string `json:"deviceModel,omitempty"` + + // EmbedderBuildInfo: Any relevant info concerning the build options of + // the embedder (that is the software which runs as the 'driver' of an + // Assistant library, such as libassistant. the embedder is typically + // built by a third party) + EmbedderBuildInfo string `json:"embedderBuildInfo,omitempty"` + + // InitialAppVersion: A string recording the app version that is + // initially used to created this settings entry. + InitialAppVersion string `json:"initialAppVersion,omitempty"` + + // MdnsDisplayName: default display name of device over mdns. This is + // specified at the factory, not specified by the user. + MdnsDisplayName string `json:"mdnsDisplayName,omitempty"` + + // PlatformBuild: A user-readable string describing the device's + // software platform. + PlatformBuild string `json:"platformBuild,omitempty"` + + // VirtualReleaseChannel: A string describing device's release channel. + // For cast devices, the string will look like "qa-beta-channel", + // "eng-no-update", etc. + VirtualReleaseChannel string `json:"virtualReleaseChannel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AcpVersion") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AcpVersion") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiLoggingOnlyData) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiLoggingOnlyData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiMediaControlSupport struct { + // SkipConfirmationsWhilePlaying: Whether to prevent confirmations + // (text, tts) for media control actions while media is playing so that + // the media session is not interrupted. + SkipConfirmationsWhilePlaying bool `json:"skipConfirmationsWhilePlaying,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SkipConfirmationsWhilePlaying") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "SkipConfirmationsWhilePlaying") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiMediaControlSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiMediaControlSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiMessageCapabilities struct { + // FallbackToTetheredDeviceAppCapabilities: 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). + FallbackToTetheredDeviceAppCapabilities bool `json:"fallbackToTetheredDeviceAppCapabilities,omitempty"` + + // SupportedRecipientTypes: Should only be checked if nonempty. + // + // Possible values: + // "UNSPECIFIED_ENDPOINT" + // "PHONE_NUMBER" + // "EMAIL_ADDRESS" + // "APP_UNIQUE_ID" + // "EMERGENCY_PHONE_NUMBER" + // "VOICEMAIL" + SupportedRecipientTypes []string `json:"supportedRecipientTypes,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "FallbackToTetheredDeviceAppCapabilities") to unconditionally include + // in API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "FallbackToTetheredDeviceAppCapabilities") to include in API requests + // with the JSON null value. By default, fields with empty values are + // omitted from API requests. However, any field with an empty value + // appearing in NullFields will be sent to the server as null. It is an + // error if a field in this list has a non-empty value. This may be used + // to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiMessageCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiMessageCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiMovementCapabilities struct { + // Mobility: Indicates how much the device moves around. E.g., TV has a + // low mobility level, while Auto has a very high level. + // + // Possible values: + // "UNSPECIFIED" + // "LOW" + // "MEDIUM" + // "HIGH" + // "VERY_HIGH" + Mobility string `json:"mobility,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Mobility") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Mobility") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiMovementCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiMovementCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiNotificationOutputRestrictions struct { + OptOutState *AssistantApiNotificationOutputRestrictionsOptOutState `json:"optOutState,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OptOutState") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OptOutState") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiNotificationOutputRestrictions) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiNotificationOutputRestrictions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiNotificationOutputRestrictionsOptOutState: Per +// category/category group notification opt out settings. +type AssistantApiNotificationOutputRestrictionsOptOutState struct { + CategoryGroupState []*AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState `json:"categoryGroupState,omitempty"` + + CategoryState []*AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState `json:"categoryState,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CategoryGroupState") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CategoryGroupState") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiNotificationOutputRestrictionsOptOutState) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiNotificationOutputRestrictionsOptOutState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState struct { + // Possible values: + // "UNSPECIFIED" + // "SYSTEM" - This is required, do not remove. Group for notification + // categories that should not be displayed at all. + // "PROMOTIONAL" - Promotional notifications. + // "SUBSCRIPTIONS" - Notifications for Subscriptions. + // "PROACTIVE" - Proactive notifications + // "REMINDERS" - Reminders (including assigned reminders). + // "EXTENDED_ANSWERS" - Cross surface answers. + // "FEEDBACK" - Assistant asking for feedback from users. + // "ACTIONS_ON_GOOGLE" - AoG 3P notifications. + // "DUO_MISSED_CALLS" - Missed call notifications from DUO. + // "HOME_AUTOMATION" - Home Automation notifications. + // "GETTING_AROUND" - Getting around notifications. + // "UNIT_TESTING" - Always keep at the end. + CategoryGroup string `json:"categoryGroup,omitempty"` + + // Possible values: + // "OPTED_IN" - Default value is intentionally set to opted in as all + // categories/category groups are enabled by default. + // "OPTED_OUT" + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CategoryGroup") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CategoryGroup") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiNotificationOutputRestrictionsOptOutStateCategoryGroupState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState struct { + // Possible values: + // "UNSPECIFIED" + // "SYSTEM_REQUIRED_LOW_PRIORITY" - Categories required by Assistant & + // won't be shown on settings page. + // "SYSTEM_REQUIRED_HIGH_PRIORITY" + // "DISCOVERY" - Promotional discovery notifications. + // "REALTIME_PROMOTIONAL" + // "SUBSCRIPTIONS" - Subscriptions (both event and time based). + // "FLIGHT_UPDATES" - Proactive notification categories. + // "TRANSPORT_UPDATES" + // "BILL_UPDATES" + // "PACKAGE_DELIVERY_UPDATES" + // "EVENT_UPDATES" + // "DUE_DATE_UPDATES" + // "CELEBRATION_UPDATES" + // "ROUTINE_UPDATES" + // "TASK_SUGGESTIONS" + // "AT_A_PLACE" + // "APP_RECOMMENDATIONS" + // "TRAVEL_UPDATES" + // "REMINDER_DUE" - Reminder notification categories. + // "NEW_REMINDER_ASSIGNMENT" + // "ASSIGNED_REMINDER_DUE" - We're probably going to deprecate + // ASSIGNED_REMINDER_DUE. + // "ROUTINE_SETTINGS_UPDATES" - Routine related notification + // categories. + // "MAPS_OR_DIRECTIONS" - Extended answer (cross device) notification + // categories. + // "MOVIE_SHOWTIMES" + // "SPORTS_UPDATES" + // "NEWS_UPDATES" + // "SONGS_AND_ARTISTS" + // "TRANSLATIONS" + // "ANSWERS_TO_QUESTIONS" + // "SETTINGS_LINKS" + // "RESERVATION_UPDATES" + // "DEPRECATED_FEEDBACK_REQUESTS" - Feedback requests from Assistant. + // "FEEDBACK_REQUESTS" + // "ACTIONS_ON_GOOGLE" - Actions on Google (Third party) + // notifications. + // "DUO_MISSED_CALLS" - Missed call notifications from DUO. + // "HOME_AUTOMATION" - Home Automation related notifications. + // "TIME_TO_LEAVE" - Getting around notifications. + // "COMMUTE" + // "OCCASIONALLY_REPEATED_ACTIONS" - Repeated actions. Having two + // categories for occasionally and frequently repeated ones since the + // FREQUENTLY_REPEATED_ACTIONS are buzzing. + // "FREQUENTLY_REPEATED_ACTIONS" + // "ASPIRE" - Assistant Aspire notifications. + // "ASSISTANT_DRIVING_MODE" + // "DISCOVERY_DEFAULT_PRIORITY" - Discovery notifications that shows + // in status bar but doesn't make noise. + // "HOLIDAY_REMINDERS" + // "CROSS_DEVICE_TIMER" + // "LIVE_CARD" - Live cards, these are not real notifications but live + // cards shown on Home App. + // "ASYNC_ACTION" - These are not really notifications, rather push + // messages to initiate an asynchronous action. + // "UNIT_TESTING" - Always keep at the end. + Category string `json:"category,omitempty"` + + // Possible values: + // "OPTED_IN" - Default value is intentionally set to opted in as all + // categories/category groups are enabled by default. + // "OPTED_OUT" + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Category") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Category") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiNotificationOutputRestrictionsOptOutStateCategoryState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiOemCapabilities: 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. +type AssistantApiOemCapabilities struct { + // CloudCapability: The OEM Cloud execution capability of this device, + // containing routing details for cloud fulfillment. + CloudCapability *AssistantDevicesPlatformProtoCloudCapability `json:"cloudCapability,omitempty"` + + // CloudDeviceCapabilities: If fulfillment is done via 3P cloud and 3P + // supports device capabilities, this field will be set. + CloudDeviceCapabilities googleapi.RawMessage `json:"cloudDeviceCapabilities,omitempty"` + + // DeviceModelId: Device Model Id from DeviceModelPackage. + DeviceModelId string `json:"deviceModelId,omitempty"` + + // DeviceModelRevisionId: Device Model Revision Id from + // DeviceModelPackage. + DeviceModelRevisionId int64 `json:"deviceModelRevisionId,omitempty,string"` + + // DeviceSpecificData: Opaque supported action data related to a + // specific domain of devices, for example for car. + // go/car-talk-registration-model + DeviceSpecificData string `json:"deviceSpecificData,omitempty"` + + // InternalCapability: Internal-only config containing metadata about + // the Device Model, for example to control the ranking behavior. + InternalCapability *AssistantDevicesPlatformProtoInternalCapability `json:"internalCapability,omitempty"` + + // ThirdPartyActionConfig: 3P Action Metadata, populated from the Device + // Model lookup and the client request parameters. For example, an + // Assistant SDK request would have the billed project id of the + // Assistant request added here in order to enable any Device Actions + // developed using the same Google Cloud project. This data is sent to + // Service Engine to mask triggering for Device Actions. + ThirdPartyActionConfig *AssistantApiThirdPartyActionConfig `json:"thirdPartyActionConfig,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CloudCapability") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CloudCapability") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiOemCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiOemCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiOnDeviceAssistantCapabilities: Definitions of on-device +// assistant capabilities. +type AssistantApiOnDeviceAssistantCapabilities struct { + // IsLocalNetworkArbitrationSupported: Capabilities related to local + // network arbitration (go/local-network-arbitration). Indicates if the + // device is capable of being a host device in the LAN whiling doing + // local network arbitration. + IsLocalNetworkArbitrationSupported bool `json:"isLocalNetworkArbitrationSupported,omitempty"` + + // IsOnDeviceArbitrationSupported: Capabilities related to on-device + // arbitration(go/arbitration-on-device). + IsOnDeviceArbitrationSupported bool `json:"isOnDeviceArbitrationSupported,omitempty"` + + // IsOnDeviceAssistantSupported: Indicates if on-device assistant is + // enabled on this device. Example usecases: NGA (go/nga) or Marble + // (go/marble). + IsOnDeviceAssistantSupported bool `json:"isOnDeviceAssistantSupported,omitempty"` + + // IsOnDeviceUnderstandingSupported: This may be used by NGA. E.g. if + // understanding happens on device, we can have more aggressive logic + // when fulfilling some features on the server side, like teleport. + IsOnDeviceUnderstandingSupported bool `json:"isOnDeviceUnderstandingSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "IsLocalNetworkArbitrationSupported") to unconditionally include in + // API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "IsLocalNetworkArbitrationSupported") to include in API requests with + // the JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiOnDeviceAssistantCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiOnDeviceAssistantCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiOnDeviceSmartHomeCapabilities: Definitions of on-device +// Smart Home capabilities. Next ID: 2 +type AssistantApiOnDeviceSmartHomeCapabilities struct { + // IsOnDeviceSmartHomeSupported: Master bit for on-device Smart Home + // features. + IsOnDeviceSmartHomeSupported bool `json:"isOnDeviceSmartHomeSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "IsOnDeviceSmartHomeSupported") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "IsOnDeviceSmartHomeSupported") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiOnDeviceSmartHomeCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiOnDeviceSmartHomeCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiOnDeviceStorageCapabilities: The on-device storage +// capabilities found on the device. +type AssistantApiOnDeviceStorageCapabilities struct { + // IsSupported: Determines if an on-device storage is supported. + IsSupported bool `json:"isSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsSupported") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsSupported") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiOnDeviceStorageCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiOnDeviceStorageCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiOutputRestrictions: These are user configurable +// permissions representing what the device is allowed to output. Next +// ID: 11 +type AssistantApiOutputRestrictions struct { + // AccessControlOutput: Access settings for all providers. + AccessControlOutput *AssistantApiAccessControlOutput `json:"accessControlOutput,omitempty"` + + // GooglePhotoContent: The type of Google Photo content which the device + // can output. + // + // Possible values: + // "ALL_PHOTO_CONTENT" - All content can be output, including contents + // from restriced categories (e.g. violent, racy). + // "NO_RESTRICTED_PHOTO_CONTENT" - Only content from non-restricted + // categories can be output. + GooglePhotoContent string `json:"googlePhotoContent,omitempty"` + + // GuestAccessOutput: DEPRECATED: Use access_control_output instead. + // Access settings for guests. + GuestAccessOutput *AssistantApiGuestAccessOutput `json:"guestAccessOutput,omitempty"` + + // PersonalData: The level of personal data which the device can output. + // See go/personal-readout for detail. + // + // Possible values: + // "PERSONAL_DATA_OUTPUT_UNKNOWN" - UNKNOWN. + // "ALL_PERSONAL_DATA_WITH_PROACTIVE" - DO NOT USE. This field has + // been deprecated. + // "ALL_PERSONAL_DATA" - All personal data can be output. + // "NO_PERSONAL_DATA" - No personal data can be output. + PersonalData string `json:"personalData,omitempty"` + + // ProactiveNotificationOutput: This controls if the server can + // proactively send notification to users, and it does not affect + // scenarios that users ask for information. The notification may + // include TTS and lights. It could be only lights for chirp. + // + // Possible values: + // "UNKNOWN_PROACTIVE_NOTIFICATION" - The setting for proactive + // notification is unknown + // "NO_PROACTIVE_NOTIFICATION" - No proactive notification can be + // output + // "ALL_PROACTIVE_NOTIFICATIONS" - All proactive notifications can be + // output + ProactiveNotificationOutput string `json:"proactiveNotificationOutput,omitempty"` + + // ProactiveOutput: Restrictions on displaying and interacting with + // content on proactive surfaces (e.g. Dragonglass home screen). Note: + // NEVER access this field of OutputRestrictions directly, use the code + // in assistant/assistant_server/settings/device/device_settings_util.h + // instead. + ProactiveOutput *AssistantApiProactiveOutput `json:"proactiveOutput,omitempty"` + + // YoutubeAutoplayRestriction: Whether YouTube autoplay is allowed for + // queries from the user to this device. See + // go/assistant-youtube-settings for details. + // + // Possible values: + // "AUTOPLAY_RESTRICTION_UNSPECIFIED" + // "AUTOPLAY_ALLOWED" - Autoplay can be applied to youtube queries to + // the device from this user + // "AUTOPLAY_DISABLED" - Autoplay must not be enabled for youtube + // queries to the device from this user + YoutubeAutoplayRestriction string `json:"youtubeAutoplayRestriction,omitempty"` + + // YoutubeContent: The type of YouTube content which the device can + // output. + // + // Possible values: + // "ALL_YOUTUBE_CONTENT" - All content can be output. + // "NO_RESTRICTED_CONTENT" - No restricted content can be output. + YoutubeContent string `json:"youtubeContent,omitempty"` + + // YoutubeTvContent: The type of YouTube TV content which the device can + // output. + // + // Possible values: + // "ALL_YOUTUBE_TV_CONTENT" - All YouTube TV content can be output. + // "NO_RESTRICTED_YOUTUBE_TV_CONTENT" - No restricted YouTube TV + // content can be output. + YoutubeTvContent string `json:"youtubeTvContent,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccessControlOutput") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccessControlOutput") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiOutputRestrictions) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiOutputRestrictions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiProactiveOutput: Next ID: 7 +type AssistantApiProactiveOutput struct { + // AllowAllPersonalData: Allows displaying all personal data on + // proactive surfaces with no face match capability. + AllowAllPersonalData bool `json:"allowAllPersonalData,omitempty"` + + // AndroidTvAssistantSettingsSource: For ANDROID_TV devices, the + // location that this setting was last changed from. Note: this + // structure allows to extend to more per-vertical bits in the future. + // + // Possible values: + // "NOT_SET" - LINT.IfChange + // "FIRST_SCREEN_DEVICE_OOBE" - Created during ATV Device + // OOBE(setupwraith) + // "FIRST_SCREEN_KATNISS_OOBE" - Created within Katniss(Assistant + // client on TV) + // "FIRST_SCREEN_DELEGATION_OOBE" - Created within Katniss delegation + // path + // "FIRST_SCREEN_FIXER_JOB" - Created by fix settings job in katniss. + // "FIRST_SCREEN_FCM_JOB" - Created by FCM jobs in katnisss. + // "FIRST_SCREEN_HOME_GRAPH_JOB" - Created by home graph jobs in + // katniss. + // "FIRST_SCREEN_PERSONAL_BIT" - Created by enable personal bit button + // in Settings UI + // "FIRST_SCREEN_VOICE_INPUT_BIT" - Created by enable voice input bit + // button in Settings UI + // "FIRST_SCREEN_OTHER" - Created by other parts in katniss + // "SECOND_SCREEN_AGSA" - Created by AGSA + // "SECOND_SCREEN_GHA_IOS" - Created by Google Home App IOS + // "SECOND_SCREEN_GHA_ANDROID" - Created by Google Home App Android + // LINT.ThenChange(//depot/google3/logs/proto/assistant/capabilities_log. + // proto) + AndroidTvAssistantSettingsSource string `json:"androidTvAssistantSettingsSource,omitempty"` + + // HealthAndFitnessProactive: Allows displaying Health and Fitness + // content on proactive surfaces. This is a sub bit of the device-wide + // PR bit - the device-wide PR bit must be enabled AND this vertical sub + // bit must be enabled for H&F content to be shown. This bit will be + // available on all surfaces that have the proactive-bit enabled. If the + // proactive-bit is not enabled, then we do not show health and fitness + // content at all (or even allow access to this setting). + // + // Possible values: + // "NO_HEALTH_AND_FITNESS_PROACTIVE_OUTPUT" - No health and fitness + // proactive content can be output + // "ALL_HEALTH_AND_FITNESS_PROACTIVE_OUTPUT" - All health and fitness + // proactive content can be output + HealthAndFitnessProactive string `json:"healthAndFitnessProactive,omitempty"` + + // PhotosProactive: Allows displaying photos content on Dragonglass + // proactive surfaces. This is a sub bit of the device-wide PR bit - the + // device-wide PR bit must be enabled AND this vertical sub bit must be + // enabled for photos content to be shown on Dragonglass surfaces. This + // bit will be available on all Dragonglass surfaces that have the + // proactive-bit enabled. If the proactive-bit is not enabled or it's + // not a Dragonglass surface, then we do not show proactive photos + // content at all, nor allow access to this setting. See + // go/opa-photos-sg-settings for more details. + // + // Possible values: + // "UNKNOWN_PHOTOS_PROACTIVE_OUTPUT" + // "NO_PHOTOS_PROACTIVE_OUTPUT" - No photos proactive content can be + // output. This indicates that user has explicitly disabled photos + // proactive settings. + // "ALL_PHOTOS_PROACTIVE_OUTPUT" - All photos proactive content can be + // output. This indicates that user has explicitly enabled photos + // proactive settings. + PhotosProactive string `json:"photosProactive,omitempty"` + + // SupportsProactiveOutput: Whether a device supports proactive output. + // Note that this is assumed to be true for all Smart Display devices, + // but surfaces that newly start supporting proactive_output should set + // this bit. + SupportsProactiveOutput bool `json:"supportsProactiveOutput,omitempty"` + + // UserMatchProactive: Settings for displaying personal data on + // proactive surfaces with face match capability. + // + // Possible values: + // "UNKNOWN_USER_MATCH_PROACTIVE" + // "NEVER_SHOW" - Never show proactive content. + // "ONLY_SHOW_ON_USER_MATCH" - Only show proactive content on Face + // Match. + // "ALWAYS_SHOW" - Always show proactive content. + UserMatchProactive string `json:"userMatchProactive,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AllowAllPersonalData") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AllowAllPersonalData") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiProactiveOutput) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiProactiveOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiProtobuf: 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. +type AssistantApiProtobuf struct { + // ProtobufData: The serialized protocol buffer. + ProtobufData string `json:"protobufData,omitempty"` + + // ProtobufType: The type of the protocol buffer to use. This must be a + // resolvable name (Namespace.ProtoName) and refer to a proto which is + // either compiled in to both client and server (e.g. a base proto type) + // or to one which is part of the conversation package. + ProtobufType string `json:"protobufType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ProtobufData") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ProtobufData") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiProtobuf) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiProtobuf + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiRecurrence: 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. IMPORTANT: The definition of Recurrence proto is being moved to +// //assistant/api/core_types/governed/datetime_type.proto. All existing +// references will be updated to point to the new location. If you are +// adding a reference, use the new one instead. +type AssistantApiRecurrence struct { + // Begin: The first day of the recurrence. If begin is not set, then the + // reminder will start infinitely in the past. + Begin *AssistantApiDate `json:"begin,omitempty"` + + // BlacklistedRanges: A list of blacklisted dates to skip the alarm on. + BlacklistedRanges []*AssistantApiRecurrenceDatetimeRange `json:"blacklistedRanges,omitempty"` + + // DayOfMonth: Specifies the date in a month. For example, if + // day_of_month is 15, then it represent the 15th day of the specified + // month. + DayOfMonth []int64 `json:"dayOfMonth,omitempty"` + + // DayOfWeek: Specifies a weekly or daily recurrence. Constraint: The + // date falls on one of these days of the week, in 0...6 + // (Sunday...Saturday). + DayOfWeek []int64 `json:"dayOfWeek,omitempty"` + + // End: The last day of the recurrence. + End *AssistantApiDate `json:"end,omitempty"` + + // Every: Multiplier on the frequency of the recurrence. Use this to + // specify patterns that recur every X days, months, years, etc. + // Example: [remind me to call mom every 2nd week]. Default is 1 (every + // day, every month, every year). + Every int64 `json:"every,omitempty"` + + // MonthOfYear: Specifies the month in a year. Constrain: the month + // falls on one of these months, in 1, 2, ... 12 (January...December). + MonthOfYear []int64 `json:"monthOfYear,omitempty"` + + // NumOccurrences: The number of occurrences after which the recurrence + // should end. + NumOccurrences int64 `json:"numOccurrences,omitempty"` + + // WeekOfMonth: Specifies the index of week in a month. For example, the + // second Tuesday every month, in this case, week_of_month should be 2. + WeekOfMonth []int64 `json:"weekOfMonth,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Begin") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Begin") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiRecurrence) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiRecurrence + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiRecurrenceDatetimeRange: A representation of a range of +// time with start and end datetime specified. +type AssistantApiRecurrenceDatetimeRange struct { + // EndDate: End date of the range. + EndDate *AssistantApiDateTime `json:"endDate,omitempty"` + + // StartDate: Start date of the range. + StartDate *AssistantApiDateTime `json:"startDate,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndDate") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndDate") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiRecurrenceDatetimeRange) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiRecurrenceDatetimeRange + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiScreenCapabilities: 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: 10 +type AssistantApiScreenCapabilities struct { + // InputType: The types of input that this screen supports. Note that + // this can be empty in which case the screen's input type is unknown. + // + // Possible values: + // "TOUCHSCREEN" - The device has a screen that support touch input. + InputType []string `json:"inputType,omitempty"` + + // Mask: Mask defined for this device, if any. + Mask *AssistantApiScreenCapabilitiesMask `json:"mask,omitempty"` + + // ProtoLayoutTargetedSchema: The targeted schema version for + // ProtoLayout requests. + ProtoLayoutTargetedSchema *AssistantApiScreenCapabilitiesProtoLayoutVersion `json:"protoLayoutTargetedSchema,omitempty"` + + // Resolution: If this field is absent, the resolution of the screen is + // unknown. + Resolution *AssistantApiScreenCapabilitiesResolution `json:"resolution,omitempty"` + + // ScreenOff: If screen is turned off. + ScreenOff bool `json:"screenOff,omitempty"` + + // ScreenStateDetection: The ability of the client to correctly report + // screen state. + // + // Possible values: + // "UNKNOWN_SCREEN_STATE_DETECTION" + // "UNRELIABLE_SCREEN_STATE_DETECTION" - The client reports screen + // state but may be unreliable based on different remotes/inputs used to + // turn the screen off. Example: Android TVs with soundbars. + // "RELIABLE_SCREEN_STATE_DETECTION" + ScreenStateDetection string `json:"screenStateDetection,omitempty"` + + // SupportedRenderingFormat: The primary supported rendering format for + // display on the device's screen. This may be used to determine what + // format of card to be returned when rendering cards. + // + // Possible values: + // "UNKNOWN_RENDERING_FORMAT" + // "CONCISE_TEXT" - Concise Text go/concise-text-responses + // "PROTO_LAYOUT" - Proto Layout, the layout for Proto Tiles + // go/prototiles + SupportedRenderingFormat string `json:"supportedRenderingFormat,omitempty"` + + // SupportedScreenStates: The screen states that the client supports. + // The current screen state is specified in DeviceProperties.screen. + // + // Possible values: + // "UNKNOWN_SCREEN_STATE" + // "ON" + // "OFF" + SupportedScreenStates []string `json:"supportedScreenStates,omitempty"` + + // VisionHelpEnabled: Whether the device enabled vision help features in + // accessiblity settings. The settings is config in Assistant App and + // on-device settings, and stored in footprints. When enabled, font, + // color and TTS will be adjusted. + VisionHelpEnabled bool `json:"visionHelpEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "InputType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "InputType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiScreenCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiScreenCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiScreenCapabilitiesMask: A mask applied to the screen's +// pixel space to determine regions not visible on the physical device. +type AssistantApiScreenCapabilitiesMask struct { + // Possible values: + // "UNKNOWN_MASK" - Default value. + // "NO_MASK" - Used for devices with no mask. In this case, every + // point in the region defined by width_px and height_px corresponds to + // a physical, visible pixel. This is distinct from rectangular screens + // that DO have regions with no pixels, e.g. an inset or cutout that + // occludes one or more sides of the screen. + // "ROUND_MASK" - Used for devices with oval or circular screens. The + // vertical and horizontal resolution of the screen determines the + // vertical and horizontal diameters of the oval. Pixels outside this + // oval region are non-existent or physically occluded. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiScreenCapabilitiesMask) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiScreenCapabilitiesMask + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiScreenCapabilitiesProtoLayoutVersion: Version info for +// ProtoLayout requests. +type AssistantApiScreenCapabilitiesProtoLayoutVersion struct { + Major int64 `json:"major,omitempty"` + + Minor int64 `json:"minor,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Major") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Major") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiScreenCapabilitiesProtoLayoutVersion) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiScreenCapabilitiesProtoLayoutVersion + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiScreenCapabilitiesResolution: A Resolution proto +// indicates the size of the application window. All fields are +// required. +type AssistantApiScreenCapabilitiesResolution struct { + // Dpi: Dots (pixels) per inch of the screen. + Dpi int64 `json:"dpi,omitempty"` + + HeightPx int64 `json:"heightPx,omitempty"` + + // MSize: m_size is the smallest square box size to display a capital + // letter M so that the user can still easily understand it. + MSize int64 `json:"mSize,omitempty"` + + // NengSize: neng_size is the smallest square box size to display a + // letter 螚 (Neng, U+879A) so that the user can easily understand it. + // (Neng is a visually dense Chinese letter, and so may require a larger + // box than an M.) + NengSize int64 `json:"nengSize,omitempty"` + + // WidthPx: The dimensions of the application window, in pixels. + WidthPx int64 `json:"widthPx,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dpi") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dpi") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiScreenCapabilitiesResolution) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiScreenCapabilitiesResolution + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSelinaCapabilites: The Soli capabilities on Elaine, +// including gestures and sleep sensing. go/dingo-dc-software Next ID: 4 +type AssistantApiSelinaCapabilites struct { + // GestureCapabilities: A list of gestures that selina supports + GestureCapabilities *AssistantApiGestureCapabilities `json:"gestureCapabilities,omitempty"` + + // SelinaSupported: Whether the client supports selina. + SelinaSupported bool `json:"selinaSupported,omitempty"` + + // SleepSensingSupported: Whether the client can monitor sleep. This + // allows us to show sleep CUJ related information: go/TwilightDesign + SleepSensingSupported bool `json:"sleepSensingSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GestureCapabilities") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GestureCapabilities") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSelinaCapabilites) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSelinaCapabilites + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsAmbientSettings struct { + // AnyUserHasSetPersonalPhotos: Whether any user sets personal photos on + // this device. See go/ambient-setting-in-assistant-design. + AnyUserHasSetPersonalPhotos bool `json:"anyUserHasSetPersonalPhotos,omitempty"` + + // RecentHighlightsEnabled: 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. + RecentHighlightsEnabled bool `json:"recentHighlightsEnabled,omitempty"` + + // ShowPersonalPhotoData: Whether to enable the personal photo data in + // the ambient settings: https://screenshot.googleplex.com/Wd4OFkQfOyF + // See go/opa-photos-ambient-location-date-dd#heading=h.5x4iaouuiett for + // explanation. + ShowPersonalPhotoData bool `json:"showPersonalPhotoData,omitempty"` + + // ShowPersonalPhotos: Whether current user sets personal photos on this + // device. See go/ambient-setting-in-assistant-design. + ShowPersonalPhotos bool `json:"showPersonalPhotos,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AnyUserHasSetPersonalPhotos") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AnyUserHasSetPersonalPhotos") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsAmbientSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsAmbientSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsAppCapabilities: These capabilties are associated +// with Assistant Settings on devices. +type AssistantApiSettingsAppCapabilities struct { + // CarSettingsCapabilities: Capabilities that are associated with + // Assistant Settings on auto surfaces. + CarSettingsCapabilities *AssistantApiCarSettingsCapabilities `json:"carSettingsCapabilities,omitempty"` + + // ReissueQueryAfterMusicSetup: Whether the client supports reissuing + // query after setting up in Music Settings. + ReissueQueryAfterMusicSetup bool `json:"reissueQueryAfterMusicSetup,omitempty"` + + // SupportsPaymentsSettingsUpdate: Whether the client supports updating + // payments setting. + SupportsPaymentsSettingsUpdate bool `json:"supportsPaymentsSettingsUpdate,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CarSettingsCapabilities") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CarSettingsCapabilities") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsAppCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsAppCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsAutoFramingSettings: Settings pertaining to auto +// framing. See go/auto-framing-presentation. +type AssistantApiSettingsAutoFramingSettings struct { + IsAutoFramingEnabled bool `json:"isAutoFramingEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "IsAutoFramingEnabled") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsAutoFramingEnabled") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsAutoFramingSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsAutoFramingSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsCarrierCallDeviceSettings: Carrier related call +// settings on the device. +type AssistantApiSettingsCarrierCallDeviceSettings struct { + // AllowIncomingCalls: Whether this device is allowed to receive + // incoming PSTN calls. + AllowIncomingCalls bool `json:"allowIncomingCalls,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AllowIncomingCalls") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AllowIncomingCalls") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsCarrierCallDeviceSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsCarrierCallDeviceSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsCommunicationsFilter: Specification of which +// communication features can be used. +type AssistantApiSettingsCommunicationsFilter struct { + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL" - Allow all communication features. + // "BLOCK_CALLS_AND_MESSAGES" - Allow all communication features, with + // the exception of calls and messages. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "State") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "State") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsCommunicationsFilter) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsCommunicationsFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsDeviceDowntimeSettings: 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 +type AssistantApiSettingsDeviceDowntimeSettings struct { + Schedules []*AssistantApiSettingsLabeledDowntimeSchedule `json:"schedules,omitempty"` + + // Targets: The set of users of this device that will have these + // downtime settings applied. Must have at least one element. + // + // Possible values: + // "UNKNOWN_DEVICE_SUPERVISION_TARGET" + // "EVERYONE" - All people that use the device. + // "KID_ACCOUNTS" - Users with a Unicorn account that are + // voice-matched to the device. + // "GUESTS" - Users interacting with the device without being voice + // matched. We cannot identify these users and don't know their ages. + Targets []string `json:"targets,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Schedules") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Schedules") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDeviceDowntimeSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDeviceDowntimeSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsDeviceFeatureFilters: 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 +type AssistantApiSettingsDeviceFeatureFilters struct { + // Enabled: Enables/disables all the filters at the same time. For new + // devices or non-Cast devices this is always false. + Enabled bool `json:"enabled,omitempty"` + + // FeatureFilters: The filters (feature restrictions) to apply when + // `enabled` is true. + FeatureFilters *AssistantApiSettingsFeatureFilters `json:"featureFilters,omitempty"` + + // Targets: The set of users of this device that will have these + // settings applied. Must have at least one element. + // + // Possible values: + // "UNKNOWN_DEVICE_SUPERVISION_TARGET" + // "EVERYONE" - All people that use the device. + // "KID_ACCOUNTS" - Users with a Unicorn account that are + // voice-matched to the device. + // "GUESTS" - Users interacting with the device without being voice + // matched. We cannot identify these users and don't know their ages. + Targets []string `json:"targets,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDeviceFeatureFilters) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDeviceFeatureFilters + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsDeviceLogsOptIn struct { + // OptInEnabled: Indicates whether the crash logs can be uploaded and + // the device logs can be enabled + OptInEnabled bool `json:"optInEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OptInEnabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OptInEnabled") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDeviceLogsOptIn) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDeviceLogsOptIn + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsDeviceSettings: Next ID: 73 +type AssistantApiSettingsDeviceSettings struct { + // AckStatus: + // LINT.ThenChange(//depot/google3/assistant/ui/assistant_device_settings + // _ui.proto) + // + // Possible values: + // "ACK_COMPLETED" + // "ACK_PENDING" + AckStatus string `json:"ackStatus,omitempty"` + + // Address: A human-readable address string for the location; generally + // a one-line address such as "34 Masonic Ave, San Francisco CA 94117, + // United States". Set this field to empty string for deletion, in which + // case the rest of the location related fields below will be cleared as + // well. + Address string `json:"address,omitempty"` + + // AliasName: The alias names of the device, e.g. my living room tv, tv, + // living room and etc., which user will usually use to refer to the + // device in addition to human_friendly_name. It can help speech biasing + // and query understanding. This field is set by the user and already + // localized. + AliasName []string `json:"aliasName,omitempty"` + + // AllowIncomingCalls: Whether this device is allowed to receive + // incoming calls. + AllowIncomingCalls bool `json:"allowIncomingCalls,omitempty"` + + // AmbientSettings: Ambient settings contains the configuration of Photo + // Frame on DG device. This field relies on IMAX service to do the + // update, sync happenes after user updates IMAX device settings or a + // device registers in CloudCastDevice. So it's more like a cached + // version instead of definitive source-of-truth. More details at + // go/ambient-setting-in-assistant-design. + AmbientSettings *AssistantApiSettingsAmbientSettings `json:"ambientSettings,omitempty"` + + // AncillaryDeviceId: The additional device ids. Currently used only for + // ATV. go/project-yellowstone Note: This field is for internal (Within + // settings) use only. + AncillaryDeviceId *AssistantApiSettingsInternalAncillaryDeviceId `json:"ancillaryDeviceId,omitempty"` + + // AutoFramingSettings: Auto framing settings associated with a device. + // See go/auto-framing-presentation. + AutoFramingSettings *AssistantApiSettingsAutoFramingSettings `json:"autoFramingSettings,omitempty"` + + // BlueSteelEnabled: Indicates whether the user has enabled Blue Steel. + // See go/blue-steel for more info on this project. + BlueSteelEnabled bool `json:"blueSteelEnabled,omitempty"` + + // Capabilities: Describes roughly what a device is capable of doing and + // metadata around those capabilities. Note: this includes device + // limitations as well as user configurable settings. + Capabilities *AssistantApiDeviceCapabilities `json:"capabilities,omitempty"` + + // City: city and postal_code are sent to third party AoG Apps as + // location when permission is granted for precise or coarse location. + // https://developers.google.com/actions/reference/rest/Shared.Types/Permission + // city and postal_code have the same description as in Proto Postal + // Address: + // https://cs.corp.google.com/piper///depot/google3/location/country/postaladdress.proto + // city corresponds to locality_name, postal_code corresponds to + // postal_code_number. These two fields are set in + // assistant_settings_service by AddressConverter. + // https://cs.corp.google.com/piper///depot/google3/location/addressformatter/public/addressconverter.h + // See go/aog-i18n-address-parse for more information + City string `json:"city,omitempty"` + + // ColocationStatus: Status of colocation. go/co-location-work-v2 Note: + // this is a cache at the Assistant level. The source of truth is inside + // CastAuthenticationServer, which is only used for Home devices. + // + // Possible values: + // "COLOCATION_UNKNOWN" + // "COLOCATION_ESTABLISHED" + // "COLOCATION_NOT_ESTABLISHED" + // "COLOCATION_NOT_SUPPORTED" + ColocationStatus string `json:"colocationStatus,omitempty"` + + // CreationTimestampMs: The timestamp that the device is linked with the + // user in milliseconds. + CreationTimestampMs int64 `json:"creationTimestampMs,omitempty,string"` + + // CrossSurfaceAvailability: Availability of this device for Assistant + // Cross-surface handoffs. (go/assistant-cross-surface) + CrossSurfaceAvailability *AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability `json:"crossSurfaceAvailability,omitempty"` + + // DefaultAudioDeviceId: The identification of the default device which + // user want to output audio. See go/default-media-output-design for + // more info. + DefaultAudioDeviceId *AssistantApiCoreTypesDeviceId `json:"defaultAudioDeviceId,omitempty"` + + // DefaultVideoDeviceId: The identification of the default device which + // user want to output video. Note that, we don't fallback to this for + // audio playback when default_audio_device_id is not set. See + // go/default-media-output-design for more info. + DefaultVideoDeviceId *AssistantApiCoreTypesDeviceId `json:"defaultVideoDeviceId,omitempty"` + + // DeviceBrand: The brand of the device, populated from DeviceOemParams. + // Examples: "google", "samsung". + DeviceBrand string `json:"deviceBrand,omitempty"` + + // DeviceId: The identification of the device. + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // DeviceModelId: The model ID of the device. This should be globally + // unique across manufactures/OEMs. Examples: "nest_cam_iq_2017", + // "comcast_voice_box_2017". + DeviceModelId string `json:"deviceModelId,omitempty"` + + // DeviceModelRevision: The Device Platform Service lookup revision. + // (go/device-model-revision) For 1p devices, and most 3p devices with + // no custom feature, this should be always 0, which means no lookup + // needed. For 3p devices with custom assistant feature, this is + // provided directly by OEM as incremental (e.g. 1, 2, 3, ...) + DeviceModelRevision int64 `json:"deviceModelRevision,omitempty"` + + // Dusi: Only valid for ATV. Stores the android DUSI for the + // corresponding user. More details: go/auto-logout-on-unlink. + Dusi string `json:"dusi,omitempty"` + + // FaceEnrollmentErrors: List of errors that happened during the face + // enrollment process if it failed. See go/face-match-enrollment-error + // for more info. + // + // Possible values: + // "UNKNOWN_FACE_ENROLLMENT_ERROR" + // "MISSING_FRONTAL_POSE" - The gallery images don't have the required + // frontal pose properties. + // "FACE_NOT_DETECTED" - Face was NOT detected in an image. + // "MULTIPLE_FACE_DETECTED" - Multiple faces detected in an image. + // "FACE_WITHOUT_SIGNATURE" - Cannot create signature for a detected + // face. + // "FACE_DETECTION_LOW_CONFIDENCE" - Face detection confidence score + // is too low. + // "FACE_LANDMARK_LOW_CONFIDENCE" - Face detection landmark confidence + // score is too low. + // "FACE_WITHOUT_CONFIDENCE" - Face detection contains no confidence + // score, which is invalid. + // "FACE_TOO_SMALL" - Face detection was too small for enrollment. + // "FAILED_TO_READ_IMAGE" - Unable to read the image file from the + // gallery. + // "FAILED_TO_DECODE_IMAGE" - Unable to decode the jpeg image. + // "FACE_DETECTION_ERROR" - Unable to run face detector on the decoded + // image. + // "FACE_WITHOUT_EMBEDDING_CONFIDENCE" - Face detection contains no + // confidence score for embedding. + FaceEnrollmentErrors []string `json:"faceEnrollmentErrors,omitempty"` + + // FaceEnrollmentStatus: Indicates whether the user's face has been + // successfully enrolled on this device. See go/face-match-server-design + // for more info. + // + // Possible values: + // "UNKNOWN_STATUS" + // "SUCCESS" + // "FAILURE" + // "PENDING" + FaceEnrollmentStatus string `json:"faceEnrollmentStatus,omitempty"` + + // FaceMatchEnabled: Indicates whether the user has enabled Face Match + // for this device. See go/face-match-server-design for more info on + // this project. + FaceMatchEnabled bool `json:"faceMatchEnabled,omitempty"` + + // FlAudioCacheEnabled: When true, allow data collection of audio on + // this device for Federated Learning. + FlAudioCacheEnabled bool `json:"flAudioCacheEnabled,omitempty"` + + // FlVisualFramesCacheEnabled: When true, allow data collection of + // frames on this device. + FlVisualFramesCacheEnabled bool `json:"flVisualFramesCacheEnabled,omitempty"` + + // GcmSettings: Stores GCM info associated with a device. See + // go/quartz-design-doc for more info. + GcmSettings *AssistantApiSettingsGcmSettings `json:"gcmSettings,omitempty"` + + // HomeGraphData: Holds the data that should be written to HomeGraph. + // Note: this field is not persisted in Assistant Settings storage. It + // is simply used for transporting data when client calls + // UpdateSettings. + HomeGraphData *AssistantApiSettingsHomeGraphData `json:"homeGraphData,omitempty"` + + // HomeGraphId: The home graph ID that can be used to lookup the + // corresponding entry in HomeGraph. go/home-graph. Note: when this + // field is empty, it doesn't necessarily mean that the device is not in + // home graph. It just means that Assistant doesn't know about the + // mapping. + HomeGraphId string `json:"homeGraphId,omitempty"` + + // HospitalityModeStatus: Indicates whether the device is currently in + // Hospitality mode. go/hospitality-mode-design. This is moved to a per + // user setting in assistant settings. ref. go/hospitality-settings-v2 + HospitalityModeStatus *AssistantApiSettingsHospitalityMode `json:"hospitalityModeStatus,omitempty"` + + // HotwordSensitivity: The level of hotword sensitivity. + // go/hotword-sensitivity-prd + // + // Possible values: + // "UNKNOWN_HOTWORD_SENSITIVITY" + // "HOTWORD_SENSITIVITY_LOW" + // "HOTWORD_SENSITIVITY_NORMAL" + // "HOTWORD_SENSITIVITY_HIGH" + // "HOTWORD_SENSITIVITY_LOW_2" + // "HOTWORD_SENSITIVITY_HIGH_2" + HotwordSensitivity string `json:"hotwordSensitivity,omitempty"` + + // HotwordThresholdAdjustmentFactor: HotwordThresholdAdjustmentFactor + // contains threshold_adjustment_factor, and it's validity. TAF is a + // measure of adjustment applied to the hotword threshold as a result of + // go/autotune. Currently, this is updated from query_settings_frame, + // but if we move to updating it from the client, this could also + // contain TAFs as a result of Hotword Sensitivity, in addition to + // Autotune. + HotwordThresholdAdjustmentFactor *AssistantApiSettingsHotwordThresholdAdjustmentFactor `json:"hotwordThresholdAdjustmentFactor,omitempty"` + + // HumanFriendlyName: The human-friendly name of the cast device, e.g., + // my living room tv. This field is set by the user and already + // localized. + HumanFriendlyName string `json:"humanFriendlyName,omitempty"` + + // InternalVersion: Internal version of the DeviceSettings for + // measurement of the DeviceSettings mutation race conditions. See + // go/consistent-assistant-settings-update. + InternalVersion *AssistantApiSettingsInternalVersion `json:"internalVersion,omitempty"` + + // IsCloudSyncDevice: Indicates whether the device is also managed + // through HA cloud sync. go/ha-dev-guide + IsCloudSyncDevice bool `json:"isCloudSyncDevice,omitempty"` + + // IsDeviceActivationCacheEnabled: When true, the user has explicitly + // allowed audio and visual data collection on this device + IsDeviceActivationCacheEnabled bool `json:"isDeviceActivationCacheEnabled,omitempty"` + + // KidsMode: Specifies if kids-mode is enabled for the device. See + // go/aff-parentalsupervision-dd. + KidsMode *AssistantApiSettingsKidsMode `json:"kidsMode,omitempty"` + + // LastCastRegistrationTimestamp: Device's latest registration timestamp + // provided by Cast side. This field is not necessarily up to date. The + // update frequency is defined in + // last_registration_update_frequency_in_days field of AssistantConfig + // in + // java/com/google/chrome/dongle/common/proto/home_assistant_config.proto + // . go/cast-last-registration-time + LastCastRegistrationTimestamp string `json:"lastCastRegistrationTimestamp,omitempty"` + + // LastUsedCoarseTimestamp: Coarsened hourly timestamp of when the + // device was last used. + LastUsedCoarseTimestamp string `json:"lastUsedCoarseTimestamp,omitempty"` + + // LinkedDeviceId: Stores pairing between different devices. See + // go/quartz-design-doc for more info. + LinkedDeviceId []*AssistantApiCoreTypesDeviceId `json:"linkedDeviceId,omitempty"` + + // LinkedUsers: Please do NOT use this field without prior approval from + // PWG. Users who have signed in onto this device, + // go/linked-users-in-pkg. + LinkedUsers []*AssistantApiSettingsLinkedUser `json:"linkedUsers,omitempty"` + + // Locale: The locale for the device: language + region, i.e., en-US, + // ja-JP. + Locale string `json:"locale,omitempty"` + + // LocationCoordinates: Coordinate information of the device location. + LocationCoordinates *AssistantApiCoreTypesLocationCoordinates `json:"locationCoordinates,omitempty"` + + // LocationFeature: The feature proto of the location of the device. + // Note: client does not need to populate this. It will be + // auto-populated based on "address" field on server side. Currently, + // only "bound" and "type" are persisted, since the entire FeatureProto + // is too big. + LocationFeature *GeostoreFeatureProto `json:"locationFeature,omitempty"` + + // MarketplaceDisclosure: See go/marketplace-disclosure for more info. + MarketplaceDisclosure *AssistantApiSettingsMarketplaceDisclosure `json:"marketplaceDisclosure,omitempty"` + + MasqueradeMode *AssistantApiSettingsMasqueradeMode `json:"masqueradeMode,omitempty"` + + // NotificationProfile: Information about how to send the user a + // notification. This won't be populated for fb-conv users (allo group + // chat users). + NotificationProfile *AssistantApiSettingsNotificationProfile `json:"notificationProfile,omitempty"` + + // OauthClientId: OAuth client id for the device. This field is + // available for Assistant SDK devices. It is written when the device is + // registered to the user + // (AssistantSettingsUiService.LinkAssistantDeviceUi). When user revokes + // grant on the Assistant device, Assistant Devices Platform Service + // will receive Pubsub notification with OAuth client id for the revoked + // device, and we will compare that with this stored id to identity + // device to remove. + OauthClientId string `json:"oauthClientId,omitempty"` + + // OnDeviceAppSettings: Device specific app related settings. + OnDeviceAppSettings *AssistantApiSettingsOnDeviceAppSettings `json:"onDeviceAppSettings,omitempty"` + + // OptInStatus: Specifies if device logs and crashes can be captured + // during SendFeedback + OptInStatus *AssistantApiSettingsDeviceLogsOptIn `json:"optInStatus,omitempty"` + + // PaymentsEnabled: DEPRECATED: Use + // DeviceCapabilities.OutputRestrictions.personal_data instead. Whether + // the user has enabled payments for this device. + PaymentsEnabled bool `json:"paymentsEnabled,omitempty"` + + // PersonalizationMetadata: Metadata about how personalization settings + // were configured. + PersonalizationMetadata *AssistantApiSettingsPersonalizationMetadata `json:"personalizationMetadata,omitempty"` + + // PoliteMode: Specify whether polite mode is enabled for this device. + // See go/pretty-please-dd. + PoliteMode *AssistantApiSettingsPoliteMode `json:"politeMode,omitempty"` + + PostalCode string `json:"postalCode,omitempty"` + + // ReauthTrustedDeviceSettings: Trusted device preferences Assistant + // reauth. go/assistant-reauth-verify-skip. + ReauthTrustedDeviceSettings *AssistantApiSettingsReauthTrustedDeviceSettings `json:"reauthTrustedDeviceSettings,omitempty"` + + // ShortenedAddress: A human-readable shortened address. This is usually + // the street address. Note: client does not need to populate this. It + // will be auto-populated based on "address" field on server side. + // Developers can use this field to avoid reading out the full address + // everytime. + ShortenedAddress string `json:"shortenedAddress,omitempty"` + + // SpeakerIdEnabled: Indicates whether the user has enabled speaker-id + // for this device. See go/google-assistant-multi-user for more info on + // this project. + SpeakerIdEnabled bool `json:"speakerIdEnabled,omitempty"` + + // SpeechOutputSettings: Settings related to TTS output. + SpeechOutputSettings *AssistantApiSettingsSpeechOutputSettings `json:"speechOutputSettings,omitempty"` + + // SpeechSettings: Speech/hotword detection related settings. + SpeechSettings *AssistantApiSettingsSpeechSettings `json:"speechSettings,omitempty"` + + // SupervisionSettings: Restrictions on how and when certain users can + // use a device. See go/home-ft-prd. + SupervisionSettings *AssistantApiSettingsDeviceSupervisionSettings `json:"supervisionSettings,omitempty"` + + // SurfaceType: The type of assistant surface. Only use this field when + // device type is ASSISTANT. + SurfaceType *AssistantApiCoreTypesSurfaceType `json:"surfaceType,omitempty"` + + // TetheredInfo: Presence indicates a tethered wearable. + // go/wearable-device-ids. + TetheredInfo *AssistantApiSettingsTetheredInfo `json:"tetheredInfo,omitempty"` + + // TimeZone: Device time zone. It's mainly used for a one-time + // notification for new users when they just bought and activated their + // devices. They may not have used Search or Assistant before, so their + // timezone info may not available elsewhere when we want to send a + // notification. This should be used as a fallback only when other + // timezone sources such as + // assistant_settings:user_attribute#inferred_user_timezone are not + // available. Also, when both |time_zone| and |location| are set, the + // |location| should be preferred to derive the most up to date + // timezone. This info directly comes from the device through early + // device setting recording mechanism. See more details at + // go/early-device-setting-recording. + TimeZone *AssistantApiTimeZone `json:"timeZone,omitempty"` + + // TruncatedLocalNetworkId: Local network ID of the device (truncated to + // obfuscate devices and households globally). This is a temporary + // signal to determine proximity of Assistant devices in a house (HGS + // place). + TruncatedLocalNetworkId string `json:"truncatedLocalNetworkId,omitempty"` + + // TrustedVoiceEnabled: DEPRECATED: Use speech_settings instead. + // Indicates whether the user has enabled trusted voice for this device. + // See go/hotword-settings-on-cloud for more info on this project. + TrustedVoiceEnabled bool `json:"trustedVoiceEnabled,omitempty"` + + // Type: The type of the device. Note: this should only be used for + // grouping devices for UI presentation purpose. Use |capabilities| to + // decide what the device can do. + // + // Possible values: + // "UNKNOWN_DEVICE_TYPE" + // "ASSISTANT" + // "HOME_AUTOMATION" + // "CAST" + // "CAST_GROUP" + // "QUARTZ" - Quartz in AGSA + // "QUARTZ_IOS" - Quartz in iOPA + // "CLOUD_AUTO" - Non-assistant Auto devices from Cloud. + Type string `json:"type,omitempty"` + + // VerboseTtsForChromecastEnabled: Indicates whether to play verbose tts + // for Elementary on chirp. See: go/opa-cast-a11y-impl-design fore more + // info on this project. Note: this should probably be in + // SpeechOutputSetting below. + VerboseTtsForChromecastEnabled bool `json:"verboseTtsForChromecastEnabled,omitempty"` + + // VmLastUsedCoarseTimestamp: Coarsened hourly timestamp of when the + // user was last verified by VoiceMatch on this device. This is used for + // enforcing VoiceMatch model TTL. go/voicematch-pdd-ttl + VmLastUsedCoarseTimestamp string `json:"vmLastUsedCoarseTimestamp,omitempty"` + + // VoiceEnrollmentStatus: Indicates whether the user's voice has been + // successfully enrolled on this device. + // + // Possible values: + // "VOICE_ENROLLMENT_UNKNOWN_STATUS" - User has no utterances and no + // speaker id model. + // "VOICE_ENROLLMENT_SUCCESS" - User has speaker id model. + // "VOICE_ENROLLMENT_FAILURE" - User has utterances but no speaker id + // model (for ex. hotword was not detected in utterances). + // "VOICE_ENROLLMENT_PENDING" - Speaker id model generation is + // in-progress. + VoiceEnrollmentStatus string `json:"voiceEnrollmentStatus,omitempty"` + + // VoiceInputEnabled: A boolean indicates whether voice input + // (mic-button, hotword, etc) is enabled. + VoiceInputEnabled bool `json:"voiceInputEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AckStatus") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AckStatus") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDeviceSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDeviceSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability struct { + // LastKnownClientLocale: Last known locale of the client. + LastKnownClientLocale string `json:"lastKnownClientLocale,omitempty"` + + // LastParamsWriteTimestamp: This is the timestamp when the + // AssistantRequestParams (in ASSISTANT_SNAPSHOT corpus) were last + // written for this device. + LastParamsWriteTimestamp string `json:"lastParamsWriteTimestamp,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "LastKnownClientLocale") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LastKnownClientLocale") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDeviceSettingsCrossSurfaceAvailability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsDeviceSupervisionSettings struct { + // DowntimeSettings: Specification of times that a device shouldn't + // respond to certain users. See go/home-ft-prd. + DowntimeSettings *AssistantApiSettingsDeviceDowntimeSettings `json:"downtimeSettings,omitempty"` + + // FeatureFilters: Restrictions on features that certain users can + // access on a device. See go/home-ft-prd. + FeatureFilters *AssistantApiSettingsDeviceFeatureFilters `json:"featureFilters,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DowntimeSettings") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DowntimeSettings") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDeviceSupervisionSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDeviceSupervisionSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsDowntimePeriod: 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. +type AssistantApiSettingsDowntimePeriod struct { + // Enabled: True if downtime should be enabled during this period. + Enabled bool `json:"enabled,omitempty"` + + // EndTime: Time of day that this downtime period should end. Required. + // If end_time > start_time, end_time is relative to start_day. + // Otherwise, end_time is relative to the day after start_day. For + // example, start_day: MONDAY, start_time: 9 p.m., end_time: 6 a.m. + // means that the downtime period starts at 9 p.m. on Monday and ends at + // 6 a.m. on Tuesday. + EndTime *GoogleTypeTimeOfDay `json:"endTime,omitempty"` + + // StartDay: The day of the week when this downtime period starts. + // Required. + // + // Possible values: + // "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified. + // "MONDAY" - Monday + // "TUESDAY" - Tuesday + // "WEDNESDAY" - Wednesday + // "THURSDAY" - Thursday + // "FRIDAY" - Friday + // "SATURDAY" - Saturday + // "SUNDAY" - Sunday + StartDay string `json:"startDay,omitempty"` + + // StartTime: Time of day that this downtime period should start. + // Required. + StartTime *GoogleTypeTimeOfDay `json:"startTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDowntimePeriod) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDowntimePeriod + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsDowntimeSchedule: 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. +type AssistantApiSettingsDowntimeSchedule struct { + // Enabled: True if this downtime schedule should be enabled. + Enabled bool `json:"enabled,omitempty"` + + // Periods: Downtime entries for the days of the week, in no particular + // order. There can be at most one period defined for each day of the + // week. Days of the week with no explicit period defined are treated as + // disabled, so the device is available all day (modulo an end time that + // may spill over from the previous day). + Periods []*AssistantApiSettingsDowntimePeriod `json:"periods,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDowntimeSchedule) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDowntimeSchedule + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsDuoCallDeviceSettings: Duo related call settings +// on the device. Next ID: 5 +type AssistantApiSettingsDuoCallDeviceSettings struct { + // AllowKnockKnock: True if Duo Knock Kncok feature is enabled on the + // device. + AllowKnockKnock bool `json:"allowKnockKnock,omitempty"` + + // ShouldBeLinked: Boolean indicating if user has explicitly marked this + // device to be linked or not. This bit is used in case where unexpected + // errors occur and we have to check for account/device status and mark + // the device linked after verification. + ShouldBeLinked bool `json:"shouldBeLinked,omitempty"` + + // State: The call state of the device (i.e. whether an Duo call account + // has been setup on the device). + // + // Possible values: + // "UNKNOWN_LINK_STATE" + // "NOT_LINKED" - The user chose not to link the app. + // "LINKED" - The user completed linking the app. + // "LINKED_WAITING" - The user chose to link the app, but the linking + // has not completed yet. + // "LINK_ERROR" - There was some error in link state and link state + // should be refreshed by querying tachyon backend. But this does not + // guarantee that state will be linked after this request. + State string `json:"state,omitempty"` + + // TalkbackEnabled: Client device settings: settings which are populated + // by client to give to duocore. TalkBack is an accessibility service + // that helps blind and vision-impaired users interact with their + // devices. Indicates whether talkback is enabled for the device. Note: + // this is per device settings currently filled by client for all users. + TalkbackEnabled bool `json:"talkbackEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AllowKnockKnock") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AllowKnockKnock") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsDuoCallDeviceSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsDuoCallDeviceSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsFeatureFilters: Specification of which assistant +// features are allowed for a particular device or user account. +type AssistantApiSettingsFeatureFilters struct { + CommunicationsFilter *AssistantApiSettingsCommunicationsFilter `json:"communicationsFilter,omitempty"` + + MusicFilter *AssistantApiSettingsMusicFilter `json:"musicFilter,omitempty"` + + NewsFilter *AssistantApiSettingsNewsFilter `json:"newsFilter,omitempty"` + + PodcastFilter *AssistantApiSettingsPodcastFilter `json:"podcastFilter,omitempty"` + + SearchFilter *AssistantApiSettingsSearchFilter `json:"searchFilter,omitempty"` + + ThirdPartyAppsFilter *AssistantApiSettingsThirdPartyAppsFilter `json:"thirdPartyAppsFilter,omitempty"` + + VideoFilter *AssistantApiSettingsVideoFilter `json:"videoFilter,omitempty"` + + WebviewFilter *AssistantApiSettingsWebviewFilter `json:"webviewFilter,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CommunicationsFilter") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CommunicationsFilter") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsFeatureFilters) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsFeatureFilters + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsGcmSettings struct { + GcmId string `json:"gcmId,omitempty"` + + GcmPackage string `json:"gcmPackage,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GcmId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GcmId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsGcmSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsGcmSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsHomeGraphData: Next ID: 8 +type AssistantApiSettingsHomeGraphData struct { + // AgentId: Agent ID, aka project ID. Used as the AgentDeviceId.agent_id + // of device when calling Home Graph Service. + AgentId string `json:"agentId,omitempty"` + + // Attributes: See go/ha-dev-guide and HomeGraphItem.attribute in + // //assistant/verticals/homeautomation/proto/home_graph.proto + Attributes googleapi.RawMessage `json:"attributes,omitempty"` + + // DeviceId: Device ID, used as AgentDeviceId.device_id of device when + // calling Home Graph Service. + DeviceId string `json:"deviceId,omitempty"` + + // DeviceType: HGS device type. See + // java/com/google/home/graph/service/config/protoconf.pi for the + // exhaustive list of type strings. + DeviceType string `json:"deviceType,omitempty"` + + // ShouldWriteToHomeGraph: Whether device data should be written to Home + // Graph via Assistant device_settings. Assistant SDK and Google Home + // write their devices into Home Graph through AssistantSettingsService, + // while Home Automation Partner devices (e.g. SmartThings, Philips Hue, + // Nest, TP-Link, etc.) don't need to be written to Home Graph through + // AssistantSettingsService. This field decides whether + // AssistantSettingsService writes devices to Home Graph or not. + ShouldWriteToHomeGraph bool `json:"shouldWriteToHomeGraph,omitempty"` + + // SupportedTraits: Supported traits of the device. See + // java/com/google/home/graph/service/config/protoconf.pi for the + // exhaustive list of trait-strings. + SupportedTraits []string `json:"supportedTraits,omitempty"` + + // SupportsDirectResponse: Whether the device supports direct response. + // See HomeGraphItem.supports_direct_response in + // //assistant/verticals/homeautomation/proto/home_graph.proto + SupportsDirectResponse bool `json:"supportsDirectResponse,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgentId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgentId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsHomeGraphData) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsHomeGraphData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsHospitalityCardSettings struct { + // CardConfig: Config for Hospitality UI modules. + CardConfig []*AssistantApiSettingsHospitalityCardSettingsCardConfig `json:"cardConfig,omitempty"` + + // ShowMediaTapGestureTutorial: Toggle media tap gesture tutorial card. + ShowMediaTapGestureTutorial bool `json:"showMediaTapGestureTutorial,omitempty"` + + // ShowPhotoSwipeGestureTutorial: Toggle photo swipe gesture tutorial + // card. + ShowPhotoSwipeGestureTutorial bool `json:"showPhotoSwipeGestureTutorial,omitempty"` + + // YoutubeCardConfig: Config for YouTube video cards. + YoutubeCardConfig []*AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig `json:"youtubeCardConfig,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CardConfig") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CardConfig") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsHospitalityCardSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsHospitalityCardSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsHospitalityCardSettingsCardConfig: Configuration +// for hospitality card. +type AssistantApiSettingsHospitalityCardSettingsCardConfig struct { + // ActiveActionRequired: Whether the UI module requires user action. If + // true, the UI module can peek on to the top of Ambient. See + // SmartDisplayModuleState::ACTIVE_ACTION_REQUIRED. + ActiveActionRequired bool `json:"activeActionRequired,omitempty"` + + // Dismissable: Whether the UI module is dismissable. + Dismissable bool `json:"dismissable,omitempty"` + + // EffectiveTime: The time that the module is effective and visible to + // the user. If not set, the module is effective immediately. + EffectiveTime *AssistantApiTimestamp `json:"effectiveTime,omitempty"` + + // ExpiryTime: The time that the module is expired and invisible to the + // user. If not set, the module never expires. + ExpiryTime *AssistantApiTimestamp `json:"expiryTime,omitempty"` + + // ImageUrl: The image URL for the UI module. + ImageUrl string `json:"imageUrl,omitempty"` + + // ModuleId: Module ID. + // + // Possible values: + // "UNKNOWN" + // "MID_STAY_SURVEY" + // "CHECK_OUT" + // "CHECK_IN" + // "RESET" + ModuleId string `json:"moduleId,omitempty"` + + // PayloadQuery: Payload query to the partner AoG action when user + // responds to UI Module, e.g. “Tell the hotel how my stay is + // going”. + PayloadQuery string `json:"payloadQuery,omitempty"` + + // Title: Title of the message to be shown to user at the top of the UI + // Module. + Title string `json:"title,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ActiveActionRequired") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ActiveActionRequired") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsHospitalityCardSettingsCardConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsHospitalityCardSettingsCardConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig: +// Configuration for YouTube video card (Stargazer tile). +type AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig struct { + // ImageUrl: URL of image to go on card. The URL must be a public link + // accessible from ZeroState. + ImageUrl string `json:"imageUrl,omitempty"` + + // PlaylistId: ID of YouTube playlist to play on card tap. A playlist is + // used instead of a single video id to avoid autoplaying related + // videos. The playlist and the videos it contains must be public or + // unlisted to be accessible from ZeroState. + PlaylistId string `json:"playlistId,omitempty"` + + // Text: Text on card (i.e., video title). + Text string `json:"text,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ImageUrl") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ImageUrl") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsHospitalityCardSettingsYouTubeCardConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsHospitalityMode: Hospitality mode config for the +// current device. go/hospitality-mode-design. Next ID: 17 +type AssistantApiSettingsHospitalityMode struct { + // AogContextId: List of AOG app context ids that are linked to this + // device. These apps will have access to the structure information for + // the device. + AogContextId []string `json:"aogContextId,omitempty"` + + // AogInvocationPhrase: Invocation phrase for hotel's AoG action. Used + // for ZS promotion card and "talk to my hotel" rewrites. Setting this + // to an empty value will mark it unset. + AogInvocationPhrase string `json:"aogInvocationPhrase,omitempty"` + + Branding *AssistantApiSettingsHospitalityModeBranding `json:"branding,omitempty"` + + CardSettings *AssistantApiSettingsHospitalityCardSettings `json:"cardSettings,omitempty"` + + // DeviceClearRequest: The time when we received a request to reset the + // device. + DeviceClearRequest *AssistantApiTimestamp `json:"deviceClearRequest,omitempty"` + + // DialogTtlOverrideMicros: Should the dialog have a shorter ttl. See + // go/ipp-consumer-prd#heading=h.ibu9b1ysdl4t and + // go/interpreter-device-clear#bookmark=id.hw8ey1bzjadn for context. + DialogTtlOverrideMicros int64 `json:"dialogTtlOverrideMicros,omitempty,string"` + + // EnterpriseId: Identifier for the enterprise which owns the device. + // Setting this to an empty value will mark it unset. + EnterpriseId string `json:"enterpriseId,omitempty"` + + // HospitalityModeEnabled: Indicates whether this device is in the + // hospitality mode. + HospitalityModeEnabled bool `json:"hospitalityModeEnabled,omitempty"` + + // LastDeviceClear: Last time the device was cleared and placed in + // hospitality mode. Will be set when the switch is toggled on and reset + // when a guest checks out. On the device this triggers removing alarms, + // timers, etc. + LastDeviceClear *AssistantApiTimestamp `json:"lastDeviceClear,omitempty"` + + // LastModifiedTimestamp: Indicates when hospitality settings were last + // updated. + LastModifiedTimestamp *AssistantApiTimestamp `json:"lastModifiedTimestamp,omitempty"` + + // LastWelcomed: Last time the welcome message was played for the guest. + // If last_welcomed < welcome_request, the message should be replayed + // and this time set. + LastWelcomed *AssistantApiTimestamp `json:"lastWelcomed,omitempty"` + + // ManualResetRequired: Indicates whether or not the device must be + // reset manually (by voice or touch), as opposed to being automatically + // reset. go/hospitality-manual-reset + ManualResetRequired bool `json:"manualResetRequired,omitempty"` + + // PromotedLanguages: In order promoted languages for interpreter + // devices. This represents languages by BCP-47 language strings, such + // as "en", "en-US", "fr", "fr-CA", "sr-Latn", "zh-Hans-CN", + // "zh-Hant-HK",etc. + PromotedLanguages []string `json:"promotedLanguages,omitempty"` + + // Possible values: + // "UNKNOWN_TYPE" + // "HOTEL_ROOM" + // "INTERPRETER" - go/hospitality-interpreter-mode + // "SENIOR_LIVING_ROOM" - go/merrill-prd + // "RETAIL_DEMO" - go/assistant-retail-demo + Type string `json:"type,omitempty"` + + // VerbalResetSupported: Whether we allow users to initiate clearing the + // device verbally. We generally allow this for private devices and not + // for public ones. + VerbalResetSupported bool `json:"verbalResetSupported,omitempty"` + + // WelcomeRequest: The time when we received a request to welcome the + // user. + WelcomeRequest *AssistantApiTimestamp `json:"welcomeRequest,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AogContextId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AogContextId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsHospitalityMode) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsHospitalityMode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsHospitalityModeBranding: 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 +type AssistantApiSettingsHospitalityModeBranding struct { + // DisplayName: Brand display in the UI + DisplayName string `json:"displayName,omitempty"` + + // DisplayNameForLanguage: Brand display in the UI for languages that + // the enterprise has a localized name that is different from its global + // branding name. For example, Hilton is 'ヒルトン' in Japanese and + // '希爾頓' in Chinese. The keys are hospitality supported display + // locales, e.g. en, ja-JP, etc, defined in experiment parameter + // Hospitality__hospitality_display_supported_locales. + DisplayNameForLanguage map[string]string `json:"displayNameForLanguage,omitempty"` + + LargeLogoUrl string `json:"largeLogoUrl,omitempty"` + + SmallLogoUrl string `json:"smallLogoUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsHospitalityModeBranding) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsHospitalityModeBranding + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsHotwordThresholdAdjustmentFactor: +// HotwordThresholdAdjustmentFactor contains +// threshold_adjustment_factor, and it's validity. value should only be +// considered when is_valid = true. +type AssistantApiSettingsHotwordThresholdAdjustmentFactor struct { + // IsValid: Currently, is_valid is set to false whenever the TAF is not + // an Autotune aware value. This includes hotword sensitivity users, or + // devices not eligible for autotune. + IsValid bool `json:"isValid,omitempty"` + + Value int64 `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsValid") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsValid") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsHotwordThresholdAdjustmentFactor) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsHotwordThresholdAdjustmentFactor + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsInternalAncillaryDeviceId: Represents supporting +// device ids. +type AssistantApiSettingsInternalAncillaryDeviceId struct { + // DeviceId: Contains device ids known to devices. eg. For ATV, it + // contains client_instance_id and cast_id. + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsInternalAncillaryDeviceId) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsInternalAncillaryDeviceId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsInternalVersion: Represents a version of a +// specifit setting, e.g. DeviceSettings. +type AssistantApiSettingsInternalVersion struct { + // GenerationTime: Contains the timestamp when this version was + // generated. + GenerationTime string `json:"generationTime,omitempty"` + + // Id: Integer value of the version, it is a monotonically increasing + // number and starts at 0. On every update it is incremented by 1. + Id int64 `json:"id,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "GenerationTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GenerationTime") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsInternalVersion) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsInternalVersion + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsKidsMode: Kids mode config for the current +// device. go/aff-parentalsupervision-dd +type AssistantApiSettingsKidsMode struct { + KidsModeEnabled bool `json:"kidsModeEnabled,omitempty"` + + // ObfuscatedGaiaId: Identifier of the account currently specified to be + // used with kids mode. + ObfuscatedGaiaId string `json:"obfuscatedGaiaId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "KidsModeEnabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "KidsModeEnabled") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsKidsMode) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsKidsMode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsLabeledDowntimeSchedule struct { + // DisplayName: User-provided name for this schedule. + DisplayName string `json:"displayName,omitempty"` + + Schedule *AssistantApiSettingsDowntimeSchedule `json:"schedule,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsLabeledDowntimeSchedule) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsLabeledDowntimeSchedule + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsLinkedUser: Represents the profile of the user +// who has signed in onto this device. Next id: 5 +type AssistantApiSettingsLinkedUser struct { + // CastLinkingTime: Time of linking of the device with the user provided + // by Cast. + CastLinkingTime string `json:"castLinkingTime,omitempty"` + + // Email: Primary email address of the user. + Email string `json:"email,omitempty"` + + GaiaId int64 `json:"gaiaId,omitempty,string"` + + // Names: Supports features which depend on profile name, when no + // matching contact is found. + Names []*AppsPeopleOzExternalMergedpeopleapiName `json:"names,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CastLinkingTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CastLinkingTime") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsLinkedUser) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsLinkedUser + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsMarketplaceDisclosure struct { + // Confirmed: True if the user has confirmed the marketplace disclosure. + Confirmed bool `json:"confirmed,omitempty"` + + // TimestampMs: The time user confirmed the marketplace disclosure. + TimestampMs int64 `json:"timestampMs,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Confirmed") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Confirmed") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsMarketplaceDisclosure) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsMarketplaceDisclosure + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsMasqueradeMode: Guest mode for the current +// device. go/assistant-guest-mode-summary +type AssistantApiSettingsMasqueradeMode struct { + LastEnterGuestModeTimestamp *AssistantApiTimestamp `json:"lastEnterGuestModeTimestamp,omitempty"` + + LastExitGuestModeTimestamp *AssistantApiTimestamp `json:"lastExitGuestModeTimestamp,omitempty"` + + MasqueradeModeEnabled bool `json:"masqueradeModeEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "LastEnterGuestModeTimestamp") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "LastEnterGuestModeTimestamp") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsMasqueradeMode) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsMasqueradeMode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsMusicFilter: Specification of which music +// features can be used. +type AssistantApiSettingsMusicFilter struct { + // AvailableProviders: Providers available at the time user updated + // settings. + // + // Possible values: + // "UNKNOWN_MUSIC_PROVIDER" + // "YOUTUBE_MUSIC" + // "GOOGLE_PLAY_MUSIC" + // "SPOTIFY" + // "APPLE_MUSIC" + // "PANDORA" + AvailableProviders []string `json:"availableProviders,omitempty"` + + // ProviderFilterState: Represents the state for the music provider + // filter. + // + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL_PROVIDERS" - With this state, all music providers are + // allowed. + // "ALLOW_WHITELISTED_PROVIDERS" - This limits the allowed providers + // to the whitelisted ones. This means that we can block all providers + // if the whitelist is empty. + ProviderFilterState string `json:"providerFilterState,omitempty"` + + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL" - Allow all music. + // "BLOCK_EXPLICIT" - Block music with explicit lyrics. + // "BLOCK_ALL" - Block all music. + State string `json:"state,omitempty"` + + // WhitelistedProviders: Contains the list of whitelisted music + // providers. + // + // Possible values: + // "UNKNOWN_MUSIC_PROVIDER" + // "YOUTUBE_MUSIC" + // "GOOGLE_PLAY_MUSIC" + // "SPOTIFY" + // "APPLE_MUSIC" + // "PANDORA" + WhitelistedProviders []string `json:"whitelistedProviders,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AvailableProviders") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AvailableProviders") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsMusicFilter) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsMusicFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsNewsFilter: Specification of which news features +// can be used. +type AssistantApiSettingsNewsFilter struct { + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL_NEWS" - Allow all news. + // "BLOCK_ALL_NEWS" - Block all news. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "State") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "State") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsNewsFilter) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsNewsFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsNotificationProfile struct { + // AlloNotificationProfile: Each device can have only one type of + // notification profile. + AlloNotificationProfile *AssistantApiSettingsNotificationProfileAlloNotificationProfile `json:"alloNotificationProfile,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AlloNotificationProfile") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AlloNotificationProfile") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsNotificationProfile) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsNotificationProfile + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsNotificationProfileAlloNotificationProfile struct { + // BotSendToken: The send token of the conversation with the user. + BotSendToken *ChatBotPlatformBotSendToken `json:"botSendToken,omitempty"` + + // Id: The fireball id of this user. + Id *ChatBotPlatformFireballId `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BotSendToken") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BotSendToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsNotificationProfileAlloNotificationProfile) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsNotificationProfileAlloNotificationProfile + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsOnDeviceAppSettings struct { + // CarrierCallDeviceSettings: On device carrier call related settings. + CarrierCallDeviceSettings *AssistantApiSettingsCarrierCallDeviceSettings `json:"carrierCallDeviceSettings,omitempty"` + + // DuoCallDeviceSettings: On device duo call related settings. + DuoCallDeviceSettings *AssistantApiSettingsDuoCallDeviceSettings `json:"duoCallDeviceSettings,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CarrierCallDeviceSettings") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "CarrierCallDeviceSettings") to include in API requests with the JSON + // null value. By default, fields with empty values are omitted from API + // requests. However, any field with an empty value appearing in + // NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsOnDeviceAppSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsOnDeviceAppSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsPersonalizationMetadata struct { + // Possible values: + // "PERSONALIZATION_FLOW_UNKNOWN" + // "PERSONALIZATION_FLOW_DEVICE" + // "PERSONALIZATION_FLOW_TWOOBE" - TWOOBE: go/twoobe-prd + // "PERSONALIZATION_FLOW_SLA" - SLA: go/sla-prd + // "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" - Custodio: + // go/assistant-pc-prd + FaceMatch string `json:"faceMatch,omitempty"` + + // Possible values: + // "PERSONALIZATION_FLOW_UNKNOWN" + // "PERSONALIZATION_FLOW_DEVICE" + // "PERSONALIZATION_FLOW_TWOOBE" - TWOOBE: go/twoobe-prd + // "PERSONALIZATION_FLOW_SLA" - SLA: go/sla-prd + // "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" - Custodio: + // go/assistant-pc-prd + PersonalResults string `json:"personalResults,omitempty"` + + // Possible values: + // "PERSONALIZATION_FLOW_UNKNOWN" + // "PERSONALIZATION_FLOW_DEVICE" + // "PERSONALIZATION_FLOW_TWOOBE" - TWOOBE: go/twoobe-prd + // "PERSONALIZATION_FLOW_SLA" - SLA: go/sla-prd + // "PERSONALIZATION_FLOW_DEVICE_DELEGATED_CUSTODIO" - Custodio: + // go/assistant-pc-prd + VoiceMatch string `json:"voiceMatch,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FaceMatch") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FaceMatch") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsPersonalizationMetadata) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsPersonalizationMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsPodcastFilter: Specification of which podcast +// features can be used. +type AssistantApiSettingsPodcastFilter struct { + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL_PODCASTS" - Allow all podcasts. + // "BLOCK_ALL_PODCASTS" - Block all podcasts. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "State") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "State") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsPodcastFilter) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsPodcastFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsPoliteMode: Polite mode config for the current +// device. go/polite-mode-dd +type AssistantApiSettingsPoliteMode struct { + PoliteModeEnabled bool `json:"politeModeEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PoliteModeEnabled") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PoliteModeEnabled") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsPoliteMode) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsPoliteMode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsReauthTrustedDeviceSettings: Settings related to +// Assistant reauth. go/assistant-reauth-verify-skip Next id: 2 +type AssistantApiSettingsReauthTrustedDeviceSettings struct { + // TrustSettingsForClient: Mapping from integrator client id to device's + // trust settings. Id from + // assistant/agent_platform/transactions/reauth/reauth_client.proto. + TrustSettingsForClient map[string]AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings `json:"trustSettingsForClient,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "TrustSettingsForClient") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TrustSettingsForClient") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsReauthTrustedDeviceSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsReauthTrustedDeviceSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings: Next +// id: 6 +type AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings struct { + // NeverAskAgain: If true, don't ask user to trust this device again. + NeverAskAgain bool `json:"neverAskAgain,omitempty"` + + // NeverAskExpirationTimestamp: DEPRECATED: Use never_ask_again instead. + // Expiration timestamp of "never ask again" status. If this field is + // set and is later than current timestamp, we should NOT ask the user + // whether they'd like to trust this device. + NeverAskExpirationTimestamp string `json:"neverAskExpirationTimestamp,omitempty"` + + // TrustDeviceExpirationTimestamp: Expiration timestamp of "trusted" + // status. If this field is set and is later than current timestamp, we + // can consider this device to be trusted. + TrustDeviceExpirationTimestamp string `json:"trustDeviceExpirationTimestamp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NeverAskAgain") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NeverAskAgain") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsReauthTrustedDeviceSettingsTrustSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsSearchFilter: Specification of which search +// features can be used. +type AssistantApiSettingsSearchFilter struct { + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_SAFE_SEARCH" - Allow only safe search for the Assistant. + // "BLOCK_SEARCH" - Block (almost) all search features. Some "safe" + // features that users wouldn't consider search (like calculator) are + // still allowed in this mode. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "State") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "State") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsSearchFilter) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsSearchFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsSpeechOutputSettings: Settings related to TTS +// output. +type AssistantApiSettingsSpeechOutputSettings struct { + // Possible values: + // "UNSPECIFIED" + // "VERBOSE" - Provide speech output most of the time. + // "MIN_VERBOSITY" - Optimize where to provide speech output. + // "HANDS_FREE_ONLY" - Provide speech output only in hands-free mode. + // No TTS will be provided otherwise. + SpeechOutput string `json:"speechOutput,omitempty"` + + // ForceSendFields is a list of field names (e.g. "SpeechOutput") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SpeechOutput") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsSpeechOutputSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsSpeechOutputSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsSpeechSettings: Settings related to speech +// detection. See go/hotword-settings-on-cloud for more info. Next ID: +// 16 +type AssistantApiSettingsSpeechSettings struct { + // ContinuedConversationEnabled: Indicates whether Continued + // Conversation is enabled for this device. + ContinuedConversationEnabled bool `json:"continuedConversationEnabled,omitempty"` + + // DeviceModelType: Stores the device model type e.g Pixel. + DeviceModelType string `json:"deviceModelType,omitempty"` + + // DspAvailable: Whether the device has DSP chip to enable always on + // hotword detection. + DspAvailable bool `json:"dspAvailable,omitempty"` + + // HotwordInNavigationEnabled: Whether hotword has been enabled by the + // user during navigation. + // + // Possible values: + // "UNAVAILABLE" - Setting is unavailable to the user. + // "ENABLED" - Setting is available and enabled by the user. + // "DISABLED" - Setting is available but disabled by the user. + // "UNDECIDED" - Setting is available, but user never touched this + // setting. + // "OPA_DISABLED" - Setting is disabled because Opa is disabled by + // user. + // "UNSUPPORTED_LOCALE" - Setting is unavailable because the locale is + // unsupported. Deprecated, use voice_match_available + // "INCOMPLETE" - Setting is incomplete, see + // go/hotword-incomplete-state + // "ENABLED_WITHOUT_OPA_AVAILABILITY" - Setting is enabled by user + // without opa availability. go/no-opa-yes-vm + HotwordInNavigationEnabled string `json:"hotwordInNavigationEnabled,omitempty"` + + // HotwordSetting: Stores hotword setting status for the locales which + // don't support voice match. + // + // Possible values: + // "UNAVAILABLE" - Setting is unavailable to the user. + // "ENABLED" - Setting is available and enabled by the user. + // "DISABLED" - Setting is available but disabled by the user. + // "UNDECIDED" - Setting is available, but user never touched this + // setting. + // "OPA_DISABLED" - Setting is disabled because Opa is disabled by + // user. + // "UNSUPPORTED_LOCALE" - Setting is unavailable because the locale is + // unsupported. Deprecated, use voice_match_available + // "INCOMPLETE" - Setting is incomplete, see + // go/hotword-incomplete-state + // "ENABLED_WITHOUT_OPA_AVAILABILITY" - Setting is enabled by user + // without opa availability. go/no-opa-yes-vm + HotwordSetting string `json:"hotwordSetting,omitempty"` + + // LockscreenEnabled: Whether pin/pattern lockscreen has been enabled by + // the user. + LockscreenEnabled bool `json:"lockscreenEnabled,omitempty"` + + // OpaEligibilityState: Stores if Assistant is available for the user's + // device/locale, where Enabled means it is available and disabled means + // it is not. + // + // Possible values: + // "UNAVAILABLE" - Setting is unavailable to the user. + // "ENABLED" - Setting is available and enabled by the user. + // "DISABLED" - Setting is available but disabled by the user. + // "UNDECIDED" - Setting is available, but user never touched this + // setting. + // "OPA_DISABLED" - Setting is disabled because Opa is disabled by + // user. + // "UNSUPPORTED_LOCALE" - Setting is unavailable because the locale is + // unsupported. Deprecated, use voice_match_available + // "INCOMPLETE" - Setting is incomplete, see + // go/hotword-incomplete-state + // "ENABLED_WITHOUT_OPA_AVAILABILITY" - Setting is enabled by user + // without opa availability. go/no-opa-yes-vm + OpaEligibilityState string `json:"opaEligibilityState,omitempty"` + + // OpaEligible: Stores if Assistant is available for the user's + // device/locale. Deprecated as bools do not give accurate true/false + // ratios due to old clients reporting the default value. + OpaEligible bool `json:"opaEligible,omitempty"` + + // SdkVersion: Stores the Android SDK version. This comes from + // android.os.Build.VERSION.SDK_INT. + SdkVersion int64 `json:"sdkVersion,omitempty"` + + // SpeakerIdModelPresent: Whether speaker ID model is present for the + // user. + SpeakerIdModelPresent bool `json:"speakerIdModelPresent,omitempty"` + + // SpeakerIdRecognitionEnabled: Indicates whether the user has enabled + // speaker-id (fromAnyScreen/alwaysOn) for this device. Deprecated - use + // voice_match_setting instead + SpeakerIdRecognitionEnabled bool `json:"speakerIdRecognitionEnabled,omitempty"` + + // TrustedVoiceEnabled: Indicates whether the user has enabled trusted + // voice for this device. + TrustedVoiceEnabled bool `json:"trustedVoiceEnabled,omitempty"` + + // UnlockWithHotwordAvailable: A bool indicating whether device supports + // unlocking device with hotword. + UnlockWithHotwordAvailable bool `json:"unlockWithHotwordAvailable,omitempty"` + + // UserMigratedToDeclined: Stores if user was migrated from undecided to + // declined as apart of Mariko project. Used for potential growth + // targeting. + UserMigratedToDeclined bool `json:"userMigratedToDeclined,omitempty"` + + // VoiceMatchSetting: Stores the hotword/voice match setting status for + // the locales which support voice match. + // + // Possible values: + // "UNAVAILABLE" - Setting is unavailable to the user. + // "ENABLED" - Setting is available and enabled by the user. + // "DISABLED" - Setting is available but disabled by the user. + // "UNDECIDED" - Setting is available, but user never touched this + // setting. + // "OPA_DISABLED" - Setting is disabled because Opa is disabled by + // user. + // "UNSUPPORTED_LOCALE" - Setting is unavailable because the locale is + // unsupported. Deprecated, use voice_match_available + // "INCOMPLETE" - Setting is incomplete, see + // go/hotword-incomplete-state + // "ENABLED_WITHOUT_OPA_AVAILABILITY" - Setting is enabled by user + // without opa availability. go/no-opa-yes-vm + VoiceMatchSetting string `json:"voiceMatchSetting,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ContinuedConversationEnabled") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "ContinuedConversationEnabled") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsSpeechSettings) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsSpeechSettings + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSettingsTetheredInfo struct { + // PrimaryHostDeviceId: 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. + PrimaryHostDeviceId string `json:"primaryHostDeviceId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PrimaryHostDeviceId") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PrimaryHostDeviceId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsTetheredInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsTetheredInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsThirdPartyAppsFilter: Specification of which +// third party apps can be used. +type AssistantApiSettingsThirdPartyAppsFilter struct { + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL" - Allow all third party apps. + // "ALLOW_CERTIFIED_FOR_FAMILIES" - Only allow certified Apps for + // Families. See + // https://developers.google.com/actions/apps-for-families/. + // "BLOCK_ALL" - Block all third party apps. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "State") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "State") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsThirdPartyAppsFilter) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsThirdPartyAppsFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsVideoFilter: Specification of which video +// features can be used. +type AssistantApiSettingsVideoFilter struct { + // AutoplayToggleState: State that indicates whether autoplay is enabled + // for youtube videos. + // + // Possible values: + // "UNKNOWN_STATE" - Default uninitialized state. + // "ENABLED" - Allow autoplay for youtube videos. + // "DISABLED" - Disable autoplay for youtube videos. + AutoplayToggleState string `json:"autoplayToggleState,omitempty"` + + // AvailableProviders: Providers available at the time user updated + // settings. + // + // Possible values: + // "UNKNOWN_VIDEO_PROVIDER" + // "YOUTUBE" + // "YOUTUBE_TV" + // "YOUTUBE_KIDS" + AvailableProviders []string `json:"availableProviders,omitempty"` + + // ProviderFilterState: Represents the state for the video provider + // filter. + // + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL_PROVIDERS" - With this state, all video providers are + // allowed. + // "ALLOW_WHITELISTED_PROVIDERS" - This limits the allowed providers + // to the whitelisted ones. This means that we can block all providers + // if the whitelist is empty. + ProviderFilterState string `json:"providerFilterState,omitempty"` + + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL" - Allow all videos. + // "BLOCK_MATURE_CONTENT" - Block videos with mature content. + // "BLOCK_ALL" - Block all videos. + State string `json:"state,omitempty"` + + // WhitelistedProviders: Contains the list of whitelisted video + // providers. + // + // Possible values: + // "UNKNOWN_VIDEO_PROVIDER" + // "YOUTUBE" + // "YOUTUBE_TV" + // "YOUTUBE_KIDS" + WhitelistedProviders []string `json:"whitelistedProviders,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AutoplayToggleState") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AutoplayToggleState") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsVideoFilter) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsVideoFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSettingsWebviewFilter: Specification of which webview +// features can be used. +type AssistantApiSettingsWebviewFilter struct { + // JasperWebviewConsent: Indicates if user has consented Jasper warning + // message. + JasperWebviewConsent bool `json:"jasperWebviewConsent,omitempty"` + + // Possible values: + // "UNKNOWN_STATE" + // "ALLOW_ALL_WEBSITES" - Allow all websites. + // "BLOCK_ALL_WEBSITES" - Block all websites. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "JasperWebviewConsent") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "JasperWebviewConsent") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSettingsWebviewFilter) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSettingsWebviewFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSignInMethod: The method of sign in which the client +// supports. +type AssistantApiSignInMethod struct { + // Possible values: + // "UNSPECIFIED" - Unspecified value. Defaults to the same sign-in + // behavior as PHONE_APP. + // "NOT_ALLOWED" - Sign in is not allowed, e.g., go/telephone. + // "PHONE_APP" - Sign in with Home app, e.g. Google Home. + // "ON_DEVICE_MENU" - Sign in with on device menu, e.g., LGTV, + // go/web-assistant + // "WEB_APP" - Sign in with the Assistant sign in website. See + // go/baird-web-based-sign-in. + Method string `json:"method,omitempty"` + + // SignInRequired: Make Google sign-in mandatory for using Google + // Assistant on the device. + SignInRequired bool `json:"signInRequired,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Method") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Method") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSignInMethod) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSignInMethod + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSodaCapabilities: Capabilities related to SODA (Speech +// On-Device API). Next ID: 5 +type AssistantApiSodaCapabilities struct { + // SupportsHotwordSensitivity: Whether the device supports different + // levels of hotword sensitivity. go/hotword-sensitivity-prd + SupportsHotwordSensitivity bool `json:"supportsHotwordSensitivity,omitempty"` + + // SupportsSimpleStop: Whether Simple Stop (go/simple-stop) is enabled + // on the device. Simple stop allows users to stop firing alarms and + // timers by just saying "stop" without first saying the hotword. + SupportsSimpleStop bool `json:"supportsSimpleStop,omitempty"` + + // SupportsSpeakerId: Whether the device supports speaker-id (speaker + // identification based on hotword and/or spoken query - go/speaker-id). + // Note: there are existing devices that support speaker-id but does not + // have this capability set. Not having this field populated doesn't + // necessarily mean the device doesn't support speaker-id. + SupportsSpeakerId bool `json:"supportsSpeakerId,omitempty"` + + // SupportsWarmWords: Whether the device supports WarmWords + // (go/warm-words-framework). + SupportsWarmWords bool `json:"supportsWarmWords,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SupportsHotwordSensitivity") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "SupportsHotwordSensitivity") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSodaCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSodaCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSoftwareCapabilities: 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: 26 +type AssistantApiSoftwareCapabilities struct { + // AppCapabilities: IMPORTANT: Only one of AppCapabilities and + // AppCapabilitiesDelta should be in the SoftwareCapabilities. In the + // edge case if the client sends up both AppCapabilities and + // AppCapabilitiesDelta, AppCapabilitiesDelta is ignored. Complete list + // of app capabilities. + AppCapabilities []*AssistantApiAppCapabilities `json:"appCapabilities,omitempty"` + + // AppCapabilitiesDelta: Incremental update for app capabilities. + AppCapabilitiesDelta []*AssistantApiAppCapabilitiesDelta `json:"appCapabilitiesDelta,omitempty"` + + // AppIntegrationsSettings: App integrations settings for each packge + // name. + AppIntegrationsSettings map[string]AssistantApiAppIntegrationsSettings `json:"appIntegrationsSettings,omitempty"` + + // CarAssistantCapabilities: Capabilities related to Assistant on Auto + // surfaces. + CarAssistantCapabilities *AssistantApiCarAssistantCapabilities `json:"carAssistantCapabilities,omitempty"` + + // ClockCapabilities: Capabilities related to clock functionality, like + // alarms, timers, etc. + ClockCapabilities *AssistantApiClockCapabilities `json:"clockCapabilities,omitempty"` + + // ConversationVersion: A top-level version of Conversation protocol + // where the versions are explicitly defined at + // go/conversation-versions. + ConversationVersion *AssistantApiSupportedConversationVersion `json:"conversationVersion,omitempty"` + + // CrossDeviceExecutionCapabilities: For torus x-device execution + // support + CrossDeviceExecutionCapabilities *AssistantApiCrossDeviceExecutionCapability `json:"crossDeviceExecutionCapabilities,omitempty"` + + GacsCapabilities *AssistantApiGacsCapabilities `json:"gacsCapabilities,omitempty"` + + GcmCapabilities *AssistantApiGcmCapabilities `json:"gcmCapabilities,omitempty"` + + // LiveTvChannelCapabilities: Capabilities related to live TV channels. + LiveTvChannelCapabilities *AssistantApiLiveTvChannelCapabilities `json:"liveTvChannelCapabilities,omitempty"` + + // OemCapabilities: List of actions OEM supports. This includes built-in + // actions and custom actions. + OemCapabilities *AssistantApiOemCapabilities `json:"oemCapabilities,omitempty"` + + // OnDeviceAssistantCapabilities: on-device Assistant capabilities + OnDeviceAssistantCapabilities *AssistantApiOnDeviceAssistantCapabilities `json:"onDeviceAssistantCapabilities,omitempty"` + + // OnDeviceSmartHomeCapabilities: Capability bits for on-device Smart + // Home. go/framework-for-local-semex + OnDeviceSmartHomeCapabilities *AssistantApiOnDeviceSmartHomeCapabilities `json:"onDeviceSmartHomeCapabilities,omitempty"` + + // OnDeviceStorageCapabilities: Reflects the storage capabilities on the + // device. + OnDeviceStorageCapabilities *AssistantApiOnDeviceStorageCapabilities `json:"onDeviceStorageCapabilities,omitempty"` + + // OperatingSystem: The operating system of the device. + // + // Possible values: + // "OS_TYPE_UNKNOWN" + // "OS_TYPE_ANDROID" + // "OS_TYPE_CAST" + // "OS_TYPE_FUCHSIA" + // "OS_TYPE_LINUX" + OperatingSystem string `json:"operatingSystem,omitempty"` + + // OrderedLiveTvProviders: An ordered list containing the live tv + // providers available in the client. The order of the providers + // reflects the ranking in the client and will be respected by server as + // well. + OrderedLiveTvProviders []*AssistantApiLiveTvProvider `json:"orderedLiveTvProviders,omitempty"` + + // SelinaCapabilities: The Soli capabilities on Elaine. + // go/dingo-dc-software + SelinaCapabilities *AssistantApiSelinaCapabilites `json:"selinaCapabilities,omitempty"` + + SettingsAppCapabilities *AssistantApiSettingsAppCapabilities `json:"settingsAppCapabilities,omitempty"` + + SupportedClientOp []*AssistantApiSupportedClientOp `json:"supportedClientOp,omitempty"` + + SupportedFeatures *AssistantApiSupportedFeatures `json:"supportedFeatures,omitempty"` + + SupportedMsgVersion *AssistantApiSupportedProtocolVersion `json:"supportedMsgVersion,omitempty"` + + SupportedProviderTypes *AssistantApiSupportedProviderTypes `json:"supportedProviderTypes,omitempty"` + + SurfaceProperties *AssistantApiSurfaceProperties `json:"surfaceProperties,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AppCapabilities") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AppCapabilities") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSoftwareCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSoftwareCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSpeechCapabilities: DEPRECATED These capabilties are +// associated with speech detection on devices. +type AssistantApiSpeechCapabilities struct { + // DspAvailable: A bool indicating whether device supports dsp based + // hotword detection. + DspAvailable bool `json:"dspAvailable,omitempty"` + + // UnlockWithHotwordAvailable: A bool indicating whether device supports + // unlocking device with hotword. + UnlockWithHotwordAvailable bool `json:"unlockWithHotwordAvailable,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DspAvailable") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DspAvailable") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSpeechCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSpeechCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSuggestionsSupport: Next ID: 17 +type AssistantApiSuggestionsSupport struct { + // ClickImpersonationSupported: Whether client supports user + // impersonation on suggestion chip click. + // go/suggestion-click-impersonation + ClickImpersonationSupported bool `json:"clickImpersonationSupported,omitempty"` + + // ColoredChipBackgroundBorderSupported: Whether client supports + // suggestion chips with colored background/border. + ColoredChipBackgroundBorderSupported bool `json:"coloredChipBackgroundBorderSupported,omitempty"` + + // ColoredChipTextSupported: Whether client supports suggestion chips + // with colored text. See design doc: + // http://go/opa-suggestions-ux-eng-design. + ColoredChipTextSupported bool `json:"coloredChipTextSupported,omitempty"` + + // DebugDataSupported: Whether client supports suggestions debug data to + // be displayed. + DebugDataSupported bool `json:"debugDataSupported,omitempty"` + + // DrlHistoryChipSupported: Whether DRL history chip is supported. + // Related bug: http://b/241837879, http://b/171854732 Design doc: + // http://go/panthera-history-chip-dd DRL history chip was originally + // rolled out to Panthera in + // http://google3/googledata/experiments/mobile/agsa/studies/agsa_nga/opa_panthera_one_input_ui_launch.gcl?l=55&rcl=384682900. + // We plan to roll it out to NGA and TNG. drl_history_chip_supported bit + // specifies whether the client support (and should have) DRL history + // chip. + DrlHistoryChipSupported bool `json:"drlHistoryChipSupported,omitempty"` + + // EscapeHatchSupported: Whether client supports escape hatches aka post + // execution suggestions go/nga-escape-hatch-prd + // + // Possible values: + // "UNSUPPORTED" + // "NGA_ESCAPE_HATCH" + EscapeHatchSupported string `json:"escapeHatchSupported,omitempty"` + + // ExecutedTextSupported: Whether the client can rewrite suggestion + // query text into executed text, if the latter is present. If this + // feature is disabled, the rewrite happens in Assistant Server. + ExecutedTextSupported bool `json:"executedTextSupported,omitempty"` + + // ExecutionContextSupported: Whether the client supports passing back + // `execution_context` from + // |assistant.api.client_op.SuggestionProcessingParams| when the + // suggestion is clicked or spoken. + ExecutionContextSupported bool `json:"executionContextSupported,omitempty"` + + // FeatureSpecificActionSupport: Whether the client supports features in + // |SuggestionFeatureSpecificAction|. + FeatureSpecificActionSupport *AssistantApiFeatureSpecificActionSupport `json:"featureSpecificActionSupport,omitempty"` + + // FeatureSpecificAppActionsNotificationSupported: Whether the client + // supports handling App Actions' notification when the suggestion is + // clicked. This will allow the server to populate the + // `app_actions_notification_data` extension field from + // |SuggestionFeatureSpecificAction| proto message. + FeatureSpecificAppActionsNotificationSupported bool `json:"featureSpecificAppActionsNotificationSupported,omitempty"` + + // RuleIdInExecutionContextSupported: Whether the rule_id field in the + // execution_context is supported. This is a temporary workaround to be + // able to identify clicks on Person entity suggestions on Sabrina and + // is expected to be eventually deprecated. TODO(b/185517153) : + // Deprecate (but do not delete) once click tracking is correctly sent + // up from the Katniss client. + RuleIdInExecutionContextSupported bool `json:"ruleIdInExecutionContextSupported,omitempty"` + + // ShowExecutedTextSupported: Whether the client can show executed_text + // after the click on the suggestion chip. Must be set to false on TNG. + // TNG disregards |SuggestionProcessingParams.show_executed_text| field + // and always treats it as if |show_executed_text=true|. + ShowExecutedTextSupported bool `json:"showExecutedTextSupported,omitempty"` + + // ShowTranslationSupported: Whether the client can show chip as (text | + // translation). go/lang-partner-doc + ShowTranslationSupported bool `json:"showTranslationSupported,omitempty"` + + // SupportedDisplayTargets: A list of suggestions display targets + // supported by this client. If unset only DEFAULT + // SuggestionDisplayTarget is supported. + SupportedDisplayTargets []*AssistantApiSuggestionsSupportDisplayTargetSupport `json:"supportedDisplayTargets,omitempty"` + + // WidgetDataSupported: Whether client supports widget suggestion chip + // to be displayed. + WidgetDataSupported bool `json:"widgetDataSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ClickImpersonationSupported") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "ClickImpersonationSupported") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSuggestionsSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSuggestionsSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSuggestionsSupportDisplayTargetSupport struct { + // ExecutedTextSupported: Whether the client can rewrite suggestion + // query text into executed text, if the latter is present for the + // display target. + ExecutedTextSupported bool `json:"executedTextSupported,omitempty"` + + // HeaderTextSupported: Whether PresentationParams.header_text is + // supported for the display target. + HeaderTextSupported bool `json:"headerTextSupported,omitempty"` + + // RepressImpressionSupported: Whether Suggestion.repress_impression is + // supported. If not repressed suggestions are not returned. + RepressImpressionSupported bool `json:"repressImpressionSupported,omitempty"` + + // Target: Display target that is supported. + // + // Possible values: + // "DEFAULT" - Use the default display target. + // "NGA_INPUT_PLATE" - Show Escape Hatch chips. The chips are + // displayed outside of response layer for example over app that query + // was fulfilled in. + // "CONVERSATION_STARTERS" - Show chips as Conversation Starters in + // Opa and Panthera. + // "QUICK_ACTIONS" - Show chips as Panthera quick actions + // (go/quick-actions-dd). + // "TACTILE_ASSISTANT_SUGGESTS" - Show chips in Tactile "Assistant + // Suggests" section. + // "TACTILE_MY_ACTIONS" - Show chips in Tactile "My Actions" section. + // "TRY_SAYING" - Show chips as "Try Saying" suggestions. + // "RICH_SUGGESTIONS" - Show suggestions as rich suggestions and + // chips; go/prs-redesign-dd + Target string `json:"target,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ExecutedTextSupported") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExecutedTextSupported") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSuggestionsSupportDisplayTargetSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSuggestionsSupportDisplayTargetSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSunriseFeaturesSupport struct { + // SunriseSimulationSupported: If true, the device can slowly brighten + // the screen and simulate sunrise experience. Alarms with sunrise field + // enabled can be set on this device. + SunriseSimulationSupported bool `json:"sunriseSimulationSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SunriseSimulationSupported") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "SunriseSimulationSupported") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSunriseFeaturesSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSunriseFeaturesSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSupportedClientOp: These are the set of ClientOps that +// are supported by the device. +type AssistantApiSupportedClientOp struct { + // ClientOpName: This should be the same as the name of the + // SemanticClientOp that is supported. + ClientOpName string `json:"clientOpName,omitempty"` + + // ClientOpProperties: The properties associated with the ClientOp. This + // proto should be associated with the client_op_name. + ClientOpProperties *AssistantApiProtobuf `json:"clientOpProperties,omitempty"` + + SupportedExecution *AssistantApiSupportedClientOpSupportedExecution `json:"supportedExecution,omitempty"` + + // Version: A version of 0 is the equivalent to not having support for + // that client_op type. Note that a client_op is also unsupported if it + // is not included at all in the list of supported client_ops. + Version int64 `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClientOpName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClientOpName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSupportedClientOp) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSupportedClientOp + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSupportedClientOpSupportedExecution: Additional +// properties that client can support for executing the client op. +type AssistantApiSupportedClientOpSupportedExecution struct { + // SupportsSynchronousExecution: Client can support synchronous + // execution of the client op. For tts.OUTPUT client op it means that + // client would honor |synchronous_playback_args| argument. Please see + // more at go/synchronous-sounds-design. + SupportsSynchronousExecution bool `json:"supportsSynchronousExecution,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SupportsSynchronousExecution") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "SupportsSynchronousExecution") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSupportedClientOpSupportedExecution) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSupportedClientOpSupportedExecution + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSupportedConversationVersion: 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. +type AssistantApiSupportedConversationVersion struct { + // SupportsConversationProtocol: Whether conversation protocol is + // supported explicitly. If true, + // SingleDeviceCapabilityChecker::SupportsConversationProtocol will + // always return true. + SupportsConversationProtocol bool `json:"supportsConversationProtocol,omitempty"` + + // Version: The supported version number. + Version int64 `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SupportsConversationProtocol") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "SupportsConversationProtocol") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSupportedConversationVersion) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSupportedConversationVersion + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSupportedFeatures: These are the set of features that are +// supported by the device. It's a part of the SoftwareCapabilities of +// the device. Next ID: 62 +type AssistantApiSupportedFeatures struct { + // AaeNotificationSourceSupported: Whether the client supports the + // alternative message notification sources on AAE, in which case + // notification-related operations can access it. + AaeNotificationSourceSupported bool `json:"aaeNotificationSourceSupported,omitempty"` + + // AcpSupport: In what way is assistant continued presence supported. + // (go/opa-acp-prd) + AcpSupport *AssistantApiAssistantContinuedPresenceSupport `json:"acpSupport,omitempty"` + + ActionV2SupportedFeatures *AssistantApiActionV2SupportedFeatures `json:"actionV2SupportedFeatures,omitempty"` + + // AlarmTimerManagerApiSupported: Whether the client supports + // AlarmTimerManager API (go/alarm-timer-manager-api). + AlarmTimerManagerApiSupported bool `json:"alarmTimerManagerApiSupported,omitempty"` + + // AppControlSupport: The client information for app control support. + // More details in: go/acaia. + AppControlSupport *AssistantApiAppControlSupport `json:"appControlSupport,omitempty"` + + // AssistantExploreSupported: Whether the client supports the assistant + // explore section. This field will be active only when the Explore + // section is available to the user. This means that the user is (a) + // signed-in, (b) a IOPA / AGSA user, and (c) in a locale where explore + // is available. + AssistantExploreSupported bool `json:"assistantExploreSupported,omitempty"` + + // AssistantForKidsSupported: Whether Assistant for Kids (a.k.a. + // Designed for Family) features are supported. + AssistantForKidsSupported bool `json:"assistantForKidsSupported,omitempty"` + + // BypassDiDcCheckForComms: Whether communications flows for the client + // can bypass the DI/DC check. The client will enforce some other + // equivalent permission as necessary concerning access to device + // contacts and apps. + BypassDiDcCheckForComms bool `json:"bypassDiDcCheckForComms,omitempty"` + + // BypassMsgNotificationDismissal: Whether or not Assistant should + // enforce the dismissal of communication notifications associated with + // messages. + BypassMsgNotificationDismissal bool `json:"bypassMsgNotificationDismissal,omitempty"` + + // Client1mProvidersSupported: Whether the client supports 1m providers + // (go/1m-partner-expansion). + Client1mProvidersSupported bool `json:"client1mProvidersSupported,omitempty"` + + // ClientOpResultBatchingSupported: Whether the client can batch client + // op results before sending them to the server. + ClientOpResultBatchingSupported bool `json:"clientOpResultBatchingSupported,omitempty"` + + // CrossDeviceBroadcastSupported: Whether the client supports + // cross-device broadcast (i.e. on Torus). + CrossDeviceBroadcastSupported bool `json:"crossDeviceBroadcastSupported,omitempty"` + + // CrossDeviceBroadcastVersion: The version of cross device broadcast + // (ie; broadcast on torus) which the client supports. + // + // Possible values: + // "CROSS_DEVICE_BROADCAST_NOT_SUPPORTED" - Broadcast with torus is + // not supported on this device. + // "CROSS_DEVICE_BROADCAST_V1" - This device supports the cross device + // broadcast V1 features. + CrossDeviceBroadcastVersion string `json:"crossDeviceBroadcastVersion,omitempty"` + + // CsatVisualOverlaySupported: Whether the client supports csat visual + // overlay. (go/sd-od-csat) + CsatVisualOverlaySupported bool `json:"csatVisualOverlaySupported,omitempty"` + + // DuoClientApiFeatures: The features set which duo client on the device + // supports. This should be serialized from proto {@code + // duo_client_api.DuoClientApiFeatures}. + DuoClientApiFeatures string `json:"duoClientApiFeatures,omitempty"` + + // DuoGroupCallingSupported: Whether the client supports Duo group + // calling. + DuoGroupCallingSupported bool `json:"duoGroupCallingSupported,omitempty"` + + // FitnessFeatureSupport: Information about what support this device has + // for fitness. + FitnessFeatureSupport *AssistantApiFitnessFeatureSupport `json:"fitnessFeatureSupport,omitempty"` + + // FluidActionsSupport: Fluid Actions features supported by the client. + // If this field is not set in the incoming request, it could mean that + // the client does not support Fluid Actions. Alternatively, it could + // mean that the client supports Fluid Actions, but syncs state with + // server using the old protocol, namely ConversationStateParams. When + // b/140733618 is resolved, Surface Adaptation Layer will add this field + // for old clients that support Fluid Actions framework. + FluidActionsSupport *AssistantApiFluidActionsSupport `json:"fluidActionsSupport,omitempty"` + + // FuntimeSupported: Whether the surface client op performer supports + // Funtime alarms and timers. go/funtime-engdesign + FuntimeSupported bool `json:"funtimeSupported,omitempty"` + + // GdiSupported: Whether account linking via Google Deep Integrations + // (GDI) is supported. go/opa-gdi-design + GdiSupported bool `json:"gdiSupported,omitempty"` + + // GearheadNotificationSourceSupported: Whether the client supports the + // Gearhead message notification source, in which case + // notification-related operations can access it. + GearheadNotificationSourceSupported bool `json:"gearheadNotificationSourceSupported,omitempty"` + + // HasPhysicalRadio: Whether the client has a physical radio installed. + HasPhysicalRadio bool `json:"hasPhysicalRadio,omitempty"` + + // ImmersiveCanvasConfirmationMessageSupported: Whether the client + // supports confirmation messages in Immersive Canvas actions. + // Deprecated: use the filed in immersive_canvas_support. + ImmersiveCanvasConfirmationMessageSupported bool `json:"immersiveCanvasConfirmationMessageSupported,omitempty"` + + ImmersiveCanvasSupport *AssistantApiImmersiveCanvasSupport `json:"immersiveCanvasSupport,omitempty"` + + // InDialogAccountLinkingSupported: Whether the client supports account + // linking in-dialog (askForSignIn). This is used before this feature is + // moved to conversation protocol. To support this, the client needs to: + // - Integrate with Google Deep Integrations. - Have logic to send the + // result of account linking back to AS. + InDialogAccountLinkingSupported bool `json:"inDialogAccountLinkingSupported,omitempty"` + + // IsPairedPhoneContactUploadNeededForComms: Whether paired-phone + // contact upload is needed for communications queries to work (e.g. on + // AAE). + IsPairedPhoneContactUploadNeededForComms bool `json:"isPairedPhoneContactUploadNeededForComms,omitempty"` + + // IsPairedPhoneNeededForComms: Whether a Bluetooth-paired phone is a + // core component of communications flows on the client. + IsPairedPhoneNeededForComms bool `json:"isPairedPhoneNeededForComms,omitempty"` + + // LaunchKeyboardSupported: Which way of launching the keyboard the + // client supports. + // + // Possible values: + // "LAUNCH_KEYBOARD_UNSUPPORTED" - Launching the keyboard from a + // suggestion chip is not supported. + // "OPA_ANDROID_LAUNCH_KEYBOARD_URI" - The keyboard can be opened by + // using the opa-android://launch_keyboard uri. Takes the url-encoded + // parameters: - query: the string to prefill the keyboard with. - + // start: (optional) the start position of the span to highlight. - end: + // (optional) the end position of the span to highlight. + LaunchKeyboardSupported string `json:"launchKeyboardSupported,omitempty"` + + // LensSupported: Whether the client has Google Lens (Assistant Eyes). + LensSupported bool `json:"lensSupported,omitempty"` + + // LiveCardsSupported: Whether the surface supports LiveCards. In cases + // where the user intent flow cannot be completed within the Assistant, + // LiveCards are used to take the user to an external app or website. + // These cards will be pushed to the Google Home app via the PushMessage + // ClientOp. + LiveCardsSupported bool `json:"liveCardsSupported,omitempty"` + + // MapsDialogsSupported: Whether the client supports Assistant dialogs + // within Maps. This field will be set only when the Maps on the surface + // supports Assistant dialogs embedded within Maps. go/gsa-gmm. + MapsDialogsSupported bool `json:"mapsDialogsSupported,omitempty"` + + // MasqueradeModeSupported: Whether the device supports masquerade mode + // (go/masquerade). + MasqueradeModeSupported bool `json:"masqueradeModeSupported,omitempty"` + + // MediaControlSupport: Information about how client handles media + // controls (play, pause, skip ...) + MediaControlSupport *AssistantApiMediaControlSupport `json:"mediaControlSupport,omitempty"` + + // MediaSessionDetection: The ability of the client to detect media + // sessions on the device. + // + // Possible values: + // "UNKNOWN_MEDIA_SESSION_DETECTION" + // "RELIABLE_MEDIA_SESSION_DETECTION" - The client has perfect + // knowledge of what is playing on the device. For example, Chirp falls + // into this category. We can reliably choose to control or punt based + // on media params. + // "UNRELIABLE_MEDIA_SESSION_DETECTION" - The client has some + // knowledge about the media sessions on the device. For example, OPA TV + // falls into this category. For these cases, we should probably always + // try to return the media control client op to the client. + // "NO_MEDIA_SESSION_DETECTION" - The client has no idea about the + // media playback on the device. For these cases, we should either punt + // or attempt to control media and silently fail. + // "MEDIA_SESSION_DETECTION_DISABLED_SCREEN_CONTEXT" - Media session + // detection is supported by the client but disabled by the user (for + // example: OPA_CROS) by turning off screen context setting. + MediaSessionDetection string `json:"mediaSessionDetection,omitempty"` + + // MeetSupported: Whether the client supports joining a Google Meet + // meeting. + MeetSupported bool `json:"meetSupported,omitempty"` + + // NoInputResponseSupported: Whether the client can render no input + // response or just ignore it. No input response is returned when client + // has a no speech input interaction, eg. user tapped mic but didn't say + // anything. + NoInputResponseSupported bool `json:"noInputResponseSupported,omitempty"` + + // OpaOnSearchSupported: When the entry source is search, whether the + // client supports rendering a similar response as OPA one does. Entry + // source is defined at + // http://cs/symbol:assistant.api.params.DeviceProperties.EntrySource + OpaOnSearchSupported bool `json:"opaOnSearchSupported,omitempty"` + + // ParentalControlsSupported: Whether or not the client supports + // enabling parental controls. When a device to supports parental + // controls, it has the software necessary to store the relevant + // information required for parental controls to work. This information + // includes a boolean "enabled bit" as well as the obfuscated gaia ID of + // the kid account selected for use with parental controls. Devices + // supportings kids mode send this information to S3 via S3ClientInfo in + // every request. See go/aff-kidsproduct for details. + ParentalControlsSupported bool `json:"parentalControlsSupported,omitempty"` + + // PersistentDisplaySupported: Whether the client supports persistent + // display. The new feature allows Assistant devices with screen to + // display a continuously updating permanent display, such as ambient + // weather, without the need for a user to ask the Assistant. Design + // doc: go/assistant-persistent-display. + PersistentDisplaySupported bool `json:"persistentDisplaySupported,omitempty"` + + // PrivacyAwareLockscreenSupported: Whether the client supports the + // privacy-aware lockscreen protocol (go/assistant-lockscreen-spec). + PrivacyAwareLockscreenSupported bool `json:"privacyAwareLockscreenSupported,omitempty"` + + // RemoteCloudCastingEnabled: Whether the client has remote casting + // enabled. For ex: we want to disable this for clients like Auto. + RemoteCloudCastingEnabled bool `json:"remoteCloudCastingEnabled,omitempty"` + + // ServerGeneratedFeedbackChipsEnabled: Whether the Assistant Server + // should generate feedback suggestion chips. + ServerGeneratedFeedbackChipsEnabled bool `json:"serverGeneratedFeedbackChipsEnabled,omitempty"` + + // ShLockScreenSupported: Whether the client supports SmartHome lock + // screen logic (i.e. on Tangor). + ShLockScreenSupported bool `json:"shLockScreenSupported,omitempty"` + + // SignInMethod: Which kind of sign in the client supports. + SignInMethod *AssistantApiSignInMethod `json:"signInMethod,omitempty"` + + // SleepSensingSupported: Whether the client can monitor sleep. This + // allows us to show sleep CUJ realted information: go/TwilightDesign + // Use for development only, see the same field in + // DeviceCapabilities.SoftwareCapabilities.SelinaCapabilities. + SleepSensingSupported bool `json:"sleepSensingSupported,omitempty"` + + // SmartspaceCrossDeviceTimerSupported: Whether the client supports + // smart space cross-device timers. (go/ss-x-device-timer) + SmartspaceCrossDeviceTimerSupported bool `json:"smartspaceCrossDeviceTimerSupported,omitempty"` + + // SoliGestureDetectionSupported: Whether or not the client supports + // gesture detection via soli chips. The reason to prepend the name with + // soli is to distinguish it from computer vision based methods, e.g. + // Newman devices. + SoliGestureDetectionSupported bool `json:"soliGestureDetectionSupported,omitempty"` + + // SuggestionsSupport: Suggestion chips features, supported by the + // client. + SuggestionsSupport *AssistantApiSuggestionsSupport `json:"suggestionsSupport,omitempty"` + + // SunriseFeaturesSupport: Whether the client supports the sunrise + // screen brightening feature before the alarm fires. This is used to + // indicate whether sunrise alarms can be set on the device. + // http://cs/symbol:assistant.api.core_types.governed.RingtoneTaskMetadata.GentleWakeInfo + SunriseFeaturesSupport *AssistantApiSunriseFeaturesSupport `json:"sunriseFeaturesSupport,omitempty"` + + // TapToReadOptimizationSupported: Whether the client supports faster + // optimization for tap_to_read feature. + TapToReadOptimizationSupported bool `json:"tapToReadOptimizationSupported,omitempty"` + + // ThirdPartyGuiSupported: Whether the device supports the 3p GUI + // framework, which allows third parties to enter the conversation with + // the user, showing their logo next to their chat bubbles, etc. + // go/3p-phone + ThirdPartyGuiSupported bool `json:"thirdPartyGuiSupported,omitempty"` + + // TransactionFeaturesSupport: Transactions features, supported by the + // client. Transactions feature may includes how Transactions team want + // to populate additional information from the device to the server. + TransactionFeaturesSupport *AssistantApiTransactionFeaturesSupport `json:"transactionFeaturesSupport,omitempty"` + + // TransactionsVersion: The version of transactions which the client + // supports. + // + // Possible values: + // "NO_TRANSACTIONS" - Transactions are not supported on this device. + // "TRANSACTIONS_INITIAL_LAUNCH" - This device supports the client + // features present at the initial consumer launch of transactions. + // "TRANSACTIONS_V2" - This device supports the transaction version v2 + // client features, includes transactions clientops. Deprecated given + // there're some iOS version populate this enum but don't support + // clientops. + // "TRANSACTIONS_V3" - This device supports the transaction version v3 + // client features, includes transactions clientops. + TransactionsVersion string `json:"transactionsVersion,omitempty"` + + // UsesSeparateFullViewer: If set, it indicates that the client can open + // a separate HTML browser/webviewer (full viewer) to display certain + // visual results. These visual results usually require more memory to + // render (e.g. high resolution photos). Compared to the regular viewer + // that display all other Assistant result, the full viewer does not + // have memory limit. The field is copied from the device model. See + // http://google3/assistant/devices_platform/proto/device_model_capabilities.proto?l=225&rcl=312576471 + // Also see go/webassistant-full-card-viewer. + UsesSeparateFullViewer bool `json:"usesSeparateFullViewer,omitempty"` + + // ViewReminderHubPageNotSupported: Whether the client supports viewing + // of reminder hub page or not. Default is supported. Set to true to + // disable returning reminder hub page url in reminder responses. + ViewReminderHubPageNotSupported bool `json:"viewReminderHubPageNotSupported,omitempty"` + + // WarmWelcomeTutorialSupported: Whether the client supports the + // programmatic warm welcome tutorial. Design doc: go/opal-pww-design. + WarmWelcomeTutorialSupported bool `json:"warmWelcomeTutorialSupported,omitempty"` + + // WebBrowserSupported: Whether the supports opening a URL in a web + // browser. For example, we want to disable this for clients like Chirp. + WebBrowserSupported bool `json:"webBrowserSupported,omitempty"` + + // WhatsNextSupported: Whether or not the client supports WhatsNext in + // the protocol. + WhatsNextSupported bool `json:"whatsNextSupported,omitempty"` + + // ZoomSupported: Whether the client supports joining a Zoom meeting. + ZoomSupported bool `json:"zoomSupported,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AaeNotificationSourceSupported") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AaeNotificationSourceSupported") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSupportedFeatures) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSupportedFeatures + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSupportedProtocolVersion: 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. +type AssistantApiSupportedProtocolVersion struct { + MessageVersion []*AssistantApiSupportedProtocolVersionMessageVersionPair `json:"messageVersion,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MessageVersion") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MessageVersion") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSupportedProtocolVersion) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSupportedProtocolVersion + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiSupportedProtocolVersionMessageVersionPair struct { + // MessageName: The full path of a message which should start from the + // package name. e.g. "assistant.api.core_types.Timer". + MessageName string `json:"messageName,omitempty"` + + // Version: The supported version number. + Version int64 `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MessageName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MessageName") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSupportedProtocolVersionMessageVersionPair) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSupportedProtocolVersionMessageVersionPair + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSupportedProviderTypes: Types of providers that are +// supported by the client. For example, ChromeOS support both web app +// and Android app (for eligible devices). +type AssistantApiSupportedProviderTypes struct { + // Possible values: + // "PROVIDER_TYPE_UNSPECIFIED" + // "ANDROID_APP" - For AndroidAppInfo + // "CAST_APP" - For CastAppInfo + // "CLOUD_PROVIDER" - For CloudProviderInfo + // "SIP_PROVIDER" - For SipProviderInfo + // "IOS_APP" - For IosAppInfo + // "INTERNAL_PROVIDER" - For InternalProviderInfo + // "WEB_PROVIDER" - For WebProviderInfo + // "KAIOS_APP" - For KaiOsAppInfo + // "HOME_APP" - For HomeAppInfo + // "CHROMEOS_APP" - For ChromeOsAppInfo + SupportedTypes []string `json:"supportedTypes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "SupportedTypes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SupportedTypes") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSupportedProviderTypes) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSupportedProviderTypes + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSurfaceProperties: Properties of the surface that are not +// hardware related or feature specific. +type AssistantApiSurfaceProperties struct { + ExecutionCapabilities *AssistantApiSurfacePropertiesExecutionCapabilities `json:"executionCapabilities,omitempty"` + + // ResponseDisplayFormat: If this field is unset, the response format is + // unknown + // + // Possible values: + // "SINGLE_ITEM" - The surface can only show a single item (card, + // display text, etc) of the response at a time. For example, if both a + // display text and a card are sent in a response, the surface may only + // show the card to the user. + // "MULTIPLE_ITEMS" - The surface can show a simple multi item + // response (e.g. both a display text and a card), but can't show + // response items from a previous response. + // "FULL_HISTORY" - The surface can show complex multi item responses + // (e.g. display text, card, display text) as well as a history of + // previous responses. + ResponseDisplayFormat string `json:"responseDisplayFormat,omitempty"` + + // SupportsMultiResponse: If true, the client supports receiving + // multiple responses. See go/multiple-response-in-media-use-cases for + // more details. + SupportsMultiResponse bool `json:"supportsMultiResponse,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ExecutionCapabilities") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExecutionCapabilities") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSurfaceProperties) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSurfaceProperties + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSurfacePropertiesExecutionCapabilities: Describes the +// capabilities that are related to the execution of client ops on the +// device. +type AssistantApiSurfacePropertiesExecutionCapabilities struct { + // SupportsClientOpPreloading: Completes the preloading ie., sets up the + // stage for the execution of client ops on the device while the + // previous conv delta is being executed. Refer to go/preload-convdelta + // for more information. + SupportsClientOpPreloading bool `json:"supportsClientOpPreloading,omitempty"` + + // SupportsNonFinalizedResponses: A value of true indicates that the + // client supports streaming of non-finalized responses by use of + // ClientExecutionParams.response_stream_id. and + // ClientExecutionParams.to_be_finalized. + SupportsNonFinalizedResponses bool `json:"supportsNonFinalizedResponses,omitempty"` + + // SupportsNonMaterializedInteractions: If true, the client supports + // receiving non-materialized interactions + // (go/as-streaming-protocol-nm). + SupportsNonMaterializedInteractions bool `json:"supportsNonMaterializedInteractions,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "SupportsClientOpPreloading") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "SupportsClientOpPreloading") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSurfacePropertiesExecutionCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSurfacePropertiesExecutionCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSystemNotificationRestrictions: Restrictions related to +// system-level notifications. +type AssistantApiSystemNotificationRestrictions struct { + CategoryState []*AssistantApiSystemNotificationRestrictionsNotificationCategoryState `json:"categoryState,omitempty"` + + ChannelState []*AssistantApiSystemNotificationRestrictionsNotificationChannelState `json:"channelState,omitempty"` + + // NotificationCapabilities: Specifies whether the surface is able to + // display notifications. + // + // Possible values: + // "NO_NOTIFICATION_CAPABILITY" - The surface is not able to display + // notifications. + // "NOTIFICATIONS_DISABLED" - The notifications are disabled on the + // surface. + // "NOTIFICATIONS_ENABLED" - The notifications are enabled. + NotificationCapabilities string `json:"notificationCapabilities,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CategoryState") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CategoryState") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSystemNotificationRestrictions) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSystemNotificationRestrictions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSystemNotificationRestrictionsNotificationCategoryState: +// Notification channels state for the new server driven channels. +type AssistantApiSystemNotificationRestrictionsNotificationCategoryState struct { + // CategoryId: Notification channel type. + CategoryId int64 `json:"categoryId,omitempty"` + + // Disabled: Weather the notifications on this channel are disabled. + Disabled bool `json:"disabled,omitempty"` + + // Possible values: + // "NONE" + // "ASSISTANT_CATEGORY_SETTING" - The category was turned off in + // Assistant Notification Settings. + // "ASSISTANT_OVERALL_SETTING" - All notifications for Assistant was + // turned off in settings. + // "OS_APP_DISABLED" - All notifications for the Assistant (GSA) app + // was turned off. + // "OS_CHANNEL_GROUP_DISABLED" - Notifications for the channel group + // was turned off. + // "OS_CHANNEL_DISABLED" - Notifications for the channel was turned + // off. + DisabledReason string `json:"disabledReason,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CategoryId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CategoryId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSystemNotificationRestrictionsNotificationCategoryState) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSystemNotificationRestrictionsNotificationCategoryState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiSystemNotificationRestrictionsNotificationChannelState: +// Notification channels state. +type AssistantApiSystemNotificationRestrictionsNotificationChannelState struct { + // ChannelType: Notification channel type. + // + // Possible values: + // "TYPE_UNKNOWN" + // "TYPE_OPA_PROACTIVE" + // "TYPE_OPA_HANDOFF" + // "TYPE_OPA_MISC" + // "TYPE_OPA_RECOMMENDATIONS" + // "TYPE_OPA_PRODUCT_UPDATES" + // "TYPE_OPA_THIRD_PARTY" + ChannelType string `json:"channelType,omitempty"` + + // Enabled: Whether the notifications on this channel are enabled. + Enabled bool `json:"enabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChannelType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChannelType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiSystemNotificationRestrictionsNotificationChannelState) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiSystemNotificationRestrictionsNotificationChannelState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiThirdPartyActionConfig: 3P Action Metadata. Next ID: 3 +type AssistantApiThirdPartyActionConfig struct { + // DeviceActionCapability: DeviceActionCapability from + // DeviceModelPackage. + DeviceActionCapability *AssistantDevicesPlatformProtoDeviceActionCapability `json:"deviceActionCapability,omitempty"` + + // ProjectConfigs: List of Action project capabilities. + ProjectConfigs []*AssistantApiThirdPartyActionConfigProjectConfig `json:"projectConfigs,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DeviceActionCapability") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceActionCapability") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiThirdPartyActionConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiThirdPartyActionConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiThirdPartyActionConfigProjectConfig: Metadata for +// ActionPackage. Device Actions are disabled by default unless +// explicitly enabled for the device here, see +// go/3p-device-actions-v2-design. +type AssistantApiThirdPartyActionConfigProjectConfig struct { + // ProjectId: Google cloud project id for which the Action Package or + // Device Model is registered. + ProjectId string `json:"projectId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ProjectId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ProjectId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiThirdPartyActionConfigProjectConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiThirdPartyActionConfigProjectConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiThirdPartyCapabilities struct { + // DataSharingRestrictions: Restrictions for the device to share any + // data with third party apps. See details in go/atv-dsc. + // + // Possible values: + // "DEFAULT_NO_DATA_SHARING_RESTRICTION" - User has accepted to share + // the data with third party apps. The device has no data sharing + // restrictions. + // "NO_SHARING_ALLOWED_WITH_THIRD_PARTY" - User has declined to share + // the data with third party apps. + // "SHARING_STATUS_NOT_SET" - User hasn't made a choice on whether to + // share data with third party apps. + // "NO_SHARING_ALLOWED_WITH_THIRD_PARTY_FROM_OOBE" - User has declined + // to share the data with third party apps during OOBE flow. With this + // state, the user should see the data sharing consent compact screen. + // See cetails in http://shortn/_JsLg0OeEJj. + DataSharingRestrictions string `json:"dataSharingRestrictions,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DataSharingRestrictions") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DataSharingRestrictions") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiThirdPartyCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiThirdPartyCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiTimeOfDay: A civil time relative to a timezone. +// IMPORTANT: The definition of TimeOfDay proto is being moved to +// //assistant/api/core_types/governed/datetime_type.proto. All existing +// references will be updated to point to the new location. If you are +// adding a reference, use the new one instead. +type AssistantApiTimeOfDay struct { + // Hour: The hour, in 0...23. + Hour int64 `json:"hour,omitempty"` + + // Minute: The minute, in 0...59. + Minute int64 `json:"minute,omitempty"` + + // Nanosecond: The fraction of seconds in nanoseconds, in 0..999999999. + Nanosecond int64 `json:"nanosecond,omitempty"` + + // Second: The second, in 0...59. Leap seconds are not supported. + Second int64 `json:"second,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Hour") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Hour") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiTimeOfDay) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiTimeOfDay + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiTimeZone: 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. IMPORTANT: The definition of +// TimeZone enum is being moved to +// //assistant/api/core_types/governed/datetime_type.proto. All existing +// references will be updated to point to the new location. If you are +// adding a reference, use the new one instead. +type AssistantApiTimeZone struct { + // IanaId: Time zone in IANA format, e.g. America/Los_Angeles for USA + // Pacific Time. + IanaId string `json:"ianaId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IanaId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IanaId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiTimeZone) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiTimeZone + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantApiTimestamp: An absolute point in time independent of +// timezone or calendar, based on the proto3 Timestamp +// (//google/protobuf/timestamp.proto). IMPORTANT: The definition of +// Timestamp proto is being moved to +// //assistant/api/core_types/governed/datetime_type.proto. All existing +// references will be updated to point to the new location. If you are +// adding a reference, use the new one instead. 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. +type AssistantApiTimestamp struct { + // Nanos: Non-negative fractions of a second at nanosecond resolution. + Nanos int64 `json:"nanos,omitempty"` + + // Seconds: Seconds of UTC time since the Unix epoch. + Seconds int64 `json:"seconds,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Nanos") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Nanos") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiTimestamp) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiTimestamp + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiTransactionFeaturesSupport struct { + // VoicePinSuppressed: If true, setting this boolean means the device + // should not support voice PIN. For example, although the phone + // supports both voice and PIN pad, but we don't want users using voice. + // https://docs.google.com/document/d/1M8iJQX3GuxGZGeidS8Gl4KJt3LuBWAIlolPlW10DkxU/edit#heading=h.8ovvdd3i2thv + VoicePinSuppressed bool `json:"voicePinSuppressed,omitempty"` + + // ForceSendFields is a list of field names (e.g. "VoicePinSuppressed") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "VoicePinSuppressed") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiTransactionFeaturesSupport) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiTransactionFeaturesSupport + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantApiVolumeProperties struct { + // DefaultVolumePercentage: The volume percentages for spelled out + // values. + DefaultVolumePercentage int64 `json:"defaultVolumePercentage,omitempty"` + + HighVolumePercentage int64 `json:"highVolumePercentage,omitempty"` + + // LevelStepSize: The number of levels to move for a step. + LevelStepSize float64 `json:"levelStepSize,omitempty"` + + LowVolumePercentage int64 `json:"lowVolumePercentage,omitempty"` + + // MaximumVolumeLevel: The max number of volume levels the client + // supports. + MaximumVolumeLevel int64 `json:"maximumVolumeLevel,omitempty"` + + MediumVolumePercentage int64 `json:"mediumVolumePercentage,omitempty"` + + VeryHighVolumePercentage int64 `json:"veryHighVolumePercentage,omitempty"` + + VeryLowVolumePercentage int64 `json:"veryLowVolumePercentage,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DefaultVolumePercentage") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DefaultVolumePercentage") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantApiVolumeProperties) MarshalJSON() ([]byte, error) { + type NoMethod AssistantApiVolumeProperties + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AssistantApiVolumeProperties) UnmarshalJSON(data []byte) error { + type NoMethod AssistantApiVolumeProperties + var s1 struct { + LevelStepSize gensupport.JSONFloat64 `json:"levelStepSize"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.LevelStepSize = float64(s1.LevelStepSize) + return nil +} + +// AssistantDeviceTargetingDeviceTargetingError: The information +// associated with an error while selecting the target device. Next ID: +// 2 +type AssistantDeviceTargetingDeviceTargetingError struct { + // Possible values: + // "UNKNOWN_ERROR" + // "NO_DEVICE_IN_SAME_STRUCTURE" - Error about when there's no + // qualified devices in the same home graph structure as the local + // device. + // "NO_DEVICE_IN_SAME_NETWORK_OR_LOCATION" - Error about when there's + // no qualified devices in the same network or location as the local + // device. + // "NO_DEVICE_IN_SAME_STRUCTURE_OR_NETWORK_OR_LOCATION" - Error about + // when there's no qualified devices in the same home graph structure or + // network or location as the local device. + // "NO_DEVICE_SATISFIES_SAME_STRUCTURE_OR_UNKNOWN_IF_OWNED" - Error + // about when no qualified device was found that matched the following + // conditions: 1) Both local device and target device are in the same + // home graph structure. 2) The distance to target device is unknown + // (i.e. either local device or target device is homeless) and target + // device is owned by the user. 3) If local device and target device are + // in different structures, only allowed when the query explicitly + // mentioned device name. + // "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT" - Error about when + // no qualified device satisfies the device capability requirement. + // "NO_DEVICE_MATCHED_DEVICE_ANNOTATION" - Error of no qualified + // devices matched requirements from device annotation. + // "MULTI_TARGET_DEVICE_NOT_SUPPORTED" - Error of not supporting + // targeting multiple devices. + // "NO_DEVICE_AFTER_LOCAL_DEVICE_EXCLUDED" - Error of no device left + // after local device is excluded within inclusiveness filter. + // "UNABLE_TO_TARGET_ONLY_LOCAL_DEVICE" - Error of unable to target + // only local device within inclusiveness filter. + // "NO_DEVICE_MATCHED_REQUIRED_TRAITS" - Error of no qualified devices + // matched the required smart home traits. + // "NO_DEVICE_MATCHED_REQUIRED_DEVICE_TYPE" - Error of no qualified + // devices matched the required smart home device types. + // "NO_DEVICE_IN_SAME_OR_MENTIONED_STRUCTURE" - Error of no qualified + // devices in the mentioned structure or in the same structure as the + // local device. + // "NO_DEVICE_SATISFIES_PLAYBACK_REQUIREMENT" - Error of no device + // satisfying playback requirements. + // "STRUCT_DISAMBIG_NOT_SUPPORTED" - Error when structure + // disambiguation is not supported in the config. When config is + // supported (both structure_disambiguation_supported and + // multi_target_supported are set to true), the library would return + // structures for disambiguation. + // "ROOM_DISAMBIG_NOT_SUPPORTED" - Error when room disambiguation is + // not supported in the config. When config is supported (both + // room_disambiguation_supported and multi_target_supported are set to + // true), the library would return rooms for disambiguation. + // "UNRECOGNIZED_DEVICE_NAME" - Error when the device mentioned in the + // query is not recognized. In other words, we can't find a device which + // matched the device mentioned in the query. + // "NO_LINKED_REMOTE_DEVICES" - Used when user requests to target on a + // remote device and there are no remote devices linked. + // "NO_LINKED_REMOTE_VIDEO_DEVICES" - Used when user requests to + // target on a remote video device and there are no remote video devices + // linked. + // "NO_SAFE_DEVICE_WITH_SCREEN" - Error when there is no safe screen + // device. For example, requesting screen-requiring content from Auto + // surface. + // "ALL_QUALIFIED_DEVICES_OFFLINE" - Error when all qualified devices + // are offline. + // "CROSS_STRUCTURE_TARGETING_DISALLOWED" - When user tries to target + // a device which is in a different structure and is not allowed. For + // example, if user doesn't own the structure. See + // go/on-multi-user-access-transitivity for more details. + // "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT" - Used when user requests a + // device with certain provider but no device can satisfies provider + // requirement. + // "MISSING_LOCAL_DEVICE_SETTING" - AvailableDevice device setting of + // local device is missing. + // "NO_DEVICE_HAS_REQUIRED_APP" - Required app is not installed + // "HYBRID_DEVICE_NOT_QUALIFIED" - All remote hybrid devices fail the + // propertries requirement specific (lock/unlock, etc) for hybrid + // devices (such as Tangor). + // "NO_NEARBY_DEVICES" - No nearby hearing devices + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDeviceTargetingDeviceTargetingError) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDeviceTargetingDeviceTargetingError + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoAlarmCapability: Capability with regard +// to support of alarms by the client. +type AssistantDevicesPlatformProtoAlarmCapability struct { + // MaxSupportedAlarms: Maximum number of alarms that can be created on + // the client. Zero or unset indicates no maximum limit. + MaxSupportedAlarms int64 `json:"maxSupportedAlarms,omitempty"` + + // RestrictAlarmsToNextDay: Whether the client restricts alarms to ring + // within the next 24 hours. + RestrictAlarmsToNextDay bool `json:"restrictAlarmsToNextDay,omitempty"` + + // SupportsStopAction: Whether the client supports the STOP alarm + // action. If this is false, stop actions will be represented by the + // MUTATE action, and the device may need to check alarm state to + // determine if there's a firing alarm that needs to be dismissed. + SupportsStopAction bool `json:"supportsStopAction,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MaxSupportedAlarms") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MaxSupportedAlarms") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoAlarmCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoAlarmCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantDevicesPlatformProtoArgSpec struct { + IntValueSpec *AssistantDevicesPlatformProtoIntValueSpec `json:"intValueSpec,omitempty"` + + OptionValueSpec *AssistantDevicesPlatformProtoOptionValueSpec `json:"optionValueSpec,omitempty"` + + // Possible values: + // "TYPE_UNSPECIFIED" - A type must be specified. + // "BOOL" + // "INTEGER" - The arg value type is integer. The value can be any + // integer unless int_value_spec is provided below. + // "OPTION" - The arg value is from list of options. The valid options + // are specified from optional_value_spec below. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IntValueSpec") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IntValueSpec") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoArgSpec) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoArgSpec + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantDevicesPlatformProtoCallCallCapability struct { +} + +type AssistantDevicesPlatformProtoClientReconnectCapability struct { +} + +// AssistantDevicesPlatformProtoCloudCapability: States the cloud +// capabilities of the device, i.e. the endpoint(s) to use for cloud +// execution of Actions or Registration. +type AssistantDevicesPlatformProtoCloudCapability struct { + // CloudEndpoints: The list of CloudEndpoints supported by this Device + // Model. Note that each should have a unique |name|. If any cloud + // endpoints are provided here, then the first one in the list will be + // used by default for all Cloud Execution. An Intent may override the + // default by providing an |execution_config|. + CloudEndpoints []*AssistantDevicesPlatformProtoCloudEndpoint `json:"cloudEndpoints,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CloudEndpoints") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CloudEndpoints") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoCloudCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoCloudCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoCloudEndpoint: A cloud endpoints +// associates with this device, it can be used for query parsing, or +// cloud execution. +type AssistantDevicesPlatformProtoCloudEndpoint struct { + // Name: The name for this cloud endpoint. It's unique per Locale. This + // is not an API resource name. Ex: sample-nlu-endpoint + Name string `json:"name,omitempty"` + + // Scopes: The list of scopes to be provided in the OAuth2 token. They + // must be a subset of the scopes registered in the Account Linking + // flow, or the request will fail. If the client itself provides the + // token, then this field is ignored. + Scopes []string `json:"scopes,omitempty"` + + // Url: The URL for this endpoint, it must start with https. + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoCloudEndpoint) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoCloudEndpoint + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoDeviceActionCapability: This capability +// represents device action needed capability. Next ID: 10 +type AssistantDevicesPlatformProtoDeviceActionCapability struct { + // AssistantDeviceInRoomOptOut: Integrate your device with Google's + // Smart Home solution by putting your device into Google's Home Graph, + // a database that stores and provides contextual data about the home + // and its devices. For example, Home Graph can store the concept of a + // living room that contains multiple types of devices, when you say + // "turn on the light" to a device, if you have light in the living + // room, that light will be turned on. + AssistantDeviceInRoomOptOut bool `json:"assistantDeviceInRoomOptOut,omitempty"` + + // BuiltInIntentMode: Specifies behavior for built-in device actions for + // this device model. If not specified, defaults to + // ENABLE_CONFIGURED_INTENTS_ONLY. + // + // Possible values: + // "INTENT_MODE_UNSPECIFIED" + // "ENABLE_ALL" - All intents are enabled, regardless of whether the + // intent is registered in the `intents` field. + // "ENABLE_ALL_AUTO_ACTIONS" - All Auto device actions are enabled, + // regardless of whether the intent is registered in the `intents` + // field. Only use it for Auto device type. + // "ENABLE_CONFIGURED_INTENTS_ONLY" - Only the intents registered in + // the `intents` field will be enabled. + // "PUNT_FOR_UNCONFIGURED_INTENTS" - Only the intents registered in + // the `intents` field will be enabled. Additionally, read an error + // message when the unconfigured intents are invoked. + BuiltInIntentMode string `json:"builtInIntentMode,omitempty"` + + // CustomIntentMode: Specifies which custom device actions should be + // enabled for this device model. This will only affect the behavior of + // intents corresponding to those from the Action Package of this + // project. If not specified, defaults to ENABLE_ALL. + // + // Possible values: + // "INTENT_MODE_UNSPECIFIED" + // "ENABLE_ALL" - All intents are enabled, regardless of whether the + // intent is registered in the `intents` field. + // "ENABLE_ALL_AUTO_ACTIONS" - All Auto device actions are enabled, + // regardless of whether the intent is registered in the `intents` + // field. Only use it for Auto device type. + // "ENABLE_CONFIGURED_INTENTS_ONLY" - Only the intents registered in + // the `intents` field will be enabled. + // "PUNT_FOR_UNCONFIGURED_INTENTS" - Only the intents registered in + // the `intents` field will be enabled. Additionally, read an error + // message when the unconfigured intents are invoked. + CustomIntentMode string `json:"customIntentMode,omitempty"` + + // DefaultExecutionConfig: Default instructions for routing of any + // Intent. The data here could be overridden for specific Intents if + // provided directly in the 'intents' field. + DefaultExecutionConfig *AssistantDevicesPlatformProtoExecutionConfig `json:"defaultExecutionConfig,omitempty"` + + // InlinedActionCapability: Specifies capabilities for device actions + // that are inlined in the google.assistant.embedded.v1.DeviceAction + // message. + InlinedActionCapability *AssistantDevicesPlatformProtoInlinedActionCapability `json:"inlinedActionCapability,omitempty"` + + // Intents: Intent configurations. Built-in and custom intents may be + // configured here. Note that built-in intents will always behave with + // IntentMode of ENABLE_CONFIGURED_INTENTS_ONLY. The IntentMode for + // custom intents can be changed using the custom_intent_mode. To + // configure an intent, list it here with its intent name, e.g. + // "MY_CUSTOM_INTENT", + // "google.assistant.car.model.capabilities.AC_TEMPERATURE". + Intents []*AssistantDevicesPlatformProtoIntent `json:"intents,omitempty"` + + // ProvidedData: 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. + ProvidedData []*AssistantDevicesPlatformProtoProvidedData `json:"providedData,omitempty"` + + // Traits: List of built-in traits such as "action.devices.traits.OnOff" + // See java/com/google/home/graph/service/config/protoconf.pi As of Nov. + // 2017, we also support custom traits for EAP users. We'll eventually + // disable custom traits once custom actions are in place. + Traits []string `json:"traits,omitempty"` + + // UnderstandingConfig: Specifies the format how Google routes queries + // to 3P cloud. By default, this field is unset, all partners should get + // shallow NLU. This is needed *ONLY* for specific partners for strong + // business reasons. + UnderstandingConfig *AssistantDevicesPlatformProtoUnderstandingConfig `json:"understandingConfig,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AssistantDeviceInRoomOptOut") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AssistantDeviceInRoomOptOut") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoDeviceActionCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoDeviceActionCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantDevicesPlatformProtoDeviceModifySettingCapability struct { + ClientOpProperty *AssistantApiClientOpPropertiesDeviceModifySettingClientOpProperty `json:"clientOpProperty,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClientOpProperty") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClientOpProperty") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoDeviceModifySettingCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoDeviceModifySettingCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoExecutionConfig: Specifies the routing +// capabilities of the Intent. It will apply only when the Intent is +// triggered. Next ID: 8 +type AssistantDevicesPlatformProtoExecutionConfig struct { + // CloudEndpointName: Instructions for performing a cloud execution + // request for the Intent when the execution_type is set to CLOUD. If + // non-empty, then the device execution would be routed to the + // CloudEndpoint specified by this name. The Account Linking exchange + // may be performed to fetch the OAuth access token, and the access + // token will be included in the HTTP header. + CloudEndpointName string `json:"cloudEndpointName,omitempty"` + + // CloudIntentTranslationDisabled: If this field is set, then the + // Syndication cloud call will be disabled for this intent. Note this + // only applies if any Syndication cloud endpoint is associated with the + // Device Model, otherwise setting this field does nothing. By default, + // all Intents that are enabled and supported by the Syndication API + // will be routed through the Syndication cloud endpoint if it's + // provided. + CloudIntentTranslationDisabled bool `json:"cloudIntentTranslationDisabled,omitempty"` + + // IntentCommandFormat: Specifies the intent command format for this + // Action. For example, in order to launch an Android intent instead of + // receiving the device action payload on the client, then this field + // can be set with + // "intent:/#Intent;...;my_extra={$.params.channels[0].channelCode};end" + // The parameter "{$.params.channels[0].channelCode}" is in JSON path + // format, and will be replaced with the content from the original + // device action payload. Thus, with # JSON "execution": [ { "command": + // "action.devices.commands.SelectChannel", "params": { "channels": [{ + // "channelName": "exampleChannel", "channelCode": "1-1" }] } } ] as the + // original action result, then the final result would look like + // "intent:/#Intent;...;my_extra=\"1-1\";end" + IntentCommandFormat string `json:"intentCommandFormat,omitempty"` + + // LocalDisabled: If this field is set, then local execution capability + // is disabled for all matching intents. + LocalDisabled bool `json:"localDisabled,omitempty"` + + // LocalExecutionType: Specifies how to execute this Action when it is + // invoked locally (from the same device.) + // + // Possible values: + // "DEFAULT" - Use the default mechanism (route requests directly to + // the device via the regular channel.) + // "CLOUD" - Route all execution requests to cloud. + LocalExecutionType string `json:"localExecutionType,omitempty"` + + // RemoteDisabled: If this field is set, then remote execution + // capability is disabled for all matching intents. + RemoteDisabled bool `json:"remoteDisabled,omitempty"` + + // RemoteExecutionType: Specifies how to execute this Action when it is + // invoked remotely (from a different device.) + // + // Possible values: + // "DEFAULT" - Use the default mechanism (route requests directly to + // the device via the regular channel.) + // "CLOUD" - Route all execution requests to cloud. + RemoteExecutionType string `json:"remoteExecutionType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CloudEndpointName") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CloudEndpointName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoExecutionConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoExecutionConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantDevicesPlatformProtoInlinedActionCapability struct { + // Alarm: Specifies capabilities for handling on-device alarms. The + // presence of this field, even if empty, implies that the device + // supports alarms. + Alarm *AssistantDevicesPlatformProtoAlarmCapability `json:"alarm,omitempty"` + + // ResponseLimits: Specifies the size limits on responses. If message is + // not defined then no limits exist. + ResponseLimits *AssistantDevicesPlatformProtoResponseLimits `json:"responseLimits,omitempty"` + + // SupportSdkExecute: 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. + SupportSdkExecute bool `json:"supportSdkExecute,omitempty"` + + // SupportedDeviceOps: Specifies capabilities for handling + // assistant.embedded.v1.DeviceOp. + SupportedDeviceOps *AssistantDevicesPlatformProtoSupportedDeviceOps `json:"supportedDeviceOps,omitempty"` + + // SupportsMultiResponse: Specifies whether server can send a series of + // responses for a single query. Example: Routines where multiple + // actions to be executed one after another. + SupportsMultiResponse bool `json:"supportsMultiResponse,omitempty"` + + // Timer: Specifies capabilities for handling on-device timers. The + // presence of this field, even if empty, implies that the device + // supports timers. + Timer *AssistantDevicesPlatformProtoTimerCapability `json:"timer,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Alarm") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Alarm") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoInlinedActionCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoInlinedActionCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantDevicesPlatformProtoIntValueSpec struct { + MaxValue int64 `json:"maxValue,omitempty,string"` + + MinValue int64 `json:"minValue,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "MaxValue") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MaxValue") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoIntValueSpec) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoIntValueSpec + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoIntent: An intent configures the +// behavior of a device action for this device. Next ID: 7 +type AssistantDevicesPlatformProtoIntent struct { + // ArgSpecs: List of arguments associated this intent. Each of which + // depends a template for the expected argument. + ArgSpecs map[string]AssistantDevicesPlatformProtoArgSpec `json:"argSpecs,omitempty"` + + // ExecutionConfig: Instructions for the routing of this Intent. + ExecutionConfig *AssistantDevicesPlatformProtoExecutionConfig `json:"executionConfig,omitempty"` + + // Name: The name of the intent. + Name string `json:"name,omitempty"` + + // ProvidedDataNames: List of provided data names used by this intent. + // Note that some built-in intents will not function properly without + // provided data, such as `action.intent.SwitchChannel` or + // `action.intent.AppSelector`. + ProvidedDataNames []string `json:"providedDataNames,omitempty"` + + // SecurityConfig: Security configuration for this Intent. + SecurityConfig *AssistantDevicesPlatformProtoSecurityConfig `json:"securityConfig,omitempty"` + + // TriggerConditions: The conditions which must be met by the device + // before executing this Intent. More than one can be provided, in which + // case the conditions operate with the "AND" operator, i.e. the first + // condition which is failed will be used to restrict the execution of + // this Intent. + TriggerConditions []*AssistantDevicesPlatformProtoTriggerCondition `json:"triggerConditions,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArgSpecs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArgSpecs") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoIntent) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoIntent + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoInternalCapability: 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. +type AssistantDevicesPlatformProtoInternalCapability struct { + // AllowedAssistantSdkAuthProjectIds: When using the Assistant SDK + // (Embedded Assistant API), the project id used to authenticate the + // gRPC request is checked and must match against the project id of the + // Device Model. We will additionally allow the project ids listed in + // the device model here to be let through. See + // https://docs.google.com/document/d/1InAczpQJs6LCH1l--2yy67JM9hsBJbiL57fusnL3A8A + AllowedAssistantSdkAuthProjectIds []string `json:"allowedAssistantSdkAuthProjectIds,omitempty"` + + // AppCapabilitiesFromDeviceInstallApps: Load the + // assistant.api.AppCapabilities from DEVICE_INSTALLED_APP footprint + // corpus. See go/edoras-geller. + AppCapabilitiesFromDeviceInstallApps bool `json:"appCapabilitiesFromDeviceInstallApps,omitempty"` + + // CloudDeviceActionEndpoint: Uses this endpoint for device action + // fulfillment when there's no endpoint in syndication_metadata. 1p + // surfaces/devices such as telephone can enable this for its cloud + // action fulfillment without enabling the whole syndication experience. + CloudDeviceActionEndpoint *AssistantDevicesPlatformProtoCloudEndpoint `json:"cloudDeviceActionEndpoint,omitempty"` + + // DeviceActionsEligibleForHighConfidence: Signals that the model will + // have updated ranking behavior as described in + // https://docs.google.com/document/d/1SN_AgadRr_cdIrFe-qgRbIX2J1sOE7lcRXAvM1GUPoU. + DeviceActionsEligibleForHighConfidence bool `json:"deviceActionsEligibleForHighConfidence,omitempty"` + + // ForceSignIn: Make Google sign-in mandatory for using Google Assistant + // on the device. (This bit is initially added for Samsung TV.) + ForceSignIn bool `json:"forceSignIn,omitempty"` + + // ForceThirdPartyDeviceIdForDeviceLookup: When looking up device (for + // example for disclosure consent check), then always use the third + // party device id for lookup instead of any other device id which would + // normally have higher precedence, such as cast_device_id. + ForceThirdPartyDeviceIdForDeviceLookup bool `json:"forceThirdPartyDeviceIdForDeviceLookup,omitempty"` + + // ForceTransactionsAuthentication: Adds "transactions.AUTHENTICATION" + // for car automation probers. Since the probers run as Assistant SDK + // requests, voice match always fails for car automation requests, so we + // add this client op as a hack to allow probers to appear as personal + // devices and bypass voice match. See b/137221645. + ForceTransactionsAuthentication bool `json:"forceTransactionsAuthentication,omitempty"` + + // HasCustomSearchResultsRendering: Signals that this device can + // "render" raw search results even with no screen (e.g., using a text + // reader). If this is true, fallback search results can be returned as + // a custom device action in a SearchResults message. + // http://google3/assistant/embedded/proto_translation/utils/proto/search_results.proto + HasCustomSearchResultsRendering bool `json:"hasCustomSearchResultsRendering,omitempty"` + + // OverrideProjectIdForDeviceLookup: When looking up device (for example + // for disclosure consent check), use this project id as part of the + // primary key for the device lookup (i.e. instead of the + // device_config.agent_id.) The precedence is as follows: 1) this field, + // if set for the device's device model 2) device_config.agent_id 3) + // device_model.project_id + OverrideProjectIdForDeviceLookup string `json:"overrideProjectIdForDeviceLookup,omitempty"` + + StadiaAssistantConfig *AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig `json:"stadiaAssistantConfig,omitempty"` + + // TelephoneAttribution: Telephone server is able to send attribution to + // user feature phone. See go/telephone-attribution. + TelephoneAttribution bool `json:"telephoneAttribution,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AllowedAssistantSdkAuthProjectIds") to unconditionally include in + // API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AllowedAssistantSdkAuthProjectIds") to include in API requests with + // the JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoInternalCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoInternalCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig: +// The StadiaAssistantConfig. This field should only be set if the +// device model is a Stadia. +type AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig struct { + // Possible values: + // "UNSPECIFIED" - Platform unspecified. + // "CHROMECAST" - Platform is Chromecast. + // "WEB_BROWSER" - Platform is web browser. + StadiaPlatform string `json:"stadiaPlatform,omitempty"` + + // ForceSendFields is a list of field names (e.g. "StadiaPlatform") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "StadiaPlatform") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoInternalCapabilityStadiaAssistantConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantDevicesPlatformProtoMediaNextCapability struct { +} + +type AssistantDevicesPlatformProtoMediaPauseCapability struct { +} + +type AssistantDevicesPlatformProtoMediaPlayMediaCapability struct { +} + +type AssistantDevicesPlatformProtoMediaPreviousCapability struct { +} + +type AssistantDevicesPlatformProtoMediaResumeCapability struct { +} + +type AssistantDevicesPlatformProtoMediaStopCapability struct { +} + +type AssistantDevicesPlatformProtoOptionValueSpec struct { + Values []string `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Values") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Values") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoOptionValueSpec) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoOptionValueSpec + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoProvidedData: 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. +type AssistantDevicesPlatformProtoProvidedData struct { + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoProvidedData) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoProvidedData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantDevicesPlatformProtoProviderOpenCapability struct { + ClientOpProperty *AssistantApiClientOpPropertiesProviderOpenClientOpProperty `json:"clientOpProperty,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClientOpProperty") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClientOpProperty") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoProviderOpenCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoProviderOpenCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoResponseLimits: Specifies the size +// limits on responses receivable by the client. +type AssistantDevicesPlatformProtoResponseLimits struct { + // MaxAssistResponseSizeBytes: Max size in bytes of the total serialized + // AssistResponse receivable by the client. If response exceeds this + // max, response may be modified by the server. + MaxAssistResponseSizeBytes int64 `json:"maxAssistResponseSizeBytes,omitempty"` + + // MaxDisplayLinesBytes: Maximum size in bytes (not characters) of text + // the display can handle (which may be different from how much the + // display can show at a time due to scrolling). + MaxDisplayLinesBytes int64 `json:"maxDisplayLinesBytes,omitempty"` + + // MaxSuggestionChipBytes: Maximum size in bytes (not characters) for + // each suggestion chip. + MaxSuggestionChipBytes int64 `json:"maxSuggestionChipBytes,omitempty"` + + // MaxSuggestionChips: Maximum number of suggestion chips the device can + // handle to display. + MaxSuggestionChips int64 `json:"maxSuggestionChips,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "MaxAssistResponseSizeBytes") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "MaxAssistResponseSizeBytes") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoResponseLimits) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoResponseLimits + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoSecurityConfig: Encapsulates security +// configuration for a single intent of a device model. +type AssistantDevicesPlatformProtoSecurityConfig struct { + // AuthMechanismForRemoteRequests: Specifies auth mechanism to be used + // upon remote request for device action. + // + // Possible values: + // "NONE" - Indicates that auth is not required. + // "ENABLED" - Indicates that auth is required. Auth mechanism used is + // determined automatically at query time, based on various factors such + // as device type, user settings, etc. + // "FINGERPRINT_OR_PASSWORD" - Use fingerprint, with fallback to + // Google account password if fingerprint capabilities are not available + // on personal device. Note: explicit configuration of specific auth + // mechanism is being deprecated. + // "PIN" - Prompt for pin, sent to cloud for validation. Note: + // explicit configuration of specific auth mechanism is being + // deprecated. + AuthMechanismForRemoteRequests string `json:"authMechanismForRemoteRequests,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AuthMechanismForRemoteRequests") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AuthMechanismForRemoteRequests") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoSecurityConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoSecurityConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantDevicesPlatformProtoSendChatMessageCapability struct { +} + +// AssistantDevicesPlatformProtoSupportedDeviceOps: 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. +type AssistantDevicesPlatformProtoSupportedDeviceOps struct { + // CallCall: |call_call| specifies the support for the call.CALL + // clientop, and the corresponding call_call field in + // assistant.embedded.v1.DeviceOp. + CallCall *AssistantDevicesPlatformProtoCallCallCapability `json:"callCall,omitempty"` + + // ClientReconnect: |client_reconnect| indicates support for + // client.RECONNECT using assistant.embedded.v1.DeviceOp. There is an + // alternative API/capability for client.RECONNECT specified in + // RoutineCapability.supports_reconnect. Client should choose between + // this and RoutineCapability but not both. + ClientReconnect *AssistantDevicesPlatformProtoClientReconnectCapability `json:"clientReconnect,omitempty"` + + // DeviceModifySetting: |device_modify_setting| specifies the support + // for device.MODIFY_SETTING client_op, and the corresponding + // device_modify_setting field in assistant.embedded.v1.DeviceOp. + DeviceModifySetting *AssistantDevicesPlatformProtoDeviceModifySettingCapability `json:"deviceModifySetting,omitempty"` + + MediaNext *AssistantDevicesPlatformProtoMediaNextCapability `json:"mediaNext,omitempty"` + + MediaPause *AssistantDevicesPlatformProtoMediaPauseCapability `json:"mediaPause,omitempty"` + + MediaPlayMedia *AssistantDevicesPlatformProtoMediaPlayMediaCapability `json:"mediaPlayMedia,omitempty"` + + MediaPrevious *AssistantDevicesPlatformProtoMediaPreviousCapability `json:"mediaPrevious,omitempty"` + + MediaResume *AssistantDevicesPlatformProtoMediaResumeCapability `json:"mediaResume,omitempty"` + + MediaStop *AssistantDevicesPlatformProtoMediaStopCapability `json:"mediaStop,omitempty"` + + // ProviderOpen: |provider_open| specifies the support for provider.OPEN + // client_op, and the corresponding provider_open field in + // assistant.embedded.v1.DeviceOp. + ProviderOpen *AssistantDevicesPlatformProtoProviderOpenCapability `json:"providerOpen,omitempty"` + + // SendChatMessage: |send_chat_message| specifies the support for the + // chat_message.SEND clientop, and the corresponding send_chat_message + // field in assistant.embedded.v1.DeviceOp. + SendChatMessage *AssistantDevicesPlatformProtoSendChatMessageCapability `json:"sendChatMessage,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CallCall") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CallCall") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoSupportedDeviceOps) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoSupportedDeviceOps + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoTimerCapability: Capability with regard +// to support of timers by the client. +type AssistantDevicesPlatformProtoTimerCapability struct { + // MaxSupportedExtendedTimerDuration: Maximum extended timer duration + // supported by the client. The extended timer duration is the total + // start-to-finish duration after an AddTimeToTimer operation. E.g. if a + // user sets a timer for 30 minutes, and later adds 10 minutes, the + // extended duration is 40 minutes. Zero or unset indicates no maximum + // limit. + MaxSupportedExtendedTimerDuration *AssistantApiDuration `json:"maxSupportedExtendedTimerDuration,omitempty"` + + // MaxSupportedTimerDuration: Maximum timer duration supported by the + // client. Zero or unset indicates no maximum limit. + MaxSupportedTimerDuration *AssistantApiDuration `json:"maxSupportedTimerDuration,omitempty"` + + // MaxSupportedTimers: Maximum number of timers that can be created on + // the client. Zero or unset indicates no maximum limit. + MaxSupportedTimers int64 `json:"maxSupportedTimers,omitempty"` + + // SupportsMutateAction: Whether the client supports the MUTATE timer + // action. If this is false, mutate operations may be handled by sending + // a pair of REMOVE and CREATE timer actions to replace the existing + // timer instead of mutating it. + SupportsMutateAction bool `json:"supportsMutateAction,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "MaxSupportedExtendedTimerDuration") to unconditionally include in + // API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "MaxSupportedExtendedTimerDuration") to include in API requests with + // the JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoTimerCapability) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoTimerCapability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoTriggerCondition: 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. +type AssistantDevicesPlatformProtoTriggerCondition struct { + // RequiredStateValues: The map of state keys along with their values + // which must be returned by the device, for example to start the + // dishwasher you may require states: {"door": "CLOSED", + // "detergent_status": "READY"}. + RequiredStateValues map[string]AssistantDevicesPlatformProtoArgSpec `json:"requiredStateValues,omitempty"` + + // SimpleTts: A simple TTS to play. + SimpleTts string `json:"simpleTts,omitempty"` + + // Status: Refers to a defined ConditionalResult keyed by its status. It + // could be a built-in or custom ConditionalResult for this Intent. + // Note: the states provided by the device MUST contain all of the + // states required by the ConditionalResult. + Status string `json:"status,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RequiredStateValues") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RequiredStateValues") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoTriggerCondition) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoTriggerCondition + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantDevicesPlatformProtoUnderstandingConfig: Specifies the NLU +// level that Google performs, which determines the request format sent +// to the 3P cloud. +type AssistantDevicesPlatformProtoUnderstandingConfig struct { + // NluLevel: Specifies the NLU level for the intent. + // + // Possible values: + // "DEFAULT_SHALLOW_NLU" - Default value: Shallow NLU, the cloud + // request contains a structured intent including the command (e.g. + // "action.devices.commands.SelectChannel"), the unparsed description + // (e.g. "Tom Cruise action movies"), the target device and the target + // application. + // "NO_NLU" - No NLU, the cloud request contains the transcribed query + // (raw query or rewritten query based on previous conversation). + // "DEEP_NLU" - Deep NLU, the cloud request specifies a structured + // description of the media the user wants to act upon. E.g.: for query + // "Play an action movie with Tom Cruise", the structured description + // would be: "parsedMediaDescription": { "mediaType": "MOVIE", "genre": + // { "name": "action", "externalId": { "tmsId": "tmsIdForActionGenre" }, + // }, "actor": { "name": "Tom Cruise", "externalId": { "tmsId": + // "tmsRootIdForTomCruise", }, }, }, + NluLevel string `json:"nluLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NluLevel") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NluLevel") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantDevicesPlatformProtoUnderstandingConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantDevicesPlatformProtoUnderstandingConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantLogsAllMediaStreamLog struct { + // Streams: All active media streams while the user issues the query. + Streams []*AssistantLogsMediaStreamLog `json:"streams,omitempty"` + + // TargetStream: 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. + TargetStream *AssistantLogsMediaStreamLog `json:"targetStream,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Streams") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Streams") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsAllMediaStreamLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsAllMediaStreamLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsAmbiguousTargetDeviceLog: 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. +type AssistantLogsAmbiguousTargetDeviceLog struct { + // AmbiguousDeviceIndex: Device index of the initial ambiguous devices. + // The device index in this message is consistent with the device index + // in DeviceInfoLog. It would be used to track more detailed information + // of a device if needed. + AmbiguousDeviceIndex []int64 `json:"ambiguousDeviceIndex,omitempty"` + + // FinalTargetDevice: the final targeted device selected by playability + // filter or DeviceSelectionDialog + FinalTargetDevice *AssistantLogsDeviceInfoLog `json:"finalTargetDevice,omitempty"` + + // PlayabilityFilteredDevicesIndex: Device index of the devices after + // playability filter + PlayabilityFilteredDevicesIndex []int64 `json:"playabilityFilteredDevicesIndex,omitempty"` + + // PuntInfoLog: When there is no qualified devices after playability + // check, it would populate punt_info below. If all devices are filtered + // out for the same reason, there would only be one item. Otherwise, + // there will be multiple items. + PuntInfoLog []*AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog `json:"puntInfoLog,omitempty"` + + // StructureFilteredDeviceIndex: Device index of the devices after + // structure filter + StructureFilteredDeviceIndex []int64 `json:"structureFilteredDeviceIndex,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AmbiguousDeviceIndex") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AmbiguousDeviceIndex") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsAmbiguousTargetDeviceLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsAmbiguousTargetDeviceLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog: 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. +type AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog struct { + // DeviceIndex: Index of devices that have the same punt info during + // playability check, i.e. same media_excuse and provider_mid. + DeviceIndex []int64 `json:"deviceIndex,omitempty"` + + // MediaExcuse: Excuse for media action triggering. See: + // assistant/verticals/media/proto/media_excuse.proto. + MediaExcuse int64 `json:"mediaExcuse,omitempty"` + + // ProviderMid: Provider id that the excuse belongs to. This is the KG + // MID of the provider, e.g., "/m/09jcvs" for Youtube. + ProviderMid string `json:"providerMid,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceIndex") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceIndex") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsAmbiguousTargetDeviceLogPuntInfoLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsCommunicationDeviceContactInfoLog: This is the log +// version of apps.people.oz.external.mergedpeopleapi.DeviceContactInfo +// Next ID: 2 +type AssistantLogsCommunicationDeviceContactInfoLog struct { + // RawContactInfo: This list provides account information from the raw + // contact which is the source of this field. + RawContactInfo []*AssistantLogsCommunicationRawDeviceContactInfoLog `json:"rawContactInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RawContactInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RawContactInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsCommunicationDeviceContactInfoLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsCommunicationDeviceContactInfoLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsCommunicationFuzzyNgramMatchLog: This is the log version +// of fuzzy ngram match results that's used for generating the best +// fuzzy match. Next ID: 3 +type AssistantLogsCommunicationFuzzyNgramMatchLog struct { + RelativeCost float64 `json:"relativeCost,omitempty"` + + // Possible values: + // "NONE" + // "EDIT_DISTANCE" + // "GENIE_PLEXICON_DISTANCE" + // "GENIE_ALTERNATIVE_RECOGNITION" + // "JAPANESE_NAME_TRANSLITERATOR" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RelativeCost") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RelativeCost") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsCommunicationFuzzyNgramMatchLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsCommunicationFuzzyNgramMatchLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AssistantLogsCommunicationFuzzyNgramMatchLog) UnmarshalJSON(data []byte) error { + type NoMethod AssistantLogsCommunicationFuzzyNgramMatchLog + var s1 struct { + RelativeCost gensupport.JSONFloat64 `json:"relativeCost"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.RelativeCost = float64(s1.RelativeCost) + return nil +} + +// AssistantLogsCommunicationGoogleAccountProvenance: 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 +type AssistantLogsCommunicationGoogleAccountProvenance struct { + Email string `json:"email,omitempty"` + + GaiaId int64 `json:"gaiaId,omitempty,string"` + + IsDasherAccount bool `json:"isDasherAccount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Email") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Email") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsCommunicationGoogleAccountProvenance) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsCommunicationGoogleAccountProvenance + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsCommunicationPersonMetadataLog: This is the log version +// of apps.people.oz.external.mergedpeopleapi.PersonMetadata Next ID: 2 +type AssistantLogsCommunicationPersonMetadataLog struct { + DeviceContactInfo []*AssistantLogsCommunicationDeviceContactInfoLog `json:"deviceContactInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceContactInfo") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceContactInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsCommunicationPersonMetadataLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsCommunicationPersonMetadataLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsCommunicationPersonalContactDataLog: Contact meta data. +// Next ID: 30 +type AssistantLogsCommunicationPersonalContactDataLog struct { + // AccountProvenance: Google AccountProvenance of the contact. + AccountProvenance *AssistantLogsCommunicationGoogleAccountProvenance `json:"accountProvenance,omitempty"` + + // CommonNameAliasConfidence: Populated if matched_name_type is + // GIVEN_NAME_ALIAS or FULL_NAME_ALIAS. + CommonNameAliasConfidence float64 `json:"commonNameAliasConfidence,omitempty"` + + // ConceptId: Concept id for relationships in English, e.g. "Mother" for + // all non-English locales. It's only populated for source = + // RELATIONSHIP. + ConceptId string `json:"conceptId,omitempty"` + + // DeviceContactAttributes: Integer value corresponding to + // DeviceContactExtraMetadata.Attribute enum. + // http://google3/social/graph/wire/proto/merged_person.proto?l=933&rcl=320308954 + DeviceContactAttributes []int64 `json:"deviceContactAttributes,omitempty"` + + // EmailIdCount: # emails stored for the contact. + EmailIdCount int64 `json:"emailIdCount,omitempty"` + + // FuzzyNgramMatch: Populate only if ContactRecognitionAlternate.Source + // is 'FUZZY_CONTACT_MATCH'. + FuzzyNgramMatch []*AssistantLogsCommunicationFuzzyNgramMatchLog `json:"fuzzyNgramMatch,omitempty"` + + // GaiaId: Contact owner's gaia id from + // cs/symbol::symbol:quality_qrewrite.PersonalContactData.shared_contact_ + // owner_gaia_id. Only populated for is_shared = true and non sign-out + // mode and user is not the owner of the contact(shared contact from + // other user). + GaiaId int64 `json:"gaiaId,omitempty,string"` + + // IsContactFromSecondaryAccount: Boolean value indicating whether + // selected contact is from different account than the logged in + // account. + IsContactFromSecondaryAccount bool `json:"isContactFromSecondaryAccount,omitempty"` + + // IsShared: If this is a shared contact. This is true in 2 cases: - + // User is calling their own contacts that have been marked as shared. - + // User is calling shared contacts from some other user's contact list. + IsShared bool `json:"isShared,omitempty"` + + // IsTransliteratedMatch: Indicate the contact matches the + // transliterated query. + IsTransliteratedMatch bool `json:"isTransliteratedMatch,omitempty"` + + // IsVanityContact: True if the contact is a vanity contact(has email = + // user's email address). + IsVanityContact bool `json:"isVanityContact,omitempty"` + + // IsVisibleToGuestsRelationship: If the lookup was done using + // relationship which is visible to guests. This value will only be set + // if lookup was done using relationship. E.g. user has a guest + // relationship (doctor) -> (John) And user says "call doctor", then + // this value will be true. + IsVisibleToGuestsRelationship bool `json:"isVisibleToGuestsRelationship,omitempty"` + + // MatchedNameType: The matched name type of a contact candidate. + // + // Possible values: + // "UNSPECIFIED" + // "GIVEN_NAME" - Contact's given name, or first word in name, or last + // word if query is in CJK. + // "FAMILY_NAME" - Contact's family name, or last word in name, or + // first word if query is in CJK. + // "FULL_NAME" - Contact's display name, or given+family, or + // family+given if query is in CJK. Contact's middle name is optional. + // "NICKNAME" - Query span matches contact's nickname. + // "OTHER" - Not used yet. + // "INITIAL_WITH_FAMILY_NAME" - Either or both of first/middle + // initials along with family name. + // "EMAIL_USERNAME" - Email username, controlled by + // FocusNameParams.annotate_email_username. + // "VANITY_NICKNAME" - Vanity nicknames like "myself", data is at + // //quality/qrewrite/servlets/internal/focus_name/data/vanity_nickname.t + // xt + // "GIVEN_NAME_ALIAS" - Contact's given name is a common name alias of + // query span, e.g. query [Bob] may match contact with given name + // "Robert". + // "FULL_NAME_ALIAS" - Contact's given name is a common name alias of + // first word in query span, while remaining parts fully matched. + // "HOMOPHONE_GIVEN_NAME" - Homophone name match of given name, or + // last word. Only for CJK query. + // "HOMOPHONE_FAMILY_NAME" - Homophone name match of family name, or + // first word. Only for CJK query. + // "HOMOPHONE_FULL_NAME" - Homophone name match of full name, or + // family+given. Only for CJK query. + // "HOMOPHONE_NICKNAME" - Homophone name match of nickname. Only for + // CJK query. + // "GIVEN_MIDDLE_NAME" - Contact's given name + middle name. Only for + // contacts with 3 words. + // "GIVEN_NAME_WITH_FAMILY_NAME_INITIAL" - Contact's given name along + // with last name initial. Only support non-CJKT contact name. + // "EMAIL_OF_FAMILY_MEMBER" - This type indicates we find a match of + // the user's family member - as defined by families.google.com - by + // matching the email full address. Controlled by + // FocusNameParams.annotate_email_full_address. + MatchedNameType string `json:"matchedNameType,omitempty"` + + // MatchedRecognitionAlternateName: Alternate recognition term which was + // used to match this contact. + MatchedRecognitionAlternateName string `json:"matchedRecognitionAlternateName,omitempty"` + + // MatchedStarlightLookupName: Ngram matched by starlight lookup for + // fuzzy matching in fulfillment. We need this to analyze how many + // contacts are returned by starlight lookup that is not matched by + // fuzzy matching. For example, "Komal Dear" is matched to "Komal Dr" by + // fuzzy match. When doing starlight lookup, "Komal" and "Dr" will be + // looked up separately. So "Dr xxx" will also be returned. We want to + // see how often this happens. + MatchedStarlightLookupName []string `json:"matchedStarlightLookupName,omitempty"` + + // Metadata: PersonMetadata of the selected contact. + Metadata *AssistantLogsCommunicationPersonMetadataLog `json:"metadata,omitempty"` + + // NameMatchedContactIndex: The indices of the contact in + // |candidate_contact| whose name matches the |selected_contact_data|. + // |candidate_contact|: + // http://google3/logs/proto/assistant/contact.proto?l=111&rcl=306283376 + // |selected_contact_data|: + // http://google3/logs/proto/assistant/contact.proto?l=108&rcl=306283376 + NameMatchedContactIndex []int64 `json:"nameMatchedContactIndex,omitempty"` + + // OriginalQueryName: The original name in the query as transcribed by + // ASR. + OriginalQueryName string `json:"originalQueryName,omitempty"` + + // Phone: Information regarding the phone endpoints of the selected + // contact. Currently it is only logged for selected candidate. + Phone []*AssistantLogsCommunicationPhoneLog `json:"phone,omitempty"` + + // PhoneNumberCount: # phone_numbers stored for the contact. + PhoneNumberCount int64 `json:"phoneNumberCount,omitempty"` + + // PkgReferenceType: Encodes if pkg_person was resolved via a name or + // relationship reference. + // + // Possible values: + // "UNKNOWN_PKG_REFERENCE_TYPE" + // "PKG_NAME_REFERENCE" - Ann [Charlie] + // "PKG_RELATIONSHIP_REFERENCE" - my family dad my sister's kids + PkgReferenceType string `json:"pkgReferenceType,omitempty"` + + // RecognitionAlternateScore: Populate only if + // ContactRecognitionAlternate.Source is not NONE. + RecognitionAlternateScore float64 `json:"recognitionAlternateScore,omitempty"` + + // RecognitionAlternateSource: Recognition alternative source type. If + // not none, then it indicates the personal contact data is alternative + // and how the alternative is fulfilled. + // + // Possible values: + // "NONE" + // "S3_HYPOTHESES" - Alternate name from S3 recognition topN + // hypothesis. + // "GENIE_QUERY_ALTERNATIVES" - Alternate name from Genie query + // alternatives. + // "NAME_CORRECTION_LOG" - Alternate name from contact correction + // history. + // "FUZZY_CONTACT_MATCH" - Fuzzy match with user's contacts. + // "NEURAL_CONTACT_MATCH" - Neural match. See + // go/phonetic-contact-match. + // "NEURAL_CONTACT_MATCH_DARK_LAUNCH" - The dark launch for a neural + // match. We found a match, but we ignore it for serving and just log + // it. + RecognitionAlternateSource string `json:"recognitionAlternateSource,omitempty"` + + // RelationshipMemoryCount: The number of resolved relationship names + // and contact pointers from Assistant Memory. + RelationshipMemoryCount int64 `json:"relationshipMemoryCount,omitempty"` + + // SelectedPhone: Information regarding the selected phone endpoint. + // Currently it is only logged for selected candidate. + SelectedPhone *AssistantLogsCommunicationPhoneLog `json:"selectedPhone,omitempty"` + + // ShortcutContactInfo: Shortcut information of the contact. + ShortcutContactInfo *MajelContactInformationShortcutInformation `json:"shortcutContactInfo,omitempty"` + + // Source: The contact source of a contact candidate. + // + // Possible values: + // "UNKNOWN" + // "FOCUS_CONTACT" - Contacts from Focus + // "DEVICE_CONTACT" - Contacts from device, see go/device-content + // "GMAIL_INFERENCE" - Contacts inferred from Gmail + // "S3_DECORATOR" - Contacts from S3 decorator + // "RELATIONSHIP" - Whitelisted relationships no matter if user has + // such contact, see go/sls-personal_relationship_names_and_aliases. + // "VANITY" - Vanity nicknames or user's own profile name. + // "SIGNED_OUT_DEVICE" - Signed out device contact names + // "SHARED_CONTACT" - Contacts shared from other users. See + // go/multi-user-shared-contact. + // "FAMILY_MEMBER" - People in the user's family group in + // http://families.google.com who are not contacts. + // "SHARED_DEVICE_USER" - People who share a device with the user who + // are not contacts. + // "ON_DEVICE_CONTACT_LOOKUP" - Contacts from on device lookup during + // contact fulfillment. + Source string `json:"source,omitempty"` + + // SystemContactGroupId: Integer value corresponding to + // SystemContactGroup enum. + // http://google3/social/graph/wire/proto/merged_person.proto?l=3151&rcl=320308954 + SystemContactGroupId []int64 `json:"systemContactGroupId,omitempty"` + + // WhatsappPhoneNumberCount: DEPRECATED. Use phone instead. Used before + // 2020-01-13. Number of phone numbers annotated with Whatsapp. + WhatsappPhoneNumberCount int64 `json:"whatsappPhoneNumberCount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccountProvenance") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountProvenance") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsCommunicationPersonalContactDataLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsCommunicationPersonalContactDataLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AssistantLogsCommunicationPersonalContactDataLog) UnmarshalJSON(data []byte) error { + type NoMethod AssistantLogsCommunicationPersonalContactDataLog + var s1 struct { + CommonNameAliasConfidence gensupport.JSONFloat64 `json:"commonNameAliasConfidence"` + RecognitionAlternateScore gensupport.JSONFloat64 `json:"recognitionAlternateScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.CommonNameAliasConfidence = float64(s1.CommonNameAliasConfidence) + s.RecognitionAlternateScore = float64(s1.RecognitionAlternateScore) + return nil +} + +// AssistantLogsCommunicationPhoneLog: This is the log version of +// apps.people.oz.external.mergedpeopleapi.Phone proto. Next ID: 3 +type AssistantLogsCommunicationPhoneLog struct { + // RawDeviceContactInfo: This list provides account information from the + // raw contact which is the source of this field. + RawDeviceContactInfo []*AssistantLogsCommunicationRawDeviceContactInfoLog `json:"rawDeviceContactInfo,omitempty"` + + // Type: Label for phone number in the Contacts app. It can have + // standard values provided by the app e.g. MOBILE, HOME, WORK etc, but + // users are allowed to modify. So essentially it becomes user content. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "RawDeviceContactInfo") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RawDeviceContactInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsCommunicationPhoneLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsCommunicationPhoneLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsCommunicationRawDeviceContactInfoLog: This is the log +// version of +// apps.people.oz.external.mergedpeopleapi.RawDeviceContactInfo proto. +// Next ID: 3 +type AssistantLogsCommunicationRawDeviceContactInfoLog struct { + // AccountType: Account type of raw contact, e.g. "com.google" or + // "com.linkedin.android". + AccountType string `json:"accountType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccountType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccountType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsCommunicationRawDeviceContactInfoLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsCommunicationRawDeviceContactInfoLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsDefaultDeviceLog: Log device info of default speaker and +// tv +type AssistantLogsDefaultDeviceLog struct { + DefaultSpeaker *AssistantLogsDeviceInfoLog `json:"defaultSpeaker,omitempty"` + + DefaultTv *AssistantLogsDeviceInfoLog `json:"defaultTv,omitempty"` + + SourceDeviceId string `json:"sourceDeviceId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DefaultSpeaker") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DefaultSpeaker") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsDefaultDeviceLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsDefaultDeviceLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantLogsDefaultDevicesLog struct { + LocalDefaultDevices *AssistantLogsDefaultDeviceLog `json:"localDefaultDevices,omitempty"` + + // NearbyDefaultDevices: Default settings of nearby devices. + NearbyDefaultDevices []*AssistantLogsDefaultDeviceLog `json:"nearbyDefaultDevices,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LocalDefaultDevices") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LocalDefaultDevices") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsDefaultDevicesLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsDefaultDevicesLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsDeviceAnnotationLog: Device annotation mention from +// query +type AssistantLogsDeviceAnnotationLog struct { + // RawTextFromQuery: The raw text mentioning a device from the query, + // such as "any tv". + RawTextFromQuery string `json:"rawTextFromQuery,omitempty"` + + // Type: The annotation type mentioned in the query. + // + // Possible values: + // "NO_DEVICE_ANNOTATION" - No device is mentioned in the query. + // "DEVICE_ID_ANNOTATION" - Annotation specifying a device linked to + // user's account + // "DEVICE_TYPE_ANNOTATION" - Annotation specifying a general device, + // such as speaker, TV, etc. + // "DEVICE_TEXT_ANNOTATION" - Annotation with text. It could be random + // text, such as "dummy thing". + Type string `json:"type,omitempty"` + + // UserDefinedName: The matched device name set by the user, such as + // "big screen tv". + UserDefinedName string `json:"userDefinedName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RawTextFromQuery") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RawTextFromQuery") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsDeviceAnnotationLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsDeviceAnnotationLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsDeviceInfoLog: The information related to the device. +type AssistantLogsDeviceInfoLog struct { + // ArbitrationDeviceId: Device identifier string for the current device + // used in the arbitration service. + ArbitrationDeviceId string `json:"arbitrationDeviceId,omitempty"` + + // Possible values: + // "UNKNOWN_CONNECTIVITY" + // "ONLINE_STATE" + // "OFFLINE_STATE" + Connectivity string `json:"connectivity,omitempty"` + + // DeviceId: The identification of the device. DeviceId + // (go/as-device-id) has multiple fields. To consloidate it to a single + // to make dremel easier, we use the string obtained by calling + // go/get-device-id. + DeviceId string `json:"deviceId,omitempty"` + + // DeviceIndex: We index linked devices and log these index to avoid + // logging device_id. device_index should always be a positive number or + // -1. -1 means this device is not in homegraph. + DeviceIndex int64 `json:"deviceIndex,omitempty"` + + // DeviceModelId: This is the device_model_id field in device_settings + // proto. It has the same value for the same type of devices. e.g. + // Sonos.Sonos One.S13 + DeviceModelId string `json:"deviceModelId,omitempty"` + + // Distance: + // LINT.ThenChange(//depot/google3/assistant/context/proto/device_arbitra + // tion.proto:EstimatedRelativeDistance) + // + // Possible values: + // "UNKNOWN_DISTANCE" + // "CLOSEST" + // "EQUALLY_CLOSE" + // "FURTHER" + Distance string `json:"distance,omitempty"` + + // EliminatingLumosProcessor: The lumos processor which eliminated this + // device, if applicable + // + // Possible values: + // "UNKNOWN_LUMOS_PROCESSOR" + // "CAPABILITIES_FILTER" - filters + // "DEVICE_ANNOTATION_FILTER" + // "DEVICE_CONNECTIVITY_FILTER" + // "LOCAL_DEVICE_INCLUSIVENESS_FILTER" + // "LOCATION_FILTER" + // "MEDIA_PLAYBACK_FILTER" + // "SAFETY_FILTER" + // "TRAITS_FILTER" + // "DEVICE_TYPE_FILTER" + // "APP_FILTER" + // "HYBRID_DEVICE_PROPERTIES_FILTER" + // "NEARBY_DEVICE_FILTER" + // "DEFAULT_MEDIA_OUTPUT_PROMOTER" - promoters + // "DEVICE_GROUP_PROMOTER" + // "LOCAL_DEVICE_PROMOTER" + // "LOCATION_PROMOTER" + // "MEDIA_FOCUS_PROMOTER" + // "MEDIA_PLAYBACK_PROMOTER" + // "SAME_NAME_DEVICE_PROMOTER" + // "PHONE_TARGETING_PROMOTER" + // "TRAITS_PROMOTER" + EliminatingLumosProcessor string `json:"eliminatingLumosProcessor,omitempty"` + + IsRemote bool `json:"isRemote,omitempty"` + + // IsTethered: This flag indicates this is a non-local device that is + // tethered to local/originating device. Tethered device is a special + // case of is_remote and typically used in wearable scenarios. This is + // always false for local device and when it is true, it implies + // is_remote is also true. + IsTethered bool `json:"isTethered,omitempty"` + + MediaCapabilities *AssistantLogsMediaCapabilities `json:"mediaCapabilities,omitempty"` + + // Possible values: + // "UNKNOWN_DEVICE_TYPE" + // "ASSISTANT" + // "HOME_AUTOMATION" + // "CAST" + // "CAST_GROUP" + // "QUARTZ" - Quartz in AGSA + // "QUARTZ_IOS" - Quartz in iOPA + // "CLOUD_AUTO" - Non-assistant Auto devices from Cloud. + // go/cloud-registration-api-changes + MediaDeviceType string `json:"mediaDeviceType,omitempty"` + + // Name: User defined device name + Name string `json:"name,omitempty"` + + // Sessions: This field should be populated only when there is at least + // one session on this device. + Sessions []*AssistantLogsDeviceMediaSessionLog `json:"sessions,omitempty"` + + // SurfaceType: This field should be populated only when the device is + // an Assistant device. + // + // Possible values: + // "UNKNOWN" + // "ANDROID_ALLO" + // "ANDROID_AUTO" - Deprecated (never used). Use OPA_ANDROID_AUTO + // instead. + // "ANDROID_THINGS_CUBE" - Assistant on small screen stationary + // device. + // "ANDROID_THINGS_JASPER" + // "ANDROID_TV" + // "ANDROID_TV_KIDS" + // "ANDROID_WEAR" + // "AR_GLASSES" - Assistant on AR Glasses with both visual and audio + // experiences. Ask ar-assistant@ for details. + // "ASSISTANT_SDK" - For Assistant SDK gRPC client. + // "AUDIOWEAR" + // "BUBBLE_CHARACTERS_IOS" - go/assistant-lamda-overview-characters + // "CAPABILITY_BASED_SURFACE" - Surface for capability based testing. + // "CHROMECAST_ASSISTANT" - For chrome cast assistant web app. + // "CHROMECAST_MANHATTAN" - For chrome cast with assistant + screen + // (e.g., Google Nest Hub). + // "CHROMECAST_SEARCH" + // "CLOUD_DEVICE" - Virtual device for event-based triggering, e.g. + // executing time + // "COMPANION_SCREEN" - scheduled routines: go/routine-cloud-ex For + // Quartz. + // "DYNAMITE_WEB" + // "ENSEMBLE" + // "EYESFREE_AGSA" - Deprecated. Please use OPA_ANDROID_SCREENLESS. + // "EYESFREE_GMM" + // "GBOARD" - For Gboard app + // "GLASS" + // "GOOGLE_HOME" + // "HANGOUTS_CHATBOT" + // "IOS_ALLO" + // "IOS_GSA" + // "IOS_WEAR" + // "LIBASSISTANT" - For standalone libassistant devices. + // "LINE_CHATBOT" - LINE 3P messaging app + // "MULTIMODAL_AGSA" - Deprecated. + // "NON_ASSISTANT_SURFACE" - Surfaces that do not speak to the + // Assistant, i.e. web HQ + // "OPA_AGSA" - Assistant on Android phones accessed through the + // Google App (velvet). This represents neither all of the assistant on + // android phones (ANDROID_ALLO, VERILY_ONDUO, etc.) nor all of the + // assistant built on top of AGSA (ANDROID_WEAR, OPA_ANDROID_SCREENLESS, + // OPA_AGSA_CHROME_OS, etc.). + // "OPA_AGSA_CHROME_OS" - Deprecated. Please use OPA_CROS. + // "OPA_ANDROID_AUTO" + // "OPA_ANDROID_LITE" - This is OPA on Android Go (not part of AGSA) + // "OPA_ANDROID_SCREENLESS" - Assistant on Nexus with screen + // off/locked. Use go/bisto device to trigger. + // "OPA_ANDROID_SMART_DISPLAY" - Assistant on Titan hub mode + // (go/titan-hubmode-surface). This is OPA Android first party Smart + // Display devices. The UI experience is built on Opal (Gallium and + // Flutter) and native Android. + // "OPA_ANDROID_TABLET" - Assistant on Android tablet + // "OPA_CROS" - Assistant on native Chrome OS (go/croissant). + // "OPA_GACS" - For assistant on GACS devices (go/gacs-dd). Google + // Assistant Conversation Service (GACS) defines intents the device + // accepts. This surface serves the intents in the assistant response. + // "OPA_IOS" + // "OPA_IOS_SCREENLESS" - Assistant on iOS with screen off/locked. Use + // go/bisto device to trigger. + // "OPA_KAIOS" - Assistant on KaiOS. go/kaiosama + // "OPA_MOBILE_WEB" - Assistant on Mobile Web. go/opa-spidey + // "RTOS_PHONE" - Assistant on low-cost RTOS phones (go/conceRTOS). + // "SMS_CHATBOT" + // "TELEGRAM_CHATBOT" - Telegram 3P messaging app + // "TELEPHONE_ASSISTANT" - Assistant on a phone call (go/telephone). + // "VERILY_ONDUO" + // "YOUTUBE_APP" - A Youtube app. + // "AGSA_BISTO_FOR_EVAL" - Eval-only surfaces. These surfaces are not + // real surfaces. They are only used in intermediate steps of eval query + // and request generation: 1. Eval samplers (OPA query sampler and + // Cannery sampler) checks logs and temporarily assigns these surface + // types to the logs, to put Bisto, Lockhart Mic, ... queries in the + // correct query pools. 2. Request builders uses these surface types to + // determine how TaskRequest for Bisto, Lockhart Mic, ... should be + // built, like whether some user user agent should be used, whether some + // entry source should be set. The surface types in the generated + // TaskRequest is still the production surface types, like + // OPA_ANDROID_SCREENLESS or OPA_AGSA. Temp surface for Bisto Android + // eval. Will be merged with OPA_ANDROID_SCREENLESS in the future. + // "COGSWORTH_FOR_EVAL" + // "LOCKHART_MIC_FOR_EVAL" + // "OPA_ANDROID_AUTO_EMBEDDED_FAKE" - OPA_ANDROID_AUTO has another + // sub-surface (embedded) that differs in the reported capabilities, + // client-ops, flags but uses the same surface_type string of + // OPA_ANDROID_AUTO. This fake surface would allow running turing2 tests + // and evals for this embedded surface. Deprecated as of Feb 2019. + // Please use "OPA_ANDROID_AUTO_EMBEDDED" client type for tests and + // eval. See go/client-onboarding for more details. + // https://cs.corp.google.com/piper///depot/google3/assistant/assistant_server/tools/util/consts.h?l=32&rcl=247481455 + // "SPARK" - Unlaunched new surface prototype, ask spark-eng@. + // "WALLE" - Wall-E is an Area120 Project building assistant powered + // robots. The surface is an extended joplin which have same + // capabilities as a google home adding custom robot features. Currently + // in active development. Please reach out walle-software@ or bingxin@ + // for questions. For details see go/walle-as-pipeline-1-pager. + // "UNIT_TESTING" - Surface used for unit-testing purposes. Unit-tests + // might still require the existence of a "valid" SurfaceType to succeed + // (eg. initialization of the CapabilityBuilder, proto matching, etc.). + // With the move away from SurfaceType checks, a generic "TESTING" + // SurfaceType can be used for such tests without affecting the test + // behavior. Unlike the CAPABILITY_BASED_SURFACE, this proto does not + // have any capabilities or ResponseType tied to it. It should only be + // used for unit-tests and should not be exposed in the ASDebugger. + SurfaceType string `json:"surfaceType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ArbitrationDeviceId") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ArbitrationDeviceId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsDeviceInfoLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsDeviceInfoLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsDeviceMediaSessionLog: Log about the media session on a +// device. +type AssistantLogsDeviceMediaSessionLog struct { + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // Possible values: + // "UNKNOWN" + // "SINGLE_DEVICE_SESSION" + // "STATIC_GROUP_SESSION" - Media session is playing on a device group + // set by users. + // "DYNAMIC_GROUP_SESSION" - Media session is playing on a temporary + // device group requested in query. + MediaSessionType string `json:"mediaSessionType,omitempty"` + + // MediaType: The type of the media session. If provider does not report + // this field, we ## compute it by mapping provider type to media type. + // Here is the mapping: |ProviderType |MediaItemMetadata.Type| + // |-------------------------------------- |MUSIC |TRACK | |VIDEO |VIDEO + // | |LIVE_TV |TV_CHANNEL | |AUDIOBOOK |AUDIO_BOOK | |PODCAST + // |PODCAST_EPISODE | ## |LIVE_STREAMING|VIDEO | + // + // Possible values: + // "UNKNOWN" + // "TRACK" + // "ALBUM" + // "ARTIST" + // "PLAYLIST" + // "EPISODE" + // "MOVIE" + // "PHOTO" + // "TV_SHOW_EPISODE" + // "PODCAST_EPISODE" + // "MUSIC_GENRE" + // "AUDIO_BOOK" + // "CHAPTER" + // "RADIO_STATION" + // "MUSIC_MIX" + // "SPORTS_EVENT" + // "TV_CHANNEL" + // "VIDEO" + // "YOUTUBE_CHANNEL" + // "YOUTUBE_VIDEO_PLAYLIST" + // "TV_SHOW" - Representing a TV show which contains multiple TV + // seasons. + // "NEWS" + // "NARRATED_WEB" + // "AUDIO_STORY" - Representing a short audio story. go/tmas-design + MediaType string `json:"mediaType,omitempty"` + + // PlaybackState: The playback states of the session. + // + // Possible values: + // "UNKNOWN_STATE" + // "STOPPED" - State indicating this item is currently stopped. + // "PAUSED" - State indicating this item is currently paused. + // "PLAYING" - State indicating this item is currently playing. + // "FAST_FORWARDING" - State indicating this item is currently fast + // forwarding. + // "REWINDING" - State indicating this item is currently rewinding. + // "BUFFERING" - State indicating this item is currently buffering and + // will begin playing when enough data has buffered. + // "ERROR" - State indicating this item is currently in an error + // state. The error message should also be set when entering this state. + // "CONNECTING" - State indicating the class doing playback is + // currently connecting to a new destination. Depending on the + // implementation you may return to the previous state when the + // connection finishes or enter STATE_NONE. If the connection failed + // STATE_ERROR should be used. + // "SKIPPING_TO_PREVIOUS" - State indicating the player is currently + // skipping to the previous item. + // "SKIPPING_TO_NEXT" - State indicating the player is currently + // skipping to the next item. + // "SKIPPING_TO_QUEUE_ITEM" - State indicating the player is currently + // skipping to a specific item in the queue. + PlaybackState string `json:"playbackState,omitempty"` + + // ProviderMid: The KG mid of the media provider. + ProviderMid string `json:"providerMid,omitempty"` + + // Possible values: + // "UNKNOWN_COMMAND" + // "PLAY_FROM_SEARCH" - Requests that the app start playback for a + // specific search query. + // "PLAY_FROM_URI" - Requests that the app start playback for a + // specific uri. + // "SEND_CUSTOM_ACTION" - Send a custom string action to the provide + // (go/media-controller-gsa). + // "SKIP_TO_NEXT" - Skip to the next item in the play queue. + // "SKIP_TO_PREVIOUS" - Skip to the previous item in the play queue. + // "PLAY" - Requests that the player start its playback at its current + // position. + // "PAUSE" - Requests that the player pause its playback and stay at + // its current position. + // "STOP" - Requests that the player stop its playback. + // "SET_RATING" - Rate the current content. + // "SEEK_TO" - Move to a new location in the media stream. + // "SHUFFLE" - Requests that the app shuffle the currently loaded + // content. + // "REWIND" - Rewind the current content. + // "FAST_FORWARD" - Fast forward the current content. + // "SKIP_TO_QUEUE_ITEM" - Play an item with a specific id in the play + // queue. + // "SET_REPEAT_MODE" - Set repeat mode for current content. + // "SET_CAPTIONING_ENABLED" - Enable or disable the closed caption for + // the current content. + SupportedTransportControl []string `json:"supportedTransportControl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsDeviceMediaSessionLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsDeviceMediaSessionLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsDeviceSelectionLog: Contains information logged in +// target device selection. See go/improve-device-targeting-logging for +// details. Next Id: 22 +type AssistantLogsDeviceSelectionLog struct { + // AllDefaultDevices: Default settings of all nearby devices Deprecated, + // use default_devices_log instead. + AllDefaultDevices []*AssistantLogsDefaultDeviceLog `json:"allDefaultDevices,omitempty"` + + // AllMediaStreamLog: Logs all active media sessions. + AllMediaStreamLog *AssistantLogsAllMediaStreamLog `json:"allMediaStreamLog,omitempty"` + + // CounterfactualDeviceSelectionLog: DeviceSelectionLog for + // counterfactual logging. + CounterfactualDeviceSelectionLog *AssistantLogsDeviceSelectionLog `json:"counterfactualDeviceSelectionLog,omitempty"` + + // DefaultDevices: Include default tv and default speaker Deprecated, + // use all_default_devices below. + DefaultDevices *AssistantLogsDefaultDeviceLog `json:"defaultDevices,omitempty"` + + DefaultDevicesLog *AssistantLogsDefaultDevicesLog `json:"defaultDevicesLog,omitempty"` + + // DevicesStr: Temporaray field for debugging ANDROID_AUTO + // multi_target_devices punt. This will be removed once we identify the + // root cause. + DevicesStr []string `json:"devicesStr,omitempty"` + + InputErrorLog []*AssistantLogsInputErrorLog `json:"inputErrorLog,omitempty"` + + // LocalDevice: Now we just log the media sessions on local device + // Deprecated, use NearbyDevicesLog::LocalDevice instead. + LocalDevice *AssistantLogsDeviceInfoLog `json:"localDevice,omitempty"` + + // LogDataSource: Indicates which library populated the + // device_selection_log for this query. + // + // Possible values: + // "UNKNOWN" + // "MEDIA_FOCUS_SELECTOR" - Indicates the logs is populated by Media + // Focus Selector. + // "LUMOS_DEVICE_TARGETING_LIBRARY" - Indicates the logs is populated + // by Lumos Device Targeting Library. + LogDataSource string `json:"logDataSource,omitempty"` + + // MediaFocus: The Media Focus information. This field should be + // populated only when there is a Media Focus. Deprecated, use + // media_focuses below instead. + MediaFocus *AssistantLogsMediaFocusInfoLog `json:"mediaFocus,omitempty"` + + // MediaFocusesLog: Media focuses on all devices. + MediaFocusesLog *AssistantLogsMediaFocusesLog `json:"mediaFocusesLog,omitempty"` + + // NearbyDevicesLog: All nearby devices and local device. + NearbyDevicesLog *AssistantLogsNearbyDevicesLog `json:"nearbyDevicesLog,omitempty"` + + // QueryAnnotation: This should log the query annotation features found + // in the device, such as the device annotation, the room annotation, + // and the structure annotation from the query. + QueryAnnotation *AssistantLogsQueryAnnotationLog `json:"queryAnnotation,omitempty"` + + // SelectionResult: The result of device selection. + SelectionResult *AssistantLogsDeviceSelectionResultLog `json:"selectionResult,omitempty"` + + TestCodes []*AssistantLogsDeviceTargetingTestCode `json:"testCodes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AllDefaultDevices") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AllDefaultDevices") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsDeviceSelectionLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsDeviceSelectionLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsDeviceSelectionResultLog: Log the selection result. Next +// ID: 11 +type AssistantLogsDeviceSelectionResultLog struct { + // AmbiguousTargetDevices: Deprecated, please use qualified_devices. + AmbiguousTargetDevices *AssistantLogsAmbiguousTargetDeviceLog `json:"ambiguousTargetDevices,omitempty"` + + DeviceSelectionDecisionSummary *AssistantLogsMediaDeviceSelectionDecisionSummary `json:"deviceSelectionDecisionSummary,omitempty"` + + // Possible values: + // "UNKNOWN_ERROR" + // "NO_DEVICE_IN_SAME_STRUCTURE" - Error about when there's no + // qualified devices in the same home graph structure as the local + // device. + // "NO_DEVICE_IN_SAME_NETWORK_OR_LOCATION" - Error about when there's + // no qualified devices in the same network or location as the local + // device. + // "NO_DEVICE_IN_SAME_STRUCTURE_OR_NETWORK_OR_LOCATION" - Error about + // when there's no qualified devices in the same home graph structure or + // network or location as the local device. + // "NO_DEVICE_SATISFIES_SAME_STRUCTURE_OR_UNKNOWN_IF_OWNED" - Error + // about when no qualified device was found that matched the following + // conditions: 1) Both local device and target device are in the same + // home graph structure. 2) The distance to target device is unknown + // (i.e. either local device or target device is homeless) and target + // device is owned by the user. 3) If local device and target device are + // in different structures, only allowed when the query explicitly + // mentioned device name. + // "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT" - Error about when + // no qualified device satisfies the device capability requirement. + // "NO_DEVICE_MATCHED_DEVICE_ANNOTATION" - Error of no qualified + // devices matched requirements from device annotation. + // "MULTI_TARGET_DEVICE_NOT_SUPPORTED" - Error of not supporting + // targeting multiple devices. + // "NO_DEVICE_AFTER_LOCAL_DEVICE_EXCLUDED" - Error of no device left + // after local device is excluded within inclusiveness filter. + // "UNABLE_TO_TARGET_ONLY_LOCAL_DEVICE" - Error of unable to target + // only local device within inclusiveness filter. + // "NO_DEVICE_MATCHED_REQUIRED_TRAITS" - Error of no qualified devices + // matched the required smart home traits. + // "NO_DEVICE_MATCHED_REQUIRED_DEVICE_TYPE" - Error of no qualified + // devices matched the required smart home device types. + // "NO_DEVICE_IN_SAME_OR_MENTIONED_STRUCTURE" - Error of no qualified + // devices in the mentioned structure or in the same structure as the + // local device. + // "NO_DEVICE_SATISFIES_PLAYBACK_REQUIREMENT" - Error of no device + // satisfying playback requirements. + // "STRUCT_DISAMBIG_NOT_SUPPORTED" - Error when structure + // disambiguation is not supported in the config. When config is + // supported (both structure_disambiguation_supported and + // multi_target_supported are set to true), the library would return + // structures for disambiguation. + // "ROOM_DISAMBIG_NOT_SUPPORTED" - Error when room disambiguation is + // not supported in the config. When config is supported (both + // room_disambiguation_supported and multi_target_supported are set to + // true), the library would return rooms for disambiguation. + // "UNRECOGNIZED_DEVICE_NAME" - Error when the device mentioned in the + // query is not recognized. In other words, we can't find a device which + // matched the device mentioned in the query. + // "NO_LINKED_REMOTE_DEVICES" - Used when user requests to target on a + // remote device and there are no remote devices linked. + // "NO_LINKED_REMOTE_VIDEO_DEVICES" - Used when user requests to + // target on a remote video device and there are no remote video devices + // linked. + // "NO_SAFE_DEVICE_WITH_SCREEN" - Error when there is no safe screen + // device. For example, requesting screen-requiring content from Auto + // surface. + // "ALL_QUALIFIED_DEVICES_OFFLINE" - Error when all qualified devices + // are offline. + // "CROSS_STRUCTURE_TARGETING_DISALLOWED" - When user tries to target + // a device which is in a different structure and is not allowed. For + // example, if user doesn't own the structure. See + // go/on-multi-user-access-transitivity for more details. + // "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT" - Used when user requests a + // device with certain provider but no device can satisfies provider + // requirement. + // "MISSING_LOCAL_DEVICE_SETTING" - AvailableDevice device setting of + // local device is missing. + // "NO_DEVICE_HAS_REQUIRED_APP" - Required app is not installed + // "HYBRID_DEVICE_NOT_QUALIFIED" - All remote hybrid devices fail the + // propertries requirement specific (lock/unlock, etc) for hybrid + // devices (such as Tangor). + // "NO_NEARBY_DEVICES" - No nearby hearing devices + DeviceTargetingErrorType string `json:"deviceTargetingErrorType,omitempty"` + + // FinalLumosStage: The class name for the final filter/promoter used by + // Lumos for device targeting. This filter or promoter runs for all + // users, and contains no data specific to the individual user. + FinalLumosStage string `json:"finalLumosStage,omitempty"` + + // LowConfidenceTargetDevice: + // ////////////////////////////////////////////////////////////////////// + // //// Ambiguous Results: the library failed to select the final target + // device(s) but it narrows down to a set of devices which are all valid + // target device candidates. The client needs to do further + // disambiguation, e.g., giving a dialog or having costomized logic. The + // low confidence target device means the library falied to select the + // target device but it picked two devices for the client to do + // disambiguation. + LowConfidenceTargetDevice *AssistantLogsLowConfidenceTargetDeviceLog `json:"lowConfidenceTargetDevice,omitempty"` + + // MediaFocusSelectionErrorType: + // ////////////////////////////////////////////////////////////////////// + // //// This field log the error while selecting target device in + // media_focus_selector. + // + // Possible values: + // "UNKNOWN_ERROR" - Used when the type of error is not known + // explicitly. + // "FOUND_MULTIPLE_DEVICES" - Used when there are multiple devices + // satisfying the constraints. + // "REQUESTED_DEVICE_HAS_NO_SCREEN" - Used when the user requested to + // play a content on device without screen and focus selection has the + // (unsatisfied) REQUIRES_SCREEN restriction. Note that this is error is + // used if device is recognized, and otherwise UNRECOGNIZED_DEVICE or + // UNRECOGNIZED_VIDEO_DEVICE will be used. + // "NO_LINKED_REMOTE_DEVICES" - Used when user requests to play on a + // remote device and there are no linked devices. + // "NO_LINKED_REMOTE_VIDEO_DEVICES" - Used when user requests to play + // on a remote video device and there are no linked video devices. + // "UNRECOGNIZED_DEVICE_NAME" - Used when requested device with the + // given name in the annotation can not be recognized, that is user + // requested to play on a device that is not found in linked devices. If + // device is unrecognized and focus selection has the (unsatisfied) + // REQUIRES_SCREEN or type of unrecognized device is video then more + // specific UNRECOGNIZED_VIDEO_DEVICE_NAME is used. + // "UNRECOGNIZED_VIDEO_DEVICE_NAME" - Used when requested device with + // the given name in the annotation can not be recognized and focus + // selection has the (unsatisfied) REQUIRES_SCREEN or type of + // unrecognized device is video. + // "NO_DEVICE_MEETS_PROVIDER_REQUIREMENT" - Used when user requests a + // device with certain provider but no device can satisfies provider + // requirement. + // "MULTIPLE_DEVICES_MEET_PROVIDER_REQUIREMENT" - Used when user + // requests a device with certain provider but more than one device can + // satisfies the provider requirement. + // "REMOTE_CLOUD_CASTING_NOT_ALLOWED" - Used when requested device + // does not allow remote cloud casting. + // "NO_SAFE_DEVICE_WITH_SCREEN" - Used when there is no safe screen + // device. For ex: requesting screen-requiring content from Auto + // surface. + // "NO_DEVICE_MEETS_PLAYBACK_REQUIREMENT" - Used when user requests a + // device with certain playback but no device can satisfies playback + // requirement. + // "MULTIPLE_DEVICES_MEET_PLAYBACK_REQUIREMENT" - Used when user + // requests a device with certain playback but more than one device can + // satisfies playback requirement. + // "NO_VALID_DEVICE_IN_REQUESTED_ROOM" - Used when user requests a + // device to be in a particular room but none of the devices in that + // room satisfies all requirements. + // "NO_DEVICE_FOUND_IN_REQUESTED_ROOM" - Used when user requests a + // room but no device is found in that room. + // "MULTIPLE_DEVICES_FOUND_IN_REQUESTED_ROOM" - Used when user + // requests a room and there are multiple devices in that room are + // eligible to selected. + // "ALL_QUALIFIED_DEVICES_IN_DIFFERENT_STRUCTURE" - Used when all + // qualified devices are not in the same structure as the primary + // device. + // "QUALIFIED_DEVICE_OFFLINE" + // "ALL_QUALIFIED_DEVICES_OFFLINE" - When all qualified devices are + // offline. + // "CROSS_STRUCTURE_TARGETING_DISALLOWED" - When user tries to target + // a device which is in a different structure and is not allowed. For + // example, if user doesn't own the structure. See + // go/on-multi-user-access-transitivity for more details. + // "NO_DEVICE_MEETS_STADIA_GAMING_CAPABILITY" - When all devices do + // not qualify for stadia support. + // "MEDIA_STATES_MISSING" - Used when any critical media state is + // missing so the selection decision cannot be made. See + // go/partial-states-in-targeting-library for more details. + // "NO_DEVICE_SATISFIES_CAPABILITIES_REQUIREMENT" - Error about when + // no qualified device satisfies the device capability requirement. + MediaFocusSelectionErrorType string `json:"mediaFocusSelectionErrorType,omitempty"` + + // ProcessorInfo: The log for each stage of Lumos, showing the number of + // eliminated devices from each processor. + ProcessorInfo []*AssistantLogsLumosProcessorInfo `json:"processorInfo,omitempty"` + + // QualifiedDevices: We will apply several filters and dialogs to select + // a target device if media_focus_selector fail to select one. This + // field should log the devices left after each filter or dialog. It + // also log the detailed info of the final target device. + QualifiedDevices *AssistantLogsAmbiguousTargetDeviceLog `json:"qualifiedDevices,omitempty"` + + // SingleTargetDevice: + // ////////////////////////////////////////////////////////////////////// + // //// Unambiguous Results: the library successfully selected the final + // target device(s) and no further disambiguation is needed. Deprecated, + // please use target_device. + SingleTargetDevice *AssistantLogsDeviceInfoLog `json:"singleTargetDevice,omitempty"` + + TargetDevice *AssistantLogsTargetDeviceLog `json:"targetDevice,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AmbiguousTargetDevices") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AmbiguousTargetDevices") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsDeviceSelectionResultLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsDeviceSelectionResultLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsDeviceTargetingTestCode: Test code is used to track +// special events happening in Device Targeting Library. Next Id: 2 +type AssistantLogsDeviceTargetingTestCode struct { + // Possible values: + // "UNKNOWN" + // "IGNORE_NESTED_DEVICE_MENTION_WITH_ID" - Used to track the case + // when the nested DeviceMention with id is ignored inside a + // RoomMention. See: b/184750168 and go/mixed-room-and-device-mention + // "INCOMPLETE_LOCAL_AUTO_SETTINGS_FOUND" - Used to track if there is + // incomplete or bad local android auto settings passed to Lumos. + // "FINAL_RESULT_RESOLVED_BY_NEARBY_DEVICE" - Used to track if the + // final result is resolved by using nearby device. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsDeviceTargetingTestCode) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsDeviceTargetingTestCode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantLogsInputErrorLog struct { + ErrorCode int64 `json:"errorCode,omitempty"` + + // Possible values: + // "ERROR_UNKNOWN" + // "ERROR_DEVICE_PROPERTIES" + // "ERROR_HOME_GRAPH" + // "ERROR_CAPABILITIES_ACROSS_DEVICES" + ErrorType string `json:"errorType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ErrorCode") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ErrorCode") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsInputErrorLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsInputErrorLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsLowConfidenceTargetDeviceLog: 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 +type AssistantLogsLowConfidenceTargetDeviceLog struct { + // FallbackDeviceLog: The fallback device. + FallbackDeviceLog *AssistantLogsDeviceInfoLog `json:"fallbackDeviceLog,omitempty"` + + // LowConfTargetDeviceLog: The selected low confidence focus device. + LowConfTargetDeviceLog *AssistantLogsDeviceInfoLog `json:"lowConfTargetDeviceLog,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FallbackDeviceLog") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FallbackDeviceLog") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsLowConfidenceTargetDeviceLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsLowConfidenceTargetDeviceLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantLogsLumosProcessorInfo struct { + // DevicesAfterRun: Number of candidate devices after this stage is run. + DevicesAfterRun int64 `json:"devicesAfterRun,omitempty"` + + // DevicesBeforeRun: Number of candidate devices before this stage is + // run. + DevicesBeforeRun int64 `json:"devicesBeforeRun,omitempty"` + + // ProcessorName: Name of the processor for this stage. + // + // Possible values: + // "UNKNOWN_LUMOS_PROCESSOR" + // "CAPABILITIES_FILTER" - filters + // "DEVICE_ANNOTATION_FILTER" + // "DEVICE_CONNECTIVITY_FILTER" + // "LOCAL_DEVICE_INCLUSIVENESS_FILTER" + // "LOCATION_FILTER" + // "MEDIA_PLAYBACK_FILTER" + // "SAFETY_FILTER" + // "TRAITS_FILTER" + // "DEVICE_TYPE_FILTER" + // "APP_FILTER" + // "HYBRID_DEVICE_PROPERTIES_FILTER" + // "NEARBY_DEVICE_FILTER" + // "DEFAULT_MEDIA_OUTPUT_PROMOTER" - promoters + // "DEVICE_GROUP_PROMOTER" + // "LOCAL_DEVICE_PROMOTER" + // "LOCATION_PROMOTER" + // "MEDIA_FOCUS_PROMOTER" + // "MEDIA_PLAYBACK_PROMOTER" + // "SAME_NAME_DEVICE_PROMOTER" + // "PHONE_TARGETING_PROMOTER" + // "TRAITS_PROMOTER" + ProcessorName string `json:"processorName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DevicesAfterRun") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DevicesAfterRun") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsLumosProcessorInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsLumosProcessorInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantLogsMediaCapabilities struct { + CanReceiveRemoteAction bool `json:"canReceiveRemoteAction,omitempty"` + + HasScreen bool `json:"hasScreen,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CanReceiveRemoteAction") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CanReceiveRemoteAction") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsMediaCapabilities) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsMediaCapabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsMediaDeviceSelectionDecisionSummary: A summary of the +// reasons that we chose a certain target device. +type AssistantLogsMediaDeviceSelectionDecisionSummary struct { + // Possible values: + // "UNKNOWN_PRIORITY" + // "SINGLE_QUALIFIED_SESSION_PREFERRED" - If there is only one media + // session, it is selected by default. + // "FOCUS_SESSION_PREFERRED" - A media session with focus was + // preferred over other media sessions. + // "FOCUS_DEVICE_SESSION_PREFERRED" - A media session on a device with + // focus was preferred over other media sessions. + // "LOCAL_DEVICE_SESSION_PREFERRED" - A media session on a local + // device was chosen. + // "PLAYING_DEVICE_STATE_PREFERRED" + // "BUFFERING_DEVICE_STATE_PREFERRED" - A device in the BUFFERING + // state was preferred over other devices. + // "PAUSED_DEVICE_STATE_PREFERRED" - A device in the PAUSED state was + // preferred over other devices. + // "STOPPED_DEVICE_STATE_PREFERRED" - A device in the STOPPED state + // was preferred over other devices. + DeviceSelectionPreferenceUsed string `json:"deviceSelectionPreferenceUsed,omitempty"` + + // Possible values: + // "UNKNOWN_REASON" + // "SYNDICATION_DEVICE_TARGETED" - For syndication devices (3P TV), we + // sometimes prefer syndication devices over any other remote device, + // since the query comes from a linked remote. + // "AUTO_DEVICE_TARGETED" - Auto surfaces can never cast to remote + // devices for safety reasons, so we force the local auto device if auto + // is the surface. + // "QUERY_DEVICE_ANNOTATION_TARGETED" - A device explicitly mentioned + // in the query was targeted. + // "SINGLE_QUALIFIED_DEVICE_TARGETED" - Only one device was qualified. + // "CAST_GROUP_TARGETED" - We target a cast group only if all the + // qualified devices are in the same media session. This happens before + // applying any of the below filters. + // "MEDIA_SESSION_TARGETED" - Media sessions are targeted when session + // targeting is enabled, supported, a session exists with more than one + // device, and a session outranks all other sessions. The rankings are + // the keys below. + // "FOCUS_DEVICE_TARGETED" - A device with media focus was targeted. + // "DEFAULT_DEVICE_TARGETED" - A default device was targeted. + // "LOCAL_DEVICE_TARGETED" - The local device was targeted. + // "DEVICE_IN_SAME_ROOM_TARGETED" - A device in the same room was + // targeted. + // "AMBIGUOUS_DEVICES_TARGETED" - An ambiguous device result including + // multiple devices was targeted. + // "LOCAL_GROUP_RETARGETED" - When local device is playing as a group, + // we retarget to the group if local device doesn't have focus. See + // go/group-targeting for the details. + // "FOCUS_OF_CLOSE_DEVICE_TARGETED" - ==== Sandstone related + // DeviceSelectionReason ==== Entries below refer to other devices that + // are close by. Details at: go/sandstone-lumos. The media focus device + // of an equally close device was targeted. + // "DEFAULT_OF_CLOSE_DEVICE_TARGETED" - The default target of an + // equally close device was targeted. + // "SINGLE_QUALIFIED_CLOSE_DEVICE_TARGETED" - Only one device out of + // the ones that are equally close was qualified. + // "DEVICE_IN_CLOSE_ROOM_TARGETED" - A device in the same room as an + // equally close device was targeted. + // "TETHERED_DEVICE_TARGETED" - Sometimes wearable device (e.g., + // smartwatch) is tethered to a phone. This value indicates the tethered + // phone was targeted in these scenarios. This is related but slightly + // different from other remote targeting cases due to the strong + // binding/association between local (i.e., watch) and tethered device + // (i.e., phone). go/rohan-media-tethered-design + DeviceSelectionReason string `json:"deviceSelectionReason,omitempty"` + + // Possible values: + // "NONE" + // "BETTER_MATCH_DEVICE_WITH_HUMAN_FRIENDLY_NAME_FOUND" - A better + // match device was found and targeted. + // "LOCAL_DEVICE_IMPLICITLY_MENTIONED" - A local device was implicitly + // mentioned in the query, like "on you". + // "USED_LOOSE_PLAYBACK_STATE_REQUIREMENTS" - There were no devices + // which satisfy the playback states requirements, so the playback + // states requirements were removed and we tried again. + // "QUERY_3P_DEVICE_ANNOTATION_IGNORED_REQUIREMENTS" - A 3P device + // annotated from the query was targeted. We ignore requirements + // sometimes for 3p devices. + MiscSelectionSignal []string `json:"miscSelectionSignal,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DeviceSelectionPreferenceUsed") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "DeviceSelectionPreferenceUsed") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsMediaDeviceSelectionDecisionSummary) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsMediaDeviceSelectionDecisionSummary + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsMediaFocusInfoLog: 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 +type AssistantLogsMediaFocusInfoLog struct { + // CurrentFocusDurationSec: How long the device is in focus so far + CurrentFocusDurationSec int64 `json:"currentFocusDurationSec,omitempty"` + + // DialogTriggered: TODO(b/134944092) Log MediaFocusDialogTrigger Enum + // in focus_status. + DialogTriggered bool `json:"dialogTriggered,omitempty"` + + // FocusDevice: + // LINT.ThenChange(//depot/google3/logs/proto/majel_gws/media_action_trig + // gering_info.proto) The focus device. + FocusDevice *AssistantLogsDeviceInfoLog `json:"focusDevice,omitempty"` + + // MediaFocusState: The media focus state at the time of the request. + // + // Possible values: + // "NO_FOCUS" - There is no focus device available or the focus + // expired. + // "RECENT_FOCUS" - Media Focus V1. The focus is valid and it is + // within the media_focus_dialog_threshold. + // "STALE_FOCUS" - The focus is valid however it is over the + // media_focus_dialog_threshold and might require confirmation from user + // (dialog) before proceeding to use focus device. + // "HARD_FOCUS" - Media Focus V2 The focus is valid and there is a + // playing session on focus device. + // "SOFT_FOCUS" - The focus is valid however there is no playing + // session on focus device and might require confirmation from user + // (dialog) before proceeding to use focus device. + MediaFocusState string `json:"mediaFocusState,omitempty"` + + // SourceDeviceId: The source device of media focus. + SourceDeviceId string `json:"sourceDeviceId,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CurrentFocusDurationSec") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CurrentFocusDurationSec") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsMediaFocusInfoLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsMediaFocusInfoLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsMediaFocusesLog: Following are the MDA compatible +// loggings for media focus, default settings and nearby devices. +type AssistantLogsMediaFocusesLog struct { + DialogTriggered bool `json:"dialogTriggered,omitempty"` + + LocalMediaFocus *AssistantLogsMediaFocusInfoLog `json:"localMediaFocus,omitempty"` + + // MediaFocuses: Deprecated, use nearby_media_focuses instead. + MediaFocuses []*AssistantLogsMediaFocusInfoLog `json:"mediaFocuses,omitempty"` + + // NearbyMediaFocuses: MediaFouces found on nearby devices. + NearbyMediaFocuses []*AssistantLogsMediaFocusInfoLog `json:"nearbyMediaFocuses,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DialogTriggered") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DialogTriggered") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsMediaFocusesLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsMediaFocusesLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsMediaStreamLog: 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. +type AssistantLogsMediaStreamLog struct { + // DeviceIndex: The device index in this message is consistent with the + // device index in DeviceInfoLog. This field refers to the devices that + // hosting the session. + DeviceIndex []int64 `json:"deviceIndex,omitempty"` + + Session *AssistantLogsDeviceMediaSessionLog `json:"session,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceIndex") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceIndex") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsMediaStreamLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsMediaStreamLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantLogsNearbyDevicesLog struct { + // DeviceArbitrationCreationTimestampMs: The timestamp that + // DeviceArbitration is created in milliseconds. + DeviceArbitrationCreationTimestampMs int64 `json:"deviceArbitrationCreationTimestampMs,omitempty,string"` + + EliminatedByFurtherDistance int64 `json:"eliminatedByFurtherDistance,omitempty"` + + EliminatedByLocalClosest int64 `json:"eliminatedByLocalClosest,omitempty"` + + EliminatedByUnknownDifferentRoom int64 `json:"eliminatedByUnknownDifferentRoom,omitempty"` + + EliminatedByUnregisteredDevice int64 `json:"eliminatedByUnregisteredDevice,omitempty"` + + LocalDevice *AssistantLogsDeviceInfoLog `json:"localDevice,omitempty"` + + NearbyDevices []*AssistantLogsDeviceInfoLog `json:"nearbyDevices,omitempty"` + + NumClosestDevices int64 `json:"numClosestDevices,omitempty"` + + NumEquallyCloseDevices int64 `json:"numEquallyCloseDevices,omitempty"` + + NumFurtherDevices int64 `json:"numFurtherDevices,omitempty"` + + NumHearingDevices int64 `json:"numHearingDevices,omitempty"` + + NumUnknownDistanceDevices int64 `json:"numUnknownDistanceDevices,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DeviceArbitrationCreationTimestampMs") to unconditionally include in + // API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "DeviceArbitrationCreationTimestampMs") to include in API requests + // with the JSON null value. By default, fields with empty values are + // omitted from API requests. However, any field with an empty value + // appearing in NullFields will be sent to the server as null. It is an + // error if a field in this list has a non-empty value. This may be used + // to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsNearbyDevicesLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsNearbyDevicesLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsQueryAnnotationLog: Log about the query requirements +type AssistantLogsQueryAnnotationLog struct { + // DeviceAnnotation: Deprecated, please use room_annotations. + DeviceAnnotation *AssistantLogsDeviceAnnotationLog `json:"deviceAnnotation,omitempty"` + + // DeviceAnnotations: Log the device annotations mentioned in the query. + DeviceAnnotations []*AssistantLogsDeviceAnnotationLog `json:"deviceAnnotations,omitempty"` + + // RoomAnnotation: TODO(b/171250187) Deprecates the optional + // RoomAnnotationLog and DeviceAnnotationLog. Deprecated, please use + // device_annotations. + RoomAnnotation *AssistantLogsRoomAnnotationLog `json:"roomAnnotation,omitempty"` + + // RoomAnnotations: Log the room annotations mentioned in the query. + RoomAnnotations []*AssistantLogsRoomAnnotationLog `json:"roomAnnotations,omitempty"` + + // StructureAnnotations: Log the structure annotations mentioned in the + // query. + StructureAnnotations []*AssistantLogsStructureAnnotationLog `json:"structureAnnotations,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceAnnotation") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceAnnotation") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsQueryAnnotationLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsQueryAnnotationLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsReminderLog: Annotate a single reminder instance. +type AssistantLogsReminderLog struct { + // CreatedSecondsAgo: The reminder is created N seconds ago. This helps + // tracking how the user issues follow-up actions after reminder is + // created. For example, whether the user likes to issues another [show + // reminders] query right after reminder is created? + CreatedSecondsAgo int64 `json:"createdSecondsAgo,omitempty,string"` + + // RetrievedRankingClass: If the reminder is retrieved by a ranking + // class (see go/opa-reminders-ranker), this will be populated with the + // class info. Refer to + // assistant.productivity.ReminderRankingClass.RankingType. Since that + // proto is in proto2 format, we can only wire by int type. + RetrievedRankingClass int64 `json:"retrievedRankingClass,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CreatedSecondsAgo") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CreatedSecondsAgo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsReminderLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsReminderLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsRoomAnnotationLog: Room annotation mentioned in query. +type AssistantLogsRoomAnnotationLog struct { + // RawTextFromQuery: The raw text mentioning a room from the query, such + // as "my living room". + RawTextFromQuery string `json:"rawTextFromQuery,omitempty"` + + // RoomCount: The number of rooms annotated, if there are multiple + // structures. They are guaranteed to have the same text_from_query and + // name due to exact matching. + RoomCount int64 `json:"roomCount,omitempty"` + + // Type: The annotation type mentioned in the query. + // + // Possible values: + // "NO_ROOM_ANNOTATION" - No room is mentioned in the query. + // "ROOM_ID_ANNOTATION" - Annotation specifying a room set up by + // users. + // "ROOM_TYPE_ANNOTATION" - Annotation specifying a general room type, + // such as bedroom. + // "ROOM_TEXT_ANNOTATION" - Annotation with text. It could be random + // text, such as "my room", "all rooms". + Type string `json:"type,omitempty"` + + UserDefinedName string `json:"userDefinedName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RawTextFromQuery") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RawTextFromQuery") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsRoomAnnotationLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsRoomAnnotationLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsStructureAnnotationLog: Structure annotation mentioned +// in query. +type AssistantLogsStructureAnnotationLog struct { + // RawTextFromQuery: The raw text mentioning a structure from the query, + // such as "my house". + RawTextFromQuery string `json:"rawTextFromQuery,omitempty"` + + // Type: The annotation type mentioned in the query. + // + // Possible values: + // "NO_STRUCTURE_ANNOTATION" - No structure is mentioned in the query. + // "STRUCTURE_ID_ANNOTATION" - Annotation specifying a structure set + // up by users. + // "STRUCTURE_TEXT_ANNOTATION" - Annotation with text. It could be + // random text, such as "this house". + Type string `json:"type,omitempty"` + + UserDefinedName string `json:"userDefinedName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RawTextFromQuery") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RawTextFromQuery") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsStructureAnnotationLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsStructureAnnotationLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantLogsTargetDeviceLog: Represents the case where the library +// successfully selects the target device. It could be one or multiple +// devices. Next ID: 3 +type AssistantLogsTargetDeviceLog struct { + Devices []*AssistantLogsDeviceInfoLog `json:"devices,omitempty"` + + // Possible values: + // "UNKNOWN" + // "LOW_CONFIDENCE" + // "HIGH_CONFIDENCE" + ResultConfidenceLevel string `json:"resultConfidenceLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Devices") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Devices") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantLogsTargetDeviceLog) MarshalJSON() ([]byte, error) { + type NoMethod AssistantLogsTargetDeviceLog + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantPrefulfillmentRankerPrefulfillmentSignals: Signals to be +// used by the Prefulfillment Ranker. Derived from the ParsingSignals +// and GroundingSignals carried by the FunctionCall. LINT.IfChange Next +// ID: 25 +type AssistantPrefulfillmentRankerPrefulfillmentSignals struct { + // CalibratedParsingScore: A parsing score that is independently + // calibrated by each parser/IG. + CalibratedParsingScore float64 `json:"calibratedParsingScore,omitempty"` + + // CalibratedParsingScoreFloat: Same semantics as + // 'calibrated_parsing_score' but in float form. Some RL models (such as + // decision tree) doesn't consume double input well. + CalibratedParsingScoreFloat float64 `json:"calibratedParsingScoreFloat,omitempty"` + + // Dominant: Indicates interpretation dominance predicted by KScorer + Dominant bool `json:"dominant,omitempty"` + + // EffectiveArgSpanLength: The total effective length of the spans for + // the arguments used to construct the parse. May include vertical + // specific adjustments. Eg: For the query [delete my 7 p.m. alarm + // called chicken] and intent + // Delete_alarm(alarm_object=RD(category=AlarmObject( label="chicken", + // trigger_time_datetime=<< 7 PM >>))), the effective argument span is + // "7 p.m." + "chicken" (total length of 13). + EffectiveArgSpanLength float64 `json:"effectiveArgSpanLength,omitempty"` + + // GroundabilityScore: Grounding Signals. Score indicating how grounded + // the intent is, populated by the Grounding Box. + GroundabilityScore float64 `json:"groundabilityScore,omitempty"` + + // InQueryMaxEffectiveArgSpanLength: This is a cross-intent feature + // which is calculated by iterating all intent candidates. This feature + // should be populated in post-IG stage (before GB). + InQueryMaxEffectiveArgSpanLength float64 `json:"inQueryMaxEffectiveArgSpanLength,omitempty"` + + // IntentName: intent_name is used by PFR ensemble model. See + // go/pfr_ha_launch_doc + IntentName string `json:"intentName,omitempty"` + + // IntentNameAuisScore: QUS intent-based ranking signals. Assistant User + // Interaction Score which is aggregated using intent name. + IntentNameAuisScore float64 `json:"intentNameAuisScore,omitempty"` + + // IntentNameAuisScoreExp: Assistant User Interaction Score which is + // aggregated using intent name from exp laelaps. + IntentNameAuisScoreExp float64 `json:"intentNameAuisScoreExp,omitempty"` + + // MaskCandidateLevelFeatures: This feature is always false / no-op in + // serving time. In training time, this feature may be set true on + // specific examples for weighted training where when this signal is + // true, only cross-intent level features are used for training and + // other candidate level features are masked (set as missing). + MaskCandidateLevelFeatures bool `json:"maskCandidateLevelFeatures,omitempty"` + + // NumConstraints: Sum of the number of constraints used by the + // Grounding Box to ground each variable. + NumConstraints float64 `json:"numConstraints,omitempty"` + + // NumConstraintsFloat: Same semantics as 'num_constraints' but in float + // form. Some RL models (such as decision tree) doesn't consume double + // input well. + NumConstraintsFloat float64 `json:"numConstraintsFloat,omitempty"` + + // NumConstraintsSatisfied: Sum of the number of constraints satisfied + // for each variable. Depending on the match score for a constraint, + // this number can be fractional and is in the range [0, + // num_constraints]. Populated by the Grounding Box. + NumConstraintsSatisfied float64 `json:"numConstraintsSatisfied,omitempty"` + + // NumConstraintsSatisfiedFloat: Same semantics as + // 'num_constraints_satisfied' but in float form. Some RL models (such + // as decision tree) doesn't consume double input well. + NumConstraintsSatisfiedFloat float64 `json:"numConstraintsSatisfiedFloat,omitempty"` + + // NumGroundableArgs: Number of groundable arguments the intent has, + // populated by the Grounding Box. + NumGroundableArgs float64 `json:"numGroundableArgs,omitempty"` + + // NumGroundableArgsFloat: Same semantics as 'num_groundable_args' but + // in float form. Some RL models (such as decision tree) doesn't consume + // double input well. + NumGroundableArgsFloat float64 `json:"numGroundableArgsFloat,omitempty"` + + // NumGroundedArgs: Number of grounded arguments the intent has, + // populated by the Grounding Box. + NumGroundedArgs float64 `json:"numGroundedArgs,omitempty"` + + // NumGroundedArgsFloat: Same semantics as 'num_grounded_args' but in + // float form. Some RL models (such as decision tree) doesn't consume + // double input well. + NumGroundedArgsFloat float64 `json:"numGroundedArgsFloat,omitempty"` + + // NumVariables: Signals as proposed in go/improved-grounding-signals. + // Number of arguments, possibly nested, that the Grounding Box tried to + // ground. + NumVariables float64 `json:"numVariables,omitempty"` + + // NumVariablesFloat: Same semantics as 'num_variables' but in float + // form. Some RL models (such as decision tree) doesn't consume double + // input well. + NumVariablesFloat float64 `json:"numVariablesFloat,omitempty"` + + // NumVariablesGrounded: Number of arguments, possibly nested, that the + // Grounding Box was able to ground. This includes ambiguously grounded + // arguments. + NumVariablesGrounded float64 `json:"numVariablesGrounded,omitempty"` + + // NumVariablesGroundedFloat: Same semantics as 'num_variables_grounded' + // but in float form. Some RL models (such as decision tree) doesn't + // consume double input well. + NumVariablesGroundedFloat float64 `json:"numVariablesGroundedFloat,omitempty"` + + // Pq2tVsAssistantIbstCosine: Cosine similarity between predicted + // query-to-term model and assistant intent-type-based salient terms. + // This is intended to be only used for ACE ranking and only populated + // for assistant traffic. + Pq2tVsAssistantIbstCosine float64 `json:"pq2tVsAssistantIbstCosine,omitempty"` + + // Pq2tVsIbstCosine: Cosine similarity between predicted query-to-term + // model and intent-type-based salient terms. This is intended to be + // used as a backoff to pq2t_vs_qibst_cosine if it is missing. + Pq2tVsIbstCosine float64 `json:"pq2tVsIbstCosine,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CalibratedParsingScore") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CalibratedParsingScore") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantPrefulfillmentRankerPrefulfillmentSignals) MarshalJSON() ([]byte, error) { + type NoMethod AssistantPrefulfillmentRankerPrefulfillmentSignals + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AssistantPrefulfillmentRankerPrefulfillmentSignals) UnmarshalJSON(data []byte) error { + type NoMethod AssistantPrefulfillmentRankerPrefulfillmentSignals + var s1 struct { + CalibratedParsingScore gensupport.JSONFloat64 `json:"calibratedParsingScore"` + CalibratedParsingScoreFloat gensupport.JSONFloat64 `json:"calibratedParsingScoreFloat"` + EffectiveArgSpanLength gensupport.JSONFloat64 `json:"effectiveArgSpanLength"` + GroundabilityScore gensupport.JSONFloat64 `json:"groundabilityScore"` + InQueryMaxEffectiveArgSpanLength gensupport.JSONFloat64 `json:"inQueryMaxEffectiveArgSpanLength"` + IntentNameAuisScore gensupport.JSONFloat64 `json:"intentNameAuisScore"` + IntentNameAuisScoreExp gensupport.JSONFloat64 `json:"intentNameAuisScoreExp"` + NumConstraints gensupport.JSONFloat64 `json:"numConstraints"` + NumConstraintsFloat gensupport.JSONFloat64 `json:"numConstraintsFloat"` + NumConstraintsSatisfied gensupport.JSONFloat64 `json:"numConstraintsSatisfied"` + NumConstraintsSatisfiedFloat gensupport.JSONFloat64 `json:"numConstraintsSatisfiedFloat"` + NumGroundableArgs gensupport.JSONFloat64 `json:"numGroundableArgs"` + NumGroundableArgsFloat gensupport.JSONFloat64 `json:"numGroundableArgsFloat"` + NumGroundedArgs gensupport.JSONFloat64 `json:"numGroundedArgs"` + NumGroundedArgsFloat gensupport.JSONFloat64 `json:"numGroundedArgsFloat"` + NumVariables gensupport.JSONFloat64 `json:"numVariables"` + NumVariablesFloat gensupport.JSONFloat64 `json:"numVariablesFloat"` + NumVariablesGrounded gensupport.JSONFloat64 `json:"numVariablesGrounded"` + NumVariablesGroundedFloat gensupport.JSONFloat64 `json:"numVariablesGroundedFloat"` + Pq2tVsAssistantIbstCosine gensupport.JSONFloat64 `json:"pq2tVsAssistantIbstCosine"` + Pq2tVsIbstCosine gensupport.JSONFloat64 `json:"pq2tVsIbstCosine"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.CalibratedParsingScore = float64(s1.CalibratedParsingScore) + s.CalibratedParsingScoreFloat = float64(s1.CalibratedParsingScoreFloat) + s.EffectiveArgSpanLength = float64(s1.EffectiveArgSpanLength) + s.GroundabilityScore = float64(s1.GroundabilityScore) + s.InQueryMaxEffectiveArgSpanLength = float64(s1.InQueryMaxEffectiveArgSpanLength) + s.IntentNameAuisScore = float64(s1.IntentNameAuisScore) + s.IntentNameAuisScoreExp = float64(s1.IntentNameAuisScoreExp) + s.NumConstraints = float64(s1.NumConstraints) + s.NumConstraintsFloat = float64(s1.NumConstraintsFloat) + s.NumConstraintsSatisfied = float64(s1.NumConstraintsSatisfied) + s.NumConstraintsSatisfiedFloat = float64(s1.NumConstraintsSatisfiedFloat) + s.NumGroundableArgs = float64(s1.NumGroundableArgs) + s.NumGroundableArgsFloat = float64(s1.NumGroundableArgsFloat) + s.NumGroundedArgs = float64(s1.NumGroundedArgs) + s.NumGroundedArgsFloat = float64(s1.NumGroundedArgsFloat) + s.NumVariables = float64(s1.NumVariables) + s.NumVariablesFloat = float64(s1.NumVariablesFloat) + s.NumVariablesGrounded = float64(s1.NumVariablesGrounded) + s.NumVariablesGroundedFloat = float64(s1.NumVariablesGroundedFloat) + s.Pq2tVsAssistantIbstCosine = float64(s1.Pq2tVsAssistantIbstCosine) + s.Pq2tVsIbstCosine = float64(s1.Pq2tVsIbstCosine) + return nil +} + +// AssistantProductivityListItem: A message to represent an item in a +// list. Just a basic string for now, but extensible for the future. +type AssistantProductivityListItem struct { + // Name: [REQUIRED] The name of the list item. + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantProductivityListItem) MarshalJSON() ([]byte, error) { + type NoMethod AssistantProductivityListItem + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantRemindersAttachment: 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. +type AssistantRemindersAttachment struct { + // Id: REQUIRED. An unique identifier for the attachment. We have a plan + // to index this field, so it's marked as REQUIRED. Chat with + // opa-reminders-eng@ if you have a use case without an attachment ID. + Id string `json:"id,omitempty"` + + Link *AssistantRemindersAttachmentLink `json:"link,omitempty"` + + // SurfaceType: REQUIRED. Surface types this attachment should be shown. + // + // Possible values: + // "UNSPECIFIED" + // "ANDROID_PHONE" + SurfaceType []string `json:"surfaceType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantRemindersAttachment) MarshalJSON() ([]byte, error) { + type NoMethod AssistantRemindersAttachment + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantRemindersAttachmentLink struct { + // LinkUrl: 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.) + LinkUrl string `json:"linkUrl,omitempty"` + + // NotificationText: 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. + NotificationText *AssistantRemindersNlgTemplateKey `json:"notificationText,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LinkUrl") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LinkUrl") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantRemindersAttachmentLink) MarshalJSON() ([]byte, error) { + type NoMethod AssistantRemindersAttachmentLink + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantRemindersMemoryPayload: Since this is stored in BE, any +// update on this proto needs LGTM by ARIS storage owner +type AssistantRemindersMemoryPayload struct { + // HasReferencedEntityAtCreation: Whether the reminder created has a + // referenced_entity attached to it or not(go/hub-memory-payload). Since + // we plan to set this in Assistant reminder creation path flow, in case + // later the referenced_entity is removed from the reminder, then this + // bit might still remain true. Also in case referenced_entity is later + // added to reminder(for example when referenced_entity is attached by + // Server), then also this bit might remain false. This bit will be used + // to *guess* if the user has a memory-enabled AGSA, thus we'll surface + // the "open memory" button on hubpage. This check is not perfect, as + // the user might have other phones with older AGSA, so this is just a + // *best guess*. This field won't be stored in Memory backend, and will + // not be populated back when retrieving reminders. + HasReferencedEntityAtCreation bool `json:"hasReferencedEntityAtCreation,omitempty"` + + // RecordId: Id of record that is associated with Reminder. This will be + // set for all Assistant reminders created after the first launch of the + // Reminder Memory integration, see go/reminders-memory for more + // details. Also, this might apply to all other types of reminders. + RecordId string `json:"recordId,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "HasReferencedEntityAtCreation") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "HasReferencedEntityAtCreation") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantRemindersMemoryPayload) MarshalJSON() ([]byte, error) { + type NoMethod AssistantRemindersMemoryPayload + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantRemindersNlgTemplateKey: 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.). +type AssistantRemindersNlgTemplateKey struct { + // MessageSet: REQUIRED. + MessageSet string `json:"messageSet,omitempty"` + + // TemplateName: REQUIRED. + TemplateName string `json:"templateName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MessageSet") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MessageSet") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantRemindersNlgTemplateKey) MarshalJSON() ([]byte, error) { + type NoMethod AssistantRemindersNlgTemplateKey + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantTeleportTeleportNicknameSignals struct { + // HasLocationInterpretation: Whether the nickname could also refer to a + // location. For example, "walmart", "starbucks". + HasLocationInterpretation bool `json:"hasLocationInterpretation,omitempty"` + + // InstallInfo: Indicates whether the user has the app installed. + // + // Possible values: + // "INSTALLATION_INFORMATION_UNAVAILABLE" - The annotator was not + // aware of installed apps, or the resource is not an app. + // "IS_INSTALLED_APP" - The resource is an app, and the annotator had + // the information that it is installed. + // "IS_NOT_INSTALLED_APP" - The resource is an app, and the annotator + // had the information that it is not installed. + InstallInfo string `json:"installInfo,omitempty"` + + // IsGeneric: 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). + IsGeneric bool `json:"isGeneric,omitempty"` + + // NicknameTier: The tier of the nickname. + // + // Possible values: + // "UNKNOWN" - Default value for unknown tier. + // "UNRESTRICTED" - Nicknames that always refer to the respective + // application or url. For example, "facebook" always refers to the + // Facebook app / homepage. + // "INTENT_REQUIRED" - Nicknames that refer to the app/url when the + // intent is to execute an action on the app/url. For example, "most + // wanted" refers to the "Need for Speed Most Wanted" app, only if the + // user asks, for example, to open the app - "open most wanted". + // "APP_PHRASE_REQUIRED" - Nicknames that refer to the app/url when + // the app/url restriction is explicit. For example, "banking" is a + // nickname for the "Bank of America Mobile Banking" app, only if user + // explicitly states they are referring to the app - "banking app", + // "open banking application". + NicknameTier string `json:"nicknameTier,omitempty"` + + // Possible values: + // "DEFAULT" + // "GELLER" + // "DEVICE_CAPABILITIES" - These annotations are generated on the fly + // (server-side), and are not matched by SE Muppet using the + // offline-generated corpus. + Source string `json:"source,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "HasLocationInterpretation") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "HasLocationInterpretation") to include in API requests with the JSON + // null value. By default, fields with empty values are omitted from API + // requests. However, any field with an empty value appearing in + // NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantTeleportTeleportNicknameSignals) MarshalJSON() ([]byte, error) { + type NoMethod AssistantTeleportTeleportNicknameSignals + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsCommonContactMatchSignal: Neural contact match +// signals. +type AssistantVerticalsCommonContactMatchSignal struct { + // MatchScore: Neural contact match similarity score. + MatchScore float64 `json:"matchScore,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MatchScore") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MatchScore") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsCommonContactMatchSignal) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsCommonContactMatchSignal + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AssistantVerticalsCommonContactMatchSignal) UnmarshalJSON(data []byte) error { + type NoMethod AssistantVerticalsCommonContactMatchSignal + var s1 struct { + MatchScore gensupport.JSONFloat64 `json:"matchScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.MatchScore = float64(s1.MatchScore) + return nil +} + +// AssistantVerticalsHomeautomationProtoActionProjectConfig: Metadata +// for Actions-on-Google configuration. +type AssistantVerticalsHomeautomationProtoActionProjectConfig struct { + // ContextId: Actions-on-Google action context ID. See + // go/sdm-hospitality-design. + ContextId string `json:"contextId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContextId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContextId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoActionProjectConfig) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoActionProjectConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoAgentDeviceId: An agent + device +// pair that uniquely identifies a device. +type AssistantVerticalsHomeautomationProtoAgentDeviceId struct { + // AgentId: The agent's ID. Generally it is the agent's Google pantheon + // project id. + AgentId string `json:"agentId,omitempty"` + + // DeviceId: Device ID defined by the agent. + DeviceId string `json:"deviceId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgentId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgentId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoAgentDeviceId) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoAgentDeviceId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoAgentInformation: +// AgentInformation represents the details needed to support both 1P and +// 3P partnerships for Home Automation. Next ID: 7 +type AssistantVerticalsHomeautomationProtoAgentInformation struct { + // Possible values: + // "OPEN_AUTH_DEFAULT" - Device uses 3p path with token + // authentication. This is the default value used when a different + // authentication type is not specified. + // "NEST_AUTH_PROXY" - Device uses 1p Nest path (eg: Olive) with gaia + // credential authentication. + AuthType string `json:"authType,omitempty"` + + // Possible values: + // "UNKNOWN" + // "CLOUD_SYNC" - Device is created through HA2 SyncDevices flow, are + // HA2 cloud agent devices. ultravox is a cloud agent as well as surface + // device and it's using Sync flow. + // "ASSISTANT_SETTING_OOBE" - Device created through Assistant Setting + // at OOBE time, they're things that are mastered within google + // internally. + // "LOCAL_SYNC" - Device is created through the local device platform + // to HGS sync flow. These devices are not necessarily mastered in a 3P + // cloud - they are locally detected by an assistant device and then + // synced to HGS directly. See go/aogh-dd. + // "CHIP_SYNC" - Device created through local CHIP provision and sync + // up. Chip synced devices can be the same devices as the devices synced + // from cloud, and the sync and de-dup logic can be very complicated. + DeviceSource string `json:"deviceSource,omitempty"` + + // Possible values: + // "HARPOON_DEFAULT" - Execute through Harpoon call. This is the + // default value used when the execution_path is not specified. + // "STUBBY" - Execute through stubby RPC call. + ExecutionPath string `json:"executionPath,omitempty"` + + // Id: Unique Agent ID which maps to a specific Agent. Not using Agent + // Name here as it may change over time. + Id string `json:"id,omitempty"` + + // Key: Agent's foreign key that uniquely identifies a user's device. + Key string `json:"key,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AuthType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AuthType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoAgentInformation) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoAgentInformation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoAttribute: Protos representing +// device or structure attributes. See go/hgs-attributes-protos. Only +// protos approved and formalized by assistant/HG team should be added +// here. +type AssistantVerticalsHomeautomationProtoAttribute struct { + StructureBasedRoutine *AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine `json:"structureBasedRoutine,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "StructureBasedRoutine") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "StructureBasedRoutine") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoAttribute) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoAttribute + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoAttributes: +// LINT.IfChange(proto_attributes) +type AssistantVerticalsHomeautomationProtoAttributes struct { + AttributeProtos []*AssistantVerticalsHomeautomationProtoAttribute `json:"attributeProtos,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AttributeProtos") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AttributeProtos") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoAttributes) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoAttributes + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoCommonEventTrigger: +// LINT.IfChange(proto_event_trigger) Next id: 5 +type AssistantVerticalsHomeautomationProtoCommonEventTrigger struct { + Enabled bool `json:"enabled,omitempty"` + + // EventTriggerPayload: Detailed settings for the event trigger; unset + // if not applicable. + EventTriggerPayload googleapi.RawMessage `json:"eventTriggerPayload,omitempty"` + + // EventTriggerType: Different event type may have different settings. + // For example: * SCHEDULED will have event_trigger_payload of + // cs/symbol:assistant.verticals.voice_shortcut.proto.Schedule * + // LOCATION will have event_trigger_payload of + // cs/symbol:assistant.verticals.voice_shortcut.proto.LocationTriggerEven + // t + // + // Possible values: + // "UNKNOWN" + // "SCHEDULED" + // "LOCATION" + // "DEVICE_CONTROL" - For Routine triggered by Home Intelligence + // Service (IQS) based on DEVICE_STATE_CHANGE. NOTE: This trigger is + // currently handled by IQS team go/iqs-hhr. + // "DEVICE_SENSES" - For Routine triggered by Home Intelligence + // Service (IQS) based on DEVICE_SENSOR_SIGNAL. NOTE: This trigger is + // currently handled by IQS team go/iqs-hhr. + EventTriggerType string `json:"eventTriggerType,omitempty"` + + // TriggerSource: Unique identifier for the EventTrigger, e.g. + // SCHEDULED_ROUTINES. See the enum values of + // cs/symbol:WorkflowTriggerInput.TriggerSource + TriggerSource int64 `json:"triggerSource,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoCommonEventTrigger) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoCommonEventTrigger + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine: +// 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. +type AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine struct { + // Enabled: Whether this Routine is enabled or not. If false, then this + // Routine can't be triggered by Voice. + Enabled bool `json:"enabled,omitempty"` + + // GooglePreconfigWorkflowId: The unique identifier for a class of + // workflows. For example: * "sbr_001" => Away * "sbr_002" => Home * + // "category_template" => CUSTOM + GooglePreconfigWorkflowId string `json:"googlePreconfigWorkflowId,omitempty"` + + Language string `json:"language,omitempty"` + + // Payload: Internal format payload primarily for Routines team use. + Payload googleapi.RawMessage `json:"payload,omitempty"` + + // SecurityLevel: The security level of the Structure Based Routine as + // determined by the most security-sensitive task. + // + // Possible values: + // "UNKNOWN" + // "ALLOW_UNVERIFIED" + // "ALLOW_VERIFIED" + SecurityLevel string `json:"securityLevel,omitempty"` + + Shared bool `json:"shared,omitempty"` + + StoragePayload googleapi.RawMessage `json:"storagePayload,omitempty"` + + StructureId string `json:"structureId,omitempty"` + + // Triggers: Voice or event triggers. + Triggers []*AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger `json:"triggers,omitempty"` + + // Possible values: + // "UNDEFINED" + // "CURATED" + // "ALARM" + // "CUSTOM" - SCHEDULED = 3 [deprecated = true]; + Type string `json:"type,omitempty"` + + // UiPayload: UI format payload primarily for external team use. + UiPayload googleapi.RawMessage `json:"uiPayload,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Enabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Enabled") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutine + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigge +// r: Next id: 3 +type AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger struct { + EventTrigger *AssistantVerticalsHomeautomationProtoCommonEventTrigger `json:"eventTrigger,omitempty"` + + VoiceTrigger *AssistantVerticalsHomeautomationProtoCommonVoiceTrigger `json:"voiceTrigger,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EventTrigger") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EventTrigger") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoCommonStructureBasedRoutineTrigger + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoCommonVoiceTrigger: +// LINT.IfChange(proto_voice_trigger) Next id: 2 +type AssistantVerticalsHomeautomationProtoCommonVoiceTrigger struct { + Query string `json:"query,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Query") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Query") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoCommonVoiceTrigger) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoCommonVoiceTrigger + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoConciergeFeatures: The Concierge +// features a structure is eligible for. See {@link +// home.graph.common.ConciergeFeatures}. +type AssistantVerticalsHomeautomationProtoConciergeFeatures struct { + // Possible values: + // "UNKNOWN_PRODUCT_FEATURE" - LINT.IfChange + // "E911" - + // LINT.ThenChange(//depot/google3/home/graph/proto/common/enums.proto) + ConciergeProductFeatures []string `json:"conciergeProductFeatures,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ConciergeProductFeatures") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ConciergeProductFeatures") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoConciergeFeatures) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoConciergeFeatures + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo: +// Next ID: 5 +type AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo struct { + // AnnotatedSpanDevice: The query span for device mention. + AnnotatedSpanDevice string `json:"annotatedSpanDevice,omitempty"` + + // AnnotatedSpanRoom: The query span for room mention. + AnnotatedSpanRoom string `json:"annotatedSpanRoom,omitempty"` + + // AnnotatedSpanStructure: The query span for structure mention. + AnnotatedSpanStructure string `json:"annotatedSpanStructure,omitempty"` + + // ProcessedMentionedSpan: This field is from + // query_info.processed_mentioned_span in DTO. + ProcessedMentionedSpan string `json:"processedMentionedSpan,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AnnotatedSpanDevice") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AnnotatedSpanDevice") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoHomeAutomationDevice: Next ID: 9 +type AssistantVerticalsHomeautomationProtoHomeAutomationDevice struct { + // DeviceSelectionLog: the next 3 fields are for Lumos output (DTO) that + // needs to be propagated to the Fulfilment through the + // HomeAutomationDevice proto. + DeviceSelectionLog *AssistantLogsDeviceSelectionLog `json:"deviceSelectionLog,omitempty"` + + DtoError *AssistantDeviceTargetingDeviceTargetingError `json:"dtoError,omitempty"` + + // DtoQueryInfo: This field is from query_info in DTO. + DtoQueryInfo *AssistantVerticalsHomeautomationProtoDeviceTargetingOutputQueryInfo `json:"dtoQueryInfo,omitempty"` + + // HomeautomationMetadata: Device meta data. + HomeautomationMetadata *AssistantVerticalsHomeautomationProtoHomeAutomationMetaData `json:"homeautomationMetadata,omitempty"` + + // List: list of HomeAutomationDeviceItem. After migration completes, we + // will mark the above 4 field as deprecated and only use this field. + List []*AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem `json:"list,omitempty"` + + // MatchedItemKey: Corresponding to casse matched_item CustomTypeItem + // key. + MatchedItemKey string `json:"matchedItemKey,omitempty"` + + // MatchedItemRawvalue: Corresponding to casse Argument raw_value. + MatchedItemRawvalue string `json:"matchedItemRawvalue,omitempty"` + + // MatchedItemValue: Corresponding to casse matched_item CustomTypeItem + // value. + MatchedItemValue []string `json:"matchedItemValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceSelectionLog") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceSelectionLog") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoHomeAutomationDevice) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoHomeAutomationDevice + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem struct { + // HomeautomationMetadata: Device meta data. + HomeautomationMetadata *AssistantVerticalsHomeautomationProtoHomeAutomationMetaData `json:"homeautomationMetadata,omitempty"` + + // MatchedItemKey: Corresponding to casse matched_item CustomTypeItem + // key. + MatchedItemKey string `json:"matchedItemKey,omitempty"` + + // MatchedItemRawvalue: Corresponding to casse Argument raw_value. + MatchedItemRawvalue string `json:"matchedItemRawvalue,omitempty"` + + // MatchedItemValue: Corresponding to casse matched_item CustomTypeItem + // value. + MatchedItemValue []string `json:"matchedItemValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "HomeautomationMetadata") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HomeautomationMetadata") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoHomeAutomationDeviceItem + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoHomeAutomationMetaData: Next ID: +// 40 +type AssistantVerticalsHomeautomationProtoHomeAutomationMetaData struct { + // ActionProjectConfigs: Custom actions that this item supports. + ActionProjectConfigs []*AssistantVerticalsHomeautomationProtoActionProjectConfig `json:"actionProjectConfigs,omitempty"` + + // AgentInformation: Agent details. + AgentInformation *AssistantVerticalsHomeautomationProtoAgentInformation `json:"agentInformation,omitempty"` + + // AssistantDeviceId: Device ID that matches the ID passed from the + // device to discourse_context when a user issues a query to an + // Assistant-enabled device that is registered with Cast (via CCS (see + // go/castservers)), or some other service. + AssistantDeviceId string `json:"assistantDeviceId,omitempty"` + + // Attributes: Attributes data as provided from SYNC. This gets used in + // mutation and execution and in some potential cases, in biasing. + Attributes googleapi.RawMessage `json:"attributes,omitempty"` + + // CreatorGaiaId: See Device.creator_gaia_ids in + // //home/graph/proto/service/types.proto. If empty, the GAIA ID from + // the request EUC is assumed to be the creator. We only need at most + // one creator_gaia_id. + CreatorGaiaId int64 `json:"creatorGaiaId,omitempty,string"` + + // DerivedType: Any types that are not the given item type, but derived + // later. For example, if an item has type action.devices.types.OUTLET + // but is named "floor lamp" we can derive that it also has type + // action.devices.types.LIGHT. Also considered along with |type| when + // triggering type-based actions. + DerivedType []string `json:"derivedType,omitempty"` + + // DeviceModelId: See note in home_graph.proto; loaded into DE now to + // avoid having to double-read assistant settings records as per + // go/smarthome-removing-assistant-settings + DeviceModelId string `json:"deviceModelId,omitempty"` + + // GcmExecutionAddress: GCM address for cloud execution across google + // cloud messaging rather than 3p cloud; for future use. + GcmExecutionAddress string `json:"gcmExecutionAddress,omitempty"` + + // HashValue: The hash value from go/de-consistency-check + HashValue string `json:"hashValue,omitempty"` + + // LanscanOptedIn: Whether local home platform should discover new + // devices via LAN for the structure. + LanscanOptedIn bool `json:"lanscanOptedIn,omitempty"` + + // ModelName: Model name from HomeGraph, populated from + // model_manifest.model_name. See b/200087451. + ModelName string `json:"modelName,omitempty"` + + // NotificationEnabledByUser: Indicates whether notifications have been + // enabled by a user and will be announced for this device. This is set + // by the user within the Google app settings, and Google will announce + // the device notification only if both notification_supported_by_agent + // and notification_enabled_by_user are true. + NotificationEnabledByUser bool `json:"notificationEnabledByUser,omitempty"` + + // NotificationSupportedByAgent: Indicates whether the device is capable + // of sending notifications. This field will be set by the agent + // (partner) on an incoming SYNC. If a device is not capable of + // generating notifications, the partner should set this flag to false. + // If a partner is not capable of calling ReportStateAndNotification to + // send notifications to Google, the partner should set this flag to + // false. If there is a user setting in the partner app to enable + // notifications and it is turned off, the partner should set this flag + // to false. + NotificationSupportedByAgent bool `json:"notificationSupportedByAgent,omitempty"` + + // OpaqueCustomData: Store custom data for agent calls here. This will + // likely be short-lived -- we will replace this with calls to HGS. + // (Note: This may end up not temporary if we only need it for a couple + // partners -- more efficient to have it on a few users than require HGS + // reads for all users. + OpaqueCustomData string `json:"opaqueCustomData,omitempty"` + + // OperationalNodeId: Operational CHIP Node ID that combines the fabric + // ID and node id in format of . (Hex format without 0x prefix, for + // example, 0F001234FA67AA39.1234ABCD1111DDDD). + OperationalNodeId string `json:"operationalNodeId,omitempty"` + + // OtherDeviceIds: Other agent id + foreign id pairs associated with the + // device. This can be used to represent a group of devices (e.g. Sonos' + // bonded zone) as a single device, or a device that comes in through + // different sync flows (e.g. Newman with a Nest camera). + OtherDeviceIds []*AssistantVerticalsHomeautomationProtoAgentDeviceId `json:"otherDeviceIds,omitempty"` + + // ParentNode: LINT.IfChange(home_graph_single_parent) At the moment, we + // just have a single string. In future this will expand with additional + // metadata from client or cloud execution data store. In today's 'tree' + // HomeGraph each object has a single parent. In the future this may + // have a mesh for complex cases -- zones, doors, etc -- so we make this + // a repeated element today. + // LINT.ThenChange(//depot/google3/assistant/assistant_server/settings/us + // er_defined_actions/footprints/footprint_accessor.cc:home_graph_single_ + // parent) + ParentNode []string `json:"parentNode,omitempty"` + + // ParentType: The type of the parent. Currently only set for devices, + // to distinguish between structure and room parents. Items currently + // have only one parent, and entries after the first parent_type are + // ignored. + // + // Possible values: + // "UNKNOWN_ITEM_TYPE" + // "DEVICE" + // "ROOM" + // "PLACE" + // "GROUP" + // "SCENE" + // "STRUCTURE" + ParentType []string `json:"parentType,omitempty"` + + // PersonalizedNicknames: User-given nicknames for an entity (e.g. "My + // house"). These nicknames are unique to the gaia user. Nickname in + // DeviceInfo is per-entity level nickname, while personalized_nicknames + // is per-user per-entity. + PersonalizedNicknames []string `json:"personalizedNicknames,omitempty"` + + // PhysicalLocation: Stores the location for the STRUCTURE type. + PhysicalLocation *AssistantVerticalsHomeautomationProtoPhysicalLocation `json:"physicalLocation,omitempty"` + + // Plural: We use this to determine if the synonyms matched in the aqua + // interpretation is plural. Then we will return disambiguate dialog or + // execute commands with all the targets. + Plural []string `json:"plural,omitempty"` + + // PrimaryName: Which of the values was the original, user-provided name + // -- or our disambiguated, cleaned-up version of it. This is what we + // use in TTS when we need to identify an object that wasn't just spoken + // uniquely by the user -- in disambiguation dialogue, or in response to + // a collective interrogative (e.g. "what lights are on in the + // kitchen?") + PrimaryName string `json:"primaryName,omitempty"` + + // RoleInformation: User's role information for this device. This will + // be used in Home Automation server to decide if user has authority to + // fulfill its request. + RoleInformation *AssistantVerticalsHomeautomationProtoRoleInformation `json:"roleInformation,omitempty"` + + // RoutableViaGcm: Only present for a target device. Indicates this + // target device is reachable by a local (AoGH) path via an AoGH device. + RoutableViaGcm bool `json:"routableViaGcm,omitempty"` + + // SaftDocument: SAFT Document with linguistic annotations for the + // primary device name. + SaftDocument *NlpSaftDocument `json:"saftDocument,omitempty"` + + // SmartDeviceManagementData: Data needed for SDM (fleet management). + // See go/enterprise-id-in-assistant. + SmartDeviceManagementData *AssistantVerticalsHomeautomationProtoSmartDeviceManagementData `json:"smartDeviceManagementData,omitempty"` + + // SmartHomeFeatures: SmartHome feature flags that may be enabled + // per-item. + SmartHomeFeatures *AssistantVerticalsHomeautomationProtoSmartHomeFeatures `json:"smartHomeFeatures,omitempty"` + + // SupportedStructureFeatures: The features that are available for a + // structure. Will only be populated if the item_type == STRUCTURE. + SupportedStructureFeatures *AssistantVerticalsHomeautomationProtoSupportedStructureFeatures `json:"supportedStructureFeatures,omitempty"` + + // SupportedTraitsByAgent: Map from agent ID to supported traits. Some + // devices (e.g. Newman) have multiple agents, with each agent being + // associated with a specific set of traits. This could alternatively + // have been formatted as map as {trait, agent} pairs instead of the + // {agent, list of trait} pairs, but we retain this format to be + // consistent with HomeGraph's representation. In practice, a trait + // should only be paired with a single agent (i.e. we should not have + // two agents with the same trait in their value list). This field is + // optional and should only be provided if the item has multiple agents. + SupportedTraitsByAgent map[string]AssistantVerticalsHomeautomationProtoHomeAutomationMetaDataSupportedTraits `json:"supportedTraitsByAgent,omitempty"` + + // SupportsDirectResponse: This device supports direct response -- if + // the device itself is issuing the query (which means it's also an + // assistant surface) we can return its payload directly rather than via + // cloud. + SupportsDirectResponse bool `json:"supportsDirectResponse,omitempty"` + + // TargetDeviceSignalStrengths: Only present for an AoGH device. HGS + // Device ID of a target device and the signal strength (RSSI in dB, + // higher is better) between that target device and the AoGH device. If + // this map is empty, there are no target devices reachable by this AoGH + // device. + TargetDeviceSignalStrengths map[string]string `json:"targetDeviceSignalStrengths,omitempty"` + + // TraitRoutingHints: For SHED devices, some traits can only be executed + // on 3P cloud, e.g. "action.devices.traits.MediaInitiation", + // "action.devices.traits.Channel" go/shed-per-trait-routing + TraitRoutingHints []*HomeGraphCommonTraitRoutingHints `json:"traitRoutingHints,omitempty"` + + // TraitRoutingTable: Map from traits to routing table. Metadata + // includes preferred execution path per trait and, when Matter is + // preferred, which endpoint should be used for the trait. + TraitRoutingTable map[string]HomeGraphCommonRoutingTable `json:"traitRoutingTable,omitempty"` + + // TraitToAttributeProtos: Map of trait to a proto representing the + // attribute. This is different from the attributes field above which is + // represented as a struct. The attributes here are represented as + // protos and will require specific support per trait. + TraitToAttributeProtos map[string]AssistantVerticalsHomeautomationProtoAttributes `json:"traitToAttributeProtos,omitempty"` + + // Type: The item type, such as "action.devices.types.VACUUM" - to be + // used in triggering type-based actions, e.g. "start vacuuming": + // go/smarthome-type-based-actions. + Type string `json:"type,omitempty"` + + // UserDefinedDeviceType: The priority order of speech targeting: 1. + // user_defined_device_type 2. derived_device_type 3. device_type + UserDefinedDeviceType string `json:"userDefinedDeviceType,omitempty"` + + // VoiceMatchRequired: Set to which level of voice match is needed. Enum + // based on string input from the partner in json sync. Values accepted: + // "none" (but in this case partners won't set it), "owner" [requires + // matching one of the creator gaia IDs], or "member" [any recognized + // voice 'enrolled' on the device]. This may expand; only "owner" is in + // use for first partner, Tile. + // + // Possible values: + // "ANY" - Also default, and existing behavior == "none" in text + // "OWNER" - Must match an actual creator_gaia_id on device + // "MEMBER" - Any member of the surface / structure interacting + VoiceMatchRequired string `json:"voiceMatchRequired,omitempty"` + + // WillReportState: This device will report state; we can query realtime + // state from local HGS rather than slow QUERY intent to the 3p cloud. + WillReportState bool `json:"willReportState,omitempty"` + + // ZoneNameSaftDocument: SAFT Document with linguistic annotations for + // the zone name, if applicable. + ZoneNameSaftDocument *NlpSaftDocument `json:"zoneNameSaftDocument,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ActionProjectConfigs") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ActionProjectConfigs") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoHomeAutomationMetaData) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoHomeAutomationMetaData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantVerticalsHomeautomationProtoHomeAutomationMetaDataSupportedTraits struct { + Traits []string `json:"traits,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Traits") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Traits") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoHomeAutomationMetaDataSupportedTraits) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoHomeAutomationMetaDataSupportedTraits + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantVerticalsHomeautomationProtoPhysicalLocation struct { + Address string `json:"address,omitempty"` + + GeoLocation *GoogleTypeLatLng `json:"geoLocation,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Address") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Address") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoPhysicalLocation) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoPhysicalLocation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoRoleInformation: Represents the +// user’s role such as assistant only or manager for a device. Design +// doc: +// https://docs.google.com/document/d/1c1hnauEbBfDkywO3GZkI8ejHP765l2tLspmPgckEe2Y/ +type AssistantVerticalsHomeautomationProtoRoleInformation struct { + // IamCheckRequired: When true, role_type will be ignored, Nest IAM RPC + // will called to check authority. + IamCheckRequired bool `json:"iamCheckRequired,omitempty"` + + // Possible values: + // "UNDEFINED" + // "ASSISTANT_ONLY" + // "CAST_LEGACY_LINKED" + // "MANAGER" + RoleType string `json:"roleType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IamCheckRequired") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IamCheckRequired") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoRoleInformation) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoRoleInformation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type AssistantVerticalsHomeautomationProtoSmartDeviceManagementData struct { + // EnterpriseId: 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. + EnterpriseId string `json:"enterpriseId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EnterpriseId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EnterpriseId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoSmartDeviceManagementData) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoSmartDeviceManagementData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoSmartHomeFeatures: SmartHome +// feature flags that may be enabled per-item. LINT.IfChange +type AssistantVerticalsHomeautomationProtoSmartHomeFeatures struct { + // CircadianLightingEnabled: Flag indicating whether the background + // Circadian Lighting effect is enabled for a particular light + // (go/circadian-lighting-e2e). + CircadianLightingEnabled bool `json:"circadianLightingEnabled,omitempty"` + + // EnergySavingsEnabled: Flag indicating whether automatic Energy + // Savings are enabled for this item. + EnergySavingsEnabled bool `json:"energySavingsEnabled,omitempty"` + + // GentleWakeupEnabled: Flag indicating whether Gentle Wake Up is + // enabled for this item (go/sleep-wake-design). + GentleWakeupEnabled bool `json:"gentleWakeupEnabled,omitempty"` + + // HomeAwayOverMatterEnabled: Flag indicating whether the user has + // enabled / disabled sending Home/Away status updates to the device + // through the Google custom IntelligenceEvents Matter cluster. + // (go/google-clusters-design) + HomeAwayOverMatterEnabled bool `json:"homeAwayOverMatterEnabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CircadianLightingEnabled") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CircadianLightingEnabled") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoSmartHomeFeatures) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoSmartHomeFeatures + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AssistantVerticalsHomeautomationProtoSupportedStructureFeatures: The +// features a structure supports. +type AssistantVerticalsHomeautomationProtoSupportedStructureFeatures struct { + ConciergeFeatures *AssistantVerticalsHomeautomationProtoConciergeFeatures `json:"conciergeFeatures,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ConciergeFeatures") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ConciergeFeatures") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *AssistantVerticalsHomeautomationProtoSupportedStructureFeatures) MarshalJSON() ([]byte, error) { + type NoMethod AssistantVerticalsHomeautomationProtoSupportedStructureFeatures + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AttentionalEntitiesMentionProperties: Represents the properties of a +// mention. Next ID: 13 +type AttentionalEntitiesMentionProperties struct { + // DeviceId: The unique device on which the mention occurred. For + // example, if the user has two Google Home devices, this indicates + // which of the two was used. + DeviceId *AssistantApiCoreTypesDeviceId `json:"deviceId,omitempty"` + + // EventId: ID of the event that resulted in this entity mention. For + // user and system turn AEs, this is taken from the + // ConversationSnapshotId of the snapshot containing this mention. For + // client AEs, this is empty. This can be used to join back this + // particular mention to the specific "turn" in which this mention took + // place. + EventId *EventIdMessage `json:"eventId,omitempty"` + + // FactoidScore: If this mention corresponds to a WebAnswer, then this + // defines the score associated with that answer. + FactoidScore float64 `json:"factoidScore,omitempty"` + + // ListEntryInfo: If present, this entity was mentioned as part of a + // larger list. + ListEntryInfo *AttentionalEntitiesMentionPropertiesListEntryInfo `json:"listEntryInfo,omitempty"` + + // Recency: Estimates the recency of the mention. This is internally + // computed at runtime on a turn-by-turn basis. + // + // Possible values: + // "RECENCY_UNSPECIFIED" + // "MOST_RECENT_TURN" - Corresponds to a mention from the most recent + // user-driven interaction. For example, this label would be applied to + // both mentions of "Barack Obama" in the following interaction: USER: + // How tall is Obama? GOOGLE: Barack Obama is six feet one inch tall. + // NOTE: This is currently only applicable to mentions that have a + // source of User or System. + Recency string `json:"recency,omitempty"` + + // Role: The semantic role that the entity was used in. + Role *AttentionalEntitiesSemanticRoleId `json:"role,omitempty"` + + // Salience: How salient this mention is. This field will only be set if + // the mention is derived from a SearchAnswerValue. See + // go/webresultsdata-as-aes for more details. + // + // Possible values: + // "UNKNOWN_SALIENCE" - Any mention that is not derived from a + // SearchAnswerValue will not have a Salience. + // "PRIMARY" - This mention corresponds to the primary entity in the + // response. For example, if the query is "who was the 44th President of + // the US", then the entity for "Barack Obama" would be marked as + // PRIMARY. Note that there may more than one PRIMARY entity in a + // response if a list of values is displayed (e.g. "Stephen King + // books"). + // "METADATA" - This mention corresponds to metadata associated with + // the answer. For the US President query mentioned above, something + // like the inauguration date could be considered as METADATA. If it is + // difficult to identify a PRIMARY entity, then all entities may be + // marked as METADATA. + Salience string `json:"salience,omitempty"` + + // Source: Contains metadata about the source of the mention. + Source *AttentionalEntitiesMentionPropertiesSource `json:"source,omitempty"` + + // SpatialProperties: If present, properties of visual mentions (e.g., + // how they are displayed to the user, visibility, etc.). + SpatialProperties *AttentionalEntitiesSpatialProperties `json:"spatialProperties,omitempty"` + + // SurfaceForm: Details about how this mention was presented. + SurfaceForm *AttentionalEntitiesSurfaceForm `json:"surfaceForm,omitempty"` + + // Timestamp: Unix timestamp noting (approximately) when this mention + // occurred. We do not guarantee that the time will correspond precisely + // to when the user uttered/heard a response. If mentions within a + // single turn have *different* timestamps, they should accurately + // reflect the order in which the mentions occurred. If that order is + // unknown, they should all have the same timestamp. + Timestamp string `json:"timestamp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AttentionalEntitiesMentionProperties) MarshalJSON() ([]byte, error) { + type NoMethod AttentionalEntitiesMentionProperties + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *AttentionalEntitiesMentionProperties) UnmarshalJSON(data []byte) error { + type NoMethod AttentionalEntitiesMentionProperties + var s1 struct { + FactoidScore gensupport.JSONFloat64 `json:"factoidScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.FactoidScore = float64(s1.FactoidScore) + return nil +} + +// AttentionalEntitiesMentionPropertiesListEntryInfo: Contains +// information about how an entity was presented as part of a list. +type AttentionalEntitiesMentionPropertiesListEntryInfo struct { + // Index: The index of the entity presented to the user. NOTE: Indexing + // starts from 0. + Index int64 `json:"index,omitempty,string"` + + // LexicalGroundingsId: A string which uniquely identifies the list item + // this entity represents in the list. For example, consider the + // "OrderPizza" intent with the "size" slot: U: I want to order a pizza + // A: Sure. What size do you want: large, medium, or small? U: Gigantic + // The lexical_groundings_id can be "large" to identify the large item + // in the list. This lexical_groundings_id together with the semantic + // role fields (i.e., role.intent_id & role.role_id) can be used to + // match the nlp_semantic_parsing::LexicalGroundings::ValueTermType to + // utilize lexical grounding for i18n of static list selection items. + // Note that this field only needs to be populated when developers + // expect to provide lexical groundings for the list item this entity + // represents. Effectively, this field will be populated when this + // entity is published by ListPresentationFrame and the + // ::quality::dialog_manager::IntentStageSignals::FieldCandidate.lexical_ + // groundings_id field is populated. See go/lpf-i18nv2 & + // go/taskstate-ae-sync for more details. + LexicalGroundingsId string `json:"lexicalGroundingsId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Index") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Index") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AttentionalEntitiesMentionPropertiesListEntryInfo) MarshalJSON() ([]byte, error) { + type NoMethod AttentionalEntitiesMentionPropertiesListEntryInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AttentionalEntitiesMentionPropertiesSource: The agent or system from +// which the mention was derived. Each mention corresponds to a single +// source. +type AttentionalEntitiesMentionPropertiesSource struct { + Client *AttentionalEntitiesMentionPropertiesSourceClient `json:"client,omitempty"` + + System *AttentionalEntitiesMentionPropertiesSourceSystem `json:"system,omitempty"` + + User *AttentionalEntitiesMentionPropertiesSourceUser `json:"user,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Client") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Client") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AttentionalEntitiesMentionPropertiesSource) MarshalJSON() ([]byte, error) { + type NoMethod AttentionalEntitiesMentionPropertiesSource + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AttentionalEntitiesMentionPropertiesSourceClient: 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. +type AttentionalEntitiesMentionPropertiesSourceClient struct { +} + +// AttentionalEntitiesMentionPropertiesSourceSystem: 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. +type AttentionalEntitiesMentionPropertiesSourceSystem struct { +} + +// AttentionalEntitiesMentionPropertiesSourceUser: 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. +type AttentionalEntitiesMentionPropertiesSourceUser struct { +} + +// AttentionalEntitiesSemanticRoleId: 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. +type AttentionalEntitiesSemanticRoleId struct { + // IntentId: Semantic roles will be defined locally, within the context + // of a single task/feature. The |intent_id| is a unique identifier for + // such a local cluster. In most cases, this should be exactly the same + // as the name of the intent used for TaskState (see + // go/assistant-intent-catalog). In cases where the intent isn't + // well-defined, this can be an arbitrary, feature-defined identifier. + IntentId string `json:"intentId,omitempty"` + + // RoleId: Identifier for a semantic role, unique within the namespace + // of |intent_id|. When this role corresponds to a slot in the intent, + // the |role_id| should be equal to the name of that argument. For + // example, consider an entry in the intent catalog: core_intent { id { + // id: "BookARide" } slot { name: "provider" type { string_type { } } } + // slot { name: "num_riders" type { number_type { } } } } Then, the + // |role_id| would be "provider" or "num_riders" when referring to one + // of these slots. NOTE: when responding to the user, the Assistant may + // actually make use of other roles such as "ETA" or "driver" that are + // not part of the intent declaration. These should still be assigned + // consistent semantic roles. For example, a dialog with the Shopping + // feature: User: Where can I buy XYZ? Google: [Best Buy in Sunnyvale] + // has [XYZ] in stock. User: Great! Give me directions. In this case, + // both "Best Buy" and "XYZ" would be pushed to attentional entities. + // Best Buy, in this case, may not be an argument in the + // ShoppingItemStockInquiry intent, but should still have a consistent + // |role_id| such as "possessing_business". + RoleId string `json:"roleId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IntentId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IntentId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AttentionalEntitiesSemanticRoleId) MarshalJSON() ([]byte, error) { + type NoMethod AttentionalEntitiesSemanticRoleId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AttentionalEntitiesSpatialProperties: Properties of visual mentions +// (e.g., how they are displayed to the user, visibility, etc.). +type AttentionalEntitiesSpatialProperties struct { + // Possible values: + // "UNKNOWN_VISIBILITY" + // "VISIBLE" + // "HIDDEN" + Visibility string `json:"visibility,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Visibility") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Visibility") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AttentionalEntitiesSpatialProperties) MarshalJSON() ([]byte, error) { + type NoMethod AttentionalEntitiesSpatialProperties + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// AttentionalEntitiesSurfaceForm: 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. +type AttentionalEntitiesSurfaceForm struct { + Text string `json:"text,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Text") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Text") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *AttentionalEntitiesSurfaceForm) MarshalJSON() ([]byte, error) { + type NoMethod AttentionalEntitiesSurfaceForm + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BiasingPerDocData: 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. +type BiasingPerDocData struct { + Biasingfield []*BiasingPerDocDataBiasingField `json:"biasingfield,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Biasingfield") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Biasingfield") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BiasingPerDocData) MarshalJSON() ([]byte, error) { + type NoMethod BiasingPerDocData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BiasingPerDocData2: A replacement for BiasingPerDocData that is more +// efficient wrt size in the index. +type BiasingPerDocData2 struct { + BiasingField []*BiasingPerDocData2BiasingField `json:"biasingField,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BiasingField") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BiasingField") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BiasingPerDocData2) MarshalJSON() ([]byte, error) { + type NoMethod BiasingPerDocData2 + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type BiasingPerDocData2BiasingField struct { + // CompressedName: A fingerprint of the actual name of the field. + CompressedName int64 `json:"compressedName,omitempty"` + + // Value: The value, under various representations to get maximum + // compression. Exactly one of them is guaranteed to be filled. value as + // a double. + Value float64 `json:"value,omitempty"` + + // ValueFloat: 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. + ValueFloat int64 `json:"valueFloat,omitempty"` + + // ValueInt: value as an int32. When the value is encode-able as an + // integer. + ValueInt int64 `json:"valueInt,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CompressedName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CompressedName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *BiasingPerDocData2BiasingField) MarshalJSON() ([]byte, error) { + type NoMethod BiasingPerDocData2BiasingField + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *BiasingPerDocData2BiasingField) UnmarshalJSON(data []byte) error { + type NoMethod BiasingPerDocData2BiasingField + var s1 struct { + Value gensupport.JSONFloat64 `json:"value"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Value = float64(s1.Value) + return nil +} + +// BiasingPerDocDataBiasingField: Metadata fields on which we can bias +// (sort) search results independently from the normal ranking using a +// ScoreAdjuster +type BiasingPerDocDataBiasingField struct { + // Name: Fingerprint of the attribute name (no need to keep long field + // names) + Name uint64 `json:"Name,omitempty,string"` + + // Value: Biasing value translated into a double for uniform comparison + Value float64 `json:"Value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BiasingPerDocDataBiasingField) MarshalJSON() ([]byte, error) { + type NoMethod BiasingPerDocDataBiasingField + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *BiasingPerDocDataBiasingField) UnmarshalJSON(data []byte) error { + type NoMethod BiasingPerDocDataBiasingField + var s1 struct { + Value gensupport.JSONFloat64 `json:"Value"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Value = float64(s1.Value) + return nil +} + +// BlobstoreBlobRef: 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. +type BlobstoreBlobRef struct { + BlobID string `json:"BlobID,omitempty"` + + Options int64 `json:"Options,omitempty,string"` + + RefID string `json:"RefID,omitempty"` + + ShardBin int64 `json:"ShardBin,omitempty"` + + // Size: Size of the complete blob, in bytes. + Size int64 `json:"Size,omitempty,string"` + + // SourceV2BlobID: The ID of the V2 blob this blob has + SourceV2BlobID string `json:"SourceV2BlobID,omitempty"` + + // V2ReadBlobToken: Deprecated. + V2ReadBlobToken string `json:"V2ReadBlobToken,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BlobID") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BlobID") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BlobstoreBlobRef) MarshalJSON() ([]byte, error) { + type NoMethod BlobstoreBlobRef + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BlogPerDocData: Additional data for Blog/Posts +type BlogPerDocData struct { + // BlogurlFp: used for blogurl crowding. + BlogurlFp uint64 `json:"blogurlFp,omitempty,string"` + + // ClientSpamminess: This score captures how spammy the client is that + // the micropost was created with. The higher the score the worse. + ClientSpamminess int64 `json:"clientSpamminess,omitempty"` + + // ConvTree: For the threaded conversation view. Only populated in docs + // with provider type SYNTHETIC_CONVERSATION_DOC. + ConvTree *BlogsearchConversationTree `json:"convTree,omitempty"` + + CopycatScore int64 `json:"copycatScore,omitempty"` + + DocQualityScore int64 `json:"docQualityScore,omitempty"` + + // IsSyntacticReshare: A syntactic reshare is a document that is * + // created from an original and shared with friends and * we detect this + // resharing property by syntactically parsing the doc. . For example, a + // retweet is an example of a syntactic_reshare because we can detect + // that it's a reshare by grepping for "RT @". + IsSyntacticReshare bool `json:"isSyntacticReshare,omitempty"` + + // MicroblogQualityExptData: Experimental data for quality experiments. + // This will NOT be populated in prod, but we will use this for + // experiments. + MicroblogQualityExptData *Proto2BridgeMessageSet `json:"microblogQualityExptData,omitempty"` + + // NumMentions: For replies/reshares. num_mentions = number of times the + // pattern @foo appears in the document. + NumMentions int64 `json:"numMentions,omitempty"` + + Outlinks []*BlogPerDocDataOutlinks `json:"outlinks,omitempty"` + + // PostContentFingerprint: The fingerprint for the body text of the + // microblog post. It is copied from + // MicroBlogPost.post_content_fingerprint. + PostContentFingerprint int64 `json:"postContentFingerprint,omitempty"` + + QualityScore int64 `json:"qualityScore,omitempty"` + + // SpamScore: Blog scoring signals. + SpamScore int64 `json:"spamScore,omitempty"` + + UniversalWhitelisted bool `json:"universalWhitelisted,omitempty"` + + // UserQualityScore: User and doc quality scores for updates (aka + // microposts). + UserQualityScore int64 `json:"userQualityScore,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BlogurlFp") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BlogurlFp") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BlogPerDocData) MarshalJSON() ([]byte, error) { + type NoMethod BlogPerDocData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BlogPerDocDataOutlinks: Resolved url and site spamscore for outlinks +// in updates (aka microposts). +type BlogPerDocDataOutlinks struct { + // AggregationFp: Representative id for an equivalence class of URLs. + // E.g. http://youtube.com/watch?v=12 and + // http://youtube.com/watch?v=12&feature=related have the same + // aggregation id since they're effectively the same webpage + AggregationFp uint64 `json:"aggregationFp,omitempty,string"` + + ResolvedUrl string `json:"resolvedUrl,omitempty"` + + SiteSpamScore int64 `json:"siteSpamScore,omitempty"` + + Title string `json:"title,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AggregationFp") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AggregationFp") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BlogPerDocDataOutlinks) MarshalJSON() ([]byte, error) { + type NoMethod BlogPerDocDataOutlinks + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type BlogsearchConversationNode struct { + // AuthorName: The username of the author of the microblog post + // represented by this node. + AuthorName string `json:"authorName,omitempty"` + + // Children: A list of docids of child nodes. + Children []string `json:"children,omitempty"` + + // Date: The creation date of the doc. + Date int64 `json:"date,omitempty,string"` + + // Docid: Docid of the microblog post represented by this node. + Docid string `json:"docid,omitempty"` + + // Parent: The docid of the parent node. The root of the tree will leave + // this empty. + Parent string `json:"parent,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AuthorName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AuthorName") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BlogsearchConversationNode) MarshalJSON() ([]byte, error) { + type NoMethod BlogsearchConversationNode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type BlogsearchConversationTree struct { + // ConvId: The id of this conversation. + ConvId string `json:"convId,omitempty"` + + // Nodes: The nodes in this conversation. No particular order is + // assumed. + Nodes []*BlogsearchConversationNode `json:"nodes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ConvId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ConvId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BlogsearchConversationTree) MarshalJSON() ([]byte, error) { + type NoMethod BlogsearchConversationTree + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BlueGingerClientVisibleProtoBlueGingerSupportedServices: Information +// to indicate BG availability for businesses. This message is filled +// from Topic Server and stored in the GSR in Superroot. +type BlueGingerClientVisibleProtoBlueGingerSupportedServices struct { + // Modules: List of supported modules for a business. + Modules []*BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule `json:"modules,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Modules") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Modules") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BlueGingerClientVisibleProtoBlueGingerSupportedServices) MarshalJSON() ([]byte, error) { + type NoMethod BlueGingerClientVisibleProtoBlueGingerSupportedServices + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule struct { + // Name: Module name, e.g. hairdresser_reservation. from + // quality/views/extraction/kcube/bg/modules/modules.bzl. + Name string `json:"name,omitempty"` + + // Services: Services of this module that are supported by the business, + // e.g. haircuts. + Services []string `json:"services,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule) MarshalJSON() ([]byte, error) { + type NoMethod BlueGingerClientVisibleProtoBlueGingerSupportedServicesBlueGingerModule + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BookCitationPerDocData: Per-doc data for the web page about the cited +// book Approximate size is on average ~10bytes +type BookCitationPerDocData struct { + // BookId: the book id for the main citation + BookId int64 `json:"bookId,omitempty,string"` + + // DiscretizedCitationScore: the discretized citation score for the main + // book. we map the raw score 1.0-20.0 to 0 - 127 + DiscretizedCitationScore int64 `json:"discretizedCitationScore,omitempty"` + + // Previewable: Is there a preview or excerpt of the book on this + // document? + Previewable bool `json:"previewable,omitempty"` + + // SecondBookId: book id for the second citation if we can't separate + // the two top citations (they are too close). + SecondBookId int64 `json:"secondBookId,omitempty,string"` + + // SecondDiscretizedCitationScore: the discretized score for the second + // citation + SecondDiscretizedCitationScore int64 `json:"secondDiscretizedCitationScore,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BookId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BookId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BookCitationPerDocData) MarshalJSON() ([]byte, error) { + type NoMethod BookCitationPerDocData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// BusinessHours: 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. +type BusinessHours struct { + Dayopen int64 `json:"dayopen,omitempty"` + + Interval []*BusinessHoursInterval `json:"interval,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dayopen") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dayopen") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BusinessHours) MarshalJSON() ([]byte, error) { + type NoMethod BusinessHours + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type BusinessHoursInterval struct { + // End: The interval ends at the start of this second + End int64 `json:"end,omitempty"` + + // Start: Time in seconds since Midnight-Monday-Morn + Start int64 `json:"start,omitempty"` + + // ForceSendFields is a list of field names (e.g. "End") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "End") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *BusinessHoursInterval) MarshalJSON() ([]byte, error) { + type NoMethod BusinessHoursInterval + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ChatBotPlatformBotSendToken: Token to be exposed and stored by the +// bot +type ChatBotPlatformBotSendToken struct { + // ExpiryTimeMicros: Time since epoch (micros) that this will expire + ExpiryTimeMicros int64 `json:"expiryTimeMicros,omitempty,string"` + + // SendToken: Encrypted InternalSendToken + SendToken string `json:"sendToken,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ExpiryTimeMicros") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExpiryTimeMicros") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ChatBotPlatformBotSendToken) MarshalJSON() ([]byte, error) { + type NoMethod ChatBotPlatformBotSendToken + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type ChatBotPlatformFireballId struct { + // Id: 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. + Id *GoogleInternalCommunicationsInstantmessagingV1Id `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ChatBotPlatformFireballId) MarshalJSON() ([]byte, error) { + type NoMethod ChatBotPlatformFireballId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClassifierPornAggregatedUrlPornScores: Per-URL porn scores for the +// URLs associated with the corresponding image. +type ClassifierPornAggregatedUrlPornScores struct { + AverageUrlPornScore float64 `json:"averageUrlPornScore,omitempty"` + + UrlCount int64 `json:"urlCount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AverageUrlPornScore") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AverageUrlPornScore") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornAggregatedUrlPornScores) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornAggregatedUrlPornScores + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *ClassifierPornAggregatedUrlPornScores) UnmarshalJSON(data []byte) error { + type NoMethod ClassifierPornAggregatedUrlPornScores + var s1 struct { + AverageUrlPornScore gensupport.JSONFloat64 `json:"averageUrlPornScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AverageUrlPornScore = float64(s1.AverageUrlPornScore) + return nil +} + +// ClassifierPornClassifierData: Next ID: 6 +type ClassifierPornClassifierData struct { + Classification []*ClassifierPornClassifierDataClassification `json:"classification,omitempty"` + + // ImageBasedDetectionDone: Records whether the image linker is run + // already. This is only used for Alexandria but NOT for Segindexer. + ImageBasedDetectionDone bool `json:"imageBasedDetectionDone,omitempty"` + + Timestamp int64 `json:"timestamp,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Classification") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Classification") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornClassifierData) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornClassifierData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type ClassifierPornClassifierDataClassification struct { + Label string `json:"label,omitempty"` + + Score float64 `json:"score,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Label") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Label") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornClassifierDataClassification) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornClassifierDataClassification + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *ClassifierPornClassifierDataClassification) UnmarshalJSON(data []byte) error { + type NoMethod ClassifierPornClassifierDataClassification + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + return nil +} + +// ClassifierPornDocumentData: Next ID: 3 +type ClassifierPornDocumentData struct { + Classifierdata *ClassifierPornClassifierData `json:"classifierdata,omitempty"` + + Sitedata *ClassifierPornSiteData `json:"sitedata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Classifierdata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Classifierdata") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornDocumentData) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornDocumentData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClassifierPornQueryClassifierOutput: Generic output for one vertical. +type ClassifierPornQueryClassifierOutput struct { + // CsaiClassification: This field is only filled for the CSAI vertical. + // + // Possible values: + // "NOT_PROTECTED" - Contract: (STRONGLY_PROTECTED & PROTECTED) == + // PROTECTED + // "PROTECTED" + // "STRONGLY_PROTECTED" + CsaiClassification string `json:"csaiClassification,omitempty"` + + // CsaiRegexpHighConfidenceClassification: DO NOT USE: This field is + // temporary and should be used only for the CSAI Onebox. This field is + // the result of the regular expression classifier alone as opposed to a + // combination with Seti classifier as in csai_classification field. + // + // Possible values: + // "NOT_PROTECTED" - Contract: (STRONGLY_PROTECTED & PROTECTED) == + // PROTECTED + // "PROTECTED" + // "STRONGLY_PROTECTED" + CsaiRegexpHighConfidenceClassification string `json:"csaiRegexpHighConfidenceClassification,omitempty"` + + // Debug: Human-readable debug information about the classification. + // This field is only set if output_debug is set in the classification + // input. + Debug string `json:"debug,omitempty"` + + // IsPositive: The bit that shows if this classifier outputs positive + // classification for the input query. Set by thresholding with a + // recommended threshold. + IsPositive bool `json:"isPositive,omitempty"` + + // Score: The score that the classifier assigned to the input query. + // This is filled by all verticals. + Score float64 `json:"score,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CsaiClassification") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CsaiClassification") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornQueryClassifierOutput) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornQueryClassifierOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *ClassifierPornQueryClassifierOutput) UnmarshalJSON(data []byte) error { + type NoMethod ClassifierPornQueryClassifierOutput + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + return nil +} + +// ClassifierPornQueryMultiLabelClassifierOutput: 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. +type ClassifierPornQueryMultiLabelClassifierOutput struct { + Csai *ClassifierPornQueryClassifierOutput `json:"csai,omitempty"` + + Fringe *ClassifierPornQueryClassifierOutput `json:"fringe,omitempty"` + + Medical *ClassifierPornQueryClassifierOutput `json:"medical,omitempty"` + + Offensive *ClassifierPornQueryClassifierOutput `json:"offensive,omitempty"` + + Porn *ClassifierPornQueryClassifierOutput `json:"porn,omitempty"` + + Spoof *ClassifierPornQueryClassifierOutput `json:"spoof,omitempty"` + + Violence *ClassifierPornQueryClassifierOutput `json:"violence,omitempty"` + + Vulgar *ClassifierPornQueryClassifierOutput `json:"vulgar,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Csai") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Csai") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornQueryMultiLabelClassifierOutput) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornQueryMultiLabelClassifierOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClassifierPornQueryStats: QuerySats contains the information about +// the queries that users typed to search for this image. +type ClassifierPornQueryStats struct { + // QueryTextPornScore: A query text porn score for the queries which + // have clicks to the image: query_text_porn_score := sum(clicks(query) + // * text_porn_score(query)) / sum(clicks(query)) + QueryTextPornScore float64 `json:"queryTextPornScore,omitempty"` + + TotalClicks float64 `json:"totalClicks,omitempty"` + + // ForceSendFields is a list of field names (e.g. "QueryTextPornScore") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "QueryTextPornScore") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornQueryStats) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornQueryStats + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *ClassifierPornQueryStats) UnmarshalJSON(data []byte) error { + type NoMethod ClassifierPornQueryStats + var s1 struct { + QueryTextPornScore gensupport.JSONFloat64 `json:"queryTextPornScore"` + TotalClicks gensupport.JSONFloat64 `json:"totalClicks"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.QueryTextPornScore = float64(s1.QueryTextPornScore) + s.TotalClicks = float64(s1.TotalClicks) + return nil +} + +// ClassifierPornReferrerCounts: 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. +type ClassifierPornReferrerCounts struct { + Adult int64 `json:"adult,omitempty"` + + // Porn: Number of referrers which are classified as porn and as adult. + Porn int64 `json:"porn,omitempty"` + + // Total: Total number of referrers. + Total int64 `json:"total,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Adult") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Adult") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornReferrerCounts) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornReferrerCounts + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ClassifierPornSiteData: Next ID: 51 +type ClassifierPornSiteData struct { + // AvgPedoPageScore: The average pedo page score for the site. + AvgPedoPageScore float64 `json:"avgPedoPageScore,omitempty"` + + FinalPedoSiteScore float64 `json:"finalPedoSiteScore,omitempty"` + + // NumberOfPages: The number of pages that were used to compute the + // scores and ratios. + NumberOfPages uint64 `json:"numberOfPages,omitempty,string"` + + // NumberOfPedoPages: The number of pages with pedo restrict. + NumberOfPedoPages uint64 `json:"numberOfPedoPages,omitempty,string"` + + // SitePornRatio: The ratio of porn/softporn of the site this page + // belongs to. + SitePornRatio float64 `json:"sitePornRatio,omitempty"` + + SiteSoftpornRatio float64 `json:"siteSoftpornRatio,omitempty"` + + Versionedscore []*ClassifierPornSiteDataVersionedScore `json:"versionedscore,omitempty"` + + ViolenceStats *ClassifierPornSiteViolenceStats `json:"violenceStats,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AvgPedoPageScore") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AvgPedoPageScore") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornSiteData) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornSiteData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *ClassifierPornSiteData) UnmarshalJSON(data []byte) error { + type NoMethod ClassifierPornSiteData + var s1 struct { + AvgPedoPageScore gensupport.JSONFloat64 `json:"avgPedoPageScore"` + FinalPedoSiteScore gensupport.JSONFloat64 `json:"finalPedoSiteScore"` + SitePornRatio gensupport.JSONFloat64 `json:"sitePornRatio"` + SiteSoftpornRatio gensupport.JSONFloat64 `json:"siteSoftpornRatio"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AvgPedoPageScore = float64(s1.AvgPedoPageScore) + s.FinalPedoSiteScore = float64(s1.FinalPedoSiteScore) + s.SitePornRatio = float64(s1.SitePornRatio) + s.SiteSoftpornRatio = float64(s1.SiteSoftpornRatio) + return nil +} + +// ClassifierPornSiteDataVersionedScore: 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. +type ClassifierPornSiteDataVersionedScore struct { + Score float64 `json:"score,omitempty"` + + // Possible values: + // "HIGH_PORN_FRACTION_RULE" + // "DEPRECATED_USER_GENERATED_CONTENT_RULE" + // "DEPRECATED_SITES_WITH_IGNORED_SCORES_LIST" + SiteRule []string `json:"siteRule,omitempty"` + + Version int64 `json:"version,omitempty"` + + // Verticals4Score: Please talk to safesearch@ before relying on any of + // these internal fields: + Verticals4Score float64 `json:"verticals4Score,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Score") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Score") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornSiteDataVersionedScore) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornSiteDataVersionedScore + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *ClassifierPornSiteDataVersionedScore) UnmarshalJSON(data []byte) error { + type NoMethod ClassifierPornSiteDataVersionedScore + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + Verticals4Score gensupport.JSONFloat64 `json:"verticals4Score"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + s.Verticals4Score = float64(s1.Verticals4Score) + return nil +} + +// ClassifierPornSiteViolenceStats: Next ID: 6 +type ClassifierPornSiteViolenceStats struct { + MeanFinalViolenceScore float64 `json:"meanFinalViolenceScore,omitempty"` + + NumberOfImages uint64 `json:"numberOfImages,omitempty,string"` + + NumberOfVideos uint64 `json:"numberOfVideos,omitempty,string"` + + VideoViolenceScore float64 `json:"videoViolenceScore,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "MeanFinalViolenceScore") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MeanFinalViolenceScore") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ClassifierPornSiteViolenceStats) MarshalJSON() ([]byte, error) { + type NoMethod ClassifierPornSiteViolenceStats + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *ClassifierPornSiteViolenceStats) UnmarshalJSON(data []byte) error { + type NoMethod ClassifierPornSiteViolenceStats + var s1 struct { + MeanFinalViolenceScore gensupport.JSONFloat64 `json:"meanFinalViolenceScore"` + VideoViolenceScore gensupport.JSONFloat64 `json:"videoViolenceScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.MeanFinalViolenceScore = float64(s1.MeanFinalViolenceScore) + s.VideoViolenceScore = float64(s1.VideoViolenceScore) + return nil +} + +// CommerceDatastoreDeepTag: The basic message that contains a single +// decision output of go/deeptagger. +type CommerceDatastoreDeepTag struct { + // Confidence: The confidence of the tag, encoded to 14 bits (range [0, + // 16383]). Due to modeling details, a large number of tags become + // trustworthy with confidence greater than 0.001, so two bytes of + // precision are required. + Confidence int64 `json:"confidence,omitempty"` + + // Tag: A Deep Tag enum in uint32 form. + Tag int64 `json:"tag,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Confidence") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Confidence") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CommerceDatastoreDeepTag) MarshalJSON() ([]byte, error) { + type NoMethod CommerceDatastoreDeepTag + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CommerceDatastoreImageDeepTags: 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/looks_offline_pipeline.cc?l=268&rcl=304165166 +// *** `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. +type CommerceDatastoreImageDeepTags struct { + // ModelOutputs: The set of outputs for a series of model versions. The + // size of this field should not extend beyond 4 at any time: two + // versions for slow-update track dependencies, and two versions for + // fast-update track dependencies. + ModelOutputs []*CommerceDatastoreImageDeepTagsModelOutput `json:"modelOutputs,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ModelOutputs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ModelOutputs") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CommerceDatastoreImageDeepTags) MarshalJSON() ([]byte, error) { + type NoMethod CommerceDatastoreImageDeepTags + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type CommerceDatastoreImageDeepTagsModelOutput struct { + BackgroundType *CommerceDatastoreDeepTag `json:"backgroundType,omitempty"` + + Collage *CommerceDatastoreDeepTag `json:"collage,omitempty"` + + // Cropping: 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. + Cropping *CommerceDatastoreDeepTag `json:"cropping,omitempty"` + + ModelType *CommerceDatastoreDeepTag `json:"modelType,omitempty"` + + // Nfs: Tag corresponds to the shopping non-family safe (nfs) image + // signal. + Nfs *CommerceDatastoreDeepTag `json:"nfs,omitempty"` + + ObjectCount *CommerceDatastoreDeepTag `json:"objectCount,omitempty"` + + // Overlay: Tag corresponding to unwanted text overlay (watermarks, + // logos, promotional elements, artifacts, etc). + Overlay *CommerceDatastoreDeepTag `json:"overlay,omitempty"` + + Selfie *CommerceDatastoreDeepTag `json:"selfie,omitempty"` + + // TextOverlay: Tag corresponding to the text overlay classifier + // (watermarks, logos, promotional elements, artifacts, etc). + TextOverlay []*CommerceDatastoreDeepTag `json:"textOverlay,omitempty"` + + Version int64 `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BackgroundType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BackgroundType") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CommerceDatastoreImageDeepTagsModelOutput) MarshalJSON() ([]byte, error) { + type NoMethod CommerceDatastoreImageDeepTagsModelOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDoc: Protocol record used for collecting together all +// information about a document. Please consult go/dme 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: 190 +type CompositeDoc struct { + // ContentChecksum96: Visible content checksum as computed by + // repository::parsehandler::checksum::Checksum96bitsParseHandler. The + // value is a Fprint96 in "key format" (i.e., by Fprint96::AsKey()). + ContentChecksum96 string `json:"ContentChecksum96,omitempty"` + + // AccessRequirements: Contains necessary information to enforce row + // level Docjoin access control. + AccessRequirements *IndexingPrivacyAccessAccessRequirements `json:"accessRequirements,omitempty"` + + Additionalchecksums *CompositeDocAdditionalChecksums `json:"additionalchecksums,omitempty"` + + Alternatename []*CompositeDocAlternateName `json:"alternatename,omitempty"` + + AnchorStats *IndexingDocjoinerAnchorStatistics `json:"anchorStats,omitempty"` + + Anchors *Anchors `json:"anchors,omitempty"` + + // BadSslCertificate: This field is present iff the page has a bad SSL + // certificate itself or in its redirect chain. + BadSslCertificate *IndexingBadSSLCertificate `json:"badSslCertificate,omitempty"` + + CseId []*QualityProseCSEUrlInfo `json:"cseId,omitempty"` + + // CsePagerankCutoff: URL should only be selected for CSE Index if it's + // pagerank is higher than cse_pagerank_cutoff. + CsePagerankCutoff int64 `json:"csePagerankCutoff,omitempty"` + + // DataVersion: Contains the tracking version of various data fields in + // CompositeDoc. + DataVersion *IndexingDocjoinerDataVersion `json:"dataVersion,omitempty"` + + Doc *GDocumentBase `json:"doc,omitempty"` + + // DocAttachments: A generic container to hold document annotations and + // signals. For a full list of extensions live today, see go/wde. + DocAttachments *Proto2BridgeMessageSet `json:"docAttachments,omitempty"` + + // DocImages: Info about "selected" images associated with the document + // for which we (already) have ImageData. For each image URL, some fixed + // number of documents are selected as web referrers for the image URL, + // and within those selected documents, we say the image is "selected". + // Within the remaining documents, we say the image is "rejected". Note + // that this distinction is slightly different from selected for + // indexing. Only images within doc_images where + // is_indexed_by_imagesearch is true will be selected for indexing. You + // can find the rejected images at + // composite_doc.doc_attachments().get(). You can find images that are + // selected, but for which we have no ImageData (yet) at + // composite_doc.image_indexing_info().selected_not_indexed_image_link() + DocImages []*ImageData `json:"docImages,omitempty"` + + // DocVideos: Info about videos embedded in the document. + DocVideos []*ImageRepositoryVideoProperties `json:"docVideos,omitempty"` + + // DocinfoPassthroughAttachments: This messageset is used for data + // pushed into the index using the signals framework that is never to be + // used in Mustang or TG Continuum scoring/snippeting code. Any protocol + // buffer stored in this messageset is automatically returned in a + // docinfo response - it ends up in the "info" messageset in the + // WWWSnippetResponse, so it can be used in post-doc twiddlers and for + // display in GWS with no code changes in Mustang or Teragoogle. + DocinfoPassthroughAttachments *Proto2BridgeMessageSet `json:"docinfoPassthroughAttachments,omitempty"` + + // EmbeddedContentInfo: Data produced by the embedded-content system. + // This is a thin message, containing only embedded_links_info data for + // the embedder and JavaScript/CSS embedded links (the embedded-content + // bigtable also contains snapshots, compressed document trees and all + // embedded link types). Provided using the index signal API. + EmbeddedContentInfo *IndexingEmbeddedContentEmbeddedContentInfo `json:"embeddedContentInfo,omitempty"` + + Extradup []*CompositeDocExtraDup `json:"extradup,omitempty"` + + Forwardingdup []*CompositeDocForwardingDup `json:"forwardingdup,omitempty"` + + Includedcontent []*CompositeDocIncludedContent `json:"includedcontent,omitempty"` + + Indexinginfo *CompositeDocIndexingInfo `json:"indexinginfo,omitempty"` + + // LabelData: This field associates a document to particular labels and + // assigns confidence values to them. + LabelData *QualityLabelsGoogleLabelData `json:"labelData,omitempty"` + + Liveexperimentinfo *CompositeDocLiveExperimentInfo `json:"liveexperimentinfo,omitempty"` + + Localinfo *LocalWWWInfo `json:"localinfo,omitempty"` + + // LocalizedAlternateName: Localized alternate names are similar to + // alternate names, except that it is associated with a language + // different from its canonical. This is the subset of + // webmaster-provided localized alternate names being in the dup cluster + // of this document. Used during serving for swapping in the URL based + // on regional and language preferences of the user. + LocalizedAlternateName []*IndexingConverterLocalizedAlternateName `json:"localizedAlternateName,omitempty"` + + Localizedvariations *CompositeDocLocalizedVariations `json:"localizedvariations,omitempty"` + + ManyboxData *ManyboxData `json:"manyboxData,omitempty"` + + // PartialUpdateInfo: Only present in partial cdocs. + PartialUpdateInfo *CompositeDocPartialUpdateInfo `json:"partialUpdateInfo,omitempty"` + + PerDocData *PerDocData `json:"perDocData,omitempty"` + + // Porninfo: Porn related data used for image and web search porn + // classification as well as for diagnostics purposes. + Porninfo *ClassifierPornDocumentData `json:"porninfo,omitempty"` + + Properties *DocProperties `json:"properties,omitempty"` + + // Ptoken: Contains information necessary to perform policy decision on + // the usage of the data assosiated with this cdoc. + Ptoken *PtokenPToken `json:"ptoken,omitempty"` + + Qualitysignals *CompositeDocQualitySignals `json:"qualitysignals,omitempty"` + + // Registrationinfo: Information about the most recent creation and + // expiration of this domain. It's extracted from domainedge signal. + Registrationinfo *RegistrationInfo `json:"registrationinfo,omitempty"` + + // RichcontentData: If present, indicates that some content was + // inserted, deleted, or replaced in the document's content (in + // CompositeDoc::doc::Content::Representation), and stores information + // about what was inserted, deleted, or replaced. + RichcontentData *IndexingConverterRichContentData `json:"richcontentData,omitempty"` + + // Richsnippet: rich snippet extracted from the content of a document. + Richsnippet *RichsnippetsPageMap `json:"richsnippet,omitempty"` + + Robotsinfolist *CompositeDocRobotsInfoList `json:"robotsinfolist,omitempty"` + + // ScaledIndyRank: to copy to per-doc + ScaledIndyRank int64 `json:"scaledIndyRank,omitempty"` + + // Sitemap: Sitelinks: a collection of interesting links a user might be + // interested in, given they are interested in this document. WARNING: + // this is different from the crawler Sitemaps (see SitemapsSignals in + // the attachments). + Sitemap *Sitemap `json:"sitemap,omitempty"` + + // StorageRowTimestampMicros: Row timestamp in CDoc storage. + StorageRowTimestampMicros int64 `json:"storageRowTimestampMicros,omitempty,string"` + + // Possible values: + // "LTG_CANDIDATE" - ltg-candidate is a label for docs whose selection + // decision is deferred to ltg by Alexandria. It does not correspond to + // any serving corpus. + // "NOSUBINDEX" + // "BASE" + // "CSEINDEX" - Custom Search Engine special purpose corpus. + // "CSEINDEX_EXTENDED" - Custom Search Engine extended corpus to catch + // all CSE urls not indexed in unified zeppelin or higher tiers. + // "DAILY" + // "TIMBIT_PROTECTED" - timbit_protected is a label for keeping docs + // from dropping out of base, i.e., all timbit protected docs belong to + // base/basextended. + // "LANDFILL1" - Generic corpora used in Oscar. + // "LANDFILL2" + // "LANDFILL3" + // "LANDFILL_BLOGSEARCH" - Blogsearch special purpose corpus for + // Oscar. + // "LANDFILL_CSE" - Customsearch special purpose corpus (for + // CookieBird). + // "LANDFILL_SOCIAL" - Social special purpose corpus for Oscar. + // "INSTANT" + // "UNIFIED_LANDFILL" - One big landfill index for Union. + // "BLOGSEARCH_DYNAMIC_ASSIMILATED" - Alexandria version of Blogsearch + // Assimilated. + // "BLOGSEARCH_EXTENDED" - Blogsearch corpus for all docs not indexed + // in unified zeppelin or higher. + // "MOFFETT" - Moffett corpus for all docs indexed in base and unified + // zeppelin. + // "UNSELECTED_DOCUMENTS" - Unselected documents corpus used for + // index-selection eval tools. + // "AQUARIUS" - Aquarius corpus which is used to hold all app-only + // documents. go/aquarius + // "WEBSEARCH_FRESH" - Corpus corresponding to serving corpus + // websearch_fresh. + // "WEBSEARCH1" - Corpus corresponding to serving corpus websearch_1. + // "WEBSEARCH2" - Corpus corresponding to serving corpus websearch_2. + // "WEBSEARCH3" - Corpus corresponding to serving corpus websearch_3. + // "UNIFIED_ZEPPELIN_HIGH_QUALITY" - Top quality documents in unified + // zeppelin + // "ASIANREGIONAL" - Deprecated corpora. + // "EMEAREGIONAL" + // "BASEREGIONAL" + // "BLACKHOLE" + // "XBASE" + // "FRESHBASE" + // "XASIANREGIONAL" + // "XEMEAREGIONAL" + // "XBASEREGIONAL" + // "BLIMPIE" + // "BLIMPIEPP" + // "GOODYEAR" + // "GOODYEARPP" + // "QUASAR" + // "ZEPPELIN1" + // "ZEPPELIN2" + // "ZEPPELIN3" + // "ZEPPELIN_STAGING" + // "PULSAR" + // "TIMBIT" + // "UNIFIED_ZEPPELIN" + Subindexid []string `json:"subindexid,omitempty"` + + SyntacticDate *QualityTimebasedSyntacticDate `json:"syntacticDate,omitempty"` + + // Url: WARNING!!! "url" field in CompositeDoc is optional, and is + // usually missing: e.g., Docjoin CompositeDoc's don't have + // CompositeDoc::url. has_url() checking is often useful. So don't rely + // on CompositeDoc::url unless you're sure otherwise. Usually you want + // to use CompositeDoc::doc::url instead. + Url string `json:"url,omitempty"` + + // Urldate: Date in the url extracted by + // quality/snippets/urldate/date-in-url.cc This is given as midnight GMT + // on the date in question. + Urldate int64 `json:"urldate,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "ContentChecksum96") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContentChecksum96") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDoc) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDoc + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocAdditionalChecksums: Additional checksums of the +// document. +type CompositeDocAdditionalChecksums struct { + // NoTransientChecksum96: Same as ContentChecksum96 but without + // transient boilerplate. + NoTransientChecksum96 string `json:"NoTransientChecksum96,omitempty"` + + // SimHash: Deprecated. Use simhash_v2 and simhash_v2_significance + // instead. + SimHash uint64 `json:"SimHash,omitempty,string"` + + SimHashIsTrusted bool `json:"SimHashIsTrusted,omitempty"` + + // SimhashV2: Simhash-v2 is generated by SimHashParseHandler, designed + // as a complete replacement of simhash-v1 (a.k.a. the original simhash + // above) from ApproxDupsParseHandler. Simhash-v2 uses a revised + // algorithm so that it is expected to work better in most cases than + // simhash-v1. They coexist in current transition period, then + // simhash-v1 will be retired. + SimhashV2 uint64 `json:"simhashV2,omitempty,string"` + + // SimhashV2Significance: Simhash-v2-significance is used to describe + // the confidence about the corresponding simhash-v2 value. It is + // defined as the average absolute difference from zero of all internal + // state components when finalizing a simhash-v2 value in + // HashMultiSetDotCauchy. We used to compare the significance against + // some pre-defined threshold (default: 20) to get a boolean value + // "trusted_simhash_v2". However, it is possible that this field is + // missing while "simhash_v2" is present, in such case (1) Use + // "SimHashIsTrusted" instead if it is present, AND/OR (2) Assume + // "simhash_v2" is trusted if its value is non-zero. + SimhashV2Significance float64 `json:"simhashV2Significance,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "NoTransientChecksum96") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NoTransientChecksum96") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocAdditionalChecksums) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocAdditionalChecksums + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *CompositeDocAdditionalChecksums) UnmarshalJSON(data []byte) error { + type NoMethod CompositeDocAdditionalChecksums + var s1 struct { + SimhashV2Significance gensupport.JSONFloat64 `json:"simhashV2Significance"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.SimhashV2Significance = float64(s1.SimhashV2Significance) + return nil +} + +// CompositeDocAlternateName: 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. +type CompositeDocAlternateName struct { + Url string `json:"Url,omitempty"` + + // UrlEncoding: See webutil/urlencoding + UrlEncoding int64 `json:"UrlEncoding,omitempty"` + + // EcnFp: Fp96 of webmirror equivalence class as of last time this was + // exported. + EcnFp string `json:"ecnFp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Url") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Url") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocAlternateName) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocAlternateName + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocExtraDup: The top non-forwarding dups of the canonical +// url. +type CompositeDocExtraDup struct { + // EcnFp: Fp96 of webmirror equivalence class as of last time this was + // exported. + EcnFp string `json:"ecnFp,omitempty"` + + // Url: The url of the non-forwarding dup. + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EcnFp") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EcnFp") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocExtraDup) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocExtraDup + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocForwardingDup: 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) +type CompositeDocForwardingDup struct { + // Ecn: The name of the url's webmirror equivalence class. + Ecn string `json:"ecn,omitempty"` + + EcnFp string `json:"ecnFp,omitempty"` + + // Purposes: The purpose(s) of the forwarding dup indicating if it is + // used for forwarding signal/anchors generally, or only for forwarding + // some specific signal (e.g. navboost), or for some other purposes + // (e.g., not for forwarding any data but for making "info:" complete). + // See indexing/dups/public/dups.h for more details. + Purposes int64 `json:"purposes,omitempty"` + + // RawPagerank: Raw pagerank of the url. + RawPagerank int64 `json:"rawPagerank,omitempty"` + + // Repid: The webmirror repid of the forwarding dup. + Repid string `json:"repid,omitempty"` + + // Url: The url of the forwarding dup. + Url string `json:"url,omitempty"` + + // Urlencoding: The encoding of the url (see webutil/urlencoding for + // details). + Urlencoding int64 `json:"urlencoding,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Ecn") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Ecn") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocForwardingDup) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocForwardingDup + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type CompositeDocIncludedContent struct { + // SourceTypeBitfield: 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 + SourceTypeBitfield int64 `json:"SourceTypeBitfield,omitempty,string"` + + IncludedDoc *GDocumentBase `json:"includedDoc,omitempty"` + + LinkUrl string `json:"linkUrl,omitempty"` + + PerDocData *PerDocData `json:"perDocData,omitempty"` + + Properties *DocProperties `json:"properties,omitempty"` + + // ForceSendFields is a list of field names (e.g. "SourceTypeBitfield") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SourceTypeBitfield") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocIncludedContent) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocIncludedContent + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocIndexingInfo: 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. +type CompositeDocIndexingInfo struct { + // CdocBuildInfo: To hold extra info for building a final cdoc from raw + // cdoc and goldmine annotations. + CdocBuildInfo *IndexingDocjoinerCDocBuildInfo `json:"cdocBuildInfo,omitempty"` + + // ContentProtected: Whether current page is under content protection, + // i.e. a page has been crawled as an error page, but we preserve its + // last known good content and keep its crawl_status as + // converter.CrawlStatus::CONTENT. + ContentProtected bool `json:"contentProtected,omitempty"` + + // ConvertToRobotedReason: If set, indicates that the crawl status was + // converted to ROBOTED for the reason specified by the enum value in + // converter.RobotedReasons.ConvertToRobotedReasons. See + // indexing/converter/proto/converter.proto for details. If unset, then + // the document was not converted to roboted, and if the document crawl + // status is ROBOTED, then the document is disallowed (at least to + // Google) in robots.txt. + ConvertToRobotedReason int64 `json:"convertToRobotedReason,omitempty"` + + // CrawlStatus: One of the enum values in converter.CrawlStatus.State + // (see indexing/converter/proto/converter.proto for details). Default + // is converter.CrawlStatus::CONTENT. The document is roboted if the + // value is converter.CrawlStatus::ROBOTED. + CrawlStatus int64 `json:"crawlStatus,omitempty"` + + // Possible values: + // "DEMOTION_TYPE_NONE" + // "DEMOTION_TYPE_BADURLS_DEMOTE" + DemotionTags []string `json:"demotionTags,omitempty"` + + // ErrorType: One of the enum values in converter.ErrorPageType (see + // indexing/converter/proto/error-page-detector-enum.proto for detail). + // Default is converter::ERROR_PAGE_NONE. + ErrorType int64 `json:"errorType,omitempty"` + + // Possible values: + // "WEB" - DEPRECATED + // "REALTIME" + // "CSE" + // "CSE_PREMIUM" + // "BUSTER_IMAGES" + // "NEWS" + // "VIDEO" + // "YOUTUBE" + // "WEB_INSTANT" + // "WEB_DAILY" + // "CACHE_COLON" - A table with just the bodysource attachment + FreshdocsCorpora []string `json:"freshdocsCorpora,omitempty"` + + // Hostid: The host id of the document. Used chiefly to determine + // whether the document is part of a parked domain. + Hostid uint64 `json:"hostid,omitempty,string"` + + // IeIdentifier: A short descriptive string to help identify the IE + // application or setup where this CDoc is generated. For example: + // websearch_m3 This field is for debuggability purposes. + IeIdentifier string `json:"ieIdentifier,omitempty"` + + // ImageIndexingInfo: Indexing info about images (i.e. image links + // missing image data, etc). + ImageIndexingInfo *ImageSearchImageIndexingInfo `json:"imageIndexingInfo,omitempty"` + + // IndexingTs: The timestamp (the time since the Epoch, in microseconds) + // when the docjoin is exported from indexing. The main purpose of this + // field is to identify different versions of the same document. + IndexingTs int64 `json:"indexingTs,omitempty,string"` + + // IsSiblingDeletion: Page is deleted when indexing choice flips between + // different corpora (e.g. desktop, mobile, archive, scholar, etc.) for + // the same URL. It's only set for deletion cdocs. Downstreams using URL + // as key should ignore the current deletion if the field is set. + IsSiblingDeletion bool `json:"isSiblingDeletion,omitempty"` + + // NoLongerCanonicalTimestamp: If set, the timestamp in microseconds + // when the URL stopped being canonical. This should never be set for + // exported canonical documents. This field is used by dups during + // canonical flip, and by webmain when doc selection switched between + // desktop and mobile. Union respects this timestamp to prevent old doc + // being deleted until the new doc is picked up + NoLongerCanonicalTimestamp int64 `json:"noLongerCanonicalTimestamp,omitempty,string"` + + // NormalizedClickScore: This score is calculated by re-mapping the back + // onto the partition's score distribution, such that the score + // represents the score of the equivalently ranked organically-selected + // document. + NormalizedClickScore float64 `json:"normalizedClickScore,omitempty"` + + // RawNavboost: The raw navboost count for the canonical url without + // aggregating the navboost from dup urls. This field is used when + // building forwarding map. + RawNavboost int64 `json:"rawNavboost,omitempty"` + + // RowTimestamp: The timestamp (the time since the Epoch, in + // microseconds) to represent doc version, which is used in the + // downstream processing after Raffia. If it's not set, indexing_ts will + // be used as row_timestamp. The timestamp is generally set by + // reprocessing to set slightly newer indexing_ts such that the system + // can respect the reprocessed version to overwrite old data in storage. + RowTimestamp int64 `json:"rowTimestamp,omitempty,string"` + + // SelectionTierRank: Selection tier rank is a language normalized score + // ranging from 0-1 over the serving tier (Base, Zeppelins, Landfills) + // for this document. + SelectionTierRank float64 `json:"selectionTierRank,omitempty"` + + // TracingId: The tracing ids is to label the version of url for url + // status tracking. This repeated field will carry at most 10 tracing + // id. See more details in go/rich-tracing-design There will be less + // than 2% base+uz cdocs carrying this field. The major sources of + // tracing ids include: * Indexing API pushed urls * Index Metrics + // sampling urls The tracing ids will be written into cdocs by Webmain + // Ramifier. The consumer of the tracing ids is Union serving + // notification collector see more at go/serving-notification-from-union + TracingId []string `json:"tracingId,omitempty"` + + // UrlChangerate: Changerate information for this doc (see + // crawler/changerate/changerate.proto for details). + UrlChangerate *CrawlerChangerateUrlChangerate `json:"urlChangerate,omitempty"` + + // UrlHistory: Url change history for this doc (see + // crawler/changerate/changerate.proto for details). Note if a doc has + // more than 20 changes, we only keep the last 20 changes here to avoid + // adding to much data in its docjoin. + UrlHistory *CrawlerChangerateUrlHistory `json:"urlHistory,omitempty"` + + // UrlPatternSignals: UrlPatternSignals for this doc, used to compute + // document score in LTG (see + // indexing/signal_aggregator/proto/signal-aggregator.proto for + // details). + UrlPatternSignals *IndexingSignalAggregatorUrlPatternSignals `json:"urlPatternSignals,omitempty"` + + // VideoIndexingInfo: Indexing info about videos. + VideoIndexingInfo *ImageRepositoryVideoIndexingInfo `json:"videoIndexingInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CdocBuildInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CdocBuildInfo") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocIndexingInfo) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocIndexingInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *CompositeDocIndexingInfo) UnmarshalJSON(data []byte) error { + type NoMethod CompositeDocIndexingInfo + var s1 struct { + NormalizedClickScore gensupport.JSONFloat64 `json:"normalizedClickScore"` + SelectionTierRank gensupport.JSONFloat64 `json:"selectionTierRank"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.NormalizedClickScore = float64(s1.NormalizedClickScore) + s.SelectionTierRank = float64(s1.SelectionTierRank) + return nil +} + +// CompositeDocLiveExperimentInfo: 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. +type CompositeDocLiveExperimentInfo struct { + // PerLiveExperimentInfo: List of necessary information for each live + // experiments. + PerLiveExperimentInfo []*CompositeDocLiveExperimentInfoPerLiveExperimentInfo `json:"perLiveExperimentInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "PerLiveExperimentInfo") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PerLiveExperimentInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocLiveExperimentInfo) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocLiveExperimentInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocLiveExperimentInfoPerLiveExperimentInfo: Contains +// information for a live experiment. +type CompositeDocLiveExperimentInfoPerLiveExperimentInfo struct { + // ExperimentId: ID of a live experiment. + ExperimentId string `json:"experimentId,omitempty"` + + // PartialCdoc: Partial CDoc for a live experiment. + PartialCdoc *CompositeDoc `json:"partialCdoc,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ExperimentId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExperimentId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocLiveExperimentInfoPerLiveExperimentInfo) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocLiveExperimentInfoPerLiveExperimentInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type CompositeDocLocalizedVariations struct { + // DupsComputedAlternateNames: 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. + DupsComputedAlternateNames []*IndexingDupsComputedLocalizedAlternateNamesLocaleEntry `json:"dupsComputedAlternateNames,omitempty"` + + // WebmasterAlternateNames: 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. + WebmasterAlternateNames []*IndexingConverterLocalizedAlternateName `json:"webmasterAlternateNames,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DupsComputedAlternateNames") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "DupsComputedAlternateNames") to include in API requests with the + // JSON null value. By default, fields with empty values are omitted + // from API requests. However, any field with an empty value appearing + // in NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocLocalizedVariations) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocLocalizedVariations + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocPartialUpdateInfo: Contains information about the partial +// updates present in a partial CompositeDoc. +type CompositeDocPartialUpdateInfo struct { + // GoldmineAnnotatorNames: List of goldmine annotator updates present in + // the enclosing partial cdoc. + GoldmineAnnotatorNames []string `json:"goldmineAnnotatorNames,omitempty"` + + // ImagesSignalNames: List of images signal updates present in the + // enclosing partial cdoc. Images signal name for a images signal is the + // unique name for the signal according to SignalSpec. + ImagesSignalNames []string `json:"imagesSignalNames,omitempty"` + + // LastFullIndexingInfo: Contains last full indexing information for + // partial updates. + LastFullIndexingInfo []*CompositeDocPartialUpdateInfoLastFullIndexingInfo `json:"lastFullIndexingInfo,omitempty"` + + // ShouldLookupDocjoinsTier: Which tier we should do cdoc lookup to + // merge partial cdocs. This uses the integer value of + // indexing.selection.CorpusId. NOT intended for other usage. + ShouldLookupDocjoinsTier int64 `json:"shouldLookupDocjoinsTier,omitempty"` + + // SignalNames: List of signal updates present in the enclosing partial + // cdoc. Signal name for a signal is unique name for the signal + // according to SignalSpec. + SignalNames []string `json:"signalNames,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "GoldmineAnnotatorNames") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GoldmineAnnotatorNames") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocPartialUpdateInfo) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocPartialUpdateInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocPartialUpdateInfoLastFullIndexingInfo: Last full indexing +// information for the partial CDoc. +type CompositeDocPartialUpdateInfoLastFullIndexingInfo struct { + // Corpus: The corpus of last full updates. + // + // Possible values: + // "RAFFIA_WEBSEARCH" - Base Raffia corpora + // "RAFFIA_FASTPATH_DAILY" - Fastpath Raffia corpora + // "RAFFIA_FASTPATH_INSTANT" + Corpus string `json:"corpus,omitempty"` + + // LastFullIndexingTsMicros: Last full update indexing timestamp in + // microseconds. + LastFullIndexingTsMicros int64 `json:"lastFullIndexingTsMicros,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Corpus") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Corpus") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocPartialUpdateInfoLastFullIndexingInfo) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocPartialUpdateInfoLastFullIndexingInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocQualitySignals: This field should hold all new quality +// online signals (after 02/05/10). Quality offline signals, which are +// loaded by Signal API, should be stored in doc_attachments. +type CompositeDocQualitySignals struct { + // LastSignificantUpdate: Contains a date used for the "Date Last + // Modified" toolbelt restrict mode. Note: this date is a combined date + // and is different from the pure shingle-based signal stored in + // contentage.last_significant_update field. + LastSignificantUpdate *QualityTimebasedLastSignificantUpdate `json:"lastSignificantUpdate,omitempty"` + + OldnessInfo *QualityTimebasedOldnessInfo `json:"oldnessInfo,omitempty"` + + Pagetype *QualityTimebasedPageType `json:"pagetype,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "LastSignificantUpdate") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LastSignificantUpdate") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocQualitySignals) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocQualitySignals + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompositeDocRobotsInfoList: List of robots info parsed for the +// user-agents other than the default used to crawl this page. +type CompositeDocRobotsInfoList struct { + NewsRobotsInfo *IndexingConverterRobotsInfo `json:"newsRobotsInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NewsRobotsInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NewsRobotsInfo") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CompositeDocRobotsInfoList) MarshalJSON() ([]byte, error) { + type NoMethod CompositeDocRobotsInfoList + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// CompressedQualitySignals: 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: 40 +type CompressedQualitySignals struct { + // AnchorMismatchDemotion: anchor_mismatch_demotion: converted from + // QualityBoost.mismatched.boost. + AnchorMismatchDemotion int64 `json:"anchorMismatchDemotion,omitempty"` + + // AuthorityPromotion: authority promotion: converted from + // QualityBoost.authority.boost + AuthorityPromotion int64 `json:"authorityPromotion,omitempty"` + + // BabyPandaDemotion: baby_panda_demotion: converted from + // QualityBoost.rendered.boost. + BabyPandaDemotion int64 `json:"babyPandaDemotion,omitempty"` + + // BabyPandaV2Demotion: New BabyPanda demotion, applied on top of Panda. + // This is meant to replace |baby_panda_demotion|. + BabyPandaV2Demotion int64 `json:"babyPandaV2Demotion,omitempty"` + + // CrapsAbsoluteHostSignals: Impressions, unsquashed, host level, not to + // be used with compressed ratios. Not to be used in Pattern Data. + CrapsAbsoluteHostSignals int64 `json:"crapsAbsoluteHostSignals,omitempty"` + + CrapsNewHostSignals uint64 `json:"crapsNewHostSignals,omitempty,string"` + + CrapsNewPatternSignals uint64 `json:"crapsNewPatternSignals,omitempty,string"` + + // CrapsNewUrlSignals: For craps_[url|pattern]_signals, please avoid + // accessing these fields directly, even in minor ways like checking + // has_craps_*. Instead, please use methods from + // quality/navboost/craps/craps-lossy-compression.h or talk to + // dice-team. + CrapsNewUrlSignals uint64 `json:"crapsNewUrlSignals,omitempty,string"` + + CrapsUnscaledIpPriorBadFraction int64 `json:"crapsUnscaledIpPriorBadFraction,omitempty"` + + // ExactMatchDomainDemotion: Page quality signals converted from fields + // in proto QualityBoost in quality/q2/proto/quality-boost.proto. To + // save indexing space, we convert the float values in [0, 1] to + // integers in range [0, 1023] (use 10 bits). + // exact_match_domain_demotion: converted from QualityBoost.emd.boost. + ExactMatchDomainDemotion int64 `json:"exactMatchDomainDemotion,omitempty"` + + // ExperimentalNsrTeamData: This field is *not* propagated to shards, + // but it's populated at serving time by go/web-signal-joins (see + // b/207344056). See go/0DayLEs for details. This is only meant to be + // used during LEs, it should *not* be used for launches. + ExperimentalNsrTeamData *QualityNsrExperimentalNsrTeamData `json:"experimentalNsrTeamData,omitempty"` + + // ExperimentalNsrTeamWsjData: This field is *not* propagated to shards, + // but it's populated at serving time by go/web-signal-joins (see + // b/207344056). See go/0DayLEs for details. This is only meant to be + // used during LEs, it should *not* be used for launches. + ExperimentalNsrTeamWsjData []*QualityNsrExperimentalNsrTeamWSJData `json:"experimentalNsrTeamWsjData,omitempty"` + + // ExperimentalQstarDeltaSignal: This field is *not* propagated to + // shards. It is meant to be populated at serving time using one of the + // versions present in the `experimental_nsr_team_wsj_data` field above + // (using the `ExperimentalNsrTeamDataOverridesParams` opti to populate + // it; see + // http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto). + // The purpose of this field is to be read by an experimental Q* + // component, in order to quickly run LEs with new delta components. See + // go/0DayLEs for details. + ExperimentalQstarDeltaSignal float64 `json:"experimentalQstarDeltaSignal,omitempty"` + + // ExperimentalQstarSignal: This field is *not* propagated to shards. It + // is meant to be populated at serving time using one of the versions + // present in the `experimental_nsr_team_wsj_data` field above (using + // the `ExperimentalNsrTeamDataOverridesParams` opti to populate it; see + // http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto). + // The purpose of this field is to be read by an experimental Q* + // component, in order to quickly run LEs with new components. See + // go/0DayLEs for details. + ExperimentalQstarSignal float64 `json:"experimentalQstarSignal,omitempty"` + + // ExperimentalQstarSiteSignal: This field is *not* propagated to + // shards. It is meant to be populated at serving time using one of the + // versions present in the `experimental_nsr_team_wsj_data` field above + // (using the `ExperimentalNsrTeamDataOverridesParams` opti to populate + // it; see + // http://source/search?q=ExperimentalNsrTeamDataOverridesParams%20file:ascorer.proto). + // The purpose of this field is to be read by an experimental Q* + // component, in order to quickly run LEs with new site components. See + // go/0DayLEs for details. + ExperimentalQstarSiteSignal float64 `json:"experimentalQstarSiteSignal,omitempty"` + + // LowQuality: S2V low quality score: converted from + // quality_nsr.NsrData, applied in Qstar. See + // NsrUtil::ConvertNsrDataToLowQuality. + LowQuality int64 `json:"lowQuality,omitempty"` + + // NavDemotion: nav_demotion: converted from + // QualityBoost.nav_demoted.boost. + NavDemotion int64 `json:"navDemotion,omitempty"` + + // NsrConfidence: NSR confidence score: converted from + // quality_nsr.NsrData. + NsrConfidence int64 `json:"nsrConfidence,omitempty"` + + // NsrOverrideBid: NSR override bid, used in Q* for emergency overrides. + NsrOverrideBid float64 `json:"nsrOverrideBid,omitempty"` + + // NsrVersionedData: Versioned NSR score to be used in continuous + // evaluation of the upcoming NSR version and assess quality impact on + // various slices. + NsrVersionedData []*NSRVersionedItem `json:"nsrVersionedData,omitempty"` + + // PairwiseqScoringData: PairwiseQ data for QTJ. This field is *not* + // propagated to shards, but is populated at serving time by + // go/web-signal-joins. See b/175762140 + PairwiseqScoringData *PairwiseQScoringData `json:"pairwiseqScoringData,omitempty"` + + // PairwiseqVersionedData: Versioned PairwiseQ score to be used in + // continuous evaluation of the upcoming PairwiseQ versions and assess + // quality impact on various slices. + PairwiseqVersionedData []*PairwiseQVersionedItem `json:"pairwiseqVersionedData,omitempty"` + + // PandaDemotion: This is the encoding of Panda fields in the proto + // SiteQualityFeatures in quality/q2/proto/site_quality_features.proto. + // The encoding/decoding is performed using functions from + // quality_coati::coati_util. + PandaDemotion int64 `json:"pandaDemotion,omitempty"` + + // PqData: Encoded page-level PQ signals. + PqData int64 `json:"pqData,omitempty"` + + // PqDataProto: Stripped page-level signals, not present in the encoded + // field 'pq_data'. + PqDataProto *QualityNsrPQData `json:"pqDataProto,omitempty"` + + ProductReviewPDemotePage int64 `json:"productReviewPDemotePage,omitempty"` + + // ProductReviewPDemoteSite: Product review demotion/promotion + // confidences. (Times 1000 and floored) + ProductReviewPDemoteSite int64 `json:"productReviewPDemoteSite,omitempty"` + + ProductReviewPPromotePage int64 `json:"productReviewPPromotePage,omitempty"` + + ProductReviewPPromoteSite int64 `json:"productReviewPPromoteSite,omitempty"` + + // Scamness: Scam model score. Used as one of the web page quality qstar + // signals. Value range from 0 to 1023. + Scamness int64 `json:"scamness,omitempty"` + + // SerpDemotion: serp demotion: applied in Qstar. + SerpDemotion int64 `json:"serpDemotion,omitempty"` + + // SiteAuthority: site_authority: converted from + // quality_nsr.SiteAuthority, applied in Qstar. + SiteAuthority int64 `json:"siteAuthority,omitempty"` + + // TopicEmbeddingsVersionedData: Versioned TopicEmbeddings data to be + // populated later into superroot / used directly in scorers. + TopicEmbeddingsVersionedData []*QualityAuthorityTopicEmbeddingsVersionedItem `json:"topicEmbeddingsVersionedData,omitempty"` + + // UnauthoritativeScore: Unauthoritative score. Used as one of the web + // page quality qstar signals. + UnauthoritativeScore int64 `json:"unauthoritativeScore,omitempty"` + + // VlqNsr: NSR for low-quality videos, converted from + // quality_nsr.NsrData.vlq_nsr. + VlqNsr int64 `json:"vlqNsr,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AnchorMismatchDemotion") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AnchorMismatchDemotion") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *CompressedQualitySignals) MarshalJSON() ([]byte, error) { + type NoMethod CompressedQualitySignals + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *CompressedQualitySignals) UnmarshalJSON(data []byte) error { + type NoMethod CompressedQualitySignals + var s1 struct { + ExperimentalQstarDeltaSignal gensupport.JSONFloat64 `json:"experimentalQstarDeltaSignal"` + ExperimentalQstarSignal gensupport.JSONFloat64 `json:"experimentalQstarSignal"` + ExperimentalQstarSiteSignal gensupport.JSONFloat64 `json:"experimentalQstarSiteSignal"` + NsrOverrideBid gensupport.JSONFloat64 `json:"nsrOverrideBid"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.ExperimentalQstarDeltaSignal = float64(s1.ExperimentalQstarDeltaSignal) + s.ExperimentalQstarSignal = float64(s1.ExperimentalQstarSignal) + s.ExperimentalQstarSiteSignal = float64(s1.ExperimentalQstarSiteSignal) + s.NsrOverrideBid = float64(s1.NsrOverrideBid) + return nil +} + +// ContentAttributions: 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 +// https://qwiki.corp.google.com/display/Q/ContentTrackingContentAttribution. +type ContentAttributions struct { + // FreshdocsOutgoing: Selected outgoing attributions extracted on + // FreshDocs. + FreshdocsOutgoing []*ContentAttributionsOutgoingAttribution `json:"freshdocsOutgoing,omitempty"` + + // OfflineOutgoing: Selected outgoing attributions extracted via offline + // MR jobs. + OfflineOutgoing []*ContentAttributionsOutgoingAttribution `json:"offlineOutgoing,omitempty"` + + // OnlineOutgoing: Selected outgoing attributions extracted online on + // Alexandria. + OnlineOutgoing []*ContentAttributionsOutgoingAttribution `json:"onlineOutgoing,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FreshdocsOutgoing") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FreshdocsOutgoing") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ContentAttributions) MarshalJSON() ([]byte, error) { + type NoMethod ContentAttributions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ContentAttributionsOutgoingAttribution: This is a copy of +// quality_contra::SelectedAttribution::SelectedInfo. The url is +// converted to docid and other fields are copied directly. +type ContentAttributionsOutgoingAttribution struct { + // Possible values: + // "PAGE_LINK_TO" - Direct link to page in question. + // "SITE_LINK_TO" - Link to the site of the page in question: Example: + // ">" link on + // headlines and search results + ClusterSize int64 `json:"ClusterSize,omitempty"` + + // ClusterTimeStamp: When was this clustered (needed for keeping last X + // iterations around and discarding earlier ones) + ClusterTimeStamp int64 `json:"ClusterTimeStamp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClusterId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClusterId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *CrowdingPerDocDataNewsCluster) MarshalJSON() ([]byte, error) { + type NoMethod CrowdingPerDocDataNewsCluster + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type DeepCropIndexing struct { + // CropBytes: Compact representation for indexing, see + // creatism::CropBitmap for details on the packing format. + CropBytes string `json:"cropBytes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CropBytes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CropBytes") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DeepCropIndexing) MarshalJSON() ([]byte, error) { + type NoMethod DeepCropIndexing + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type DeepCropPixels struct { + // X0: Pixels version of the DeepCropIndexing bytes, this corresponds to + // the crop box for a given image (based input image size and desired + // aspect ratio). + X0 int64 `json:"x0,omitempty"` + + X1 int64 `json:"x1,omitempty"` + + Y0 int64 `json:"y0,omitempty"` + + Y1 int64 `json:"y1,omitempty"` + + // ForceSendFields is a list of field names (e.g. "X0") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "X0") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DeepCropPixels) MarshalJSON() ([]byte, error) { + type NoMethod DeepCropPixels + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DocProperties: 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(). +type DocProperties struct { + // AvgTermWeight: The average weighted font size of a term in the doc + // body + AvgTermWeight int64 `json:"avgTermWeight,omitempty"` + + // BadTitle: Missing or meaningless title + BadTitle bool `json:"badTitle,omitempty"` + + Badtitleinfo []*DocPropertiesBadTitleInfo `json:"badtitleinfo,omitempty"` + + // Languages: A Language enum value. See: go/language-enum + Languages []int64 `json:"languages,omitempty"` + + // Leadingtext: Leading text information generated by + // google3/quality/snippets/leadingtext/leadingtext-detector.cc + Leadingtext *SnippetsLeadingtextLeadingTextInfo `json:"leadingtext,omitempty"` + + NumPunctuations int64 `json:"numPunctuations,omitempty"` + + NumTags int64 `json:"numTags,omitempty"` + + // NumTokens: The number of tokens, tags and punctuations in the + // tokenized contents. This is an approximation of the number of tokens, + // tags and punctuations we end up with in mustang, but is inexact since + // we drop some tokens in mustang and also truncate docs at a max cap. + NumTokens int64 `json:"numTokens,omitempty"` + + // ProseRestrict: The restricts for CSE structured search. + ProseRestrict []string `json:"proseRestrict,omitempty"` + + Restricts []string `json:"restricts,omitempty"` + + // Timestamp: The time CDocProperties::StartDocument() is called, + // encoded as seconds past the epoch (Jan 1, 1970). This value is always + // refreshed and not reused. + Timestamp int64 `json:"timestamp,omitempty,string"` + + // Title: Extracted from the title tag of the content. This is typically + // extracted by TitleMetaCollector defined at + // google3/segindexer/title-meta-collector.h. Please see its + // documentation for the format and other caveats. + Title string `json:"title,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AvgTermWeight") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AvgTermWeight") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DocProperties) MarshalJSON() ([]byte, error) { + type NoMethod DocProperties + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DocPropertiesBadTitleInfo: Bad title information. +type DocPropertiesBadTitleInfo struct { + Score float64 `json:"score,omitempty"` + + // Possible values: + // "NOT_BAD" + // "MISSING_OR_MEANINGLESS" - An empty string, or a bad title such as + // "Untitled". See quality_titles::bad_titles::BadTitleDetector for more + // details. + // "BOILERPLATE" - Most of the title is marked as boilerplate regions. + // See boilerplate::BoilerplateTitleScorer for more details. + // "FOREIGN" - The language of a title is different from the language + // of the document. See + // quality_snippets::foreigntitle::ForeignTitleScorer for more details. + // "UNREADABLE" - Title has a low readability score. See + // quality_titles::ReadabilityScorer for more details. + // "NAKED" - Title needs more context (i.e. a site name), e.g. + // "Photos", "Contact Us". See + // quality_titles::bad_titles::BadTitleDetector for more details. + // "NO_QUERY_SUPPORT" - Title contains no navboost query. See + // quality_titles::AlternativeTitlesGenerator for more details. + // "NO_SITE_INFO" - Title has no site title information. See + // quality_titles::AlternativeTitlesGenerator for more details. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Score") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Score") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DocPropertiesBadTitleInfo) MarshalJSON() ([]byte, error) { + type NoMethod DocPropertiesBadTitleInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *DocPropertiesBadTitleInfo) UnmarshalJSON(data []byte) error { + type NoMethod DocPropertiesBadTitleInfo + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + return nil +} + +type DrishtiDenseFeatureData struct { + // Extra: If extra is present it must be of the same length as value. + Extra []*DrishtiFeatureExtra `json:"extra,omitempty"` + + GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"` + + // Value: Dense data. + Value []float64 `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Extra") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Extra") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiDenseFeatureData) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiDenseFeatureData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type DrishtiFeatureExtra struct { +} + +type DrishtiFeatureSetData struct { + // Extra: Extra information for this particular FeatureSetData (example + // timestamp of this frame in the video). (Almost never used). + Extra []*DrishtiFeatureExtra `json:"extra,omitempty"` + + // Feature: 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. + Feature []*DrishtiFeatureSetDataFeatureSetElement `json:"feature,omitempty"` + + // Label: Labels for this particular FeatureSetData. (Almost never + // used). Only interesting when you have (for example) frame level + // labels. + Label []*DrishtiLabelSetElement `json:"label,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Extra") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Extra") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiFeatureSetData) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiFeatureSetData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DrishtiFeatureSetDataFeatureSetElement: A FeatureSetElement stores +// the features coming from a single group. +type DrishtiFeatureSetDataFeatureSetElement struct { + Dense *DrishtiDenseFeatureData `json:"dense,omitempty"` + + Indexed *DrishtiIndexedFeatureData `json:"indexed,omitempty"` + + // Name: A name for the feature group: example "AUDIO", "VIDEO", "OCR", + // etc. + Name string `json:"name,omitempty"` + + Quantized *DrishtiQuantizedDenseFeatureData `json:"quantized,omitempty"` + + Sparse *DrishtiSparseFeatureData `json:"sparse,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dense") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dense") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiFeatureSetDataFeatureSetElement) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiFeatureSetDataFeatureSetElement + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DrishtiFeatureSetDataSequence: This represents a sequence (ordered) +// of FeatureSetData elements. +type DrishtiFeatureSetDataSequence struct { + // Element: FeatureSetData contains the features. In most scenarios, you + // only have one element. However, multiple elements are appropriate in + // case of videos where each element may correspond to a frame in the + // video. + Element []*DrishtiFeatureSetData `json:"element,omitempty"` + + // Extra: Some extra information about this FeatureSetDataSequence. + // (Almost never used). + Extra []*DrishtiFeatureExtra `json:"extra,omitempty"` + + // Label: Global (video-level) labels. In most cases, you only have one + // LabelSetElement. All the labels will be stored in this single + // LabelSetElement. Scenarios where you may have multiple + // LabelSetElement(s) is (for example) when you want to differentiate + // the labels into various sub-groups - eg, central vs relevant, kg-ids + // vs queries, etc. + Label []*DrishtiLabelSetElement `json:"label,omitempty"` + + // Timestamp: If set, must be same length as element. Each entry is the + // timestamp in microseconds where the FeatureSetData element was + // extracted. + Timestamp googleapi.Int64s `json:"timestamp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Element") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Element") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiFeatureSetDataSequence) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiFeatureSetDataSequence + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type DrishtiIndexedFeatureData struct { + // Extra: If extra is present it must be of the same length as index and + // value. + Extra []*DrishtiFeatureExtra `json:"extra,omitempty"` + + GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"` + + // Index: Indexed data. index and value must be of the same length. + Index googleapi.Uint64s `json:"index,omitempty"` + + Value []float64 `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Extra") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Extra") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiIndexedFeatureData) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiIndexedFeatureData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type DrishtiLabelSetData struct { + Extra []*DrishtiFeatureExtra `json:"extra,omitempty"` + + GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"` + + TargetClass googleapi.Uint64s `json:"targetClass,omitempty"` + + TargetClassName []string `json:"targetClassName,omitempty"` + + TargetValue []float64 `json:"targetValue,omitempty"` + + TargetWeight []float64 `json:"targetWeight,omitempty"` + + // Weight: Weight assigned to this set of labels. + Weight float64 `json:"weight,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Extra") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Extra") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiLabelSetData) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiLabelSetData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *DrishtiLabelSetData) UnmarshalJSON(data []byte) error { + type NoMethod DrishtiLabelSetData + var s1 struct { + Weight gensupport.JSONFloat64 `json:"weight"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Weight = float64(s1.Weight) + return nil +} + +type DrishtiLabelSetElement struct { + Label *DrishtiLabelSetData `json:"label,omitempty"` + + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Label") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Label") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiLabelSetElement) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiLabelSetElement + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type DrishtiQuantizedDenseFeatureData struct { + // Extra: If extra is present it must be of the same length as value. + Extra []*DrishtiFeatureExtra `json:"extra,omitempty"` + + GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"` + + // Value: Quantized Dense data. + Value []string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Extra") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Extra") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiQuantizedDenseFeatureData) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiQuantizedDenseFeatureData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type DrishtiSparseFeatureData struct { + // Extra: If extra is present it must be of the same length as label and + // value. + Extra []*DrishtiFeatureExtra `json:"extra,omitempty"` + + GeneralExtra *DrishtiFeatureExtra `json:"generalExtra,omitempty"` + + // Label: Indexed data. label and value must be of the same length. + Label []string `json:"label,omitempty"` + + Value []float64 `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Extra") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Extra") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiSparseFeatureData) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiSparseFeatureData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DrishtiVesperEncodedThumbnail: The attributes of encoded thumbnail +// images. Next id: 7. +type DrishtiVesperEncodedThumbnail struct { + // EncodingQuality: JPEG/WEBP quality factor in range [0,100]. + EncodingQuality int64 `json:"encodingQuality,omitempty"` + + // EncodingType: Image encoding type. + // + // Possible values: + // "UNKNOWN" + // "JPEG" - JPEG encoded. + // "WEBP" - WEBP encoded. + // "PNG" - PNG encoded. + EncodingType string `json:"encodingType,omitempty"` + + Height int64 `json:"height,omitempty"` + + // ImageBytes: Encoded thumbnail bytes. Prefer this over `image_string` + // as we are not supposed to store image bytes in a proto string field. + ImageBytes string `json:"imageBytes,omitempty"` + + // ImageString: Please migrate to `image_bytes`. + ImageString string `json:"imageString,omitempty"` + + // Width: Thumbnail resolution. + Width int64 `json:"width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EncodingQuality") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EncodingQuality") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperEncodedThumbnail) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperEncodedThumbnail + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DrishtiVesperMovingThumbnail: LINT: LEGACY_NAMES MovingThumbnail is +// defined as a short video clip that represents the whole video +// content. Next id: 17. +type DrishtiVesperMovingThumbnail struct { + // BeginTimestampMs: The begin timestamp in milliseconds. + BeginTimestampMs int64 `json:"beginTimestampMs,omitempty"` + + // DurationMs: The duration of the moving thumbnail in milliseconds. + // Note that the duration may not be the difference between + // begin_timestamp_ms and end_timestamp_ms, esp when the moving + // thumbnail covers multiple clips from the video. + DurationMs int64 `json:"durationMs,omitempty"` + + EncodedGifAnimation string `json:"encodedGifAnimation,omitempty"` + + // EncodedVideoString: The encoded video string. + EncodedVideoString string `json:"encodedVideoString,omitempty"` + + // EncodedWebpAnimation: The encoded WebP animation. + EncodedWebpAnimation string `json:"encodedWebpAnimation,omitempty"` + + // EndTimestampMs: The end timestamp in milliseconds. + EndTimestampMs int64 `json:"endTimestampMs,omitempty"` + + // Height: Pixel height of the moving thumbnail. + Height int64 `json:"height,omitempty"` + + // Id: MovingThumbnail id (e.g., the video id). + Id string `json:"id,omitempty"` + + // MovingThumbnailerVersion: If set, this is the algorithm version used + // to generate this moving thumbnail. + // + // Possible values: + // "V0" - Version 0 and 1 - Initial version with thumbnail quality, + // iconic face and motion scores. + // "V1" + // "DEPRECATED_V2" - Version 2 - Version 1 with default static + // thumbnail matching, title matching, face matching and face clustering + // (Deprecated). + // "DEPRECATED_V3" - Version 3 - Version 2 with high resolution + // transcodes preferred (Deprecated). + // "V4" - Version 4 - Version 1 with default static thumbnail + // matching, title matching, and high resolution transcodes preferred. + // "V5" - Version 5 - Version 1 with title matching and high res + // transcodes preferred. + // "V6" - Version 6 - Version 1 with default static thumbnail + // matching, title matching, retention data and high resolution + // transcodes preferred. + // "SHORT_PREVIEW_V0" - Version used for YT Shorts. + // "LIVE_MOVING_THUMBNAILER" - Live moving thumbnailer (no scorers + // involved). + // "MANUAL" - Manually generated. + MovingThumbnailerVersion string `json:"movingThumbnailerVersion,omitempty"` + + // Name: MovingThumbnail name. + // + // Possible values: + // "UNKNOWN" + // "MQDEFAULT" - 320x180, 10s + // "MQDEFAULT_6S" - 320x180, 6s + // "LQDEFAULT_6S" - 196x110, 6s + // "MQ220P_5S" - 392x220, 5s + // "MQDEFAULT_6S_HIGHLIGHT" - 320x180, 6s, highlight + // "MQDEFAULT_6S_PRE_HIGHLIGHT" - 320x180, 6s, pre-highlight + // "MQDEFAULT_6S_THIRD_HIGHLIGHT" - (3s before highlight) 320x180, 6s, + // 3rd best highlight + // "MQDEFAULT_6S_ZOOM_IN" - 320x180, 6s, central zoom-in version + // "SD360P_6S_ZOOM_IN" - 640x360, 6s, central zoom-in version + // "MQDEFAULT_3S" - 320x180, 3s + // "MQDEFAULT_6S_480x270" - 480x270, 6s + // "MQDEFAULT_1S" - Do not use this (deprecated) + // "MQ_SHORTS_PREVIEW" - 360x360, original aspect ratio + // "HQ_SHORTS_PREVIEW" - 480x480, original aspect ratio + Name string `json:"name,omitempty"` + + // Score: The score of the moving thumbnail. + Score float64 `json:"score,omitempty"` + + ScoreComponents *DrishtiVesperMovingThumbnailScoreComponents `json:"scoreComponents,omitempty"` + + // Thumbnails: A set of single frame thumbnails in the MovingThumbnail. + Thumbnails []*DrishtiVesperThumbnail `json:"thumbnails,omitempty"` + + // Type: MovingThumbnail type. + // + // Possible values: + // "TYPE_UNKNOWN" + // "AN_GIF" - Animated gif. + // "AN_WEBP" - Animated webp. + // "AN_MP4" - Animated mp4. + // "AN_WEBM" - Animated webm. + Type string `json:"type,omitempty"` + + // WebpQualityLevel: The actual quality of the Webp animation. Note this + // value may not be equal to the quality value requested in the + // animation creator's options. This is because other requirements, such + // as the max file size, may force the creator to lower the actual + // quality value. + WebpQualityLevel float64 `json:"webpQualityLevel,omitempty"` + + // Width: Pixel width of the moving thumbnail. + Width int64 `json:"width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BeginTimestampMs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BeginTimestampMs") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperMovingThumbnail) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperMovingThumbnail + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *DrishtiVesperMovingThumbnail) UnmarshalJSON(data []byte) error { + type NoMethod DrishtiVesperMovingThumbnail + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + WebpQualityLevel gensupport.JSONFloat64 `json:"webpQualityLevel"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + s.WebpQualityLevel = float64(s1.WebpQualityLevel) + return nil +} + +// DrishtiVesperMovingThumbnailScoreComponents: Sum of individual score +// components within a moving thumbnail. Used as input for weight +// fitting. +type DrishtiVesperMovingThumbnailScoreComponents struct { + AudienceRewindRatioScore float64 `json:"audienceRewindRatioScore,omitempty"` + + IconicFaceScore float64 `json:"iconicFaceScore,omitempty"` + + MatchingScore float64 `json:"matchingScore,omitempty"` + + MotionScore float64 `json:"motionScore,omitempty"` + + TitleMatchingScore float64 `json:"titleMatchingScore,omitempty"` + + VideoThumbQualityScore float64 `json:"videoThumbQualityScore,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AudienceRewindRatioScore") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AudienceRewindRatioScore") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperMovingThumbnailScoreComponents) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperMovingThumbnailScoreComponents + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *DrishtiVesperMovingThumbnailScoreComponents) UnmarshalJSON(data []byte) error { + type NoMethod DrishtiVesperMovingThumbnailScoreComponents + var s1 struct { + AudienceRewindRatioScore gensupport.JSONFloat64 `json:"audienceRewindRatioScore"` + IconicFaceScore gensupport.JSONFloat64 `json:"iconicFaceScore"` + MatchingScore gensupport.JSONFloat64 `json:"matchingScore"` + MotionScore gensupport.JSONFloat64 `json:"motionScore"` + TitleMatchingScore gensupport.JSONFloat64 `json:"titleMatchingScore"` + VideoThumbQualityScore gensupport.JSONFloat64 `json:"videoThumbQualityScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AudienceRewindRatioScore = float64(s1.AudienceRewindRatioScore) + s.IconicFaceScore = float64(s1.IconicFaceScore) + s.MatchingScore = float64(s1.MatchingScore) + s.MotionScore = float64(s1.MotionScore) + s.TitleMatchingScore = float64(s1.TitleMatchingScore) + s.VideoThumbQualityScore = float64(s1.VideoThumbQualityScore) + return nil +} + +// DrishtiVesperThumbnail: The attributes of a video thumbnail. +type DrishtiVesperThumbnail struct { + // DenseFeatures: Thumbnail dense features + DenseFeatures []float64 `json:"denseFeatures,omitempty"` + + // EncodedImageString: Thumbnail image as an encoded image. Deprecated, + // use encoded_thumbnails instead. + EncodedImageString string `json:"encodedImageString,omitempty"` + + // EncodedImageStringSmall: Thumbnail image as an encoded image with + // smaller resolution. Deprecated, use encoded_thumbnails instead. + EncodedImageStringSmall string `json:"encodedImageStringSmall,omitempty"` + + // EncodedThumbnails: Encoded thumbnail images. + EncodedThumbnails []*DrishtiVesperEncodedThumbnail `json:"encodedThumbnails,omitempty"` + + // Id: Thumbnail id. + Id string `json:"id,omitempty"` + + // OcrText: Text in video thumbnails that was detected by OCR. + OcrText string `json:"ocrText,omitempty"` + + // QualityScores: Thumbnail quality scores. + QualityScores []*DrishtiVesperThumbnailQualityScore `json:"qualityScores,omitempty"` + + // ShouldUpdateDefaultThumbnail: If true, this thumbnail should update + // default thumbnail. + ShouldUpdateDefaultThumbnail bool `json:"shouldUpdateDefaultThumbnail,omitempty"` + + // ThumbnailerModelVersion: Thumbnailer Version. + // + // Possible values: + // "VERSION_UNKNOWN" + // "VERSION_FIRST" - Use the first frame as thumbnail. + // "VERSION_RANDOM" - Randomly choose a frame as thumbnail. + // "VERSION_4" - Thumbnailer version 4. + // "VERSION_5" - Thumbnailer version 5. + // "VERSION_6" - Thumbnailer version 6 for violative thumbnail + // regeneration. Design: go/reduce-violative-thumb + // "VERSION_7" - Thumbnailer version 7. + // "VERSION_8" - Thumbnailer version 8 for violative thumbnail + // regeneration. Design: go/reduce-violative-thumb + // "VERSION_SHORTS_4" - Thumbnailer version 4 for shorts videos. + // "VERSION_SHORTS_5" - Thumbnailer version 5 for shorts videos. + // "VERSION_SHORTS_6" - Thumbnailer version 6 for shorts videos. + // "VERSION_STORY_4" - Thumbnailer version 4 for stories. + // "VERSION_STORY_5" - Thumbnailer version 5 for stories. + // "VERSION_MOVING_4" - Moving thumbnailer version 4. + // "VERSION_MOVING_5" - Moving thumbnailer version 5. + // "VERSION_MOVING_6" - Moving thumbnailer version 6. + // "VERSION_MOVING_SHORTS_0" - Moving thumbnailer version 0 for + // shorts. + // "VERSION_MOVING_LIVE_0" - Moving thumbnailer version 0 for live. + // "VERSION_MOVING_MANUAL_0" - Moving thumbnail generated manually. + // "VERSION_LITE_1" - Lite Thumbnailer (previously known as + // FirstFrameThumbnailer) + // "VERSION_CUSTOM" - Custom image (not generated). Likely client + // provided. + ThumbnailerModelVersion string `json:"thumbnailerModelVersion,omitempty"` + + // TimestampMs: Thumbnail timestamp in milliseconds. + TimestampMs int64 `json:"timestampMs,omitempty"` + + // Type: Thumbnail type. + // + // Possible values: + // "UNKNOWN" + // "MAIN_THUMB_CUSTOM" - Customized main thumbnail uploaded from user. + // "MAIN_THUMB_NON_CUSTOM" - Non-customized main thumbnail. + // "SHOT_THUMB" - Shot thumbnail. + // "NUMBERED_THUMB" - The numbered thumbnail, e.g. 1.jpg, 2.jpg, + // 3.jpg. + // "KEY_FRAME" - The iframe extracted from the media decoder. + // "FRAME" - The regular video frame. + // "AUTO" - This type indicates that the thumbnail is to use for + // thumbnail A/B test. In this case the id field will be used to + // indicate the control and experimental thumbnail. + Type string `json:"type,omitempty"` + + UserReportedThumbnail *DrishtiVesperUserReportUserReportedThumbnail `json:"userReportedThumbnail,omitempty"` + + // UserReportedThumbnails: All user reported thumbnails of interest. + UserReportedThumbnails []*DrishtiVesperUserReportUserReportedThumbnail `json:"userReportedThumbnails,omitempty"` + + // Version: Thumbnail version, i.e., the unix time in seconds when the + // thumbnail was created. + Version int64 `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DenseFeatures") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DenseFeatures") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperThumbnail) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperThumbnail + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type DrishtiVesperThumbnailQualityScore struct { + Score float64 `json:"score,omitempty"` + + // Possible values: + // "UNKNOWN" + // "PHOTO_QUALITY" + // "PAMIR_IMAGE_QUALITY" + // "VIDEO_THUMB_QUALITY" + // "SALIENCY" + // "COMPLEXITY" + // "SHARPNESS" + // "CLOSE_UP" + // "BEEHIVE_QUALITY" + // "ICONIC_FACE" + // "DUMMY" + // "COLORFULNESS" + // "MOTION" + // "RETENTION_STATS" + // "FACIAL_EXPRESSION" + // "MATCHING" + // "LUCKYSHOT_SHARPNESS" + // "SINGLE_FACE_MODULE" + // "TITLE_MATCHING" + // "FACE_CLUSTERING" + // "FACE_MATCHING" + // "RACY_SCORE" - The higher the score, the racier the thumbnail. + // "NON_RACY_SCORE" - The higher the score, less racier of the + // thumbnail. + // "SALIENCY_COVERAGE" + // "AUDIENCE_WATCH_DATA" + // "AUDIENCE_REWATCH_DATA" + // "AUDIENCE_REWIND_RATIO" + // "AUDIENCE_DROPOFF_RATIO" + // "HIGHLIGHT_SCORE" + // "JOY_FACE" + // "EYE_OPEN" + // "FACE_RATIO" + // "OCR_RACY_SCORE" + // "SHOT_BOUNDARY" + // "NIMA" - go/nima + // "FOREGROUND_MOTION_SALIENCY" + // "PAGE_QUALITY" + // "GLOBAL_MOTION" + // "CHAPTER_TITLE_MATCHING" + // "DBSCAN_FRAME_CHAPTER_SIMILARITY" + // "EYES_NOT_VISIBLY_CLOSED" + // "MERGED" - The score merged from the above source types. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Score") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Score") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperThumbnailQualityScore) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperThumbnailQualityScore + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *DrishtiVesperThumbnailQualityScore) UnmarshalJSON(data []byte) error { + type NoMethod DrishtiVesperThumbnailQualityScore + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + return nil +} + +// DrishtiVesperUserReportHumanLabel: Proto holding values for details +// about human labels. +type DrishtiVesperUserReportHumanLabel struct { + // Possible values: + // "UNKNOWN" + // "SAFE" + // "BORDERLINE" + // "SEXUAL" + RacyLevel string `json:"racyLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RacyLevel") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RacyLevel") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperUserReportHumanLabel) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperUserReportHumanLabel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DrishtiVesperUserReportModelScore: Proto holding values for details +// about score and the source model. +type DrishtiVesperUserReportModelScore struct { + ModelName string `json:"modelName,omitempty"` + + Score float64 `json:"score,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ModelName") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ModelName") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperUserReportModelScore) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperUserReportModelScore + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *DrishtiVesperUserReportModelScore) UnmarshalJSON(data []byte) error { + type NoMethod DrishtiVesperUserReportModelScore + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + return nil +} + +// DrishtiVesperUserReportUserReportedThumbnail: Proto holding values +// for user reported thumbnails. Next id: 12 +type DrishtiVesperUserReportUserReportedThumbnail struct { + DenseFeatures []float64 `json:"denseFeatures,omitempty"` + + // Duration: Number of days in which volume is calculated. + Duration int64 `json:"duration,omitempty"` + + HumanLabel *DrishtiVesperUserReportHumanLabel `json:"humanLabel,omitempty"` + + // Impressions: Daily aggregared impressions for the reported video. + Impressions int64 `json:"impressions,omitempty"` + + // NeedHumanLabel: Whether the thumbnail needs a human label. + NeedHumanLabel bool `json:"needHumanLabel,omitempty"` + + RawHumanLabels []*DrishtiVesperUserReportHumanLabel `json:"rawHumanLabels,omitempty"` + + ReportScore *DrishtiVesperUserReportModelScore `json:"reportScore,omitempty"` + + // Possible values: + // "UNKNOWN" + // "RACY" + ReportType string `json:"reportType,omitempty"` + + Score *DrishtiVesperUserReportModelScore `json:"score,omitempty"` + + // Possible values: + // "UNKNOWN" + // "TRAIN" + // "EVAL" + UseCase string `json:"useCase,omitempty"` + + // Volume: Number of reports. + Volume int64 `json:"volume,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DenseFeatures") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DenseFeatures") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperUserReportUserReportedThumbnail) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperUserReportUserReportedThumbnail + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// DrishtiVesperVideoThumbnail: Video level container for thumbnail with +// its attributes, e.g., timestamp, id, quality scores, annotations, or +// features. +type DrishtiVesperVideoThumbnail struct { + // Id: Video id. + Id string `json:"id,omitempty"` + + MovingThumbnails []*DrishtiVesperMovingThumbnail `json:"movingThumbnails,omitempty"` + + Thumbnails []*DrishtiVesperThumbnail `json:"thumbnails,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *DrishtiVesperVideoThumbnail) MarshalJSON() ([]byte, error) { + type NoMethod DrishtiVesperVideoThumbnail + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// EmbedsDeepLinkData: 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. +type EmbedsDeepLinkData struct { + // AppId: Application ID (or project ID) from Google API Console. + AppId int64 `json:"appId,omitempty,string"` + + // Client: The data for a Google API Console client is entered by a + // developer during client registration and is stored in + // PackagingService. + Client []*EmbedsPackagingServiceClient `json:"client,omitempty"` + + // DeepLinkId: The ID for non-URL content. Embeds may either have no + // analogous web presence or prefer a native mobile experience if + // supported. In the case of no web presence, instead of setting the + // "url" field of an embed, such developers will set this field and + // other content fields, e.g. thumbnail, title, description. If set, + // this field is used to construct the deep-link URI. Note that the + // native experience is preferred over the web link and the web link is + // used as a fallback. + DeepLinkId string `json:"deepLinkId,omitempty"` + + // Url: Analogous web presence. Used as desktop fallback or when no + // native link data is present. + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AppId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AppId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *EmbedsDeepLinkData) MarshalJSON() ([]byte, error) { + type NoMethod EmbedsDeepLinkData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// EmbedsEmbedClientItem: 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. +type EmbedsEmbedClientItem struct { + // CanonicalId: The canonical ID of the embed. If absent, the canonical + // ID is equal to the ID; if present, then the canonical ID represents + // an "equivalence class" of embeds which really refer to the same + // object. (For example, the URLs http://www.foo.com/ and + // http://foo.com/ refer to the same object) This field may be updated + // periodically by background processes. + CanonicalId string `json:"canonicalId,omitempty"` + + // DeepLinkData: Deep-linking data to take the user to the right place + // in a mobile app. This is only used for preview and attribution. Links + // that are specific to a given embed type should live on that specific + // embed's proto by using Link. See + // http://goto.google.com/mariana-design. + DeepLinkData *EmbedsDeepLinkData `json:"deepLinkData,omitempty"` + + // Id: The ID of the embed. This corresponds to the schema.org ID, as + // represented in the ItemScope.id field. + Id string `json:"id,omitempty"` + + // Provenance: The provenance of the embed, populated when the embed + // originated from a web fetch. The provenance captures information + // about the web page the embed had originated, like the URL that was + // retrieved and the retrieved URL's canonical form. This is useful in + // the case where the URL shared by the URL redirects (e.g., in the case + // of a shortened URL). + Provenance *EmbedsProvenance `json:"provenance,omitempty"` + + // RenderId: The ID used to identify the embed during rendering. This + // field will match ID, if set, otherwise it will be the ID of the + // parent activity. This field is only populated on the server for + // client use and is not persisted to storage. + RenderId string `json:"renderId,omitempty"` + + // Signature: Signature of the embed, used for verification. + Signature string `json:"signature,omitempty"` + + // TransientData: Transient generic data that will not be saved on the + // server. + TransientData *EmbedsTransientData `json:"transientData,omitempty"` + + // Type: The first value in `type` determines which extension field will + // be set. When creating an EmbedClientItem, you only need to set the + // first (primary) type in this field. When the server receives the + // item, it will populate the full type list using the parent + // annotations in the ItemType enum. + // + // Possible values: + // "UNKNOWN" - Largely deprecated, effectively an error condition and + // should not be in storage. + // "ACTION_V2" - Embeds V2 types + // "ADD_ACTION_V2" + // "AGGREGATE_RATING_V2" + // "ARTICLE_V2" + // "ASSESS_ACTION_V2" + // "AUDIO_OBJECT_V2" + // "BASIC_INTERACTION_V2" + // "BLOG_POSTING_V2" + // "BLOG_V2" + // "BOOK_V2" + // "BUY_ACTION_V2" + // "CHECK_IN_ACTION_V2" - The action of checking in, as opposed to a + // "check-in". + // "CHECKIN_V2" + // "COLLEXION_V2" + // "COMMENT_ACTION_V2" - The act of commenting, which might result in + // a comment. + // "COMMENT_V2" + // "COMMUNICATE_ACTION_V2" + // "CONSUME_ACTION_V2" + // "CREATE_ACTION_V2" + // "CREATIVE_WORK_V2" + // "DISCOVER_ACTION_V2" + // "DOCUMENT_OBJECT_V2" + // "DRAWING_OBJECT_V2" + // "DRIVE_OBJECT_V2" + // "EMOTISHARE_V2" + // "ENTRY_POINT_V2" + // "EVENT_TIME_V2" + // "EVENT_V2" + // "FILE_OBJECT_V2" + // "FIND_ACTION_V2" + // "FINANCIAL_QUOTE_V2" + // "FORM_OBJECT_V2" + // "GEO_COORDINATES_V2" + // "GOOGLE_OFFER_V2" + // "HANGOUT_CHAT_MESSAGE" + // "HANGOUT_QUOTE" + // "HANGOUT_V2" + // "HOA_PLUS_EVENT_V2" + // "IMAGE_OBJECT_V2" + // "INTERACT_ACTION_V2" + // "INTERACTION_V2" + // "LISTEN_ACTION_V2" + // "LOCAL_BUSINESS_V2" + // "LOCAL_PLUS_PHOTO_ALBUM_V2" + // "MAGAZINE_V2" + // "MEDIA_OBJECT_V2" + // "MOBILE_APPLICATION_V2" + // "MOVIE_V2" + // "MUSIC_ALBUM_V2" + // "MUSIC_GROUP_V2" + // "MUSIC_PLAYLIST_V2" + // "MUSIC_RECORDING_V2" + // "NEWS_ARTICLE_V2" + // "OFFER_V2" + // "ORGANIZATION_V2" + // "ORGANIZE_ACTION_V2" + // "PERSON_V2" + // "PLACE_REVIEW_V2" + // "PLACE_V2" + // "PLAN_ACTION_V2" + // "PLAY_MUSIC_ALBUM_V2" + // "PLAY_MUSIC_TRACK_V2" + // "PLAY_OBJECT_V2" + // "PLUS_AUDIO_V2" + // "PLUS_EVENT_V2" + // "PLUS_MEDIA_COLLECTION_V2" + // "PLUS_MEDIA_OBJECT_V2" + // "PLUS_PAGE_V2" + // "PLUS_PHOTOS_ADDED_TO_COLLECTION_V2" + // "PLUS_PHOTO_ALBUM_V2" + // "PLUS_PHOTO_COLLECTION_V2" + // "PLUS_PHOTO_V2" + // "PLUS_POST_V2" + // "PLUS_RESHARE_V2" + // "PLUS_SOFTWARE_APPLICATION_V2" + // "POLL_OPTION_V2" + // "POLL_V2" + // "POSTAL_ADDRESS_V2" + // "PRESENTATION_OBJECT_V2" + // "PRODUCT_REVIEW_V2" + // "RATING_V2" + // "REACT_ACTION_V2" + // "RESERVATION_V2" + // "RESERVE_ACTION_V2" + // "REVIEW_V2" + // "REVIEW_ACTION_V2" + // "SOFTWARE_APPLICATION_V2" + // "SPREADSHEET_OBJECT_V2" + // "SQUARE_INVITE_V2" + // "SQUARE_V2" + // "STICKER_V2" + // "STORY_V2" - Boswell story (see goto/boswell) + // "THING_V2" + // "TRADE_ACTION_V2" + // "DEPRECATED_TOUR_OBJECT_V2" + // "TV_EPISODE_V2" + // "TV_SERIES_V2" + // "UPDATE_ACTION_V2" + // "VIEW_ACTION_V2" + // "VIDEO_OBJECT_V2" + // "VIDEO_GALLERY_V2" + // "WANT_ACTION_V2" + // "WEB_PAGE_V2" + // "WRITE_ACTION_V2" + // "YOUTUBE_CHANNEL_V2" + // "GOOGLE_USER_PHOTO_V2" - A photo stored in photo service owned by a + // Google account user. This is distinct from PlusPhoto as it isn't tied + // to GPlus, but is instead intended to be a more general photo tied to + // a google user. + // "GOOGLE_USER_PHOTO_ALBUM" - A photo album in photo service owned by + // a Google account user. This is distinct from PlusPhotoAlbum as it + // isn't tied to GPlus, but is instead intended to be a general photo + // album tied to a google user. + // "GOOGLE_PHOTO_RECIPE" - An embed used to create a single photo in + // photo service. This type is never stored but is used to create a + // GOOGLE_USER_PHOTO_V2 or PLUS_PHOTO_V2 embed. + // "THING" - Embeds V1 types + // "CREATIVE_WORK" + // "EVENT" + // "INTANGIBLE" + // "ORGANIZATION" + // "PERSON" + // "PLACE" + // "PRODUCT" + // "ARTICLE" - CREATIVE_WORK subtypes + // "BLOG_POSTING" + // "NEWS_ARTICLE" + // "SCHOLARLY_ARTICLE" + // "BLOG" + // "BOOK" + // "COMMENT" + // "ITEM_LIST" + // "MAP" + // "MEDIA_OBJECT" + // "AUDIO_OBJECT" + // "IMAGE_OBJECT" + // "MUSIC_VIDEO_OBJECT" + // "VIDEO_OBJECT" + // "MOVIE" + // "MUSIC_PLAYLIST" + // "MUSIC_ALBUM" + // "MUSIC_RECORDING" + // "PAINTING" + // "PHOTOGRAPH" + // "RECIPE" + // "REVIEW" + // "SCULPTURE" + // "SOFTWARE_APPLICATION" + // "MOBILE_APPLICATION" + // "WEB_APPLICATION" + // "TV_EPISODE" + // "TV_SEASON" + // "TV_SERIES" + // "WEB_PAGE" + // "ABOUT_PAGE" + // "CHECKOUT_PAGE" + // "COLLECTION_PAGE" + // "IMAGE_GALLERY" + // "VIDEO_GALLERY" + // "CONTACT_PAGE" + // "ITEM_PAGE" + // "PROFILE_PAGE" + // "SEARCH_RESULTS_PAGE" + // "WEB_PAGE_ELEMENT" + // "SITE_NAVIGATION_ELEMENT" + // "TABLE" + // "WP_AD_BLOCK" + // "WP_FOOTER" + // "WP_HEADER" + // "WP_SIDEBAR" + // "APP_INVITE" + // "EMOTISHARE" + // "BUSINESS_EVENT" - EVENT subtypes + // "CHILDRENS_EVENT" + // "COMEDY_EVENT" + // "DANCE_EVENT" + // "EDUCATION_EVENT" + // "FESTIVAL" + // "FOOD_EVENT" + // "LITERARY_EVENT" + // "MUSIC_EVENT" + // "SALE_EVENT" + // "SOCIAL_EVENT" + // "SPORTS_EVENT" + // "THEATER_EVENT" + // "VISUAL_ARTS_EVENT" + // "RESERVATION" + // "TRAVEL_EVENT" + // "CORPORATION" - ORGANIZATION subtypes + // "EDUCATIONAL_ORGANIZATION" + // "COLLEGE_OR_UNIVERSITY" + // "ELEMENTARY_SCHOOL" + // "HIGH_SCHOOL" + // "MIDDLE_SCHOOL" + // "PRESCHOOL" + // "SCHOOL" + // "GOVERNMENT_ORGANIZATION" + // "LOCAL_BUSINESS" + // "ANIMAL_SHELTER" + // "AUTOMOTIVE_BUSINESS" + // "AUTO_BODY_SHOP" + // "AUTO_DEALER" + // "AUTO_PARTS_STORE" + // "AUTO_RENTAL" + // "AUTO_REPAIR" + // "AUTO_WASH" + // "GAS_STATION" + // "MOTORCYCLE_DEALER" + // "MOTORCYCLE_REPAIR" + // "CHILD_CARE" + // "DRY_CLEANING_OR_LAUNDRY" + // "EMERGENCY_SERVICE" + // "FIRE_STATION" + // "HOSPITAL" + // "POLICE_STATION" + // "EMPLOYMENT_AGENGY" + // "ENTERTAINMENT_BUSINESS" + // "ADULT_ENTERTAINMENT" + // "AMUSEMENT_PARK" + // "ART_GALLERY" + // "CASINO" + // "COMEDY_CLUB" + // "MOVIE_THEATER" + // "NIGHT_CLUB" + // "FINANCIAL_SERVICE" + // "ACCOUNTING_SERVICE" + // "AUTOMATED_TELLER" + // "BANK_OR_CREDIT_UNION" + // "INSURANCE_AGENCY" + // "FOOD_ESTABLISHMENT" + // "BAKERY" + // "BAR_OR_PUB" + // "BREWERY" + // "CAFE_OR_COFFEE_SHOP" + // "FAST_FOOD_RESTAURANT" + // "ICE_CREAM_SHOP" + // "RESTAURANT" + // "WINERY" + // "GOVERNMENT_OFFICE" + // "POST_OFFICE" + // "HEALTH_AND_BEAUTY_BUSINESS" + // "BEAUTY_SALON" + // "DAY_SPA" + // "HAIR_SALON" + // "HEALTH_CLUB" + // "NAIL_SALON" + // "TATTOO_PARLOR" + // "HOME_AND_CONSTRUCTION_BUSINESS" + // "ELECTRICIAN" + // "GENERAL_CONTRACTOR" + // "HVAC_BUSINESS" + // "HOUSE_PAINTER" + // "LOCKSMITH" + // "MOVING_COMPANY" + // "PLUMBER" + // "ROOFING_CONTRACTOR" + // "INTERNET_CAFE" + // "LIBRARY" + // "LODGING_BUSINESS" + // "BED_AND_BREAKFAST" + // "HOSTEL" + // "HOTEL" + // "MOTEL" + // "MEDICAL_ORGANIZATION" + // "DENTIST" + // "MEDICAL_CLINIC" + // "OPTICIAN" + // "PHARMACY" + // "PHYSICIAN" + // "VETERINARY_CARE" + // "PROFESSIONAL_SERVICE" + // "ATTORNEY" + // "NOTARY" + // "RADIO_STATION" + // "REAL_ESTATE_AGENT" + // "RECYCLING_CENTER" + // "SELF_STORAGE" + // "SHOPPING_CENTER" + // "SPORTS_ACTIVITY_LOCATION" + // "BOWLING_ALLEY" + // "EXERCISE_GYM" + // "GOLF_COURSE" + // "PUBLIC_SWIMMING_POOL" + // "SKI_RESORT" + // "SPORTS_CLUB" + // "STADIUM_OR_ARENA" + // "TENNIS_COMPLEX" + // "STORE" + // "BIKE_STORE" + // "BOOK_STORE" + // "CLOTHING_STORE" + // "COMPUTER_STORE" + // "CONVENIENCE_STORE" + // "DEPARTMENT_STORE" + // "ELECTRONICS_STORE" + // "FLORIST" + // "FURNITURE_STORE" + // "GARDEN_STORE" + // "GROCERY_STORE" + // "HARDWARE_STORE" + // "HOBBY_SHOP" + // "HOME_GOODS_STORE" + // "JEWELRY_STORE" + // "LIQUOR_STORE" + // "MENS_CLOTHING_STORE" + // "MOBILE_PHONE_STORE" + // "MOVIE_RENTAL_STORE" + // "MUSIC_STORE" + // "OFFICE_EQUIPMENT_STORE" + // "OUTLET_STORE" + // "PAWN_SHOP" + // "PET_STORE" + // "SHOE_STORE" + // "SPORTING_GOODS_STORE" + // "TIRE_SHOP" + // "TOY_STORE" + // "WHOLESALE_STORE" + // "TELEVISION_STATION" + // "TOURIST_INFORMATION_CENTER" + // "TRAVEL_AGENCY" + // "PERFORMING_GROUP" + // "MUSIC_GROUP" + // "ADMINISTRATIVE_AREA" - PLACE subtypes + // "CITY" + // "COUNTRY" + // "STATE" + // "CIVIC_STRUCTURE" + // "AIRPORT" + // "AQUARIUM" + // "BEACH" + // "BUS_STATION" + // "BUS_STOP" + // "CAMPGROUND" + // "CEMETERY" + // "CREMATORIUM" + // "EVENT_VENUE" + // "GOVERNMENT_BUILDING" + // "CITY_HALL" + // "COURTHOUSE" + // "DEFENCE_ESTABLISHMENT" + // "EMBASSY" + // "LEGISLATIVE_BUILDING" + // "MUSEUM" + // "MUSIC_VENUE" + // "PARK" + // "PARKING_FACILITY" + // "PERFORMING_ARTS_THEATER" + // "PLACE_OF_WORSHIP" + // "BUDDHIST_TEMPLE" + // "CATHOLIC_CHURCH" + // "CHURCH" + // "HINDU_TEMPLE" + // "MOSQUE" + // "SYNAGOGUE" + // "PLAYGROUND" + // "R_V_PARK" + // "RESIDENCE" + // "APARTMENT_COMPLEX" + // "GATED_RESIDENCE_COMMUNITY" + // "SINGLE_FAMILY_RESIDENCE" + // "TOURIST_ATTRACTION" + // "SUBWAY_STATION" + // "TAXI_STAND" + // "TRAIN_STATION" + // "ZOO" + // "LANDFORM" + // "BODY_OF_WATER" + // "CANAL" + // "LAKE_BODY_OF_WATER" + // "OCEAN_BODY_OF_WATER" + // "POND" + // "RESERVOIR" + // "RIVER_BODY_OF_WATER" + // "SEA_BODY_OF_WATER" + // "WATERFALL" + // "CONTINENT" + // "MOUNTAIN" + // "VOLCANO" + // "LANDMARKS_OR_HISTORICAL_BUILDINGS" + // "USER_INTERACTION" - NOTE(jpanzer): This is a badly designed + // hierarchy and we should avoid depending on Event properties inside + // UserInteractions as much as possible IMHO. + // "USER_PLUS_ONES" + // "ENUMERATION" - Intangibles, primarily used as sub-objects of other + // types + // "BOOK_FORMAT_TYPE" + // "ITEM_AVAILABILITY" + // "OFFER_ITEM_CONDITION" + // "JOB_POSTING" + // "LANGUAGE" + // "OFFER" + // "QUANTITY" + // "DISTANCE" + // "DURATION" + // "ENERGY" + // "MASS" + // "RATING" + // "AGGREGATE_RATING" + // "STRUCTURED_VALUE" + // "CONTACT_POINT" + // "POSTAL_ADDRESS" + // "GEO_COORDINATES" + // "GEO_SHAPE" + // "NUTRITION_INFORMATION" + // "PRESENTATION_OBJECT" - CREATIVE_WORK extensions + // "DOCUMENT_OBJECT" + // "SPREADSHEET_OBJECT" + // "FORM_OBJECT" + // "DRAWING_OBJECT" + // "PLACE_REVIEW" + // "FILE_OBJECT" + // "PLAY_MUSIC_TRACK" + // "PLAY_MUSIC_ALBUM" + // "MAGAZINE" + // "CAROUSEL_FRAME" - Single frame for http://goto/carousel. + // "PLUS_EVENT" - EVENT extensions + // "HANGOUT" - No declared proto. Used only as a base type for now. + // "HANGOUT_BROADCAST" + // "HANGOUT_CONSUMER" + // "CHECKIN" + // "EXAMPLE_OBJECT" + // "SQUARE" - NOTE(melchang): These correspond to + // http://schema.org/WebPage/Community and + // http://schema.org/WebPage/CommunityInvite. See b/7653610 for why + // these are "SQUARE" and not "COMMUNITY". + // "SQUARE_INVITE" + // "PLUS_PHOTO" + // "PLUS_PHOTO_ALBUM" + // "LOCAL_PLUS_PHOTO_ALBUM" + // "PRODUCT_REVIEW" + // "FINANCIAL_QUOTE" + // "DEPRECATED_TOUR_OBJECT" + // "PLUS_PAGE" + // "GOOGLE_CHART" - Data visualizations. See + // http://code.google.com/apis/chart/index.html + // "PLUS_PHOTOS_ADDED_TO_COLLECTION" + // "RECOMMENDED_PEOPLE" - A collection of people that have been + // recommended to a user. + // "PLUS_POST" - A Google+ post. + // "DATE" - An http://schema.org/Date unstructured ISO-8859 timestamp + // string. + // "DRIVE_OBJECT_COLLECTION" - Embed representing a collection of + // multiple Drive objects. + // "NEWS_MEDIA_ORGANIZATION" - + // https://schema.org/NewsMediaOrganization + // "DYNAMITE_ATTACHMENT_METADATA" - Deprecated in favor of + // DYNAMITE_MESSAGE_METADATA + // "DYNAMITE_MESSAGE_METADATA" - Used for Dynamite message metadata in + // Hangouts + Type []string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CanonicalId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CanonicalId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *EmbedsEmbedClientItem) MarshalJSON() ([]byte, error) { + type NoMethod EmbedsEmbedClientItem + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// EmbedsPackagingServiceClient: 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. +type EmbedsPackagingServiceClient struct { + // AndroidPackageName: Android app's package name to generate the + // deep-link URI. + AndroidPackageName string `json:"androidPackageName,omitempty"` + + // IosAppStoreId: iOS app's App Store ID to generate the App Store URL + // when app is not installed on device. + IosAppStoreId string `json:"iosAppStoreId,omitempty"` + + // IosBundleId: iOS app's bundle ID to generate the deep-link URI. + IosBundleId string `json:"iosBundleId,omitempty"` + + // Type: Type of Google API Console client. + // + // Possible values: + // "ANDROID" - Client for Android app. + // "IOS" - Client for iOS app. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AndroidPackageName") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AndroidPackageName") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *EmbedsPackagingServiceClient) MarshalJSON() ([]byte, error) { + type NoMethod EmbedsPackagingServiceClient + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// EmbedsProvenance: This field records where the ItemScope was +// retrieved, if it was created via a web fetch. +type EmbedsProvenance struct { + // AnnotationBlob: Annotation blob from Annotation Service. + AnnotationBlob string `json:"annotationBlob,omitempty"` + + // CanonicalUrl: Canonical url of the retrieved_url, if one was resolved + // during retrieval, for example, if a rel="canonical" link tag was + // provided in the retrieved web page. + CanonicalUrl string `json:"canonicalUrl,omitempty"` + + // InputUrl: The url originally passed in the PRS request, which should + // be used to re-discover the content. Note that this URL may be a + // forwarding service or link shortener (bit.ly), so it should not be + // assumed to be canonical, but should be used for navigation back to + // the original source of the itemscope. + InputUrl string `json:"inputUrl,omitempty"` + + // Itemtype: Contains exact types as parsed, whether or not we + // recognized that type at parse time. If an itemscope is created by + // merging SchemaOrg markup and open graph markup then the first + // itemtype would be schemaorg type, the second would be open graph and + // so on. example: http://schema.org/VideoObject, og:video.movie Plain + // text; usually a URL + Itemtype []string `json:"itemtype,omitempty"` + + // RetrievedTimestampMsec: The server retrieved timestamp (in msec). + RetrievedTimestampMsec uint64 `json:"retrievedTimestampMsec,omitempty,string"` + + // RetrievedUrl: The final URL that was the actual source of the + // itemscope, after any redirects. + RetrievedUrl string `json:"retrievedUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AnnotationBlob") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AnnotationBlob") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *EmbedsProvenance) MarshalJSON() ([]byte, error) { + type NoMethod EmbedsProvenance + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// EmbedsTransientData: Transient generic data that will not be saved on +// the server. +type EmbedsTransientData struct { +} + +// EntitySignalsClassificationOutput: Output of the classifier. +type EntitySignalsClassificationOutput struct { + // Labels: Filled if used logistic regression (see ewok.proto for + // available labels). + Labels []*EntitySignalsWeightedRelevanceRating `json:"labels,omitempty"` + + // RelevanceScore: If using linear regression, this is the output value + // of the regression. If using logistic regression, this is the weighted + // aggregated rating. See http://go/entitymetric + RelevanceScore float64 `json:"relevanceScore,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Labels") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Labels") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *EntitySignalsClassificationOutput) MarshalJSON() ([]byte, error) { + type NoMethod EntitySignalsClassificationOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *EntitySignalsClassificationOutput) UnmarshalJSON(data []byte) error { + type NoMethod EntitySignalsClassificationOutput + var s1 struct { + RelevanceScore gensupport.JSONFloat64 `json:"relevanceScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.RelevanceScore = float64(s1.RelevanceScore) + return nil +} + +// EntitySignalsEntityClassification: Collection of input, extracted +// features and classification output. +type EntitySignalsEntityClassification struct { + // EntityId: Entity id. + EntityId string `json:"entityId,omitempty"` + + // Features: Input features used in classification. + Features []*EntitySignalsEntityFeature `json:"features,omitempty"` + + // Output: Classification output. + Output *EntitySignalsClassificationOutput `json:"output,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EntityId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EntityId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *EntitySignalsEntityClassification) MarshalJSON() ([]byte, error) { + type NoMethod EntitySignalsEntityClassification + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type EntitySignalsEntityFeature struct { + // Possible values: + // "INVALID" - used for e.g. empty feature names and parsing error + // "NO_FEATURE_ENUM" - for the cases where there's no backing code + // "WEBREF__ANCHOR_SCORE" + // "WEBREF__BODY_SCORE" + // "WEBREF__BUCKETIZED_TOPICALITY__0" + // "WEBREF__BUCKETIZED_TOPICALITY__1" + // "WEBREF__BUCKETIZED_TOPICALITY__2" + // "WEBREF__BUCKETIZED_TOPICALITY__3" + // "WEBREF__BUCKETIZED_TOPICALITY__4" + // "WEBREF__CONFIDENCE_SCORE" + // "WEBREF__CONNECTEDNESS" + // "WEBREF__MENTION__MENTION_SCORE_AVG__BODY" + // "WEBREF__MENTION__MENTION_SCORE_AVG__ANCHOR" + // "WEBREF__MENTION__MENTION_SCORE_AVG__QUERY" + // "WEBREF__MENTION__SUPPORT_SCORE_AVG__ANCHOR" + // "WEBREF__MENTION__SUPPORT_SCORE_AVG__BODY" + // "WEBREF__MENTION__SUPPORT_SCORE_AVG__QUERY" + // "WEBREF__MENTION__TOKEN_WEIGHT_SUM__ANCHOR" + // "WEBREF__MENTION__TOKEN_WEIGHT_SUM__BODY" + // "WEBREF__MENTION__TOKEN_WEIGHT_SUM__QUERY" + // "WEBREF__NB_SCORE" + // "WEBREF__NORMALIZED_TOPICALITY" + // "WEBREF__TOPICALITY" + // "WEBREF__TOPICALITY_BUCKET__0" + // "WEBREF__TOPICALITY_BUCKET__1" + // "WEBREF__TOPICALITY_BUCKET__2" + // "WEBREF__TOPICALITY_BUCKET__3" + // "WEBREF__TOPICALITY_BUCKET__4" + // "WEBREF__TOTAL_CANDIDATE_COUNT" + // "ENTITY_SIGNALS__OTM__MAX" + // "ENTITY_SIGNALS__OTM__GEO__AUTO" + // "ENTITY_SIGNALS__OTM__GEO__HUMAN" + // "ENTITY_SIGNALS__OTM__VERTICALS4__AUTO" + // "ENTITY_SIGNALS__OTM__VERTICALS4__HUMAN" + Code string `json:"code,omitempty"` + + // Name: Name of the feature. For a completely list of available + // features, please check http://go/entityclassifierfeatures + Name string `json:"name,omitempty"` + + // Value: Value of the feature. + Value float64 `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *EntitySignalsEntityFeature) MarshalJSON() ([]byte, error) { + type NoMethod EntitySignalsEntityFeature + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *EntitySignalsEntityFeature) UnmarshalJSON(data []byte) error { + type NoMethod EntitySignalsEntityFeature + var s1 struct { + Value gensupport.JSONFloat64 `json:"value"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Value = float64(s1.Value) + return nil +} + +type EntitySignalsWeightedRelevanceRating struct { + // Possible values: + // "UNRATED" + // "NOT_RELEVANT" + // "BARELY_RELEVANT" + // "RELEVANT" + // "IMPORTANT" + Rating string `json:"rating,omitempty"` + + Weight float64 `json:"weight,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Rating") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Rating") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *EntitySignalsWeightedRelevanceRating) MarshalJSON() ([]byte, error) { + type NoMethod EntitySignalsWeightedRelevanceRating + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *EntitySignalsWeightedRelevanceRating) UnmarshalJSON(data []byte) error { + type NoMethod EntitySignalsWeightedRelevanceRating + var s1 struct { + Weight gensupport.JSONFloat64 `json:"weight"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Weight = float64(s1.Weight) + return nil +} + +// EventIdMessage: 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 +type EventIdMessage struct { + // ProcessId: process_id is an integer that identifies the process on + // this machine that generated this event. This id is calculated once + // when the server generates its first event, and may change if the + // process is migrated to a different host. This field has a very + // specific format mandated by the logs collection infrastructure, which + // is subject to change WITHOUT NOTICE. As of 2013-01-09, this format + // is: uint32 process_id = (time(NULL) << 24) + (getpid() & 0xFFFFFF); + // If you are generating an extended_pid directly, you MUST use one of + // the maintained library implementations in order to generate it + // properly: C++ //borg/borgletlib:extended_pid; call + // borg::ExtendedPid() Python //borg/borgletlib/python:pyextendedpid; + // call ExtendedPid() Go //borg/borgletlib/go:extendedpid; call Get() + // Java //java/com/google/common/logging; call EventId.getPid() If you + // think that you need to parse the values of this field, please contact + // logs-collection-dev@ to discuss your requirement. + ProcessId int64 `json:"processId,omitempty"` + + // ServerIp: server_ip is the IPv4 address or http://go/ghostid of the + // machine running the server that created this event message. This + // allows us to distinguish between events that occur at the same time + // on different servers. Format: 10.1.2.3 is stored as 0x0a010203, and + // GHostId 1 as 0x00000001. + ServerIp int64 `json:"serverIp,omitempty"` + + // TimeUsec: time_usec is the number of microseconds since the epoch + // (i.e., since 1970-01-01 00:00:00 UTC) as an int64: 1e6 * (unix time) + // + microseconds. Applications must ensure that EventIdMessages have + // increasing times, artificially increasing time_usec to one greater + // than the previous value if necessary. Alternate implementations were + // considered: 1. storing unix time and microseconds separately would + // require a bit more storage, and the convenience of having a single + // value representing the time seemed more useful than having trivial + // access to a unix time. 2. storing unix time in the upper 32 bits + // would allow for more precision - up to 4G events/second, but it + // wouldn't print nicely as a decimal value and it seems unlikely that + // any single server would ever sustain more than 1M events/second. 3. + // Java-compatible time uses millis - this would limit servers to 1000 + // events per second - too small. Other names for this field were + // considered, including time, time_stamp, and utime. We felt that + // including the units in the name would tend to produce more readable + // code. utime might be interpreted as user time. unix timestamp * 1e6 + + // microseconds + TimeUsec int64 `json:"timeUsec,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "ProcessId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ProcessId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *EventIdMessage) MarshalJSON() ([]byte, error) { + type NoMethod EventIdMessage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ExtraSnippetInfoResponse: the extra info response from ascorer used +// to build snippets in GWS experiments +type ExtraSnippetInfoResponse struct { + Matchinfo *ExtraSnippetInfoResponseMatchInfo `json:"matchinfo,omitempty"` + + Querysubitem []*ExtraSnippetInfoResponseQuerySubitem `json:"querysubitem,omitempty"` + + Tidbit []*ExtraSnippetInfoResponseTidbit `json:"tidbit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Matchinfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Matchinfo") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ExtraSnippetInfoResponse) MarshalJSON() ([]byte, error) { + type NoMethod ExtraSnippetInfoResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type ExtraSnippetInfoResponseMatchInfo struct { + // TitleMatches: bitvector of query items matching the title + TitleMatches uint64 `json:"titleMatches,omitempty,string"` + + // UrlMatches: bitvector of query items matching the url + UrlMatches uint64 `json:"urlMatches,omitempty,string"` + + // WeightedItems: bitvector of query items considered by chooser + WeightedItems uint64 `json:"weightedItems,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "TitleMatches") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TitleMatches") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ExtraSnippetInfoResponseMatchInfo) MarshalJSON() ([]byte, error) { + type NoMethod ExtraSnippetInfoResponseMatchInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// ExtraSnippetInfoResponseQuerySubitem: 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]. +type ExtraSnippetInfoResponseQuerySubitem struct { + // IsHighlighted: Additional information from the SnippetQuery. + IsHighlighted bool `json:"isHighlighted,omitempty"` + + IsOptional bool `json:"isOptional,omitempty"` + + // IsOriginal: true iff this subitem was an original query term or + // phrase. Can only be false if want_all_query_subitems == true in the + // request. + IsOriginal bool `json:"isOriginal,omitempty"` + + // Items: a bitvector of the query items corresponding to this subitem. + // Typically only one bit is set, but see comment above. + Items int64 `json:"items,omitempty"` + + // Text: text associated with this query item + Text string `json:"text,omitempty"` + + // Weight: the weight of this query item, as calculated by + // SubitemWeight(): + // https://qwiki.corp.google.com/display/Q/SnippetWeights + Weight int64 `json:"weight,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsHighlighted") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsHighlighted") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ExtraSnippetInfoResponseQuerySubitem) MarshalJSON() ([]byte, error) { + type NoMethod ExtraSnippetInfoResponseQuerySubitem + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type ExtraSnippetInfoResponseTidbit struct { + Anchorinfo *ExtraSnippetInfoResponseTidbitAnchorInfo `json:"anchorinfo,omitempty"` + + // Begin: For tidbits only: position of tidbit in the document. More + // specifically, tidbit is found at [begin, end) in the document's + // tokens. + Begin int64 `json:"begin,omitempty"` + + End int64 `json:"end,omitempty"` + + // Items: a bitvector of each query term within this tidbit + Items uint64 `json:"items,omitempty,string"` + + // Score: 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) + Score float64 `json:"score,omitempty"` + + // Text: the tidbit text, with search terms already highlighted + Text string `json:"text,omitempty"` + + // Possible values: + // "TIDBIT" - it is a tidbit returned by want_all_tidbits + // "BODY" - these are the best candidate snippets from each section, + // returned by want_all_snippets + // "META" + // "GWD" - NOTE(kinoue): ODP/GWD snippet is unlaunched as of June + // 2017. This is no longer used. + // "FULL" + // "ANCHOR" - NOTE(kinoue): Deprecated and unsupported. anchor text, + // returned if max_anchors_wanted > 0 + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Anchorinfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Anchorinfo") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *ExtraSnippetInfoResponseTidbit) MarshalJSON() ([]byte, error) { + type NoMethod ExtraSnippetInfoResponseTidbit + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *ExtraSnippetInfoResponseTidbit) UnmarshalJSON(data []byte) error { + type NoMethod ExtraSnippetInfoResponseTidbit + var s1 struct { + Score gensupport.JSONFloat64 `json:"score"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Score = float64(s1.Score) + return nil +} + +// ExtraSnippetInfoResponseTidbitAnchorInfo: this information is +// specific to anchors and is only returned if type == ANCHOR +type ExtraSnippetInfoResponseTidbitAnchorInfo struct { + OffdomainCount int64 `json:"offdomainCount,omitempty"` + + OndomainCount int64 `json:"ondomainCount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OffdomainCount") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OffdomainCount") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *ExtraSnippetInfoResponseTidbitAnchorInfo) MarshalJSON() ([]byte, error) { + type NoMethod ExtraSnippetInfoResponseTidbitAnchorInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type FaceIndexing struct { + // MustangBytes: Always use image/search/utils/face_proto_util.h for + // packing and unpacking these values. + MustangBytes string `json:"mustangBytes,omitempty"` + + MustangBytesVersion int64 `json:"mustangBytesVersion,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MustangBytes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MustangBytes") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FaceIndexing) MarshalJSON() ([]byte, error) { + type NoMethod FaceIndexing + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type FatcatCompactBinaryClassification struct { + // BinaryClassifier: 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. + // + // Possible values: + // "BLOG" - Pagetypes + // "FORUM" + // "LOGIN" + // "B2B_OK" + // "IMAGES" + // "SOCIAL" + // "PURCHASING_INTENT" + // "PORN" - Sensitive content + // "ADULTISH" + // "VIOLENCE_GORE" + // "GOSSIP" + BinaryClassifier string `json:"binaryClassifier,omitempty"` + + BinaryClassifierName string `json:"binaryClassifierName,omitempty"` + + // DiscreteFraction: 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 + DiscreteFraction int64 `json:"discreteFraction,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BinaryClassifier") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BinaryClassifier") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *FatcatCompactBinaryClassification) MarshalJSON() ([]byte, error) { + type NoMethod FatcatCompactBinaryClassification + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FatcatCompactDocClassification: 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. +type FatcatCompactDocClassification struct { + Binary []*FatcatCompactBinaryClassification `json:"binary,omitempty"` + + Clusters *FatcatCompactRephilClusters `json:"clusters,omitempty"` + + Epoch string `json:"epoch,omitempty"` + + LangCode string `json:"langCode,omitempty"` + + // RephilModelId: The id of the Rephil model used to generate the Rephil + // clusters. If it is absent, Rephil 4 is assumed. + RephilModelId int64 `json:"rephilModelId,omitempty"` + + Taxonomic []*FatcatCompactTaxonomicClassification `json:"taxonomic,omitempty"` + + // Url: not needed if the url is the sstable / bigtable key used during + // intermediate processing only + Url string `json:"url,omitempty"` + + // Weight: The relative weight of this doc within a site, typically + // something like pagerank or navboost impressions. May be a large + // number (like an actual pageviews estimate), not limited to a small + // range. + Weight int64 `json:"weight,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Binary") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Binary") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FatcatCompactDocClassification) MarshalJSON() ([]byte, error) { + type NoMethod FatcatCompactDocClassification + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type FatcatCompactRephilClusters struct { + Cluster []*FatcatCompactRephilClustersCluster `json:"cluster,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Cluster") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Cluster") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FatcatCompactRephilClusters) MarshalJSON() ([]byte, error) { + type NoMethod FatcatCompactRephilClusters + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type FatcatCompactRephilClustersCluster struct { + // DiscreteWeight: 0...127 corresponds to 0.0 - 1.0 + DiscreteWeight int64 `json:"discreteWeight,omitempty"` + + Id int64 `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DiscreteWeight") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DiscreteWeight") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *FatcatCompactRephilClustersCluster) MarshalJSON() ([]byte, error) { + type NoMethod FatcatCompactRephilClustersCluster + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FatcatCompactTaxonomicClassification: A version of this proto for +// logging is available at +// cs/symbol:logged_fatcat.LoggedCompactTaxonomicClassification +type FatcatCompactTaxonomicClassification struct { + Category []*FatcatCompactTaxonomicClassificationCategory `json:"category,omitempty"` + + // Taxonomy: Either taxonomy will be set, using the enum above, or + // taxonomy_name will be set (if the taxonomy is not one of the ones in + // the enum) - never both + // + // Possible values: + // "VERTICALS" - DEPRECATED Verticals, v3 + // "VERTICALS4" - Publisher Verticals, v4. go/verticals4 + // "VERTICALS4_GEO" - Publisher Verticals, v4 + World Localities + // "GEO" - World Localities + // "PRODUCTS_SERVICES" - Products & Services + // "ICM_IM_AUDIENCES" - ICM In Market Audiences + // "ICM_IM_AUDIENCES_DEV" - Experimental ICM In Market Audiences + Taxonomy string `json:"taxonomy,omitempty"` + + TaxonomyName string `json:"taxonomyName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Category") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Category") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FatcatCompactTaxonomicClassification) MarshalJSON() ([]byte, error) { + type NoMethod FatcatCompactTaxonomicClassification + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FatcatCompactTaxonomicClassificationCategory: A taxonomic category. A +// classification consists of weight (totalling 1.0) distributed among +// one or more categories. +type FatcatCompactTaxonomicClassificationCategory struct { + // DiscreteWeight: + // go/petacat-faq#how-should-i-interpret-classification-weights Discrete + // to reduce size. Range is [0,127], corresponding to [0.0,1.0]. + DiscreteWeight int64 `json:"discreteWeight,omitempty"` + + // Id: The category's ID, e.g. 20 for /Sports in the go/verticals4 + // taxonomy. + Id int64 `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DiscreteWeight") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DiscreteWeight") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *FatcatCompactTaxonomicClassificationCategory) MarshalJSON() ([]byte, error) { + type NoMethod FatcatCompactTaxonomicClassificationCategory + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FocusBackendContactDetailHash: http://go/contact-detail-hash. +type FocusBackendContactDetailHash struct { + // Possible values: + // "UNSPECIFIED" + // "PHONE" + // "EMAIL" + Type string `json:"type,omitempty"` + + // Value: The hash here will be a 16-bit weak hash to avoid reverse + // engineering for decoding the actual contact detail. The hash value is + // computed by the fingerprint of the raw contact detail mod 2^16. + Value int64 `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FocusBackendContactDetailHash) MarshalJSON() ([]byte, error) { + type NoMethod FocusBackendContactDetailHash + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FocusBackendContactPointer: A contact pointer that represents a +// contact (http://go/assistant-contact-id). +type FocusBackendContactPointer struct { + // AnnotationId: The annotation ID. Annotations are only allowed to + // point to annotations that do not themselves have a pointer (avoids + // any possibilty of loops). Cast this field to string in javascript to + // make it compile in js. + AnnotationId int64 `json:"annotationId,omitempty,string"` + + // DeviceRawContactId: The raw contact ID from an active mobile device + // of the user. + DeviceRawContactId *FocusBackendDeviceRawContactId `json:"deviceRawContactId,omitempty"` + + // FocusContactId: The contact ID from the Focus backend. Cast this + // field to string in javascript to make it compile in js. + FocusContactId int64 `json:"focusContactId,omitempty,string"` + + // OtherContactId: Additional contact ids that are not actively used to + // match contact pointers to contacts. + OtherContactId *FocusBackendOtherContactId `json:"otherContactId,omitempty"` + + // SecondaryId: The secondary identifier of contact. It will be used + // when the primary ID doesn't match any contact. + SecondaryId *FocusBackendSecondaryContactId `json:"secondaryId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AnnotationId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AnnotationId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FocusBackendContactPointer) MarshalJSON() ([]byte, error) { + type NoMethod FocusBackendContactPointer + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FocusBackendDeviceContactId: //////////////////// DeviceContactId +// ////////////////////// Used by Device Contacts only. For more details +// see go/fbs-support-for-device-contacts. +type FocusBackendDeviceContactId struct { + // ContactId: DeviceContact Id. + ContactId int64 `json:"ContactId,omitempty,string"` + + // DeviceId: Device Id. + DeviceId *FocusBackendDeviceId `json:"DeviceId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContactId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FocusBackendDeviceContactId) MarshalJSON() ([]byte, error) { + type NoMethod FocusBackendDeviceContactId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FocusBackendDeviceId: //////////////////// DeviceId +// ////////////////////// Used by Device Contacts only. For more details +// see go/fbs-support-for-device-contacts. +type FocusBackendDeviceId struct { + // AndroidDeviceId: The GServices id on Android. See go/android-id. + AndroidDeviceId int64 `json:"AndroidDeviceId,omitempty,string"` + + // Hash: DeviceId.Hash is a SHA256 of some attribute of the user and + // device. For Android devices: Hash = SHA256(gaia_account_name + + // “:” + “1” + “:” + (android id - LSB)); For iOS devices: + // Hash = TOLOWER(HEX(GMCSComputeUserDeviceToken(userId, iOsDeviceId)) + // For more details see go/client-instance-id. + Hash string `json:"Hash,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AndroidDeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AndroidDeviceId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *FocusBackendDeviceId) MarshalJSON() ([]byte, error) { + type NoMethod FocusBackendDeviceId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FocusBackendDeviceRawContactId: //////////////////// +// 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. +type FocusBackendDeviceRawContactId struct { + DeviceId *FocusBackendDeviceId `json:"DeviceId,omitempty"` + + // RawContactId: Raw ID assigned by the device. Cast this field to + // string in javascript to make it compile in js. + RawContactId int64 `json:"RawContactId,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "DeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FocusBackendDeviceRawContactId) MarshalJSON() ([]byte, error) { + type NoMethod FocusBackendDeviceRawContactId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FocusBackendOtherContactId: Additional contact ids that are not +// actively used to match contact pointers to contacts. There may be +// overlap with primary or secondary contact ids. +type FocusBackendOtherContactId struct { + // DeviceContactId: Device contact ID, when available: - The annotation + // points to a device contact, and the device contact id was correctly + // populated when the annotation was created. Note that the device + // contact id is populated once per device contact on a device. It is + // distinct from RawContactId - a single device contact may have + // multiple raw contact ids. - The annotation points to a Focus contact + // that was merged with device contact information in Starlight. When + // the annotation was created, a device contact id was available on the + // merged person object. - The contact annotation was created from April + // 2021 onwards. All prior annotations do not populate this field. + // ContactPointer creation relies on the client caller to correctly + // populate the device contact id, and does not enforce any assumptions + // on availability of this field. This field is repeated because in rare + // cases Starlight may merge device contact information across different + // devices into a single merged person object. WARNING: Use with extreme + // caution! This ID is not stable. For more details see + // go/fbs-support-for-device-contacts. + DeviceContactId []*FocusBackendDeviceContactId `json:"deviceContactId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceContactId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceContactId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *FocusBackendOtherContactId) MarshalJSON() ([]byte, error) { + type NoMethod FocusBackendOtherContactId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FocusBackendSecondaryContactId: The secondary ID of a contact. +type FocusBackendSecondaryContactId struct { + // ContactDetailHash: The hashes of the contact details (e.g. phone + // number and email address). + ContactDetailHash []*FocusBackendContactDetailHash `json:"contactDetailHash,omitempty"` + + // ContactName: The contact's full name, not hashed. + ContactName string `json:"contactName,omitempty"` + + // ContactNameHash: The hash of contact's full name, generated using + // Fingerprint2011(). Cast this field to string in javascript to make it + // compile in js. + ContactNameHash uint64 `json:"contactNameHash,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "ContactDetailHash") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContactDetailHash") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *FocusBackendSecondaryContactId) MarshalJSON() ([]byte, error) { + type NoMethod FocusBackendSecondaryContactId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FreebaseCitation: Citation contains the information needed to +// correctly attribute the source of data. +type FreebaseCitation struct { + // Dataset: Mid of the dataset. + Dataset string `json:"dataset,omitempty"` + + // IsAttributionRequired: If set to true, the citation is required to be + // displayed when the data is used. + IsAttributionRequired bool `json:"isAttributionRequired,omitempty"` + + // Project: Name of the project of the data's origin. + Project string `json:"project,omitempty"` + + // Provider: The name of the provider of this information. + Provider string `json:"provider,omitempty"` + + // Statement: A human readable statement of attribution. + Statement string `json:"statement,omitempty"` + + // Uri: Uri link associated with this data. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dataset") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dataset") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebaseCitation) MarshalJSON() ([]byte, error) { + type NoMethod FreebaseCitation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FreebaseId: 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). +type FreebaseId struct { + // Id: "id" may be a human readable ID (HRID) or a MID. Originally it + // was intended to always be a human readable ID, but that convention + // was not always followed so clients should be wary. Not every topic + // has an id. + Id string `json:"id,omitempty"` + + // Mid: The "mid" should be used whenever a globally unique, primary key + // into the Knowledge Graph is needed. These keys are always prefixed + // with the "/m" and "/g", (and more rarely the "/x" and "/t") + // namespaces, and are alphanumeric strings consisting of lowercase + // letters excluding vowels, numbers and the underscore character. + // (Applications should not assume a constant length for these strings + // as Livegraph reserves the right to extend the number of characters to + // accommodate more topics.) + Mid string `json:"mid,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebaseId) MarshalJSON() ([]byte, error) { + type NoMethod FreebaseId + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FreebaseLatLong: Represents a geopoint, which is one of the possible +// Value types. +type FreebaseLatLong struct { + LatDeg float64 `json:"latDeg,omitempty"` + + LongDeg float64 `json:"longDeg,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LatDeg") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LatDeg") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebaseLatLong) MarshalJSON() ([]byte, error) { + type NoMethod FreebaseLatLong + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *FreebaseLatLong) UnmarshalJSON(data []byte) error { + type NoMethod FreebaseLatLong + var s1 struct { + LatDeg gensupport.JSONFloat64 `json:"latDeg"` + LongDeg gensupport.JSONFloat64 `json:"longDeg"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.LatDeg = float64(s1.LatDeg) + s.LongDeg = float64(s1.LongDeg) + return nil +} + +// FreebaseMeasurement: 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 } +type FreebaseMeasurement struct { + Magnitude float64 `json:"magnitude,omitempty"` + + // Unit: Repeated units are interpreted as a product. i.e. (meter ^ 1) * + // (second ^ -2) + Unit []*FreebaseMeasurementUnit `json:"unit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Magnitude") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Magnitude") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebaseMeasurement) MarshalJSON() ([]byte, error) { + type NoMethod FreebaseMeasurement + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *FreebaseMeasurement) UnmarshalJSON(data []byte) error { + type NoMethod FreebaseMeasurement + var s1 struct { + Magnitude gensupport.JSONFloat64 `json:"magnitude"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Magnitude = float64(s1.Magnitude) + return nil +} + +type FreebaseMeasurementUnit struct { + Power int64 `json:"power,omitempty"` + + Unit *FreebaseId `json:"unit,omitempty"` + + // UnitMid: Deprecated fields. + UnitMid string `json:"unitMid,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Power") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Power") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebaseMeasurementUnit) MarshalJSON() ([]byte, error) { + type NoMethod FreebaseMeasurementUnit + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FreebaseNestedStruct: 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. +type FreebaseNestedStruct struct { + PropertyValue []*FreebasePropertyValue `json:"propertyValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PropertyValue") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PropertyValue") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebaseNestedStruct) MarshalJSON() ([]byte, error) { + type NoMethod FreebaseNestedStruct + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FreebasePropertyValue: A PropertyValue associates properties with +// values in the context of a topic. +type FreebasePropertyValue struct { + // Property: The id of the property. + Property *FreebaseId `json:"property,omitempty"` + + // TotalValueCount: Indicates the total values that exist for this + // property, even if they aren't all present in the value field, due to + // truncation. + TotalValueCount int64 `json:"totalValueCount,omitempty,string"` + + // Value: The value associated with the property for the containing + // topic. + Value []*FreebaseValue `json:"value,omitempty"` + + // ValueStatus: If ValueStatus is not set at all, the implication is + // that there are well-known value(s), specified in the "value" field. + // (It should be considered malformed data to have value_status set when + // len(values) > 0.) + // + // Possible values: + // "HAS_UNKNOWN_VALUE" - There are values, but we don't know what they + // are. (e.g. person is known to have children, but we don't know who + // they are) (This is only sensible if len(values) == 0; it is an error + // to see this value if len(values) > 0) + // "HAS_NO_VALUE" - We know that there are no values for this + // predicate. (e.g. person is known to have zero children) (This is only + // sensible if len(values) == 0; it is an error to see this value if + // len(values) > 0) + ValueStatus string `json:"valueStatus,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Property") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Property") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebasePropertyValue) MarshalJSON() ([]byte, error) { + type NoMethod FreebasePropertyValue + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FreebaseTopic: A Topic represents a Knowledge Graph entity with its +// associated properties and their values. +type FreebaseTopic struct { + // Id: The id (mid and human-readable id) of the topic. The id will + // always be present and will contain a mid value for topics in the + // topic sstable. + Id *FreebaseId `json:"id,omitempty"` + + // PropertyValue: The property-value bindings associated with the topic. + // Note that in the case where a property is relevant to a topic based + // on its type, but no values of that property are present for the + // topic, the PropertyValue will simply not appear, rather than being + // present with a null value, or empty repeated value list. + PropertyValue []*FreebasePropertyValue `json:"propertyValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebaseTopic) MarshalJSON() ([]byte, error) { + type NoMethod FreebaseTopic + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// FreebaseValue: 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). +type FreebaseValue struct { + // BoolValue: key, uri, or datetime. Present when value is bool. + BoolValue bool `json:"boolValue,omitempty"` + + // Citation: Citation data for this value. See: http://go/kg-clap + Citation *FreebaseCitation `json:"citation,omitempty"` + + // CompoundValue: Compound values are those that contain either a number + // of simple valued facets (such as a latitude/longitude pair), or + // "mediator" topics representing multi-dimensional relationships + // between topics. In both cases we represent them here with an embedded + // topic, although the topic's identity is somewhat secondary to the + // property/value pairs it contains. (The identity is still made + // available so that it can be used to perform updates to that mediator + // on the Knowledge Graph.) + CompoundValue *FreebaseTopic `json:"compoundValue,omitempty"` + + // DeletionProvenance: Deletion provenance for this value. + DeletionProvenance []*StorageGraphBfgTripleProvenance `json:"deletionProvenance,omitempty"` + + // DisplayLang: The lang of the display_value field. + DisplayLang string `json:"displayLang,omitempty"` + + // DisplayValue: The display value of this value. This is a i18n-aware + // formatted value if present. + DisplayValue string `json:"displayValue,omitempty"` + + // ExpectedProto: An optional name for a proto field. + ExpectedProto string `json:"expectedProto,omitempty"` + + // FloatValue: Present when value is float. + FloatValue float64 `json:"floatValue,omitempty"` + + // IdValue: Present when value is an id. + IdValue *FreebaseId `json:"idValue,omitempty"` + + // Index: Index of the value relative to the containing property (if + // any). Knowledge Graph supports a loose notion of indexing: some + // non-unique properties may have indices, while others may not. + // Furthermore, for a single property, some values may have indices + // (such as the top 5 actors in a film), while others may not (the + // film's supporting cast). Un-indexed values will appear at the end of + // the repeated value list. This field contains the index value only + // when is present in the Knowledge Graph. + Index uint64 `json:"index,omitempty,string"` + + // IntValue: Present when value is int. + IntValue int64 `json:"intValue,omitempty,string"` + + // Lang: Whenever the value is text with TYPE_TEXT, the lang field is + // populated with the III LanguageCode associated with the string_value + // field. + Lang string `json:"lang,omitempty"` + + LatLongValue *FreebaseLatLong `json:"latLongValue,omitempty"` + + MeasurementValue *FreebaseMeasurement `json:"measurementValue,omitempty"` + + // NestedStruct: Populated if this value holds NestedStruct. 'type' + // field needs to be set to TYPE_NESTED_STRUCT. + NestedStruct *FreebaseNestedStruct `json:"nestedStruct,omitempty"` + + // Provenance: Provenance for this value. + Provenance []*StorageGraphBfgTripleProvenance `json:"provenance,omitempty"` + + // RawValue: Similar to string_value/etc but contains raw bytes. + RawValue string `json:"rawValue,omitempty"` + + // StringValue: Present when value is text, enum, + StringValue string `json:"stringValue,omitempty"` + + SubgraphId googleapi.Uint64s `json:"subgraphId,omitempty"` + + // Timestamp: The ISO-8601 timestamp corresponding to when this value + // was created (when it was written to the Knowledge Graph). Deprecated + // in favor of timestamp_usec. + Timestamp string `json:"timestamp,omitempty"` + + // TimestampUsec: The microsecond timestamp corresponding to when this + // value was created. + TimestampUsec int64 `json:"timestampUsec,omitempty,string"` + + // Possible values: + // "TYPE_NULL" - No fields are supplied. + // "TYPE_ID" - id_value contains an Id of a referenced topic. + // "TYPE_TEXT" - For text, string_value contains an UTF-8 string, + // "TYPE_ENUM" - and lang contains the III LanguageCode code. For + // bytes, string_value contains non-UTF-8 bytes. string_value contains + // an enum key string. + // "TYPE_KEY" - string_value contains a namespace key string. + // "TYPE_URI" - string_value contains a URI string. + // "TYPE_DATETIME" - string_value contains a (possibly truncated) + // "TYPE_BOOL" - ISO-8601 datetime string (always UTC relative). + // bool_value contains a bool. + // "TYPE_INT" - int_value contains an int. Uint64 are supported + // "TYPE_FLOAT" - (they are encoded as int64, which looks odd when + // printed, but the representation is correct). float_value contains a + // float. + // "TYPE_COMPOUND" - compound_value contains property/value pairs. + // "TYPE_PROTO" - raw_value contains a raw proto. + // "TYPE_EXTENSION" - This proto has extensions set. + // "TYPE_NESTED_STRUCT" - nested_struct field is populated. + // "TYPE_LAT_LONG" - lat_long_value contains a geopoint. + // "TYPE_MEASUREMENT" - measurement_value contains a measurement. + // "TYPE_HAS_VALUE" - No longer used; pending downstream code cleanup. + // "TYPE_HAS_NO_VALUE" - No longer used; pending downstream code + // cleanup. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BoolValue") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BoolValue") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *FreebaseValue) MarshalJSON() ([]byte, error) { + type NoMethod FreebaseValue + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *FreebaseValue) UnmarshalJSON(data []byte) error { + type NoMethod FreebaseValue + var s1 struct { + FloatValue gensupport.JSONFloat64 `json:"floatValue"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.FloatValue = float64(s1.FloatValue) + return nil +} + +// GDocumentBase: Next id: 127 +type GDocumentBase struct { + // ContentExpiryTime: unix secs from epoch + ContentExpiryTime int64 `json:"ContentExpiryTime,omitempty"` + + // DisplayUrl: Sometimes the URL displayed in search results should be + // different from what gets indexed (e.g. in enterprise, content + // management systems). If this value is not set, we default to the + // regular URL. + DisplayUrl string `json:"DisplayUrl,omitempty"` + + // DocId: 64-bit docid of the document (usually fingerprint of URL, but + // not always). WARNING: This does NOT uniquely identify a document + // ANYMORE. For a unique identifier across all documents in production + // please refer to the field 'id().key()' listed above. + DocId uint64 `json:"DocId,omitempty,string"` + + ExternalFeedMetadata string `json:"ExternalFeedMetadata,omitempty"` + + // ExternalHttpMetadata: Enterprise-specific external metadata. See + // http://engdoc/eng/designdocs/enterprise/enterprise_indexing_metadata.html + ExternalHttpMetadata string `json:"ExternalHttpMetadata,omitempty"` + + // FilterForSafeSearch: Deprecated, do not use, this field is not + // populated since 2012. + FilterForSafeSearch int64 `json:"FilterForSafeSearch,omitempty"` + + // IPAddr: IP addr in binary (allows for IPv6) + IPAddr string `json:"IPAddr,omitempty"` + + NoArchiveReason int64 `json:"NoArchiveReason,omitempty"` + + NoFollowReason int64 `json:"NoFollowReason,omitempty"` + + NoImageIndexReason int64 `json:"NoImageIndexReason,omitempty"` + + NoImageframeOverlayReason int64 `json:"NoImageframeOverlayReason,omitempty"` + + // NoIndexReason: When these reasons are set to a non zero value, the + // document should not be indexed, or show a snippet, or show a cache, + // etc. These reasons are bit maps of + // indexing.converter.RobotsInfo.RobotedReasons enum values reflecting + // the places where the restriction was found. + NoIndexReason int64 `json:"NoIndexReason,omitempty"` + + NoPreviewReason int64 `json:"NoPreviewReason,omitempty"` + + NoSnippetReason int64 `json:"NoSnippetReason,omitempty"` + + NoTranslateReason int64 `json:"NoTranslateReason,omitempty"` + + // Pagerank: Pagerank for doc (if known) + Pagerank int64 `json:"Pagerank,omitempty"` + + // PagerankNS: Pagerank-NearestSeeds is an alternative pagerank score + // for the doc. + PagerankNS int64 `json:"PagerankNS,omitempty"` + + // Repid: is the webmirror representative id of the canonical url. Urls + // with the same repid are considered as dups in webmirror. WARNING: use + // this field with caution! The webmirror duprules change frequently, so + // this value only reflects the duprules at the time when the + // canonical's docjoin is built. + Repid string `json:"Repid,omitempty"` + + // ScienceMetadata: Citation data for science articles. + ScienceMetadata *ScienceCitation `json:"ScienceMetadata,omitempty"` + + // URL: WARNING: the URL does NOT uniquely identify a document ANYMORE. + // For a unique identifier across all documents in production please + // refer to the field 'id().key()' listed above. Reason: foo.bar:/http + // and foo.bar:/http:SMARTPHONE share the same URL, but the body of the + // two documents might differ because of different crawl-context + // (desktop vs. smartphone in this example). + URL string `json:"URL,omitempty"` + + URLAfterRedirects string `json:"URLAfterRedirects,omitempty"` + + // URLEncoding: See webutil/urlencoding + URLEncoding int64 `json:"URLEncoding,omitempty"` + + Content *GDocumentBaseContent `json:"content,omitempty"` + + Directory []*GDocumentBaseDirectory `json:"directory,omitempty"` + + // EcnFp: 96-bit fingerprint of the canonical url's webmirror + // equivalence class name as of when this cdoc was exported. + EcnFp string `json:"ecnFp,omitempty"` + + // Id: The primary identifier of a production document is the document + // key given in the ServingDocumentIdentifier, which is the same as the + // row-key in Alexandria, and represents a URL and its crawling context. + // In your production code, please always assume that the document key + // is the only way to uniquely identify a document. ## Recommended way + // of reading: const string& doc_key = cdoc.doc().id().key(); ## + // CHECK(!doc_key.empty()); More background information can be found in + // google3/indexing/crawler_id/servingdocumentidentifier.proto The + // ServingDocumentIdentifier uniquely identifies a document in serving + // and also distinguishes between experimental vs. production documents. + // The SDI is also used as an input for the union/muppet key generation + // in serving. + Id *IndexingCrawlerIdServingDocumentIdentifier `json:"id,omitempty"` + + // LocalsearchDocInfo: Localsearch-specific data. + LocalsearchDocInfo *LocalsearchDocInfo `json:"localsearchDocInfo,omitempty"` + + // OceanDocInfo: Ocean-specific data. + OceanDocInfo *OceanDocInfo `json:"oceanDocInfo,omitempty"` + + Originalcontent *GDocumentBaseOriginalContent `json:"originalcontent,omitempty"` + + // UserAgentName: The user agent name used to crawl the URL. See + // //crawler/engine/webmirror_user_agents.h for the list of user-agents + // (e.g. crawler::WebmirrorUserAgents::kGoogleBot). NOTE: This field is + // copied from the first WEBMIRROR FetchReplyClientInfo in + // trawler_fetch_info column. We leave this field unpopulated if no + // WEBMIRROR FecthReplyClientInfo is found. As the submission of + // cl/51488336, Alexandria starts to populate this field. However, + // docjoins from freshdocs (or any other source), won't have this field + // populated, because we believe no one needs to read this field from + // freshdocs docjoins. + UserAgentName string `json:"userAgentName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ContentExpiryTime") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ContentExpiryTime") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GDocumentBase) MarshalJSON() ([]byte, error) { + type NoMethod GDocumentBase + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GDocumentBaseContent: Main content section +type GDocumentBaseContent struct { + AuthMethod int64 `json:"AuthMethod,omitempty"` + + // ContentLength: The actual length of the content: If Representation is + // compressed, this equals to Content.UncompressedLength; otherwise it + // is the length of the representation string. + ContentLength int64 `json:"ContentLength,omitempty"` + + // ContentType: See enum ContentType in webutil/http/content-type.proto. + ContentType int64 `json:"ContentType,omitempty"` + + // CrawlTime: Seconds since Unix epoch. + CrawlTime int64 `json:"CrawlTime,omitempty,string"` + + // Encoding: See //depot/google3/i18n/encodings/public/encodings.h + // Encoding of representation + Encoding int64 `json:"Encoding,omitempty"` + + // HasHttpHeader: Set to false if Representation does not contain HTTP + // headers. + HasHttpHeader bool `json:"HasHttpHeader,omitempty"` + + // Language: A Language enum value. See: go/language-enum Default is + // english + Language int64 `json:"Language,omitempty"` + + // OriginalEncoding: If OriginalEncoding is present, the body part of + // the Representation was converted to UTF-8, Encoding was set to UTF8, + // and OriginalEncoding was set to the original encoding before + // conversion. However, the HTTP headers part of the content might not + // be valid UTF-8. -1=an invalid value + OriginalEncoding int64 `json:"OriginalEncoding,omitempty"` + + // Representation: Possibly compressed for old documents. It is not + // compressed for docjoins produced by Raffia after ~2012. + Representation string `json:"Representation,omitempty"` + + // UncompressedLength: Historically present if Representation is + // compressed. + UncompressedLength int64 `json:"UncompressedLength,omitempty"` + + // VisualType: Whether the content was visual right-to-left, and if so, + // what type of visual document it is. Must be one of the values in enum + // VisualType from google3/repository/rtl/visualtype.h Default is + // NOT_VISUAL_DOCUMENT. See http://wiki/Main/RtlLanguages for + // background. + VisualType int64 `json:"VisualType,omitempty"` + + // CrawledFileSize: Crawled file size of the original document. + CrawledFileSize int64 `json:"crawledFileSize,omitempty"` + + // EncodedGeometryAnnotations: GeometryAnnotations, encoded with + // GeometryUtil::DeltaEncode() to reduce disk space usage. Use + // GeometryUtil::DeltaDecode() to decode this field. + EncodedGeometryAnnotations string `json:"encodedGeometryAnnotations,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AuthMethod") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AuthMethod") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GDocumentBaseContent) MarshalJSON() ([]byte, error) { + type NoMethod GDocumentBaseContent + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GDocumentBaseDirectory: 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. +type GDocumentBaseDirectory struct { + // Category: encoded in UTF8 + Category string `json:"Category,omitempty"` + + // Description: encoded in UTF8 + Description string `json:"Description,omitempty"` + + DescriptionScore float64 `json:"DescriptionScore,omitempty"` + + // Identifier: "gwd", etc. + Identifier string `json:"Identifier,omitempty"` + + // Language: go/language-enum + Language int64 `json:"Language,omitempty"` + + // Title: encoded in UTF8 + Title string `json:"Title,omitempty"` + + // TitleScore: Deprecated; do not use. There is no code populating these + // fields as of Oct 2017. + TitleScore float64 `json:"TitleScore,omitempty"` + + URL string `json:"URL,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Category") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Category") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GDocumentBaseDirectory) MarshalJSON() ([]byte, error) { + type NoMethod GDocumentBaseDirectory + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GDocumentBaseDirectory) UnmarshalJSON(data []byte) error { + type NoMethod GDocumentBaseDirectory + var s1 struct { + DescriptionScore gensupport.JSONFloat64 `json:"DescriptionScore"` + TitleScore gensupport.JSONFloat64 `json:"TitleScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.DescriptionScore = float64(s1.DescriptionScore) + s.TitleScore = float64(s1.TitleScore) + return nil +} + +// GDocumentBaseOriginalContent: 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. +type GDocumentBaseOriginalContent struct { + Representation string `json:"Representation,omitempty"` + + // UncompressedLength: present iff rep is compressed + UncompressedLength int64 `json:"UncompressedLength,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Representation") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Representation") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GDocumentBaseOriginalContent) MarshalJSON() ([]byte, error) { + type NoMethod GDocumentBaseOriginalContent + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GenericSnippetResponse: The generic version of a snippet response +type GenericSnippetResponse struct { + // DebugInfo: Per-doc debug information. + DebugInfo []string `json:"debugInfo,omitempty"` + + // Info: Servlet-specific response info. + Info *Proto2BridgeMessageSet `json:"info,omitempty"` + + // Snippet: Lines of the snippet HTML. Typically gws concatenates these + // and lets the browser wrap. The values include trailing spaces, so + // inserting additional spaces is not necessary. However, for very old + // browsers, gws may insert break tags after each snippet line. This + // field is confusing and poorly named; "snippet_line" would be better. + // In particular, note that this does not return multiple snippets for a + // result. Nor are these fields the individual tidbits of the snippet. + Snippet []string `json:"snippet,omitempty"` + + // Title: The title HTML. It may contain tags to denote query term + // matches. It may be already truncated and "..." is put instead (note + // that truncation does not always happen at the very end of the title + // text). However the existence of "..." does not guarantee that the + // snippet generation algorithm truncated it; e.g. webmasters themselves + // can write "...". + Title string `json:"title,omitempty"` + + // WwwSnippetResponse: Snippet-specific members (tag ids 16+, must be + // optional!) Example: optional NewContentResponse new_response; + WwwSnippetResponse *WWWSnippetResponse `json:"wwwSnippetResponse,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DebugInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DebugInfo") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GenericSnippetResponse) MarshalJSON() ([]byte, error) { + type NoMethod GenericSnippetResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeoOndemandAssistantSupportedActions: Actions supported by Madden for +// a local entity. +type GeoOndemandAssistantSupportedActions struct { + // AllowsGuestCheckout: Whether this local entity allows guest checkout + // for reservations. + AllowsGuestCheckout bool `json:"allowsGuestCheckout,omitempty"` + + // IsAsynchronousRestaurantReservation: Whether or not this local entity + // supports asynchronous restaurant reservations, through the above + // restaurant_reservation_url. + IsAsynchronousRestaurantReservation bool `json:"isAsynchronousRestaurantReservation,omitempty"` + + // RestaurantReservationUrl: URL for the Madden restaurant reservation + // flow, e.g. for display in a WebView. Not populated if restaurant + // reservations are not supported for the local entity. + RestaurantReservationUrl string `json:"restaurantReservationUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AllowsGuestCheckout") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AllowsGuestCheckout") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeoOndemandAssistantSupportedActions) MarshalJSON() ([]byte, error) { + type NoMethod GeoOndemandAssistantSupportedActions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAccessPointProto: 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 +type GeostoreAccessPointProto struct { + // CanEnter: RESERVED + CanEnter bool `json:"canEnter,omitempty"` + + // CanExit: RESERVED + CanExit bool `json:"canExit,omitempty"` + + // FeatureId: The ID of the feature that defines the access point. The + // bounding box of the feature is expanded to include the bounding box + // of the feature with the access point in accordance with the standard + // practice for bucketing map/reduce operations. See the wiki page at + // http://wiki/Main/OysterBucketingMapReduce for more information. For + // access points to TYPE_SEGMENT features, this may be re-derived if + // necessary by looking up the nearest segment to existing geometry. + FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"` + + // FeatureType: The type of the feature. Required, to allow handling the + // access point differently based on feature type. For access points to + // non-TYPE_SEGMENT features, this cached type also makes things easier + // for clients that aren't running a bucketing map-reduce. For access + // points to TYPE_SEGMENT features, this is used to find to find the + // nearest segment of the given type. + FeatureType int64 `json:"featureType,omitempty"` + + // LevelFeatureId: For indoor access points, this should be set to the + // level that the access point is on. The feature_id should point to the + // indoor segment, but when it is missing or invalid, and we need to + // derive it from geometry, only segments on this level will be + // considered. For non-indoor access points, level should remain unset, + // and when we derive feature_id from geometry, only segments not on any + // level (non-indoor segments) will be considered. The bounding box of + // the level feature is expanded to include the bounding box of the + // feature with the access point in accordance with the standard + // practice for bucketing map/reduce operations. See the wiki page at + // http://wiki/Main/OysterBucketingMapReduce for more information. + // (Though in general the feature should reside on the level already + // anyway..) + LevelFeatureId *GeostoreFeatureIdProto `json:"levelFeatureId,omitempty"` + + // Metadata: Field-level metadata for this access point. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Point: For access points to non-TYPE_SEGMENT features, the location + // of the access point. For access points to TYPE_SEGMENT features, this + // can be supplied as a fuzzy access point that is not guaranteed to be + // on the correct side of road. It should not be used by end clients in + // case of TYPE_SEGMENT access points. + Point *GeostorePointProto `json:"point,omitempty"` + + // PointOffSegment: If the access point is defined by a TYPE_SEGMENT + // feature, this is the location of the access point displaced slightly + // to the correct side of the segment. This offset is in a direction + // perpendicular to the direction of travel along the segment. The + // actual offset distance is unspecified. It would typically be + // relatively small (approximately 1 meter). You can subtract the "off + // segment" point from the "on segment" point to get a vector of unknown + // length pointing from "on segment" point to the "off segment" point. + // You can then scale that vector to whatever length you want. Note that + // extending this displacement vector a large distance (10s of meters) + // may result in a new point that is in the middle of some other feature + // (park, street, intersection). This is the preferred basic geometry + // field for incoming data from editing clients and importers, if + // side-of-road is well-established. + PointOffSegment *GeostorePointProto `json:"pointOffSegment,omitempty"` + + // PointOnSegment: If the access point is defined by a TYPE_SEGMENT + // feature, this is the point on the centerline of the segment that is + // closest to the actual access point. May be re-derived if necessary to + // maintain precise placement on segment. + PointOnSegment *GeostorePointProto `json:"pointOnSegment,omitempty"` + + // Priority: + // LINT.ThenChange(//depot/google3/geostore/cleanup/callbacks/\ + // ID_DUPLICATE_ACCESS_POINT.cc) + // + // Possible values: + // "TYPE_PRIMARY" + // "TYPE_SECONDARY" + Priority string `json:"priority,omitempty"` + + // SegmentPosition: If the access point is defined by a TYPE_SEGMENT + // feature, this is the location of the access point expressed as a + // fractional distance along the segment. The value runs from 0 to 1 + // inclusive. May be re-derived if necessary to maintain precise + // placement on segment. + SegmentPosition float64 `json:"segmentPosition,omitempty"` + + // UnsuitableTravelMode: This list represents the travel modes for which + // this access-point should be avoided. If this list is empty, the + // access-point is suitable for any travel mode. If all access points + // are unsuitable for the current travel mode, client should revert to + // other heuristics (e.g. feature center). This is only used for access + // points to TYPE_SEGMENT features; access points to non-TYPE_SEGMENT + // features, e.g. TYPE_ESTABLISHMENT_POI features with + // gcid:transit_station GConcepts are just identified by feature_type + // and feature_id. + // + // Possible values: + // "TRAVEL_MODE_MOTOR_VEHICLE" + // "TRAVEL_MODE_AUTO" + // "TRAVEL_MODE_TWO_WHEELER" + // "TRAVEL_MODE_BICYCLE" + // "TRAVEL_MODE_PEDESTRIAN" + // "TRAVEL_MODE_PUBLIC_TRANSIT" + UnsuitableTravelMode []string `json:"unsuitableTravelMode,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CanEnter") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CanEnter") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAccessPointProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAccessPointProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreAccessPointProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreAccessPointProto + var s1 struct { + SegmentPosition gensupport.JSONFloat64 `json:"segmentPosition"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.SegmentPosition = float64(s1.SegmentPosition) + return nil +} + +// GeostoreAddressComponentProto: 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/addresscomponent.cc +type GeostoreAddressComponentProto struct { + // FeatureId: The id of the corresponding Feature, if such a feature is + // defined. As discussed above for feature_type, components of + // TYPE_FEATURE or TYPE_LANDMARK may have a corresponding feature id. + FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"` + + // FeatureType: For components of TYPE_FEATURE or TYPE_LANDMARK, this is + // the feature type (TYPE_COUNTRY, TYPE_LOCALITY, TYPE_ESTABLISHMENT_POI + // etc.). Note that some features may not actually exist in the geostore + // (e.g. a village that we've never heard of), in which case the + // feature_id will be missing but the feature_type is still specified. + // Please refer to IsValidAddressComponentFeatureType() in + // google3/geostore/base/public/addresscomponent.h for the definitive + // list of feature types allowed for the type (either TYPE_FEATURE or + // TYPE_LANDMARK) of components. + FeatureType int64 `json:"featureType,omitempty"` + + // Index: The order of this address component relative to the ones that + // share the same feature_type in the AddressProto. For now, the primary + // use of this index field is to handle ordering issue of multiple + // occurrences of AddressComponentProto with feature_type of TYPE_ROUTE + // (and subtypes), or TYPE_POLITICAL, where the order of the address + // components matters as there are dependences. 0 is the smallest valid + // index value, representing the most specific address component. Index + // value of 1 represents a relatively less specific address component of + // the same feature_type on which the 0-indexed address component + // depends. + Index int64 `json:"index,omitempty"` + + // ParsedName: The parsed_name field contains one or more names of an + // address component. Its actual contents depends on where in the + // Geo/Google stack you are reading a feature: 1. When an address is + // initially parsed via a feed or other raw input and structured as an + // AddressProto, parsed_name should contain the set of names that + // corresponds to the (possibly normalized) raw text from the raw input. + // In MapFacts, the address component may be linked to an actual feature + // via feature_id. Any address formatting directly from MapFacts should + // follow links to retrieve names when possible. The parsed_name + // contents may be formatted directly if the address component is + // unlinked following the same rules as selecting and formatting the + // name of a feature. The cached parsed_name is regularly refreshed from + // the linked feature with the minimal set of names for address + // components (usually just a single, preferred name, in the local + // language). 2. In serving systems, the names of linked features may be + // denormalized into the parsed_name field to facilitate quicker address + // formatting or for simple data filtering (e.g. finding all geocodes in + // California by name). If reading a feature from such a system, the + // parsed_name field could contain multiple names in multiple languages + // that reflect a cached copy of the names associated with the linked + // features. Formatting of such names should follow the same rules as + // selecting and formatting the name of a feature itself. + ParsedName []*GeostoreNameProto `json:"parsedName,omitempty"` + + // Range: Any numerical address component may optionally be specified as + // a range. For example if a component of TYPE_STREET_NUMBER has the + // optional "range" attribute, then it represents a range of addresses + // rather than a single address (see AddressRangeProto for details). + Range *GeostoreAddressRangeProto `json:"range,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to an + // address component. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // TextAffix: Additional text to append before and/or after the + // parsed_name, when the address is formatted. Multiple instance should + // represent translations. Currently, this is only permitted on + // TYPE_LANDMARK components, and only one instance is permitted. + TextAffix []*GeostoreTextAffixProto `json:"textAffix,omitempty"` + + // Type: Every address component has a type. Most address components + // correspond to one of the feature types defined in FeatureProto, so + // rather than defining a separate category system here, instead we mark + // them as TYPE_FEATURE and store the FeatureProto type in the + // feature_type() field. This is how we handle countries, cities, + // streets, etc. However, there are a few types of address components + // that do not have a corresponding feature type (e.g. PO boxes). These + // components have their type defined here. An address component of + // TYPE_STREET_NUMBER may correspond to a physical entity that defines a + // street number, such as a geocoded address or a land parcel. In this + // case, the address component may have a link to the corresponding + // feature. A good reference for what types of address components are + // possible is the xAL standard, which is a published XML schema: + // http://www.oasis-open.org/committees/ciq/download.shtml. This + // standard is the basis of the PostalAddress protocol message. + // + // Possible values: + // "TYPE_FEATURE" + // "TYPE_POSTAL_CODE_SUFFIX" - Address contains a suffix that refines + // the postal code in this address (e.g. the '+4' portion of a US '5+4' + // zip code). Postal code suffixes do not point to features. + // "TYPE_POST_BOX" + // "TYPE_STREET_NUMBER" + // "TYPE_FLOOR" - DEPRECATED, use TYPE_FEATURE/TYPE_LEVEL + // "TYPE_ROOM" - DEPRECATED, use TYPE_FEATURE/TYPE_COMPOUND_SECTION + // "TYPE_HOUSE_ID" - A building number unique relative to some + // political feature. + // "TYPE_DISTANCE_MARKER" - A component corresponding to a marker for + // the approximate distance of the address along the route. Distance + // markers do not point to features and must have a single name that + // corresponds to the distance measured along the route in the standard + // units of the locale in which the address is contained (units + // themselves omitted from the name). The name must be a canonical + // floating point number in the feature's locale. E.g. in the US, the + // name representing 1000.5 must be '1,000.5'. Trailing zeros after the + // decimal and superfluous zeros preceding the number are forbidden. + // "TYPE_LANDMARK" - A component representing a reference to some + // nearby landmark, to aid navigation. Landmark components are + // distinguished by the fact that they have additional text to relate + // the feature with this address, for example "near" or "opposite". This + // text is stored in the affix field. Landmark components may point to + // features, but are not required to. + // "TYPE_PLUS_CODE" - Plus codes (go/pluscodes) are short, user + // readable encodings of latitude and longitude, that are intended as a + // substitute for street addresses where these do not exist or are not + // commonly used. Used when the physical address of the feature contains + // a local plus code, e.g.'PXX7+RW' in 'PXX7+RW Damaturu, Nigeria'. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FeatureId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FeatureId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAddressComponentProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAddressComponentProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAddressLinesProto: Represents the unparsed portion of an +// address with an associated language. +type GeostoreAddressLinesProto struct { + // Language: The external form of a Google International Identifiers + // Initiative (III) LanguageCode object. See + // google3/i18n/identifiers/languagecode.h for details. We place extra + // restrictions on languages in addition to what the III library + // requires. See + // http://go/geo-schema-reference/feature-properties/languages.md + Language string `json:"language,omitempty"` + + // Line: These lines are in display order. + Line []string `json:"line,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Language") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Language") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAddressLinesProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAddressLinesProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAddressProto: 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. +type GeostoreAddressProto struct { + // AddressLines: The unparsed portion (lines) of the address. An address + // can have multiple unparsed portions. Multiple unparsed portions + // sharing the same language should be modeled as one address_lines + // instance having multiple lines. Historically, we also supported + // uparsed portions in different languages, but we no longer do. + // Consequently, only one value is allowed for this field despite the + // fact that it is repeated. See go/address-lines-multi-language for + // information about why we made this change. If any components are + // filled in, this is supplemental to (i.e. disjoint from) them. + // Furthermore, this must be the most specific portion of the address + // (except for the portion, if any, stored in the name field of + // feature.proto). Unparsed lines are always formatted together in a + // block. Other address components are never formatted between the + // address lines. This doesn't imply that the address lines are always + // either the first or the last part of the formatted output. + AddressLines []*GeostoreAddressLinesProto `json:"addressLines,omitempty"` + + // Component: A list of parsed address components, e.g. the street, + // city, etc. An address range is one type of component. + Component []*GeostoreAddressComponentProto `json:"component,omitempty"` + + // CrossStreet: ** DEPRECATED ** This field is now deprecated (see + // b/33268032). If you want to store cross street information as part of + // an address, use the address_lines field. + CrossStreet []*GeostoreAddressComponentProto `json:"crossStreet,omitempty"` + + // Metadata: Field-level metadata for this address. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // PartialDenormalization: reserved + PartialDenormalization *GeostoreAddressProto `json:"partialDenormalization,omitempty"` + + // TemplateId: The opaque ID of the address template that contains rules + // for structuring this address. The id of the address template can be + // retrieved using + // google3/geostore/address_templates/public/address_templates.h + TemplateId string `json:"templateId,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to an + // address. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AddressLines") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AddressLines") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAddressProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAddressProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAddressRangeProto: 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/addressrange.cc +type GeostoreAddressRangeProto struct { + // Number: Two or more address numbers. Each number represents an + // address that was mentioned by the data provider. + Number []int64 `json:"number,omitempty"` + + // Parameter: For address range definitions: Two or more interpolation + // parameter values. The length of this array must match the length of + // the number array, and each parameter number specifies the position of + // the corresponding address number. Each value is an interpolation + // between 0.0 and 1.0 inclusive. The value is proportional to the + // distance traveled along the segment's polyline starting at its + // origin. The parameters must be provided in increasing order and the + // values in the number array must be in strictly increasing or + // decreasing order. We make an exception for singleton addresses, which + // are represented as two copies of a (number, parameter) pair, for + // backwards compatibility. For address range references: This array + // must be empty. + Parameter []float64 `json:"parameter,omitempty"` + + // Prefix: If specified, the prefix or suffix is applied to all numbers + // in the range. For example, this can be used to indicate that + // addresses B1 through B99 are on one side of the street, while A1 + // through A99 are on the other side of the street. + Prefix string `json:"prefix,omitempty"` + + // SameParity: If 'same_parity' is true, then all 'number' values must + // have the same parity (even or odd), and this address range only + // includes addresses whose parity is the same as the given 'number' + // values. + SameParity bool `json:"sameParity,omitempty"` + + Suffix string `json:"suffix,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to an + // address range. Never set in MapFacts. Here are some examples: Example + // #1: Single non-numeric address (e.g., "Twelve") At the moment this + // can only be represented as a street number (with the value in the + // parsed_name field of the AddressComponentProto). We have future plans + // to make other changes so we can handle this case. Example #2: Single + // semi-numeric address (e.g., "12bis") The number array contains two + // copies of the single numeric value (12). The prefix is empty and the + // suffix contains "bis". The parameter array has two identical values + // specifying the position of the single address. Example #3: Simple + // address range (e.g., "100 to 198, even numbers only") The number + // array contains the two values "100" and "198". The prefix and suffix + // strings are empty in this example. The parameter array has two + // values, one for each number. The same_parity flag is set in this + // example. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Number") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Number") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAddressRangeProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAddressRangeProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAnchoredGeometryProto: A feature’s geometry that is +// populated from the 3D Geometry Store. Please see go/a3d-and-mapfacts +// for design details. +type GeostoreAnchoredGeometryProto struct { + // GeometryId: The ID to be used to fetch the feature’s geometry from + // the 3D Geometry Store. + GeometryId string `json:"geometryId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GeometryId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GeometryId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAnchoredGeometryProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAnchoredGeometryProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAppliedSpeedLimitProto: A container for speed limits that +// allows tagging with a correctness trust level. +type GeostoreAppliedSpeedLimitProto struct { + // SpeedLimit: The actual speed limit value. + SpeedLimit *GeostoreSpeedLimitProto `json:"speedLimit,omitempty"` + + // TrustLevel: The level of trust we have in this speed limit value. + // + // Possible values: + // "SPEED_LIMIT_TRUST_LEVEL_UNKNOWN" - Default proto value, this value + // will never be set in MapFacts. + // "LOW_QUALITY" - This speed limit is set, but may be completely + // wrong and potential users should consult external quality metrics + // before deciding whether to use it. + // "HIGH_QUALITY" - We have high confidence that this is the correct + // speed limit, and that it's good enough to be shown to users. However, + // we are not completely confident the value is correct. + // "EXACT" - We are certain that this is the correct speed limit. + TrustLevel string `json:"trustLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "SpeedLimit") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SpeedLimit") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAppliedSpeedLimitProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAppliedSpeedLimitProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAttachmentsAttachmentProto: 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. +type GeostoreAttachmentsAttachmentProto struct { + // AttachmentId: attachment_id distinguishes messages of the same + // type_id associated with the same feature. It can not be set to 0x0. + AttachmentId uint64 `json:"attachmentId,omitempty,string"` + + // ClientNameSpace: This field specifies a namespace identifier that can + // be used to track the sources of attachments in a human friendly + // format. Name spaces must be at most 64 characters long and must be + // composed entirely of alphanumeric characters, hyphens, and + // underscores. No other characters are allowed. + ClientNameSpace string `json:"clientNameSpace,omitempty"` + + // Comment: comment is a human-readable string that is logged whenever + // this attachment is processed by the framework. + Comment string `json:"comment,omitempty"` + + // Messages: messages contains the structured data for this attachment. + // It should contain a single message with a type ID matching the value + // of the type_id field below. + Messages *Proto2BridgeMessageSet `json:"messages,omitempty"` + + // TypeId: type_id determines the type of the actual attachment that + // should be set in the messages MessageSet. It can not be set to 0x0. + TypeId uint64 `json:"typeId,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "AttachmentId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AttachmentId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAttachmentsAttachmentProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAttachmentsAttachmentProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAttributeIdProto: Used to represent the unique id of an +// attribute. +type GeostoreAttributeIdProto struct { + // Id: The id of the attribute. Stored as a stripped format of the gcid + // (e.g. "foo" instead of "gcid:att_foo"). + Id string `json:"id,omitempty"` + + // ProviderId: Set because it's required, but not really meaningful in + // geostore (always set to "Geo"). + ProviderId string `json:"providerId,omitempty"` + + // Possible values: + // "ITEMCLASS" - deprecated + // "ATTRIBUTE" + // "VALUESPACE" - deprecated + // "DATASTORE" - deprecated + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAttributeIdProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAttributeIdProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreAttributeProto: 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. +type GeostoreAttributeProto struct { + ApplicationData *Proto2BridgeMessageSet `json:"applicationData,omitempty"` + + AttributeDisplay []*GeostoreAttributeValueDisplayProto `json:"attributeDisplay,omitempty"` + + BooleanValue bool `json:"booleanValue,omitempty"` + + // CanonicalAttributeId: The canonical attribute for this attribute + // instance. + CanonicalAttributeId *GeostoreAttributeIdProto `json:"canonicalAttributeId,omitempty"` + + DoubleValue float64 `json:"doubleValue,omitempty"` + + // EnumIdValue: For those attribute ids that expect their values to be + // taken from an enumeration-style set of values, that value's gcid + // should be stored here, e.g. "gcid:attval_yes". + EnumIdValue string `json:"enumIdValue,omitempty"` + + FloatValue float64 `json:"floatValue,omitempty"` + + Int64Value int64 `json:"int64Value,omitempty,string"` + + IntegerValue int64 `json:"integerValue,omitempty"` + + ItemClassId *GeostoreAttributeIdProto `json:"itemClassId,omitempty"` + + // Metadata: Field-level metadata for this attribute + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // ProtoValue: Fully qualified package name because genprotohdf uses + // genproto for this proto2 syntax: + // https://wiki.corp.google.com/twiki/bin/view/Main/Proto2WithGenproto + ProtoValue *Proto2BridgeMessageSet `json:"protoValue,omitempty"` + + // StringValue: The attribute value falls into one of these fields, + // based on value_type: + StringValue string `json:"stringValue,omitempty"` + + Uint32Value int64 `json:"uint32Value,omitempty"` + + // ValueDisplay: Used to store language-specific names of this + // attribute's value (e.g. a translation into another language). + ValueDisplay []*GeostoreAttributeValueDisplayProto `json:"valueDisplay,omitempty"` + + ValueSpaceId *GeostoreAttributeIdProto `json:"valueSpaceId,omitempty"` + + // Possible values: + // "NONE" + // "STRING" + // "INTEGER" + // "DOUBLE" + // "BOOLEAN" + // "PROTO_VALUE" + // "INT64" + // "FLOAT" + // "DISPLAY_ONLY" + // "UINT32" + // "ENUM_ID" - The value comes from an enumerated attribute + // valuespace. + ValueType string `json:"valueType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ApplicationData") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ApplicationData") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAttributeProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAttributeProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreAttributeProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreAttributeProto + var s1 struct { + DoubleValue gensupport.JSONFloat64 `json:"doubleValue"` + FloatValue gensupport.JSONFloat64 `json:"floatValue"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.DoubleValue = float64(s1.DoubleValue) + s.FloatValue = float64(s1.FloatValue) + return nil +} + +// GeostoreAttributeValueDisplayProto: Used to help display +// language-specific names of attributes. +type GeostoreAttributeValueDisplayProto struct { + Language string `json:"language,omitempty"` + + Synonym string `json:"synonym,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Language") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Language") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreAttributeValueDisplayProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreAttributeValueDisplayProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreBarrierLogicalMaterialProto struct { + // Possible values: + // "UNKNOWN_LOGICAL_MATERIAL" + // "CONCRETE" + // "METAL" + // "PLASTIC" + // "STONE" + // "TIMBER" + Material []string `json:"material,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Material") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Material") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreBarrierLogicalMaterialProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreBarrierLogicalMaterialProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreBestLocaleProto: 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. +type GeostoreBestLocaleProto struct { + // Locale: The ID of the best-match TYPE_LOCALE feature for this + // feature. + Locale *GeostoreFeatureIdProto `json:"locale,omitempty"` + + // LocalizationPolicyId: The ID of the localization policy to apply when + // selecting a name for a feature. This field should always be set. If + // feature_id is also defined, this field should have the same + // localization policy ID as the referenced locale feature. Localization + // policy IDs are arbitrary identifiers (up to some number of bytes; see + // geostore/base/public/constants.h) that uniquely distinguish a set of + // language-selection rules. + LocalizationPolicyId string `json:"localizationPolicyId,omitempty"` + + // Metadata: Field-level metadata for this best locale. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Locale") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Locale") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreBestLocaleProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreBestLocaleProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreBizBuilderReferenceProto: The reference to a BizBuilder +// listing. For details on BizBuilder see +// http://g3doc/commerce/bizbuilder/backend/g3doc/index.md +type GeostoreBizBuilderReferenceProto struct { + // Id: Listing id. Used in queries to BizBuilder backend for listing + // access. + Id int64 `json:"id,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreBizBuilderReferenceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreBizBuilderReferenceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreBorderProto: 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. +type GeostoreBorderProto struct { + // FeatureIdLeft: The ids of the area features to the left and right of + // the border, relative to the start and end of this borders' polyline + // geometry. These features should have the same type as the "type" + // attribute above. These ids are not required because the corresponding + // features may be nonexistent or difficult to obtain. + FeatureIdLeft *GeostoreFeatureIdProto `json:"featureIdLeft,omitempty"` + + FeatureIdRight *GeostoreFeatureIdProto `json:"featureIdRight,omitempty"` + + // LogicalBorder: The logical borders which this border is a part of. + LogicalBorder []*GeostoreFeatureIdProto `json:"logicalBorder,omitempty"` + + // OverrideStatus: List of border status overrides. Due to legal + // reasons, we may be required to display some borders differently on + // some domains for instance. + OverrideStatus []*GeostoreOverrideBorderStatusProto `json:"overrideStatus,omitempty"` + + // Status: The border status identifies the legal status of the border + // line. + // + // Possible values: + // "STATUS_NORMAL" - Most border lines have this status, which + // typically means both parties agree on the location of the line. These + // might be called "de jure" borders. + // "STATUS_DISPUTED" - This status is used when the two parties + // disagree on the location of the line. There can be multiple border + // lines in a given disputed area. One might be the line proposed by + // country "A" and another the line proposed by country "B". A third + // line might mark the de facto line of control. Other border lines + // might indicate historical borders, e.g., "1949 Armistice Line". + // "STATUS_UNSURVEYED" - This is used for one section of border + // between Argentina and Chile. Both parties agree that a border line + // exists somewhere on the glacier, but the exact location has not been + // determined. + // "STATUS_INTERNATIONAL_WATER" - This is a border line between a + // country and international water. + // "STATUS_NEVER_DISPLAY" - This status is only used for the borders + // that should never display to users. Typically it is for the borders + // that we don't want to represent but that we would still like to use + // to model country boundaries, e.g. Hong Kong and Macau. + // "STATUS_TREATY" - This is used for borders that refer to + // well-defined boundaries which have been established by a specific + // treaty, agreement, armistice or other such agreement between two or + // more parties, yet the position and/or status is not considered to be + // legal and final (e.g., the final demarcation of the exact position + // has not occurred or the final political status is not resolved). + // "STATUS_PROVISIONAL" - This is used for borders for which a formal + // agreement has not been established between the parties involved, yet + // the existing line acts as a de facto functional border without + // existence of any dispute. + // "STATUS_NO_LABEL" - This is used for borders which should not have + // country labels to either side, but should otherwise be styled the + // same as a border with STATUS_NORMAL. This is typically for borders + // which are not themselves disputed but still form part of the boundary + // around a disputed area that is not otherwise modeled or labeled as a + // country, or as an override where we are obligated to remove labels + // for region specific versions of Maps. + Status string `json:"status,omitempty"` + + // Type: The type of the features this border separates. Should always + // be a subtype of TYPE_POLITICAL. NOTE: as of December 2019, we + // currently require this to be equal to TYPE_COUNTRY or + // TYPE_ADMINISTRATIVE_AREA1. In the future, we may support TYPE_BORDER + // for lower types of political features. + Type int64 `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FeatureIdLeft") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FeatureIdLeft") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreBorderProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreBorderProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreBoundingMarkerProto struct { + // BoundingMarker: References to any gcid:physical_lane_marker features + // that bound this lane or lane connection. + BoundingMarker *GeostoreFeatureIdProto `json:"boundingMarker,omitempty"` + + // BoundingMarkerToken: A token that can be used to identify the version + // of the data about this bounding marker. + BoundingMarkerToken string `json:"boundingMarkerToken,omitempty"` + + // FlowlineAdjacencyBeginFraction: Which part of the flowline does this + // association refer to? These should be between 0 and 1. These are + // optionally set, but can be approximated geometrically if they + // aren’t set. NOTE: These refer to the geometry of this feature. + FlowlineAdjacencyBeginFraction float64 `json:"flowlineAdjacencyBeginFraction,omitempty"` + + FlowlineAdjacencyEndFraction float64 `json:"flowlineAdjacencyEndFraction,omitempty"` + + // MarkerAdjacencyBeginFraction: Which part of the marker track does + // this association refer to? These should be between 0 and 1. These are + // optionally set, but can be approximated geometrically if they + // aren’t set. NOTE: These refer to the geometry of the marker + // feature. + MarkerAdjacencyBeginFraction float64 `json:"markerAdjacencyBeginFraction,omitempty"` + + MarkerAdjacencyEndFraction float64 `json:"markerAdjacencyEndFraction,omitempty"` + + // Side: Which side of the flowline does the marker occur on. + // + // Possible values: + // "UNKNOWN" + // "LEFT" + // "RIGHT" + Side string `json:"side,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BoundingMarker") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BoundingMarker") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreBoundingMarkerProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreBoundingMarkerProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreBoundingMarkerProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreBoundingMarkerProto + var s1 struct { + FlowlineAdjacencyBeginFraction gensupport.JSONFloat64 `json:"flowlineAdjacencyBeginFraction"` + FlowlineAdjacencyEndFraction gensupport.JSONFloat64 `json:"flowlineAdjacencyEndFraction"` + MarkerAdjacencyBeginFraction gensupport.JSONFloat64 `json:"markerAdjacencyBeginFraction"` + MarkerAdjacencyEndFraction gensupport.JSONFloat64 `json:"markerAdjacencyEndFraction"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.FlowlineAdjacencyBeginFraction = float64(s1.FlowlineAdjacencyBeginFraction) + s.FlowlineAdjacencyEndFraction = float64(s1.FlowlineAdjacencyEndFraction) + s.MarkerAdjacencyBeginFraction = float64(s1.MarkerAdjacencyBeginFraction) + s.MarkerAdjacencyEndFraction = float64(s1.MarkerAdjacencyEndFraction) + return nil +} + +// GeostoreBuildingProto: This protocol buffer holds the +// building-specific attributes for features of type +// TYPE_COMPOUND_BUILDING. +type GeostoreBuildingProto struct { + // BaseHeightMetersAgl: The height of the base of this building, in + // meters above ground-level, if known. + BaseHeightMetersAgl float64 `json:"baseHeightMetersAgl,omitempty"` + + // DefaultDisplayLevel: The level in this building that should get + // displayed by default. If present, the default display level must be + // one of this building's levels that are listed in the level[] field, + // and if a level is set as a default level of one building, all + // buildings sharing the level should have that same level as their + // default level. If not present, clients should not display any level + // by default for that building. + DefaultDisplayLevel *GeostoreFeatureIdProto `json:"defaultDisplayLevel,omitempty"` + + // Floors: The number of floors above the base of the building, if + // known. For example a regular 1-story building would set this to "1". + // Use a value of GeostoreConstants::kDefaultHeightPerFloor when + // converting "floors" to "height_meters". + Floors int64 `json:"floors,omitempty"` + + FloorsMetadata *GeostoreFieldMetadataProto `json:"floorsMetadata,omitempty"` + + // HeightMeters: The height of the building above its base, in meters, + // if known. + HeightMeters float64 `json:"heightMeters,omitempty"` + + HeightMetersMetadata *GeostoreFieldMetadataProto `json:"heightMetersMetadata,omitempty"` + + // Level: The levels in this building, in no particular order. These + // levels refer back to the building via another strong reference (the + // LevelProto.building field). + Level []*GeostoreFeatureIdProto `json:"level,omitempty"` + + // Structure: "Structure" denotes a physical architecture of the + // building that is readily visible. This attribute is useful in that + // rarer structures can make good landmarks. + // + // Possible values: + // "STRUCTURE_ANY" - ABSTRACT + // "STRUCTURE_TOWER" - The root of all structure categories. Not a + // meaningful value and should never be set on any feature. + // "STRUCTURE_DOME" + // "STRUCTURE_CASTLE" + // "STRUCTURE_SHRINE" + // "STRUCTURE_TEMPLE" + // "STRUCTURE_TANK" + Structure string `json:"structure,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BaseHeightMetersAgl") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BaseHeightMetersAgl") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreBuildingProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreBuildingProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreBuildingProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreBuildingProto + var s1 struct { + BaseHeightMetersAgl gensupport.JSONFloat64 `json:"baseHeightMetersAgl"` + HeightMeters gensupport.JSONFloat64 `json:"heightMeters"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.BaseHeightMetersAgl = float64(s1.BaseHeightMetersAgl) + s.HeightMeters = float64(s1.HeightMeters) + return nil +} + +// GeostoreBusinessChainProto: This holds data specific to business +// chain features. +type GeostoreBusinessChainProto struct { + // CanonicalGconcepts: Canonical GConcepts describe the ideal state of + // the GConcepts of this business chain's members. + CanonicalGconcepts []*GeostoreCanonicalGConceptProto `json:"canonicalGconcepts,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CanonicalGconcepts") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CanonicalGconcepts") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreBusinessChainProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreBusinessChainProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreBusinessHoursProto: 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. +type GeostoreBusinessHoursProto struct { + // Data: The actual hours represented by this BusinessHoursProto. + Data *BusinessHours `json:"data,omitempty"` + + // Metadata: Field-level metadata for these hours. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Data") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Data") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreBusinessHoursProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreBusinessHoursProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreCallToActionProto: Message containing calls to action +// specified by the business owner. +type GeostoreCallToActionProto struct { + // CtaType: Required. + // + // Possible values: + // "CTA_TYPE_UNSPECIFIED" + // "CTA_TYPE_BOOK" + // "CTA_TYPE_BUY" + // "CTA_TYPE_ORDER_ONLINE" + // "CTA_TYPE_LEARN_MORE" + // "CTA_TYPE_SIGN_UP" + // "CTA_TYPE_GET_OFFER" + CtaType string `json:"ctaType,omitempty"` + + Url *GeostoreUrlProto `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CtaType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CtaType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCallToActionProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCallToActionProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreCanonicalGConceptProto: This proto represents a canonical +// gconcept of a business chain's members. +type GeostoreCanonicalGConceptProto struct { + Gconcept *GeostoreGConceptInstanceProto `json:"gconcept,omitempty"` + + // IsRequired: Whether the gconcept must be on a member. This must be + // true for a primary gconcept. + IsRequired bool `json:"isRequired,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Gconcept") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Gconcept") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCanonicalGConceptProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCanonicalGConceptProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreCellCoveringProto: 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. +type GeostoreCellCoveringProto struct { + // CellId: Array of S2 cell ids that represent the covering. There is no + // preset limit on how many cells can be used. + CellId googleapi.Uint64s `json:"cellId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CellId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CellId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCellCoveringProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCellCoveringProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreComposableItemProto: 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. +type GeostoreComposableItemProto struct { + // CallToAction: Call to action for the individual product. + CallToAction *GeostoreCallToActionProto `json:"callToAction,omitempty"` + + JobMetadata *GeostoreJobMetadata `json:"jobMetadata,omitempty"` + + // Media: Any photos describing this item. + Media []*GeostoreMediaItemProto `json:"media,omitempty"` + + // NameInfo: The repeated name_info field is for price list sections + // listed in multiple languages. At least one name_info containing id + // must be specified. There should be at most one name_info for any + // given language. When representing a job item, there should be exactly + // one name_info specified. + NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"` + + // Offered: Represents if an item is offered at a business. For + // TYPE_JOB, this represents if this job is offered by the corresponding + // business + // + // Possible values: + // "OFFERED_UNSPECIFIED" - Merchant says nothing + // "OFFERED" - Merchant explicitly says this is offered + // "OFFERED_NOT" - Merchant explicitly says this is NOT offered + // "OFFERED_ON_WEBSITE" - Merchant mentioned this job on their + // websites + Offered string `json:"offered,omitempty"` + + // Price: Price of the item. There should be at most one price for any + // given currency. + Price *GeostorePriceRangeProto `json:"price,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CallToAction") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CallToAction") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreComposableItemProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreComposableItemProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreCountComparisonProto: A count value tagged with a comparison +// operator. This can be used for axle count, trailer count, etc. +type GeostoreCountComparisonProto struct { + // Possible values: + // "UNSPECIFIED" + // "EQUAL" + // "LESS_THAN" + // "LESS_THAN_OR_EQUAL" + // "GREATER_THAN" + // "GREATER_THAN_OR_EQUAL" + ComparisonOperator string `json:"comparisonOperator,omitempty"` + + Count int64 `json:"count,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ComparisonOperator") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ComparisonOperator") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCountComparisonProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCountComparisonProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreCrossingStripePatternProto: 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. +type GeostoreCrossingStripePatternProto struct { + BorderLine *GeostorePhysicalLineProto `json:"borderLine,omitempty"` + + // Possible values: + // "UNKNOWN_BORDER_PATTERN" + // "NO_BORDER_PATTERN" + // "SOLID" + // "DASHED" + BorderPattern string `json:"borderPattern,omitempty"` + + // Color: Colors found on this crossing. + Color []*GeostorePaintedElementLogicalColorProto `json:"color,omitempty"` + + // Possible values: + // "UNKNOWN_STRIPE_PATTERN" + // "NO_STRIPE_PATTERN" - For crosswalk No crossing stripes. Usually + // comes with the bordered crosswalk. + // "LONGITUDINAL_STRIPE" + // "DIAGONAL_STRIPE" + // "LATERAL_STRIPE" + // "SINGLE_CROSSING_LINE" - A crossing line consisting of a single + // stripe e.g. a stop line. + // "DOUBLE_CROSSING_LINE" - A crossing line consisting of a double + // stripe. + // "TRIANGLE_CROSSING_LINE_POINTING_LEFT" - A crossing line made of + // repeating triangles e.g. a California yield line. The teeth are + // always facing the left of the crossing line. + // "TRIANGLE_CROSSING_LINE_POINTING_RIGHT" - A crossing line made of + // repeating triangles e.g. a California yield line. The teeth are + // always facing the right of the crossing line. + // "STRUCTURED_CROSSING_LINE" - The crossing line has a more complex + // structure than just a single conceptual stripe or row of symbols. + StripePattern string `json:"stripePattern,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BorderLine") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BorderLine") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCrossingStripePatternProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCrossingStripePatternProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreCurveConnectionProto: Protocol buffer describing a curve that +// connects two externally specified endpoints. +type GeostoreCurveConnectionProto struct { + BezierParams *GeostoreCurveConnectionProtoBezierParams `json:"bezierParams,omitempty"` + + CircleParams *GeostoreCurveConnectionProtoCircleParams `json:"circleParams,omitempty"` + + // Possible values: + // "UNSPECIFIED" - The connection is unspecified. Rendering code will + // rely on heuristics to choose one. + // "BEZIER" - Bezier curve interpolates the two endpoints. + // "CIRCLE" - Endpoints are connected via a circle arc. + // "STRAIGHT_EDGE" - Endpoints are connected by a straight edge. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BezierParams") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BezierParams") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCurveConnectionProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCurveConnectionProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreCurveConnectionProtoBezierParams struct { + // ControlPoint: Internal Bezier handles. One can be used for a + // quadratic curve, two for cubic Beziers. + ControlPoint []*GeostoreCurveConnectionProtoBezierParamsControlPoint `json:"controlPoint,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ControlPoint") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ControlPoint") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCurveConnectionProtoBezierParams) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCurveConnectionProtoBezierParams + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreCurveConnectionProtoBezierParamsControlPoint struct { + // AngleDegrees: 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. + AngleDegrees float64 `json:"angleDegrees,omitempty"` + + // DistanceMultiplier: Distance(S, P) in units of Distance(S, E). + DistanceMultiplier float64 `json:"distanceMultiplier,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AngleDegrees") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AngleDegrees") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCurveConnectionProtoBezierParamsControlPoint) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCurveConnectionProtoBezierParamsControlPoint + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreCurveConnectionProtoBezierParamsControlPoint) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreCurveConnectionProtoBezierParamsControlPoint + var s1 struct { + AngleDegrees gensupport.JSONFloat64 `json:"angleDegrees"` + DistanceMultiplier gensupport.JSONFloat64 `json:"distanceMultiplier"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AngleDegrees = float64(s1.AngleDegrees) + s.DistanceMultiplier = float64(s1.DistanceMultiplier) + return nil +} + +type GeostoreCurveConnectionProtoCircleParams struct { + // Radius: Arc radius. Must be greater than half-distance between two + // endpoints. + Radius float64 `json:"radius,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Radius") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Radius") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreCurveConnectionProtoCircleParams) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreCurveConnectionProtoCircleParams + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreCurveConnectionProtoCircleParams) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreCurveConnectionProtoCircleParams + var s1 struct { + Radius gensupport.JSONFloat64 `json:"radius"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Radius = float64(s1.Radius) + return nil +} + +// GeostoreDataSourceProto: 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. +type GeostoreDataSourceProto struct { + // AttributionUrl: This is the URL of a website representing this + // DataSource as a whole. If this DataSource feature is specific to a + // particular dataset or product, the page may contain information + // relevant to that dataset or product or may be the main page of the + // organization. + AttributionUrl []*GeostoreUrlProto `json:"attributionUrl,omitempty"` + + // CopyrightOwner: A UTF8 string that will be inserted in copyright + // messages to refer to this copyright owner, e.g. "Tele Atlas". + CopyrightOwner string `json:"copyrightOwner,omitempty"` + + // CopyrightYear: The copyright year of this data (which may be + // different than the year of the release date), e.g. 2005. + CopyrightYear int64 `json:"copyrightYear,omitempty"` + + // Description: A free-form description of this data source. Ideally the + // description should include: - Where the data was obtained (URL, + // company name, individual, etc). - Where to find detailed + // documentation. - A brief summary of the licensing terms. - As much + // internal and external contact information as possible (e.g. who to + // ask about licensing questions, interpreting the data, updating the + // data, fixing bugs in the importer, etc). + Description string `json:"description,omitempty"` + + // ImporterBuildInfo: The build information of the importer binary used + // to generate this data source. + ImporterBuildInfo string `json:"importerBuildInfo,omitempty"` + + // ImporterBuildTarget: The build target of the importer binary used to + // generate this data source. + ImporterBuildTarget string `json:"importerBuildTarget,omitempty"` + + // ImporterClientInfo: The Perforce client information of the importer + // binary used to generate this data source. + ImporterClientInfo string `json:"importerClientInfo,omitempty"` + + // ImporterMpmVersion: If the importer was built as an MPM, the version + // number can be stored in this field. As with build_info, this can be + // useful when tracking down issues that may be due to the use of a + // particular binary. + ImporterMpmVersion string `json:"importerMpmVersion,omitempty"` + + // ImporterTimestamp: The timestamp of the importer binary used to + // generate this data source. + ImporterTimestamp string `json:"importerTimestamp,omitempty"` + + // Provider: The provider type of this data source. + // + // Possible values: + // "PROVIDER_ANY" - ABSTRACT The root of all provider types. This + // should never be present on an actual feature, but can be useful when + // calling InCategory. + // "PROVIDER_UNKNOWN" - not actually a legal value, used as sentinel + // "PROVIDER_NAVTEQ" + // "PROVIDER_TELE_ATLAS" - ABSTRACT + // "PROVIDER_TELE_ATLAS_MULTINET" + // "PROVIDER_TELE_ATLAS_CODEPOINT" + // "PROVIDER_TELE_ATLAS_GEOPOST" + // "PROVIDER_TELE_ATLAS_DATAGEO" + // "PROVIDER_TELE_ATLAS_ADDRESS_POINTS" + // "PROVIDER_TELCONTAR" + // "PROVIDER_EUROPA" + // "PROVIDER_ROYAL_MAIL" + // "PROVIDER_GOOGLE" - ABSTRACT + // "PROVIDER_GOOGLE_HAND_EDIT" + // "PROVIDER_GOOGLE_BORDERS" - All new "Google" provider entries must + // be full ints. The next available ID is: 0x111730AA + // "PROVIDER_GOOGLE_SUBRANGE" - ABSTRACT + // "PROVIDER_GOOGLE_GT_FUSION" + // "PROVIDER_GOOGLE_ZAGAT_CMS" + // "PROVIDER_GOOGLE_PLACE_NAVBOOST" + // "PROVIDER_GOOGLE_FOOTPRINT" + // "PROVIDER_GOOGLE_PRODUCT_TERMS" + // "PROVIDER_GOOGLE_POINTCARDS" + // "PROVIDER_GOOGLE_BUSINESS_CHAINS" + // "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION" + // "PROVIDER_GOOGLE_PRONUNCIATIONS" + // "PROVIDER_GOOGLE_DUMPLING" + // "PROVIDER_GOOGLE_DISTILLERY" + // "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION" + // "PROVIDER_GOOGLE_RELATION_MINER" + // "PROVIDER_GOOGLE_MAPSPAM" + // "PROVIDER_GOOGLE_ROSE" + // "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS" + // "PROVIDER_GOOGLE_WIPEOUT" - This is an internal *only* provider + // meant for sending wipeout requests to mapfacts. + // "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH" + // "PROVIDER_GOOGLE_BEEGEES" + // "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION" + // "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION" + // "PROVIDER_GOOGLE_GEO_WORLDMAPS" + // "PROVIDER_GOOGLE_GEO_MODERATION" + // "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS" + // "PROVIDER_GOOGLE_LOCAL_ALCHEMY" + // "PROVIDER_GOOGLE_KEROUAC" + // "PROVIDER_GOOGLE_MOBRANK" + // "PROVIDER_GOOGLE_RAPTURE" + // "PROVIDER_GOOGLE_CULTURAL_INSTITUTE" + // "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS" + // "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS" + // "PROVIDER_GOOGLE_TACTILE_MAPS" + // "PROVIDER_GOOGLE_MAPS_FOR_MOBILE" + // "PROVIDER_GOOGLE_GEO_REALTIME" + // "PROVIDER_GOOGLE_PROMINENT_PLACES" - Never rely on source infos + // with this provider to identify whether or not a feature is a + // Prominent Place! Instead, use the proper API, + // localsearch_clustering::QualityTierHelper::IsProminentPlace(). + // "PROVIDER_GOOGLE_PLACE_ACTIONS" + // "PROVIDER_GOOGLE_GT_AUTO_EDITS" + // "PROVIDER_GOOGLE_WAZE" + // "PROVIDER_GOOGLE_ONTHEGO" + // "PROVIDER_GOOGLE_GT_IMPORT" + // "PROVIDER_GOOGLE_STRUCTURED_DATA" + // "PROVIDER_GOOGLE_HELICOPTER" + // "PROVIDER_GOOGLE_ROLLBACK" + // "PROVIDER_GOOGLE_RIGHTS_REPAIR" + // "PROVIDER_GOOGLE_PERFUME" + // "PROVIDER_GOOGLE_MAPS_TRANSLATION" + // "PROVIDER_GOOGLE_CALL_ME_MAYBE" + // "PROVIDER_GOOGLE_LOCAL_UNIVERSAL" + // "PROVIDER_GOOGLE_CROUPIER" + // "PROVIDER_GOOGLE_SKYSMART" + // "PROVIDER_GOOGLE_RIDDLER" + // "PROVIDER_GOOGLE_ROADCLOSURES" + // "PROVIDER_GOOGLE_SPORE" - UMBRELLA + // "PROVIDER_GOOGLE_LOCALIZATION" + // "PROVIDER_GOOGLE_CATTERMS" + // "PROVIDER_GOOGLE_GT_FIELD_OPS" + // "PROVIDER_GOOGLE_MATCHMAKER" + // "PROVIDER_GOOGLE_ARBITRATION" + // "PROVIDER_GOOGLE_BIZBUILDER_OPS" + // "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS" + // "PROVIDER_GOOGLE_GT_DRAFTY" + // "PROVIDER_GOOGLE_HOTELADS_OPS" + // "PROVIDER_GOOGLE_MARKERS" + // "PROVIDER_GOOGLE_STATE_MACHINE" + // "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE" + // "PROVIDER_GOOGLE_BIKESHARE" + // "PROVIDER_GOOGLE_GHOSTWRITER" + // "PROVIDER_GOOGLE_EDIT_PLATFORM" + // "PROVIDER_GOOGLE_BLUE_GINGER" + // "PROVIDER_GOOGLE_GEO_TIGER" + // "PROVIDER_GOOGLE_HYADES" + // "PROVIDER_GOOGLE_WEBQUARRY" + // "PROVIDER_GOOGLE_GEO_MADDEN" + // "PROVIDER_GOOGLE_ANDROID_PAY" + // "PROVIDER_GOOGLE_OPENING_HOURS_TEAM" + // "PROVIDER_GOOGLE_LOCAL_DISCOVERY" + // "PROVIDER_GOOGLE_LOCAL_HEALTH" + // "PROVIDER_GOOGLE_UGC_MAPS" + // "PROVIDER_GOOGLE_FIBER" + // "PROVIDER_GOOGLE_REVGEO" + // "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END" + // "PROVIDER_GOOGLE_GEO_UGC_TASKS" + // "PROVIDER_GOOGLE_GEOCODING" + // "PROVIDER_GOOGLE_SPYGLASS" + // "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES" + // "PROVIDER_GOOGLE_GEO_CHANGES" + // "PROVIDER_GOOGLE_HUME" + // "PROVIDER_GOOGLE_MEGAMIND" + // "PROVIDER_GOOGLE_GT_ROADSYNTH" + // "PROVIDER_GOOGLE_FIREBOLT" + // "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS" + // "PROVIDER_GOOGLE_UGC_SERVICES" + // "PROVIDER_GOOGLE_GEOALIGN" + // "PROVIDER_GOOGLE_GT_COMPOUNDS" + // "PROVIDER_GOOGLE_FOOD_ORDERING" + // "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS" + // "PROVIDER_GOOGLE_URAW" + // "PROVIDER_GOOGLE_FLYEYE" + // "PROVIDER_GOOGLE_YOUKE" + // "PROVIDER_GOOGLE_GT_ZEPHYR" + // "PROVIDER_GOOGLE_USER_SAFETY" + // "PROVIDER_GOOGLE_ADDRESS_MAKER" + // "PROVIDER_GOOGLE_UGC_PHOTOS" + // "PROVIDER_GOOGLE_GT_WINDCHIME" + // "PROVIDER_GOOGLE_SNAG_FIXER" + // "PROVIDER_GOOGLE_GEO_DEALS" + // "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS" + // "PROVIDER_GOOGLE_PROPERTY_INSIGHTS" + // "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS" + // "PROVIDER_GOOGLE_GEO_PORTKEY" + // "PROVIDER_GOOGLE_ROAD_MAPPER" + // "PROVIDER_GOOGLE_LOCATION_PLATFORM" + // "PROVIDER_GOOGLE_POSTTRIP" + // "PROVIDER_GOOGLE_TRAVEL_DESTINATION" + // "PROVIDER_GOOGLE_GEO_DATA_UPLOAD" - UMBRELLA + // "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP" + // "PROVIDER_GOOGLE_USER" + // "PROVIDER_GOOGLE_STATION" + // "PROVIDER_GOOGLE_GEO_FOOD" + // "PROVIDER_GOOGLE_GEO_AR" + // "PROVIDER_GOOGLE_GEO_TEMPORAL" + // "PROVIDER_GOOGLE_SERVICES_MARKETPLACE" + // "PROVIDER_GOOGLE_IMT_CLEANUP" + // "PROVIDER_GOOGLE_GEO_FOOD_MENU" + // "PROVIDER_GOOGLE_CARENAV" + // "PROVIDER_GOOGLE_DRIVING_FEEDS" - UMBRELLA + // "PROVIDER_GOOGLE_DRIVING_UGC" + // "PROVIDER_GOOGLE_POLAR" + // "PROVIDER_GOOGLE_TRIWILD" + // "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS" + // "PROVIDER_GOOGLE_SA_FROM_WEB" + // "PROVIDER_GOOGLE_POI_ALIGNMENT" + // "PROVIDER_GOOGLE_SA_FROM_HULK" + // "PROVIDER_GOOGLE_SERVICES_INTERACTIONS" + // "PROVIDER_GOOGLE_ROADS_UGC_EDITOR" + // "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE" + // "PROVIDER_GOOGLE_GEO_DRIVING_VIZ" + // "PROVIDER_GOOGLE_GEO_TASKING" + // "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE" + // "PROVIDER_GOOGLE_CROWDTASK_TASKADS" + // "PROVIDER_GOOGLE_CROWDTASK_TASKMATE" + // "PROVIDER_GOOGLE_CROWDTASK_FURBALL" + // "PROVIDER_GOOGLE_CROWDTASK_ADAP" + // "PROVIDER_GOOGLE_GPAY" + // "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS" + // "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION" + // "PROVIDER_GOOGLE_GEOTRACKER" + // "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE" + // "PROVIDER_GOOGLE_GEO_CLOSED_LOOP" + // "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS" + // "PROVIDER_GOOGLE_CORE_DATA_RIGHTS" + // "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS" + // "PROVIDER_GOOGLE_GEO_CONTENT_FIXER" + // "PROVIDER_GOOGLE_POLYGON_REFINEMENT" + // "PROVIDER_GOOGLE_HANASU" + // "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD" + // "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD" + // "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD" + // "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS" + // "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS" + // "PROVIDER_GOOGLE_SA_QUALITY" + // "PROVIDER_GOOGLE_GDCE_CLEANUP" + // "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS" + // "PROVIDER_GOOGLE_LOCALSEARCH" - The next new "Google" provider + // entries should be placed above. + // "PROVIDER_GOOGLE_TRANSIT" - UMBRELLA + // "PROVIDER_GOOGLE_GEOWIKI" + // "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM" + // "PROVIDER_GOOGLE_SYNTHESIZED" + // "PROVIDER_GOOGLE_INTERNAL_TEST" - This is a testing provider for + // teams that wish to integrate with components of the Geo Data + // Infrastructure that require a valid provider. No production data + // should ever be sent using this provider. + // "PROVIDER_GOOGLE_DISPUTED_AREAS" + // "PROVIDER_GOOGLE_3DWAREHOUSE" - UMBRELLA + // "PROVIDER_GOOGLE_GROUNDS_BUILDER" + // "PROVIDER_GOOGLE_SESAME" + // "PROVIDER_GOOGLE_GT" + // "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD" - UMBRELLA + // "PROVIDER_GOOGLE_ADSDB" - 0x1117F must not be used, since its range + // extends the PROVIDER_GOOGLE hierarchy. + // "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION" + // "PROVIDER_GOOGLE_TRAVELSEARCH" + // "PROVIDER_GOOGLE_PANORAMIO" + // "PROVIDER_GOOGLE_YOUTUBE" + // "PROVIDER_GOOGLE_OLD" + // "PROVIDER_GOOGLE_STREETVIEW" + // "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW" + // "PROVIDER_GOOGLE_ZIPIT" + // "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES" + // "PROVIDER_GOOGLE_GOLDEN" + // "PROVIDER_GOOGLE_INNERSPACE" + // "PROVIDER_GOOGLE_MAPSEARCH" + // "PROVIDER_GOOGLE_CATEGORIES_TEAM" - Deprecated in favor of + // PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and + // PROVIDER_GOOGLE_GEO_TIGER (for categories). + // "PROVIDER_GOOGLE_CROWDSENSUS" + // "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY" - 0x1117FF should not + // be used, since its range further extends the PROVIDER_GOOGLE + // hierarchy. aka Local AI. + // "PROVIDER_GOOGLE_FREEBASE" + // "PROVIDER_GOOGLE_HOTELADS" + // "PROVIDER_GOOGLE_AUTHORITY_PAGES" + // "PROVIDER_GOOGLE_PLACES_API" + // "PROVIDER_GOOGLE_NAMEHEATMAP" + // "PROVIDER_GOOGLE_MAPMAKER" + // "PROVIDER_GOOGLE_MAPMAKER_MOBILE" + // "PROVIDER_GOOGLE_MAPMAKER_PANCAKE" + // "PROVIDER_GOOGLE_MAPMAKER_V2" + // "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE" + // "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER" - No data is obtained from + // this provider. It is only used to identify features that must be + // served on MapMaker. + // "PROVIDER_GOOGLE_GT_LOCAL" + // "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS" + // "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS" + // "PROVIDER_GOOGLE_ENTITY_NAVBOOST" + // "PROVIDER_GOOGLE_RELATED_PLACES" + // "PROVIDER_GOOGLE_KNOWN_FOR_TERMS" + // "PROVIDER_GOOGLE_SYNTHETIC_AREAS" - 0x1117FFF should not be used, + // since its range further extends the PROVIDER_GOOGLE hierarchy. + // Synthetically generated areas (sublocalities/neighborhoods/ postal + // codes/etc) based on dropped terms from approximate geocoding. More + // info on go/syntheticareas. + // "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS" + // "PROVIDER_GOOGLE_CROSS_STREETS" + // "PROVIDER_GOOGLE_CORRIDORS" + // "PROVIDER_GOOGLE_BICYCLE_RENTAL" - Similar to Google Transit, a + // provider that aggregates positions of bicycle rental points that we + // have agreements with to show on maps + // "PROVIDER_GOOGLE_CONCRETE_URLS" + // "PROVIDER_GOOGLE_LEANBACK" + // "PROVIDER_GOOGLE_LOCKED_LISTINGS" + // "PROVIDER_GOOGLE_MONITORING" + // "PROVIDER_GOOGLE_SPROUT" + // "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY" + // "PROVIDER_GOOGLE_GOBY" + // "PROVIDER_GOOGLE_PROBLEM_REPORT" + // "PROVIDER_GOOGLE_CANDID" + // "PROVIDER_GOOGLE_BIZBUILDER" + // "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA" - This range has been + // depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above. + // "PROVIDER_MAPDATA_SCIENCES" + // "PROVIDER_MAPONICS" + // "PROVIDER_SKI_RESORTS" + // "PROVIDER_ZENRIN" + // "PROVIDER_SANBORN" + // "PROVIDER_URBAN_MAPPING" + // "PROVIDER_US_GOVERNMENT" - ABSTRACT + // "PROVIDER_US_CENSUS" + // "PROVIDER_US_POSTAL_SERVICE" + // "PROVIDER_US_GEOLOGICAL_SURVEY" + // "PROVIDER_US_GNIS" + // "PROVIDER_US_LANDSAT" + // "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY" + // "PROVIDER_US_NGA_GNS" + // "PROVIDER_US_SSIBL" - Small Scale International Boundary Lines + // "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS" + // "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION" - + // NOAA + // "PROVIDER_US_POLAR_GEOSPATIAL_CENTER" - PGC + // "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE" - USDA + // "PROVIDER_US_NPI_REGISTRY" - National Provider Identifier Registry + // "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS" + // "PROVIDER_DMTI_SPATIAL" + // "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION" + // "PROVIDER_MAPLINK" + // "PROVIDER_KINGWAY" + // "PROVIDER_GEOCENTRE" + // "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS" + // "PROVIDER_CN_MAPABC" + // "PROVIDER_SMITHSONIAN_INSTITUTE" + // "PROVIDER_TRACKS_FOR_AFRICA" + // "PROVIDER_PPWK" - old name for PROVIDER_NAVIGO + // "PROVIDER_LEADDOG" + // "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG" + // "PROVIDER_GISRAEL" + // "PROVIDER_BASARSOFT" + // "PROVIDER_MAPINFO" + // "PROVIDER_MAPIT" + // "PROVIDER_GEOBASE" + // "PROVIDER_ORION" + // "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY" + // "PROVIDER_ANASAT" + // "PROVIDER_MINED_POSTCODES" + // "PROVIDER_DMAPAS" + // "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY" + // "PROVIDER_CH_SBB" + // "PROVIDER_SKENERGY" + // "PROVIDER_GBRMPA" + // "PROVIDER_KOREA_POST" + // "PROVIDER_CN_AUTONAVI" + // "PROVIDER_MINED_POI" + // "PROVIDER_ML_INFOMAP" + // "PROVIDER_SNOOPER" + // "PROVIDER_GEOSISTEMAS" + // "PROVIDER_AFRIGIS" + // "PROVIDER_TRANSNAVICOM" + // "PROVIDER_EASYCONNECT" + // "PROVIDER_LANTMATERIET" + // "PROVIDER_LOGICA" + // "PROVIDER_MAPKING" + // "PROVIDER_DIANPING" + // "PROVIDER_GEONAV" + // "PROVIDER_HEIBONSHA" + // "PROVIDER_DEUTSCHE_TELEKOM" + // "PROVIDER_LINGUISTIC_DATA_CONSORTIUM" + // "PROVIDER_ACXIOM" + // "PROVIDER_DUN_AND_BRADSTREET" - See b/33687395 + // "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION" + // "PROVIDER_INFOUSA" + // "PROVIDER_INFOUSA_NIXIE" + // "PROVIDER_THOMSON_LOCAL" + // "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION" + // "PROVIDER_WIKIPEDIA" + // "PROVIDER_INFOBEL" + // "PROVIDER_MX_GOVERNMENT" - ABSTRACT + // "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY" + // "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO" + // "PROVIDER_TELEGATE" + // "PROVIDER_TELELISTAS" + // "PROVIDER_MAPCITY" + // "PROVIDER_EXPLAINER_DC" + // "PROVIDER_DAIKEI" + // "PROVIDER_NL_CHAMBER_OF_COMMERCE" + // "PROVIDER_KOREA_INFO_SERVICE" + // "PROVIDER_WIKITRAVEL" + // "PROVIDER_FLICKR" + // "PROVIDER_DIANCO" + // "PROVIDER_VOLT_DELTA" + // "PROVIDER_SG_GOVERNMENT" - ABSTRACT + // "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY" + // "PROVIDER_MAPBAR" + // "PROVIDER_LONGTU" + // "PROVIDER_SA_GOVERNMENT" - ABSTRACT + // "PROVIDER_SA_SAUDI_POST" + // "PROVIDER_PEAKLIST" + // "PROVIDER_LOCAL_BUSINESS_CENTER" + // "PROVIDER_LOCAL_FEED_XML" - UMBRELLA + // "PROVIDER_WEB" + // "PROVIDER_RAILS_TO_TRAILS" + // "PROVIDER_INDIACOM" + // "PROVIDER_INFOMEDIA" + // "PROVIDER_PICASA" + // "PROVIDER_AT_GOVERNMENT" - ABSTRACT + // "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN" + // "PROVIDER_AT_NATIONAL_TOURIST_OFFICE" + // "PROVIDER_AT_AUSTRIA_POST" + // "PROVIDER_NO_GOVERNMENT" - ABSTRACT + // "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON" + // "PROVIDER_NO_POSTEN_NORGE_AS" + // "PROVIDER_CH_GOVERNMENT" - ABSTRACT + // "PROVIDER_CH_SWISS_POST" + // "PROVIDER_CH_SWISSTOPO" + // "PROVIDER_CH_SWISS_NATIONAL_PARK" + // "PROVIDER_NAVIT" + // "PROVIDER_GEOSEARCH" + // "PROVIDER_DE_GOVERNMENT" - ABSTRACT + // "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE" + // "PROVIDER_BUNDESNETZAGENTUR" + // "PROVIDER_SCHOBER_GROUP" + // "PROVIDER_MIREO" + // "PROVIDER_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_US_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO" + // "PROVIDER_NZ_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY" + // "PROVIDER_PL_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE" + // "PROVIDER_PT_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ" + // "PROVIDER_AT_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT" + // "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA" + // "PROVIDER_AU_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA" + // "PROVIDER_IS_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK" + // "PROVIDER_NL_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN" + // "PROVIDER_BE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO" + // "PROVIDER_SE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA" + // "PROVIDER_UA_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV" + // "PROVIDER_OTHER_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS" + // "PROVIDER_FR_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER" + // "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX" + // "PROVIDER_SG_PUBLIC_MUNICIPALITY" + // "PROVIDER_BR_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO" + // "PROVIDER_MAPCUBE" + // "PROVIDER_3D_REALITYMAPS" + // "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT" + // "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA" + // "PROVIDER_DISNEY" + // "PROVIDER_CYBERCITY" + // "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS" + // "PROVIDER_VIRTUAL_HUNGARY_LIMITED" + // "PROVIDER_VIRTUEL_CITY" + // "PROVIDER_SCREAMPOINT_INTERNATIONAL" + // "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN" + // "PROVIDER_FR_GOVERNMENT" - ABSTRACT + // "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL" + // "PROVIDER_FR_CADASTRE" + // "PROVIDER_DIADIEM" + // "PROVIDER_THE_WEATHER_CHANNEL" + // "PROVIDER_COWI" + // "PROVIDER_FALKPLAN_ANDES" + // "PROVIDER_NL_GOVERNMENT" - ABSTRACT + // "PROVIDER_NL_KADASTER" + // "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS" + // "PROVIDER_DIGITAL_MAP_PRODUCTS" + // "PROVIDER_SILICE_DIGITAL" + // "PROVIDER_TYDAC" + // "PROVIDER_ALBRECHT_GOLF" + // "PROVIDER_HEALTH_CH" + // "PROVIDER_VISITDENMARK" + // "PROVIDER_FLYHERE" + // "PROVIDER_DIGITAL_DATA_SERVICES" + // "PROVIDER_MECOMO" + // "PROVIDER_ZA_GOVERNMENT" - ABSTRACT + // "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM" + // "PROVIDER_SENSIS" + // "PROVIDER_JJCONNECT" + // "PROVIDER_OPPLYSNINGEN" + // "PROVIDER_TELLUS" + // "PROVIDER_IQONIA" + // "PROVIDER_BE_GOVERNMENT" - ABSTRACT + // "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT" + // "PROVIDER_BE_BRUSSELS_MOBILITY" + // "PROVIDER_YELLOWMAP_AG" + // "PROVIDER_STIFTUNG_GESUNDHEIT" + // "PROVIDER_GIATA" + // "PROVIDER_SANPARKS" + // "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE" + // "PROVIDER_INFOPORTUGAL" + // "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO" + // "PROVIDER_COLLINS_BARTHOLOMEW" + // "PROVIDER_PROTECT_PLANET_OCEAN" + // "PROVIDER_KARTTAKESKUS" + // "PROVIDER_FI_GOVERNMENT" - ABSTRACT + // "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION" + // "PROVIDER_FI_NATIONAL_LAND_SURVEY" + // "PROVIDER_FI_STATISTICS_FINLAND" + // "PROVIDER_GB_GOVERNMENT" - ABSTRACT + // "PROVIDER_GB_ORDNANCE_SURVEY" + // "PROVIDER_NATURAL_ENGLAND" + // "PROVIDER_WELSH_GOVERNMENT" + // "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS" + // "PROVIDER_EPSILON" + // "PROVIDER_PARTNER_FRONT_END" + // "PROVIDER_CARTESIA" + // "PROVIDER_SE_GOVERNMENT" - ABSTRACT + // "PROVIDER_SE_TRAFIKVERKET" + // "PROVIDER_SE_NATURVARDSVERKET" + // "PROVIDER_IE_GOVERNMENT" - ABSTRACT + // "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND" + // "PROVIDER_LU_GOVERNMENT" - ABSTRACT + // "PROVIDER_LU_P_AND_T_LUXEMBOURG" + // "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE" + // "PROVIDER_LU_NATIONAL_TOURIST_OFFICE" + // "PROVIDER_MAPFLOW" + // "PROVIDER_TKARTOR" + // "PROVIDER_JUMPSTART" + // "PROVIDER_EPTISA" + // "PROVIDER_MC_GOVERNMENT" - ABSTRACT + // "PROVIDER_MC_PRINCIPAUTE_DE_MONACO" + // "PROVIDER_MONOLIT" + // "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE" + // "PROVIDER_MODIS" + // "PROVIDER_GEOX" + // "PROVIDER_GEODIRECTORY" + // "PROVIDER_GEOPLAN" + // "PROVIDER_INFODIREKT" + // "PROVIDER_GEOGLOBAL" + // "PROVIDER_DEUTSCHE_POST" + // "PROVIDER_TRACASA" + // "PROVIDER_CORREOS" + // "PROVIDER_ES_GOVERNMENT" - ABSTRACT + // "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA" + // "PROVIDER_EDIMAP" + // "PROVIDER_VERIZON" + // "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS" + // "PROVIDER_PROMAPS" + // "PROVIDER_CONSODATA" + // "PROVIDER_DE_AGOSTINI" + // "PROVIDER_FEDERPARCHI" + // "PROVIDER_NAVIGO" + // "PROVIDER_ITALIAMAPPE" + // "PROVIDER_CZECOT" + // "PROVIDER_NATURAL_EARTH" + // "PROVIDER_REGIO" + // "PROVIDER_SHIPWRECK_CENTRAL" + // "PROVIDER_RUTGERS_STATE_UNIVERSITY" + // "PROVIDER_TWINICE" + // "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD" + // "PROVIDER_INFOGROUP" + // "PROVIDER_TNET" + // "PROVIDER_CTT_CORREIOS_DE_PORTUGAL" + // "PROVIDER_EUROPARC" + // "PROVIDER_IUPPITER" + // "PROVIDER_MICHAEL_BAUER_INTERNATIONAL" + // "PROVIDER_LEPTON" + // "PROVIDER_MAPPOINT" + // "PROVIDER_GEODATA" + // "PROVIDER_RU_GOVERNMENT" - ABSTRACT + // "PROVIDER_RU_FNS_KLADR" + // "PROVIDER_BR_GOVERNMENT" - ABSTRACT + // + // "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATU + // RAIS_RENOVAVEIS" - IBAMA + // "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE" - MMA + // "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS" - ANA + // "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA" - + // IBGE + // "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO" - FUNAI + // + // "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES" + // - DNIT + // "PROVIDER_AZAVEA" + // "PROVIDER_NORTHSTAR" + // "PROVIDER_COMMEDI" + // "PROVIDER_NEXUS_GEOGRAFICS" + // "PROVIDER_INFOERA" + // "PROVIDER_AD_GOVERNMENT" - ABSTRACT + // "PROVIDER_AD_AREA_DE_CARTOGRAFIA" - Department of Cartography + // "PROVIDER_MAXXIMA" + // "PROVIDER_SI_GOVERNMENT" - ABSTRACT + // "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT" + // "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS" + // "PROVIDER_L1_TECHNOLOGIES" + // "PROVIDER_TELEMEDIA" + // "PROVIDER_CDCOM_PROGOROD" + // "PROVIDER_MIT_CITYGUIDE" + // "PROVIDER_SUNCART" + // "PROVIDER_MICROMAPPER" + // "PROVIDER_RICHI" + // "PROVIDER_FORUM44" + // "PROVIDER_SEAT" + // "PROVIDER_VALASSIS" + // "PROVIDER_NAVICOM" + // "PROVIDER_COLTRACK" + // "PROVIDER_PSMA_AUSTRALIA" + // "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA" + // "PROVIDER_CA_GOVERNMENT" - ABSTRACT + // "PROVIDER_STATISTICS_CANADA" + // "PROVIDER_TOCTOC" + // "PROVIDER_RMSI" + // "PROVIDER_TRUE_TECHNOLOGY" + // "PROVIDER_INCREMENT_P_CORPORATION" + // "PROVIDER_GOJAVAS" + // "PROVIDER_GEOINFORMATION_GROUP" + // "PROVIDER_CYBERSOFT" + // "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY" - 0x12 and 0x120 are not + // to be used. OOO CET + // "PROVIDER_EE_GOVERNMENT" - ABSTRACT + // "PROVIDER_EE_MAA_AMET" - Estonian Land Board + // "PROVIDER_GASBUDDY" + // "PROVIDER_DK_GOVERNMENT" - ABSTRACT + // "PROVIDER_DK_GEODATASTYRELSEN" - Danish Geodata Agency + // "PROVIDER_MURCIA_REGION_GOVERNMENT" + // "PROVIDER_CORREIOS" + // "PROVIDER_WEST_WORLD_MEDIA" + // "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION" + // "PROVIDER_MEDICARE" + // "PROVIDER_POLARIS" + // "PROVIDER_TW_GOVERNMENT" - ABSTRACT + // "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER" + // "PROVIDER_NORDECA" + // "PROVIDER_AFRIMAPPING" + // "PROVIDER_OVERDRIVE" + // "PROVIDER_PROVIDER_NETWORK_DIRECTORIES" + // "PROVIDER_BR_MINISTERIO_DA_SAUDE" + // "PROVIDER_DIGITAL_EGYPT" + // "PROVIDER_INRIX" + // "PROVIDER_ARPINDO" + // "PROVIDER_IT_GOVERNMENT" - ABSTRACT + // "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE" + // "PROVIDER_EAST_END_GROUP" + // "PROVIDER_INGEOLAN" + // "PROVIDER_SEMACONNECT" + // "PROVIDER_BLINK" + // "PROVIDER_EVGO" + // "PROVIDER_CHARGEPOINT" + // "PROVIDER_TPL_TRAKKER" + // "PROVIDER_OI" + // "PROVIDER_MAPARADAR" + // "PROVIDER_SINGAPORE_POST" + // "PROVIDER_CHARGEMASTER" + // "PROVIDER_TESLA" + // "PROVIDER_VISICOM" + // "PROVIDER_GEOLYSIS" + // "PROVIDER_ZEPHEIRA" + // "PROVIDER_HUBJECT" + // "PROVIDER_PODPOINT" + // "PROVIDER_CHARGEFOX" + // "PROVIDER_KR_GOVERNMENT" - ABSTRACT + // "PROVIDER_KR_MOLIT" - Ministry of land, infrastructure and + // transport, 국토교통부, Guktogyotongbu + // "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY" + // "PROVIDER_CRITCHLOW" + // "PROVIDER_EIFRIG" + // "PROVIDER_GIREVE" + // "PROVIDER_CN_NAVINFO" + // "PROVIDER_JAPAN_CHARGE_NETWORK" + // "PROVIDER_NOBIL" + // "PROVIDER_INDIA_BANKS" + // "PROVIDER_INDONESIA_ELECTION_KPU" + // "PROVIDER_CAREERS360" + // "PROVIDER_SOURCE_LONDON" + // "PROVIDER_EVBOX" + // "PROVIDER_JP_GOVERNMENT" - ABSTRACT + // "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT" + // "PROVIDER_YUMYUM" + // "PROVIDER_HWW_AUSTRALIA" + // "PROVIDER_CINERGY" + // "PROVIDER_MTIME" + // "PROVIDER_KULTUNAUT" + // "PROVIDER_BLITZ" + // "PROVIDER_PIA" + // "PROVIDER_INTERPARK" + // "PROVIDER_CINEMA_ONLINE" + // "PROVIDER_BELBIOS" + // "PROVIDER_MOVIESEER" + // "PROVIDER_SODAMEDYA" + // "PROVIDER_ATMOVIES" + // "PROVIDER_HOTELBEDS" + // "PROVIDER_VERICRED" + // "PROVIDER_CIRRANTIC" + // "PROVIDER_GOGO_LABS" + // "PROVIDER_ELECTRIFY_AMERICA" + // "PROVIDER_CMS_MPPUF" + // "PROVIDER_DIGIROAD" - Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION. + // "PROVIDER_KONTEX_GEOMATICS" + // "PROVIDER_NZ_GOVERNMENT" - ABSTRACT + // "PROVIDER_NZ_LINZ" - Land Information New Zealand + // "PROVIDER_NZ_DOC" - NZ Department of Conservation + // "PROVIDER_FASTNED" + // "PROVIDER_DESTINY_CS" + // "PROVIDER_IONITY" + // "PROVIDER_EV_CONNECT" + // "PROVIDER_PANPAGES" + // "PROVIDER_ETECNIC" + // "PROVIDER_VOLTA" + // "PROVIDER_NISSAN_MEXICO" + // "PROVIDER_BMW_GROUP_LATIN_AMERICA" + // "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO" + // "PROVIDER_VOLVO_CARS_BRASIL" + // "PROVIDER_CHARGE_AND_PARKING" + // "PROVIDER_DEDUCE_TECHNOLOGIES" + // "PROVIDER_SK_TELECOM" + // "PROVIDER_ECO_MOVEMENT" + // "PROVIDER_GOOGLE_GMS" + // "PROVIDER_EASYWAY" + // "PROVIDER_PHYSICIAN_COMPARE" + // "PROVIDER_HOSPITAL_COMPARE" + // "PROVIDER_ENDOLLA_BARCELONA" + // "PROVIDER_BE_CHARGE" + // "PROVIDER_ONE_NETWORK" + // "PROVIDER_CARENAV_DUPLEX" + // "PROVIDER_CARENAV_POI" - UMBRELLA + // "PROVIDER_IN_GOVERNMENT" - ABSTRACT + // "PROVIDER_SURVEY_OF_INDIA" + // "PROVIDER_E_ON" + // "PROVIDER_ELECTRIFY_CANADA" + // "PROVIDER_GRIDCARS" + // "PROVIDER_DRIVECO" + // "PROVIDER_GREEN_ACTION_STUDIOS" + // "PROVIDER_GREEN_ACTION_STUDIO" + // "PROVIDER_EVINY" + // "PROVIDER_MASTERCARD" + // "PROVIDER_VATTENFALL" - Note: Next available value is 0x126C. + Provider string `json:"provider,omitempty"` + + // RawMetadata: For every key that is used in raw_data from this source, + // there must be a corresponding entry in raw_metadata that describes + // this key. + RawMetadata []*GeostoreRawMetadataProto `json:"rawMetadata,omitempty"` + + // Release: A release string that doesn't have to be a date. This is + // provided so that we can preserve provider release strings that aren't + // based on dates. If you don't set it, the release_date will get + // formatted into this field for debugging purposes. + Release string `json:"release,omitempty"` + + // ReleaseDate: The release date of this data. + ReleaseDate *GeostoreDateTimeProto `json:"releaseDate,omitempty"` + + // SourceDataset: A data provider defined string describing the source + // dataset from which the features of this data source were generated. + // For example, the MultiNet "fra" dataset produces features for both + // France and Monaco. + SourceDataset string `json:"sourceDataset,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AttributionUrl") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AttributionUrl") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreDataSourceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreDataSourceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreDateTimeProto struct { + // Precision: This attribute describes the precision of the date and + // time. It would be unusual for a data provider to provide a precision + // along with their date. It is more likely that the precision of a date + // will be inferred from the date format. For example "19th century" is + // likely to be correct to the century, while "1800" is probably correct + // to the year. The precision should be semantically interpreted as a + // cast, so a DateTimeProto object with a seconds value corresponding to + // 2018-03-28 18:40:00 UTC and a precision of MONTH should be + // interpreted as "March 2018". The enums above are only some of the + // possible precision levels for dates and times. Clients may wish to + // add more precision enums in the future. However, these enums must be + // ordered by decreasing duration. Clients should be able to write date + // formatting code that looks like this: if (datetime.precision() <= + // DateTimeProto::PRECISION_CENTURY) { date = + // FormatCenturyDate(proto.seconds()); } else if (proto.precision() <= + // case DateTimeProto::PRECISION_DECADE) { date = + // FormatDecadeDate(proto.seconds()); } else { ... } See + // geostore/base/public/datetime.h for date formatting utility + // functions. + // + // Possible values: + // "PRECISION_CENTURY" - The enum values here should be ordered from + // low precision to high precision. + // "PRECISION_DECADE" + // "PRECISION_YEAR" + // "PRECISION_MONTH" + // "PRECISION_DAY" + // "PRECISION_HOUR" + // "PRECISION_MINUTE" + // "PRECISION_SECOND" + Precision string `json:"precision,omitempty"` + + // Seconds: Number of seconds since (or before) the UNIX epoch (January + // 1, 1970). This is also the standard epoch for Java and Python time + // representations. If it is important for this time be displayed + // correctly for different time zones, convert the time to Coordinated + // Universal Time (UTC). + Seconds float64 `json:"seconds,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Precision") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Precision") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreDateTimeProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreDateTimeProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreDateTimeProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreDateTimeProto + var s1 struct { + Seconds gensupport.JSONFloat64 `json:"seconds"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Seconds = float64(s1.Seconds) + return nil +} + +// GeostoreDimensionComparisonProto: A dimension value tagged with a +// comparison operator. This can be used for height, width, or length. +type GeostoreDimensionComparisonProto struct { + // Possible values: + // "UNSPECIFIED" + // "EQUAL" + // "LESS_THAN" + // "LESS_THAN_OR_EQUAL" + // "GREATER_THAN" + // "GREATER_THAN_OR_EQUAL" + ComparisonOperator string `json:"comparisonOperator,omitempty"` + + DimensionWithUnit *GeostoreDimensionProto `json:"dimensionWithUnit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ComparisonOperator") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ComparisonOperator") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreDimensionComparisonProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreDimensionComparisonProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreDimensionProto: A dimension with a numerical value and unit. +// This can be a height, width, or length. +type GeostoreDimensionProto struct { + Dimension float64 `json:"dimension,omitempty"` + + // Possible values: + // "UNIT_UNKNOWN" - Default proto value, this value will never be set + // in MapFacts. + // "METERS" + // "FEET" + Unit string `json:"unit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dimension") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dimension") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreDimensionProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreDimensionProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreDimensionProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreDimensionProto + var s1 struct { + Dimension gensupport.JSONFloat64 `json:"dimension"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Dimension = float64(s1.Dimension) + return nil +} + +// GeostoreDisplayDataProto: 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. +type GeostoreDisplayDataProto struct { + // DisplayLocation: The location where this feature should be rendered. + DisplayLocation *GeostorePointProto `json:"displayLocation,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayLocation") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayLocation") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreDisplayDataProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreDisplayDataProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreDoodleProto: This protocol buffer holds the doodle-specific +// attributes for features of type TYPE_DOODLE. +type GeostoreDoodleProto struct { + // Type: The type of this feature -- see comments above. + // + // Possible values: + // "TYPE_ANY" - ABSTRACT + // "TYPE_USER_DEFINED_LABEL" - A label that a cartographer has + // manually placed on the map. These may be read in from configuration + // files in a renderer and drawn on the map in the appropriate location. + // "TYPE_POINT_ANNOTATION" - Point, line, and area annotations. There + // used to be a more detailed list of doodle types here, but the doodles + // encoded with them turned out to have a fair bit of tricky + // datasource-specific baggage. Rather than list provider-specific types + // here, they've been pulled out and are now private to the importer and + // the renderer. The point/line/area distinction however has proven to + // be useful for configuration and filtering, and remains. + // "TYPE_LINE_ANNOTATION" + // "TYPE_AREA_ANNOTATION" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreDoodleProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreDoodleProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreDurationBasedRateProto: 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. +type GeostoreDurationBasedRateProto struct { + // IsFree: If true, represents that the rate is free; i.e. the price is + // 0 in any currency. If this is true, price must be empty. + IsFree bool `json:"isFree,omitempty"` + + // PeriodicitySeconds: The billable unit of the rate; i.e. after having + // utilized the service for exactly periodicity_seconds, the total cost + // should increase by ‘price’. For example, if the rate expresses a + // price per hour, then periodicity_seconds should be set to 3600. If + // this is unset, then the rate does not vary based on duration, and + // price represents a flat cost. May only be set if price is nonempty. + PeriodicitySeconds int64 `json:"periodicitySeconds,omitempty"` + + // Price: The total price, in each applicable currency, of utilizing the + // service for periodicity_seconds, or for the entire duration expressed + // by range_start_seconds and range_end_seconds if periodicity_seconds + // is 0. Each entry should have an ID of /measurement_unit/money_value + // and consist of two properties: one with an ID of + // /measurement_unit/money_value/amount and a float value with the + // amount, and another with the ID + // /measurement_unit/money_value/currency and an ID value with the MID + // of the proper currency. May only be set if is_free is false. + Price []*FreebaseTopic `json:"price,omitempty"` + + // RangeEndSeconds: Upper bound for durations to match, exclusive. Unset + // implies indefinite. + RangeEndSeconds int64 `json:"rangeEndSeconds,omitempty"` + + // RangeStartSeconds: Lower bound for durations to match, inclusive. + // Required; a value of 0 expresses that the price applies from the + // start of the utilization period. + RangeStartSeconds int64 `json:"rangeStartSeconds,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsFree") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsFree") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreDurationBasedRateProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreDurationBasedRateProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreElevationModelProto: Represents raster digital elevation +// model data. +type GeostoreElevationModelProto struct { + // BlendOrder: Defines the relative order in which terrain data should + // be rendered. Features with higher blend_order should be blended on + // top of features with lower blend_order. NOTE: this is backwards from + // the way BlendRank works in Magrathean. + BlendOrder int64 `json:"blendOrder,omitempty"` + + // DataLevel: The zoom level at which this data is defined. Level 0 is + // world level data, and each increase in zoom level corresponds to a + // factor of 2 increase in scale. + DataLevel int64 `json:"dataLevel,omitempty"` + + // DataMaxlevel: The maximum (finest) level at which this terrain data + // has sufficient resolution to be displayed. + DataMaxlevel int64 `json:"dataMaxlevel,omitempty"` + + // ElevationData: A place to store an elevation data protocol buffer. + // Currently, this must be a keyhole::AssetTileCompressed (see + // google3/keyhole/common/proto/magrathean.protodevel). + ElevationData *Proto2BridgeMessageSet `json:"elevationData,omitempty"` + + // FullChildDataAvailable: If true, all of the data contained in this + // feature is available at the next highest (more detailed) level. If + // this is true, partial_child_data_available should also be true. + FullChildDataAvailable bool `json:"fullChildDataAvailable,omitempty"` + + // PartialChildDataAvailable: If true, at least part of the data + // contained in this feature is available at the next highest (more + // detailed) level. + PartialChildDataAvailable bool `json:"partialChildDataAvailable,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BlendOrder") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BlendOrder") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreElevationModelProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreElevationModelProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreElevationProto: This protocol buffer holds elevation and +// related data. +type GeostoreElevationProto struct { + // AverageElevationMeters: The average elevation of the feature in + // meters above the local mean sea level. + AverageElevationMeters float64 `json:"averageElevationMeters,omitempty"` + + // Peak: Additional details for TYPE_PEAK and TYPE_VOLCANO features. + Peak *GeostorePeakProto `json:"peak,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AverageElevationMeters") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AverageElevationMeters") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreElevationProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreElevationProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreElevationProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreElevationProto + var s1 struct { + AverageElevationMeters gensupport.JSONFloat64 `json:"averageElevationMeters"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AverageElevationMeters = float64(s1.AverageElevationMeters) + return nil +} + +// GeostoreEntranceProto: This protocol buffer holds entrance-specific +// attributes for features of type TYPE_ENTRANCE. +type GeostoreEntranceProto struct { + // Possible values: + // "ENTER_AND_EXIT" + // "ENTER_ONLY" + // "EXIT_ONLY" + Allowance string `json:"allowance,omitempty"` + + // CanEnter: DEPRECATED. Please use enter_or_exit instead. + CanEnter bool `json:"canEnter,omitempty"` + + // CanExit: Whether the target can be entered through this entrance. + // Whether the target can be exited through this entrance. + CanExit bool `json:"canExit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Allowance") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Allowance") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreEntranceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreEntranceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreEntranceReferenceProto: Models a relationship between a +// feature and its entrance or exit. +type GeostoreEntranceReferenceProto struct { + // FeatureId: Feature ID of the related entrance. References should + // refer to TYPE_ENTRANCE or TYPE_COMPOUND features that are entrances + // or exits of the referencing feature. + FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FeatureId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FeatureId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreEntranceReferenceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreEntranceReferenceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreEstablishmentProto: This protocol buffer holds +// establishment-specific attributes for features of type +// TYPE_ESTABLISHMENT. +type GeostoreEstablishmentProto struct { + // BizbuilderReference: Reference to BizBuilder data for this + // establishment. The bizbuilder_reference field indicates that a + // feature is claimed in CBDB (with the canonical state in MapFacts). + // The bizbuilder_reference is different from the social_reference's + // claimed_gaia_id because some BizBuilder clients will not have +Pages. + // All claimed businesses should have a bizbuilder_reference. + BizbuilderReference *GeostoreBizBuilderReferenceProto `json:"bizbuilderReference,omitempty"` + + // Hours: Regular opening hours for the establishment (weekly schedule). + Hours *GeostoreTimeScheduleProto `json:"hours,omitempty"` + + // OpeningHours: Opening hours for this establishment, including regular + // weekly hours and exceptional hours (e.g. on holidays). NOTE: in + // practice, only the exceptional hours are filled in this message. A + // schema migration for regular weekly hours was planned back in 2015 + // (see b/23105782) but was not completed and is (as of May 2018) not + // prioritized. Clients should continue getting regular opening hours + // from the `hours` field above. In openinghours.h there is a utility + // function `GetOpeningHoursFromFeature` that merges + // `EstablishmentProto.hours` into this proto. + OpeningHours *GeostoreOpeningHoursProto `json:"openingHours,omitempty"` + + // PriceInfo: Pricing for products and services offered. Example: menus + // for restaurants. + PriceInfo *GeostorePriceInfoProto `json:"priceInfo,omitempty"` + + ServiceArea *GeostoreServiceAreaProto `json:"serviceArea,omitempty"` + + // Telephone: Telephone number and related information. + Telephone []*GeostoreTelephoneProto `json:"telephone,omitempty"` + + // Type: ** DEPRECATED ** This is deprecated in favor of the top-level + // (in FeatureProto) set of GConcepts. The type of establishment -- see + // comments above. + // + // Possible values: + // "TYPE_ANY" - ABSTRACT + // "TYPE_UNDEFINED" - Can be used for features where no establishment + // information is available. For example, if an importer generates a + // TYPE_ESTABLISHMENT_BUILDING feature, but source data does not have + // any information on the actual purpose of the building, the importer + // should use TYPE_UNDEFINED for establishment type. + // "TYPE_DEPRECATED_AVIATION" - DEPRECATED + // "TYPE_BUSINESS" + // "TYPE_TRAVEL_SERVICE" + // "TYPE_LODGING" + // "TYPE_HOTEL" + // "TYPE_RESORT" + // "TYPE_MOTEL" + // "TYPE_HOSTEL" + // "TYPE_GUESTHOUSE" + // "TYPE_VACATION_RENTAL" + // "TYPE_GAS_STATION" + // "TYPE_REST_AREA" + // "TYPE_CASH_MACHINE" + // "TYPE_CAR_RENTAL" + // "TYPE_CAR_REPAIR" + // "TYPE_TAXI_STAND" + // "TYPE_TRAVEL_AGENT" + // "TYPE_BICYCLE_RENTAL_POINT" + // "TYPE_ELECTRIC_VEHICLE_CHARGING_STATION" + // "TYPE_SHOPPING" + // "TYPE_GROCERY" + // "TYPE_ANTIQUES" + // "TYPE_APPAREL" + // "TYPE_GIFTS" + // "TYPE_JEWELRY" + // "TYPE_SPORTING_GOODS" + // "TYPE_VEHICLE" + // "TYPE_SHOPPING_CENTER" + // "TYPE_SUPERMARKET" + // "TYPE_FAIRGROUNDS" + // "TYPE_MARKET" + // "TYPE_PRODUCE_MARKET" + // "TYPE_FARMERS_MARKET" + // "TYPE_LIQUOR_STORE" + // "TYPE_SOUVENIR_SHOP" + // "TYPE_INDUSTRIAL" + // "TYPE_CONSTRUCTION" + // "TYPE_BUILDING_MATERIAL" + // "TYPE_SECURITY_PRODUCTS" + // "TYPE_MECHANICAL" + // "TYPE_TEXTILE" + // "TYPE_CHEMICAL" + // "TYPE_METAL" + // "TYPE_TRANSPORTATION" + // "TYPE_FREIGHT" + // "TYPE_AVIATION" + // "TYPE_COURIER" + // "TYPE_MOVING" + // "TYPE_PACKAGING" + // "TYPE_RAIL" + // "TYPE_PUBLIC_TRANSIT" + // "TYPE_WAREHOUSE" + // "TYPE_DEFENSE" + // "TYPE_AGRICULTURE" + // "TYPE_PLANTATION" + // "TYPE_PLANT_NURSERY" + // "TYPE_DESIGN" + // "TYPE_UTILITIES" + // "TYPE_POWER_PLANT" + // "TYPE_SEWAGE_TREATMENT_PLANT" + // "TYPE_WATER_TREATMENT_PLANT" + // "TYPE_SUBSTATION" + // "TYPE_MANUFACTURING" + // "TYPE_BIOTECH" + // "TYPE_MATERIALS" + // "TYPE_MINING" + // "TYPE_QUARRY" - Note: 0xF213F is reserved to extend TYPE_INDUSTRIAL + // "TYPE_TANNERY" + // "TYPE_OIL_REFINERY" + // "TYPE_ADVERTISING_MARKETING" + // "TYPE_LEGAL" + // "TYPE_FAMILY_LAW" + // "TYPE_IP_LAW" + // "TYPE_LABOR_LAW" + // "TYPE_PERSONAL_INJURY_LAW" + // "TYPE_CRIMINAL_LAW" + // "TYPE_PERSONAL_FINANCE" + // "TYPE_LIFE_INSURANCE" + // "TYPE_LENDING" + // "TYPE_ACCOUNTING" + // "TYPE_INVESTING" + // "TYPE_BANKING" + // "TYPE_HEALTH" + // "TYPE_HEALTH_EQUIPMENT" + // "TYPE_NURSING" + // "TYPE_HEALTH_INSURANCE" + // "TYPE_HEALTH_FACILITY" + // "TYPE_DIAGNOSTIC_CENTER" + // "TYPE_HEALTH_RESOURCES" + // "TYPE_NUTRITION" + // "TYPE_VISION" + // "TYPE_COUNSELING" + // "TYPE_MASSAGE" + // "TYPE_BLOOD_BANK" + // "TYPE_HEARING" + // "TYPE_HOME_GARDEN" + // "TYPE_INTERIOR_DECOR" + // "TYPE_DOMESTIC_SERVICES" + // "TYPE_APPLIANCES" + // "TYPE_PEST_CONTROL" + // "TYPE_GARDENING" + // "TYPE_ELECTRONICS" + // "TYPE_COMPUTER" + // "TYPE_COMPUTER_HARDWARE" + // "TYPE_COMPUTER_SECURITY" + // "TYPE_COMPUTER_SOFTWARE" + // "TYPE_COMPUTER_SUPPORT" + // "TYPE_AUDIO_DEVICES" + // "TYPE_VIDEO_DEVICES" + // "TYPE_REAL_ESTATE" + // "TYPE_OFFICE_SERVICES" + // "TYPE_ENTERTAINMENT" + // "TYPE_GAMES" + // "TYPE_CASINO" + // "TYPE_LOTTO" + // "TYPE_VIDEO" + // "TYPE_CLUBS" + // "TYPE_DISCOTHEQUE" + // "TYPE_ANIMATION" + // "TYPE_MODELING" + // "TYPE_HUMOR" + // "TYPE_MOVIES" + // "TYPE_MOVIE_RENTAL" + // "TYPE_MOVIE_THEATER" + // "TYPE_MUSIC" + // "TYPE_RADIO" + // "TYPE_TV" + // "TYPE_BAR" + // "TYPE_PRINT_MEDIA" + // "TYPE_ADULT" + // "TYPE_SEXUAL_SERVICES" + // "TYPE_ANIMALS" + // "TYPE_PETS" + // "TYPE_FISHERY" + // "TYPE_ARTS" + // "TYPE_BOOKS" + // "TYPE_PERFORMING_ARTS" + // "TYPE_GALLERY" + // "TYPE_AUTOMOTIVE" + // "TYPE_PARTS" + // "TYPE_AUTO_FINANCE" + // "TYPE_AUTO_INSURANCE" + // "TYPE_RV" + // "TYPE_MOTORCYCLES" + // "TYPE_CARS" + // "TYPE_TRUCKS_SUVS" + // "TYPE_LICENSING" + // "TYPE_MAINTENANCE" + // "TYPE_PERSONAL_CARE" + // "TYPE_BODY_ART" + // "TYPE_COSMETICS" + // "TYPE_FITNESS" + // "TYPE_YOGA_CENTER" + // "TYPE_GYM" + // "TYPE_HAIR_CARE" + // "TYPE_SPA" + // "TYPE_BEAUTY_SALON" + // "TYPE_CORPORATE_EVENTS" + // "TYPE_HUMAN_RESOURCES" + // "TYPE_FOOD_AND_DRINK" + // "TYPE_BEVERAGE" + // "TYPE_RECIPES" + // "TYPE_COOKWARE" + // "TYPE_CULINARY" + // "TYPE_RETAIL" + // "TYPE_RESTAURANT" + // "TYPE_COFFEE" + // "TYPE_BAKERY" + // "TYPE_FOOD_CENTER" + // "TYPE_TEA" + // "TYPE_CAFE" + // "TYPE_WINERY" + // "TYPE_BREWERY" + // "TYPE_FAST_FOOD" + // "TYPE_FOOD_DELIVERY" + // "TYPE_INTERNET" + // "TYPE_WEB_DESIGN" + // "TYPE_WEB_HOSTING" + // "TYPE_WEB_SERVICES" + // "TYPE_LIFESTYLE" + // "TYPE_PHOTO_VIDEO" + // "TYPE_ACTIVITIES" + // "TYPE_BOATING" + // "TYPE_CYCLING" + // "TYPE_EQUESTRIAN" + // "TYPE_FISHING" + // "TYPE_HIKING" + // "TYPE_HUNTING" + // "TYPE_SWIMMING" + // "TYPE_GOLF" + // "TYPE_GOLF_COURSE" + // "TYPE_BASEBALL" + // "TYPE_BASKETBALL" + // "TYPE_HOCKEY" + // "TYPE_MOTOR_SPORTS" + // "TYPE_WINTER_SPORTS" + // "TYPE_FOOTBALL" + // "TYPE_SOCCER" + // "TYPE_ICE_SKATING" + // "TYPE_BOXING" + // "TYPE_CRICKET" + // "TYPE_ROWING" + // "TYPE_RUGBY" + // "TYPE_RACQUET_SPORTS" + // "TYPE_ROCK_CLIMBING" + // "TYPE_REFERENCES" + // "TYPE_MAPS" + // "TYPE_TIME" + // "TYPE_SCIENTIFIC_EQUIPMENT" + // "TYPE_TELECOMMUNICATIONS" + // "TYPE_EVENT_VENUE" + // "TYPE_BANQUET_HALL" + // "TYPE_CONFERENCE_HALL" + // "TYPE_WEDDING_HALL" + // "TYPE_EXHIBITION_HALL" + // "TYPE_COMMUNITY_CENTER" + // "TYPE_AUDITORIUM" + // "TYPE_FUNCTION_HALL" + // "TYPE_CONCERT_HALL" + // "TYPE_AMPHITHEATER" + // "TYPE_LAUNDRY" + // "TYPE_LAUNDROMAT" + // "TYPE_DRY_CLEANER" + // "TYPE_MORTUARY" + // "TYPE_REPAIR_AND_MAINTENANCE" + // "TYPE_GOVERNMENT" + // "TYPE_BORDER_CROSSING" + // "TYPE_CITY_HALL" + // "TYPE_COURTHOUSE" + // "TYPE_EMBASSY" + // "TYPE_LIBRARY" + // "TYPE_PRISON" + // "TYPE_TAX_OFFICE" + // "TYPE_PROSECUTORS_OFFICE" + // "TYPE_CONGRESS" + // "TYPE_TOWN_COUNCIL" + // "TYPE_CAPITOL_BUILDING" + // "TYPE_VOTING_FACILITY" + // "TYPE_CHECKPOINT" + // "TYPE_SCHOOL" + // "TYPE_UNIVERSITY" + // "TYPE_ORPHANAGE" + // "TYPE_KINDERGARTEN" + // "TYPE_DAYCARE" + // "TYPE_ACADEMY" + // "TYPE_TRADE_SCHOOL" + // "TYPE_SKILL_INSTRUCTION" + // "TYPE_EMERGENCY" + // "TYPE_HOSPITAL" + // "TYPE_PHARMACY" + // "TYPE_POLICE" + // "TYPE_FIRE" + // "TYPE_DOCTOR" + // "TYPE_DENTIST" + // "TYPE_VETERINARIAN" + // "TYPE_FIRST_AID" + // "TYPE_CIVIL_DEFENSE" + // "TYPE_TOURIST_DESTINATION" + // "TYPE_ECO_TOURIST_DESTINATION" + // "TYPE_BIRD_WATCHING" + // "TYPE_NATURE_RESERVE" + // "TYPE_MUSEUM" + // "TYPE_VISITOR_CENTER" + // "TYPE_OBSERVATION_DECK" + // "TYPE_OBSERVATORY" + // "TYPE_SCENIC_POINT" + // "TYPE_ZOO" + // "TYPE_AQUARIUM" + // "TYPE_AMUSEMENT_PARK" + // "TYPE_MONUMENT" + // "TYPE_PALACE" + // "TYPE_FORT" + // "TYPE_TOWER" + // "TYPE_LIGHTHOUSE" - 0xF6F is reserved and any new types should + // start with 0xF6F1 + // "TYPE_TEMPLE" + // "TYPE_CHURCH" + // "TYPE_GURUDWARA" + // "TYPE_HINDU_TEMPLE" + // "TYPE_MOSQUE" + // "TYPE_SYNAGOGUE" + // "TYPE_BUDDHIST_TEMPLE" + // "TYPE_JAIN_TEMPLE" + // "TYPE_BAHAI_TEMPLE" + // "TYPE_SHINTO_TEMPLE" + // "TYPE_MORMON_TEMPLE" + // "TYPE_SPORTS_COMPLEX" + // "TYPE_STADIUM" + // "TYPE_BOWLING" + // "TYPE_BADMINTON" + // "TYPE_TENNIS" + // "TYPE_TABLE_TENNIS" + // "TYPE_PARK" - State parks, county parks, city parks, wilderness + // areas. This also includes underwater preserves, wild and scenic + // rivers, etc. Should we have things like baseball diamonds? + // "TYPE_LOCAL_PARK" + // "TYPE_NATIONAL_PARK" + // "TYPE_US_NATIONAL_PARK" + // "TYPE_US_NATIONAL_MONUMENT" + // "TYPE_NATIONAL_FOREST" + // "TYPE_NATIONAL_GRASSLAND" + // "TYPE_NATIONAL_PRESERVE" + // "TYPE_NATIONAL_RECREATION_AREA" + // "TYPE_NATIONAL_MONUMENT" + // "TYPE_NATIONAL_HISTORIC_AREA" + // "TYPE_NATIONAL_SCENIC_AREA" + // "TYPE_NATIONAL_SCENIC_ROADWAY_AREA" + // "TYPE_NATIONAL_SCENIC_RIVER_AREA" + // "TYPE_PROVINCIAL_PARK" + // "TYPE_PROVINCIAL_FOREST" + // "TYPE_CAMPGROUNDS" + // "TYPE_WILDERNESS_AREA" - Wildlife management area. This includes + // preservation areas for fish, game, and birds. + // "TYPE_WILDLIFE_AREA" + // "TYPE_BOTANICAL_GARDEN" + // "TYPE_GARDEN" + // "TYPE_ARBORETUM" + // "TYPE_MARINE_PROTECTED_AREA" + // "TYPE_AIRPORT" - An airport is a location where aircraft such as + // fixed-wing aircraft, helicopters, and blimps takeoff and land. NOTE: + // TYPE_TARMAC establishment type has been deprecated in favor of + // TYPE_TARMAC feature type. Once all data is modeled using the new + // feature type, the entry below should be removed. + // "TYPE_TARMAC" - DEPRECATED + // "TYPE_HELIPORT" - A heliport is a small airport suitable only for + // use by helicopters. + // "TYPE_SEAPLANE_BASE" - A seaplane base is a special airport + // suitable for seaplanes. + // "TYPE_MILITARY_AIRBASE" - An airbase (sometimes referred to + // correctly as an airfield, military airport, or Royal Air Force + // Station or Air Force Station) is a military airfield that provides + // basing and support of military aircraft. + // "TYPE_CEMETERY" + // "TYPE_MILITARY" + // "TYPE_ENCLOSED_TRAFFIC_AREA" - The term "enclosed traffic area" is + // used extensively in Europe. It generally refers to a parking lot or + // other similar area through which traffic passes but are not generally + // considered to be a road. Another example is a piazza in an Italian + // town. + // "TYPE_PARKING" - Establishment TYPE_PARKING is used for parking + // lots or garages. The actual feature type can be + // TYPE_ESTABLISHMENT_GROUNDS or TYPE_ESTABLISHMENT_BUILDING to + // distinguish between those. + // "TYPE_OFF_ROAD_AREA" + // "TYPE_POST_OFFICE" + // "TYPE_HOUSING_DEVELOPMENT" - In some country (like China), there + // will have a small area of housing development. Normally covers one or + // more city blocks. + // "TYPE_BRIDGE" - In the Australian data we get bridges as POIs + // effectively. We'd like to include them so we can mapsearch for + // "Sydney Harbour Bridge" and others. Many other data sets have bridges + // modeled directly as segments, and so don't require this. + // "TYPE_ARCHAEOLOGICAL" + // "TYPE_HISTORICAL" - In some countries historical objects are well + // known and important. + // "TYPE_RUINS" + // "TYPE_TUNNEL" - Feature must be TYPE_ESTABLISHMENT_GROUNDS. + // "TYPE_RESIDENTIAL_DWELLING" - These types, when used with + // appropriate feature type (TYPE_ESTABLISHMENT_BUILDING, + // TYPE_ESTABLISHMENT_GROUNDS) can refer to a single building or a + // residential area (respectively). + // "TYPE_DETACHED_DWELLING" + // "TYPE_ATTACHED_DWELLING" + // "TYPE_APARTMENT" - All multi-unit housing such as duplex, + // condominium, apartment belongs to this. + // "TYPE_GATED_COMMUNITY" + // "TYPE_RETIREMENT_HOME" + // "TYPE_TOLL_BOOTH" - In Korea most toll booths have their own names, + // and are often used as reference points. If an importer generates + // TYPE_TOLL_BOOTH establishment features with exact positions and + // names, then mapsearch will index them. Also this can be used to + // render them. + // "TYPE_CULTURAL" + // "TYPE_CULTURAL_CENTER" + // "TYPE_OVERPASS" - An overpass, or flyover is a structure that + // passes over another road or railway. + // "TYPE_REST_ROOM" + // "TYPE_PUBLIC_PHONE" + // "TYPE_PHONE_BOOTH" + // "TYPE_MANNED_PCO" + // "TYPE_RESEARCH_INSTITUTE" + // "TYPE_NON_GOVERNMENTAL_ORGANIZATION" + // "TYPE_OFFICE_PARK" + // "TYPE_MEDITATION_CENTER" + // "TYPE_RELIGIOUS" + // "TYPE_MONASTERY" + // "TYPE_ASHRAM" + // "TYPE_PAGODA" + // "TYPE_MISSION" + // "TYPE_PILGRIM_DESTINATION" + // "TYPE_SOCIAL_SERVICE" + // "TYPE_RANGER_STATION" + // "TYPE_TRANSIT_STATION" - Hierarchy of transit station types. See + // go/transit-schema for more details. + // "TYPE_BUS_STATION" + // "TYPE_TRAMWAY_STATION" + // "TYPE_TRAIN_STATION" + // "TYPE_SUBWAY_STATION" + // "TYPE_FERRY_TERMINAL" + // "TYPE_CABLE_CAR_STATION" + // "TYPE_GONDOLA_LIFT_STATION" + // "TYPE_FUNICULAR_STATION" + // "TYPE_HORSE_CARRIAGE_STATION" + // "TYPE_MONORAIL_STATION" + // "TYPE_SEAPORT" + // "TYPE_NATURAL_FEATURE" + // "TYPE_ELEVATED" + // "TYPE_PEAK" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BizbuilderReference") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BizbuilderReference") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreEstablishmentProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreEstablishmentProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreExceptionalHoursProto: An ExceptionalHoursProto holds +// information about exceptional (non-regular) hours for a business, +// such as holiday hours. +type GeostoreExceptionalHoursProto struct { + // Hours: The weekly schedule to be applied for the dates that fall + // within the range. The schedule may contain hours only for days of the + // week that occur during the date range specified in the range field. + Hours *GeostoreBusinessHoursProto `json:"hours,omitempty"` + + // Metadata: Field-level metadata for this exception. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Range: The dates for which this exception applies, expressed as a + // half open interval. For example, an exception that applies for the + // entire month of December 2015 should have a range December 1, 2015 to + // January 1, 2016. Any regular hours that start on days in this range + // are ignored and replaced by the exceptional hours for that day. The + // TimeIntervalProto for the range must be a fully specified, non-empty, + // and non-inverted range of dates. Concretely, the requirements are: * + // the range must be a TYPE_RANGE interval * the interval may not be + // inverted * the endpoints of the interval must specify a year, month, + // and day * the day_type of each endpoint must be type DAY_OF_MONTH * + // the endpoints may not specify hour, minute, second, week, or + // week_type * the begin endpoint must predate the end endpoint + Range *GeostoreTimeIntervalProto `json:"range,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Hours") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Hours") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreExceptionalHoursProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreExceptionalHoursProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreExistenceProto struct { + // CloseReason: Structured reason for the permanent closure (if any). + // + // Possible values: + // "CLOSED" - The establishment is permanently closed. + // "MOVED" - The establishment moved to another location. There may be + // a new feature representing the "same" establishment at its new + // location and if so, this feature should have a + // RELATION_BUSINESS_MOVED relation to that other feature. + // "REBRANDED" - The establishment was rebranded. There may be a new + // feature representing the "same" establishment with its new branding + // and if so, this feature should have a RELATION_BUSINESS_REBRANDED + // relation to that other feature. + CloseReason string `json:"closeReason,omitempty"` + + // Closed: Indicates whether the place is closed (permanently or + // temporarily), i.e., not operational in the present, but was at in the + // past and/or will be in the future. WARNING: New code should use Geo + // Schema's libraries instead, specifically the OpeningStatus APIs, + // available in: * C++ + // (cs/f:google3/geostore/base/public/feature.h%20function:ExistenceState + // ) * Java + // (cs/f:google3/java/com/google/geostore/base/Existence.java%20function: + // OpeningStatus) * Python + // (cs/f:google3/geostore/base/public/python/feature.clif%20existence_sta + // te) + Closed bool `json:"closed,omitempty"` + + // EndAsOfDate: RESERVED + EndAsOfDate *GeostoreDateTimeProto `json:"endAsOfDate,omitempty"` + + EndDate *GeostoreDateTimeProto `json:"endDate,omitempty"` + + // FeatureBirthTimestampSeconds: ** 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. Different + // from start_date in that this is the birth date of Google's + // representation of the place whereas start_date is the birth date of + // the place in the physical world. + FeatureBirthTimestampSeconds int64 `json:"featureBirthTimestampSeconds,omitempty,string"` + + // Removed: 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/Feature.java). + Removed bool `json:"removed,omitempty"` + + // RemovedReason: Structured reason why the feature is marked as + // removed. Relevant only when removed == true. + // + // Possible values: + // "UNKNOWN" - Reason unknown or not captured by one of the other + // values. + // "BOGUS" - Bogus data - doesn't represent a real world geographic + // place or is just largely bad/incorrect data. + // "PRIVATE" - Considered "private" data and we're legally (or + // otherwise) obligated to remove it. + // "SPAM" - Bad data that was intentionally/maliciously contributed. + // "UNSUPPORTED" - Not enough data to support the existence of the + // feature. Different from the BOGUS case in that there is no positive + // evidence that place is/was incorrect. NOTE: This removal reason can + // only be set/unset by PROVIDER_GOOGLE_LOCAL_ALCHEMY and + // PROVIDER_GOOGLE_OYSTER_AUTO_EDITS. + // "PENDING" - Indicates that the existence of the place is yet to be + // justified. + // "DUPLICATE" - Place has been identified as duplicate of and merged + // to another place. NOTE: This removal reason cannot be set for + // TYPE_SEGMENT. NOTE: If you have access to a complete FeatureProto, do + // NOT read this bit directly to find out whether a feature is a + // duplicate. Instead, rely on the IsDuplicateFeature() API, available + // in C++ (geostore/base/public/feature.h) and Java + // (geostore/base/Feature.java). + // "OLD_SCHEMA" - The feature uses an old version of the Geo Schema + // (e.g. it has a deprecated feature type). + // "REPLACED" - Feature has been replaced by one or more other + // features. E.g. a segment got split and is now replaced by 2 segments. + // This is different than DUPLICATE because the feature is not a + // duplicate (in the identity sense) of the feature(s) that replace it. + // NOTE: this removal reason is currently allowed to be set only on + // TYPE_SEGMENT features. + // "ROLLED_BACK" - The edit that created the feature has been rolled + // back. + RemovedReason string `json:"removedReason,omitempty"` + + // StartDate: (Initial) opening and (permanent) closing dates of the + // establishment, such that start_date is the first day open and + // end_date is the first day closed. 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. + StartDate *GeostoreDateTimeProto `json:"startDate,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CloseReason") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CloseReason") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreExistenceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreExistenceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFeatureFieldMetadataProto: Provenance information for +// sub-fields of this feature. +type GeostoreFeatureFieldMetadataProto struct { + FieldProvenance []*GeostoreFeatureFieldMetadataProtoFieldProvenance `json:"fieldProvenance,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FieldProvenance") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FieldProvenance") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeatureFieldMetadataProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeatureFieldMetadataProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreFeatureFieldMetadataProtoFieldProvenance struct { + // FieldPath: Represents all fields for which this SourceInfo is valid. + // NOTE: Field paths are rooted at FeatureProto level. + FieldPath []*GeostoreStableFieldPathProto `json:"fieldPath,omitempty"` + + Provenance *GeostoreProvenanceProto `json:"provenance,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FieldPath") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FieldPath") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeatureFieldMetadataProtoFieldProvenance) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeatureFieldMetadataProtoFieldProvenance + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFeatureHistoryMetadataProto: Metadata related to the history +// of a given feature in the Geo repository. +type GeostoreFeatureHistoryMetadataProto struct { + // FeatureBirthTimestampUs: The timestamp (in microseconds since the + // UNIX epoch) when this feature first went live in the Geo repository. + // Note that this has no relation to the birth data of that geographical + // entity in the real world. + FeatureBirthTimestampUs int64 `json:"featureBirthTimestampUs,omitempty,string"` + + // LastModificationTimestampUs: The timestamp (in microseconds since the + // UNIX epoch) of the last modification to the feature. Note this + // includes attachment modifications. The feature's initial creation is + // also considered as a modification. This is useful for those that + // consume features via both listening to notifications and reading from + // repository snapshots. This timestamp can be used to decide whether a + // feature in the snapshot was already seen in a more recent state + // through the notifications. + LastModificationTimestampUs int64 `json:"lastModificationTimestampUs,omitempty,string"` + + // RemovalTimestampUs: The timestamp (in microseconds since the UNIX + // epoch) of the deletion time of the feature. If the feature is + // currently removed, this field gets populated with the timestamp the + // feature first became removed after being live (or being removed from + // beginning). This field won't be set if the feature is live. + RemovalTimestampUs int64 `json:"removalTimestampUs,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. + // "FeatureBirthTimestampUs") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FeatureBirthTimestampUs") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeatureHistoryMetadataProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeatureHistoryMetadataProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFeatureIdForwardingsProto: 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. +type GeostoreFeatureIdForwardingsProto struct { + // DuplicateOf: If the feature has been marked as a DUPLICATE of another + // feature, this is the feature ID of that other feature. Note that the + // other feature may itself be removed. This field is NOT set in (1). + DuplicateOf *GeostoreFeatureIdProto `json:"duplicateOf,omitempty"` + + // ForwardedId: The feature ID of the forwarded feature. This field is + // only set in case (3). + ForwardedId *GeostoreFeatureIdProto `json:"forwardedId,omitempty"` + + // InactiveDuplicate: If other features have been marked as DUPLICATE of + // this feature, this is the set of all such feature IDs. All feature + // IDs in this set should be for removed (aka inactive) features. Note + // that in the context of historical read requests against MapFacts + // (when ReadRequest.version_selection.timestamp is set), this field + // won't be set. + InactiveDuplicate []*GeostoreFeatureIdProto `json:"inactiveDuplicate,omitempty"` + + // ReplacedBy: If the feature has been REPLACED by one or more other + // feature(s), this is the list of feature IDs of the replacement + // feature(s). Note that the other features may themselves be removed. + ReplacedBy *GeostoreFeatureIdListProto `json:"replacedBy,omitempty"` + + // TransitivelyDuplicateOf: If the feature has been transitively marked + // as a DUPLICATE of another feature (via a chain of size >= 1), this is + // the feature ID of that other feature which is the end of the chain. + // The field is always set even if the chain is of size 1. Note that the + // other feature may itself be removed. This field is only set in case + // (3). + TransitivelyDuplicateOf *GeostoreFeatureIdProto `json:"transitivelyDuplicateOf,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DuplicateOf") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DuplicateOf") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeatureIdForwardingsProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeatureIdForwardingsProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFeatureIdListProto: A simple list of feature IDs. +type GeostoreFeatureIdListProto struct { + // Id: The list of feature IDs. While the exact semantics of these IDs + // are usage-dependent, the list should never be empty or contain + // duplicates. + Id []*GeostoreFeatureIdProto `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeatureIdListProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeatureIdListProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFeatureIdProto: 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. +type GeostoreFeatureIdProto struct { + // CellId: The S2CellId corresponding to the approximate location of + // this feature as of when it was first created. This can be of variable + // accuracy, ranging from the exact centroid of the feature at creation, + // a very large S2 Cell, or even being completely randomized for + // locationless features. Cell ids have the nice property that they + // follow a space-filling curve over the surface of the earth. (See + // s2cellid.h for details.) WARNING: Clients should only use cell IDs to + // perform spatial locality optimizations. There is no strict guarantee + // that the cell ID of a feature is related to the current geometry of + // the feature in any way. + CellId uint64 `json:"cellId,omitempty,string"` + + // Fprint: A 64-bit fingerprint used to identify features. Most clients + // should rely on MapFacts or OneRing to choose fingerprints. If + // creating new fprints, the strategy should be chosen so that the + // chance of collision is remote or non-existent, and the distribution + // should be reasonably uniform. For example, if the source data assigns + // unique ids to features, then a fingerprint of the provider name, + // version, and source id is sufficient. + Fprint uint64 `json:"fprint,omitempty,string"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // feature ID. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CellId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CellId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeatureIdProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeatureIdProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFeatureMetadataProto: General metadata related to a given +// feature in the Geo repository. +type GeostoreFeatureMetadataProto struct { + // BulkUpdatable: This field indicates whether the feature is subject to + // bulk updates. Caution must be exercised while editing such features + // since the changes made by the edits will be overwritten by the bulk + // update (if the feature is bulk updated). See go/mapfacts-abu for more + // information. + // + // Possible values: + // "NOT_BULK_UPDATABLE" - The feature will not be bulk updated. + // "BULK_UPDATABLE" - The feature has been bulk updated, and may be + // bulk updated again in the future. Note that this refers specifically + // to the atomic bulk-upload process, not methods of applying large sets + // of (independent) edits (e.g. with BEST). + BulkUpdatable string `json:"bulkUpdatable,omitempty"` + + // CoreVersionToken: core_version_token is an opaque token representing + // the version of the core fields of the feature. This field is not + // updated when attachments are changed. + CoreVersionToken string `json:"coreVersionToken,omitempty"` + + // FieldMetadata: Metadata about certain repeated fields and their + // subfields, for which field type is not granular enough. + FieldMetadata *GeostoreFeatureFieldMetadataProto `json:"fieldMetadata,omitempty"` + + // Forwardings: Feature ID forwardings, if applicable. + Forwardings *GeostoreFeatureIdForwardingsProto `json:"forwardings,omitempty"` + + // History: Metadata related to the history. + History *GeostoreFeatureHistoryMetadataProto `json:"history,omitempty"` + + // VersionToken: version_token is an opaque token representing the + // version of this feature. It can be used as a concurrency token when + // sending edits. + VersionToken string `json:"versionToken,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BulkUpdatable") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BulkUpdatable") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeatureMetadataProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeatureMetadataProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFeaturePropertyIdProto: 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. +type GeostoreFeaturePropertyIdProto struct { + // AttachmentTypeId: field_type == ATTACHMENT + AttachmentTypeId uint64 `json:"attachmentTypeId,omitempty,string"` + + // AttributeId: field_type == FEATURE_ATTRIBUTE + AttributeId string `json:"attributeId,omitempty"` + + // Possible values: + // "NONE" + // "ACCESS_POINT" + // "ADDRESS" + // "ANCHORED_GEOMETRY_GEOMETRY_ID" + // "ATTACHMENT" + // "BIZBUILDER_REFERENCE" + // "BORDER_FEATURE_ID_LEFT" + // "BORDER_FEATURE_ID_RIGHT" + // "BORDER_OVERRIDE_STATUS" + // "BORDER_STATUS" + // "BORDER_TYPE" + // "BORDER_LOGICAL_BORDER" + // "BOUND" + // "BUILDING_BASE_HEIGHT_METERS_AGL" + // "BUILDING_DEFAULT_DISPLAY_LEVEL" + // "BUILDING_FLOORS" + // "BUILDING_HEIGHT_METERS" + // "BUILDING_LEVEL" + // "BUILDING_STRUCTURE" + // "BUSINESS_CHAIN_CANONICAL_GCONCEPT" + // "BUSINESS_HOURS" + // "DATA_SOURCE" + // "DISPLAY_DATA" + // "ENTRANCE_ALLOWANCE" + // "ESTABLISHMENT_OPENING_HOURS_EXCEPTION" + // "ESTABLISHMENT_OPENING_HOURS_REGULAR_HOURS" + // "ESTABLISHMENT_PRICE_INFO" + // "ESTABLISHMENT_SERVICE_AREA_SERVED_FEATURE" + // "EXISTENCE_STATUS" + // "FEATURE_AVERAGE_ELEVATION" + // "FEATURE_BEST_LOCALE" + // "FEATURE_CELL_COVERING" + // "FEATURE_CENTER" + // "FEATURE_CHILD" + // "FEATURE_EXEMPT_REGULATED_AREA" + // "FEATURE_INTERIOR_CELL_COVERING" + // "FEATURE_NAME" + // "FEATURE_PARENT" + // "FEATURE_POSE" + // "FEATURE_PREFERRED_VIEWPORT" + // "FEATURE_TRACK" + // "FEATURE_TYPE" + // "FEATURE_WEBSITE" + // "FIELD_RIGHTS" + // "FUTURE_GEOMETRY" + // "FUTURE_GEOMETRY_FOR" + // "GCONCEPT" + // "GEOMETRY_PRECISION_METERS" + // "GEOPOLITICAL_GEOMETRY_REST_OF_WORLD_POLYGON" + // "GEOPOLITICAL_GEOMETRY_SELF_POLYGON" + // "INFERRED_GEOMETRY_INCLUDES_GEOMETRY_OF" + // "INFERRED_GEOMETRY_EXCLUDES_GEOMETRY_OF" + // "INFERRED_GEOMETRY_DEFINES_GEOMETRY_FOR" + // "INTERSECTION" + // "INTERSECTION_GROUP" + // "INTERSECTION_GROUP_CHILD_GROUP" + // "INTERSECTION_GROUP_GROUP_TYPE" + // "INTERSECTION_GROUP_PARENT_GROUP" + // "INTERSECTION_IN_GROUP" + // "INTERSECTION_TOLL_CLUSTER" + // "IN_SEGMENT" + // "KNOWLEDGE_GRAPH_PROPERTY" + // "LABEL_BACKGROUND_COLOR" + // "LABEL_TEXT_COLOR" + // "LANE_MARKER_BARRIER_MATERIALS" + // "LANE_MARKER_CROSSING_PATTERN" + // "LANE_MARKER_LINEAR_PATTERN" + // "LEVEL_BUILDING" + // "LEVEL_NUMBER" + // "LOCALE_LANGUAGE" + // "LOCALE_LOCALIZATION_POLICY_ID" + // "LOGICAL_BORDER_BORDER_SEGMENT" + // "LOGICAL_BORDER_STATUS" + // "OPERATIONS_TEMPORARY_CLOSURE" + // "PARKING_ALLOWANCE" + // "PARKING_AVAILABLE" + // "PARKING_OPENING_HOURS_EXCEPTION" + // "PARKING_OPENING_HOURS_REGULAR_HOURS" + // "PARKING_PROVIDER_FEATURE" + // "PARKING_RESTRICTION" + // "PEAK_PROMINENCE" + // "PHONE_NUMBER" + // "POINT" + // "POLYGON" + // "POLYGON_FOR_DISPLAY" + // "POLYLINE" + // "RANK" + // "RANK_SIGNAL" + // "REGULATED_AREA_RESTRICTION" + // "RELATED_BORDER" + // "RELATED_ENTRANCE" + // "RELATED_FEATURE" + // "RELATED_TERMINAL_POINT" + // "RELATED_TIMEZONE" + // "RESTRICTION_GROUP_SEGMENT" + // "ROAD_MONITOR_MONITORED_ROAD" + // "ROUTE_CHILD_TYPE" + // "SEGMENT_ADVISORY_MAXIMUM_SPEED" + // "SEGMENT_AVERAGE_SPEED" + // "SEGMENT_BARRIER" + // "SEGMENT_BICYCLE_FACILITY" + // "SEGMENT_BICYCLE_SAFETY" + // "SEGMENT_CONDITION" + // "SEGMENT_CONSTRUCTION_BEGIN_DATE" + // "SEGMENT_CONSTRUCTION_END_DATE" + // "SEGMENT_CONSTRUCTION_STATUS" + // "SEGMENT_COVERED" + // "SEGMENT_DISTANCE_TO_EDGE" + // "SEGMENT_EDGE_FOLLOWS_SEGMENT_BEGIN_FRACTION" + // "SEGMENT_EDGE_FOLLOWS_SEGMENT_END_FRACTION" + // "SEGMENT_ELEVATION" + // "SEGMENT_ENDPOINT" + // "SEGMENT_GRADE_LEVEL_LIST" + // "SEGMENT_INTERNAL_TRAVEL_ALLOWANCE" + // "SEGMENT_INTERPOLATION_OFFSET_METERS" + // "SEGMENT_IS_MAX_PERMITTED_SPEED_DERIVED" + // "SEGMENT_LANE" + // "SEGMENT_LEGAL_MAXIMUM_SPEED" + // "SEGMENT_LEGAL_MINIMUM_SPEED" + // "SEGMENT_MAX_SPEED" + // "SEGMENT_ON_RIGHT" + // "SEGMENT_PATH" + // "SEGMENT_PEDESTRIAN_CROSSING" + // "SEGMENT_PEDESTRIAN_FACILITY" + // "SEGMENT_PEDESTRIAN_GRADE" + // "SEGMENT_PRIORITY" + // "SEGMENT_RESTRICTION" + // "SEGMENT_ROAD_CAMERA" + // "SEGMENT_ROAD_SIGN" + // "SEGMENT_ROUTE" + // "SEGMENT_ROUTE_ASSOCIATION" + // "SEGMENT_SEPARATED_ROADWAYS" + // "SEGMENT_SURFACE" + // "SEGMENT_SWEEP" + // "SEGMENT_TOLL_ROAD" + // "SEGMENT_USAGE" + // "SEGMENT_VISIBLE_LANDMARK" + // "SIGN_COMPONENT" + // "SOCIAL_REFERENCE_CLAIMED_GAIA_ID" + // "SOURCE_INFO" + // "STATUS_CLOSED" + // "STATUS_CLOSE_REASON" + // "STATUS_END_AS_OF_DATE" + // "STATUS_END_DATE" + // "STATUS_REMOVED" + // "STATUS_REMOVED_REASON" + // "STATUS_START_DATE" + // "STOREFRONT_GEOMETRY" + // "SYNTHETIC_GEOMETRY" + // "THREE_DIMENSIONAL_MODEL" + // "TOLL_CLUSTER_INTERSECTION" + // "TRANSIT_LINE_AGENCY" + // "TRANSIT_LINE_STATION" + // "TRANSIT_LINE_VARIANT_LINE_CONCEPT" + // "TRANSIT_LINE_VARIANT_STOP" + // "TRANSIT_LINE_VEHICLE_TYPE" + // "TRANSIT_STATION_AGENCY" + // "VERTICAL_ORDERING_LEVEL" + // "WATER_REMOVED_POLYGON" + // "DEPRECATED_DO_NOT_USE_EMAIL_ADDRESS" + // "DEPRECATED_DO_NOT_USE_RANK_GEOMETRY" + // "DEPRECATED_DO_NOT_USE_SEGMENT_INFO" + // "DEPRECATED_DO_NOT_USE_SEGMENT_LANE_LIST" + // "DEPRECATED_DO_NOT_USE_SEGMENT_WRONG_WAY" + // "DEPRECATED_DO_NOT_USE_WEBSITE" + // "FEATURE_ATTRIBUTE" + // "SOCIAL_REFERENCE" + // "CATEGORY" + // "DEPRECATED_DO_NOT_USE_CAPITAL" + // "DEPRECATED_DO_NOT_USE_DESCRIPTION" + // "DEPRECATED_DO_NOT_USE_DISTINCT" + // "DEPRECATED_DO_NOT_USE_DUPLICATE" + // "EDIT_PRECEDENCE" + // "DEPRECATED_DO_NOT_USE_EDIT_PRECEDENCE" + // "DEPRECATED_DO_NOT_USE_ENTRANCE_TARGET" + // "DEPRECATED_DO_NOT_USE_ESTABLISHMENT_PLACE_ACTION_PAGE" + // "DEPRECATED_DO_NOT_USE_ESTABLISHMENT_TYPE" + // "DEPRECATED_DO_NOT_USE_EVENT" + // "DEPRECATED_DO_NOT_USE_GEOMETRIC_ACCURACY" + // "DEPRECATED_DO_NOT_USE_HIGHEST_GRADE" + // "DEPRECATED_DO_NOT_USE_ID_TO_OVERRIDE" + // "DEPRECATED_DO_NOT_USE_ISSUE_HISTORY" + // "DEPRECATED_DO_NOT_USE_ISSUE_METADATA" + // "DEPRECATED_DO_NOT_USE_KNOWLEDGE_GRAPH_ID" + // "DEPRECATED_DO_NOT_USE_LOWEST_GRADE" + // "DEPRECATED_DO_NOT_USE_PAYMENT_TYPES" + // "DEPRECATED_DO_NOT_USE_PHOTO" + // "DEPRECATED_DO_NOT_USE_PHOTO_URL" + // "DEPRECATED_DO_NOT_USE_PLACE_CLOSED" + // "DEPRECATED_DO_NOT_USE_POPULATION" + // "DEPRECATED_DO_NOT_USE_RANK_USER" + // "DEPRECATED_DO_NOT_USE_REMOVE_DUPLICATE" + // "DEPRECATED_DO_NOT_USE_REMOVE_PLACE" + // "DEPRECATED_DO_NOT_USE_SCHOOL_TYPE" + // "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_BEGIN" + // "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_END" + // "DEPRECATED_DO_NOT_USE_SEGMENT_ELEVATION_MIDDLE" + // "DEPRECATED_DO_NOT_USE_SYLLABUS" + // "DEPRECATED_DO_NOT_USE_TRACK_CLASS" + // "DEPRECATED_DO_NOT_USE_VIEWCODE_INFO" + // "DEPRECATED_DO_NOT_USE_WORKAREA" + FieldType string `json:"fieldType,omitempty"` + + // KgPropertyId: field_type == KNOWLEDGE_GRAPH_PROPERTY + KgPropertyId string `json:"kgPropertyId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AttachmentTypeId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AttachmentTypeId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeaturePropertyIdProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeaturePropertyIdProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFeatureProto: 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. +type GeostoreFeatureProto struct { + // AccessPoint: Optional access point information. Access points hold + // detailed information about routing endpoints. For example, the main + // Google office is at "1600 Amphitheatre Parkway". The feature + // representing that office has a polygon, a center, and an address with + // components for the street number, route, locality, etc. The access + // point information, on the other hand, identifies the specific + // segment, the latitude/longitude of the driveway, and so forth. + AccessPoint []*GeostoreAccessPointProto `json:"accessPoint,omitempty"` + + // Address: Address for this feature. A Geo Schema address is designed + // to model a mailing address, so only features that have mailing + // addresses in the real world may have addresses. Each feature should + // have only one address. If you want to describe the geographic + // location of a feature which does not have a mailing address with + // respect to other well-known features, some other schema constructs + // should be used. Note that the field is defined as repeated though + // features that use this field with its intended semantics are + // constrained to have a single address even if they may have multiple + // mailing addresses in the real world. The “single address” rule is + // enforced by lint. Current exceptions to the single address rule and + // mailing address rule are described in the g3doc. Bear note that the + // schema team is actively working on eliminating these exceptions. + // http://go/geo-addresses Note the following conventions: - Addresses + // follow the postal hierarchy, not the political hierarchy. Addresses + // may have components that refer to political entities when those + // entities also appear in the postal hierarchy. - As stated previously, + // but it bears repeating, addresses on features are mailing addresses. + // In many cases the physical address and the mailing address are the + // same but the address stored on a feature represents the mailing + // address of the feature. An example of a non-physical mailing address + // would be a PO Box. - These addresses are commonly defined and + // verifiable by a governmental authority (e.g. the United States Postal + // Service in the United States, Royal Mail in the United Kingdom, + // Correios in Brazil, etc.) and should follow conventions and rules + // defined by those authorities. + Address []*GeostoreAddressProto `json:"address,omitempty"` + + // AnchoredGeometry: Represents information about the feature’s + // anchored geometry. + AnchoredGeometry *GeostoreAnchoredGeometryProto `json:"anchoredGeometry,omitempty"` + + // Attachment: The collection of attachments for this feature. + // Documentation: http://go/geo-attachments + Attachment []*GeostoreAttachmentsAttachmentProto `json:"attachment,omitempty"` + + // Attribute: ** DEPRECATED ** A list of attributes that describe + // defined aspects of this feature. An attribute must be a concrete, + // high quality, and editable piece of information about a feature, and + // must be used on some general consumer facing Google property. The + // data types used for attributes must be primitive types or reusable in + // a generic manner. + Attribute []*GeostoreAttributeProto `json:"attribute,omitempty"` + + // BestLocale: Describes the best-match locale for this feature. + BestLocale *GeostoreBestLocaleProto `json:"bestLocale,omitempty"` + + Border *GeostoreBorderProto `json:"border,omitempty"` + + // Bound: A latitude-longitude rectangle used by bucketing MapReduces. + // See the documentation on bucketing MapReduce for details. This field + // can be a source of confusion. Because it is called "bound", it is + // often assumed that it is a tight bound on the geometry but it can be + // (and often is) much larger. If a tight bound is needed then use the + // standard GetFeatureGeometryBound() function instead. To be more + // explicit, if you are using this field for *anything* else than a + // bucketing MapReduce, you are doing the wrong thing. Not all features + // are required to have bounding boxes. See + // geostore::IsBoundRequiredForFeatureType() for the list of feature + // types required to have a bounding box. This bound field will be + // updated when a feature changes in MapFacts to include its geometry. + // Also, a GeoSchema pipeline, + // go/geo-schema-pipelines-docs#expand-bounds runs periodically to + // update the field for strong references from other features. + // Therefore, most editors don't need to edit this field explicitly. See + // go/geo-changes:no-edit-for-feature-bound for the details. + Bound *GeostoreRectProto `json:"bound,omitempty"` + + Building *GeostoreBuildingProto `json:"building,omitempty"` + + // BusinessChain: Data specific to business chain features, e.g., + // Canonical GConcepts. + BusinessChain *GeostoreBusinessChainProto `json:"businessChain,omitempty"` + + // Center: The conceptual center of the feature, used for routing. For + // cities, this would be the center of the downtown, or maybe the + // location of city hall. For states and countries it might be the + // capital city. Most feature types will not have a conceptual center - + // by default, routing will use the centroid of the feature's geometry. + // If you need a feature center point consider using + // GetFeatureGeometryCenter() function from + // geostore/base/public/feature.h rather than reading from this field + // directly. + Center *GeostorePointProto `json:"center,omitempty"` + + // Child: Features can define themselves as a collection of other + // features. For example, a route is a collection of road segments, and + // a feature for the "Great Lakes" could be defined as lakes Superior, + // Michigan, Huron, Erie, and Ontario. It is not recommended to design a + // multi level tree using the child field to build up a feature because + // it requires fetching many features to see the details of the feature. + // In practice this is used to model archipelago, route, transit + // (agencies, lines, trips, departures), and river features. The + // geometry of a feature is implicitly defined by its children, so if a + // feature has children then it should not have any points, polylines, + // or polygons. In general, this field should not be used to represent + // political or postal hierarchies. For example, a county would not list + // its cities as children, because the county is not defined in terms of + // its cities (it also contains unincorporated areas, etc.). + Child []*GeostoreFeatureIdProto `json:"child,omitempty"` + + // Covering: S2 cell coverings for this feature. See + // util/geometry/s2cell_union.h for more information about S2 cells. + // Coverings are useful for quick containment or intersection tests. S2 + // covering that consists of cells that intersect with the feature. + Covering *GeostoreCellCoveringProto `json:"covering,omitempty"` + + DataSource *GeostoreDataSourceProto `json:"dataSource,omitempty"` + + // DisplayData: Data used to render this feature on a map. + DisplayData *GeostoreDisplayDataProto `json:"displayData,omitempty"` + + // Doodle: ** DEPRECATED ** + Doodle *GeostoreDoodleProto `json:"doodle,omitempty"` + + Elevation *GeostoreElevationProto `json:"elevation,omitempty"` + + // ElevationModel: Captures elevation data used on + // TYPE_DIGITAL_ELEVATION_MODEL features. + ElevationModel *GeostoreElevationModelProto `json:"elevationModel,omitempty"` + + Entrance *GeostoreEntranceProto `json:"entrance,omitempty"` + + // Establishment: Also allowed on TYPE_BUSINESS_CHAIN and + // TYPE_TRANSIT_AGENCY features, to model the feature's phone number(s). + // Other fields within EstablishmentProto are not permitted on + // non-TYPE_ESTABLISHMENT features. + Establishment *GeostoreEstablishmentProto `json:"establishment,omitempty"` + + // ExemptRegulatedArea: A list of feature ids of polygon based + // restrictions that do not apply to this feature. This may only include + // features of TYPE_REGULATED_AREA that also have a + // feature.regulated_area.restriction field defined. Setting this field + // opts the feature out of all restrictions set on that regulated area. + ExemptRegulatedArea []*GeostoreFeatureIdProto `json:"exemptRegulatedArea,omitempty"` + + // FutureGeometry: Specifies the TYPE_FUTURE_GEOMETRY whose geometry + // will replace this feature's geometry. If this field is populated, the + // referenced future geometry must have a future_geometry_for + // referencing this feature. + FutureGeometry *GeostoreFeatureIdProto `json:"futureGeometry,omitempty"` + + // FutureGeometryFor: Specifies the feature that this feature's geometry + // will replace. If this field is populated, the referenced feature must + // have a future_geometry reference back to this feature. This field is + // only allowed (and required) for TYPE_FUTURE_GEOMETRY features. + FutureGeometryFor *GeostoreFeatureIdProto `json:"futureGeometryFor,omitempty"` + + // GeometryPrecisionMeters: If set, the feature's actual location can be + // assumed to be somewhere within a circle of this radius, centered on + // the feature's location. More information on this field at + // go/gpm-definition-update. NOTE: Only applicable to features with + // 'point' geometry. Please contact geo-schema-team@ if you have + // non-point use cases for which this field would be useful. + GeometryPrecisionMeters float64 `json:"geometryPrecisionMeters,omitempty"` + + // GeopoliticalGeometry: RESERVED + GeopoliticalGeometry *GeostoreGeopoliticalGeometryProto `json:"geopoliticalGeometry,omitempty"` + + // HtmlText: ** DEPRECATED ** Features can have zero or more HTML texts + // associated with them. These might be HTML balloons used by Google + // Earth, for example. + HtmlText []*GeostoreHtmlTextProto `json:"htmlText,omitempty"` + + // Id: The globally unique id for this feature. + Id *GeostoreFeatureIdProto `json:"id,omitempty"` + + // InferredGeometry: RESERVED + InferredGeometry *GeostoreInferredGeometryProto `json:"inferredGeometry,omitempty"` + + // InteriorCovering: S2 interior covering that consists of cells + // completely enclosed within the feature's geometry (for features with + // polygonal geometry). + InteriorCovering *GeostoreCellCoveringProto `json:"interiorCovering,omitempty"` + + // Internal: Additional internal feature-level attributes that may be + // set by data providers to be used inside the Geo Data infrastructure. + // This field should never be present in the output of the Geo Data + // infrastructure that read-only clients consume. + Internal *GeostoreInternalFeatureProto `json:"internal,omitempty"` + + Intersection *GeostoreIntersectionProto `json:"intersection,omitempty"` + + IntersectionGroup *GeostoreIntersectionGroupProto `json:"intersectionGroup,omitempty"` + + // KgProperty: Properties that apply to this feature whose schema is + // defined in the Knowledge Graph schema (see + // https://hume.google.com/graph/schema). Not all properties that exist + // in the KG schema can be asserted via this mechanism. The set of + // properties that are allowed to be set on a feature depends on the + // feature's GConcepts (and feature type). For instance, only + // gcid:country features may have the /geo/type/country/president + // property (made up example, since that property doesn't actually exist + // in the KG schema). GConcept hierarchy is taken into account for + // deciding the set of allowed properties. Additionally, the specific + // properties allowed are further constrained by the list specified at + // go/kg-property-allowlist. NOTE: not all types of properties are + // allowed to appear in the Geo Schema. For now, we limit ourselves to + // properties whose value type is TYPE_BOOL, TYPE_COMPOUND, + // TYPE_DATETIME, TYPE_FLOAT, TYPE_ID, TYPE_INT, TYPE_NESTED_STRUCT, + // TYPE_TEXT, or TYPE_URI. NOTE(b/35039936): We are in the process of + // changing how a KG property with multiple values is stored in this + // field. Currently, such a KG property is stored in a single instance + // of the kg_property field. However, we will be changing this so that + // each value will be stored in its own instance of kg_property. Any + // client that wants to read from this field should be prepared to read + // data represented in either format. See b/35039936 or the announcement + // at http://g/geo-schema-announce/7IXR3Fex8to/7yFyT5UoAwAJ for an + // example and more details. The mechanism to assert that a KG property + // has no value is via the property_value_status field below. + // freebase.PropertyValue.value_status is not allowed be set here for + // consistency reason. + KgProperty []*FreebasePropertyValue `json:"kgProperty,omitempty"` + + // KnowledgeGraphReference: RESERVED + KnowledgeGraphReference *GeostoreKnowledgeGraphReferenceProto `json:"knowledgeGraphReference,omitempty"` + + LaneMarker *GeostoreLaneMarkerProto `json:"laneMarker,omitempty"` + + // Level: Represents information about TYPE_LEVEL features. + Level *GeostoreLevelProto `json:"level,omitempty"` + + Locale *GeostoreLocaleProto `json:"locale,omitempty"` + + // LogicalBorder: RESERVED + LogicalBorder *GeostoreLogicalBorderProto `json:"logicalBorder,omitempty"` + + // Metadata: Metadata about this particular feature. Metadata is managed + // internally by the Geo Data Infrastructure and in general should not + // be set by clients. Features that don't ultimately come from the Geo + // repository (MapFacts) won't have any metadata set. + Metadata *GeostoreFeatureMetadataProto `json:"metadata,omitempty"` + + // Name: The name(s) of this feature. A feature may have different names + // in different languages, colloquial or "vanity" names, etc. + Name []*GeostoreNameProto `json:"name,omitempty"` + + // Operations: RESERVED + Operations *GeostoreOperationsProto `json:"operations,omitempty"` + + // OriginalId: This field is used internally by the pipeline for id + // stability. It should not be set by individual importers, nor should + // it be read by consumer clients. In particular, this field will not be + // present in features read or snapshotted from the Mapfacts Repository. + OriginalId *GeostoreFeatureIdProto `json:"originalId,omitempty"` + + Parent []*GeostoreFeatureIdProto `json:"parent,omitempty"` + + // Parking: Describes parking details for the feature. + Parking *GeostoreParkingProto `json:"parking,omitempty"` + + // Point: Defines the geometry of the feature. The geometry may be + // specified as an arbitrary union of points, poses, polylines, tracks, + // and polygons. Points, poses, polylines, and tracks are assumed to + // represent regions of unspecified size or width rather than regions of + // zero area. Most features should have some sort of geometry. Geometry + // may be synthesized if none is available (e.g., polygons for postal + // codes). The synthetic_geometry flag should be set in that case. Point + // is currently enforced as a non-repeating field for all feature types, + // though it is defined as repeating in case future modeling requires + // multiple points. The number of allowed polylines, tracks, or polygons + // vary based on feature type. A feature can have at most one pose (it + // is an optional field). + Point []*GeostorePointProto `json:"point,omitempty"` + + // Political: ** DEPRECATED ** Detail discussion could be found at + // b/18611003. + Political *GeostorePoliticalProto `json:"political,omitempty"` + + Polygon []*GeostorePolygonProto `json:"polygon,omitempty"` + + // PolygonForDisplay: Provide version of the geometry suitable for + // display. This has been subject to water removal and (possibly) + // moderate simplification. + PolygonForDisplay *GeostorePolygonProto `json:"polygonForDisplay,omitempty"` + + Polyline []*GeostorePolyLineProto `json:"polyline,omitempty"` + + // Pose: Defines the geometry of a feature as a 6D pose, including lat, + // lng, altitude, roll, pitch, and yaw along the WGS-84 ellipsoid. Only + // the lat and lng are strictly required. + Pose *GeostorePoseProto `json:"pose,omitempty"` + + // PreferredViewport: The preferred viewport for this feature. If + // present, this latitude-longitude rectangle holds the preferred + // viewport for the feature. For example, it might hold the bounds of + // the "central" portion of a large city. There are no aspect ratio + // requirements. This is an optional field: if no viewport is supplied, + // interested clients can use heuristics to determine a viewport. + // Calling the standard GetFeatureGeometryBound() function would be a + // good way to start but note that it can return an empty bounding box + // (e.g., if the feature has no geometry). The preferred viewport is not + // necessarily fully contained by the above bounding box. + PreferredViewport *GeostoreRectProto `json:"preferredViewport,omitempty"` + + // PropertyValueStatus: The value status of properties on this feature. + // For example, this specifies whether the feature is known to have no + // name (this is the value status of the 'FEATURE_NAME' property). Only + // property IDs which have no specific value are allowed to have a value + // status. Note: not all field types will be supported, please contact + // geo schema team if you want to enable this field for a field type + // that is not currently supported. + PropertyValueStatus []*GeostorePropertyValueStatusProto `json:"propertyValueStatus,omitempty"` + + // Rank: WARNING: Please do NOT introduce new uses of this field; treat + // it as if it were deprecated. For appropriate ranking contacts, see + // g3doc/company/teams/gdeng/geo-schema-reference/home/feature-properties + // /rank.md. A floating-point number between 0.0 and 1.0 indicating how + // "important" we think this feature is. This can be used to decide + // which features to render on maps, and how to rank results when the + // user does a search. The rank can depend on any number of factors such + // as the number of references to this feature in web pages, geographic + // size, population, number of referring geographic entities, "priority" + // information encoded in the source data, etc. + Rank float64 `json:"rank,omitempty"` + + // RankDetails: The rank field is computed as a weighted sum of several + // signals. This field contains a protocol buffer whose fields give + // those signals and their weights. Clients should try very hard not to + // depend on these individual signals and use the single rank field + // instead. At some point in the future, this field will not be exposed + // anymore. + RankDetails *GeostoreRankDetailsProto `json:"rankDetails,omitempty"` + + // RawGconceptInstanceContainer: Geo Ontology GConcept Instances - + // Design doc linked off http://go/geo-ontology - In order to shield + // clients from changes in GConcept representation we provide an + // accessor library: geostore/base/public/gconcept_instance.h + RawGconceptInstanceContainer *GeostoreOntologyRawGConceptInstanceContainerProto `json:"rawGconceptInstanceContainer,omitempty"` + + RegulatedArea *GeostoreRegulatedAreaProto `json:"regulatedArea,omitempty"` + + // RelatedBorder: For TYPE_COUNTRY or TYPE_ADMINISTRATIVE_AREA1 + // features, this field defines the associated TYPE_BORDERs which + // reference this feature. The linked TYPE_BORDERs must have the + // feature.border set, pointing to this feature. TYPE_COUNTRY or + // TYPE_ADMINISTRATIVE_AREA1 features must have this field set for each + // TYPE_BORDER referencing them. + RelatedBorder []*GeostoreFeatureIdProto `json:"relatedBorder,omitempty"` + + // RelatedEntrance: Logical relationship to other features that are + // entrances or exits to this feature. + RelatedEntrance []*GeostoreEntranceReferenceProto `json:"relatedEntrance,omitempty"` + + // RelatedFeature: Geographic or logical relationships to other + // features. Importers don't need to fill a geographic relationship in - + // it is handled by related feature processing by a standalone pipeline. + // Adding "contained by" country relations is however encouraged (and + // required for TYPE_ROUTE features). WARNING: Updates to this field + // handled by standalone pipelines 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. + RelatedFeature []*GeostoreRelationProto `json:"relatedFeature,omitempty"` + + // RelatedTerminalPoint: Terminal points associated with this feature. + // For instance, an airport terminal may have specifically designated + // pickup and drop-off points. + RelatedTerminalPoint []*GeostoreFeatureIdProto `json:"relatedTerminalPoint,omitempty"` + + // RelatedTimezone: Contains time zones known to be associated with a + // feature. Most features are associated with the single time zone that + // contains them. However, some larger features (countries, continents, + // etc.) are associated with all of the time zones they contain. Most + // features can have any number of related time zones, but TYPE_SEGMENT + // and TYPE_ESTABLISHMENT_POI features can have at most 1. + RelatedTimezone []*GeostoreTimezoneProto `json:"relatedTimezone,omitempty"` + + RestrictionGroup *GeostoreRestrictionGroupProto `json:"restrictionGroup,omitempty"` + + RoadMonitor *GeostoreRoadMonitorProto `json:"roadMonitor,omitempty"` + + // Route: Additional details on the feature types below can be found in + // the individual protocol buffer definitions. These extensions capture + // data that is specific to a set of feature types and which makes no + // sense for other feature types. + Route *GeostoreRouteProto `json:"route,omitempty"` + + SchoolDistrict *GeostoreSchoolDistrictProto `json:"schoolDistrict,omitempty"` + + Segment *GeostoreSegmentProto `json:"segment,omitempty"` + + SegmentPath *GeostoreSegmentPathProto `json:"segmentPath,omitempty"` + + Sign *GeostoreRoadSignProto `json:"sign,omitempty"` + + SkiBoundary *GeostoreSkiBoundaryProto `json:"skiBoundary,omitempty"` + + SkiLift *GeostoreSkiLiftProto `json:"skiLift,omitempty"` + + SkiTrail *GeostoreSkiTrailProto `json:"skiTrail,omitempty"` + + // SocialReference: All establishments must have a social reference. + // WARNING: Aside from creating new establishments, please do NOT + // introduce new uses; treat social references as if they were + // deprecated. For alternatives and more, see + // g3doc/company/teams/gdeng/geo-schema-reference/home/feature-types/esta + // blishments/social-reference.md. + SocialReference *GeostoreSocialReferenceProto `json:"socialReference,omitempty"` + + // SourceInfo: A list of the data sources that were used to construct + // this feature, together with optional "raw data" in the provider's + // format. Raw data should not be used by production clients but may be + // useful for exploring data that is not currently converted to a + // canonical form. + SourceInfo []*GeostoreSourceInfoProto `json:"sourceInfo,omitempty"` + + // Status: All features can have "existence" information associated with + // them. + Status *GeostoreExistenceProto `json:"status,omitempty"` + + // StorefrontGeometry: Represents information about the store front + // geoemtry. Only TYPE_ESTABLISHMENT_POI should have this field set. + StorefrontGeometry []*GeostoreAnchoredGeometryProto `json:"storefrontGeometry,omitempty"` + + // SyntheticGeometry: We prefer features that have geometry over those + // that do not. In some cases we synthesize geometry (e.g., polygons for + // postal codes). This flag is set to indicate features that have such + // synthetic geometry. + SyntheticGeometry bool `json:"syntheticGeometry,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // feature. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // ThreeDimModel: Captures full model representing the feature's 3D + // geometry. Should only be found on TYPE_COMPOUND_BUILDING features for + // now, but not part of the BuildingProto extension for possible future + // extensions. + ThreeDimModel *GeostoreThreeDimensionalModelProto `json:"threeDimModel,omitempty"` + + // TollCluster: Represents information about TYPE_TOLL_CLUSTER features. + TollCluster *GeostoreTollClusterProto `json:"tollCluster,omitempty"` + + // Track: Defines the geometry of a feature as a sequence of 6D poses, + // including lat, lng, altitude, roll, pitch, and yaw. Only lat and lng + // are typically required. Each track has an index so that they can be + // viewed in a stable order. + Track []*GeostoreTrackProto `json:"track,omitempty"` + + TransitLine *GeostoreTransitLineProto `json:"transitLine,omitempty"` + + // TransitLineVariant: RESERVED + TransitLineVariant *GeostoreTransitLineVariantProto `json:"transitLineVariant,omitempty"` + + // TransitStation: RESERVED + TransitStation *GeostoreTransitStationProto `json:"transitStation,omitempty"` + + // Type: The type of this feature -- see comments above. + // + // Possible values: + // "TYPE_ANY" - ABSTRACT + // "TYPE_TRANSPORTATION" - ABSTRACT + // "TYPE_ROUTE" - A route is any section of road (or rails, etc.) that + // has a name. This includes city streets as well as highways. Road + // segments can belong to multiple routes (e.g. El Camino, CA-82). + // "TYPE_DEPRECATED_HIGHWAY_DO_NOT_USE" - DEPRECATED + // "TYPE_HIGHWAY" - ABSTRACT + // "TYPE_HIGHWAY_1" + // "TYPE_HIGHWAY_2" + // "TYPE_HIGHWAY_3" + // "TYPE_HIGHWAY_4" + // "TYPE_HIGHWAY_5" + // "TYPE_HIGHWAY_6" + // "TYPE_HIGHWAY_7" + // "TYPE_HIGHWAY_8" + // "TYPE_HIGHWAY_9" + // "TYPE_BICYCLE_ROUTE" - A designated bicycle route, whose segments + // may consist of any combination of bicycle paths, bicycle lanes, or + // city streets. + // "TYPE_TRAIL" - A designated trail, which may consist of paved + // walkways, dirt paths, fire road, streets or highways, etc. + // "TYPE_SEGMENT" - ABSTRACT + // "TYPE_ROAD" + // "TYPE_RAILWAY" - Railroads use several different incompatible track + // types. + // "TYPE_STANDARD_TRACK" + // "TYPE_JR_TRACK" + // "TYPE_NARROW_TRACK" + // "TYPE_MONORAIL_TRACK" + // "TYPE_SUBWAY_TRACK" + // "TYPE_LIGHT_RAIL_TRACK" + // "TYPE_BROAD_TRACK" + // "TYPE_HIGH_SPEED_RAIL" + // "TYPE_TROLLEY_TRACK" - Tracks for streetcars, cable-cars, etc. + // Ferries are services that are part of the road network but are not + // roads. They typically involve fares and scheduled departure times. + // "TYPE_FERRY" - ABSTRACT + // "TYPE_FERRY_BOAT" - The vast majority of ferries are ferry boats. + // "TYPE_FERRY_TRAIN" - Also called a "car transport", a ferry train + // is a rail service that carries passengers and their vehicles across + // undrivable terrain. The Channel Tunnel ("Chunnel") is the most famous + // example, but they are also common in the Alps where they connect + // neighboring valleys otherwise separated by impassable mountains. + // "TYPE_VIRTUAL_SEGMENT" - Any plausible 1-dimensional path through a + // 2+ dimensional space, for the purposes of making graph-search-based + // routing possible. Such segments can be used to model paths through + // parking lots, squares, floors of buildings and other areas. + // "TYPE_INTERSECTION" - An intersection consists of a collection of + // segments that terminate at the same location. This is topological + // definition: it may not match what a typical user would think of as an + // "intersection". See TYPE_INTERSECTION_GROUP, below, for more + // information. Each segment terminating at an intersection has an + // "endpoint type" that specifies how that segment is terminated: stop + // sign, yield sign, three-way light, etc. + // "TYPE_TRANSIT" - ABSTRACT + // "TYPE_TRANSIT_STATION" - DEPRECATED + // "TYPE_BUS_STATION" - DEPRECATED + // "TYPE_TRAMWAY_STATION" - DEPRECATED + // "TYPE_TRAIN_STATION" - DEPRECATED + // "TYPE_SUBWAY_STATION" - DEPRECATED + // "TYPE_FERRY_TERMINAL" - DEPRECATED + // "TYPE_AIRPORT" - DEPRECATED + // "TYPE_AIRPORT_CIVIL" - DEPRECATED + // "TYPE_AIRPORT_MILITARY" - DEPRECATED + // "TYPE_AIRPORT_MIXED" - DEPRECATED + // "TYPE_HELIPORT" - DEPRECATED + // "TYPE_SEAPLANE_BASE" - DEPRECATED + // "TYPE_AIRSTRIP" - DEPRECATED + // "TYPE_CABLE_CAR_STATION" - DEPRECATED + // "TYPE_GONDOLA_LIFT_STATION" - DEPRECATED + // "TYPE_FUNICULAR_STATION" - DEPRECATED + // "TYPE_SPECIAL_STATION" - DEPRECATED + // "TYPE_HORSE_CARRIAGE_STATION" - DEPRECATED + // "TYPE_MONORAIL_STATION" - DEPRECATED + // "TYPE_SEAPORT" - DEPRECATED + // "TYPE_TRANSIT_STOP" - DEPRECATED + // "TYPE_TRANSIT_TRIP" - DEPRECATED + // "TYPE_TRANSIT_DEPARTURE" - DEPRECATED + // "TYPE_TRANSIT_LEG" - DEPRECATED + // "TYPE_TRANSIT_LINE" - A transit line is a collection of transit + // legs, associated with some invariant properties of the trips that run + // over the legs. See also transitline.proto + // "TYPE_TRANSIT_AGENCY_DEPRECATED_VALUE" - TYPE_TRANSIT_AGENCY was + // moved to 0xC91. This deprecated enum value still exists for debugging + // purposes only. + // "TYPE_TRANSIT_TRANSFER" - DEPRECATED + // "TYPE_SEGMENT_PATH" - ABSTRACT + // "TYPE_ROAD_SIGN" - Road sign features have names, point geometry, + // etc. They also have segment_path data (see below) which lists the + // segments that refer to the sign. See segment.proto for the reference + // from the segment to the road sign. + // "TYPE_INTERSECTION_GROUP" - Our TYPE_INTERSECTION feature, above, + // models 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. This TYPE_INTERSECTION_GROUP is used to + // model the user's concept of a complex intersection. + // "TYPE_PATHWAY" - RESERVED + // "TYPE_RESTRICTION_GROUP" - A restriction group describes a set of + // segment restrictions that belong together and have a name or an + // associated event. See also restriction_group.proto + // "TYPE_TOLL_CLUSTER" - A toll cluster is either a single point on a + // segment (represented as a point at the end of the segment that has + // ENDPOINT_TOLL_BOOTH set) or a group of points on various road + // segments in MapFacts that represents one or more lanes passing + // through a toll fixture that all go to the same routing destination. + // Each toll cluster should have at most a single price per payment + // method. E.g. {CASH = $5, PASS = $1}. Note: If a toll fixture has + // different prices for multiple routing destinations, drivers need to + // be in the correct lane before passing through the toll fixture and + // hence such a fixture is represented by multiple toll clusters. A toll + // cluster does not necessarily represent a real-world entity, e.g. a + // particular plaza/structure as perceived by humans. This is because a + // plaza can be represented by more than one toll cluster. We require + // toll clusters to have names, but they might be non-unique. For + // example, a plaza might be represented by multiple toll clusters that + // may have the same plaza name. For further details, please see + // go/toll-cluster-schema. + // "TYPE_POLITICAL" - ABSTRACT + // "TYPE_COUNTRY" + // "TYPE_ADMINISTRATIVE_AREA" - ABSTRACT + // "TYPE_ADMINISTRATIVE_AREA1" + // "TYPE_US_STATE" - DEPRECATED + // "TYPE_GB_COUNTRY" - DEPRECATED + // "TYPE_JP_TODOUFUKEN" - DEPRECATED + // "TYPE_ADMINISTRATIVE_AREA2" + // "TYPE_GB_FORMER_POSTAL_COUNTY" - DEPRECATED + // "TYPE_GB_TRADITIONAL_COUNTY" - DEPRECATED + // "TYPE_ADMINISTRATIVE_AREA3" + // "TYPE_ADMINISTRATIVE_AREA4" + // "TYPE_ADMINISTRATIVE_AREA5" + // "TYPE_ADMINISTRATIVE_AREA6" + // "TYPE_ADMINISTRATIVE_AREA7" + // "TYPE_ADMINISTRATIVE_AREA8" + // "TYPE_ADMINISTRATIVE_AREA9" + // "TYPE_COLLOQUIAL_AREA" - e.g. Silicon Valley + // "TYPE_RESERVATION" - A reservation is a region collectively held or + // governed by indigenous people and officially recognized by the + // country’s government at the federal or state level. A reservation + // may be fully contained within an administrative feature or partially + // contained within two or more. These regions are referred to by + // different categorical names depending on country and even by state, + // including but not limited to: “Indian Reservations”, “Indian + // Reserves”, “Land Claim Settlement Lands”, “Indian Lands”, + // “Treaty Lands”, “Indigenous Territories”, etc. A reservation + // is not a historic indigenous territory boundary or a region which has + // applied for land rights but has not yet received official + // recognition. + // "TYPE_LOCALITY" + // "TYPE_GB_POST_TOWN" - DEPRECATED + // "TYPE_JP_GUN" - DEPRECATED + // "TYPE_JP_SHIKUCHOUSON" - DEPRECATED + // "TYPE_JP_SUB_SHIKUCHOUSON" - DEPRECATED + // "TYPE_COLLOQUIAL_CITY" - An entity widely considered to be a city, + // that may itself be made up of smaller political entities, some of + // which are cities/towns/villages themselves. For example, the + // colloquial view of Sydney, Australia actually comprises many smaller + // cities, but is regarded as a city itself. This type is not suitable + // for modeling official metro-/micropolitan or other statistical areas. + // "TYPE_SUBLOCALITY" - ABSTRACT + // "TYPE_US_BOROUGH" - DEPRECATED + // "TYPE_GB_DEPENDENT_LOCALITY" - DEPRECATED + // "TYPE_JP_OOAZA" - DEPRECATED + // "TYPE_JP_KOAZA" - DEPRECATED + // "TYPE_JP_GAIKU" - DEPRECATED + // "TYPE_GB_DOUBLE_DEPENDENT_LOCALITY" - DEPRECATED + // "TYPE_JP_CHIBAN" - DEPRECATED + // "TYPE_JP_EDABAN" - DEPRECATED + // "TYPE_SUBLOCALITY1" + // "TYPE_SUBLOCALITY2" + // "TYPE_SUBLOCALITY3" + // "TYPE_SUBLOCALITY4" + // "TYPE_SUBLOCALITY5" + // "TYPE_NEIGHBORHOOD" + // "TYPE_CONSTITUENCY" + // "TYPE_DESIGNATED_MARKET_AREA" - Designated Market Areas (or DMAs) + // are used by marketing and ratings companies (such as the Nielsen + // Media Research company) to describe geographical regions (such as the + // greater New York metropolitan area) that are covered by a set of + // television stations. (See http://www.schooldata.com/pdfs/DMA.pdf) In + // the United States, DMAs should have a DMA numeric ID name, tagged + // with the FLAG_DESIGNATED_MARKET_AREA_ID flag. + // "TYPE_SCHOOL_DISTRICT" + // "TYPE_LAND_PARCEL" + // "TYPE_DISPUTED_AREA" - Eventually we'll have more data for disputed + // areas (e.g., who makes claims on the area, who has de facto control, + // etc.). For the moment, we just define a type so we can simply mark + // areas as disputed. + // "TYPE_POLICE_JURISDICTION" - Boundaries representing the + // jurisdiction of a particular police station. + // "TYPE_STATISTICAL_AREA" - An area used for aggregating statistical + // data, eg, a census region. Note that TYPE_STATISTICAL_AREA has a + // third nibble so we can add an abstract parent above it later if need + // be at 0x2E1 (and rename TYPE_STATISTICAL_AREA as + // TYPE_STATISTICAL_AREA1). + // "TYPE_CONSTITUENCY_FUTURE" - DEPRECATED + // "TYPE_PARK" - DEPRECATED + // "TYPE_GOLF_COURSE" - DEPRECATED + // "TYPE_LOCAL_PARK" - DEPRECATED + // "TYPE_NATIONAL_PARK" - DEPRECATED + // "TYPE_US_NATIONAL_PARK" - DEPRECATED + // "TYPE_US_NATIONAL_MONUMENT" - DEPRECATED + // "TYPE_NATIONAL_FOREST" - DEPRECATED + // "TYPE_PROVINCIAL_PARK" - DEPRECATED + // "TYPE_PROVINCIAL_FOREST" - DEPRECATED + // "TYPE_CAMPGROUNDS" - DEPRECATED + // "TYPE_HIKING_AREA" - DEPRECATED + // "TYPE_BUSINESS" - DEPRECATED + // "TYPE_GOVERNMENT" - DEPRECATED + // "TYPE_BORDER_CROSSING" - DEPRECATED + // "TYPE_CITY_HALL" - DEPRECATED + // "TYPE_COURTHOUSE" - DEPRECATED + // "TYPE_EMBASSY" - DEPRECATED + // "TYPE_LIBRARY" - DEPRECATED + // "TYPE_SCHOOL" - DEPRECATED + // "TYPE_UNIVERSITY" - DEPRECATED + // "TYPE_EMERGENCY" - DEPRECATED + // "TYPE_HOSPITAL" - DEPRECATED + // "TYPE_PHARMACY" - DEPRECATED + // "TYPE_POLICE" - DEPRECATED + // "TYPE_FIRE" - DEPRECATED + // "TYPE_DOCTOR" - DEPRECATED + // "TYPE_DENTIST" - DEPRECATED + // "TYPE_VETERINARIAN" - DEPRECATED + // "TYPE_TRAVEL_SERVICE" - DEPRECATED + // "TYPE_LODGING" - DEPRECATED + // "TYPE_RESTAURANT" - DEPRECATED + // "TYPE_GAS_STATION" - DEPRECATED + // "TYPE_PARKING" - DEPRECATED + // "TYPE_POST_OFFICE" - DEPRECATED + // "TYPE_REST_AREA" - DEPRECATED + // "TYPE_CASH_MACHINE" - DEPRECATED + // "TYPE_CAR_RENTAL" - DEPRECATED + // "TYPE_CAR_REPAIR" - DEPRECATED + // "TYPE_SHOPPING" - DEPRECATED + // "TYPE_GROCERY" - DEPRECATED + // "TYPE_TOURIST_DESTINATION" - DEPRECATED + // "TYPE_ECO_TOURIST_DESTINATION" - DEPRECATED + // "TYPE_BIRD_WATCHING" - DEPRECATED + // "TYPE_FISHING" - DEPRECATED + // "TYPE_HUNTING" - DEPRECATED + // "TYPE_NATURE_RESERVE" - DEPRECATED + // "TYPE_TEMPLE" - DEPRECATED + // "TYPE_CHURCH" - DEPRECATED + // "TYPE_GURUDWARA" - DEPRECATED + // "TYPE_HINDU_TEMPLE" - DEPRECATED + // "TYPE_MOSQUE" - DEPRECATED + // "TYPE_SYNAGOGUE" - DEPRECATED + // "TYPE_STADIUM" - DEPRECATED + // "TYPE_BAR" - DEPRECATED + // "TYPE_MOVIE_RENTAL" - DEPRECATED + // "TYPE_COFFEE" - DEPRECATED + // "TYPE_GOLF" - DEPRECATED + // "TYPE_BANK" - DEPRECATED + // "TYPE_DOODLE" - DEPRECATED + // "TYPE_GROUNDS" - DEPRECATED + // "TYPE_AIRPORT_GROUNDS" - DEPRECATED + // "TYPE_BUILDING_GROUNDS" - DEPRECATED + // "TYPE_CEMETERY" - DEPRECATED + // "TYPE_HOSPITAL_GROUNDS" - DEPRECATED + // "TYPE_INDUSTRIAL" - DEPRECATED + // "TYPE_MILITARY" - DEPRECATED + // "TYPE_SHOPPING_CENTER" - DEPRECATED + // "TYPE_SPORTS_COMPLEX" - DEPRECATED + // "TYPE_UNIVERSITY_GROUNDS" - DEPRECATED + // "TYPE_DEPRECATED_TARMAC" - DEPRECATED + // "TYPE_ENCLOSED_TRAFFIC_AREA" - DEPRECATED + // "TYPE_PARKING_LOT" - DEPRECATED + // "TYPE_PARKING_GARAGE" - DEPRECATED + // "TYPE_OFF_ROAD_AREA" - DEPRECATED + // "TYPE_BORDER" - A line representing the boundary between two + // features. See border.proto for details. + // "TYPE_BUILDING" - DEPRECATED + // "TYPE_GEOCODED_ADDRESS" - An association of a point with an + // address, with no other information. + // "TYPE_NATURAL_FEATURE" - ABSTRACT + // "TYPE_TERRAIN" - Expanses of land that share common surface + // attributes. These areas would look more or less uniform from a high + // altitude. + // "TYPE_SAND" + // "TYPE_BEACH" + // "TYPE_DUNE" + // "TYPE_ROCKY" + // "TYPE_ICE" + // "TYPE_GLACIER" + // "TYPE_BUILT_UP_AREA" - Terrain that looks populated. + // "TYPE_VEGETATION" - Terrain that is covered in vegetation. + // "TYPE_SHRUBBERY" + // "TYPE_WOODS" + // "TYPE_AGRICULTURAL" + // "TYPE_GRASSLAND" + // "TYPE_TUNDRA" + // "TYPE_DESERT" + // "TYPE_SALT_FLAT" - A flat expanse of salt left by the evaporation + // of a body of salt water. + // "TYPE_WATER" - Features can be TYPE_WATER if we don't have enough + // information to properly type the body of water. TYPE_WATER is also + // used as the type for child features that compose a TYPE_RIVER + // feature. + // "TYPE_OCEAN" - One of the large salt-water bodies that covers most + // of the globe. + // "TYPE_BAY" - An ocean subdivision formed by a coastal indentation. + // Includes coves and gulfs. + // "TYPE_BIGHT" - An open body of water formed by a slight coastal + // indentation. + // "TYPE_LAGOON" + // "TYPE_SEA" - An ocean subdivision more or less confined by land and + // islands. + // "TYPE_STRAIT" - A long narrow ocean subdivision. Includes sounds. + // "TYPE_INLET" + // "TYPE_FJORD" + // "TYPE_LAKE" - An inland body of standing water. + // "TYPE_SEASONAL_LAKE" - A lake that dries up part of the year. + // "TYPE_RESERVOIR" - An artificial body of water, possibly created by + // a dam, often used for irrigation or house use. + // "TYPE_POND" + // "TYPE_RIVER" - An inland body of moving water, or parts associated + // with it in which there is little or no current (backwater). + // "TYPE_RAPIDS" + // "TYPE_DISTRIBUTARY" - A branch which flows away from the main + // river. Includes deltas. + // "TYPE_CONFLUENCE" - A place where two or more rivers join. + // "TYPE_WATERFALL" + // "TYPE_SPRING" - A place where ground water flows naturally out of + // the ground. + // "TYPE_GEYSER" + // "TYPE_HOT_SPRING" + // "TYPE_SEASONAL_RIVER" - A river that dries up part of the year. + // "TYPE_WADI" - A dry riverbed that occasionally receives + // flashfloods. + // "TYPE_ESTUARY" - A place at the end of a river where fresh and salt + // water mix. Includes tidal creeks and limans. + // "TYPE_WETLAND" - Land that is usually flooded. Includes bogs, + // marshes, flats, moors, and swamps. + // "TYPE_WATER_NAVIGATION" + // "TYPE_FORD" - A shallow place where water may be waded through. + // "TYPE_CANAL" - A narrow passage used by boats. Normally artificial. + // "TYPE_HARBOR" - A deep place near a shore where ships commonly drop + // anchor. + // "TYPE_CHANNEL" - A deep part in a body of water that is suitable + // for navigation. Includes narrows. + // "TYPE_REEF" - Rocks, coral, sandbars, or other features beneath the + // surface of the water that pose a hazard to passing ships. Includes + // shoals. + // "TYPE_REEF_FLAT" - A relatively shallow zone of the back reef + // located closest to the shore, that may be exposed at low tide. + // "TYPE_REEF_GROWTH" - A small section of rocks, coral, sandbars, or + // other features beneath the surface of the water that forms part of a + // reef. + // "TYPE_REEF_EXTENT" - The full extent of the reef complex. + // "TYPE_REEF_ROCK_SUBMERGED" - A submerged rock in the water. + // "TYPE_IRRIGATION" - Man-made (and sometimes natural) channels used + // to move water. This type was used for both dam structures and water + // that is hold back by dams. We should use TYPE_COMPOUND_BUILDING for + // dam structures and TYPE_RESERVOIR for water. + // "TYPE_DAM" - DEPRECATED + // "TYPE_DRINKING_WATER" + // "TYPE_CURRENT" - Includes overfalls. + // "TYPE_WATERING_HOLE" - A natural depression filled with water where + // animals come to drink. + // "TYPE_TECTONIC" - ABSTRACT This type is incorrectly under + // TYPE_TECTONIC instead of TYPE_WATER. This was a mistake and is now + // fixed. See TYPE_WATERING_HOLE for the replacement. + // "TYPE_WATERING_HOLE_DEPRECATED" - DEPRECATED + // "TYPE_VOLCANO" + // "TYPE_LAVA_FIELD" + // "TYPE_FISSURE" + // "TYPE_FAULT" + // "TYPE_LAND_MASS" + // "TYPE_CONTINENT" + // "TYPE_ISLAND" + // "TYPE_ATOLL" + // "TYPE_OCEAN_ROCK_EXPOSED" - An exposed rock in the water. + // "TYPE_CAY" - A small, low-elevation, sandy island formed on the + // surface of coral reefs + // "TYPE_PENINSULA" - A stretch of land projecting into water. + // Includes capes and spits. + // "TYPE_ISTHMUS" - A strip of land connecting two larger land masses, + // such as continents. + // "TYPE_ELEVATED" - Features that are notable for being high (or + // low), or for having sudden changes in elevation. These features might + // have an "elevation" extension to specify the actual elevation. See + // ElevationProto for more information. + // "TYPE_PEAK" - Elevations that have a distinctive peak. + // "TYPE_NUNATAK" - A peak or ridge of a mountain that extends through + // a glacier. + // "TYPE_SPUR" - A subsidiary peak of a mountain. + // "TYPE_PASS" - A route over an otherwise difficult to traverse + // feature. Includes saddle. + // "TYPE_PLATEAU" - Elevations that are flat on top. Includes mesas + // and buttes. + // "TYPE_RIDGE" - A ridge is a geographical feature consisting of a + // chain of mountains or hills that form a continuous elevated crest + // with a single ridgeline for some distance. + // "TYPE_RAVINE" - Steep declines usually carved by erosion. Includes + // valleys, canyons, ditches, and gorges. + // "TYPE_CRATER" - Depressions causes by impact, explosion, and + // sometimes sink-holes. + // "TYPE_KARST" - Topography formed on limestone and gypsum by + // dissolution with sinkholes, caves, etc. + // "TYPE_CLIFF" - A vertical or nearly vertical slope. Includes + // escarpments. + // "TYPE_VISTA" - An elevated place that is notable for having a good + // view. Raster digital elevation data. This is not a type to be used by + // providers or consumed by clients. + // "TYPE_DIGITAL_ELEVATION_MODEL" - RESERVED + // "TYPE_UPLAND" - Land along streams higher than the alluvial plain + // or stream terrace. + // "TYPE_TERRACE" + // "TYPE_SLOPE" - Land not so steep as a cliff, but changing + // elevation. Includes slides. + // "TYPE_CONTOUR_LINE" - All the points on the polygon are at the same + // elevation. + // "TYPE_PAN" - A near-level shallow, natural depression or basin, + // usually containing an intermittent lake, pond, or pool. + // "TYPE_UNSTABLE_HILLSIDE" + // "TYPE_MOUNTAIN_RANGE" - A series of mountains or hills ranged in a + // line and connected by high ground. Mountain ranges usually consist of + // many smaller ridges. For example, the Himalayas, the Andes. the Alps, + // etc. + // "TYPE_UNDERSEA" - Features that are notable for being high (or + // low), or for having sudden changes in elevation. These features might + // have an "elevation" extension to specify the actual elevation. See + // ElevationProto for more information. + // "TYPE_SUBMARINE_SEAMOUNT" - includes peaks, ranges, and spurs + // "TYPE_SUBMARINE_RIDGE" + // "TYPE_SUBMARINE_GAP" - includes saddles + // "TYPE_SUBMARINE_PLATEAU" + // "TYPE_SUBMARINE_DEEP" + // "TYPE_SUBMARINE_VALLEY" - includes trenches and troughs + // "TYPE_SUBMARINE_BASIN" + // "TYPE_SUBMARINE_SLOPE" + // "TYPE_SUBMARINE_CLIFF" + // "TYPE_SUBMARINE_PLAIN" + // "TYPE_SUBMARINE_FRACTURE_ZONE" + // "TYPE_CAVE" - Don't use 0xA7. Use 8 bits for additional types under + // TYPE_NATURAL_FEATURE, so we don't run out of space. The following are + // miscellaneous natural features that don't fit any of the categories + // above. + // "TYPE_ROCK" + // "TYPE_ARCHIPELAGO" - A feature representing a group or chain of + // islands. + // "TYPE_POSTAL" - ABSTRACT + // "TYPE_POSTAL_CODE" - This is the type for postal codes which are + // complete and independent enough that there should be a feature for + // them (e.g. US 5-digit ZIP codes). For even more detailed suffixes + // that further subdivide a postal code (such as the +4 component in US + // ZIP codes), store the information in a TYPE_POSTAL_CODE_SUFFIX + // address component. When a range or set of postal codes share the same + // geographical area, e.g. because a precise subdivision does not exist + // or this subdivision is unknown, this type is used for each individual + // postal code. + // "TYPE_POSTAL_CODE_PREFIX" - A prefix portion of a postal code which + // does not meet the requirements for TYPE_POSTAL_CODE, but which is + // useful to search for, for example UK outcodes. + // "TYPE_PREMISE" - DEPRECATED + // "TYPE_SUB_PREMISE" - DEPRECATED This is deprecated and we want to + // use TYPE_COMPOUND_SECTION instead. + // "TYPE_SUITE" - DEPRECATED + // "TYPE_POST_TOWN" - The term "post town" is used for a + // locality-like-entity that is only used for postal addresses. + // "TYPE_POSTAL_ROUND" - DEPRECATED + // "TYPE_META_FEATURE" - ABSTRACT + // "TYPE_DATA_SOURCE" - Every data source used in constructing a data + // repository has a corresponding feature that provides more information + // about that data source. The extra information is stored in the + // optional data_source field below. + // "TYPE_LOCALE" - A locale feature provides region specific + // conventions such as preferred language and formatting details for + // time, date, and currency values. Locales aren't necessary defined by + // physical geographic features, so they are classified as + // meta-features. + // "TYPE_TIMEZONE" - A timezone feature is used to specify the region + // covering an international timezone. When a point is covered by + // multiple timezone features, the most specific one can be used to + // compute the local time at this point. Most specific implies a much + // smaller region or the one that is closer to the center. A feature's + // timezone can be specified in the repeated related_timezone field. + // "TYPE_BUSINESS_CHAIN" - A business chain feature is used to + // represent a chain, e.g. Starbucks, McDonald's, etc. Other features + // representing specific stores/franchises of this chain may refer to + // one such feature via RELATION_MEMBER_OF_CHAIN. This is not strictly + // reserved to commercial chains but can also be used to model + // organizations such as the Red Cross or the United Nations. + // "TYPE_PHONE_NUMBER_PREFIX" - A phone number prefix feature is used + // to specify the region where phone numbers (typically fixed-line + // numbers) must begin with a certain prefix. Any phone number prefix + // down to any level of granularity could be represented by this type. + // "TYPE_PHONE_NUMBER_AREA_CODE" - A phone number area code is a + // prefix which also coincides with the area code, or national + // destination code, of a particular region. + // "TYPE_BUSINESS_CORRIDOR" - A Business Corridor is a dense cluster + // of semantically similar establishments. TYPE_BUSINESS_CORRIDOR + // features are distinguished from TYPE_COLLOQUIAL_AREA features because + // the corridors are not under the political hierarchy, are allowed to + // be nameless, and may not correspond to well-known real world + // locations. For more details, see go/geo-corridors-schema. + // "TYPE_ADDRESS_TEMPLATE" - An address template feature provides + // region-specific conventions for structuring addresses. These features + // aren't necessarily defined by physical geographic features, so they + // are classified as meta-features. + // "TYPE_TRANSIT_AGENCY" - A transit agency operates a number of + // lines, typically all in the same city, region or country. See also + // transitagency.proto + // "TYPE_FUTURE_GEOMETRY" - A feature whose geometry is planned to + // replace the geometry on another feature. + // "TYPE_EVENT" - DEPRECATED + // "TYPE_EARTHQUAKE" - DEPRECATED + // "TYPE_HURRICANE" - DEPRECATED + // "TYPE_WEATHER_CONDITION" - DEPRECATED + // "TYPE_TRANSIENT" - RESERVED + // "TYPE_ENTRANCE" - A portal of entry or exit to another feature. + // Examples: - Subway station entrance. - Parking lot entrance. + // "TYPE_CARTOGRAPHIC" - Cartographic features are used to capture + // real-world objects for which there is no current desire to model any + // specific attributes. These are only useful to make the map tiles look + // pretty. + // "TYPE_HIGH_TENSION" - DEPRECATED + // "TYPE_SKI_TRAIL" - Also see skitrail.proto + // "TYPE_SKI_LIFT" - Also see skilift.proto + // "TYPE_SKI_BOUNDARY" - Also see skiboundary.proto + // "TYPE_WATERSHED_BOUNDARY" + // "TYPE_TARMAC" - Starting with TYPE_TARMAC, we use longer IDs, so + // that we can expand the number of feature types under + // TYPE_CARTOGRAPHIC. + // "TYPE_WALL" - Use TYPE_COMPOUND_GROUND and appropriate gcids for + // the next two. + // "TYPE_PICNIC_AREA" - DEPRECATED + // "TYPE_PLAY_GROUND" - DEPRECATED + // "TYPE_TRAIL_HEAD" + // "TYPE_GOLF_TEEING_GROUND" - Sub-types within a golf course. + // "TYPE_GOLF_PUTTING_GREEN" + // "TYPE_GOLF_ROUGH" + // "TYPE_GOLF_SAND_BUNKER" + // "TYPE_GOLF_FAIRWAY" + // "TYPE_GOLF_HOLE" - Use TYPE_ESTABLISHMENT_POI and gcid:golf_shop + // for golf shops instead. + // "TYPE_DEPRECATED_GOLF_SHOP" - DEPRECATED + // "TYPE_CAMPING_SITE" - DEPRECATED + // "TYPE_DESIGNATED_BARBECUE_PIT" + // "TYPE_DESIGNATED_COOKING_AREA" + // "TYPE_CAMPFIRE_PIT" + // "TYPE_WATER_FOUNTAIN" + // "TYPE_LITTER_RECEPTACLE" + // "TYPE_LOCKER_AREA" + // "TYPE_ANIMAL_ENCLOSURE" - Subtype within a zoo - a cage or + // fenced-off or otherwise delineated area containing animals. + // "TYPE_CARTOGRAPHIC_LINE" - A line for a cartographic detail. For + // example the international date line. Such features should have + // polyline geometry. + // "TYPE_ESTABLISHMENT" - ABSTRACT This type is being replaced by + // TYPE_COMPOUND_GROUNDS. For further details, see go/compounds-v2 + // "TYPE_ESTABLISHMENT_GROUNDS" - DEPRECATED This type has been + // replaced by TYPE_COMPOUND_BUILDING. For further details, see + // go/oyster-compounds + // "TYPE_ESTABLISHMENT_BUILDING" - DEPRECATED + // "TYPE_ESTABLISHMENT_POI" - An establishment which has a address + // (a.k.a. location or storefront). Note that it *may* also have a + // service area (e.g. a restaurant that offers both dine-in and + // delivery). This type of business is also known as a "hybrid" Service + // Area Business. Establishment POIs can be referenced by TYPE_COMPOUND + // features using the RELATION_PRIMARILY_OCCUPIED_BY. This is the + // reciprocal relation of the RELATION_OCCUPIES. + // "TYPE_ESTABLISHMENT_SERVICE" - A business without a storefront, + // e.g. a plumber. It would normally not have a place that a customer + // could visit to receive service, but it would have an area served by + // the business. Also known as a "pure" Service Area Business. + // NOTE(tcain): Using value 0xD441, since we could find ourselves with a + // need to differentiate service areas from online-only at this level in + // the future, but still benefit from being able to group those under a + // common parent, disjoint from TYPE_ESTABLISHMENT_POI. + // "TYPE_CELESTIAL" - The root of types of features that are in the + // sky, rather than on the earth. There will eventually be a hierarchy + // of types here. + // "TYPE_ROAD_MONITOR" - Features responsible for monitoring traffic + // on roads (usually for speed). Includes cameras at particular points + // as well as monitors that cover larger spans. Features of this type + // should have a corresponding gcid that specifies the correct subtype + // (e.g. gcid:road_camera or gcid:speed_camera_zone). This type was + // originally named as TYPE_ROAD_CAMERA. + // "TYPE_PUBLIC_SPACES_AND_MONUMENTS" - ABSTRACT + // "TYPE_STATUE" - Note that this type does not distinguish the nature + // of the statue (religious, historical, memorial, tourist, ...). + // "TYPE_TOWN_SQUARE" - Open space used for events, gathering, or as + // market-place. + // "TYPE_LEVEL" - A feature used to represent a logical level, e.g. + // floor. + // "TYPE_COMPOUND" - ABSTRACT + // "TYPE_COMPOUND_GROUNDS" - e.g. campus, compound, parcel. + // "TYPE_COMPOUND_BUILDING" - e.g. single family dwelling, office + // building. + // "TYPE_COMPOUND_SECTION" - e.g. suite, room, hallway, cubicle. + // "TYPE_TERMINAL_POINT" - A terminal point represents a good location + // for a user to meet a taxi, ridesharing vehicle, or general driver. + // "TYPE_REGULATED_AREA" - An area controlled in some way by an + // authoritative source, such as a government-designated COVID + // containment zone. Features of this type should have one or more gcids + // corresponding to their specific regulation. + // "TYPE_LOGICAL_BORDER" - RESERVED + // "TYPE_DO_NOT_USE_RESERVED_TO_CATCH_GENERATED_FILES" - DEPRECATED + // "TYPE_UNKNOWN" - A feature of completely unknown type. This should + // only be used when absolutely necessary. One example in which this + // type is useful is in the Chinese importer, which must heuristically + // segment addresses into components - it often does not know what types + // to make those components. Please note that the Oyster address + // formatter does not currently support address components of + // TYPE_UNKNOWN well. + Type string `json:"type,omitempty"` + + // VerticalOrdering: Represents vertical ordering for this feature + // relative to other geometrically-overlaping features. See + // go/aboutgrades for more information about distinction among different + // levels. + VerticalOrdering *GeostoreVerticalOrderingProto `json:"verticalOrdering,omitempty"` + + // WaterRemovedPolygon: RESERVED + WaterRemovedPolygon *GeostorePolygonProto `json:"waterRemovedPolygon,omitempty"` + + // Website: The official website of this feature. Stored as a repeated + // field to allow for multilingual official websites (see comments in + // url.proto). + Website []*GeostoreUrlProto `json:"website,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccessPoint") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccessPoint") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFeatureProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFeatureProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreFeatureProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreFeatureProto + var s1 struct { + GeometryPrecisionMeters gensupport.JSONFloat64 `json:"geometryPrecisionMeters"` + Rank gensupport.JSONFloat64 `json:"rank"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.GeometryPrecisionMeters = float64(s1.GeometryPrecisionMeters) + s.Rank = float64(s1.Rank) + return nil +} + +// GeostoreFieldMetadataProto: 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). +type GeostoreFieldMetadataProto struct { + Internal *GeostoreInternalFieldMetadataProto `json:"internal,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Internal") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Internal") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFieldMetadataProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFieldMetadataProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFieldWithRightsProto: Proto used to represent rights for a +// field type. See go/geo-rights for more details. NOTE: Use +// google3/geostore/provenance/public/rights.h or +// google3/java/com/google/geostore/provenance/rights/Rights.swig +// instead of accessing this proto directly. +type GeostoreFieldWithRightsProto struct { + // AttributeId: ** DEPRECATED ** If field_type is set to + // FEATURE_ATTRIBUTE or KNOWLEDGE_GRAPH_PROPERTY, the attribute ID / KG + // property ID that makes this field with rights complete. + AttributeId string `json:"attributeId,omitempty"` + + FeaturePropertyId *GeostoreFeaturePropertyIdProto `json:"featurePropertyId,omitempty"` + + // FieldType: The field type for which the rights level are tracked on. + // The default value here has to match the value of fieldtype::NONE. + FieldType int64 `json:"fieldType,omitempty"` + + // MinRightsLevel: The minimum rights level for all the current values + // on the field type. + // + // Possible values: + // "UNKNOWN_RIGHTS" - Indicates that the rights level is unknown. This + // should always be the default value of any RightsLevel field in any + // proto. + // "GT_RIGHTS" - GT-rights or GT-level rights is a level of data + // ownership that Google has retained as defined by the Ground Truth + // project. GT rights include but may not be limited to: - Data may be + // used perpetually in any Google product or service - No requirement + // for any on-screen attribution requirements (although we may have + // softer attribution requirements, like display on a legal notices + // page) - No display, distribution, or storage restrictions - other + // than that the content may not be redistributed on a standalone basis, + // independent of a Google product or service. + // "FULL_RIGHTS" - Full rights refers to data for which Google has no + // usage restrictions. We can do whatever we want with it. + MinRightsLevel string `json:"minRightsLevel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AttributeId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AttributeId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFieldWithRightsProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFieldWithRightsProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFlowLineProto: Wrapper to hold data related to a lane’s +// track, extendable for future data. +type GeostoreFlowLineProto struct { + Track *GeostoreTrackProto `json:"track,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Track") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Track") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFlowLineProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFlowLineProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFoodMenuItemOptionProto: 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. +type GeostoreFoodMenuItemOptionProto struct { + // Possible values: + // "ALLERGEN_DAIRY" - A list of types of allergens for food and + // drinks. + // "ALLERGEN_EGG" + // "ALLERGEN_FISH" + // "ALLERGEN_PEANUT" + // "ALLERGEN_SHELLFISH" + // "ALLERGEN_SOY" + // "ALLERGEN_TREE_NUT" + // "ALLERGEN_WHEAT" + AllergenAbsent []string `json:"allergenAbsent,omitempty"` + + // Possible values: + // "ALLERGEN_DAIRY" - A list of types of allergens for food and + // drinks. + // "ALLERGEN_EGG" + // "ALLERGEN_FISH" + // "ALLERGEN_PEANUT" + // "ALLERGEN_SHELLFISH" + // "ALLERGEN_SOY" + // "ALLERGEN_TREE_NUT" + // "ALLERGEN_WHEAT" + AllergenPresent []string `json:"allergenPresent,omitempty"` + + Calories int64 `json:"calories,omitempty"` + + // Ingredients: Ingredients of the food dish option. + Ingredients []*GeostoreFoodMenuItemOptionProtoIngredient `json:"ingredients,omitempty"` + + // Media: Photos of the food dish option. + Media []*GeostoreMediaItemProto `json:"media,omitempty"` + + // NameInfo: The repeated name_info field here is for item options with + // names or descriptions listed in multiple languages. When an item + // option has no names or descriptions, the size of the repeated field + // name_info may be 0. For example, when a food menu item does not have + // multiple options, the item option proto is used only to specify price + // and nutritional information, so it will not have a name_info field. + // There should be at most one name_info for any given language. + NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"` + + // NutritionFacts: Nutrition facts of the food dish option. Note that it + // also includes calories information with a finer defined unit + // information. + NutritionFacts *GeostorePriceInfoFoodNutritionFacts `json:"nutritionFacts,omitempty"` + + // PortionSize: Size of the order, represented in units of items. (e.g. + // 4 "skewers”, 6 "pieces”) + PortionSize *GeostoreFoodMenuItemOptionProtoPortionSize `json:"portionSize,omitempty"` + + // PreparationMethods: Methods on how the food dish option is prepared. + // + // Possible values: + // "METHOD_UNDEFINED" + // "BAKED" + // "BOILED" + // "BLANCHED" + // "BRAISED" + // "CODDLED" + // "PRESSURE_COOKED" + // "SIMMERED" + // "STEAMED" + // "STEEPED" + // "GRILLED" + // "FRIED" + // "PAN_FRIED" + // "STIR_FRIED" + // "SAUTEED" + // "ROASTED" + // "BARBECUED" + // "SEARED" + // "SMOKED" + // "FERMENTED" + // "MARINATED" + // "PICKLED" + // "BASTED" + // "KNEADED" + // "OTHER_METHOD" + PreparationMethods []string `json:"preparationMethods,omitempty"` + + // Price: We use PriceRangeProto here but we expect the lower_price and + // upper_price to be both set to equal numbers because an option should + // have a single price. This field is not required because food item + // prices may be variable depending on season. + Price *GeostorePriceRangeProto `json:"price,omitempty"` + + // Possible values: + // "DIET_HALAL" - A list of types of restrictions adhered to during + // food preparation. + // "DIET_KOSHER" + // "DIET_ORGANIC" + // "DIET_VEGAN" + // "DIET_VEGETARIAN" + Restriction []string `json:"restriction,omitempty"` + + // ServesNumPeople: Number of people can be served by this food dish + // option. + ServesNumPeople int64 `json:"servesNumPeople,omitempty"` + + // Possible values: + // "SPICINESS_NONE" + // "SPICINESS_MILD" + // "SPICINESS_MEDIUM" + // "SPICINESS_HOT" + Spiciness string `json:"spiciness,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AllergenAbsent") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AllergenAbsent") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFoodMenuItemOptionProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFoodMenuItemOptionProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFoodMenuItemOptionProtoIngredient: This message denotes an +// ingredient information of a food dish. +type GeostoreFoodMenuItemOptionProtoIngredient struct { + // NameInfo: The repeated name_info field is for the ingredient in + // multiple languages. + NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NameInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NameInfo") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFoodMenuItemOptionProtoIngredient) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFoodMenuItemOptionProtoIngredient + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFoodMenuItemOptionProtoPortionSize: This message denotes the +// serving portion size of a food dish. +type GeostoreFoodMenuItemOptionProtoPortionSize struct { + // Quantity: Required. + Quantity int64 `json:"quantity,omitempty"` + + // Unit: Required. The repeated name_info field is for the unit in + // multiple languages. + Unit []*GeostorePriceListNameInfoProto `json:"unit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Quantity") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Quantity") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFoodMenuItemOptionProtoPortionSize) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFoodMenuItemOptionProtoPortionSize + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreFoodMenuItemProto: 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. +type GeostoreFoodMenuItemProto struct { + ItemOption []*GeostoreFoodMenuItemOptionProto `json:"itemOption,omitempty"` + + // NameInfo: The repeated name_info field is for items listed in + // multiple languages. + NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ItemOption") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ItemOption") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreFoodMenuItemProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreFoodMenuItemProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreGConceptInstanceProto: A GConceptInstanceProto contains a +// GConceptID (which is the unique identifier of a GConcept, a category +// in the Geo Ontology). +type GeostoreGConceptInstanceProto struct { + // GconceptId: The unique identifier of a GConcept (e.g. + // "gcid:railway"). + GconceptId string `json:"gconceptId,omitempty"` + + // Metadata: Field-level metadata for this GConcept. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Prominence: The relative prominence of this category to this feature + // according to the data provider, as one of the values from the enum + // above. Prominence is a measure of how well the given GConcept + // describes the feature. An example is a gas station with convenience + // store and ATM. All three GConcepts are very relevant, but the + // gas_station GConcept is the most prominent. If the prominence of this + // GConcept is unknown, this field should not be set. + // + // Possible values: + // "NON_PRIMARY" - not a prominent GConcept + // "PRIMARY" - the most prominent GConcept + Prominence string `json:"prominence,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GconceptId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GconceptId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreGConceptInstanceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreGConceptInstanceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreGeopoliticalGeometryProto: Geopolitical (unsimplified) +// polygons for a feature for different geopolitical use cases. See +// go/unsimplified-poly. +type GeostoreGeopoliticalGeometryProto struct { + // RestOfWorldPolygon: The unsimplified, water-subtracted polygon + // representing the feature's geometry as viewed by the rest of the + // world, which may differ from its default polygon, for example by + // excluding certain regions. + RestOfWorldPolygon *GeostorePolygonProto `json:"restOfWorldPolygon,omitempty"` + + // SelfPolygon: The unsimplified, water-subtracted polygon representing + // the feature's geometry as viewed by the country that administers it, + // which may differ from its default polygon, for example by including + // disputed areas. + SelfPolygon *GeostorePolygonProto `json:"selfPolygon,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RestOfWorldPolygon") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RestOfWorldPolygon") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreGeopoliticalGeometryProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreGeopoliticalGeometryProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreGradeLevelProto: 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. +type GeostoreGradeLevelProto struct { + // Index: The index of the point along the segment, where 0 is the + // starting point. This means that the index of a point along a segment + // and its sibling will be different. + Index int64 `json:"index,omitempty"` + + // Level: The grade level of the indexed point. The grade level can be + // thought of as a relative vertical ordering with respect to other + // segments at the same point, where larger/more positive numbers are + // "higher". Negative grade level values are allowed and are typically + // used for points below grade level (0 is a common choice to represent + // the level of points at the ground level). For vertical segments, the + // height, i.e. the vertical length, is represented by difference of + // levels in millimeters. For example, + // feature.segment().grade_level(0).level() == 0 and + // feature.segment().grade_level(1).level() == 5000, then the length of + // the vertical segment feature is 5000 millimeters (5 meters). + Level int64 `json:"level,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Index") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Index") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreGradeLevelProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreGradeLevelProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreHtmlTextProto: Represents HTML text associated with a +// feature. +type GeostoreHtmlTextProto struct { + // Text: Zero or more texts of the specified type, in various languages. + // If this is a HTML_DESCRIPTION blob then these texts would hold the + // description in English, German, and so forth. The text is an HTML + // fragment, not a full page. The fragment should be suitable for + // including in a DIV. It must have balanced HTML tags. It may use + // HTML's "class" attributes to assign classes to HTML elements. This + // allows the HTML to be formatted by an (external) style sheet. The + // HTML should not have embedded style sheet definitions, nor should it + // have embedded JavaScript. + Text []*GeostoreLanguageTaggedTextProto `json:"text,omitempty"` + + // Possible values: + // "HTML_DESCRIPTION" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Text") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Text") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreHtmlTextProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreHtmlTextProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreInferredGeometryProto: The inferred geometry of a feature +// contains 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. Subtract the +// geometries of all the features referenced in "excludes_geometry_of". +// See: go/inferred-geometry for more information. +type GeostoreInferredGeometryProto struct { + // DefinesGeometryFor: Features whose geometry depends on this feature's + // geometry. + DefinesGeometryFor []*GeostoreFeatureIdProto `json:"definesGeometryFor,omitempty"` + + // ExcludesGeometryOf: Features whose geometry to exclude while + // inferring geometry. + ExcludesGeometryOf []*GeostoreFeatureIdProto `json:"excludesGeometryOf,omitempty"` + + // IncludesGeometryOf: Features whose geometry to include while + // inferring geometry. + IncludesGeometryOf []*GeostoreFeatureIdProto `json:"includesGeometryOf,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DefinesGeometryFor") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DefinesGeometryFor") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreInferredGeometryProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreInferredGeometryProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreInternalFeatureProto: Main proto for all internal fields to +// be stored at the feature level. +type GeostoreInternalFeatureProto struct { + // PolygonShapeId: A unique identifier for this feature's polygon data + // which is being held externally in Shapestore (see go/shapestore). + PolygonShapeId string `json:"polygonShapeId,omitempty"` + + // RestOfWorldPolygonShapeId: A unique identifier for this feature's + // rest-of-world view polygon data which is being held externally in + // Shapestore (see go/shapestore). This is part of the feature's + // geopolitical geometry. + RestOfWorldPolygonShapeId string `json:"restOfWorldPolygonShapeId,omitempty"` + + // RightsStatus: Per-field rights for this feature. See + // http://g3doc/geostore/g3doc/developers-guide/inputs/rights-tracking + // for more information. + RightsStatus *GeostoreRightsStatusProto `json:"rightsStatus,omitempty"` + + // SelfPolygonShapeId: A unique identifier for this feature's self view + // polygon data which is being held externally in Shapestore (see + // go/shapestore). This is part of the feature's geopolitical geometry. + SelfPolygonShapeId string `json:"selfPolygonShapeId,omitempty"` + + // Trust: Trust signals/annotations for the feature. In an input + // feature, these signals are computed at the beginning of the pipeline + // and are immutable during the processing. In output features, this + // proto may define the rules/criteria that a newer edit should meet, in + // order to be applied. + Trust *GeostoreTrustSignalsProto `json:"trust,omitempty"` + + // WaterRemovedPolygonShapeId: A unique identifier for this feature's + // water-removed polygon data which is being held externally in + // Shapestore (see go/shapestore). + WaterRemovedPolygonShapeId string `json:"waterRemovedPolygonShapeId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PolygonShapeId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PolygonShapeId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreInternalFeatureProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreInternalFeatureProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreInternalFieldMetadataProto struct { + // IsAuto: 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. + IsAuto bool `json:"isAuto,omitempty"` + + // SourceSummary: Information about the source providing the piece of + // data this metadata is attached to. + SourceSummary *GeostoreInternalSourceSummaryProto `json:"sourceSummary,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsAuto") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsAuto") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreInternalFieldMetadataProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreInternalFieldMetadataProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreInternalSegmentProto: 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/mr-mergesegments_test.cc is aware of them. +type GeostoreInternalSegmentProto struct { + // TravelAllowance: The set of restrictions that apply to this segment; + // these are actually *POSITIVE* restrictions, i.e. they are known to be + // allowed. + TravelAllowance []*GeostoreRestrictionProto `json:"travelAllowance,omitempty"` + + // ForceSendFields is a list of field names (e.g. "TravelAllowance") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TravelAllowance") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreInternalSegmentProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreInternalSegmentProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreInternalSourceSummaryProto struct { + // Dataset: 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". + Dataset string `json:"dataset,omitempty"` + + // Provider: The data provider from which this piece of data was + // generated. Equivalent to SourceInfoProto.provider in the public + // schema. + // + // Possible values: + // "PROVIDER_ANY" - ABSTRACT The root of all provider types. This + // should never be present on an actual feature, but can be useful when + // calling InCategory. + // "PROVIDER_UNKNOWN" - not actually a legal value, used as sentinel + // "PROVIDER_NAVTEQ" + // "PROVIDER_TELE_ATLAS" - ABSTRACT + // "PROVIDER_TELE_ATLAS_MULTINET" + // "PROVIDER_TELE_ATLAS_CODEPOINT" + // "PROVIDER_TELE_ATLAS_GEOPOST" + // "PROVIDER_TELE_ATLAS_DATAGEO" + // "PROVIDER_TELE_ATLAS_ADDRESS_POINTS" + // "PROVIDER_TELCONTAR" + // "PROVIDER_EUROPA" + // "PROVIDER_ROYAL_MAIL" + // "PROVIDER_GOOGLE" - ABSTRACT + // "PROVIDER_GOOGLE_HAND_EDIT" + // "PROVIDER_GOOGLE_BORDERS" - All new "Google" provider entries must + // be full ints. The next available ID is: 0x111730AA + // "PROVIDER_GOOGLE_SUBRANGE" - ABSTRACT + // "PROVIDER_GOOGLE_GT_FUSION" + // "PROVIDER_GOOGLE_ZAGAT_CMS" + // "PROVIDER_GOOGLE_PLACE_NAVBOOST" + // "PROVIDER_GOOGLE_FOOTPRINT" + // "PROVIDER_GOOGLE_PRODUCT_TERMS" + // "PROVIDER_GOOGLE_POINTCARDS" + // "PROVIDER_GOOGLE_BUSINESS_CHAINS" + // "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION" + // "PROVIDER_GOOGLE_PRONUNCIATIONS" + // "PROVIDER_GOOGLE_DUMPLING" + // "PROVIDER_GOOGLE_DISTILLERY" + // "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION" + // "PROVIDER_GOOGLE_RELATION_MINER" + // "PROVIDER_GOOGLE_MAPSPAM" + // "PROVIDER_GOOGLE_ROSE" + // "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS" + // "PROVIDER_GOOGLE_WIPEOUT" - This is an internal *only* provider + // meant for sending wipeout requests to mapfacts. + // "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH" + // "PROVIDER_GOOGLE_BEEGEES" + // "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION" + // "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION" + // "PROVIDER_GOOGLE_GEO_WORLDMAPS" + // "PROVIDER_GOOGLE_GEO_MODERATION" + // "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS" + // "PROVIDER_GOOGLE_LOCAL_ALCHEMY" + // "PROVIDER_GOOGLE_KEROUAC" + // "PROVIDER_GOOGLE_MOBRANK" + // "PROVIDER_GOOGLE_RAPTURE" + // "PROVIDER_GOOGLE_CULTURAL_INSTITUTE" + // "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS" + // "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS" + // "PROVIDER_GOOGLE_TACTILE_MAPS" + // "PROVIDER_GOOGLE_MAPS_FOR_MOBILE" + // "PROVIDER_GOOGLE_GEO_REALTIME" + // "PROVIDER_GOOGLE_PROMINENT_PLACES" - Never rely on source infos + // with this provider to identify whether or not a feature is a + // Prominent Place! Instead, use the proper API, + // localsearch_clustering::QualityTierHelper::IsProminentPlace(). + // "PROVIDER_GOOGLE_PLACE_ACTIONS" + // "PROVIDER_GOOGLE_GT_AUTO_EDITS" + // "PROVIDER_GOOGLE_WAZE" + // "PROVIDER_GOOGLE_ONTHEGO" + // "PROVIDER_GOOGLE_GT_IMPORT" + // "PROVIDER_GOOGLE_STRUCTURED_DATA" + // "PROVIDER_GOOGLE_HELICOPTER" + // "PROVIDER_GOOGLE_ROLLBACK" + // "PROVIDER_GOOGLE_RIGHTS_REPAIR" + // "PROVIDER_GOOGLE_PERFUME" + // "PROVIDER_GOOGLE_MAPS_TRANSLATION" + // "PROVIDER_GOOGLE_CALL_ME_MAYBE" + // "PROVIDER_GOOGLE_LOCAL_UNIVERSAL" + // "PROVIDER_GOOGLE_CROUPIER" + // "PROVIDER_GOOGLE_SKYSMART" + // "PROVIDER_GOOGLE_RIDDLER" + // "PROVIDER_GOOGLE_ROADCLOSURES" + // "PROVIDER_GOOGLE_SPORE" - UMBRELLA + // "PROVIDER_GOOGLE_LOCALIZATION" + // "PROVIDER_GOOGLE_CATTERMS" + // "PROVIDER_GOOGLE_GT_FIELD_OPS" + // "PROVIDER_GOOGLE_MATCHMAKER" + // "PROVIDER_GOOGLE_ARBITRATION" + // "PROVIDER_GOOGLE_BIZBUILDER_OPS" + // "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS" + // "PROVIDER_GOOGLE_GT_DRAFTY" + // "PROVIDER_GOOGLE_HOTELADS_OPS" + // "PROVIDER_GOOGLE_MARKERS" + // "PROVIDER_GOOGLE_STATE_MACHINE" + // "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE" + // "PROVIDER_GOOGLE_BIKESHARE" + // "PROVIDER_GOOGLE_GHOSTWRITER" + // "PROVIDER_GOOGLE_EDIT_PLATFORM" + // "PROVIDER_GOOGLE_BLUE_GINGER" + // "PROVIDER_GOOGLE_GEO_TIGER" + // "PROVIDER_GOOGLE_HYADES" + // "PROVIDER_GOOGLE_WEBQUARRY" + // "PROVIDER_GOOGLE_GEO_MADDEN" + // "PROVIDER_GOOGLE_ANDROID_PAY" + // "PROVIDER_GOOGLE_OPENING_HOURS_TEAM" + // "PROVIDER_GOOGLE_LOCAL_DISCOVERY" + // "PROVIDER_GOOGLE_LOCAL_HEALTH" + // "PROVIDER_GOOGLE_UGC_MAPS" + // "PROVIDER_GOOGLE_FIBER" + // "PROVIDER_GOOGLE_REVGEO" + // "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END" + // "PROVIDER_GOOGLE_GEO_UGC_TASKS" + // "PROVIDER_GOOGLE_GEOCODING" + // "PROVIDER_GOOGLE_SPYGLASS" + // "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES" + // "PROVIDER_GOOGLE_GEO_CHANGES" + // "PROVIDER_GOOGLE_HUME" + // "PROVIDER_GOOGLE_MEGAMIND" + // "PROVIDER_GOOGLE_GT_ROADSYNTH" + // "PROVIDER_GOOGLE_FIREBOLT" + // "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS" + // "PROVIDER_GOOGLE_UGC_SERVICES" + // "PROVIDER_GOOGLE_GEOALIGN" + // "PROVIDER_GOOGLE_GT_COMPOUNDS" + // "PROVIDER_GOOGLE_FOOD_ORDERING" + // "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS" + // "PROVIDER_GOOGLE_URAW" + // "PROVIDER_GOOGLE_FLYEYE" + // "PROVIDER_GOOGLE_YOUKE" + // "PROVIDER_GOOGLE_GT_ZEPHYR" + // "PROVIDER_GOOGLE_USER_SAFETY" + // "PROVIDER_GOOGLE_ADDRESS_MAKER" + // "PROVIDER_GOOGLE_UGC_PHOTOS" + // "PROVIDER_GOOGLE_GT_WINDCHIME" + // "PROVIDER_GOOGLE_SNAG_FIXER" + // "PROVIDER_GOOGLE_GEO_DEALS" + // "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS" + // "PROVIDER_GOOGLE_PROPERTY_INSIGHTS" + // "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS" + // "PROVIDER_GOOGLE_GEO_PORTKEY" + // "PROVIDER_GOOGLE_ROAD_MAPPER" + // "PROVIDER_GOOGLE_LOCATION_PLATFORM" + // "PROVIDER_GOOGLE_POSTTRIP" + // "PROVIDER_GOOGLE_TRAVEL_DESTINATION" + // "PROVIDER_GOOGLE_GEO_DATA_UPLOAD" - UMBRELLA + // "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP" + // "PROVIDER_GOOGLE_USER" + // "PROVIDER_GOOGLE_STATION" + // "PROVIDER_GOOGLE_GEO_FOOD" + // "PROVIDER_GOOGLE_GEO_AR" + // "PROVIDER_GOOGLE_GEO_TEMPORAL" + // "PROVIDER_GOOGLE_SERVICES_MARKETPLACE" + // "PROVIDER_GOOGLE_IMT_CLEANUP" + // "PROVIDER_GOOGLE_GEO_FOOD_MENU" + // "PROVIDER_GOOGLE_CARENAV" + // "PROVIDER_GOOGLE_DRIVING_FEEDS" - UMBRELLA + // "PROVIDER_GOOGLE_DRIVING_UGC" + // "PROVIDER_GOOGLE_POLAR" + // "PROVIDER_GOOGLE_TRIWILD" + // "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS" + // "PROVIDER_GOOGLE_SA_FROM_WEB" + // "PROVIDER_GOOGLE_POI_ALIGNMENT" + // "PROVIDER_GOOGLE_SA_FROM_HULK" + // "PROVIDER_GOOGLE_SERVICES_INTERACTIONS" + // "PROVIDER_GOOGLE_ROADS_UGC_EDITOR" + // "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE" + // "PROVIDER_GOOGLE_GEO_DRIVING_VIZ" + // "PROVIDER_GOOGLE_GEO_TASKING" + // "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE" + // "PROVIDER_GOOGLE_CROWDTASK_TASKADS" + // "PROVIDER_GOOGLE_CROWDTASK_TASKMATE" + // "PROVIDER_GOOGLE_CROWDTASK_FURBALL" + // "PROVIDER_GOOGLE_CROWDTASK_ADAP" + // "PROVIDER_GOOGLE_GPAY" + // "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS" + // "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION" + // "PROVIDER_GOOGLE_GEOTRACKER" + // "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE" + // "PROVIDER_GOOGLE_GEO_CLOSED_LOOP" + // "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS" + // "PROVIDER_GOOGLE_CORE_DATA_RIGHTS" + // "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS" + // "PROVIDER_GOOGLE_GEO_CONTENT_FIXER" + // "PROVIDER_GOOGLE_POLYGON_REFINEMENT" + // "PROVIDER_GOOGLE_HANASU" + // "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD" + // "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD" + // "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD" + // "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS" + // "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS" + // "PROVIDER_GOOGLE_SA_QUALITY" + // "PROVIDER_GOOGLE_GDCE_CLEANUP" + // "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS" + // "PROVIDER_GOOGLE_LOCALSEARCH" - The next new "Google" provider + // entries should be placed above. + // "PROVIDER_GOOGLE_TRANSIT" - UMBRELLA + // "PROVIDER_GOOGLE_GEOWIKI" + // "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM" + // "PROVIDER_GOOGLE_SYNTHESIZED" + // "PROVIDER_GOOGLE_INTERNAL_TEST" - This is a testing provider for + // teams that wish to integrate with components of the Geo Data + // Infrastructure that require a valid provider. No production data + // should ever be sent using this provider. + // "PROVIDER_GOOGLE_DISPUTED_AREAS" + // "PROVIDER_GOOGLE_3DWAREHOUSE" - UMBRELLA + // "PROVIDER_GOOGLE_GROUNDS_BUILDER" + // "PROVIDER_GOOGLE_SESAME" + // "PROVIDER_GOOGLE_GT" + // "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD" - UMBRELLA + // "PROVIDER_GOOGLE_ADSDB" - 0x1117F must not be used, since its range + // extends the PROVIDER_GOOGLE hierarchy. + // "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION" + // "PROVIDER_GOOGLE_TRAVELSEARCH" + // "PROVIDER_GOOGLE_PANORAMIO" + // "PROVIDER_GOOGLE_YOUTUBE" + // "PROVIDER_GOOGLE_OLD" + // "PROVIDER_GOOGLE_STREETVIEW" + // "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW" + // "PROVIDER_GOOGLE_ZIPIT" + // "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES" + // "PROVIDER_GOOGLE_GOLDEN" + // "PROVIDER_GOOGLE_INNERSPACE" + // "PROVIDER_GOOGLE_MAPSEARCH" + // "PROVIDER_GOOGLE_CATEGORIES_TEAM" - Deprecated in favor of + // PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and + // PROVIDER_GOOGLE_GEO_TIGER (for categories). + // "PROVIDER_GOOGLE_CROWDSENSUS" + // "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY" - 0x1117FF should not + // be used, since its range further extends the PROVIDER_GOOGLE + // hierarchy. aka Local AI. + // "PROVIDER_GOOGLE_FREEBASE" + // "PROVIDER_GOOGLE_HOTELADS" + // "PROVIDER_GOOGLE_AUTHORITY_PAGES" + // "PROVIDER_GOOGLE_PLACES_API" + // "PROVIDER_GOOGLE_NAMEHEATMAP" + // "PROVIDER_GOOGLE_MAPMAKER" + // "PROVIDER_GOOGLE_MAPMAKER_MOBILE" + // "PROVIDER_GOOGLE_MAPMAKER_PANCAKE" + // "PROVIDER_GOOGLE_MAPMAKER_V2" + // "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE" + // "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER" - No data is obtained from + // this provider. It is only used to identify features that must be + // served on MapMaker. + // "PROVIDER_GOOGLE_GT_LOCAL" + // "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS" + // "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS" + // "PROVIDER_GOOGLE_ENTITY_NAVBOOST" + // "PROVIDER_GOOGLE_RELATED_PLACES" + // "PROVIDER_GOOGLE_KNOWN_FOR_TERMS" + // "PROVIDER_GOOGLE_SYNTHETIC_AREAS" - 0x1117FFF should not be used, + // since its range further extends the PROVIDER_GOOGLE hierarchy. + // Synthetically generated areas (sublocalities/neighborhoods/ postal + // codes/etc) based on dropped terms from approximate geocoding. More + // info on go/syntheticareas. + // "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS" + // "PROVIDER_GOOGLE_CROSS_STREETS" + // "PROVIDER_GOOGLE_CORRIDORS" + // "PROVIDER_GOOGLE_BICYCLE_RENTAL" - Similar to Google Transit, a + // provider that aggregates positions of bicycle rental points that we + // have agreements with to show on maps + // "PROVIDER_GOOGLE_CONCRETE_URLS" + // "PROVIDER_GOOGLE_LEANBACK" + // "PROVIDER_GOOGLE_LOCKED_LISTINGS" + // "PROVIDER_GOOGLE_MONITORING" + // "PROVIDER_GOOGLE_SPROUT" + // "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY" + // "PROVIDER_GOOGLE_GOBY" + // "PROVIDER_GOOGLE_PROBLEM_REPORT" + // "PROVIDER_GOOGLE_CANDID" + // "PROVIDER_GOOGLE_BIZBUILDER" + // "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA" - This range has been + // depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above. + // "PROVIDER_MAPDATA_SCIENCES" + // "PROVIDER_MAPONICS" + // "PROVIDER_SKI_RESORTS" + // "PROVIDER_ZENRIN" + // "PROVIDER_SANBORN" + // "PROVIDER_URBAN_MAPPING" + // "PROVIDER_US_GOVERNMENT" - ABSTRACT + // "PROVIDER_US_CENSUS" + // "PROVIDER_US_POSTAL_SERVICE" + // "PROVIDER_US_GEOLOGICAL_SURVEY" + // "PROVIDER_US_GNIS" + // "PROVIDER_US_LANDSAT" + // "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY" + // "PROVIDER_US_NGA_GNS" + // "PROVIDER_US_SSIBL" - Small Scale International Boundary Lines + // "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS" + // "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION" - + // NOAA + // "PROVIDER_US_POLAR_GEOSPATIAL_CENTER" - PGC + // "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE" - USDA + // "PROVIDER_US_NPI_REGISTRY" - National Provider Identifier Registry + // "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS" + // "PROVIDER_DMTI_SPATIAL" + // "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION" + // "PROVIDER_MAPLINK" + // "PROVIDER_KINGWAY" + // "PROVIDER_GEOCENTRE" + // "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS" + // "PROVIDER_CN_MAPABC" + // "PROVIDER_SMITHSONIAN_INSTITUTE" + // "PROVIDER_TRACKS_FOR_AFRICA" + // "PROVIDER_PPWK" - old name for PROVIDER_NAVIGO + // "PROVIDER_LEADDOG" + // "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG" + // "PROVIDER_GISRAEL" + // "PROVIDER_BASARSOFT" + // "PROVIDER_MAPINFO" + // "PROVIDER_MAPIT" + // "PROVIDER_GEOBASE" + // "PROVIDER_ORION" + // "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY" + // "PROVIDER_ANASAT" + // "PROVIDER_MINED_POSTCODES" + // "PROVIDER_DMAPAS" + // "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY" + // "PROVIDER_CH_SBB" + // "PROVIDER_SKENERGY" + // "PROVIDER_GBRMPA" + // "PROVIDER_KOREA_POST" + // "PROVIDER_CN_AUTONAVI" + // "PROVIDER_MINED_POI" + // "PROVIDER_ML_INFOMAP" + // "PROVIDER_SNOOPER" + // "PROVIDER_GEOSISTEMAS" + // "PROVIDER_AFRIGIS" + // "PROVIDER_TRANSNAVICOM" + // "PROVIDER_EASYCONNECT" + // "PROVIDER_LANTMATERIET" + // "PROVIDER_LOGICA" + // "PROVIDER_MAPKING" + // "PROVIDER_DIANPING" + // "PROVIDER_GEONAV" + // "PROVIDER_HEIBONSHA" + // "PROVIDER_DEUTSCHE_TELEKOM" + // "PROVIDER_LINGUISTIC_DATA_CONSORTIUM" + // "PROVIDER_ACXIOM" + // "PROVIDER_DUN_AND_BRADSTREET" - See b/33687395 + // "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION" + // "PROVIDER_INFOUSA" + // "PROVIDER_INFOUSA_NIXIE" + // "PROVIDER_THOMSON_LOCAL" + // "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION" + // "PROVIDER_WIKIPEDIA" + // "PROVIDER_INFOBEL" + // "PROVIDER_MX_GOVERNMENT" - ABSTRACT + // "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY" + // "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO" + // "PROVIDER_TELEGATE" + // "PROVIDER_TELELISTAS" + // "PROVIDER_MAPCITY" + // "PROVIDER_EXPLAINER_DC" + // "PROVIDER_DAIKEI" + // "PROVIDER_NL_CHAMBER_OF_COMMERCE" + // "PROVIDER_KOREA_INFO_SERVICE" + // "PROVIDER_WIKITRAVEL" + // "PROVIDER_FLICKR" + // "PROVIDER_DIANCO" + // "PROVIDER_VOLT_DELTA" + // "PROVIDER_SG_GOVERNMENT" - ABSTRACT + // "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY" + // "PROVIDER_MAPBAR" + // "PROVIDER_LONGTU" + // "PROVIDER_SA_GOVERNMENT" - ABSTRACT + // "PROVIDER_SA_SAUDI_POST" + // "PROVIDER_PEAKLIST" + // "PROVIDER_LOCAL_BUSINESS_CENTER" + // "PROVIDER_LOCAL_FEED_XML" - UMBRELLA + // "PROVIDER_WEB" + // "PROVIDER_RAILS_TO_TRAILS" + // "PROVIDER_INDIACOM" + // "PROVIDER_INFOMEDIA" + // "PROVIDER_PICASA" + // "PROVIDER_AT_GOVERNMENT" - ABSTRACT + // "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN" + // "PROVIDER_AT_NATIONAL_TOURIST_OFFICE" + // "PROVIDER_AT_AUSTRIA_POST" + // "PROVIDER_NO_GOVERNMENT" - ABSTRACT + // "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON" + // "PROVIDER_NO_POSTEN_NORGE_AS" + // "PROVIDER_CH_GOVERNMENT" - ABSTRACT + // "PROVIDER_CH_SWISS_POST" + // "PROVIDER_CH_SWISSTOPO" + // "PROVIDER_CH_SWISS_NATIONAL_PARK" + // "PROVIDER_NAVIT" + // "PROVIDER_GEOSEARCH" + // "PROVIDER_DE_GOVERNMENT" - ABSTRACT + // "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE" + // "PROVIDER_BUNDESNETZAGENTUR" + // "PROVIDER_SCHOBER_GROUP" + // "PROVIDER_MIREO" + // "PROVIDER_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_US_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO" + // "PROVIDER_NZ_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY" + // "PROVIDER_PL_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE" + // "PROVIDER_PT_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ" + // "PROVIDER_AT_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT" + // "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA" + // "PROVIDER_AU_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA" + // "PROVIDER_IS_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK" + // "PROVIDER_NL_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN" + // "PROVIDER_BE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO" + // "PROVIDER_SE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA" + // "PROVIDER_UA_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV" + // "PROVIDER_OTHER_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS" + // "PROVIDER_FR_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER" + // "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX" + // "PROVIDER_SG_PUBLIC_MUNICIPALITY" + // "PROVIDER_BR_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO" + // "PROVIDER_MAPCUBE" + // "PROVIDER_3D_REALITYMAPS" + // "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT" + // "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA" + // "PROVIDER_DISNEY" + // "PROVIDER_CYBERCITY" + // "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS" + // "PROVIDER_VIRTUAL_HUNGARY_LIMITED" + // "PROVIDER_VIRTUEL_CITY" + // "PROVIDER_SCREAMPOINT_INTERNATIONAL" + // "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN" + // "PROVIDER_FR_GOVERNMENT" - ABSTRACT + // "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL" + // "PROVIDER_FR_CADASTRE" + // "PROVIDER_DIADIEM" + // "PROVIDER_THE_WEATHER_CHANNEL" + // "PROVIDER_COWI" + // "PROVIDER_FALKPLAN_ANDES" + // "PROVIDER_NL_GOVERNMENT" - ABSTRACT + // "PROVIDER_NL_KADASTER" + // "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS" + // "PROVIDER_DIGITAL_MAP_PRODUCTS" + // "PROVIDER_SILICE_DIGITAL" + // "PROVIDER_TYDAC" + // "PROVIDER_ALBRECHT_GOLF" + // "PROVIDER_HEALTH_CH" + // "PROVIDER_VISITDENMARK" + // "PROVIDER_FLYHERE" + // "PROVIDER_DIGITAL_DATA_SERVICES" + // "PROVIDER_MECOMO" + // "PROVIDER_ZA_GOVERNMENT" - ABSTRACT + // "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM" + // "PROVIDER_SENSIS" + // "PROVIDER_JJCONNECT" + // "PROVIDER_OPPLYSNINGEN" + // "PROVIDER_TELLUS" + // "PROVIDER_IQONIA" + // "PROVIDER_BE_GOVERNMENT" - ABSTRACT + // "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT" + // "PROVIDER_BE_BRUSSELS_MOBILITY" + // "PROVIDER_YELLOWMAP_AG" + // "PROVIDER_STIFTUNG_GESUNDHEIT" + // "PROVIDER_GIATA" + // "PROVIDER_SANPARKS" + // "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE" + // "PROVIDER_INFOPORTUGAL" + // "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO" + // "PROVIDER_COLLINS_BARTHOLOMEW" + // "PROVIDER_PROTECT_PLANET_OCEAN" + // "PROVIDER_KARTTAKESKUS" + // "PROVIDER_FI_GOVERNMENT" - ABSTRACT + // "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION" + // "PROVIDER_FI_NATIONAL_LAND_SURVEY" + // "PROVIDER_FI_STATISTICS_FINLAND" + // "PROVIDER_GB_GOVERNMENT" - ABSTRACT + // "PROVIDER_GB_ORDNANCE_SURVEY" + // "PROVIDER_NATURAL_ENGLAND" + // "PROVIDER_WELSH_GOVERNMENT" + // "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS" + // "PROVIDER_EPSILON" + // "PROVIDER_PARTNER_FRONT_END" + // "PROVIDER_CARTESIA" + // "PROVIDER_SE_GOVERNMENT" - ABSTRACT + // "PROVIDER_SE_TRAFIKVERKET" + // "PROVIDER_SE_NATURVARDSVERKET" + // "PROVIDER_IE_GOVERNMENT" - ABSTRACT + // "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND" + // "PROVIDER_LU_GOVERNMENT" - ABSTRACT + // "PROVIDER_LU_P_AND_T_LUXEMBOURG" + // "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE" + // "PROVIDER_LU_NATIONAL_TOURIST_OFFICE" + // "PROVIDER_MAPFLOW" + // "PROVIDER_TKARTOR" + // "PROVIDER_JUMPSTART" + // "PROVIDER_EPTISA" + // "PROVIDER_MC_GOVERNMENT" - ABSTRACT + // "PROVIDER_MC_PRINCIPAUTE_DE_MONACO" + // "PROVIDER_MONOLIT" + // "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE" + // "PROVIDER_MODIS" + // "PROVIDER_GEOX" + // "PROVIDER_GEODIRECTORY" + // "PROVIDER_GEOPLAN" + // "PROVIDER_INFODIREKT" + // "PROVIDER_GEOGLOBAL" + // "PROVIDER_DEUTSCHE_POST" + // "PROVIDER_TRACASA" + // "PROVIDER_CORREOS" + // "PROVIDER_ES_GOVERNMENT" - ABSTRACT + // "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA" + // "PROVIDER_EDIMAP" + // "PROVIDER_VERIZON" + // "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS" + // "PROVIDER_PROMAPS" + // "PROVIDER_CONSODATA" + // "PROVIDER_DE_AGOSTINI" + // "PROVIDER_FEDERPARCHI" + // "PROVIDER_NAVIGO" + // "PROVIDER_ITALIAMAPPE" + // "PROVIDER_CZECOT" + // "PROVIDER_NATURAL_EARTH" + // "PROVIDER_REGIO" + // "PROVIDER_SHIPWRECK_CENTRAL" + // "PROVIDER_RUTGERS_STATE_UNIVERSITY" + // "PROVIDER_TWINICE" + // "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD" + // "PROVIDER_INFOGROUP" + // "PROVIDER_TNET" + // "PROVIDER_CTT_CORREIOS_DE_PORTUGAL" + // "PROVIDER_EUROPARC" + // "PROVIDER_IUPPITER" + // "PROVIDER_MICHAEL_BAUER_INTERNATIONAL" + // "PROVIDER_LEPTON" + // "PROVIDER_MAPPOINT" + // "PROVIDER_GEODATA" + // "PROVIDER_RU_GOVERNMENT" - ABSTRACT + // "PROVIDER_RU_FNS_KLADR" + // "PROVIDER_BR_GOVERNMENT" - ABSTRACT + // + // "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATU + // RAIS_RENOVAVEIS" - IBAMA + // "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE" - MMA + // "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS" - ANA + // "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA" - + // IBGE + // "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO" - FUNAI + // + // "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES" + // - DNIT + // "PROVIDER_AZAVEA" + // "PROVIDER_NORTHSTAR" + // "PROVIDER_COMMEDI" + // "PROVIDER_NEXUS_GEOGRAFICS" + // "PROVIDER_INFOERA" + // "PROVIDER_AD_GOVERNMENT" - ABSTRACT + // "PROVIDER_AD_AREA_DE_CARTOGRAFIA" - Department of Cartography + // "PROVIDER_MAXXIMA" + // "PROVIDER_SI_GOVERNMENT" - ABSTRACT + // "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT" + // "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS" + // "PROVIDER_L1_TECHNOLOGIES" + // "PROVIDER_TELEMEDIA" + // "PROVIDER_CDCOM_PROGOROD" + // "PROVIDER_MIT_CITYGUIDE" + // "PROVIDER_SUNCART" + // "PROVIDER_MICROMAPPER" + // "PROVIDER_RICHI" + // "PROVIDER_FORUM44" + // "PROVIDER_SEAT" + // "PROVIDER_VALASSIS" + // "PROVIDER_NAVICOM" + // "PROVIDER_COLTRACK" + // "PROVIDER_PSMA_AUSTRALIA" + // "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA" + // "PROVIDER_CA_GOVERNMENT" - ABSTRACT + // "PROVIDER_STATISTICS_CANADA" + // "PROVIDER_TOCTOC" + // "PROVIDER_RMSI" + // "PROVIDER_TRUE_TECHNOLOGY" + // "PROVIDER_INCREMENT_P_CORPORATION" + // "PROVIDER_GOJAVAS" + // "PROVIDER_GEOINFORMATION_GROUP" + // "PROVIDER_CYBERSOFT" + // "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY" - 0x12 and 0x120 are not + // to be used. OOO CET + // "PROVIDER_EE_GOVERNMENT" - ABSTRACT + // "PROVIDER_EE_MAA_AMET" - Estonian Land Board + // "PROVIDER_GASBUDDY" + // "PROVIDER_DK_GOVERNMENT" - ABSTRACT + // "PROVIDER_DK_GEODATASTYRELSEN" - Danish Geodata Agency + // "PROVIDER_MURCIA_REGION_GOVERNMENT" + // "PROVIDER_CORREIOS" + // "PROVIDER_WEST_WORLD_MEDIA" + // "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION" + // "PROVIDER_MEDICARE" + // "PROVIDER_POLARIS" + // "PROVIDER_TW_GOVERNMENT" - ABSTRACT + // "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER" + // "PROVIDER_NORDECA" + // "PROVIDER_AFRIMAPPING" + // "PROVIDER_OVERDRIVE" + // "PROVIDER_PROVIDER_NETWORK_DIRECTORIES" + // "PROVIDER_BR_MINISTERIO_DA_SAUDE" + // "PROVIDER_DIGITAL_EGYPT" + // "PROVIDER_INRIX" + // "PROVIDER_ARPINDO" + // "PROVIDER_IT_GOVERNMENT" - ABSTRACT + // "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE" + // "PROVIDER_EAST_END_GROUP" + // "PROVIDER_INGEOLAN" + // "PROVIDER_SEMACONNECT" + // "PROVIDER_BLINK" + // "PROVIDER_EVGO" + // "PROVIDER_CHARGEPOINT" + // "PROVIDER_TPL_TRAKKER" + // "PROVIDER_OI" + // "PROVIDER_MAPARADAR" + // "PROVIDER_SINGAPORE_POST" + // "PROVIDER_CHARGEMASTER" + // "PROVIDER_TESLA" + // "PROVIDER_VISICOM" + // "PROVIDER_GEOLYSIS" + // "PROVIDER_ZEPHEIRA" + // "PROVIDER_HUBJECT" + // "PROVIDER_PODPOINT" + // "PROVIDER_CHARGEFOX" + // "PROVIDER_KR_GOVERNMENT" - ABSTRACT + // "PROVIDER_KR_MOLIT" - Ministry of land, infrastructure and + // transport, 국토교통부, Guktogyotongbu + // "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY" + // "PROVIDER_CRITCHLOW" + // "PROVIDER_EIFRIG" + // "PROVIDER_GIREVE" + // "PROVIDER_CN_NAVINFO" + // "PROVIDER_JAPAN_CHARGE_NETWORK" + // "PROVIDER_NOBIL" + // "PROVIDER_INDIA_BANKS" + // "PROVIDER_INDONESIA_ELECTION_KPU" + // "PROVIDER_CAREERS360" + // "PROVIDER_SOURCE_LONDON" + // "PROVIDER_EVBOX" + // "PROVIDER_JP_GOVERNMENT" - ABSTRACT + // "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT" + // "PROVIDER_YUMYUM" + // "PROVIDER_HWW_AUSTRALIA" + // "PROVIDER_CINERGY" + // "PROVIDER_MTIME" + // "PROVIDER_KULTUNAUT" + // "PROVIDER_BLITZ" + // "PROVIDER_PIA" + // "PROVIDER_INTERPARK" + // "PROVIDER_CINEMA_ONLINE" + // "PROVIDER_BELBIOS" + // "PROVIDER_MOVIESEER" + // "PROVIDER_SODAMEDYA" + // "PROVIDER_ATMOVIES" + // "PROVIDER_HOTELBEDS" + // "PROVIDER_VERICRED" + // "PROVIDER_CIRRANTIC" + // "PROVIDER_GOGO_LABS" + // "PROVIDER_ELECTRIFY_AMERICA" + // "PROVIDER_CMS_MPPUF" + // "PROVIDER_DIGIROAD" - Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION. + // "PROVIDER_KONTEX_GEOMATICS" + // "PROVIDER_NZ_GOVERNMENT" - ABSTRACT + // "PROVIDER_NZ_LINZ" - Land Information New Zealand + // "PROVIDER_NZ_DOC" - NZ Department of Conservation + // "PROVIDER_FASTNED" + // "PROVIDER_DESTINY_CS" + // "PROVIDER_IONITY" + // "PROVIDER_EV_CONNECT" + // "PROVIDER_PANPAGES" + // "PROVIDER_ETECNIC" + // "PROVIDER_VOLTA" + // "PROVIDER_NISSAN_MEXICO" + // "PROVIDER_BMW_GROUP_LATIN_AMERICA" + // "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO" + // "PROVIDER_VOLVO_CARS_BRASIL" + // "PROVIDER_CHARGE_AND_PARKING" + // "PROVIDER_DEDUCE_TECHNOLOGIES" + // "PROVIDER_SK_TELECOM" + // "PROVIDER_ECO_MOVEMENT" + // "PROVIDER_GOOGLE_GMS" + // "PROVIDER_EASYWAY" + // "PROVIDER_PHYSICIAN_COMPARE" + // "PROVIDER_HOSPITAL_COMPARE" + // "PROVIDER_ENDOLLA_BARCELONA" + // "PROVIDER_BE_CHARGE" + // "PROVIDER_ONE_NETWORK" + // "PROVIDER_CARENAV_DUPLEX" + // "PROVIDER_CARENAV_POI" - UMBRELLA + // "PROVIDER_IN_GOVERNMENT" - ABSTRACT + // "PROVIDER_SURVEY_OF_INDIA" + // "PROVIDER_E_ON" + // "PROVIDER_ELECTRIFY_CANADA" + // "PROVIDER_GRIDCARS" + // "PROVIDER_DRIVECO" + // "PROVIDER_GREEN_ACTION_STUDIOS" + // "PROVIDER_GREEN_ACTION_STUDIO" + // "PROVIDER_EVINY" + // "PROVIDER_MASTERCARD" + // "PROVIDER_VATTENFALL" - Note: Next available value is 0x126C. + Provider string `json:"provider,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dataset") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dataset") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreInternalSourceSummaryProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreInternalSourceSummaryProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreIntersectionGroupProto: 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. +type GeostoreIntersectionGroupProto struct { + // ChildGroup: All artifact intersection groups that are in this logical + // group. + ChildGroup []*GeostoreFeatureIdProto `json:"childGroup,omitempty"` + + // Possible values: + // "GROUP_ARTIFACT" - Groups intersections that bound segment + // artifacts of centerline digitization. These segment artifacts do not + // represent the geometry of actual vehicle travel through an + // intersection group. This grouping is typically in the core or shared + // area of an intersection where there are no lane markings (with the + // exception of raised reflective white dots demarkating multiple turn + // lanes through the real-world intersection). This is also the typical + // grouping used for modeling STYLE_IN_OUT turn restrictions. + // "GROUP_LOGICAL" - Groups all intersections that form the logical + // connection of roads. Also known as a cross road intersection group. + // This group is usually larger than just the artifact grouping, since + // it includes external turn lanes and roundabout external bypasses. + GroupType string `json:"groupType,omitempty"` + + // Intersection: The list of TYPE_INTERSECTION features that form this + // intersection group, but are NOT in any of this group's child groups. + // This could be an empty list, though that is sub-optimal. Even an + // empty list would allow the paint team to draw a label for a named + // intersection, but a non-empty list would, for example, enable + // PathFinder to generate better directions. Each of the + // TYPE_INTERSECTION feature referred here must refer back to this + // feature in its IntersectionProto. + Intersection []*GeostoreFeatureIdProto `json:"intersection,omitempty"` + + // ParentGroup: Parent logical intersection group. An artifact group + // that does not have an associated parent logical group is assumed to + // be both an artifact and logical group. + ParentGroup *GeostoreFeatureIdProto `json:"parentGroup,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChildGroup") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChildGroup") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreIntersectionGroupProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreIntersectionGroupProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreIntersectionProto: 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. +type GeostoreIntersectionProto struct { + // IntersectionGroup: The artifact or logical intersection group to + // which this intersection belongs. If present, the intersection group + // must also refer back to the intersection. If an intersection is + // within both the artifact and logical group, then this reference + // should be to the artifact group. + IntersectionGroup *GeostoreFeatureIdProto `json:"intersectionGroup,omitempty"` + + // OutSegment: RESERVED + OutSegment []*GeostoreFeatureIdProto `json:"outSegment,omitempty"` + + // Segment: The list of segments that terminate at this intersection, in + // any order. Note that all segments are directed towards the + // intersection, i.e. their endpoints indicate what sort of intersection + // this is. This should not be empty because an intersection with no + // associated segment is meaningless. + Segment []*GeostoreFeatureIdProto `json:"segment,omitempty"` + + // TollClusterId: The toll cluster to which this intersection belongs. + // If present, the toll cluster must also refer back to the + // intersection. + TollClusterId *GeostoreFeatureIdProto `json:"tollClusterId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IntersectionGroup") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IntersectionGroup") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreIntersectionProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreIntersectionProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreJobMetadata struct { + // Duration: 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. + Duration string `json:"duration,omitempty"` + + // JobRelatedCategories: 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. + JobRelatedCategories []*GeostoreJobRelatedCategory `json:"jobRelatedCategories,omitempty"` + + // JobTypeId: 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. + JobTypeId string `json:"jobTypeId,omitempty"` + + // JobTypeMid: 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". + JobTypeMid string `json:"jobTypeMid,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Duration") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Duration") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreJobMetadata) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreJobMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreJobRelatedCategory: 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. +type GeostoreJobRelatedCategory struct { + Gcid string `json:"gcid,omitempty"` + + Language string `json:"language,omitempty"` + + // Name: Category name in the primary language of the feature. Generally + // intended to be used as a fallback when we are unable to fetch the + // name in the user's language. + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Gcid") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Gcid") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreJobRelatedCategory) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreJobRelatedCategory + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreKnowledgeGraphReferenceProto: The reference to an entity in +// the KnowledgeGraph. For details on the KnowledgeGraph see +// http://goto/kg. +type GeostoreKnowledgeGraphReferenceProto struct { + // Id: KG Identifier (MID). For details, see + // http://go/ke-bg-knowledge-graph#mids. + Id string `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreKnowledgeGraphReferenceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreKnowledgeGraphReferenceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreLandmarkReferenceProto: 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). +type GeostoreLandmarkReferenceProto struct { + // FeatureType: The type of the landmark feature. Allowed types: - + // TYPE_CARTOGRAPHIC e.g. a putting green or water hazard - + // TYPE_COMPOUND e.g. - the Empire state building + // (TYPE_COMPOUND_BUILDING) - a park (TYPE_COMPOUND_GROUNDS) - a section + // of a retail store (TYPE_COMPOUND_SECTION) - TYPE_ESTABLISHMENT e.g. - + // the Eiffel Tower (TYPE_ESTABLISHMENT_BUILDING) - a sports field + // (TYPE_ESTABLISHMENT_GROUNDS) - Starbucks (TYPE_ESTABLISHMENT_POI) - + // TYPE_INTERSECTION_GROUP e.g. a major intersection - + // TYPE_NATURAL_FEATURE e.g. a river - TYPE_SEGMENT e.g. a bike trail or + // train tracks + FeatureType int64 `json:"featureType,omitempty"` + + // Landmark: The feature ID of the landmark feature. + Landmark *GeostoreFeatureIdProto `json:"landmark,omitempty"` + + // TravelMode: The mode(s) of travel for which this landmark is useful. + // + // Possible values: + // "UNKNOWN" + // "TRAVEL_MOTOR_VEHICLE" + // "TRAVEL_AUTO" + // "TRAVEL_TWO_WHEELER" + // "TRAVEL_BICYCLE" + // "TRAVEL_PEDESTRIAN" + TravelMode []string `json:"travelMode,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FeatureType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FeatureType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLandmarkReferenceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLandmarkReferenceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreLaneMarkerProto: This proto contains attributes relevant to +// physical lane markers. +type GeostoreLaneMarkerProto struct { + // BarrierMaterials: If this is a physical barrier marker, represent + // materials found on the marker. + BarrierMaterials *GeostoreBarrierLogicalMaterialProto `json:"barrierMaterials,omitempty"` + + // CrossingPattern: Pattern border and color for crossing markers. These + // include crosswalks, stop, and yield lines. + CrossingPattern *GeostoreCrossingStripePatternProto `json:"crossingPattern,omitempty"` + + // LinearPattern: Stripe pattern, spacing, and color for longitudinal + // markers. + LinearPattern *GeostoreLinearStripePatternProto `json:"linearPattern,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BarrierMaterials") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BarrierMaterials") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLaneMarkerProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLaneMarkerProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreLaneProto: 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: +// https://docs.google.com/a/google.com/document/d/11XJ1WvqS5Sm7MxWXzzc3tnsk49VhrR3BYFjiRMAzYm0/edit?hl=en_US +// https://docs.google.com/a/google.com/document/d/1nzdupynTUKE8xY8JcfvQbU-KWtCJ6IwHiTaCxuq40EM/edit?hl=en_US +// Note: Some lane information (width, surface type, etc) may duplicate +// or contradict information stored at the segment level. +type GeostoreLaneProto struct { + // BoundingMarker: References to any gcid:physical_lane_marker features + // that bound this lane. + BoundingMarker []*GeostoreBoundingMarkerProto `json:"boundingMarker,omitempty"` + + // ConjoinedCategory: If the current lane is part of a merge/split area, + // indicates the type (split or merge) and whether the current lane is + // on the left or right or in the middle of the merge/split area, as + // seen in the direction of traffic. See go/lane-split-merge-schema + // + // Possible values: + // "CONJOINED_NONE" + // "CONJOINED_SPLIT_LEFT" + // "CONJOINED_SPLIT_MIDDLE" + // "CONJOINED_SPLIT_RIGHT" + // "CONJOINED_MERGE_LEFT" + // "CONJOINED_MERGE_MIDDLE" + // "CONJOINED_MERGE_RIGHT" + ConjoinedCategory string `json:"conjoinedCategory,omitempty"` + + // DistanceToNextLane: Gap between this lane and the next in meters. + // This is relevant when the divider is physical, or a wide painted + // area. For regular painted single or double lines, there is no gap. + // This distance is duplicated between the innermost lanes for each + // side. Note that this is not used to describe smallish islands - this + // is only for long-running gaps. In particular, this models the median + // width, the gap between HOV lanes/regular lanes on freeways, and the + // road verge between a curb and sidewalk. Note on split roads: We can + // model any split road with a median as a single sibling pair with this + // distance set to the width of the median, or as two one-way sibling + // pairs. + DistanceToNextLane float64 `json:"distanceToNextLane,omitempty"` + + // Flow: The most logical path for the center of an object to travel + // along within the lane. Typically, this is the lane's center line, but + // doesn't have to be. + Flow *GeostoreFlowLineProto `json:"flow,omitempty"` + + // LaneConnection: Connections to lanes of other segments at the end of + // this segment. These connections model the connectivity where you + // don't have to do a lane change maneuver. If any lane connection is + // present, assume that all others are forbidden. Also note that segment + // level restrictions do apply if present, and can disallow some turn + // even if the lanes are connected. For instance, this can happen with + // timed or vehicle type based restrictions on the segment. If lane + // connectivity implies a segment-level restriction (can't transition to + // some target segment), that restriction will also exist as a segment + // level restriction. In effect - PathFinder does not have to look at + // lane connectivity to figure out segment connectivity. Example: + // Typically, lanes are just connected to one other lane. Example: A + // splitting lane is connected to the two resulting lanes. Example: At + // an intersection, a lane is connected to crossing lanes according to + // how lanes are painted across the intersection. In the common case, + // the target segment will be connected to the same intersection as this + // segment. That will however NOT be true for complex intersections + // where there is an intersection group. The connections will be across + // the whole group, connecting to one of the outgoing segments from the + // group. This is analogous to how we do turn restrictions around + // intersection groups. + LaneConnection []*GeostoreLaneProtoLaneConnection `json:"laneConnection,omitempty"` + + // LaneDividerCrossing: clang-format on Whether the divider to the + // inside of this lane can be crossed. Note that we assume this is + // symmetric, and that this also describes whether someone in the next + // inside lane can cross to this one. The "inside" lane is the one with + // a lower lane_number. Note on lane markers: We do not model the + // painting, but only the resulting legality. There are many painted + // marker styles and colors that lead to the same legality. We expect + // Paint or Driveabout to render lanes stylized, with solid meaning + // "can't cross", and dashed meaning "can cross". Note on varying + // legality along segment: ALLOWED takes precedence - even if some small + // portion has a restriction (such as right before an intersection) , + // the lane change will be ALLOWED. + // + // Possible values: + // "CROSSING_ALLOWED" - Cross at will. + // "CROSSING_DISALLOWED" + // "CROSSING_LEGALLY_DISALLOWED" - This is usually some painted + // barrier + // "CROSSING_PHYSICALLY_IMPOSSIBLE" - This is either a patch of dirt, + // or some barrier + LaneDividerCrossing string `json:"laneDividerCrossing,omitempty"` + + // LaneFollowsSegmentBeginFraction: These indicate for what portion of + // the segment the lane's flowline exactly follows the segment, and the + // lane is of constant width. This will be set to not include the whole + // segment where there is a split/turn/merge at either end of the lane. + // The painting of the lane should completely synthesize the lane + // geometry outside of this portion, connecting it to neighboring lanes + // to make graphical nice. + LaneFollowsSegmentBeginFraction float64 `json:"laneFollowsSegmentBeginFraction,omitempty"` + + LaneFollowsSegmentEndFraction float64 `json:"laneFollowsSegmentEndFraction,omitempty"` + + // LaneNumber: Lanes are numbered from inside of the road outward, i.e. + // the lane next to the center line is lane 0. The lanes then stack + // outwards, towards the side that one drives on this segment (right or + // left). NOTE: do NOT use the lane_number as index for lookup. + // Lane_number is not guaranteed to match the segment.lane repeated + // field index. + LaneNumber int64 `json:"laneNumber,omitempty"` + + // LaneToken: A token that can be used to identify the version of the + // data about this lane. + LaneToken string `json:"laneToken,omitempty"` + + // Metadata: Field-level metadata for this lane. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Restriction: Restrictions that apply to this lane only. Examples + // include HOV lanes. If a lane restriction implies a segment-level + // restriction (can't route on the segment at all), that restriction + // will also exist as a segment level restriction. In effect - + // PathFinder does not have to look at lane restrictions to figure out + // segment restrictions. + Restriction []*GeostoreRestrictionProto `json:"restriction,omitempty"` + + // Shared: True if this lane is usable in both directions (left-turn + // lane, reversing lane, one-lane road, etc). To get the total number of + // lanes for a road, add up the lanes in each direction counting 0.5 for + // each shared lane. + Shared bool `json:"shared,omitempty"` + + // StopLine: References to any gcid:physical_lane_marker features that + // intersect this lane, with the implication that a moving vehicle + // should stop there. + StopLine []*GeostoreFeatureIdProto `json:"stopLine,omitempty"` + + // Surface: clang-format on + // LINT.ThenChange(//depot/google3/geostore/base/proto/segment.proto) + // Unlike the surface in SegmentProto, this field does not have a + // default value. This is because the lane-level surface overrides the + // segment-level surface. The lane's surface should be unset unless + // explicitly overriding the segment's surface. + // + // Possible values: + // "SURFACE_UNKNOWN" - RESERVED + // "SURFACE_PAVED" + // "SURFACE_ASPHALT" + // "SURFACE_CONCRETE" + // "SURFACE_CHIPSEAL" + // "SURFACE_BRICK" + // "SURFACE_SETT" + // "SURFACE_COBBLESTONE" + // "SURFACE_UNPAVED" + // "SURFACE_GRAVEL" + // "SURFACE_DIRT" + // "SURFACE_SAND" + Surface string `json:"surface,omitempty"` + + // Type: clang-format on + // + // Possible values: + // "TYPE_UNKNOWN" + // "TYPE_NORMAL" + // "TYPE_PASSING" - These are usually shared lanes, usable for passing + // by either direction. + // "TYPE_LEFT_TURN" + // "TYPE_LEFT_TURN_OFF" - Typical left turn at intersection. + // "TYPE_LEFT_TURN_ON_OFF" - Lane used both for cars turning left to a + // side street, and for cars from side streets turning left onto the + // larger road. + // "TYPE_RIGHT_TURN" + // "TYPE_RIGHT_TURN_OFF" - Typical right turn at intersection. + // "TYPE_RIGHT_TURN_ON_OFF" - Lane used both for cars turning right to + // a side street, and for cars from side streets turning right onto the + // larger road (in left-side driving countries). + // "TYPE_BICYCLE" + // "TYPE_PARKING" + // "TYPE_PARKING_IMPLIED" - This lane represents the common case of + // parking along the curb. It is generally not a drivable lane. + // "TYPE_PARKING_MARKED" - Parking with marked stalls. + // "TYPE_EXIT_ENTRANCE" - Lanes that are temporary, for + // acceleration/deceleration, or that will split off. + // "TYPE_EXIT_LANE" - A lane that is used for exiting the core road. + // "TYPE_ENTRANCE_LANE" - An acceleration/merging lane. + // "TYPE_PEDESTRIAN" - A bidirectional walking lane, such as a + // sidewalk. The walking lane is implied to be on the side of the road + // as specified by the segment's "on_right" flag. The pedestrian lane + // should therefore be on the outside of a road's traffic lanes. + // Presence of a pedestrian lane implies that we have a sidewalk or + // other facility away from the road surface where pedestrians walk. If + // a road does not have a pedestrian lane, this means there is no space + // or facility for pedestrians to walk, or that pedestrians walk on the + // wide shoulder. The pedestrian lane, width, and distance_to_next_lane + // controls where Pathfinder draws the pedestrian polyline. As described + // in go/hdwalking++, the polyline is computed as (pl = pedestrian lane, + // s = segment): offset = s.distance_to_edge + pl.distance_to_next_lane + // + pl.width / 2 + // "TYPE_SIDEWALK_SHOULDER" - A special shoulder lane present on + // narrow roads in Japan that may double as a sidewalk. This isn’t a + // subset of TYPE_PEDESTRIAN since it may have either uses and is not + // separated by a curb. + // "TYPE_VEHICLE_SHOULDER" - Represents a lane that is wide enough to + // park or drive slowly on and is physically accessible from the main + // roadway. This is part of road surface that’s not used for normal + // flow of traffic but can be used for emergency purposes, such as + // emergency stopping and parking or by emergency vehicles. These are + // often known as emergency use lanes. This should generally be either + // first or last lane on the road (not counting pedestrian lanes if + // present). NOTE: In may cases, this may be colloquially called a + // “shoulder”, but road shoulders may include other areas that are + // not readily accessible, especially at speed. + // "TYPE_OFFSET" - This represents an “offset” lane that doesn’t + // really carry useful semantics but can be used to fill in “gaps” + // between the sum total of lane widths and the road as represented by + // distance_to_edge. + Type string `json:"type,omitempty"` + + // Width: Width of this lane in meters. In many cases, we will collect + // this data by dividing the total road width by the number of lanes. On + // accuracy: This is a rough average width along this segment. If and + // when we wanted to be more accurate, we'd extend this schema to have + // full polygons for segments/lanes rather than just this average width. + Width float64 `json:"width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BoundingMarker") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BoundingMarker") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLaneProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLaneProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreLaneProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreLaneProto + var s1 struct { + DistanceToNextLane gensupport.JSONFloat64 `json:"distanceToNextLane"` + LaneFollowsSegmentBeginFraction gensupport.JSONFloat64 `json:"laneFollowsSegmentBeginFraction"` + LaneFollowsSegmentEndFraction gensupport.JSONFloat64 `json:"laneFollowsSegmentEndFraction"` + Width gensupport.JSONFloat64 `json:"width"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.DistanceToNextLane = float64(s1.DistanceToNextLane) + s.LaneFollowsSegmentBeginFraction = float64(s1.LaneFollowsSegmentBeginFraction) + s.LaneFollowsSegmentEndFraction = float64(s1.LaneFollowsSegmentEndFraction) + s.Width = float64(s1.Width) + return nil +} + +type GeostoreLaneProtoLaneConnection struct { + // BoundingMarker: References to any gcid:physical_lane_marker features + // that bound this lane connection. + BoundingMarker []*GeostoreBoundingMarkerProto `json:"boundingMarker,omitempty"` + + // ConnectionToken: A token that can be used to identify the version of + // the data about this lane connection. + ConnectionToken string `json:"connectionToken,omitempty"` + + // Curve: 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. + Curve *GeostoreCurveConnectionProto `json:"curve,omitempty"` + + // Flow: 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. + Flow *GeostoreFlowLineProto `json:"flow,omitempty"` + + // LaneNumber: 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. + LaneNumber int64 `json:"laneNumber,omitempty"` + + // PrimaryConnection: 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. + PrimaryConnection bool `json:"primaryConnection,omitempty"` + + // Segment: This reference to the other segment is weak, since strong + // would blow up bounds of all segments. + Segment *GeostoreFeatureIdProto `json:"segment,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BoundingMarker") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BoundingMarker") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLaneProtoLaneConnection) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLaneProtoLaneConnection + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreLanguageTaggedTextProto: Represents a piece of text with an +// associated language. +type GeostoreLanguageTaggedTextProto struct { + // Language: The external form of a Google International Identifiers + // Initiative (III) LanguageCode object. See + // google3/i18n/identifiers/languagecode.h for details. We place extra + // restrictions on languages in addition to what the III library + // requires. See + // http://go/geo-schema-reference/feature-properties/languages.md + Language string `json:"language,omitempty"` + + // Text: The text (UTF-8 encoding). + Text string `json:"text,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Language") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Language") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLanguageTaggedTextProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLanguageTaggedTextProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreLevelProto: 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. +type GeostoreLevelProto struct { + // Building: The building(s) to which this level belongs. A level will + // typically belong to a single building, but it is valid for a single + // level to be shared by multiple buildings (for example, a large + // underground parking lot). These buildings refer back to the level via + // another strong reference (the BuildingProto.level field). + Building []*GeostoreFeatureIdProto `json:"building,omitempty"` + + // Number: The elevation of this level relative to the ground level, in + // levels. 0 = ground floor (even in locales that call the ground floor + // "1st floor"); 0.5 = between ground and first floor, eg mezzanine; 1 = + // first floor (one level above ground floor); -3 = three levels below + // ground floor. + Number float64 `json:"number,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Building") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Building") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLevelProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLevelProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreLevelProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreLevelProto + var s1 struct { + Number gensupport.JSONFloat64 `json:"number"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Number = float64(s1.Number) + return nil +} + +type GeostoreLinearStripePatternProto struct { + // Line: 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. + Line []*GeostorePhysicalLineProto `json:"line,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Line") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Line") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLinearStripePatternProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLinearStripePatternProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreLocaleLanguageProto: This message describes the details of a +// single language within a locale. +type GeostoreLocaleLanguageProto struct { + // Language: The language associated with this preference. The external + // form of a Google International Identifiers Initiative (III) + // LanguageCode object. See google3/i18n/identifiers/languagecode.h for + // details. We place extra restrictions on languages in addition to what + // the III library requires. See + // http://go/geo-schema-reference/feature-properties/languages.md + Language string `json:"language,omitempty"` + + // Official: Flag to indicate if the associated language is "official" + // within a locale. + Official bool `json:"official,omitempty"` + + // Preference: This value represents the preference of the associated + // language within a locale. It must be between 0.0 and 1.0. + Preference float64 `json:"preference,omitempty"` + + // SpeakingPercent: Percentage of population that can speak the + // associated language within a locale. It must be between 0 and 100. + SpeakingPercent float64 `json:"speakingPercent,omitempty"` + + // WritingPercent: Percentage of population that can write the + // associated language within a locale. It must be between 0 and 100. + WritingPercent float64 `json:"writingPercent,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Language") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Language") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLocaleLanguageProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLocaleLanguageProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreLocaleLanguageProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreLocaleLanguageProto + var s1 struct { + Preference gensupport.JSONFloat64 `json:"preference"` + SpeakingPercent gensupport.JSONFloat64 `json:"speakingPercent"` + WritingPercent gensupport.JSONFloat64 `json:"writingPercent"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Preference = float64(s1.Preference) + s.SpeakingPercent = float64(s1.SpeakingPercent) + s.WritingPercent = float64(s1.WritingPercent) + return nil +} + +// GeostoreLocaleProto: 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. +type GeostoreLocaleProto struct { + // Language: This holds the list of languages spoken within a locale. + Language []*GeostoreLocaleLanguageProto `json:"language,omitempty"` + + // LocalizationPolicyId: The ID of the localization policy (from + // googledata/geostore/localization/localization_policies.textpb) to + // apply to features that have this locale as their best match locale. + // Localization policy IDs are arbitrary identifiers that uniquely + // distinguish a set of language-selection rules. + LocalizationPolicyId string `json:"localizationPolicyId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Language") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Language") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLocaleProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLocaleProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreLogicalBorderProto: 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)"). +type GeostoreLogicalBorderProto struct { + // BorderSegment: All the border segments which make up this logical + // border. Border segments must be TYPE_BORDER features which have the + // same left/right features. This is a many-to-many bidirectional + // relationship, so any border segment within this list might be part of + // another logical border. + BorderSegment []*GeostoreFeatureIdProto `json:"borderSegment,omitempty"` + + // Status: The logical border status identifies its legal status. This + // is similar to the BorderStatus present within border segments, but + // applies to the group as a whole. + // + // Possible values: + // "STATUS_UNSPECIFIED" - The logical border is neither entirely + // composed of either normal nor disputed border segments. There are no + // guarantees about the BorderStatus of its border segments. + // "STATUS_NORMAL" - This status should be used when both parties + // agree on the location of the border. These might be called "de jure" + // borders. Most borders will have this status. This status requires + // that all border segments that make up this logical border have normal + // border segments. + // "STATUS_DISPUTED" - This status should be used when the two parties + // disagree on the location of the border. This status requires that all + // border segments are themselves disputed. + Status string `json:"status,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BorderSegment") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BorderSegment") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreLogicalBorderProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreLogicalBorderProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreMediaItemProto: Media item attached to an element of price +// list. +type GeostoreMediaItemProto struct { + // GoogleUrl: The FIFE url associated with the media. NOTE: This FIFE + // URL must be PII-free, see go/product-catalogue-photo-storage + GoogleUrl string `json:"googleUrl,omitempty"` + + // Possible values: + // "MEDIA_FORMAT_UNSPECIFIED" - Format unspecified. + // "MEDIA_FORMAT_PHOTO" - Media item is a photo. + MediaFormat string `json:"mediaFormat,omitempty"` + + // MediaKey: The mediaKey associated with the media. NOTE: This media + // key must be PII-free, see go/product-catalogue-photo-storage + MediaKey string `json:"mediaKey,omitempty"` + + MediaSize *GeostoreMediaItemProtoMediaSize `json:"mediaSize,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GoogleUrl") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GoogleUrl") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreMediaItemProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreMediaItemProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreMediaItemProtoMediaSize: Width and height of the original +// photo in pixels. +type GeostoreMediaItemProtoMediaSize struct { + OriginalHeightPx int64 `json:"originalHeightPx,omitempty"` + + OriginalWidthPx int64 `json:"originalWidthPx,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OriginalHeightPx") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OriginalHeightPx") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreMediaItemProtoMediaSize) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreMediaItemProtoMediaSize + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreNameProto: 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. +type GeostoreNameProto struct { + // Flag: clang-format on The set of flags that apply to this name. + // + // Possible values: + // "FLAG_ANY" - ABSTRACT + // "FLAG_IN_LOCAL_LANGUAGE" - This name is in one of the local + // languages. A local language is one readable by local people, where + // all language/script/region subtags in the language field are local. + // E.g. "ru" is local in Russia, but "ru-Latn" (transliterated in Latin + // script) is not local. This is the opposite of + // FLAG_NOT_IN_LOCAL_LANGUAGE. In general, a given name should have + // either FLAG_IN_LOCAL_LANGUAGE or FLAG_NOT_IN_LOCAL_LANGUAGE + // specified. Importers that are unsure should not set either flag. It + // doesn't make sense to set this flag unless you also specify a + // language. NOTE: unlike most other flags in this enumeration, this + // flag has to do with the language field, NOT to the text (and + // {raw,short}_text fields). + // "FLAG_PREFERRED" - This is the most commonly recognized name for + // this feature (for a given language, when languages apply). This flag + // is not compatible with the following flags: - FLAG_NEVER_DISPLAY - + // FLAG_OBSCURE + // "FLAG_OFFICIAL" - This name is officially recognized by the + // government. This flag is not compatible with FLAG_SUSPICIOUS. + // "FLAG_OBSCURE" - This name is not commonly known. This flag is used + // on names that are not commonly known, or not "standard", but which we + // wish to have so clients can search on them. An example would be + // "Philly" instead of "Philadelphia". + // "FLAG_ON_SIGNS" - ABSTRACT + // "FLAG_EXIT_NAME_NUMBER" - This name is an exit name/number found on + // signs. + // "FLAG_EXIT_NAME" - This flag is used to differentiate exit names + // from exit numbers on signs that have both. + // "FLAG_INTERCHANGE_NAME" - The highway sign is labeling a highway + // interchange instead of an exit. In several European countries + // interchanges are differentiated from highway exits. + // "FLAG_EXIT_NUMBER" - This flag is used to differentiate exit + // numbers from exit names on signs that have both. This flag is not + // compatible with FLAG_ROUTE_NUMBER. + // "FLAG_INTERCHANGE_NUMBER" - The highway sign is labeling a highway + // interchange the same manner as FLAG_INTERCHANGE_NAME. + // "FLAG_TRANSIT_HEADSIGN" - The headsign of a transit vehicle, often + // the name of the destination. + // "FLAG_CONNECTS_DIRECTLY" - The road sign target is directly + // connected (e.g., at end of ramp). + // "FLAG_CONNECTS_INDIRECTLY" - The road sign target is not directly + // connected (e.g., must travel some additional distance). + // "FLAG_INTERSECTION_NAME" - This name is an intersection name found + // on signs. Usually we can just use the name of a + // TYPE_INTERSECTION_GROUP feature. However, there are road signs on + // some intersections in Japan, especially in Hokkaido region where the + // intersection name is considered "directional" (i.e. an intersection + // could have multiple names depending on directions drivers or + // pedestrians approach from). Many people think of them as + // "intersection names", but that's not really what they are. We want to + // model them as road signs, because that's really what they are. This + // flag is supposed to be used by Pathfinder to generate the appropriate + // maneuver texts where such a named intersection is involved. + // "FLAG_VANITY" - This is a vanity name (usually an alternate name + // for a section of road in honor of some person). + // "FLAG_ROUTE_NUMBER" - This name is a route number from an official + // numbering system for highways or similar routes (like bicycle + // routes). Street names (even numbered ones like in Manhattan) are + // excluded. The name (both text and short_text) should follow a + // strictly-defined format determined by the official numbering system. + // Route numbers may be assigned to segments on city streets as well as + // highways. (US-101 passing through San Francisco is an example that + // has both.) Historic route names that are no longer part of an + // official numbering system (like the former US-66) are not route + // numbers. This flag is not compatible with FLAG_EXIT_NUMBER. + // "FLAG_COUNTRY_CODE_2" - This name is a two-letter ISO 3166-1 + // country code. It has code 0x81 instead of 0x8 for historical reasons + // (FLAG_COUNTRY_CODE and FLAG_COUNTRY_CODE_3 were removed in the belief + // that we only want one way to represent a country code in the Geo + // Schema). + // "FLAG_ABBREVIATED" - An abbreviated version of the name, for + // example "CA" for California. This flag should be used for postal + // abbreviations that one would expect to see in an address. It should + // also be used for names where one of the component words is + // abbreviated (e.g. "Mass." for Massachusetts, "NWFP" for the + // North-West Frontier Province in Pakistan, or "L" for the Lobby level + // in a building). Shortened forms of names (e.g. "Kingston" rather than + // "Kingston-upon-Hull") should be marked obscure rather than + // abbreviated. This flag should be used for names that are feature + // specific abbreviations. For shortened name versions based on regular, + // per-term transformations (ex: '1st Street' -> '1st St'), use the + // short_text field instead. + // "FLAG_ID" - ABSTRACT + // "FLAG_DESIGNATED_MARKET_AREA_ID" - This name is a Designated Market + // Area ID number (ex: 501) + // "FLAG_IATA_ID" - This name is a three-letter IATA airport code (ex + // SFO, ZRH). + // "FLAG_ICAO_ID" - This name is a four-letter ICAO airport code (ex + // KSFO, LSZH). + // "FLAG_ISO_3166_2" - This name is the ISO 3166-2 country subdivision + // code. + // "FLAG_COUNTRY_SPECIFIC_ID" - This name is the country specific ID. + // For example, China government specifies an admin code for each + // administrative area (province, city and district). + // "FLAG_LANGUAGE_CODE" - This name is an IETF BCP 47 language code, + // for example "fr-CA". Previously used for names of locales. See + // locale.proto for new way of defining this information. + // "FLAG_TIMEZONE_ID" - This name is a timezone identifier in the + // Olson database, for example "Europe/Zurich". All timezones have an + // Olson identifier, understood by POSIX and Google's i18n/identifiers + // libraries. This flag applies only to features of TYPE_TIMEZONE type + // and at most one name should have this flag set + // "FLAG_PHONE_NUMBER_PREFIX" - This name is the prefix for a phone + // number, starting with + and followed by a country code. This flag + // applies only to features of TYPE_PHONE_NUMBER_PREFIX type and at most + // one name should have this flag set. + // "FLAG_PHONE_NUMBER_AREA_CODE" - This name is the commonly used name + // for the area code of a phone number, including the national prefix if + // applicable. This flag applies only to features of + // TYPE_PHONE_NUMBER_AREA_CODE type and at most one name should have + // this flag set. + // "FLAG_TRANSLITERATED" - The flag used to indicate the name was + // transliterated from some other character set. For example, this flag + // would be set on names transliterated from the Cyrillic or Greek + // alphabets to a Latin alphabet. The correct approach is to use the + // Google III language code to specify the appropriate language. For + // example, Greek transliterated into a Latin alphabet should have a + // language code of "el-Latn". + // "FLAG_NOT_ON_SIGNS" - There are two kinds of street signs: + // "location signs" and "guidance signs". Location signs are the ones + // you see that tell you where you are. "Ah, I'm on 85th Street and I'm + // crossing 6th Avenue." Guidance signs are the ones that give you hints + // about how to get where you want to go. "Ah, I should go that way to + // get on I-5 to Seattle." This flag is talking about location signs. + // You'll find this flag on route names when then name is never posted + // on location signs. This flag is not compatible with flags in the + // FLAG_ON_SIGNS category. + // "FLAG_NOT_IN_LOCAL_LANGUAGE" - This name is not in one of the local + // languages. A local language is one readable by local people, where + // all language/script/region subtags in the language field are local. + // E.g. "ru" is local in Russia, but "ru-Latn" (transliterated in Latin + // script) is not local. This is the opposite of FLAG_IN_LOCAL_LANGUAGE. + // In general, a given name should have either FLAG_IN_LOCAL_LANGUAGE or + // FLAG_NOT_IN_LOCAL_LANGUAGE specified. Importers that are unsure + // should not set either flag. It doesn't make sense to set this flag + // unless you also specify a language. NOTE: unlike most other flags in + // this enumeration, this flag has to do with the language field, NOT to + // the text (and {raw,short}_text fields). + // "FLAG_ROUNDABOUT_ROUTE" - This flag is set on routes attached to + // roundabout segments if and only if this name does not appear on any + // of the segments incident on the roundabout. This flag can be used by + // clients to determine which names on roundabouts are more useful than + // others when displaying to users. + // "FLAG_NEVER_DISPLAY" - Never display this name to a user. This flag + // is typically used for politically sensitive names such as "Taiwan, + // Province of China". Any feature which has a name with this flag + // should have another name without it so we have something to display + // to the user. + // "FLAG_BICYCLE_ROUTE" - Routes with these names are common bicycle + // routes. This includes bicycle trails and routes along shared roadways + // to popular destinations for cyclists. Unnamed bicycle routes along + // named shared roadways should not have names of this type. This flag + // exists so that we can avoid showing bicycle route names in driving + // directions, while still showing them in bicycling directions. + // "FLAG_MACHINE_GENERATED" - This name is generated automatically by + // the transliteration pipeline based on an existing name in a different + // language. Contact Maps Translation team (go/maps-translation) for + // details. + // "FLAG_SUSPICIOUS" - This name may not be a correct name for a + // feature. It communicates to clients that the name may not be + // trustworthy. Examples are names of features that are too general + // ("swimming pool", "hardware store" etc) or those that incorrectly + // match names of prominent political features (businesses, transit + // stations etc named after sublocalities). This flag is not compatible + // with FLAG_OFFICIAL. + Flag []string `json:"flag,omitempty"` + + // Language: The external form of a Google International Identifiers + // Initiative (III) LanguageCode object. See + // google3/i18n/identifiers/languagecode.h for details. These strings + // should be treated as opaque blobs. You can use + // LanguageCodeConverter::FromOther to convert the string to a + // LanguageCode reference. You can then call methods on the LanguageCode + // class to extract language/script/region subtags (if any). See also + // http://g3doc/i18n/identifiers/g3doc/using-iii. We place extra + // restrictions on languages in addition to what the III library + // requires. See go/geo-schema-reference/feature-properties/languages. + // This field may be missing if the name does not have a concept of + // language but should be set if the language is unknown. + Language string `json:"language,omitempty"` + + // Metadata: Field-level metadata for this name. NOTE: there are + // multiple NameProto fields in the Geo Schema. Metadata here is only + // expected to be present on FeatureProto.name[]. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // RawText: ** DEPRECATED ** The name text provided in the original + // source data (UTF-8 encoding). This is the text provided in the source + // data unmodified with the exception of being converted to UTF-8 and + // stripping extra leading, trailing and duplicate whitespaces (if + // necessary). + RawText string `json:"rawText,omitempty"` + + // ShortText: The short name text (UTF-8 encoding). + // Acronyms/abbreviations should be consistently used, for example "NE + // 57th St" rather than "Northeast 57th Street", "N.E 57th St." or some + // other variant. This field should be populated with the chosen + // canonical version of the shortened name, based on per-term + // transformations. For feature specific abbreviations (such as 'CA' for + // 'California'), one should define a separate name with + // FLAG_ABBREVIATED set. For other variants of the shortened name that + // are not the canonical one, devise client based logic (ex: query + // rewriting rules). + ShortText string `json:"shortText,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // name. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // Text: The name text (UTF-8 encoding). Acronyms/abbreviations should + // be fully expanded, for example "Northeast 57th Street" rather than + // "NE 57th St". They can be shortened at display or geocode time. This + // decision prevents ambiguity over such issues as whether "St" + // represents "Street" or "Saint". However, it pushes language-specific + // knowledge into code. We will have libraries and data files to + // contract acronyms/abbreviations at run-time. + Text string `json:"text,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Flag") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Flag") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreNameProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreNameProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreOntologyRawGConceptInstanceContainerProto: The container for +// all GConceptInstances associated with a feature. +type GeostoreOntologyRawGConceptInstanceContainerProto struct { + Instance []*GeostoreOntologyRawGConceptInstanceProto `json:"instance,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Instance") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Instance") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreOntologyRawGConceptInstanceContainerProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreOntologyRawGConceptInstanceContainerProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreOntologyRawGConceptInstanceProto: 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. +type GeostoreOntologyRawGConceptInstanceProto struct { + // Instance: This is the 'public' section of the GConceptInstance. + Instance *GeostoreGConceptInstanceProto `json:"instance,omitempty"` + + // IsAddedByEdit: ** DEPRECATED ** Was this GConcept explicitly added by + // an edit? Examples of gconcepts not added by edits include those + // inferred through geo ontology and those mapped from legacy category + // forms by the feature updater. Note that it is possible for both + // is_added_by_edit and is_inferred to be true - it means this gconcept + // is added by an edit and there is also another more fine-grained + // gconcept added by an edit. + IsAddedByEdit bool `json:"isAddedByEdit,omitempty"` + + // IsInferred: RESERVED + IsInferred bool `json:"isInferred,omitempty"` + + // Provider: ** DEPRECATED ** These two fields combined describe the + // source of a GConceptInstance. They are based on + // geostore/base/proto/datasourceprovider.proto. Their use has been + // deprecated. Use the FieldMetadataProto inside instance instead. + // + // Possible values: + // "PROVIDER_ANY" - ABSTRACT The root of all provider types. This + // should never be present on an actual feature, but can be useful when + // calling InCategory. + // "PROVIDER_UNKNOWN" - not actually a legal value, used as sentinel + // "PROVIDER_NAVTEQ" + // "PROVIDER_TELE_ATLAS" - ABSTRACT + // "PROVIDER_TELE_ATLAS_MULTINET" + // "PROVIDER_TELE_ATLAS_CODEPOINT" + // "PROVIDER_TELE_ATLAS_GEOPOST" + // "PROVIDER_TELE_ATLAS_DATAGEO" + // "PROVIDER_TELE_ATLAS_ADDRESS_POINTS" + // "PROVIDER_TELCONTAR" + // "PROVIDER_EUROPA" + // "PROVIDER_ROYAL_MAIL" + // "PROVIDER_GOOGLE" - ABSTRACT + // "PROVIDER_GOOGLE_HAND_EDIT" + // "PROVIDER_GOOGLE_BORDERS" - All new "Google" provider entries must + // be full ints. The next available ID is: 0x111730AA + // "PROVIDER_GOOGLE_SUBRANGE" - ABSTRACT + // "PROVIDER_GOOGLE_GT_FUSION" + // "PROVIDER_GOOGLE_ZAGAT_CMS" + // "PROVIDER_GOOGLE_PLACE_NAVBOOST" + // "PROVIDER_GOOGLE_FOOTPRINT" + // "PROVIDER_GOOGLE_PRODUCT_TERMS" + // "PROVIDER_GOOGLE_POINTCARDS" + // "PROVIDER_GOOGLE_BUSINESS_CHAINS" + // "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION" + // "PROVIDER_GOOGLE_PRONUNCIATIONS" + // "PROVIDER_GOOGLE_DUMPLING" + // "PROVIDER_GOOGLE_DISTILLERY" + // "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION" + // "PROVIDER_GOOGLE_RELATION_MINER" + // "PROVIDER_GOOGLE_MAPSPAM" + // "PROVIDER_GOOGLE_ROSE" + // "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS" + // "PROVIDER_GOOGLE_WIPEOUT" - This is an internal *only* provider + // meant for sending wipeout requests to mapfacts. + // "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH" + // "PROVIDER_GOOGLE_BEEGEES" + // "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION" + // "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION" + // "PROVIDER_GOOGLE_GEO_WORLDMAPS" + // "PROVIDER_GOOGLE_GEO_MODERATION" + // "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS" + // "PROVIDER_GOOGLE_LOCAL_ALCHEMY" + // "PROVIDER_GOOGLE_KEROUAC" + // "PROVIDER_GOOGLE_MOBRANK" + // "PROVIDER_GOOGLE_RAPTURE" + // "PROVIDER_GOOGLE_CULTURAL_INSTITUTE" + // "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS" + // "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS" + // "PROVIDER_GOOGLE_TACTILE_MAPS" + // "PROVIDER_GOOGLE_MAPS_FOR_MOBILE" + // "PROVIDER_GOOGLE_GEO_REALTIME" + // "PROVIDER_GOOGLE_PROMINENT_PLACES" - Never rely on source infos + // with this provider to identify whether or not a feature is a + // Prominent Place! Instead, use the proper API, + // localsearch_clustering::QualityTierHelper::IsProminentPlace(). + // "PROVIDER_GOOGLE_PLACE_ACTIONS" + // "PROVIDER_GOOGLE_GT_AUTO_EDITS" + // "PROVIDER_GOOGLE_WAZE" + // "PROVIDER_GOOGLE_ONTHEGO" + // "PROVIDER_GOOGLE_GT_IMPORT" + // "PROVIDER_GOOGLE_STRUCTURED_DATA" + // "PROVIDER_GOOGLE_HELICOPTER" + // "PROVIDER_GOOGLE_ROLLBACK" + // "PROVIDER_GOOGLE_RIGHTS_REPAIR" + // "PROVIDER_GOOGLE_PERFUME" + // "PROVIDER_GOOGLE_MAPS_TRANSLATION" + // "PROVIDER_GOOGLE_CALL_ME_MAYBE" + // "PROVIDER_GOOGLE_LOCAL_UNIVERSAL" + // "PROVIDER_GOOGLE_CROUPIER" + // "PROVIDER_GOOGLE_SKYSMART" + // "PROVIDER_GOOGLE_RIDDLER" + // "PROVIDER_GOOGLE_ROADCLOSURES" + // "PROVIDER_GOOGLE_SPORE" - UMBRELLA + // "PROVIDER_GOOGLE_LOCALIZATION" + // "PROVIDER_GOOGLE_CATTERMS" + // "PROVIDER_GOOGLE_GT_FIELD_OPS" + // "PROVIDER_GOOGLE_MATCHMAKER" + // "PROVIDER_GOOGLE_ARBITRATION" + // "PROVIDER_GOOGLE_BIZBUILDER_OPS" + // "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS" + // "PROVIDER_GOOGLE_GT_DRAFTY" + // "PROVIDER_GOOGLE_HOTELADS_OPS" + // "PROVIDER_GOOGLE_MARKERS" + // "PROVIDER_GOOGLE_STATE_MACHINE" + // "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE" + // "PROVIDER_GOOGLE_BIKESHARE" + // "PROVIDER_GOOGLE_GHOSTWRITER" + // "PROVIDER_GOOGLE_EDIT_PLATFORM" + // "PROVIDER_GOOGLE_BLUE_GINGER" + // "PROVIDER_GOOGLE_GEO_TIGER" + // "PROVIDER_GOOGLE_HYADES" + // "PROVIDER_GOOGLE_WEBQUARRY" + // "PROVIDER_GOOGLE_GEO_MADDEN" + // "PROVIDER_GOOGLE_ANDROID_PAY" + // "PROVIDER_GOOGLE_OPENING_HOURS_TEAM" + // "PROVIDER_GOOGLE_LOCAL_DISCOVERY" + // "PROVIDER_GOOGLE_LOCAL_HEALTH" + // "PROVIDER_GOOGLE_UGC_MAPS" + // "PROVIDER_GOOGLE_FIBER" + // "PROVIDER_GOOGLE_REVGEO" + // "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END" + // "PROVIDER_GOOGLE_GEO_UGC_TASKS" + // "PROVIDER_GOOGLE_GEOCODING" + // "PROVIDER_GOOGLE_SPYGLASS" + // "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES" + // "PROVIDER_GOOGLE_GEO_CHANGES" + // "PROVIDER_GOOGLE_HUME" + // "PROVIDER_GOOGLE_MEGAMIND" + // "PROVIDER_GOOGLE_GT_ROADSYNTH" + // "PROVIDER_GOOGLE_FIREBOLT" + // "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS" + // "PROVIDER_GOOGLE_UGC_SERVICES" + // "PROVIDER_GOOGLE_GEOALIGN" + // "PROVIDER_GOOGLE_GT_COMPOUNDS" + // "PROVIDER_GOOGLE_FOOD_ORDERING" + // "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS" + // "PROVIDER_GOOGLE_URAW" + // "PROVIDER_GOOGLE_FLYEYE" + // "PROVIDER_GOOGLE_YOUKE" + // "PROVIDER_GOOGLE_GT_ZEPHYR" + // "PROVIDER_GOOGLE_USER_SAFETY" + // "PROVIDER_GOOGLE_ADDRESS_MAKER" + // "PROVIDER_GOOGLE_UGC_PHOTOS" + // "PROVIDER_GOOGLE_GT_WINDCHIME" + // "PROVIDER_GOOGLE_SNAG_FIXER" + // "PROVIDER_GOOGLE_GEO_DEALS" + // "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS" + // "PROVIDER_GOOGLE_PROPERTY_INSIGHTS" + // "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS" + // "PROVIDER_GOOGLE_GEO_PORTKEY" + // "PROVIDER_GOOGLE_ROAD_MAPPER" + // "PROVIDER_GOOGLE_LOCATION_PLATFORM" + // "PROVIDER_GOOGLE_POSTTRIP" + // "PROVIDER_GOOGLE_TRAVEL_DESTINATION" + // "PROVIDER_GOOGLE_GEO_DATA_UPLOAD" - UMBRELLA + // "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP" + // "PROVIDER_GOOGLE_USER" + // "PROVIDER_GOOGLE_STATION" + // "PROVIDER_GOOGLE_GEO_FOOD" + // "PROVIDER_GOOGLE_GEO_AR" + // "PROVIDER_GOOGLE_GEO_TEMPORAL" + // "PROVIDER_GOOGLE_SERVICES_MARKETPLACE" + // "PROVIDER_GOOGLE_IMT_CLEANUP" + // "PROVIDER_GOOGLE_GEO_FOOD_MENU" + // "PROVIDER_GOOGLE_CARENAV" + // "PROVIDER_GOOGLE_DRIVING_FEEDS" - UMBRELLA + // "PROVIDER_GOOGLE_DRIVING_UGC" + // "PROVIDER_GOOGLE_POLAR" + // "PROVIDER_GOOGLE_TRIWILD" + // "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS" + // "PROVIDER_GOOGLE_SA_FROM_WEB" + // "PROVIDER_GOOGLE_POI_ALIGNMENT" + // "PROVIDER_GOOGLE_SA_FROM_HULK" + // "PROVIDER_GOOGLE_SERVICES_INTERACTIONS" + // "PROVIDER_GOOGLE_ROADS_UGC_EDITOR" + // "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE" + // "PROVIDER_GOOGLE_GEO_DRIVING_VIZ" + // "PROVIDER_GOOGLE_GEO_TASKING" + // "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE" + // "PROVIDER_GOOGLE_CROWDTASK_TASKADS" + // "PROVIDER_GOOGLE_CROWDTASK_TASKMATE" + // "PROVIDER_GOOGLE_CROWDTASK_FURBALL" + // "PROVIDER_GOOGLE_CROWDTASK_ADAP" + // "PROVIDER_GOOGLE_GPAY" + // "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS" + // "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION" + // "PROVIDER_GOOGLE_GEOTRACKER" + // "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE" + // "PROVIDER_GOOGLE_GEO_CLOSED_LOOP" + // "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS" + // "PROVIDER_GOOGLE_CORE_DATA_RIGHTS" + // "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS" + // "PROVIDER_GOOGLE_GEO_CONTENT_FIXER" + // "PROVIDER_GOOGLE_POLYGON_REFINEMENT" + // "PROVIDER_GOOGLE_HANASU" + // "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD" + // "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD" + // "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD" + // "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS" + // "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS" + // "PROVIDER_GOOGLE_SA_QUALITY" + // "PROVIDER_GOOGLE_GDCE_CLEANUP" + // "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS" + // "PROVIDER_GOOGLE_LOCALSEARCH" - The next new "Google" provider + // entries should be placed above. + // "PROVIDER_GOOGLE_TRANSIT" - UMBRELLA + // "PROVIDER_GOOGLE_GEOWIKI" + // "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM" + // "PROVIDER_GOOGLE_SYNTHESIZED" + // "PROVIDER_GOOGLE_INTERNAL_TEST" - This is a testing provider for + // teams that wish to integrate with components of the Geo Data + // Infrastructure that require a valid provider. No production data + // should ever be sent using this provider. + // "PROVIDER_GOOGLE_DISPUTED_AREAS" + // "PROVIDER_GOOGLE_3DWAREHOUSE" - UMBRELLA + // "PROVIDER_GOOGLE_GROUNDS_BUILDER" + // "PROVIDER_GOOGLE_SESAME" + // "PROVIDER_GOOGLE_GT" + // "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD" - UMBRELLA + // "PROVIDER_GOOGLE_ADSDB" - 0x1117F must not be used, since its range + // extends the PROVIDER_GOOGLE hierarchy. + // "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION" + // "PROVIDER_GOOGLE_TRAVELSEARCH" + // "PROVIDER_GOOGLE_PANORAMIO" + // "PROVIDER_GOOGLE_YOUTUBE" + // "PROVIDER_GOOGLE_OLD" + // "PROVIDER_GOOGLE_STREETVIEW" + // "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW" + // "PROVIDER_GOOGLE_ZIPIT" + // "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES" + // "PROVIDER_GOOGLE_GOLDEN" + // "PROVIDER_GOOGLE_INNERSPACE" + // "PROVIDER_GOOGLE_MAPSEARCH" + // "PROVIDER_GOOGLE_CATEGORIES_TEAM" - Deprecated in favor of + // PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and + // PROVIDER_GOOGLE_GEO_TIGER (for categories). + // "PROVIDER_GOOGLE_CROWDSENSUS" + // "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY" - 0x1117FF should not + // be used, since its range further extends the PROVIDER_GOOGLE + // hierarchy. aka Local AI. + // "PROVIDER_GOOGLE_FREEBASE" + // "PROVIDER_GOOGLE_HOTELADS" + // "PROVIDER_GOOGLE_AUTHORITY_PAGES" + // "PROVIDER_GOOGLE_PLACES_API" + // "PROVIDER_GOOGLE_NAMEHEATMAP" + // "PROVIDER_GOOGLE_MAPMAKER" + // "PROVIDER_GOOGLE_MAPMAKER_MOBILE" + // "PROVIDER_GOOGLE_MAPMAKER_PANCAKE" + // "PROVIDER_GOOGLE_MAPMAKER_V2" + // "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE" + // "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER" - No data is obtained from + // this provider. It is only used to identify features that must be + // served on MapMaker. + // "PROVIDER_GOOGLE_GT_LOCAL" + // "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS" + // "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS" + // "PROVIDER_GOOGLE_ENTITY_NAVBOOST" + // "PROVIDER_GOOGLE_RELATED_PLACES" + // "PROVIDER_GOOGLE_KNOWN_FOR_TERMS" + // "PROVIDER_GOOGLE_SYNTHETIC_AREAS" - 0x1117FFF should not be used, + // since its range further extends the PROVIDER_GOOGLE hierarchy. + // Synthetically generated areas (sublocalities/neighborhoods/ postal + // codes/etc) based on dropped terms from approximate geocoding. More + // info on go/syntheticareas. + // "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS" + // "PROVIDER_GOOGLE_CROSS_STREETS" + // "PROVIDER_GOOGLE_CORRIDORS" + // "PROVIDER_GOOGLE_BICYCLE_RENTAL" - Similar to Google Transit, a + // provider that aggregates positions of bicycle rental points that we + // have agreements with to show on maps + // "PROVIDER_GOOGLE_CONCRETE_URLS" + // "PROVIDER_GOOGLE_LEANBACK" + // "PROVIDER_GOOGLE_LOCKED_LISTINGS" + // "PROVIDER_GOOGLE_MONITORING" + // "PROVIDER_GOOGLE_SPROUT" + // "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY" + // "PROVIDER_GOOGLE_GOBY" + // "PROVIDER_GOOGLE_PROBLEM_REPORT" + // "PROVIDER_GOOGLE_CANDID" + // "PROVIDER_GOOGLE_BIZBUILDER" + // "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA" - This range has been + // depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above. + // "PROVIDER_MAPDATA_SCIENCES" + // "PROVIDER_MAPONICS" + // "PROVIDER_SKI_RESORTS" + // "PROVIDER_ZENRIN" + // "PROVIDER_SANBORN" + // "PROVIDER_URBAN_MAPPING" + // "PROVIDER_US_GOVERNMENT" - ABSTRACT + // "PROVIDER_US_CENSUS" + // "PROVIDER_US_POSTAL_SERVICE" + // "PROVIDER_US_GEOLOGICAL_SURVEY" + // "PROVIDER_US_GNIS" + // "PROVIDER_US_LANDSAT" + // "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY" + // "PROVIDER_US_NGA_GNS" + // "PROVIDER_US_SSIBL" - Small Scale International Boundary Lines + // "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS" + // "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION" - + // NOAA + // "PROVIDER_US_POLAR_GEOSPATIAL_CENTER" - PGC + // "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE" - USDA + // "PROVIDER_US_NPI_REGISTRY" - National Provider Identifier Registry + // "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS" + // "PROVIDER_DMTI_SPATIAL" + // "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION" + // "PROVIDER_MAPLINK" + // "PROVIDER_KINGWAY" + // "PROVIDER_GEOCENTRE" + // "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS" + // "PROVIDER_CN_MAPABC" + // "PROVIDER_SMITHSONIAN_INSTITUTE" + // "PROVIDER_TRACKS_FOR_AFRICA" + // "PROVIDER_PPWK" - old name for PROVIDER_NAVIGO + // "PROVIDER_LEADDOG" + // "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG" + // "PROVIDER_GISRAEL" + // "PROVIDER_BASARSOFT" + // "PROVIDER_MAPINFO" + // "PROVIDER_MAPIT" + // "PROVIDER_GEOBASE" + // "PROVIDER_ORION" + // "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY" + // "PROVIDER_ANASAT" + // "PROVIDER_MINED_POSTCODES" + // "PROVIDER_DMAPAS" + // "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY" + // "PROVIDER_CH_SBB" + // "PROVIDER_SKENERGY" + // "PROVIDER_GBRMPA" + // "PROVIDER_KOREA_POST" + // "PROVIDER_CN_AUTONAVI" + // "PROVIDER_MINED_POI" + // "PROVIDER_ML_INFOMAP" + // "PROVIDER_SNOOPER" + // "PROVIDER_GEOSISTEMAS" + // "PROVIDER_AFRIGIS" + // "PROVIDER_TRANSNAVICOM" + // "PROVIDER_EASYCONNECT" + // "PROVIDER_LANTMATERIET" + // "PROVIDER_LOGICA" + // "PROVIDER_MAPKING" + // "PROVIDER_DIANPING" + // "PROVIDER_GEONAV" + // "PROVIDER_HEIBONSHA" + // "PROVIDER_DEUTSCHE_TELEKOM" + // "PROVIDER_LINGUISTIC_DATA_CONSORTIUM" + // "PROVIDER_ACXIOM" + // "PROVIDER_DUN_AND_BRADSTREET" - See b/33687395 + // "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION" + // "PROVIDER_INFOUSA" + // "PROVIDER_INFOUSA_NIXIE" + // "PROVIDER_THOMSON_LOCAL" + // "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION" + // "PROVIDER_WIKIPEDIA" + // "PROVIDER_INFOBEL" + // "PROVIDER_MX_GOVERNMENT" - ABSTRACT + // "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY" + // "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO" + // "PROVIDER_TELEGATE" + // "PROVIDER_TELELISTAS" + // "PROVIDER_MAPCITY" + // "PROVIDER_EXPLAINER_DC" + // "PROVIDER_DAIKEI" + // "PROVIDER_NL_CHAMBER_OF_COMMERCE" + // "PROVIDER_KOREA_INFO_SERVICE" + // "PROVIDER_WIKITRAVEL" + // "PROVIDER_FLICKR" + // "PROVIDER_DIANCO" + // "PROVIDER_VOLT_DELTA" + // "PROVIDER_SG_GOVERNMENT" - ABSTRACT + // "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY" + // "PROVIDER_MAPBAR" + // "PROVIDER_LONGTU" + // "PROVIDER_SA_GOVERNMENT" - ABSTRACT + // "PROVIDER_SA_SAUDI_POST" + // "PROVIDER_PEAKLIST" + // "PROVIDER_LOCAL_BUSINESS_CENTER" + // "PROVIDER_LOCAL_FEED_XML" - UMBRELLA + // "PROVIDER_WEB" + // "PROVIDER_RAILS_TO_TRAILS" + // "PROVIDER_INDIACOM" + // "PROVIDER_INFOMEDIA" + // "PROVIDER_PICASA" + // "PROVIDER_AT_GOVERNMENT" - ABSTRACT + // "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN" + // "PROVIDER_AT_NATIONAL_TOURIST_OFFICE" + // "PROVIDER_AT_AUSTRIA_POST" + // "PROVIDER_NO_GOVERNMENT" - ABSTRACT + // "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON" + // "PROVIDER_NO_POSTEN_NORGE_AS" + // "PROVIDER_CH_GOVERNMENT" - ABSTRACT + // "PROVIDER_CH_SWISS_POST" + // "PROVIDER_CH_SWISSTOPO" + // "PROVIDER_CH_SWISS_NATIONAL_PARK" + // "PROVIDER_NAVIT" + // "PROVIDER_GEOSEARCH" + // "PROVIDER_DE_GOVERNMENT" - ABSTRACT + // "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE" + // "PROVIDER_BUNDESNETZAGENTUR" + // "PROVIDER_SCHOBER_GROUP" + // "PROVIDER_MIREO" + // "PROVIDER_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_US_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO" + // "PROVIDER_NZ_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY" + // "PROVIDER_PL_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE" + // "PROVIDER_PT_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ" + // "PROVIDER_AT_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT" + // "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA" + // "PROVIDER_AU_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA" + // "PROVIDER_IS_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK" + // "PROVIDER_NL_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN" + // "PROVIDER_BE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO" + // "PROVIDER_SE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA" + // "PROVIDER_UA_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV" + // "PROVIDER_OTHER_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS" + // "PROVIDER_FR_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER" + // "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX" + // "PROVIDER_SG_PUBLIC_MUNICIPALITY" + // "PROVIDER_BR_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO" + // "PROVIDER_MAPCUBE" + // "PROVIDER_3D_REALITYMAPS" + // "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT" + // "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA" + // "PROVIDER_DISNEY" + // "PROVIDER_CYBERCITY" + // "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS" + // "PROVIDER_VIRTUAL_HUNGARY_LIMITED" + // "PROVIDER_VIRTUEL_CITY" + // "PROVIDER_SCREAMPOINT_INTERNATIONAL" + // "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN" + // "PROVIDER_FR_GOVERNMENT" - ABSTRACT + // "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL" + // "PROVIDER_FR_CADASTRE" + // "PROVIDER_DIADIEM" + // "PROVIDER_THE_WEATHER_CHANNEL" + // "PROVIDER_COWI" + // "PROVIDER_FALKPLAN_ANDES" + // "PROVIDER_NL_GOVERNMENT" - ABSTRACT + // "PROVIDER_NL_KADASTER" + // "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS" + // "PROVIDER_DIGITAL_MAP_PRODUCTS" + // "PROVIDER_SILICE_DIGITAL" + // "PROVIDER_TYDAC" + // "PROVIDER_ALBRECHT_GOLF" + // "PROVIDER_HEALTH_CH" + // "PROVIDER_VISITDENMARK" + // "PROVIDER_FLYHERE" + // "PROVIDER_DIGITAL_DATA_SERVICES" + // "PROVIDER_MECOMO" + // "PROVIDER_ZA_GOVERNMENT" - ABSTRACT + // "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM" + // "PROVIDER_SENSIS" + // "PROVIDER_JJCONNECT" + // "PROVIDER_OPPLYSNINGEN" + // "PROVIDER_TELLUS" + // "PROVIDER_IQONIA" + // "PROVIDER_BE_GOVERNMENT" - ABSTRACT + // "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT" + // "PROVIDER_BE_BRUSSELS_MOBILITY" + // "PROVIDER_YELLOWMAP_AG" + // "PROVIDER_STIFTUNG_GESUNDHEIT" + // "PROVIDER_GIATA" + // "PROVIDER_SANPARKS" + // "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE" + // "PROVIDER_INFOPORTUGAL" + // "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO" + // "PROVIDER_COLLINS_BARTHOLOMEW" + // "PROVIDER_PROTECT_PLANET_OCEAN" + // "PROVIDER_KARTTAKESKUS" + // "PROVIDER_FI_GOVERNMENT" - ABSTRACT + // "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION" + // "PROVIDER_FI_NATIONAL_LAND_SURVEY" + // "PROVIDER_FI_STATISTICS_FINLAND" + // "PROVIDER_GB_GOVERNMENT" - ABSTRACT + // "PROVIDER_GB_ORDNANCE_SURVEY" + // "PROVIDER_NATURAL_ENGLAND" + // "PROVIDER_WELSH_GOVERNMENT" + // "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS" + // "PROVIDER_EPSILON" + // "PROVIDER_PARTNER_FRONT_END" + // "PROVIDER_CARTESIA" + // "PROVIDER_SE_GOVERNMENT" - ABSTRACT + // "PROVIDER_SE_TRAFIKVERKET" + // "PROVIDER_SE_NATURVARDSVERKET" + // "PROVIDER_IE_GOVERNMENT" - ABSTRACT + // "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND" + // "PROVIDER_LU_GOVERNMENT" - ABSTRACT + // "PROVIDER_LU_P_AND_T_LUXEMBOURG" + // "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE" + // "PROVIDER_LU_NATIONAL_TOURIST_OFFICE" + // "PROVIDER_MAPFLOW" + // "PROVIDER_TKARTOR" + // "PROVIDER_JUMPSTART" + // "PROVIDER_EPTISA" + // "PROVIDER_MC_GOVERNMENT" - ABSTRACT + // "PROVIDER_MC_PRINCIPAUTE_DE_MONACO" + // "PROVIDER_MONOLIT" + // "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE" + // "PROVIDER_MODIS" + // "PROVIDER_GEOX" + // "PROVIDER_GEODIRECTORY" + // "PROVIDER_GEOPLAN" + // "PROVIDER_INFODIREKT" + // "PROVIDER_GEOGLOBAL" + // "PROVIDER_DEUTSCHE_POST" + // "PROVIDER_TRACASA" + // "PROVIDER_CORREOS" + // "PROVIDER_ES_GOVERNMENT" - ABSTRACT + // "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA" + // "PROVIDER_EDIMAP" + // "PROVIDER_VERIZON" + // "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS" + // "PROVIDER_PROMAPS" + // "PROVIDER_CONSODATA" + // "PROVIDER_DE_AGOSTINI" + // "PROVIDER_FEDERPARCHI" + // "PROVIDER_NAVIGO" + // "PROVIDER_ITALIAMAPPE" + // "PROVIDER_CZECOT" + // "PROVIDER_NATURAL_EARTH" + // "PROVIDER_REGIO" + // "PROVIDER_SHIPWRECK_CENTRAL" + // "PROVIDER_RUTGERS_STATE_UNIVERSITY" + // "PROVIDER_TWINICE" + // "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD" + // "PROVIDER_INFOGROUP" + // "PROVIDER_TNET" + // "PROVIDER_CTT_CORREIOS_DE_PORTUGAL" + // "PROVIDER_EUROPARC" + // "PROVIDER_IUPPITER" + // "PROVIDER_MICHAEL_BAUER_INTERNATIONAL" + // "PROVIDER_LEPTON" + // "PROVIDER_MAPPOINT" + // "PROVIDER_GEODATA" + // "PROVIDER_RU_GOVERNMENT" - ABSTRACT + // "PROVIDER_RU_FNS_KLADR" + // "PROVIDER_BR_GOVERNMENT" - ABSTRACT + // + // "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATU + // RAIS_RENOVAVEIS" - IBAMA + // "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE" - MMA + // "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS" - ANA + // "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA" - + // IBGE + // "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO" - FUNAI + // + // "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES" + // - DNIT + // "PROVIDER_AZAVEA" + // "PROVIDER_NORTHSTAR" + // "PROVIDER_COMMEDI" + // "PROVIDER_NEXUS_GEOGRAFICS" + // "PROVIDER_INFOERA" + // "PROVIDER_AD_GOVERNMENT" - ABSTRACT + // "PROVIDER_AD_AREA_DE_CARTOGRAFIA" - Department of Cartography + // "PROVIDER_MAXXIMA" + // "PROVIDER_SI_GOVERNMENT" - ABSTRACT + // "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT" + // "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS" + // "PROVIDER_L1_TECHNOLOGIES" + // "PROVIDER_TELEMEDIA" + // "PROVIDER_CDCOM_PROGOROD" + // "PROVIDER_MIT_CITYGUIDE" + // "PROVIDER_SUNCART" + // "PROVIDER_MICROMAPPER" + // "PROVIDER_RICHI" + // "PROVIDER_FORUM44" + // "PROVIDER_SEAT" + // "PROVIDER_VALASSIS" + // "PROVIDER_NAVICOM" + // "PROVIDER_COLTRACK" + // "PROVIDER_PSMA_AUSTRALIA" + // "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA" + // "PROVIDER_CA_GOVERNMENT" - ABSTRACT + // "PROVIDER_STATISTICS_CANADA" + // "PROVIDER_TOCTOC" + // "PROVIDER_RMSI" + // "PROVIDER_TRUE_TECHNOLOGY" + // "PROVIDER_INCREMENT_P_CORPORATION" + // "PROVIDER_GOJAVAS" + // "PROVIDER_GEOINFORMATION_GROUP" + // "PROVIDER_CYBERSOFT" + // "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY" - 0x12 and 0x120 are not + // to be used. OOO CET + // "PROVIDER_EE_GOVERNMENT" - ABSTRACT + // "PROVIDER_EE_MAA_AMET" - Estonian Land Board + // "PROVIDER_GASBUDDY" + // "PROVIDER_DK_GOVERNMENT" - ABSTRACT + // "PROVIDER_DK_GEODATASTYRELSEN" - Danish Geodata Agency + // "PROVIDER_MURCIA_REGION_GOVERNMENT" + // "PROVIDER_CORREIOS" + // "PROVIDER_WEST_WORLD_MEDIA" + // "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION" + // "PROVIDER_MEDICARE" + // "PROVIDER_POLARIS" + // "PROVIDER_TW_GOVERNMENT" - ABSTRACT + // "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER" + // "PROVIDER_NORDECA" + // "PROVIDER_AFRIMAPPING" + // "PROVIDER_OVERDRIVE" + // "PROVIDER_PROVIDER_NETWORK_DIRECTORIES" + // "PROVIDER_BR_MINISTERIO_DA_SAUDE" + // "PROVIDER_DIGITAL_EGYPT" + // "PROVIDER_INRIX" + // "PROVIDER_ARPINDO" + // "PROVIDER_IT_GOVERNMENT" - ABSTRACT + // "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE" + // "PROVIDER_EAST_END_GROUP" + // "PROVIDER_INGEOLAN" + // "PROVIDER_SEMACONNECT" + // "PROVIDER_BLINK" + // "PROVIDER_EVGO" + // "PROVIDER_CHARGEPOINT" + // "PROVIDER_TPL_TRAKKER" + // "PROVIDER_OI" + // "PROVIDER_MAPARADAR" + // "PROVIDER_SINGAPORE_POST" + // "PROVIDER_CHARGEMASTER" + // "PROVIDER_TESLA" + // "PROVIDER_VISICOM" + // "PROVIDER_GEOLYSIS" + // "PROVIDER_ZEPHEIRA" + // "PROVIDER_HUBJECT" + // "PROVIDER_PODPOINT" + // "PROVIDER_CHARGEFOX" + // "PROVIDER_KR_GOVERNMENT" - ABSTRACT + // "PROVIDER_KR_MOLIT" - Ministry of land, infrastructure and + // transport, 국토교통부, Guktogyotongbu + // "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY" + // "PROVIDER_CRITCHLOW" + // "PROVIDER_EIFRIG" + // "PROVIDER_GIREVE" + // "PROVIDER_CN_NAVINFO" + // "PROVIDER_JAPAN_CHARGE_NETWORK" + // "PROVIDER_NOBIL" + // "PROVIDER_INDIA_BANKS" + // "PROVIDER_INDONESIA_ELECTION_KPU" + // "PROVIDER_CAREERS360" + // "PROVIDER_SOURCE_LONDON" + // "PROVIDER_EVBOX" + // "PROVIDER_JP_GOVERNMENT" - ABSTRACT + // "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT" + // "PROVIDER_YUMYUM" + // "PROVIDER_HWW_AUSTRALIA" + // "PROVIDER_CINERGY" + // "PROVIDER_MTIME" + // "PROVIDER_KULTUNAUT" + // "PROVIDER_BLITZ" + // "PROVIDER_PIA" + // "PROVIDER_INTERPARK" + // "PROVIDER_CINEMA_ONLINE" + // "PROVIDER_BELBIOS" + // "PROVIDER_MOVIESEER" + // "PROVIDER_SODAMEDYA" + // "PROVIDER_ATMOVIES" + // "PROVIDER_HOTELBEDS" + // "PROVIDER_VERICRED" + // "PROVIDER_CIRRANTIC" + // "PROVIDER_GOGO_LABS" + // "PROVIDER_ELECTRIFY_AMERICA" + // "PROVIDER_CMS_MPPUF" + // "PROVIDER_DIGIROAD" - Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION. + // "PROVIDER_KONTEX_GEOMATICS" + // "PROVIDER_NZ_GOVERNMENT" - ABSTRACT + // "PROVIDER_NZ_LINZ" - Land Information New Zealand + // "PROVIDER_NZ_DOC" - NZ Department of Conservation + // "PROVIDER_FASTNED" + // "PROVIDER_DESTINY_CS" + // "PROVIDER_IONITY" + // "PROVIDER_EV_CONNECT" + // "PROVIDER_PANPAGES" + // "PROVIDER_ETECNIC" + // "PROVIDER_VOLTA" + // "PROVIDER_NISSAN_MEXICO" + // "PROVIDER_BMW_GROUP_LATIN_AMERICA" + // "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO" + // "PROVIDER_VOLVO_CARS_BRASIL" + // "PROVIDER_CHARGE_AND_PARKING" + // "PROVIDER_DEDUCE_TECHNOLOGIES" + // "PROVIDER_SK_TELECOM" + // "PROVIDER_ECO_MOVEMENT" + // "PROVIDER_GOOGLE_GMS" + // "PROVIDER_EASYWAY" + // "PROVIDER_PHYSICIAN_COMPARE" + // "PROVIDER_HOSPITAL_COMPARE" + // "PROVIDER_ENDOLLA_BARCELONA" + // "PROVIDER_BE_CHARGE" + // "PROVIDER_ONE_NETWORK" + // "PROVIDER_CARENAV_DUPLEX" + // "PROVIDER_CARENAV_POI" - UMBRELLA + // "PROVIDER_IN_GOVERNMENT" - ABSTRACT + // "PROVIDER_SURVEY_OF_INDIA" + // "PROVIDER_E_ON" + // "PROVIDER_ELECTRIFY_CANADA" + // "PROVIDER_GRIDCARS" + // "PROVIDER_DRIVECO" + // "PROVIDER_GREEN_ACTION_STUDIOS" + // "PROVIDER_GREEN_ACTION_STUDIO" + // "PROVIDER_EVINY" + // "PROVIDER_MASTERCARD" + // "PROVIDER_VATTENFALL" - Note: Next available value is 0x126C. + Provider string `json:"provider,omitempty"` + + SourceDataset string `json:"sourceDataset,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Instance") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Instance") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreOntologyRawGConceptInstanceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreOntologyRawGConceptInstanceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreOpeningHoursProto: Message to represent opening hours +// including regular weekly hours and a set of exceptions. +type GeostoreOpeningHoursProto struct { + // Exception: Date delimited exceptions to the typical recurring opening + // hours. May only be present if regular weekly hours are also + // specified. + Exception []*GeostoreExceptionalHoursProto `json:"exception,omitempty"` + + // RegularHours: Typical recurring opening hours, expressed as a weekly + // schedule. NOTE: this field was introduced to have a more + // client-friendly format for representing weekly hours but, as of + // November 2018, it's not used for the main opening hours of + // TYPE_ESTABLISHMENT features (instead, the data is stored in the + // `EstablishmentProto.hours` field, see b/23105782 tracking the + // possible schema migration). It is however used in other contexts + // where `OpeningHoursProto` appears in the Geo Schema. In + // openinghours.h there is a utility function + // `GetOpeningHoursFromFeature` that merges `EstablishmentProto.hours` + // into this proto. + RegularHours *GeostoreBusinessHoursProto `json:"regularHours,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Exception") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Exception") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreOpeningHoursProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreOpeningHoursProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreOperationsProto: Information about a feature's operations, +// e.g. when the feature is temporarily closed. +type GeostoreOperationsProto struct { + // TemporaryClosure: Records temporary status change of the feature, + // such as remodel, vacation, etc.: the feature is temporarily (but not + // permanently) unavailable. This prevents users from going to the + // feature. Supports an arbitrary number of past, present, and future + // temporary closures, with the feature's data owner choosing which + // range of past and future closures to permit or guarantee to keep. All + // start and end dates must be unique from each other. If two + // consecutive dates are a start and an end of a TemporaryClosureProto, + // then the two dates must be from the same TemporaryClosureProto. + // Otherwise, exact dates may be missing so long as there exist a + // possible sequence of temporary closures with both exact start_date + // and end_date that keeps any known exact start_date and end_date. The + // earliest temporary closure must begin after whenever initial + // operations begin. Likewise, the latest temporary closure must end + // before whenever the permanent closure begins. NOTE: does *not* + // guarantee chronological order. + TemporaryClosure []*GeostoreTemporaryClosureProto `json:"temporaryClosure,omitempty"` + + // ForceSendFields is a list of field names (e.g. "TemporaryClosure") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TemporaryClosure") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreOperationsProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreOperationsProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreOverrideBorderStatusProto: This message captures a border +// status override. For instance, if the TYPE_BORDER feature between +// China and Hong Kong must be hidden on ditu.google.cn (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. +type GeostoreOverrideBorderStatusProto struct { + // CountryCode: The two-letter ISO 3166-1 country code corresponding to + // the domain this status override applies to, when rendering the border + // polyline. + CountryCode string `json:"countryCode,omitempty"` + + // Status: The override status, from the BorderStatus enumeration. The + // value here must be different from the main status (otherwise there's + // no point in providing the override). + // + // Possible values: + // "STATUS_NORMAL" - Most border lines have this status, which + // typically means both parties agree on the location of the line. These + // might be called "de jure" borders. + // "STATUS_DISPUTED" - This status is used when the two parties + // disagree on the location of the line. There can be multiple border + // lines in a given disputed area. One might be the line proposed by + // country "A" and another the line proposed by country "B". A third + // line might mark the de facto line of control. Other border lines + // might indicate historical borders, e.g., "1949 Armistice Line". + // "STATUS_UNSURVEYED" - This is used for one section of border + // between Argentina and Chile. Both parties agree that a border line + // exists somewhere on the glacier, but the exact location has not been + // determined. + // "STATUS_INTERNATIONAL_WATER" - This is a border line between a + // country and international water. + // "STATUS_NEVER_DISPLAY" - This status is only used for the borders + // that should never display to users. Typically it is for the borders + // that we don't want to represent but that we would still like to use + // to model country boundaries, e.g. Hong Kong and Macau. + // "STATUS_TREATY" - This is used for borders that refer to + // well-defined boundaries which have been established by a specific + // treaty, agreement, armistice or other such agreement between two or + // more parties, yet the position and/or status is not considered to be + // legal and final (e.g., the final demarcation of the exact position + // has not occurred or the final political status is not resolved). + // "STATUS_PROVISIONAL" - This is used for borders for which a formal + // agreement has not been established between the parties involved, yet + // the existing line acts as a de facto functional border without + // existence of any dispute. + // "STATUS_NO_LABEL" - This is used for borders which should not have + // country labels to either side, but should otherwise be styled the + // same as a border with STATUS_NORMAL. This is typically for borders + // which are not themselves disputed but still form part of the boundary + // around a disputed area that is not otherwise modeled or labeled as a + // country, or as an override where we are obligated to remove labels + // for region specific versions of Maps. + Status string `json:"status,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CountryCode") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CountryCode") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreOverrideBorderStatusProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreOverrideBorderStatusProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePaintedElementLogicalColorProto: 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. +type GeostorePaintedElementLogicalColorProto struct { + // Possible values: + // "UNKNOWN_LOGICAL_COLOR" + // "WHITE" + // "YELLOW" + // "RED" + // "GREEN" + // "BLUE" + // "BLACK" + // "GREY" + // "ORANGE" + Color string `json:"color,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Color") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Color") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePaintedElementLogicalColorProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePaintedElementLogicalColorProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreParkingAllowanceProto: 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. +type GeostoreParkingAllowanceProto struct { + // AllowanceType: The type of parking for this allowance. Allowance + // details only apply to the type of parking specified. + // + // Possible values: + // "STANDARD" - Standard parking without qualifications. This is a + // long-term allowance. + // "VALET" - This is a long-term allowance that only applies for valet + // parking. + // "PERMIT" - The is a long-term allowance that applies to + // permit-holders. See permit_type for details. + // "PICKUP_GOODS" - This is a short-term allowance that only applies + // to picking up goods. + // "PICKUP_PASSENGERS" - This is a short-term allowance that only + // applies to picking up passengers. + AllowanceType string `json:"allowanceType,omitempty"` + + // IsDiscount: If true, this allowance represents a discount rather than + // an individual rate; any rate values specified in this allowance + // describe a discount to be applied to the non-discount allowances in + // the ParkingProto. + IsDiscount bool `json:"isDiscount,omitempty"` + + // MinPurchaseForValidation: If this rate requires validation, this + // expresses the minimum purchase required for validation in each + // applicable currency. Should have an ID of + // /measurement_unit/money_value and consist of two properties: one with + // an ID of /measurement_unit/money_value/amount and a float value with + // the amount, and another with the ID + // /measurement_unit/money_value/currency and an ID value with the MID + // of the proper currency (from the /finance/currency type). A value of + // 0 suggests that no purchase is required. If empty, this suggests that + // no validation is required for this rate. + MinPurchaseForValidation []*FreebaseTopic `json:"minPurchaseForValidation,omitempty"` + + // PermitType: Any additional details about the permit type; e.g. + // “Zone A”. In any local languages. Should only be set if + // allowance_type is PERMIT. + PermitType []*GeostoreLanguageTaggedTextProto `json:"permitType,omitempty"` + + // ServiceType: The types of services that this parking allowance + // applies to. For instance, some cities have streets that only allow + // traditional taxis to pick up passengers. + // + // Possible values: + // "SERVICE_ALL" - Signifies that this restriction is always + // applicable, regardless of the service type. + // "SERVICE_GENERAL_DRIVER" - Signifies that this restriction is + // applicable to a general driver. + // "SERVICE_RIDESHARE" - Signifies that this restriction is applicable + // to a ridesharing driver. + // "SERVICE_TAXI" - Signifies that this restriction is applicable to a + // traditional taxi driver. + // "SERVICE_COMMERCIAL" - Signifies that this restriction is + // applicable to a commercial vehicle. This generally applies to + // vehicles used for carrying goods or fare-paying passengers. However, + // the exact definition of a commercial vehicle can vary by locality. + ServiceType []string `json:"serviceType,omitempty"` + + // TimeBasedRate: Describes the rate structures. Each TimeBasedRateProto + // defines a rate which may apply based on a particular arrival, + // departure or utilization time; for example, one rate might apply if + // arriving before 9am, and another might apply regardless of arrival or + // departure time. + TimeBasedRate []*GeostoreTimeBasedRateProto `json:"timeBasedRate,omitempty"` + + // VehicleType: Restrictions on which vehicle type(s) the allowance + // applies to. By default, the allowance applies to any vehicle types. + // + // Possible values: + // "ANY" + // "CAR" + // "MOTORCYCLE" + // "TRUCK" - Note: The exact definition of a truck varies by city, but + // it usually refers to vehicles with three or more axles. This value + // does not necessarily apply to all commercial vehicles or vehicles + // colloquially referred to as trucks (eg. pickup trucks). + VehicleType string `json:"vehicleType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AllowanceType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AllowanceType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreParkingAllowanceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreParkingAllowanceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreParkingProto: 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. +type GeostoreParkingProto struct { + // Allowance: Describes the parking allowances for the feature, which + // are the situations and requirements under which one is permitted to + // park at the feature’s parking facilities, or discounts that a user + // may be eligible for. + Allowance []*GeostoreParkingAllowanceProto `json:"allowance,omitempty"` + + // OpeningHours: Hours in which the parking facility is open; that is, + // permits both arrivals and departures of the facility. Should only be + // set on compounds (i.e. parking lots or garages); roads are considered + // to always be “open,” though parking at certain times may be + // prohibited via restrictions. If unset on a compound, this suggests we + // don’t know the opening hours, or they are the same as the hours of + // the entity for which this feature offers parking facilities. + OpeningHours *GeostoreOpeningHoursProto `json:"openingHours,omitempty"` + + // ParkingAvailable: Indicates whether long-term parking is available at + // the feature; if true, long-term parking is available at the feature + // and parking allowances may be present on this feature, or + // parking_provider_feature may indicate defered parking feature(s). If + // false, this is an explicit statement that there is no long-term + // parking associated with this feature. If unset, we don't know whether + // there is long-term parking associated with this feature. If false or + // unset, only additional restrictions or short-term allowances will be + // populated. + ParkingAvailable bool `json:"parkingAvailable,omitempty"` + + // ParkingProviderFeature: If empty, indicates that the feature + // containing this ParkingProto provides parking facilities, which are + // described by this proto. If nonempty, indicates that the feature with + // this ParkingProto does not contain parking facilities itself, but + // visitors of this feature may use the parking available to the + // referent feature(s). The referent feature(s) may themselves contain + // parking facilities or defer to other features. A ParkingProto may + // defer parking details to another feature, but still include its own + // data. This suggests that a visitor of the referrer feature is + // eligible for different rates or discounts. The data in these fields + // applies transitively, and any fields in a referrer may be applied to + // the referent (for a visitor of the referrer). + ParkingProviderFeature []*GeostoreFeatureIdProto `json:"parkingProviderFeature,omitempty"` + + // Restriction: Describes any parking restrictions that apply to this + // feature. Should only be set on road segments for which parking is + // explicitly prohibited for some or all times; for roads which do not + // prohibit parking and for all other facilities, the ability to park + // should be expressed using allowances. In the instance that both a + // restriction and an allowance applies at a given time, restrictions + // always have precedence over the same parking allowances. However, + // explicit short-term allowances (PICKUP_GOODS, PICKUP_PASSENGERS) take + // precedence over general NO_PARKING, NO_STANDING, or NO_STOPPING + // restrictions. + Restriction []*GeostoreParkingRestrictionProto `json:"restriction,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Allowance") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Allowance") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreParkingProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreParkingProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreParkingRestrictionProto: Expresses a parking restriction on a +// road; i.e. times at which parking on the road is prohibited. +type GeostoreParkingRestrictionProto struct { + // RestrictedHours: Times at which parking is prohibited. + RestrictedHours *GeostoreTimeScheduleProto `json:"restrictedHours,omitempty"` + + // RestrictionType: clang-format on The type of restriction that applies + // at this time. + // + // Possible values: + // "RESTRICTION_UNKNOWN" - Default value. Should never be set in + // practice. + // "RESTRICTION_PARKING" - Parking is not allowed. This is a long-term + // restriction. + // "RESTRICTION_STANDING" - No standing is allowed. This means a + // vehicle cannot wait or stop to load/unload packages. A vehicle may + // stop to drop-off passengers or to pick up passengers already waiting + // at the location. This is a short-term restriction. + // "RESTRICTION_STOPPING" - A vehicle may not stop at this location at + // any time. This is a short-term restriction. + // "RESTRICTION_PICKUP_GOODS" - A vehicle may not stop here to pick up + // goods. This is a short-term restriction. + // "RESTRICTION_PICKUP_PASSENGERS" - A vehicle may not stop here to + // pick up passengers. This is a short-term restriction. + RestrictionType string `json:"restrictionType,omitempty"` + + // ServiceType: The types of services that this parking restriction + // applies to. We expect most parking restrictions to apply to all + // services, but some airports have specific rideshare parking or taxi + // parking zones. + // + // Possible values: + // "SERVICE_ALL" - Signifies that this restriction is always + // applicable, regardless of the service type. + // "SERVICE_GENERAL_DRIVER" - Signifies that this restriction is + // applicable to a general driver. + // "SERVICE_RIDESHARE" - Signifies that this restriction is applicable + // to a ridesharing driver. + // "SERVICE_TAXI" - Signifies that this restriction is applicable to a + // traditional taxi driver. + // "SERVICE_COMMERCIAL" - Signifies that this restriction is + // applicable to a commercial vehicle. This generally applies to + // vehicles used for carrying goods or fare-paying passengers. However, + // the exact definition of a commercial vehicle can vary by locality. + ServiceType []string `json:"serviceType,omitempty"` + + // VehicleType: The types of vehicles that this parking restriction + // applies to. For instance, some streets may allow motorcycles to park + // but not automobiles or trucks. + // + // Possible values: + // "ANY" + // "CAR" + // "MOTORCYCLE" + // "TRUCK" - Note: The exact definition of a truck varies by city, but + // it usually refers to vehicles with three or more axles. This value + // does not necessarily apply to all commercial vehicles or vehicles + // colloquially referred to as trucks (eg. pickup trucks). + VehicleType []string `json:"vehicleType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RestrictedHours") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RestrictedHours") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreParkingRestrictionProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreParkingRestrictionProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePeakProto: This protocol buffer holds related data for +// features of type TYPE_PEAK and TYPE_VOLCANO. +type GeostorePeakProto struct { + // ProminenceMeters: Topographic prominence in meters: the height of the + // peak’s summit above the lowest contour line encircling it and no + // higher summit. + ProminenceMeters float64 `json:"prominenceMeters,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ProminenceMeters") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ProminenceMeters") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePeakProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePeakProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePeakProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePeakProto + var s1 struct { + ProminenceMeters gensupport.JSONFloat64 `json:"prominenceMeters"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.ProminenceMeters = float64(s1.ProminenceMeters) + return nil +} + +// GeostorePedestrianCrossingProto: 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. +type GeostorePedestrianCrossingProto struct { + // AngleDegrees: This value specifies the angle of the crosswalk. Zero + // degrees represents a crosswalk perpendicular to the direction of + // travel, towards the right side of the segment. The crosswalk angle, + // winds clockwise. Range [-90, 90]. The following crosswalk would have + // a 15 degree angle: / / <--/-------------------------------- / / + AngleDegrees float64 `json:"angleDegrees,omitempty"` + + // CrossAnywhere: This value enables crossing anywhere (not just at the + // segment’s endpoint), typically used on long, low-traffic + // residential streets. This attribute is only respected for trivial + // segment -> sibling routes. All other routes can cross at a MapFacts + // intersection. + CrossAnywhere bool `json:"crossAnywhere,omitempty"` + + // CrossingType: Crossing type is used as a restriction and can also be + // used for rendering. + // + // Possible values: + // "UNKNOWN" - RESERVED + // "CROSSABLE" + // "UNMARKED_CROSSING" + // "MARKED_CROSSING" + // "UNCROSSABLE" + CrossingType string `json:"crossingType,omitempty"` + + // Offset: The crossing offset defines a fraction between the distance + // from the segment endpoint to the centerline of the crosswalk and the + // length of the segment. For example, the segment length is 20 meters + // and the distance from segment end to center of crosswalk is 2 meters, + // the value of offset will be 0.1. + Offset float64 `json:"offset,omitempty"` + + // Restriction: Restrictions for this crossing (such as constructions on + // the crosswalk). They must not have subpath or travel_mode. + Restriction []*GeostoreRestrictionProto `json:"restriction,omitempty"` + + // Width: This value defines the full width of the crossing in the + // direction perpendicular to the direction which pedestrians walk on + // the crossing (in meters). The crossing is allowed to "spill" into the + // next segment (0.5 * width can be greater than the offset). Cannot be + // a negative value. + Width float64 `json:"width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AngleDegrees") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AngleDegrees") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePedestrianCrossingProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePedestrianCrossingProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePedestrianCrossingProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePedestrianCrossingProto + var s1 struct { + AngleDegrees gensupport.JSONFloat64 `json:"angleDegrees"` + Offset gensupport.JSONFloat64 `json:"offset"` + Width gensupport.JSONFloat64 `json:"width"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AngleDegrees = float64(s1.AngleDegrees) + s.Offset = float64(s1.Offset) + s.Width = float64(s1.Width) + return nil +} + +// GeostorePhysicalLineProto: Describes a single physical marker line. +type GeostorePhysicalLineProto struct { + // DashLengthMeters: Applicable for DASHED and DOTTED_DASHED lines. + DashLengthMeters float64 `json:"dashLengthMeters,omitempty"` + + // GapColor: This should be rarely needed, but can represent patterns of + // alternating colors. + GapColor *GeostorePaintedElementLogicalColorProto `json:"gapColor,omitempty"` + + // GapLengthMeters: Applicable for DASHED, DOTTED, and DOTTED_DASHED + // lines. + GapLengthMeters float64 `json:"gapLengthMeters,omitempty"` + + // Possible values: + // "UNKNOWN_STRIPE_MATERIAL" + // "PAINT_STRIPE" - Solid paint stripe. + // "ROUND_DOT" - Round dot, typically nonreflective. + // "SQUARE_DOT" - Square dot, typically reflective. + Material []string `json:"material,omitempty"` + + // PaintColor: Color for the painted elements. Applicable to all types. + PaintColor *GeostorePaintedElementLogicalColorProto `json:"paintColor,omitempty"` + + // Possible values: + // "UNKNOWN_DASH_PATTERN" + // "SOLID" + // "DASHED" + // "DOTTED" + // "DOTTED_DASHED" + Pattern string `json:"pattern,omitempty"` + + // PhysicalLineToken: A token that can be used to identify the version + // of the data about this marker line. + PhysicalLineToken string `json:"physicalLineToken,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DashLengthMeters") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DashLengthMeters") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePhysicalLineProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePhysicalLineProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePhysicalLineProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePhysicalLineProto + var s1 struct { + DashLengthMeters gensupport.JSONFloat64 `json:"dashLengthMeters"` + GapLengthMeters gensupport.JSONFloat64 `json:"gapLengthMeters"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.DashLengthMeters = float64(s1.DashLengthMeters) + s.GapLengthMeters = float64(s1.GapLengthMeters) + return nil +} + +type GeostorePointProto struct { + LatE7 int64 `json:"latE7,omitempty"` + + LngE7 int64 `json:"lngE7,omitempty"` + + // Metadata: 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 FeatureProto.center. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // point. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LatE7") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LatE7") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePointProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePointProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePointWithHeightProto: PointWithHeightProto encodes lat/lng +// through PointProto and contains altitude information. +type GeostorePointWithHeightProto struct { + // AltitudeMeters: Altitude of this point is assumed to be relative to + // the ground level. + AltitudeMeters float64 `json:"altitudeMeters,omitempty"` + + Point *GeostorePointProto `json:"point,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AltitudeMeters") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AltitudeMeters") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePointWithHeightProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePointWithHeightProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePointWithHeightProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePointWithHeightProto + var s1 struct { + AltitudeMeters gensupport.JSONFloat64 `json:"altitudeMeters"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AltitudeMeters = float64(s1.AltitudeMeters) + return nil +} + +// GeostorePoliticalProto: 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. +type GeostorePoliticalProto struct { + // Capital: Many political regions have a conceptual center (capitals of + // a country or a top-level division are examples). If set, the target + // feature must be a TYPE_LOCALITY feature. + Capital *GeostoreFeatureIdProto `json:"capital,omitempty"` + + // GrossDomesticProductUsdMillions: The Gross Domestic Product of the + // political region measured in millions of current United States + // dollars. It must not be negative. + GrossDomesticProductUsdMillions float64 `json:"grossDomesticProductUsdMillions,omitempty"` + + // LiteracyPercent: Percentage of population that are literate within a + // political region. It must be between 0 and 100. + LiteracyPercent float64 `json:"literacyPercent,omitempty"` + + // Population: The number of people in this political region. This field + // is intended to store accurate population, not an estimation such as + // representative value for population range. It must not be negative. + Population int64 `json:"population,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "Capital") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Capital") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePoliticalProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePoliticalProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePoliticalProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePoliticalProto + var s1 struct { + GrossDomesticProductUsdMillions gensupport.JSONFloat64 `json:"grossDomesticProductUsdMillions"` + LiteracyPercent gensupport.JSONFloat64 `json:"literacyPercent"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.GrossDomesticProductUsdMillions = float64(s1.GrossDomesticProductUsdMillions) + s.LiteracyPercent = float64(s1.LiteracyPercent) + return nil +} + +type GeostorePolyLineProto struct { + // Metadata: 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[]. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // polyline. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // Vertex: 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. + Vertex []*GeostorePointProto `json:"vertex,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePolyLineProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePolyLineProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePolygonProto: 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; see comments on shape_id below. Any such +// PolygonProtos shouldn't be expected to work with public functions in +// //geostore/base/public/polygon.h. +type GeostorePolygonProto struct { + // BaseMeters: The polygon loops above are basically flat: each point + // has a latitude and a longitude but no altitude. We don't want to + // build real 3D models here, but we do want to be able to generate 2.5D + // models. A 2.5D model is built by translating the flat polygon upward + // some distance (base) then extruding it upward some additional + // distance (height). The elevation of the bottom of the extruded + // polygon (above ground level). + BaseMeters float64 `json:"baseMeters,omitempty"` + + // CellId: ** DEPRECATED ** This is part of a splitting strategy for + // large polygons, which was never fully launched and we decided not to + // pursue. For features with very complex polygonal geometry, we break + // up the polygon into pieces that align with S2 cells at various + // levels. We do this for performance reasons as some geometry + // operations have quadratic complexity with regards to the total number + // of vertices. In these cases, we store the S2 cell ID corresponding to + // the piece of the overall polygon that is described by this specific + // PolygonProto message. Each polygon piece is expected to be fully + // contained by the S2 cell corresponding to this cell ID. However, note + // that the S2 cell ID is not required to correspond to the smallest S2 + // cell that fully contains the polygon (and often won't be). In + // addition, polygon pieces are required to not have any overlap (which + // translates to having entirely disjoint S2 cell IDs, i.e. one can not + // be parent (or grand parent, etc.) of another). + CellId uint64 `json:"cellId,omitempty,string"` + + // Encoded: Encoding of the polygon using S2Polygon::Encode()'s + // compressed representation. + Encoded string `json:"encoded,omitempty"` + + // HeightMeters: The distance from the bottom of the extruded polygon to + // the top. + HeightMeters float64 `json:"heightMeters,omitempty"` + + // Loop: ** DEPRECATED ** We have switched to using exclusively the + // encoded form in the wire format to and from MapFacts, so this field + // should never be populated there. See go/encoded-polygons for more + // info. "Classic" polygon representation, defined by one or more loops. + // The last vertex of each polyline is implicitly connected to the first + // vertex. All loops should be specified in CCW order. + Loop []*GeostorePolyLineProto `json:"loop,omitempty"` + + // Metadata: Field-level metadata for this polygon. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // ShapeId: A unique identifier for this polygon's data which is being + // held externally in Shapestore (see go/shapestore). This is only ever + // set internally within MapFacts or underlying infrastructure and if + // set is set in lieu of other fields. Clients of MapFacts (or anyone + // downstream of them) can rely on the guarantee that this field will + // never be set and that the actual data for the polygon will be present + // instead. This field has been deprecated in favor of + // FeatureProto.internal.polygon_shape_id + ShapeId string `json:"shapeId,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // polygon. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // UnsuitableForDisplay: Some polygons are known to be rough proxies for + // a feature's "real" polygonal representation. Such polygons are + // generally unsuitable for display. Rendering clients should not show + // these in most cases. Polygons unsuitable for display do have other + // uses, such as user location or containment analysis, or as an input + // to learning algorithms. This is an orthogonal concept to + // FeatureProto.synthetic_geometry, which only pertains to the method by + // which a polygon was created, rather than its fidelity to ground + // truth. For features that have multiple polygons, this bit should be + // consistently set to the same value on all polygons. + UnsuitableForDisplay bool `json:"unsuitableForDisplay,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BaseMeters") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BaseMeters") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePolygonProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePolygonProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePolygonProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePolygonProto + var s1 struct { + BaseMeters gensupport.JSONFloat64 `json:"baseMeters"` + HeightMeters gensupport.JSONFloat64 `json:"heightMeters"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.BaseMeters = float64(s1.BaseMeters) + s.HeightMeters = float64(s1.HeightMeters) + return nil +} + +// GeostorePoseProto: 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/Pose.java +type GeostorePoseProto struct { + // Altitude: The height of the poses above the WGS-84 ellipsoid in + // meters. + Altitude float64 `json:"altitude,omitempty"` + + // Index: The index of the PoseProto in a list of PoseProtos. + Index int64 `json:"index,omitempty"` + + // Lat: The latitude of the pose in degrees [-90, 90]. + Lat float64 `json:"lat,omitempty"` + + // Lng: The longitude of the pose in degrees (-180,180]. + Lng float64 `json:"lng,omitempty"` + + // Pitch: The rotation around the longitude line East tangent in degrees + // [-90, 90]. + Pitch float64 `json:"pitch,omitempty"` + + // Roll: The rotation around the latitude line North tangent in degrees + // (-180, 180]. + Roll float64 `json:"roll,omitempty"` + + // Yaw: The rotation around the Up vector, from North, in degrees (-180, + // 180]. + Yaw float64 `json:"yaw,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Altitude") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Altitude") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePoseProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePoseProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePoseProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePoseProto + var s1 struct { + Altitude gensupport.JSONFloat64 `json:"altitude"` + Lat gensupport.JSONFloat64 `json:"lat"` + Lng gensupport.JSONFloat64 `json:"lng"` + Pitch gensupport.JSONFloat64 `json:"pitch"` + Roll gensupport.JSONFloat64 `json:"roll"` + Yaw gensupport.JSONFloat64 `json:"yaw"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Altitude = float64(s1.Altitude) + s.Lat = float64(s1.Lat) + s.Lng = float64(s1.Lng) + s.Pitch = float64(s1.Pitch) + s.Roll = float64(s1.Roll) + s.Yaw = float64(s1.Yaw) + return nil +} + +// GeostorePriceInfoFoodNutritionFacts: This message represents +// nutrition facts for a food dish. +type GeostorePriceInfoFoodNutritionFacts struct { + Calories *GeostorePriceInfoFoodNutritionFactsCaloriesFact `json:"calories,omitempty"` + + // Cholesterol: Cholesterol information for a given food dish. + Cholesterol *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"cholesterol,omitempty"` + + // Protein: Protein information for a given food dish. + Protein *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"protein,omitempty"` + + // Sodium: Sodium information for a given food dish. + Sodium *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"sodium,omitempty"` + + // TotalCarbohydrate: Carbohydrate information for a given food dish. + TotalCarbohydrate *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"totalCarbohydrate,omitempty"` + + // TotalFat: Fat information for a given food dish. + TotalFat *GeostorePriceInfoFoodNutritionFactsNutritionFact `json:"totalFat,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Calories") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Calories") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceInfoFoodNutritionFacts) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceInfoFoodNutritionFacts + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePriceInfoFoodNutritionFactsCaloriesFact: This message denotes +// calories information with an upper bound and lower bound range. +type GeostorePriceInfoFoodNutritionFactsCaloriesFact struct { + LowerAmount int64 `json:"lowerAmount,omitempty"` + + // Unit: Unit of the given calories information. + // + // Possible values: + // "UNDEFINED_ENERGY_UNIT" + // "CALORIE" + // "JOULE" + Unit string `json:"unit,omitempty"` + + UpperAmount int64 `json:"upperAmount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LowerAmount") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LowerAmount") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceInfoFoodNutritionFactsCaloriesFact) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceInfoFoodNutritionFactsCaloriesFact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePriceInfoFoodNutritionFactsNutritionFact: This message +// denotes nutrition information with an upper bound and lower bound +// range and can be represented by mass unit. +type GeostorePriceInfoFoodNutritionFactsNutritionFact struct { + LowerAmount float64 `json:"lowerAmount,omitempty"` + + // Unit: Unit of the given nutrition information. + // + // Possible values: + // "UNDEFINED_MASS_UNIT" + // "GRAM" + // "MILLIGRAM" + Unit string `json:"unit,omitempty"` + + UpperAmount float64 `json:"upperAmount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LowerAmount") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LowerAmount") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceInfoFoodNutritionFactsNutritionFact) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceInfoFoodNutritionFactsNutritionFact + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePriceInfoFoodNutritionFactsNutritionFact) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePriceInfoFoodNutritionFactsNutritionFact + var s1 struct { + LowerAmount gensupport.JSONFloat64 `json:"lowerAmount"` + UpperAmount gensupport.JSONFloat64 `json:"upperAmount"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.LowerAmount = float64(s1.LowerAmount) + s.UpperAmount = float64(s1.UpperAmount) + return nil +} + +type GeostorePriceInfoProto struct { + // PriceList: 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. + PriceList []*GeostorePriceListProto `json:"priceList,omitempty"` + + // PriceListUrl: 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. + PriceListUrl []*GeostoreUrlListProto `json:"priceListUrl,omitempty"` + + // Status: Message containing metadata about the verified status of the + // PriceInfo. Only verified listings should be displayed. + Status *GeostorePriceInfoStatus `json:"status,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PriceList") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PriceList") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceInfoProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceInfoProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePriceInfoStatus: Providers of PriceInfo (e.g. SinglePlatform, +// YEXT) send verified and unverified listings. PriceInfoStatus is used +// to encapsulate this information. +type GeostorePriceInfoStatus struct { + IsVerified bool `json:"isVerified,omitempty"` + + // ForceSendFields is a list of field names (e.g. "IsVerified") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "IsVerified") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceInfoStatus) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceInfoStatus + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePriceListNameInfoProto: 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 +// treated the same as having the fields not set. +type GeostorePriceListNameInfoProto struct { + Description string `json:"description,omitempty"` + + // Id: IDs are intended to be unique identifiers of PriceInfoLists, + // Sections, and Menu items. This is enforced by the + // ID_DUPLICATE_PRICE_LIST_ID lint. + Id string `json:"id,omitempty"` + + // Language: The external form of a Google International Identifiers + // Initiative (III) LanguageCode object. See + // google3/i18n/identifiers/languagecode.h for details. We place extra + // restrictions on languages in addition to what the III library + // requires. See go/geo-schema-reference/feature-properties/languages. + Language string `json:"language,omitempty"` + + Name string `json:"name,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Description") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Description") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceListNameInfoProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceListNameInfoProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePriceListProto: 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. +type GeostorePriceListProto struct { + // AvailableTime: The time period when this price list is available. + // Establishments are not required to give available_time for any given + // price list, however, when this field is not set, the price list is + // understood as available any time the establishment is open. + AvailableTime *GeostoreTimeScheduleProto `json:"availableTime,omitempty"` + + // Cuisines: Cuisine information if the location the price lists + // attached to is an eligible feature for a food menu price list. + // Cuisine information should also only show up in a food price list. + // + // Possible values: + // "CUISINE_UNDEFINED" + // "FAST_FOOD" + // "AMERICAN" + // "JAPANESE" + // "BREAK_FAST" + // "PIZZA" + // "HAMBURGER" + // "ITALIAN" + // "SEAFOOD" + // "FAMILY" + // "MEXICAN" + // "CHINESE" + // "VEGETARIAN" + // "SUSHI" + // "CHICKEN" + // "INDIAN" + // "ASIAN" + // "MEDITERRANEAN" + // "FRENCH" + // "BRUNCH" + // "KOREAN" + // "THAI" + // "SPANISH" + // "VIETNAMESE" + // "LATIN_AMERICAN" + // "INDONESIAN" + // "GREEK" + // "GERMAN" + // "TURKISH" + // "BRAZILIAN" + // "PAKISTANI" + // "OTHER_CUISINE" + Cuisines []string `json:"cuisines,omitempty"` + + // NameInfo: The repeated name_info field is for price lists listed in + // multiple languages. When a price list has no names or descriptions, + // the size of the repeated field name_info may be 0. There should be at + // most one name_info for any given language. + NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"` + + // Section: Each price list may have multiple sections. Note that these + // sections within the same price list should most times contain only + // the same type of items for sale, e.g. all sections should usually + // contain only food items if the enclosing price list is representing + // food menu. However, sometimes such a requirement may be wrong, for + // example, McDonald's may sell burgers as well as toys, and the toys + // may be in its own section. Thus we don't enforce any requirement that + // all sections contain only the same type of items. + Section []*GeostorePriceListSectionProto `json:"section,omitempty"` + + // SourceUrl: Where this price list comes from. If set, this must also + // be a member of the price_list_url field, and represents translations + // of a single URL. + SourceUrl *GeostoreUrlListProto `json:"sourceUrl,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AvailableTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AvailableTime") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceListProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceListProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePriceListSectionProto: 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. +type GeostorePriceListSectionProto struct { + // CallToAction: Call to action for the section. + CallToAction *GeostoreCallToActionProto `json:"callToAction,omitempty"` + + // FoodItem: To store food and drink items when the containing + // PriceListSectionProto is a food menu section. + FoodItem []*GeostoreFoodMenuItemProto `json:"foodItem,omitempty"` + + // Item: To store any items when the containing PriceListSectionProto is + // not food / legacy services. + Item []*GeostoreComposableItemProto `json:"item,omitempty"` + + // ItemType: This has to have at most one value. + // + // Possible values: + // "TYPE_ANY" - Abstract type, and the root of all types. Not a + // meaningful type and likewise should never be present in a geostore + // repository. + // "TYPE_FOOD" - For food and drink items, stored in + // FoodMenuItemProto. + // "TYPE_SERVICE" - For service items (stored in FoodMenuItemProto). + // TYPE_SERVICE is being deprecated. Please use TYPE_JOB for the new + // services See b/147253790 for more information. data. + // "TYPE_PRODUCT" - For product items (stored in ComposableItemProto). + // "TYPE_JOB" - For jobs (stored in ComposableItemProto). + ItemType []string `json:"itemType,omitempty"` + + // Media: One or more media items (photos, videos, etc.) describing this + // section / category. + Media []*GeostoreMediaItemProto `json:"media,omitempty"` + + // NameInfo: The repeated name_info field is for price list sections + // listed in multiple languages. When a price list section has no names + // or descriptions, the size of the repeated field name_info may be 0. + // There should be at most one name_info for any given language. + NameInfo []*GeostorePriceListNameInfoProto `json:"nameInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CallToAction") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CallToAction") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceListSectionProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceListSectionProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostorePriceRangeProto: 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" +type GeostorePriceRangeProto struct { + // Currency: Currency code for the price range: a valid currency code + // from i18n/identifiers/currencycode.h. Lower and upper price are both + // assumed to use the same currency. + Currency string `json:"currency,omitempty"` + + // LowerPrice: This message allows unbounded price ranges. e.g. + // Lower_price is undefined. At least one of the two prices must be set + // for the price range to be meaningful. + LowerPrice float64 `json:"lowerPrice,omitempty"` + + // Units: clang-format on + // + // Possible values: + // "ANY_UNITS" - ABSTRACT The root of the hierarchy. It's an abstract + // value and shouldn't be present in the repository. + // "PER_USE" + // "PER_PHONE_CALL" + // "PER_RIDE" - e.g. for the price of a ferry or aeroplane flight. + // "PER_TIME_UNIT" + // "PER_SECOND" + // "PER_MINUTE" + // "PER_HOUR" + // "PER_DAY" + // "PER_NIGHT" - e.g. for the price of a hotel room. + // "PER_WEEK" + // "PER_MONTH" + // "PER_YEAR" + // "PER_VOLUME_UNIT" + // "PER_LITER" - e.g. for the price of petrol. + // "PER_GLASS" - The following units (PER_GLASS, PER_BOTTLE, and + // PER_POT) are intended to represent price units for restaurant menus + // and do not specify how much volume the unit contains. e.g. for wine + // sold by glass. + // "PER_BOTTLE" - e.g. for wine sold by bottle. + // "PER_POT" - e.g. for tea sold by pot + // "PER_LENGTH_UNIT" + // "PER_CENTIMETER" + // "PER_METER" + // "PER_KILOMETER" - e.g. for the price of a taxi. + // "PER_MASS_UNIT" - To simplify the categories for units, we put both + // mass and weight units under PER_MASS_UNIT, as a lot of times they are + // used interchangeably in real life anyway. + // "PER_GRAM" + // "PER_KILOGRAM" + // "PER_OUNCE" + // "PER_POUND" + Units string `json:"units,omitempty"` + + UpperPrice float64 `json:"upperPrice,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Currency") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Currency") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePriceRangeProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePriceRangeProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostorePriceRangeProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostorePriceRangeProto + var s1 struct { + LowerPrice gensupport.JSONFloat64 `json:"lowerPrice"` + UpperPrice gensupport.JSONFloat64 `json:"upperPrice"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.LowerPrice = float64(s1.LowerPrice) + s.UpperPrice = float64(s1.UpperPrice) + return nil +} + +// GeostorePropertyValueStatusProto: 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. +type GeostorePropertyValueStatusProto struct { + // PropertyId: The property ID whose value status is defined by this + // proto. + PropertyId *GeostoreFeaturePropertyIdProto `json:"propertyId,omitempty"` + + // ValueStatus: `value_status` specifies whether the feature has a value + // for the property. This should always be set to something other than + // the default value (`PROPERTY_VALUE_STATUS_UNSPECIFIED`). + // + // Possible values: + // "PROPERTY_VALUE_STATUS_UNSPECIFIED" - The default value means the + // property's value status is encoded in the property itself: if the + // property has a value, it has a value. If it doesn't, it may or may + // not have a value. It is OK to interpret that as having no value. Note + // that in `PropertyValueStatusProto`, this value is not allowed. We + // include it and define it to match the default behavior so that it can + // be used in other protos. + // "HAS_NO_VALUE" - `HAS_NO_VALUE` means that we know that the + // property has no value. + // "HAS_UNKNOWN_VALUE" - 'HAS_UNKNOWN_VALUE' means that we know that + // the property has a value but that we don't know what that value is. + ValueStatus string `json:"valueStatus,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PropertyId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PropertyId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostorePropertyValueStatusProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostorePropertyValueStatusProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreProvenanceProto: This is a minimal version of +// SourceInfoProto. +type GeostoreProvenanceProto struct { + // Dataset: The dataset from which this the referenced data was created. + // The content of this string will be determined by the data provider, + // and may encode extra information, such as data confidence. + Dataset string `json:"dataset,omitempty"` + + // Provider: The data provider from which the referenced data was + // generated. + // + // Possible values: + // "PROVIDER_ANY" - ABSTRACT The root of all provider types. This + // should never be present on an actual feature, but can be useful when + // calling InCategory. + // "PROVIDER_UNKNOWN" - not actually a legal value, used as sentinel + // "PROVIDER_NAVTEQ" + // "PROVIDER_TELE_ATLAS" - ABSTRACT + // "PROVIDER_TELE_ATLAS_MULTINET" + // "PROVIDER_TELE_ATLAS_CODEPOINT" + // "PROVIDER_TELE_ATLAS_GEOPOST" + // "PROVIDER_TELE_ATLAS_DATAGEO" + // "PROVIDER_TELE_ATLAS_ADDRESS_POINTS" + // "PROVIDER_TELCONTAR" + // "PROVIDER_EUROPA" + // "PROVIDER_ROYAL_MAIL" + // "PROVIDER_GOOGLE" - ABSTRACT + // "PROVIDER_GOOGLE_HAND_EDIT" + // "PROVIDER_GOOGLE_BORDERS" - All new "Google" provider entries must + // be full ints. The next available ID is: 0x111730AA + // "PROVIDER_GOOGLE_SUBRANGE" - ABSTRACT + // "PROVIDER_GOOGLE_GT_FUSION" + // "PROVIDER_GOOGLE_ZAGAT_CMS" + // "PROVIDER_GOOGLE_PLACE_NAVBOOST" + // "PROVIDER_GOOGLE_FOOTPRINT" + // "PROVIDER_GOOGLE_PRODUCT_TERMS" + // "PROVIDER_GOOGLE_POINTCARDS" + // "PROVIDER_GOOGLE_BUSINESS_CHAINS" + // "PROVIDER_GOOGLE_LOCAL_SUMMARIZATION" + // "PROVIDER_GOOGLE_PRONUNCIATIONS" + // "PROVIDER_GOOGLE_DUMPLING" + // "PROVIDER_GOOGLE_DISTILLERY" + // "PROVIDER_GOOGLE_LOCAL_ATTRIBUTE_SUMMARIZATION" + // "PROVIDER_GOOGLE_RELATION_MINER" + // "PROVIDER_GOOGLE_MAPSPAM" + // "PROVIDER_GOOGLE_ROSE" + // "PROVIDER_GOOGLE_LOCAL_PLACE_RATINGS" + // "PROVIDER_GOOGLE_WIPEOUT" - This is an internal *only* provider + // meant for sending wipeout requests to mapfacts. + // "PROVIDER_GOOGLE_KNOWLEDGE_GRAPH" + // "PROVIDER_GOOGLE_BEEGEES" + // "PROVIDER_GOOGLE_REVIEW_SUMMARIZATION" + // "PROVIDER_GOOGLE_OFFLINE_NON_CORE_ATTRIBUTE_SUMMARIZATION" + // "PROVIDER_GOOGLE_GEO_WORLDMAPS" + // "PROVIDER_GOOGLE_GEO_MODERATION" + // "PROVIDER_GOOGLE_OYSTER_AUTO_EDITS" + // "PROVIDER_GOOGLE_LOCAL_ALCHEMY" + // "PROVIDER_GOOGLE_KEROUAC" + // "PROVIDER_GOOGLE_MOBRANK" + // "PROVIDER_GOOGLE_RAPTURE" + // "PROVIDER_GOOGLE_CULTURAL_INSTITUTE" + // "PROVIDER_GOOGLE_GEOCODES_FROM_LOCAL_FEEDS" + // "PROVIDER_GOOGLE_ATTRIBUTES_FROM_CRAWLED_CHAINS" + // "PROVIDER_GOOGLE_TACTILE_MAPS" + // "PROVIDER_GOOGLE_MAPS_FOR_MOBILE" + // "PROVIDER_GOOGLE_GEO_REALTIME" + // "PROVIDER_GOOGLE_PROMINENT_PLACES" - Never rely on source infos + // with this provider to identify whether or not a feature is a + // Prominent Place! Instead, use the proper API, + // localsearch_clustering::QualityTierHelper::IsProminentPlace(). + // "PROVIDER_GOOGLE_PLACE_ACTIONS" + // "PROVIDER_GOOGLE_GT_AUTO_EDITS" + // "PROVIDER_GOOGLE_WAZE" + // "PROVIDER_GOOGLE_ONTHEGO" + // "PROVIDER_GOOGLE_GT_IMPORT" + // "PROVIDER_GOOGLE_STRUCTURED_DATA" + // "PROVIDER_GOOGLE_HELICOPTER" + // "PROVIDER_GOOGLE_ROLLBACK" + // "PROVIDER_GOOGLE_RIGHTS_REPAIR" + // "PROVIDER_GOOGLE_PERFUME" + // "PROVIDER_GOOGLE_MAPS_TRANSLATION" + // "PROVIDER_GOOGLE_CALL_ME_MAYBE" + // "PROVIDER_GOOGLE_LOCAL_UNIVERSAL" + // "PROVIDER_GOOGLE_CROUPIER" + // "PROVIDER_GOOGLE_SKYSMART" + // "PROVIDER_GOOGLE_RIDDLER" + // "PROVIDER_GOOGLE_ROADCLOSURES" + // "PROVIDER_GOOGLE_SPORE" - UMBRELLA + // "PROVIDER_GOOGLE_LOCALIZATION" + // "PROVIDER_GOOGLE_CATTERMS" + // "PROVIDER_GOOGLE_GT_FIELD_OPS" + // "PROVIDER_GOOGLE_MATCHMAKER" + // "PROVIDER_GOOGLE_ARBITRATION" + // "PROVIDER_GOOGLE_BIZBUILDER_OPS" + // "PROVIDER_GOOGLE_LOCAL_INVENTORY_ADS" + // "PROVIDER_GOOGLE_GT_DRAFTY" + // "PROVIDER_GOOGLE_HOTELADS_OPS" + // "PROVIDER_GOOGLE_MARKERS" + // "PROVIDER_GOOGLE_STATE_MACHINE" + // "PROVIDER_GOOGLE_ATTRIBUTES_INFERENCE" + // "PROVIDER_GOOGLE_BIKESHARE" + // "PROVIDER_GOOGLE_GHOSTWRITER" + // "PROVIDER_GOOGLE_EDIT_PLATFORM" + // "PROVIDER_GOOGLE_BLUE_GINGER" + // "PROVIDER_GOOGLE_GEO_TIGER" + // "PROVIDER_GOOGLE_HYADES" + // "PROVIDER_GOOGLE_WEBQUARRY" + // "PROVIDER_GOOGLE_GEO_MADDEN" + // "PROVIDER_GOOGLE_ANDROID_PAY" + // "PROVIDER_GOOGLE_OPENING_HOURS_TEAM" + // "PROVIDER_GOOGLE_LOCAL_DISCOVERY" + // "PROVIDER_GOOGLE_LOCAL_HEALTH" + // "PROVIDER_GOOGLE_UGC_MAPS" + // "PROVIDER_GOOGLE_FIBER" + // "PROVIDER_GOOGLE_REVGEO" + // "PROVIDER_GOOGLE_HOTELADS_PARTNER_FRONT_END" + // "PROVIDER_GOOGLE_GEO_UGC_TASKS" + // "PROVIDER_GOOGLE_GEOCODING" + // "PROVIDER_GOOGLE_SPYGLASS" + // "PROVIDER_GOOGLE_PLUS_CODES_AS_ADDRESSES" + // "PROVIDER_GOOGLE_GEO_CHANGES" + // "PROVIDER_GOOGLE_HUME" + // "PROVIDER_GOOGLE_MEGAMIND" + // "PROVIDER_GOOGLE_GT_ROADSYNTH" + // "PROVIDER_GOOGLE_FIREBOLT" + // "PROVIDER_GOOGLE_LOCAL_PLACE_OFFERINGS" + // "PROVIDER_GOOGLE_UGC_SERVICES" + // "PROVIDER_GOOGLE_GEOALIGN" + // "PROVIDER_GOOGLE_GT_COMPOUNDS" + // "PROVIDER_GOOGLE_FOOD_ORDERING" + // "PROVIDER_GOOGLE_HOTEL_KNOWLEDGE_OPS" + // "PROVIDER_GOOGLE_URAW" + // "PROVIDER_GOOGLE_FLYEYE" + // "PROVIDER_GOOGLE_YOUKE" + // "PROVIDER_GOOGLE_GT_ZEPHYR" + // "PROVIDER_GOOGLE_USER_SAFETY" + // "PROVIDER_GOOGLE_ADDRESS_MAKER" + // "PROVIDER_GOOGLE_UGC_PHOTOS" + // "PROVIDER_GOOGLE_GT_WINDCHIME" + // "PROVIDER_GOOGLE_SNAG_FIXER" + // "PROVIDER_GOOGLE_GEO_DEALS" + // "PROVIDER_GOOGLE_LOCAL_PLACE_TOPICS" + // "PROVIDER_GOOGLE_PROPERTY_INSIGHTS" + // "PROVIDER_GOOGLE_GEO_CONSUMER_MERCHANT_EXPERIMENTS" + // "PROVIDER_GOOGLE_GEO_PORTKEY" + // "PROVIDER_GOOGLE_ROAD_MAPPER" + // "PROVIDER_GOOGLE_LOCATION_PLATFORM" + // "PROVIDER_GOOGLE_POSTTRIP" + // "PROVIDER_GOOGLE_TRAVEL_DESTINATION" + // "PROVIDER_GOOGLE_GEO_DATA_UPLOAD" - UMBRELLA + // "PROVIDER_GOOGLE_BIZBUILDER_CLEANUP" + // "PROVIDER_GOOGLE_USER" + // "PROVIDER_GOOGLE_STATION" + // "PROVIDER_GOOGLE_GEO_FOOD" + // "PROVIDER_GOOGLE_GEO_AR" + // "PROVIDER_GOOGLE_GEO_TEMPORAL" + // "PROVIDER_GOOGLE_SERVICES_MARKETPLACE" + // "PROVIDER_GOOGLE_IMT_CLEANUP" + // "PROVIDER_GOOGLE_GEO_FOOD_MENU" + // "PROVIDER_GOOGLE_CARENAV" + // "PROVIDER_GOOGLE_DRIVING_FEEDS" - UMBRELLA + // "PROVIDER_GOOGLE_DRIVING_UGC" + // "PROVIDER_GOOGLE_POLAR" + // "PROVIDER_GOOGLE_TRIWILD" + // "PROVIDER_GOOGLE_CROWD_COMPUTE_OPS" + // "PROVIDER_GOOGLE_SA_FROM_WEB" + // "PROVIDER_GOOGLE_POI_ALIGNMENT" + // "PROVIDER_GOOGLE_SA_FROM_HULK" + // "PROVIDER_GOOGLE_SERVICES_INTERACTIONS" + // "PROVIDER_GOOGLE_ROADS_UGC_EDITOR" + // "PROVIDER_GOOGLE_SA_FROM_NG_INFERENCE" + // "PROVIDER_GOOGLE_GEO_DRIVING_VIZ" + // "PROVIDER_GOOGLE_GEO_TASKING" + // "PROVIDER_GOOGLE_CROWDTASK_DATACOMPUTE" + // "PROVIDER_GOOGLE_CROWDTASK_TASKADS" + // "PROVIDER_GOOGLE_CROWDTASK_TASKMATE" + // "PROVIDER_GOOGLE_CROWDTASK_FURBALL" + // "PROVIDER_GOOGLE_CROWDTASK_ADAP" + // "PROVIDER_GOOGLE_GPAY" + // "PROVIDER_GOOGLE_GEO_UGC_TRUSTED_USERS" + // "PROVIDER_GOOGLE_THIRD_PARTY_DATA_PRODUCTION" + // "PROVIDER_GOOGLE_GEOTRACKER" + // "PROVIDER_GOOGLE_LOCAL_LANDMARK_INFERENCE" + // "PROVIDER_GOOGLE_GEO_CLOSED_LOOP" + // "PROVIDER_GOOGLE_SA_FROM_MERCHANT_POSTS" + // "PROVIDER_GOOGLE_CORE_DATA_RIGHTS" + // "PROVIDER_GOOGLE_SA_FROM_USER_REVIEWS" + // "PROVIDER_GOOGLE_GEO_CONTENT_FIXER" + // "PROVIDER_GOOGLE_POLYGON_REFINEMENT" + // "PROVIDER_GOOGLE_HANASU" + // "PROVIDER_GOOGLE_FULLRIGHTS_GEO_DATA_UPLOAD" + // "PROVIDER_GOOGLE_FULLRIGHTS_3P_OUTREACH_UPLOAD" + // "PROVIDER_GOOGLE_ATTRIBUTION_3P_OUTREACH_UPLOAD" + // "PROVIDER_GOOGLE_SA_FROM_FOOD_MENUS" + // "PROVIDER_GOOGLE_GT_CONSISTENCY_EDITS" + // "PROVIDER_GOOGLE_SA_QUALITY" + // "PROVIDER_GOOGLE_GDCE_CLEANUP" + // "PROVIDER_GOOGLE_UGC_QUALITY_CHAINS" + // "PROVIDER_GOOGLE_LOCALSEARCH" - The next new "Google" provider + // entries should be placed above. + // "PROVIDER_GOOGLE_TRANSIT" - UMBRELLA + // "PROVIDER_GOOGLE_GEOWIKI" + // "PROVIDER_GOOGLE_CHINA_LOCAL_TEAM" + // "PROVIDER_GOOGLE_SYNTHESIZED" + // "PROVIDER_GOOGLE_INTERNAL_TEST" - This is a testing provider for + // teams that wish to integrate with components of the Geo Data + // Infrastructure that require a valid provider. No production data + // should ever be sent using this provider. + // "PROVIDER_GOOGLE_DISPUTED_AREAS" + // "PROVIDER_GOOGLE_3DWAREHOUSE" - UMBRELLA + // "PROVIDER_GOOGLE_GROUNDS_BUILDER" + // "PROVIDER_GOOGLE_SESAME" + // "PROVIDER_GOOGLE_GT" + // "PROVIDER_GOOGLE_GT_BASEMAP_UPLOAD" - UMBRELLA + // "PROVIDER_GOOGLE_ADSDB" - 0x1117F must not be used, since its range + // extends the PROVIDER_GOOGLE hierarchy. + // "PROVIDER_GOOGLE_MACHINE_TRANSLITERATION" + // "PROVIDER_GOOGLE_TRAVELSEARCH" + // "PROVIDER_GOOGLE_PANORAMIO" + // "PROVIDER_GOOGLE_YOUTUBE" + // "PROVIDER_GOOGLE_OLD" + // "PROVIDER_GOOGLE_STREETVIEW" + // "PROVIDER_GOOGLE_STREETVIEW_BIZVIEW" + // "PROVIDER_GOOGLE_ZIPIT" + // "PROVIDER_GOOGLE_OYSTER_CONNECT_ROUTES" + // "PROVIDER_GOOGLE_GOLDEN" + // "PROVIDER_GOOGLE_INNERSPACE" + // "PROVIDER_GOOGLE_MAPSEARCH" + // "PROVIDER_GOOGLE_CATEGORIES_TEAM" - Deprecated in favor of + // PROVIDER_GOOGLE_STRUCTURED_DATA (for attributes) and + // PROVIDER_GOOGLE_GEO_TIGER (for categories). + // "PROVIDER_GOOGLE_CROWDSENSUS" + // "PROVIDER_GOOGLE_LOCAL_ALGORITHMIC_IDENTITY" - 0x1117FF should not + // be used, since its range further extends the PROVIDER_GOOGLE + // hierarchy. aka Local AI. + // "PROVIDER_GOOGLE_FREEBASE" + // "PROVIDER_GOOGLE_HOTELADS" + // "PROVIDER_GOOGLE_AUTHORITY_PAGES" + // "PROVIDER_GOOGLE_PLACES_API" + // "PROVIDER_GOOGLE_NAMEHEATMAP" + // "PROVIDER_GOOGLE_MAPMAKER" + // "PROVIDER_GOOGLE_MAPMAKER_MOBILE" + // "PROVIDER_GOOGLE_MAPMAKER_PANCAKE" + // "PROVIDER_GOOGLE_MAPMAKER_V2" + // "PROVIDER_GOOGLE_LOCAL_CLUSTERING_OPERATOR_OVERRIDE" + // "PROVIDER_GOOGLE_SERVED_ON_MAPMAKER" - No data is obtained from + // this provider. It is only used to identify features that must be + // served on MapMaker. + // "PROVIDER_GOOGLE_GT_LOCAL" + // "PROVIDER_GOOGLE_GT_LOCAL_WITH_RIGHTS" + // "PROVIDER_GOOGLE_LOGS_RANKING_SIGNALS" + // "PROVIDER_GOOGLE_ENTITY_NAVBOOST" + // "PROVIDER_GOOGLE_RELATED_PLACES" + // "PROVIDER_GOOGLE_KNOWN_FOR_TERMS" + // "PROVIDER_GOOGLE_SYNTHETIC_AREAS" - 0x1117FFF should not be used, + // since its range further extends the PROVIDER_GOOGLE hierarchy. + // Synthetically generated areas (sublocalities/neighborhoods/ postal + // codes/etc) based on dropped terms from approximate geocoding. More + // info on go/syntheticareas. + // "PROVIDER_GOOGLE_AUTHORITY_PAGE_PHOTOS" + // "PROVIDER_GOOGLE_CROSS_STREETS" + // "PROVIDER_GOOGLE_CORRIDORS" + // "PROVIDER_GOOGLE_BICYCLE_RENTAL" - Similar to Google Transit, a + // provider that aggregates positions of bicycle rental points that we + // have agreements with to show on maps + // "PROVIDER_GOOGLE_CONCRETE_URLS" + // "PROVIDER_GOOGLE_LEANBACK" + // "PROVIDER_GOOGLE_LOCKED_LISTINGS" + // "PROVIDER_GOOGLE_MONITORING" + // "PROVIDER_GOOGLE_SPROUT" + // "PROVIDER_GOOGLE_LOCAL_SEARCH_QUALITY" + // "PROVIDER_GOOGLE_GOBY" + // "PROVIDER_GOOGLE_PROBLEM_REPORT" + // "PROVIDER_GOOGLE_CANDID" + // "PROVIDER_GOOGLE_BIZBUILDER" + // "PROVIDER_AUTOMOTIVE_NAVIGATION_DATA" - This range has been + // depleted. For new Ids see PROVIDER_GOOGLE_SUBRANGE above. + // "PROVIDER_MAPDATA_SCIENCES" + // "PROVIDER_MAPONICS" + // "PROVIDER_SKI_RESORTS" + // "PROVIDER_ZENRIN" + // "PROVIDER_SANBORN" + // "PROVIDER_URBAN_MAPPING" + // "PROVIDER_US_GOVERNMENT" - ABSTRACT + // "PROVIDER_US_CENSUS" + // "PROVIDER_US_POSTAL_SERVICE" + // "PROVIDER_US_GEOLOGICAL_SURVEY" + // "PROVIDER_US_GNIS" + // "PROVIDER_US_LANDSAT" + // "PROVIDER_US_NATIONAL_GEOSPATIAL_INTELLIGENCE_AGENCY" + // "PROVIDER_US_NGA_GNS" + // "PROVIDER_US_SSIBL" - Small Scale International Boundary Lines + // "PROVIDER_US_BUREAU_OF_TRANSPORTATION_STATISTICS" + // "PROVIDER_US_NATIONAL_OCEANIC_AND_ATMOSPHERIC_ADMINISTRATION" - + // NOAA + // "PROVIDER_US_POLAR_GEOSPATIAL_CENTER" - PGC + // "PROVIDER_US_DEPARTMENT_OF_AGRICULTURE" - USDA + // "PROVIDER_US_NPI_REGISTRY" - National Provider Identifier Registry + // "PROVIDER_US_BUREAU_OF_INDIAN_AFFAIRS" + // "PROVIDER_DMTI_SPATIAL" + // "PROVIDER_INTERNATIONAL_HYDROGRAPHIC_ORGANIZATION" + // "PROVIDER_MAPLINK" + // "PROVIDER_KINGWAY" + // "PROVIDER_GEOCENTRE" + // "PROVIDER_CN_NATIONAL_FOUNDAMENTAL_GIS" + // "PROVIDER_CN_MAPABC" + // "PROVIDER_SMITHSONIAN_INSTITUTE" + // "PROVIDER_TRACKS_FOR_AFRICA" + // "PROVIDER_PPWK" - old name for PROVIDER_NAVIGO + // "PROVIDER_LEADDOG" + // "PROVIDER_CENTRE_DONNEES_ASTRONOMIQUES_STRASBOURG" + // "PROVIDER_GISRAEL" + // "PROVIDER_BASARSOFT" + // "PROVIDER_MAPINFO" + // "PROVIDER_MAPIT" + // "PROVIDER_GEOBASE" + // "PROVIDER_ORION" + // "PROVIDER_CENTRAL_EUROPEAN_DATA_AGENCY" + // "PROVIDER_ANASAT" + // "PROVIDER_MINED_POSTCODES" + // "PROVIDER_DMAPAS" + // "PROVIDER_COMMON_LOCALE_DATA_REPOSITORY" + // "PROVIDER_CH_SBB" + // "PROVIDER_SKENERGY" + // "PROVIDER_GBRMPA" + // "PROVIDER_KOREA_POST" + // "PROVIDER_CN_AUTONAVI" + // "PROVIDER_MINED_POI" + // "PROVIDER_ML_INFOMAP" + // "PROVIDER_SNOOPER" + // "PROVIDER_GEOSISTEMAS" + // "PROVIDER_AFRIGIS" + // "PROVIDER_TRANSNAVICOM" + // "PROVIDER_EASYCONNECT" + // "PROVIDER_LANTMATERIET" + // "PROVIDER_LOGICA" + // "PROVIDER_MAPKING" + // "PROVIDER_DIANPING" + // "PROVIDER_GEONAV" + // "PROVIDER_HEIBONSHA" + // "PROVIDER_DEUTSCHE_TELEKOM" + // "PROVIDER_LINGUISTIC_DATA_CONSORTIUM" + // "PROVIDER_ACXIOM" + // "PROVIDER_DUN_AND_BRADSTREET" - See b/33687395 + // "PROVIDER_FEDERAL_AVIATION_ADMINISTRATION" + // "PROVIDER_INFOUSA" + // "PROVIDER_INFOUSA_NIXIE" + // "PROVIDER_THOMSON_LOCAL" + // "PROVIDER_TELEFONICA_PUBLICIDAD_E_INFORMACION" + // "PROVIDER_WIKIPEDIA" + // "PROVIDER_INFOBEL" + // "PROVIDER_MX_GOVERNMENT" - ABSTRACT + // "PROVIDER_MX_NATIONAL_INSTITUTE_STATISTICS_GEOGRAPHY" + // "PROVIDER_MX_SERVICIO_POSTAL_MEXICANO" + // "PROVIDER_TELEGATE" + // "PROVIDER_TELELISTAS" + // "PROVIDER_MAPCITY" + // "PROVIDER_EXPLAINER_DC" + // "PROVIDER_DAIKEI" + // "PROVIDER_NL_CHAMBER_OF_COMMERCE" + // "PROVIDER_KOREA_INFO_SERVICE" + // "PROVIDER_WIKITRAVEL" + // "PROVIDER_FLICKR" + // "PROVIDER_DIANCO" + // "PROVIDER_VOLT_DELTA" + // "PROVIDER_SG_GOVERNMENT" - ABSTRACT + // "PROVIDER_SG_LAND_TRANSPORT_AUTHORITY" + // "PROVIDER_MAPBAR" + // "PROVIDER_LONGTU" + // "PROVIDER_SA_GOVERNMENT" - ABSTRACT + // "PROVIDER_SA_SAUDI_POST" + // "PROVIDER_PEAKLIST" + // "PROVIDER_LOCAL_BUSINESS_CENTER" + // "PROVIDER_LOCAL_FEED_XML" - UMBRELLA + // "PROVIDER_WEB" + // "PROVIDER_RAILS_TO_TRAILS" + // "PROVIDER_INDIACOM" + // "PROVIDER_INFOMEDIA" + // "PROVIDER_PICASA" + // "PROVIDER_AT_GOVERNMENT" - ABSTRACT + // "PROVIDER_AT_BUNDESAMT_FUR_EICH_UND_VERMESSUNGSWESEN" + // "PROVIDER_AT_NATIONAL_TOURIST_OFFICE" + // "PROVIDER_AT_AUSTRIA_POST" + // "PROVIDER_NO_GOVERNMENT" - ABSTRACT + // "PROVIDER_NO_NORSK_EIENDOMSINFORMASJON" + // "PROVIDER_NO_POSTEN_NORGE_AS" + // "PROVIDER_CH_GOVERNMENT" - ABSTRACT + // "PROVIDER_CH_SWISS_POST" + // "PROVIDER_CH_SWISSTOPO" + // "PROVIDER_CH_SWISS_NATIONAL_PARK" + // "PROVIDER_NAVIT" + // "PROVIDER_GEOSEARCH" + // "PROVIDER_DE_GOVERNMENT" - ABSTRACT + // "PROVIDER_BUNDESAMT_KARTOGRAPHIE_UND_GEODASIE" + // "PROVIDER_BUNDESNETZAGENTUR" + // "PROVIDER_SCHOBER_GROUP" + // "PROVIDER_MIREO" + // "PROVIDER_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_US_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_US_PUBLIC_MUNICIPALITY_WEBSTER_TEXAS" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_AMHERST_MASSACHUSETTS" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_BLOOMINGTON_INDIANA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_PASADENA_CALIFORNIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_CHULA_VISTA_CALIFORNIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_TEMPE_ARIZONA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_COLUMBUS_OHIO" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_PORTAGE_MICHIGAN" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_GEORGETOWN_KENTUCKY" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_GREENVILLE_SOUTH_CAROLINA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_NASHVILLE_TENNESSEE" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_WASHINGTON_DISTRICT_OF_COLUMBIA" + // "PROVIDER_US_PUBLIC_MUNICIPALITY_BOULDER_COLORADO" + // "PROVIDER_NZ_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_NZ_PUBLIC_MUNICIPALITY_ENVIRONMENT_BAY" + // "PROVIDER_PL_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_PL_PUBLIC_MUNICIPALITY_BIELSKO_BIALA" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_FRANKFURT" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_HAMBURG" + // "PROVIDER_DE_PUBLIC_MUNICIPALITY_KARLSRUHE" + // "PROVIDER_PT_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_PT_PUBLIC_MUNICIPALITY_SANTA_CRUZ" + // "PROVIDER_AT_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_AT_PUBLIC_MUNICIPALITY_KLAGENFURT" + // "PROVIDER_AT_PUBLIC_MUNICIPALITY_LINZ" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_AZKOITIA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_BEASAIN" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_GIRONA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_SAN_SEBASTIAN" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_CATALUNYA" + // "PROVIDER_ES_PUBLIC_MUNICIPALITY_HONDARRIBIA" + // "PROVIDER_AU_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_AU_PUBLIC_MUNICIPALITY_LAUNCESTON_TASMANIA" + // "PROVIDER_IS_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_IS_PUBLIC_MUNICIPALITY_REYKJAVIK" + // "PROVIDER_NL_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_NL_PUBLIC_MUNICIPALITY_AMELSTEVEEN" + // "PROVIDER_BE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_BE_PUBLIC_MUNICIPALITY_ANTWERPEN" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_FREDERICTON_NEW_BRUNSWICK" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_KAMLOOPS_BRITISH_COLUMBIA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_NANAIMO_BRITISH_COLUMBIA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_BANFF_ALBERTA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_CALGARY_ALBERTA" + // "PROVIDER_CA_PUBLIC_MUNICIPALITY_TORONTO_ONTARIO" + // "PROVIDER_SE_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_SE_PUBLIC_MUNICIPALITY_UMEA" + // "PROVIDER_UA_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_UA_PUBLIC_MUNICIPALITY_KHARKIV" + // "PROVIDER_OTHER_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_OTHER_PUBLIC_MUNICIPALITY_AQUA_CALIENTE_CAHUILLA_INDIANS" + // "PROVIDER_FR_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_FR_PUBLIC_MUNICIPALITY_PONT_AUDEMER" + // "PROVIDER_FR_PUBLIC_MUNICIPALITY_BORDEAUX" + // "PROVIDER_SG_PUBLIC_MUNICIPALITY" + // "PROVIDER_BR_PUBLIC_MUNICIPALITY" - ABSTRACT + // "PROVIDER_BR_PUBLIC_MUNICIPALITY_RIO_DE_JANEIRO" + // "PROVIDER_MAPCUBE" + // "PROVIDER_3D_REALITYMAPS" + // "PROVIDER_DEUTSCHES_ZENTRUM_FUR_LUFT_UND_RAUMFAHRT" + // "PROVIDER_3D_CITIES_SOCIEDADE_ANONIMA" + // "PROVIDER_DISNEY" + // "PROVIDER_CYBERCITY" + // "PROVIDER_PRECISION_LIGHTWORKS_MODELWORKS" + // "PROVIDER_VIRTUAL_HUNGARY_LIMITED" + // "PROVIDER_VIRTUEL_CITY" + // "PROVIDER_SCREAMPOINT_INTERNATIONAL" + // "PROVIDER_AGENTSCHAP_VOOR_GEOGRAFISCHE_INFORMATIE_VLAANDEREN" + // "PROVIDER_FR_GOVERNMENT" - ABSTRACT + // "PROVIDER_FR_INSTITUT_GEOGRAPHIQUE_NATIONAL" + // "PROVIDER_FR_CADASTRE" + // "PROVIDER_DIADIEM" + // "PROVIDER_THE_WEATHER_CHANNEL" + // "PROVIDER_COWI" + // "PROVIDER_FALKPLAN_ANDES" + // "PROVIDER_NL_GOVERNMENT" - ABSTRACT + // "PROVIDER_NL_KADASTER" + // "PROVIDER_NL_BOARD_OF_TOURISM_AND_CONVENTIONS" + // "PROVIDER_DIGITAL_MAP_PRODUCTS" + // "PROVIDER_SILICE_DIGITAL" + // "PROVIDER_TYDAC" + // "PROVIDER_ALBRECHT_GOLF" + // "PROVIDER_HEALTH_CH" + // "PROVIDER_VISITDENMARK" + // "PROVIDER_FLYHERE" + // "PROVIDER_DIGITAL_DATA_SERVICES" + // "PROVIDER_MECOMO" + // "PROVIDER_ZA_GOVERNMENT" - ABSTRACT + // "PROVIDER_ZA_RURAL_DEVELOPMENT_LAND_REFORM" + // "PROVIDER_SENSIS" + // "PROVIDER_JJCONNECT" + // "PROVIDER_OPPLYSNINGEN" + // "PROVIDER_TELLUS" + // "PROVIDER_IQONIA" + // "PROVIDER_BE_GOVERNMENT" - ABSTRACT + // "PROVIDER_BE_NATIONAAL_GEOGRAFISCH_INSTITUUT" + // "PROVIDER_BE_BRUSSELS_MOBILITY" + // "PROVIDER_YELLOWMAP_AG" + // "PROVIDER_STIFTUNG_GESUNDHEIT" + // "PROVIDER_GIATA" + // "PROVIDER_SANPARKS" + // "PROVIDER_CENTRE_DINFORMATIQUE_POUR_LA_REGION_BRUXELLOISE" + // "PROVIDER_INFOPORTUGAL" + // "PROVIDER_NEGOCIOS_DE_TELECOMUNICACOES_E_SISTEMAS_DE_INFORMACAO" + // "PROVIDER_COLLINS_BARTHOLOMEW" + // "PROVIDER_PROTECT_PLANET_OCEAN" + // "PROVIDER_KARTTAKESKUS" + // "PROVIDER_FI_GOVERNMENT" - ABSTRACT + // "PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION" + // "PROVIDER_FI_NATIONAL_LAND_SURVEY" + // "PROVIDER_FI_STATISTICS_FINLAND" + // "PROVIDER_GB_GOVERNMENT" - ABSTRACT + // "PROVIDER_GB_ORDNANCE_SURVEY" + // "PROVIDER_NATURAL_ENGLAND" + // "PROVIDER_WELSH_GOVERNMENT" + // "PROVIDER_GB_OFFICE_FOR_NATIONAL_STATISTICS" + // "PROVIDER_EPSILON" + // "PROVIDER_PARTNER_FRONT_END" + // "PROVIDER_CARTESIA" + // "PROVIDER_SE_GOVERNMENT" - ABSTRACT + // "PROVIDER_SE_TRAFIKVERKET" + // "PROVIDER_SE_NATURVARDSVERKET" + // "PROVIDER_IE_GOVERNMENT" - ABSTRACT + // "PROVIDER_IE_ORDNANCE_SURVEY_IRELAND" + // "PROVIDER_LU_GOVERNMENT" - ABSTRACT + // "PROVIDER_LU_P_AND_T_LUXEMBOURG" + // "PROVIDER_LU_ADMINISTRATION_DU_CADASTRE_ET_DE_LA_TOPOGRAPHIE" + // "PROVIDER_LU_NATIONAL_TOURIST_OFFICE" + // "PROVIDER_MAPFLOW" + // "PROVIDER_TKARTOR" + // "PROVIDER_JUMPSTART" + // "PROVIDER_EPTISA" + // "PROVIDER_MC_GOVERNMENT" - ABSTRACT + // "PROVIDER_MC_PRINCIPAUTE_DE_MONACO" + // "PROVIDER_MONOLIT" + // "PROVIDER_ENVIRONMENTAL_SYSTEMS_RESEARCH_INSTITUTE" + // "PROVIDER_MODIS" + // "PROVIDER_GEOX" + // "PROVIDER_GEODIRECTORY" + // "PROVIDER_GEOPLAN" + // "PROVIDER_INFODIREKT" + // "PROVIDER_GEOGLOBAL" + // "PROVIDER_DEUTSCHE_POST" + // "PROVIDER_TRACASA" + // "PROVIDER_CORREOS" + // "PROVIDER_ES_GOVERNMENT" - ABSTRACT + // "PROVIDER_ES_CENTRO_NACIONAL_DE_INFORMACION_GEOGRAFICA" + // "PROVIDER_EDIMAP" + // "PROVIDER_VERIZON" + // "PROVIDER_NATIONAL_GEOGRAPHIC_MAPS" + // "PROVIDER_PROMAPS" + // "PROVIDER_CONSODATA" + // "PROVIDER_DE_AGOSTINI" + // "PROVIDER_FEDERPARCHI" + // "PROVIDER_NAVIGO" + // "PROVIDER_ITALIAMAPPE" + // "PROVIDER_CZECOT" + // "PROVIDER_NATURAL_EARTH" + // "PROVIDER_REGIO" + // "PROVIDER_SHIPWRECK_CENTRAL" + // "PROVIDER_RUTGERS_STATE_UNIVERSITY" + // "PROVIDER_TWINICE" + // "PROVIDER_NORTHERN_IRELAND_TOURIST_BOARD" + // "PROVIDER_INFOGROUP" + // "PROVIDER_TNET" + // "PROVIDER_CTT_CORREIOS_DE_PORTUGAL" + // "PROVIDER_EUROPARC" + // "PROVIDER_IUPPITER" + // "PROVIDER_MICHAEL_BAUER_INTERNATIONAL" + // "PROVIDER_LEPTON" + // "PROVIDER_MAPPOINT" + // "PROVIDER_GEODATA" + // "PROVIDER_RU_GOVERNMENT" - ABSTRACT + // "PROVIDER_RU_FNS_KLADR" + // "PROVIDER_BR_GOVERNMENT" - ABSTRACT + // + // "PROVIDER_BR_INSTITUTO_BRASILEIRO_DO_MEIO_AMBIENTE_E_DOS_RECURSOS_NATU + // RAIS_RENOVAVEIS" - IBAMA + // "PROVIDER_BR_MINISTERIO_DO_MEIO_AMBIENTE" - MMA + // "PROVIDER_BR_AGENCIA_NACIONAL_DE_AGUAS" - ANA + // "PROVIDER_BR_INSTITUTO_BRASILEIRO_DE_GEOGRAFIA_E_ESTATISTICA" - + // IBGE + // "PROVIDER_BR_FUNDACAO_NACIONAL_DO_INDIO" - FUNAI + // + // "PROVIDER_BR_DEPARTAMENTO_NACIONAL_DE_INFRAESTRUTURA_DE_TRANSPORTES" + // - DNIT + // "PROVIDER_AZAVEA" + // "PROVIDER_NORTHSTAR" + // "PROVIDER_COMMEDI" + // "PROVIDER_NEXUS_GEOGRAFICS" + // "PROVIDER_INFOERA" + // "PROVIDER_AD_GOVERNMENT" - ABSTRACT + // "PROVIDER_AD_AREA_DE_CARTOGRAFIA" - Department of Cartography + // "PROVIDER_MAXXIMA" + // "PROVIDER_SI_GOVERNMENT" - ABSTRACT + // "PROVIDER_SI_AGENCY_FOR_ENVIRONMENT" + // "PROVIDER_TRANSPORT_HI_TECH_CONSULTANTS" + // "PROVIDER_L1_TECHNOLOGIES" + // "PROVIDER_TELEMEDIA" + // "PROVIDER_CDCOM_PROGOROD" + // "PROVIDER_MIT_CITYGUIDE" + // "PROVIDER_SUNCART" + // "PROVIDER_MICROMAPPER" + // "PROVIDER_RICHI" + // "PROVIDER_FORUM44" + // "PROVIDER_SEAT" + // "PROVIDER_VALASSIS" + // "PROVIDER_NAVICOM" + // "PROVIDER_COLTRACK" + // "PROVIDER_PSMA_AUSTRALIA" + // "PROVIDER_PT_DUTA_ASTAKONA_GIRINDA" + // "PROVIDER_CA_GOVERNMENT" - ABSTRACT + // "PROVIDER_STATISTICS_CANADA" + // "PROVIDER_TOCTOC" + // "PROVIDER_RMSI" + // "PROVIDER_TRUE_TECHNOLOGY" + // "PROVIDER_INCREMENT_P_CORPORATION" + // "PROVIDER_GOJAVAS" + // "PROVIDER_GEOINFORMATION_GROUP" + // "PROVIDER_CYBERSOFT" + // "PROVIDER_TSENTR_EFFEKTIVNYKH_TEKHNOLOGIY" - 0x12 and 0x120 are not + // to be used. OOO CET + // "PROVIDER_EE_GOVERNMENT" - ABSTRACT + // "PROVIDER_EE_MAA_AMET" - Estonian Land Board + // "PROVIDER_GASBUDDY" + // "PROVIDER_DK_GOVERNMENT" - ABSTRACT + // "PROVIDER_DK_GEODATASTYRELSEN" - Danish Geodata Agency + // "PROVIDER_MURCIA_REGION_GOVERNMENT" + // "PROVIDER_CORREIOS" + // "PROVIDER_WEST_WORLD_MEDIA" + // "PROVIDER_INTERNATIONAL_MAPPING_ASSOCIATION" + // "PROVIDER_MEDICARE" + // "PROVIDER_POLARIS" + // "PROVIDER_TW_GOVERNMENT" - ABSTRACT + // "PROVIDER_TW_MINISTRY_OF_THE_INTERIOR_SURVEYING_AND_MAPPING_CENTER" + // "PROVIDER_NORDECA" + // "PROVIDER_AFRIMAPPING" + // "PROVIDER_OVERDRIVE" + // "PROVIDER_PROVIDER_NETWORK_DIRECTORIES" + // "PROVIDER_BR_MINISTERIO_DA_SAUDE" + // "PROVIDER_DIGITAL_EGYPT" + // "PROVIDER_INRIX" + // "PROVIDER_ARPINDO" + // "PROVIDER_IT_GOVERNMENT" - ABSTRACT + // "PROVIDER_ISTITUTO_GEOGRAFICO_MILITARE" + // "PROVIDER_EAST_END_GROUP" + // "PROVIDER_INGEOLAN" + // "PROVIDER_SEMACONNECT" + // "PROVIDER_BLINK" + // "PROVIDER_EVGO" + // "PROVIDER_CHARGEPOINT" + // "PROVIDER_TPL_TRAKKER" + // "PROVIDER_OI" + // "PROVIDER_MAPARADAR" + // "PROVIDER_SINGAPORE_POST" + // "PROVIDER_CHARGEMASTER" + // "PROVIDER_TESLA" + // "PROVIDER_VISICOM" + // "PROVIDER_GEOLYSIS" + // "PROVIDER_ZEPHEIRA" + // "PROVIDER_HUBJECT" + // "PROVIDER_PODPOINT" + // "PROVIDER_CHARGEFOX" + // "PROVIDER_KR_GOVERNMENT" - ABSTRACT + // "PROVIDER_KR_MOLIT" - Ministry of land, infrastructure and + // transport, 국토교통부, Guktogyotongbu + // "PROVIDER_KR_MINISTRY_OF_THE_INTERIOR_AND_SAFETY" + // "PROVIDER_CRITCHLOW" + // "PROVIDER_EIFRIG" + // "PROVIDER_GIREVE" + // "PROVIDER_CN_NAVINFO" + // "PROVIDER_JAPAN_CHARGE_NETWORK" + // "PROVIDER_NOBIL" + // "PROVIDER_INDIA_BANKS" + // "PROVIDER_INDONESIA_ELECTION_KPU" + // "PROVIDER_CAREERS360" + // "PROVIDER_SOURCE_LONDON" + // "PROVIDER_EVBOX" + // "PROVIDER_JP_GOVERNMENT" - ABSTRACT + // "PROVIDER_JP_MINISTRY_OF_THE_ENVIRONMENT" + // "PROVIDER_YUMYUM" + // "PROVIDER_HWW_AUSTRALIA" + // "PROVIDER_CINERGY" + // "PROVIDER_MTIME" + // "PROVIDER_KULTUNAUT" + // "PROVIDER_BLITZ" + // "PROVIDER_PIA" + // "PROVIDER_INTERPARK" + // "PROVIDER_CINEMA_ONLINE" + // "PROVIDER_BELBIOS" + // "PROVIDER_MOVIESEER" + // "PROVIDER_SODAMEDYA" + // "PROVIDER_ATMOVIES" + // "PROVIDER_HOTELBEDS" + // "PROVIDER_VERICRED" + // "PROVIDER_CIRRANTIC" + // "PROVIDER_GOGO_LABS" + // "PROVIDER_ELECTRIFY_AMERICA" + // "PROVIDER_CMS_MPPUF" + // "PROVIDER_DIGIROAD" - Use PROVIDER_FI_NATIONAL_ROAD_ADMINISTRATION. + // "PROVIDER_KONTEX_GEOMATICS" + // "PROVIDER_NZ_GOVERNMENT" - ABSTRACT + // "PROVIDER_NZ_LINZ" - Land Information New Zealand + // "PROVIDER_NZ_DOC" - NZ Department of Conservation + // "PROVIDER_FASTNED" + // "PROVIDER_DESTINY_CS" + // "PROVIDER_IONITY" + // "PROVIDER_EV_CONNECT" + // "PROVIDER_PANPAGES" + // "PROVIDER_ETECNIC" + // "PROVIDER_VOLTA" + // "PROVIDER_NISSAN_MEXICO" + // "PROVIDER_BMW_GROUP_LATIN_AMERICA" + // "PROVIDER_FEDERAL_ELECTRICITY_COMMISSION_MEXICO" + // "PROVIDER_VOLVO_CARS_BRASIL" + // "PROVIDER_CHARGE_AND_PARKING" + // "PROVIDER_DEDUCE_TECHNOLOGIES" + // "PROVIDER_SK_TELECOM" + // "PROVIDER_ECO_MOVEMENT" + // "PROVIDER_GOOGLE_GMS" + // "PROVIDER_EASYWAY" + // "PROVIDER_PHYSICIAN_COMPARE" + // "PROVIDER_HOSPITAL_COMPARE" + // "PROVIDER_ENDOLLA_BARCELONA" + // "PROVIDER_BE_CHARGE" + // "PROVIDER_ONE_NETWORK" + // "PROVIDER_CARENAV_DUPLEX" + // "PROVIDER_CARENAV_POI" - UMBRELLA + // "PROVIDER_IN_GOVERNMENT" - ABSTRACT + // "PROVIDER_SURVEY_OF_INDIA" + // "PROVIDER_E_ON" + // "PROVIDER_ELECTRIFY_CANADA" + // "PROVIDER_GRIDCARS" + // "PROVIDER_DRIVECO" + // "PROVIDER_GREEN_ACTION_STUDIOS" + // "PROVIDER_GREEN_ACTION_STUDIO" + // "PROVIDER_EVINY" + // "PROVIDER_MASTERCARD" + // "PROVIDER_VATTENFALL" - Note: Next available value is 0x126C. + Provider string `json:"provider,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dataset") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dataset") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreProvenanceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreProvenanceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRankDetailsProto: 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: +// http://wiki.corp.google.com/twiki/bin/view/Main/OysterRank +type GeostoreRankDetailsProto struct { + // Signal: A list of signals. Each one is extracted separately by a + // SignalExtractor. + Signal []*GeostoreRankSignalProto `json:"signal,omitempty"` + + // SignalMixerType: The signal mixer that was used to calculate the + // rank. + // + // Possible values: + // "MIXER_INVALID" + // "MIXER_MISSING" + // "MIXER_ADDRESS_AREA" + // "MIXER_ROUTE_SEGMENT_INTERSECTION" + // "MIXER_POLITICAL_EUROPA" + // "MIXER_POLITICAL_AREA" + // "MIXER_POLITICAL" + // "MIXER_COUNTRY_EUROPA" + // "MIXER_COUNTRY_AREA" + // "MIXER_COUNTRY" + // "MIXER_LOCALITY" + // "MIXER_LOCALITY_GEOWIKI" - DEPRECATED + // "MIXER_LOCALITY_EUROPA" - DEPRECATED + // "MIXER_LOCALITY_AREA" - DEPRECATED + // "MIXER_RIVER" + // "MIXER_LENGTH_WEBSCORE" + // "MIXER_SKENERGY" + // "MIXER_GEOCENTRE_GEOCODED_ADDRESS" - DEPRECATED + // "MIXER_PLACERANK" + // "MIXER_TRANSIT" + // "MIXER_LOCALITY_EUROPA_AREA" - DEPRECATED + // "MIXER_WEBSCORE" + // "MIXER_LOCALITY_MAPDATA_SCIENCES" - DEPRECATED + // "MIXER_SUBLOCALITY_MAPDATA_SCIENCES" - DEPRECATED + // "MIXER_PEAK" + // "MIXER_BUILDING" + // "MIXER_RESERVATION" + // "MIXER_AIRPORT" + // "MIXER_AREA" + // "MIXER_MANAGER" - These should never be present on a feature. + // "MIXER_TEST_1" + // "MIXER_TEST_2" + // "MIXER_TEST_3" + // "MIXER_TEST_4" + // "MIXER_TEST_5" + SignalMixerType string `json:"signalMixerType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Signal") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Signal") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRankDetailsProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRankDetailsProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRankSignalProto: 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. +type GeostoreRankSignalProto struct { + // Metadata: Field-level metadata for this signal. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Rank: A value in the range [0, 1] estimating Oyster Rank according to + // this signal. Non-provider specific signals (e.g. SIGNAL_POPULATION) + // are interpreted by some common code in the ranking pipeline. Because + // of that, data providers should leave this field empty when setting + // such signals (so that the rank assignment can be uniform across all + // features regardless of contributing data providers). On the other + // hand, provider-specific signals (e.g. SIGNAL_ZENRIN_CITY_CATEGORY) + // are required to specify the rank field (it is not optional for them). + // That is because no code other than that of the provider itself will + // be able to fill in a meaningful value later on. We don't want clients + // to be reading from the raw_scalar / raw_string fields to interpret + // the data. + Rank float64 `json:"rank,omitempty"` + + // RawScalar: The raw scalar value that was used to compute 'rank' + // above. The meaning of this attribute changes depending on the signal + // type. + RawScalar float64 `json:"rawScalar,omitempty"` + + // RawString: The raw string value that was used to compute 'rank' + // above. The meaning of this attribute changes depending on the signal + // type. + RawString string `json:"rawString,omitempty"` + + // Possible values: + // "SIGNAL_UNKNOWN" - This is reserved as a sentinel value. It should + // never be used. An unknown signal. + // "SIGNAL_LENGTH" - Magnitude for one-dimensional features like + // segments. + // "SIGNAL_AREA" - Magnitude for features with polygonal geometry. + // Derived from the number of other features that use this feature as an + // address component. + // "SIGNAL_ADDRESS" - DEPRECATED Derived from the number of local + // business listings that, once reverse-geocoded, have this feature as + // an address component. + // "SIGNAL_LISTING" - DEPRECATED + // "SIGNAL_ROAD_PRIORITY" - This signal will be set on all routes and + // is derived by the value of the priority of all segments composing the + // route. It is a "derived" signal instead of a canonical one because it + // is not only about inheriting some child segment's priority. We + // actually take into consideration the priorities of all children + // segments to come up with a raw value for this signal. Derived from + // the number of POI that use this feature as an address component. + // "SIGNAL_POI_COUNT" - DEPRECATED + // "SIGNAL_WEBSCORE" - This signal derived from the number of + // documents in DocJoin, which contains keywords of the source feature. + // For each raw feature, we extract keywords from the feature's name and + // address. We search the keywords in DocJoin (now only 4B) to get the + // number of webpages which contains all the keywords of the feature, + // eg, for Quanjude in Beijing which is a famous restaurant in China, we + // consider Beijing and Quanjude as its keywords, the page containing + // both Beijing and Quanjude will be counted in. The number will be + // mapped by logarithm function into [0, 1]. This signal is based on a + // simple assumption: the more the name appears in webpage, the more + // famous it is. These signals are calculated by the Path Radius + // algorithm, using Pathfinder to figure out in how big a neighborhood + // this segment is used as a thoroughfare. The popularity is simply the + // fraction of all paths that use this segment. + // "SIGNAL_PATHRADIUS_LENGTH_METERS" - DEPRECATED + // "SIGNAL_PATHRADIUS_LENGTH_SEGMENTS" - DEPRECATED + // "SIGNAL_PATHRADIUS_POPULARITY" - DEPRECATED + // "SIGNAL_PEAK_ELEVATION_PROMINENCE" - Signal based on elevation and + // prominence values of peaks. + // "SIGNAL_ROAD_SEGMENT_COUNT" - Signal based on the number of road + // segments referring a feature. The number could be obtained by either + // looking RELATION_CONTAINED_BY relation or counting children of the + // feature. + // "SIGNAL_POI_SCORE" - Signal based on placerank values of + // establishments that use this feature as an address or located within + // it (as determined by relations). + // "SIGNAL_ATTRACTIONS_SCORE" - Signal based on placerank values of + // (tourist) attraction establishments that are related to this feature + // through containment. + // "SIGNAL_HAND_RANKED_LOCALITY_PROMINENCE" - Signal indicating a city + // of particular prominence independent of its other attributes. + // Currently only implemented for Japanese localities, primarily based + // on official government city statuses. + // "SIGNAL_POPULATION" + // "SIGNAL_GDP" + // "SIGNAL_EUROPA_CLASS" - NOTE(jdkim): All rank signals below are + // provider specific ones, so we use this enum value to identify the + // enum range for provider specific signals. + // "SIGNAL_RMF_SOURCE_RANK" - DEPRECATED + // "SIGNAL_MDS_SOURCE_RANK" - DEPRECATED + // "SIGNAL_MULTINET_SOURCE_RANK" - DEPRECATED + // "SIGNAL_LOCALXML_MANUAL_RANK" - DEPRECATED + // "SIGNAL_TRANSIT_LINE" - DEPRECATED + // "SIGNAL_TRANSIT_TRAIN_DEPARTURE_COUNT" + // "SIGNAL_TRANSIT_METRO_DEPARTURE_COUNT" + // "SIGNAL_TRANSIT_BUS_DEPARTURE_COUNT" + // "SIGNAL_TRANSIT_OTHER_DEPARTURE_COUNT" + // "SIGNAL_TRANSIT_TRAIN_LINE_COUNT" + // "SIGNAL_TRANSIT_METRO_LINE_COUNT" + // "SIGNAL_TRANSIT_BUS_LINE_COUNT" + // "SIGNAL_TRANSIT_OTHER_LINE_COUNT" + // "SIGNAL_TRANSIT_STATION_LOCAL_RANK" - Score of a particular station + // in relation to the stations near it. E.g., when displaying list of + // nearby stations we could prioritize the higher ranked ones. + // "SIGNAL_TRANSIT_STATION_GLOBAL_RANK" - Score of a particular + // station in relation to all the stations globally. This is valuable + // for data cleanups, modeling, and proactive checks that could be + // targeted at the "Top Stations" to ensure high impact. + // "SIGNAL_ORION_LEVEL" + // "SIGNAL_GEOCENTRE_ADDRESS_RANK" - DEPRECATED + // "SIGNAL_GOOGLE_3DWAREHOUSE_RANK" - DEPRECATED + // "SIGNAL_SKENERGY_CATEGORY" - Rank derived from feature popularity + // asserted by users. Higher rank values are almost always moderated to + // verify accuracy, hence reliable. + // "SIGNAL_GOOGLE_GEOWIKI_USER_RANK" - DEPRECATED + // "SIGNAL_WIKIPEDIA_ARTICLES" - These are primarily used for + // computing Placerank, which is now signal 3200. + // "SIGNAL_WIKIPEDIA_ARTICLES_IN_OFFICIAL_LANGUAGE" - DEPRECATED + // "SIGNAL_KML_PLACEMARKS" + // "SIGNAL_KML_SOURCES" + // "SIGNAL_PANORAMIO_USERS" - DEPRECATED + // "SIGNAL_GOOGLE_MAPSHOP_USERS" + // "SIGNAL_GOOGLE_LOCALSEARCH_DIRECTORY_INFOS" - DEPRECATED + // "SIGNAL_GOOGLE_MAPS_NAVBOOST_CLICKS" - DEPRECATED + // "SIGNAL_GOOGLE_MAPS_NAVBOOST_CLICKTHROUGH_RATE" - DEPRECATED + // "SIGNAL_GOOGLE_RBL_CLICKS" + // "SIGNAL_GOOGLE_RBL_CLICK_FRACTION" + // "SIGNAL_GOOGLE_AUTHORITYPAGE_PAGERANK" - DEPRECATED + // "SIGNAL_GOOGLE_AUTHORITYPAGE_PAGERANK_CONFIDENCE" + // "SIGNAL_GOOGLE_REVIEWS" + // "SIGNAL_GOOGLE_WEB_QUERYVOL" + // "SIGNAL_GOOGLE_WEBPAGE_REFERENCE_DOMAINS" - DEPRECATED + // "SIGNAL_GOOGLE_LISTING_IMPRESSIONS" + // "SIGNAL_GOOGLE_INFOWINDOW_VIEWS" + // "SIGNAL_GOOGLE_DIRECTION_REQUESTS" + // "SIGNAL_GOOGLE_HOMEPAGE_CLICKS" + // "SIGNAL_GOOGLE_CHAIN_STORES" + // "SIGNAL_FLICKR_USERS" - DEPRECATED + // "SIGNAL_GOOGLE_LEANBACK_TOURS" + // "SIGNAL_GOOGLE_LOCALSEARCH_PLACERANK" + // "SIGNAL_WIKIPEDIA_WIKI_SCORE" - Signal based on WIKI_SCORE, which + // is brought by DataSourceProvider::PROVIDER_WIKIPEDIA. + // "SIGNAL_ZENRIN_CITY_CATEGORY" - DEPRECATED Signal for buildings in + // Japan. This signal is a scale of the map this building label should + // be rendered. + // "SIGNAL_ZENRIN_BUILDING_CLASS" - DEPRECATED Signal for peaks in + // Japan. This signal is a scale of the map this peak label should be + // rendered. + // "SIGNAL_ZENRIN_PEAK_CLASS" - DEPRECATED + // "SIGNAL_PLACE_INSIGHTS_LANDMARK" - Place Insights landmarkiness + // fundamental aspect. This score combines the popularity and prominence + // aspects below with the Kerouac tourist score. Details: + // go/plank-landmark + // "SIGNAL_PLACE_INSIGHTS_POPULARITY" - Place Insights popularity + // fundamental aspect. This score combines physical visits (Hulk) and + // direction searches. Details: go/plank-popularity + // "SIGNAL_PLACE_INSIGHTS_PROMINENCE" - Place Insights prominence + // fundamental aspect. This score is based on WebRef and the number of + // photos of a place. Details: go/plank-prominence DEPRECATED: No longer + // populated, because the data sources were deprecated. Not yet marked + // as deprecated because some features might still contain the data. + // "SIGNAL_PLACE_INSIGHTS_APPROACHABILITY" - Place Insights + // approachability fundamental aspect. This score indicates whether + // users can interact with a place without appointment. It is computed + // from the GCIDs of the place. Details: go/plank-approachability + // "SIGNAL_PLACE_INSIGHTS_TOTAL_ROAD_SEGMENT_USAGE" - Number of times + // a user drives the entire length of the segment according to snapped + // GLS tracks. This is obtained by aggregating the snapped GLS data + // generated by the traffic team. Design document: + // go/aggregated-road-traffic-mapfacts + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRankSignalProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRankSignalProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreRankSignalProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreRankSignalProto + var s1 struct { + Rank gensupport.JSONFloat64 `json:"rank"` + RawScalar gensupport.JSONFloat64 `json:"rawScalar"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Rank = float64(s1.Rank) + s.RawScalar = float64(s1.RawScalar) + return nil +} + +// GeostoreRawDataProto: 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. +type GeostoreRawDataProto struct { + // Key: The key associated with this data item. For source data in shape + // file format, this will typically be a column name. Keys need to be + // unique with respect to a particular data source (see + // DataSourceProto), but they do not need to be globally unique. You can + // look up the documentation for a key (e.g. a longer label and + // description) by following the source_id link of the parent + // SourceInfoProto, which takes you to a TYPE_DATA_SOURCE feature, and + // then looking up the corresponding RawMetadataProto object for this + // key in that feature's optional data_source field. + Key string `json:"key,omitempty"` + + // ValueString: All data items are represented as strings, the logic + // being that it is easy to convert other data types to strings, and + // there is no need to access this data efficiently. + ValueString string `json:"valueString,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRawDataProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRawDataProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreRawMetadataProto struct { + // ConflationMethod: 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. + // + // Possible values: + // "CONFLATION_PICK_FIRST_VALUE" - Simply picks first value from the + // set of values to be conflated together. If target feature already has + // a value, then that is the value kept. + // "CONFLATION_UNION_CSV" - Parses all values as a comma-separated + // lists and takes the union of all elements from all lists (e.g. no + // duplicates) to create a new comma- separated list. + // "CONFLATION_SUM" - Parses all values as int32s and outputs their + // sum as the final value. + ConflationMethod string `json:"conflationMethod,omitempty"` + + // Description: Self-contained documentation about what this field + // represents and how its values are encoded. + Description string `json:"description,omitempty"` + + // Key: The key being described. + Key string `json:"key,omitempty"` + + // Label: A longer, human-readable name associated with this key. The + // label might be used in a data explorer tool, for example. + Label string `json:"label,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ConflationMethod") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ConflationMethod") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRawMetadataProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRawMetadataProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRectProto: 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. +type GeostoreRectProto struct { + Hi *GeostorePointProto `json:"hi,omitempty"` + + Lo *GeostorePointProto `json:"lo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Hi") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Hi") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRectProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRectProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRegulatedAreaProto: A collection of information that applies +// to a polygonal area. +type GeostoreRegulatedAreaProto struct { + // Restriction: The set of restrictions that apply to a zone. These + // restrictions may limit the routability of every segment contained + // within the defined feature.polygon. Repeated restrictions are treated + // collectively as an OR meaning that segments in the zone are only + // routable if none of the restrictions apply. If any segments within + // the defined polygon should not have these restrictions applied, they + // must list this regulated area's feature id in their + // feature.exempt_regulated_area field. + Restriction []*GeostoreRestrictionProto `json:"restriction,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Restriction") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Restriction") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRegulatedAreaProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRegulatedAreaProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRelationProto: 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. +type GeostoreRelationProto struct { + // Metadata: Field-level metadata for this relation. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // OtherFeatureCountryCode: If and only if the other feature is of + // TYPE_COUNTRY, the 2-letter country code. This is the + // FLAG_COUNTRY_CODE_2 name of the country component. + OtherFeatureCountryCode string `json:"otherFeatureCountryCode,omitempty"` + + // OtherFeatureId: The feature ID of the feature to which we're + // relating. WARNING: the related feature does not necessarily have a + // bound that encloses this feature, so in a bucketing MapReduce, you + // may not be able to follow all relationships. Relations that use + // strong references are annotated above but you can also refer to + // IsRelationStrong() in geostore/base/public/relation.h. + OtherFeatureId *GeostoreFeatureIdProto `json:"otherFeatureId,omitempty"` + + // OtherFeatureName: RESERVED + OtherFeatureName []*GeostoreNameProto `json:"otherFeatureName,omitempty"` + + // OtherFeatureTerritorialAdministrator: If and only if the other + // feature is of TYPE_DISPUTED_AREA, the territorial administrator found + // in its GeopoliticalAttachmentProto.administered_by field, if any. + // Since this string is copied exactly, it may be a 2-letter country + // code or another type of descriptive string. + OtherFeatureTerritorialAdministrator string `json:"otherFeatureTerritorialAdministrator,omitempty"` + + // OtherFeatureType: The type of the feature to which we're relating. + OtherFeatureType int64 `json:"otherFeatureType,omitempty"` + + // OverlapFraction: ** DEPRECATED ** If relation is exactly + // RELATION_OVERLAPS but not any of its subcategories, overlap_fraction + // contains an estimate of the fraction of the geometry of this feature + // that intersects with the other feature, ranging from 0.0 to 1.0. Note + // that this is a rough estimate based on cell coverings, and may not be + // very accurate. In particular, values of 0.0 and 1.0 are possible, + // even though in principle they should not be. + OverlapFraction float64 `json:"overlapFraction,omitempty"` + + // Relation: The relationship of the feature that contains this + // RelationProto to the feature other_feature_id. Note the + // relation_is_reversed field below. Some relations imply weak + // references, other strong ones. Strong references are annotated above + // but you can also refer to IsRelationStrong() in + // geostore/base/public/relation.h. + // + // Possible values: + // "RELATION_OVERLAPS" - In the real world, this feature's geographic + // extent intersects the other feature's, but does not contain it. Note + // that the presence or absence of a relation may contradict the actual + // geometry in the FeatureProto. In these cases, the client should + // assume that the geometry of the feature is imprecise. Certain pairs + // of features are considered disjoint even if the geometries overlap. + // Allowed source types: - TYPE_ANY (but with geometry or children) + // Allowed destination types: - TYPE_ANY (but with polygonal geometry) + // "RELATION_CONTAINED_BY" - In the real world, the geographical + // extent of the feature is contained by that of the other feature. Note + // that this relation implies overlap. As with overlap, the + // frame-of-reference is the real world, not necessarily the (imprecise) + // geometry in the FeatureProtos. There may be other semantic rules that + // govern the assignment of this relation. Two features cannot contain + // each other - instead they will have a RELATION_EQUAL_TO relation (see + // below). strong reference + // "RELATION_EQUAL_TO" - In the real world, this feature's geographic + // extent is exactly equal to the other feature's geographic extent. + // Note that this relation implies containment and overlap. + // "RELATION_POLITICAL_DEPRECATED" - DEPRECATED + // "RELATION_CAPITAL_OF" - This feature is the capital of the other + // feature. Allowed source types: - TYPE_POLITICAL Allowed destination + // types: - TYPE_POLITICAL (of higher political level) strong reference + // "RELATION_DISAMBIGUATED_BY" - ABSTRACT, RESERVED + // "RELATION_NEIGHBOR_OF" - RESERVED + // "RELATION_OPPOSITE_TO" - RESERVED + // "RELATION_NEXT_TO" - RESERVED + // "RELATION_RIGHT_OF" - RESERVED + // "RELATION_LEFT_OF" - RESERVED + // "RELATION_BEHIND" - RESERVED + // "RELATION_IN_FRONT_OF" - RESERVED + // "RELATION_SAME_BUILDING" - RESERVED + // "RELATION_ABOVE" - RESERVED + // "RELATION_BELOW" - RESERVED + // "RELATION_NEAR" - RESERVED + // "RELATION_ORGANIZATIONALLY_PART_OF" - ABSTRACT + // "RELATION_DEPARTMENT_OF" - Used primarily to list co-existing + // departments of businesses such as universities, hospitals, department + // stores, etc. This is set from feature A to feature B when A is + // physically located within the boundaries of the compound feature + // occupied by B, AND A is a subsidiary or department of B (i.e. both + // have the same management/ownership). e.g. department -> hospital, + // department -> university Allowed source types: - + // TYPE_ESTABLISHMENT_POI Allowed destination types: - + // TYPE_ESTABLISHMENT_POI + // "RELATION_WORKS_AT" - Used to relate an individual practitioner + // (doctor, lawyer, etc.) with the business they work at (hospital, law + // firm, etc.) Allowed source types: - TYPE_ESTABLISHMENT_POI - + // TYPE_ESTABLISHMENT_SERVICE Allowed destination types: - + // TYPE_ESTABLISHMENT_POI + // "RELATION_INDEPENDENT_ESTABLISHMENT_IN" - Used primarily for the + // "mall directory" use-case, this is set from feature A to feature B + // when A is physically located within the boundaries of the compound + // feature occupied by B AND A as an entity is independent of B, i.e. A + // and B have different management/ownership. e.g. store -> mall Allowed + // source types: - TYPE_ESTABLISHMENT_POI Allowed destination types: - + // TYPE_ESTABLISHMENT_POI + // "RELATION_ON_LEVEL" - The feature that represents the level/floor + // the feature exists on. Allowed source types: - TYPE_CARTOGRAPHIC (at + // most 1 such relation) - TYPE_COMPOUND_SECTION (at most 1 such + // relation) - TYPE_ENTRANCE (at most 1 such relation) - + // TYPE_ESTABLISHMENT_POI - TYPE_INTERSECTION (at most 1 such relation) + // - TYPE_SEGMENT (at most 2 such relations) - TYPE_TERMINAL_POINT (at + // most 1 such relations) Allowed destination types: - TYPE_LEVEL strong + // reference + // "RELATION_OCCUPIES" - This feature physically occupies the other + // feature. Allowed source types: - TYPE_ESTABLISHMENT_POI Allowed + // destination types: - TYPE_COMPOUND Consumers should use the geometry + // of the target feature instead of the geometry of this feature. strong + // reference + // "RELATION_BUSINESS_LIFE_CYCLE" - ABSTRACT + // "RELATION_BUSINESS_MOVED" - e.g. “espn zone" moved from time + // square to Boston. The feature representing the business at the old + // location will refer to the one representing the business at the new + // location with this relation type. If a feature has this relation, its + // existence should show that the feature has closed and the close + // reason should be set to MOVED. Allowed source types: - + // TYPE_ESTABLISHMENT_POI Allowed destination types: - + // TYPE_ESTABLISHMENT_POI + // "RELATION_BUSINESS_REBRANDED" - e.g. "Holiday Inn" rebranded to + // "Double Tree". The feature representing "Holiday Inn" will refer to + // the feature representing "Double Tree" with this relation type. If a + // feature has this relation, its existence should show that the feature + // has closed and the close reason should be set to REBRANDED. Allowed + // source types: - TYPE_ESTABLISHMENT Allowed destination types: - + // TYPE_ESTABLISHMENT + // "RELATION_MEMBER_OF_CHAIN" - Used by specific chain + // stores/franchises to refer to their parent chain. e.g. an individual + // Walmart store is a member of the "Walmart" chain. Transit stations + // can be members of multiple chains (transit agencies). All other + // establishments can have at most one explicit RELATION_MEMBER_OF_CHAIN + // relation. Subtypes may have different requirements. + // TYPE_TRANSIT_AGENCY is a temporarily allowed destination type while + // we migrate transit stations <-> transit agencies to a new + // representation (b/197741661) Allowed source types: - + // TYPE_ESTABLISHMENT Allowed destination types: - TYPE_BUSINESS_CHAIN - + // TYPE_TRANSIT_AGENCY strong reference + // "RELATION_AUTHORIZED_DEALER_FOR_CHAIN" - Indicates that a feature + // sells merchandise for a given brand chain (e.g. Honda vehicles). + // Source currently restricted to features with gcid:car_dealer. strong + // reference + // "RELATION_SUBSIDIARY_OF" - Used by specific sub chain to refer to + // their parent chain. e.g. "Walmart Pharmacy" chain is a member of the + // "Walmart" chain. Currently this is only used by transit agencies. + // Talk to chains-eng team before using this relation type on other + // chains. A business chain can have at most one such relation. Allowed + // source types: - TYPE_BUSINESS_CHAIN Allowed destination types: - + // TYPE_BUSINESS_CHAIN strong reference + // "RELATION_PRIMARILY_OCCUPIED_BY" - Indicates which logical entity + // is the main occupant of a compound. A compound can have at most one + // such relation, and the target feature for that relation must refer + // back to the compound via a RELATION_OCCUPIES relation. Allowed source + // types: - TYPE_COMPOUND Allowed destination types: - + // TYPE_ESTABLISHMENT_POI strong reference + // "RELATION_VARIATION" - ABSTRACT, DEPRECATED + // "RELATION_HAS_VARIANT" - DEPRECATED + // "RELATION_VARIANT_OF" - DEPRECATED + // "RELATION_VARIANT_SIBLING" - DEPRECATED + // "RELATION_CLIENT_DEFINED" - RESERVED + Relation string `json:"relation,omitempty"` + + // RelationIsReversed: RESERVED + RelationIsReversed bool `json:"relationIsReversed,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // relation. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRelationProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRelationProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreRelationProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreRelationProto + var s1 struct { + OverlapFraction gensupport.JSONFloat64 `json:"overlapFraction"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.OverlapFraction = float64(s1.OverlapFraction) + return nil +} + +// GeostoreRestrictionGroupProto: 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. +type GeostoreRestrictionGroupProto struct { + // Metadata: Field-level metadata for this restriction group. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Segment: FeatureId of all segments that have a RestrictionProto + // referring back to this RestrictionGroup. + Segment []*GeostoreFeatureIdProto `json:"segment,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRestrictionGroupProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRestrictionGroupProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRestrictionProto: 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 an 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. +type GeostoreRestrictionProto struct { + // AutonomousDrivingProducts: The restriction only applies in these + // specific autonomous driving product scenarios. NOTE: This should only + // be set on restrictions with TRAVEL_AUTONOMOUS_VEHICLE travel mode. + // + // Possible values: + // "UNKNOWN" - Indicates that specific product requirements are + // unknown. It is best to assume that this applies to all autonomous + // driving scenarios. + // "HD_L4" - HD Maps Level 4 product. + // "HD_L2" - HD Maps Level 2 product. + // "ADAS" - General advanced driver assist scenario. + // "AUTO_DRIVING_EXPERIENCE" - Geo Auto Driving Experience products + // (go/dx). + AutonomousDrivingProducts []string `json:"autonomousDrivingProducts,omitempty"` + + // IntersectionGroup: Actually *required* if style=STYLE_IN_OUT, + // otherwise forbidden. Typically the intersection group type is + // artifact, but either artifact or logical groups can be used for + // STYLE_IN_OUT restrictions. + IntersectionGroup *GeostoreFeatureIdProto `json:"intersectionGroup,omitempty"` + + // Metadata: Field-level metadata for this restriction. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // RestrictionGroup: Restriction group this restriction belongs to. + RestrictionGroup *GeostoreFeatureIdProto `json:"restrictionGroup,omitempty"` + + // Schedule: When specified, restriction applies only at particular + // times (operating hours or times of the year: reversing lanes, + // seasonal roads, no left turns from 3-5pm Mon-Fri except holidays). + // Otherwise, restriction is in effect at all times. + Schedule *GeostoreTimeScheduleProto `json:"schedule,omitempty"` + + // Scope: The scope that the restriction applies to. - SCOPE_DIRECTION + // means the segment/sibling pair is restricted in the direction of the + // segment that contains this RestrictionProto. For segment/sibling + // pairs with pedestrian facilities (and thus side-of-road routing) the + // RestrictionProto restricts both facilities in the direction of the + // segment (assuming that the restriction applies to travel mode + // TRAVEL_PEDESTRIAN). - SCOPE_SIDE means the RestrictionProto applies + // only to the side of road that the containing segment represents. That + // sibling's pedestrian facility is restricted in both directions. + // Schema constraints: - SCOPE_SIDE must be set if and only if + // travel_mode == [TRAVEL_PEDESTRIAN] and the segment containing the + // restriction has PEDESTRIAN_FACILITY_PRESENT. Such restrictions must + // have no subpath. - All other restrictions must have this field set to + // SCOPE_DIRECTION (whether explicitly or implicitly). This distinction + // is necessary for cases such as pedestrian facility on one-way + // segment/sibling roads. + // + // Possible values: + // "SCOPE_DIRECTION" + // "SCOPE_SIDE" + Scope string `json:"scope,omitempty"` + + // Style: Restriction Style defines the semantics of the subpath field, + // as defined above in the documentation of subpath. + // + // Possible values: + // "STYLE_CONTIGUOUS" + // "STYLE_SINGLE" + // "STYLE_TURN" + // "STYLE_IN_OUT" + Style string `json:"style,omitempty"` + + // Subpath: "subpath" specifies the GeoStore segments that this + // restriction applies to, according to the restriction_style field + // below. Segments that are referenced by this subpath field also refer + // to this feature back via the same subpath field. For all styles of + // restriction, all segments in the subpath must have identical copies + // of the restriction. In other words, restrictions are duplicated along + // every segment in the subpath. Note that subpaths of length 1 do not + // have any purpose and are disallowed. Note that it is possible to + // represent restrictions either using STYLE_CONTIGUOUS, or depending on + // the length of the subpath, one of the more specific STYLE_SINGLE, + // STYLE_TURN, or STYLE_IN_OUT. New code should use the more specific + // alternatives if possible, as they support instant updates. For + // restriction_style == STYLE_CONTIGUOUS (the default): "subpath" can + // either be empty, for a single-segment restriction, or it specifies + // exactly the sequence of segments which this restriction applies to. + // The subpath may be used to specify a turn restriction (a subpath of + // length 2) or to prohibit more complex maneuvers. For example, when + // merging onto a road from the right-hand side it may not be possible + // to make an immediate left turn due to insufficient time to cross the + // intervening lanes or the presence of a physical barrier. This would + // be indicated by a subpath restriction of length 3 or more. For + // restriction_style == STYLE_SINGLE: The subpath field of the + // Restriction must be empty. The restriction applies only to the + // segment it is attached to. There must not be an intersection group + // specified. For restriction_style == STYLE_TURN: The subpath field of + // the Restriction must contain exactly two segments. The first is + // called the "in_segment", the second is the "out_segment". They must + // be contiguous, i.e. the end intersection of the in_segment is the + // start intersection of the out_segment. The restriction applies only + // to a direct maneuver from the in_segment to the out_segment. Other + // paths from the in_segment to the out_segment are not restricted. + // There must not be an intersection group specified. For + // restriction_style == STYLE_IN_OUT: The subpath field of the + // Restriction must contain exactly two segments. The first is called + // the "in_segment", the second is the "out_segment". Note that the two + // segments define paths, but may not actually be one. The end + // intersection of the in_segment must be in an intersection group which + // also contains the start intersection of the out_segment. The in- and + // out-segments are not required to be adjacent, but may be. Either way, + // the restriction applies to any path from the in_segment to the + // out_segment through the intersection group, not just direct turns. + // The intersection_group must be specified. Note that clients which + // read restrictions and need to know which paths are restricted by a + // given IN_OUT restriction must expand the IN_OUT restriction by + // finding all paths through the intersection group from the in_segment + // to the out_segment. + Subpath []*GeostoreFeatureIdProto `json:"subpath,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // restriction. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // TravelMode: Restriction applies only to the given travel modes. This + // field should always be set, but may be missing in old data. WARNING: + // Restrictions with no travel modes are DEPRECATED. Historically, no + // travel modes has meant "all travel modes", except they didn't really + // even mean that, because Pathfinder would use a complex set of + // heuristics to interpret the "correct" travel modes. Pathfinder + // currently (last updated August 2013) has heuristics to cope with + // incomplete data that reduce or extend application of the specified + // restrictions to pedestrians or bicycles. We are actively working to + // remove these heuristics and replace them with explicit, correct + // travel modes in the data. See b/8746491. + // + // Possible values: + // "TRAVEL_ANY" - ABSTRACT + // "TRAVEL_MOTOR_VEHICLE" + // "TRAVEL_AUTO" + // "TRAVEL_CARPOOL" + // "TRAVEL_MOTORCYCLE" + // "TRAVEL_BUS" + // "TRAVEL_TRUCK" + // "TRAVEL_DELIVERY" + // "TRAVEL_TAXI" + // "TRAVEL_EMERGENCY" + // "TRAVEL_THROUGH_TRAFFIC" + // "TRAVEL_AUTONOMOUS_VEHICLE" + // "TRAVEL_PEDESTRIAN" + // "TRAVEL_BICYCLE" + TravelMode []string `json:"travelMode,omitempty"` + + // Type: clang-format on The type of restriction. This is not a + // condition, but rather tells you what kind of restriction it is. This + // field should always be set. + // + // Possible values: + // "RESTRICTION_TRAVEL_RESTRICTED" - Travel or maneuver is prohibited + // or extremely limited. This type's value may be used for restrictions + // which do not fall into a more specific subcategory, but the effect is + // that travel or maneuver is prohibited. + // "RESTRICTION_ILLEGAL" - Travel or maneuver is prohibited due to + // traffic regulations. Includes restrictions due to explicit road + // markings. E.g., U-turns prohibited in marked intersections. NOTE: In + // the event that a restriction by regulations is enforced by a physical + // barrier, use RESTRICTION_PHYSICAL instead. + // "RESTRICTION_PHYSICAL" - A permanent physical barrier prevents + // maneuver. This restriction type may not be used for restrictions with + // empty subpaths. + // "RESTRICTION_LOGICAL" - Maneuver is prohibited based on logical + // inference from other restrictions on segments or lanes. This + // restriction type may not be used for restrictions with empty + // subpaths. DEPRECATED + // "RESTRICTION_GATE" - A gate or other moveable barrier prevents + // direct access. NOTE: Travel may still be allowed in certain + // circumstances. Use RESTRICTION_PRIVATE in lieu of RESTRICTION_GATE + // for segments that may still be routed on in certain circumstances. + // DEPRECATED + // "RESTRICTION_CONSTRUCTION" - Road is closed due to road maintenance + // (e.g. repaving, adding more lanes) and cannot be used for routing. + // "RESTRICTION_SEASONAL_CLOSURE" - Travel is prohibited for the + // duration of some season. E.g., due to ice/snow in the winter. + // "RESTRICTION_PRIVATE" - Road has signage discouraging or + // prohibiting use by the general public. E.g., roads with signs that + // say "Private", or "No trespassing." NOTE: Use this type if travel is + // still be allowed in certain circumstances (e.g., legitimate visits to + // a place reachable by restricted roads only). Use RESTRICTION_ILLEGAL + // if travel is forbidden under all circumstances. This restriction type + // may not be used for restrictions with non-empty subpaths. + // "RESTRICTION_WRONG_WAY" - Travel over this segment is prohibited + // because of signage indicating one-way directionality in the opposite + // direction. This restriction type may not be used for restrictions + // with non-empty subpaths. Travel over this segment should be avoided + // at all costs unless the destination is on the segment. This + // restriction type may be used only for restrictions of STYLE_SINGLE. + // "RESTRICTION_TERMINAL" - RESERVED + // "RESTRICTION_PAYMENT_REQUIRED" + // "RESTRICTION_TOLL_BOOTH" - This restriction type may be used only + // for restrictions of STYLE_TURN, or STYLE_CONTIGUOUS with a subpath of + // length 2. The intersection at which the turn is restricted is the + // place of the toll booth. + // "RESTRICTION_USAGE_FEE_REQUIRED" - Traveling on the associated + // subpath requires a fee to be paid. + // "RESTRICTION_ENTRANCE_FEE_REQUIRED" - Similar to + // RESTRICTION_USAGE_FEE_REQUIRED but instead of a fee for the usage, + // the fee is required for entering a special area (e.g. an amusement + // park). Also in contrast to RESTRICTION_USAGE_FEE_REQUIRED this + // restriction is supposed to be applied only to the segments that enter + // into the isolated restricted area from the outer world. Therefore + // there are two important points to consider when modeling data this + // way: 1) Every path that (exactly once) enters the restricted area + // should have exactly one such restriction (it does not matter whether + // it is a segment or subpath restriction). 2) All entrances have to be + // modeled consistently. It is recommended that the restriction is + // consistently applied to paths entering the area and not applied to + // paths leaving the area. NOTE: The above points are important because + // an additive penalty is applied for each individual restriction that + // appear on a path. + // "RESTRICTION_ADVISORY" - Restrictions in the RESTRICTION_ADVISORY + // category refer to paths where travel is permitted, but may not be + // prudent or is cumbersome. Since this is often a matter of opinion, + // clients may choose not to make use of this information or not display + // it directly to the user. + // "RESTRICTION_HIGH_CRIME" + // "RESTRICTION_POLITICALLY_SENSITIVE" + // "RESTRICTION_DISTURBED_BY_MAINTENANCE" - Segments with + // RESTRICTION_DISTURBED_BY_MAINTENANCE indicate that the road undergoes + // maintenance, however (unlike RESTRICTION_CONSTRUCTION) the segment + // will be used for routing. + // "RESTRICTION_CHECKPOINT" - An inland location where travelling is + // expected to be interrupted by authorities to inspect passengers + // and/or goods. This restriction type may only be used for restrictions + // with style STYLE_SINGLE. + // "RESTRICTION_REGION_SPECIFIC" - Restrictions with the + // RESTRICTION_REGION_SPECIFIC category signify restrictions that are + // unique to a particular region, cannot currently be modeled through + // RestrictionProto, and/or have semantics that differ if in a + // particular region (such as car emission restrictions). These + // restrictions are specified on their restriction group, a traffic + // zone. Evaluating applicability of these restrictions requires an + // additional library located in the + // geostore/base/internal/specialized_restriction/ directory. That + // library controls the application of the restriction and will + // generally disregard data on this RestrictionProto. For example, + // go/cabrio-restriction-schema specifies that this proto should set + // TRAVEL_MOTOR_VEHICLE because other values have no effect; likewise, + // TimeScheduleProto has no effect. In truth this restriction's only job + // is to carry a restriction_group reference. + Type string `json:"type,omitempty"` + + // VehicleAttributeFilter: The restriction only applies to vehicles that + // meet all of the attributes defined here. If this is empty, it does + // not affect the scope of the restriction. + VehicleAttributeFilter *GeostoreVehicleAttributeFilterProto `json:"vehicleAttributeFilter,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AutonomousDrivingProducts") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "AutonomousDrivingProducts") to include in API requests with the JSON + // null value. By default, fields with empty values are omitted from API + // requests. However, any field with an empty value appearing in + // NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRestrictionProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRestrictionProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRightsStatusProto: 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/Rights.swig +// instead of accessing this proto directly. +type GeostoreRightsStatusProto struct { + FieldWithRights []*GeostoreFieldWithRightsProto `json:"fieldWithRights,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FieldWithRights") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FieldWithRights") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRightsStatusProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRightsStatusProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRoadConditionalProto: A RoadConditionalProto defines +// conditions that affect when the road traversal information is +// applicable. +type GeostoreRoadConditionalProto struct { + // TimeSchedule: Specifies what times the information is applicable. + // This can be specific times (3-5 PM) or days of the week (Mon - Fri), + // as well as more general times like school hours, dusk to dawn, etc. + // If no value is set, the restriction is applicable at all times. + TimeSchedule *GeostoreTimeScheduleProto `json:"timeSchedule,omitempty"` + + // VehicleAttribute: Additional attributes that apply to the applied + // vehicle types. + VehicleAttribute *GeostoreVehicleAttributeFilterProto `json:"vehicleAttribute,omitempty"` + + // VehicleType: Restrictions applying to specific types of vehicles. + // + // Possible values: + // "UNKNOWN" - Default proto value, this value will never be set in + // MapFacts. + // "ANY" + // "CAR" + // "MOTORCYCLE" + // "TRUCK" - Note: The exact definition of a truck varies by city, but + // it usually refers to vehicles with three or more axles. This value + // does not necessarily apply to all commercial vehicles or vehicles + // colloquially referred to as trucks (eg. pickup trucks). + // "BUS" + VehicleType []string `json:"vehicleType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "TimeSchedule") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TimeSchedule") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRoadConditionalProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRoadConditionalProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRoadMonitorProto: 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. +type GeostoreRoadMonitorProto struct { + // MonitoredRoad: The TYPE_ROAD segment features that this road monitor + // may observe. + MonitoredRoad []*GeostoreFeatureIdProto `json:"monitoredRoad,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MonitoredRoad") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MonitoredRoad") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRoadMonitorProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRoadMonitorProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRoadSignComponentProto: 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. +type GeostoreRoadSignComponentProto struct { + // FeatureId: The id of the feature referred to by this component, + // typically the route or locality feature this sign points towards. In + // the ASCII art example above, this field would contain the id for the + // routes A11 and E50 and the localities Chartres and Paris in the + // corresponding component. + FeatureId *GeostoreFeatureIdProto `json:"featureId,omitempty"` + + // FeatureType: The type of the feature referred to by this component. + // If feature_id is specified type of that feature should be the same as + // this field. + FeatureType int64 `json:"featureType,omitempty"` + + // MajorPosition: This is the "major" position of this component within + // the set of components that make up a sign. This number can be thought + // of as the "row" of the sign on which the component appears, but no + // guarantees are made that there is a one-to-one mapping between + // "major_position" and the rows of information on the actual sign being + // modeled. A "major_position" value of zero would indicate that the + // component is near the top of the sign. + MajorPosition int64 `json:"majorPosition,omitempty"` + + // MinorPosition: This is the position of a component within the + // components of a sign that share a common "major_position". It can be + // though of as the "column" of the component, but like + // "major_position", no guarantees are made regarding its mapping to + // reality. For data sources that don't provide enough information to + // determine a component's major and minor positions, major position + // should be populated and minor position should not be present. A + // "minor_position" value of zero would indicate that the component is + // near the "beginning" of the sign. In countries where signs are read + // from left to right, "minor_position" zero would be near the left side + // of the sign. + MinorPosition int64 `json:"minorPosition,omitempty"` + + // RouteDirection: The direction of traffic for the referenced + // TYPE_ROUTE feature. + // + // Possible values: + // "DIRECTION_NONE" - DIRECTION_NONE value is reserved and only + // present there to avoid using a meaningful entry as the default value. + // RESERVED + // "DIRECTION_NORTH" + // "DIRECTION_EAST" + // "DIRECTION_SOUTH" + // "DIRECTION_WEST" + // "DIRECTION_NORTHEAST" + // "DIRECTION_NORTHWEST" + // "DIRECTION_SOUTHEAST" + // "DIRECTION_SOUTHWEST" + // "DIRECTION_INNER" - Inner/Outer loop. Short names are not + // supported. The actual direction depends on the local driving rule + // (right-handed vs. left-handed). TODO(b/161314216) If you need an + // explicit loop direction or a road sign uses + // clockwise/counterclockwise, don't use INNER/OUTER but consider adding + // DIRECTION_CLOCKWISE and DIRECTION_COUNTERCLOCKWISE instead. + // "DIRECTION_OUTER" + RouteDirection string `json:"routeDirection,omitempty"` + + // Text: If this sign component is of type "TYPE_TEXT", this field + // contains the text of the component. A NameProto is used to allow + // language and flags to be associated with the text. + Text *GeostoreNameProto `json:"text,omitempty"` + + // Type: This type of content represented by this sign component. + // + // Possible values: + // "TYPE_TEXT" - This component is comprised of a single piece of + // text. The "text" field must be present on sign components of this + // type. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FeatureId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FeatureId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRoadSignComponentProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRoadSignComponentProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRoadSignProto: 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. +type GeostoreRoadSignProto struct { + // Component: The list of components for a single road sign. A sign may + // be composed of multiple components, each with its own position and + // content. + Component []*GeostoreRoadSignComponentProto `json:"component,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Component") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Component") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRoadSignProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRoadSignProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRouteAssociationProto: This protocol buffer holds metadata +// about the association between a segment and a route. +type GeostoreRouteAssociationProto struct { + // DisplayPreference: clang-format on + // + // Possible values: + // "DISPLAY_PREFERRED" - These routes should be displayed along this + // segment. + // "DISPLAY_BEST" - Among the preferred routes, this is the best one + // to display. There can be at most one of these per segment. + // "DISPLAY_OK" - These are also valid route names to display, but + // clients should choose PREFERRED routes if available. + // "DISPLAY_HIDE" - These routes should not be displayed. + DisplayPreference string `json:"displayPreference,omitempty"` + + // Metadata: Field-level metadata for the route association. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Route: Identifies the route feature to which this metadata applies. + // This is one of the routes the segment refers to via the + // SegmentProto.route field. + Route *GeostoreFeatureIdProto `json:"route,omitempty"` + + // RouteDirection: The direction of the TYPE_ROUTE feature in this route + // association. A small number of countries (mostly just the United + // States, Mexico, and Canada) use directional routes. For example, in + // the United States highway US-1 is referred to as US-1 North or US-1 + // South on the sides where flow of traffic moves in those directions. + // + // Possible values: + // "DIRECTION_NONE" - DIRECTION_NONE value is reserved and only + // present there to avoid using a meaningful entry as the default value. + // RESERVED + // "DIRECTION_NORTH" + // "DIRECTION_EAST" + // "DIRECTION_SOUTH" + // "DIRECTION_WEST" + // "DIRECTION_NORTHEAST" + // "DIRECTION_NORTHWEST" + // "DIRECTION_SOUTHEAST" + // "DIRECTION_SOUTHWEST" + // "DIRECTION_INNER" - Inner/Outer loop. Short names are not + // supported. The actual direction depends on the local driving rule + // (right-handed vs. left-handed). TODO(b/161314216) If you need an + // explicit loop direction or a road sign uses + // clockwise/counterclockwise, don't use INNER/OUTER but consider adding + // DIRECTION_CLOCKWISE and DIRECTION_COUNTERCLOCKWISE instead. + // "DIRECTION_OUTER" + RouteDirection string `json:"routeDirection,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DisplayPreference") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DisplayPreference") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRouteAssociationProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRouteAssociationProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreRouteProto: 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). +type GeostoreRouteProto struct { + // ChildType: The feature type of the route children. Should be set if + // and only if all children are of the same feature type. + ChildType int64 `json:"childType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChildType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChildType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreRouteProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreRouteProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSchoolDistrictProto: This protocol buffer holds school +// district specific attributes for features of TYPE_SCHOOL_DISTRICT. +type GeostoreSchoolDistrictProto struct { + // Possible values: + // "TYPE_UNIFIED" + // "TYPE_ELEMENTARY" + // "TYPE_SECONDARY" + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSchoolDistrictProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSchoolDistrictProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSegmentPathProto: 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. +type GeostoreSegmentPathProto struct { + // Subpath: Specifies a sequence of feature ids of GeoStore segments. + // The feature ids are ordered. The path "AB" is not the same as the + // path "BA". The segments along the path are assumed to be connected + // via the appropriate intersections. The segment features that are + // referenced by this subpath refer to this feature back via the + // road_sign field in segment proto extension. + Subpath []*GeostoreFeatureIdProto `json:"subpath,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Subpath") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Subpath") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSegmentPathProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSegmentPathProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSegmentProto: +// ---------------------------------------------------------------------- +// ----- 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/mr-mergesegments.cc) 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/process-high-priority-roads.cc) 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 mr-mergesegments_test.cc and +// maps/render/process-high-priority-roads_test.cc or you will break the +// VersaTile build. +// ---------------------------------------------------------------------- +// ----- +type GeostoreSegmentProto struct { + AdvisoryMaximumSpeed []*GeostoreAppliedSpeedLimitProto `json:"advisoryMaximumSpeed,omitempty"` + + // Altitude: RESERVED + Altitude []float64 `json:"altitude,omitempty"` + + // AvgSpeedKph: The average speed that should be expected along this + // route under normal conditions, in kilometers per hour. (Hopefully + // we'll replace this with something a lot more sophisticated.) + AvgSpeedKph float64 `json:"avgSpeedKph,omitempty"` + + // AvgSpeedKphMetadata: Field-level metadata for the average speed. + AvgSpeedKphMetadata *GeostoreFieldMetadataProto `json:"avgSpeedKphMetadata,omitempty"` + + // Barrier: clang-format on + // + // Possible values: + // "BARRIER_NONE" - Some barrier which prevents turns in the middle of + // a segment, but the details are not known (or the tester doesn't care + // to distinguish between legal and physical barriers). + // "BARRIER_PRESENT" + // "BARRIER_LEGAL" - An example of this in the United States would be + // a pair of double-yellow lines. This pattern indicates that all turns + // are legally prohibited. + // "BARRIER_PHYSICAL" - A concrete strip, island, planter, or other + // physical barrier. This category is also used when we model the + // roadways are separated. + Barrier string `json:"barrier,omitempty"` + + // BarrierMetadata: Field-level metadata for the barrier. + BarrierMetadata *GeostoreFieldMetadataProto `json:"barrierMetadata,omitempty"` + + // BicycleFacility: clang-format on + // + // Possible values: + // "BICYCLE_FACILITY_SEPARATE_TRAIL" - This segment has a detached + // trail or path running alongside it, suitable for the use of cyclists. + // When a segment has this attribute, there should never be a distinct + // segment for the trail, because the road and trail are part of the + // same logical segment. In other words, the trail is modeled by this + // attribute on its associated road, rather than by a separate segment. + // "BICYCLE_FACILITY_PEDESTRIAN_PATH" - This segment has a sidewalk or + // other pedestrian pathway that permits bicycles. + // "BICYCLE_FACILITY_SHARED_ROAD" - This segment allows bicycles to + // share the road with motor vehicles. It may or may not provide special + // accommodation for cyclists. + // "BICYCLE_FACILITY_BIKE_LANE" - This segment has a striped bicycle + // lane. + // "BICYCLE_FACILITY_WIDE_SHOULDER" - This segment has a wide shoulder + // or curb lane. + // "BICYCLE_FACILITY_SHARROW" - This segment has pavement markings to + // make motorists aware of bicycles in a shared lane. + BicycleFacility string `json:"bicycleFacility,omitempty"` + + // Possible values: + // "BICYCLE_SAFETY_RECOMMENDED" - This segment is explicitly + // recommended as suitable for biking, for instance by a sign, by a city + // bike map, or by a user. + // "BICYCLE_SAFETY_NEUTRAL" - This segment is similarly suitable for + // biking as nearby segments with the same 'bicycle_facility'. + // "BICYCLE_SAFETY_CAUTION" - Cyclists should use extra caution on + // these segments, as they may be inferior in suitability for biking. + BicycleSafety string `json:"bicycleSafety,omitempty"` + + // Possible values: + // "CONDITION_GOOD" + // "CONDITION_POOR" + Condition string `json:"condition,omitempty"` + + // ConditionMetadata: Field-level metadata for the condition. + ConditionMetadata *GeostoreFieldMetadataProto `json:"conditionMetadata,omitempty"` + + // ConstructionBeginDate: If known, the date that construction is + // scheduled to begin. + ConstructionBeginDate *GeostoreDateTimeProto `json:"constructionBeginDate,omitempty"` + + // ConstructionEndDate: If known, the date that construction is + // scheduled to end. + ConstructionEndDate *GeostoreDateTimeProto `json:"constructionEndDate,omitempty"` + + // Possible values: + // "CONSTRUCTION_PLANNED" + // "CONSTRUCTION_STARTED" + // "CONSTRUCTION_COMPLETE" + // "CONSTRUCTION_CLOSED_FOR_MAINTENANCE" + // "CONSTRUCTION_DISTURBED_BY_MAINTENANCE" + ConstructionStatus string `json:"constructionStatus,omitempty"` + + // ConstructionStatusMetadata: Field-level metadata for the construction + // status. + ConstructionStatusMetadata *GeostoreFieldMetadataProto `json:"constructionStatusMetadata,omitempty"` + + // Covered: Whether the segment is covered by a roof etc. If this field + // is missing, the status is unknown. + Covered bool `json:"covered,omitempty"` + + // DistanceToEdge: Average distance between the segment's polyline and + // edge of the road on this side in meters. It need not be equal to the + // sum of width of all lanes in this direction. This width includes + // on-street bicycle lanes but excludes off-street lanes such as + // sidewalks. The edge of the road is the rightmost edge for segments in + // right side driving countries and leftmost edge for left side driving + // countries. Width of the road is sum of this and sibling's + // distance_to_edge. + DistanceToEdge float64 `json:"distanceToEdge,omitempty"` + + // DistanceToEdgeMetadata: Field-level metadata for distance_to_edge. + DistanceToEdgeMetadata *GeostoreFieldMetadataProto `json:"distanceToEdgeMetadata,omitempty"` + + // EdgeFollowsSegmentBeginFraction: These indicate for what portion of + // the segment does the outer curb of the segment follow the segment + // polyline - i.e., where do the sweep curves connect along the outer + // curb. If unspecified, may be assumed to be equal to lane retraction, + // preferring outermost lane. + EdgeFollowsSegmentBeginFraction float64 `json:"edgeFollowsSegmentBeginFraction,omitempty"` + + EdgeFollowsSegmentEndFraction float64 `json:"edgeFollowsSegmentEndFraction,omitempty"` + + // Elevation: clang-format on + // + // Possible values: + // "ELEVATION_NORMAL" + // "ELEVATION_BRIDGE" + // "ELEVATION_TUNNEL" + // "ELEVATION_SKYWAY" - A skyway is a road that is raised on supports + // for an extended length. + // "ELEVATION_STAIRWAY" - Sample path description: "Go up/down the + // stairs." PedestrianGradeCategory provides information about + // "up/down". + // "ELEVATION_ESCALATOR" - Sample path description: "Go up/down the + // escalator." PedestrianGradeCategory provides information about + // "up/down". + // "ELEVATION_ELEVATOR" - Sample path description: "Take the elevator + // up/down to the xth floor." PedestrianGradeCategory provides + // information about "up/down". + // "ELEVATION_SLOPEWAY" - Sample path description: "Ascend/descend the + // slope" PedestrianGradeCategory provides information about + // "ascend/descend". + // "ELEVATION_MOVING_WALKWAY" - Sample path description: "Get on the + // moving walkway." + Elevation string `json:"elevation,omitempty"` + + // ElevationMetadata: Field-level metadata for the elevation. + ElevationMetadata *GeostoreFieldMetadataProto `json:"elevationMetadata,omitempty"` + + // Endpoint: clang-format on + // + // Possible values: + // "ENDPOINT_UNKNOWN" + // "ENDPOINT_UNRESTRICTED" - This category is used in cases where + // traffic on this segment always has the right-of-way (e.g. passing a + // side street, fork in road). + // "ENDPOINT_UNCONTROLLED" + // "ENDPOINT_STOP_SIGN" + // "ENDPOINT_ALL_WAY_STOP" + // "ENDPOINT_TRAFFIC_LIGHT" + // "ENDPOINT_THREE_WAY" - Three-way in this direction + // "ENDPOINT_FLASHING_RED" - Flashing red light (stop) + // "ENDPOINT_FLASHING_YELLOW" - Flashing yellow light (yield) + // "ENDPOINT_YIELD" - Traffic on this segment has to give way to + // oncoming traffic, but does not necessarily have to come to a full + // stop. This category is used where there exists a physical yield sign + // and/or road painting (triangles), but also where circumstances and + // applicable local traffic laws require traffic on such segment to give + // way (e.g. coming from a dirt road onto a paved road). + // "ENDPOINT_MERGE" + // "ENDPOINT_ROUNDABOUT" - This segment leads to a roundabout + // entrance. Note this category is not used for segments themselves + // inside a roundabout. See USAGE_ROUNDABOUT for these. + // "ENDPOINT_RAILROAD_CROSSING" + // "ENDPOINT_NO_EXIT" - This category denotes a dead-end. Useful to + // explicitly exclude connections to other data-sets, for example at + // country borders and building entrances in countries where the indoor + // and outdoor routing networks are provided by different providers. + // "ENDPOINT_WRONG_WAY" - DEPRECATED Use RESTRICTION_WRONG_WAY + // "ENDPOINT_TOLL_BOOTH" - This segment directly ends at a toll booth. + // The intersection capturing these segments represents the location of + // the toll booth. If it has a name, this is captured in the + // TYPE_INTERSECTION_GROUP that contains the intersection. + Endpoint string `json:"endpoint,omitempty"` + + // EndpointMetadata: Field-level metadata for the endpoint. + EndpointMetadata *GeostoreFieldMetadataProto `json:"endpointMetadata,omitempty"` + + // GradeLevel: Detailed information about grade levels along the + // segment. If a GradeLevelProto is not present for any point (index) + // along the segment, the default grade level is zero. In between two + // points (indexes), the grade level of the segment is taken to be the + // max of the grade levels on either side of it. See gradelevel.proto + // for semantics of repeated indexes. + GradeLevel []*GeostoreGradeLevelProto `json:"gradeLevel,omitempty"` + + // Internal: Internal-only data. + Internal *GeostoreInternalSegmentProto `json:"internal,omitempty"` + + // InterpolationOffsetMeters: If specified, the perpendicular offset in + // meters from a road segment to an interpolated address along that road + // segment. See go/synthetic-address-positions. + InterpolationOffsetMeters float64 `json:"interpolationOffsetMeters,omitempty"` + + // Intersection: The intersection feature corresponding to the + // destination of this segment. Intersections are used to represent the + // connectivity between segments. Each intersection stores the segment + // ids of all the incoming and outgoing segments that meet at that + // intersection. Turns can be made from this segment to any of the + // outgoing segments of its intersection, unless there is a restriction + // that explicitly disallows the turn (see below). Every segment has an + // intersection object, even if there are no other segments to connect + // to (i.e., a cul-de-sac or dead end). + Intersection *GeostoreFeatureIdProto `json:"intersection,omitempty"` + + // IsMaxPermittedSpeedDerived: Specifies whether the + // max_permitted_speed_kph was derived from a heuristic as opposed to + // coming from an authoritative source. + IsMaxPermittedSpeedDerived bool `json:"isMaxPermittedSpeedDerived,omitempty"` + + // Lane: Detailed information about each lane in this direction, if + // available. Lanes are numbered from inside of the road outward, i.e. + // the lane next to the center line is lane 0. Note that lanes that are + // valid for travel in both directions appear in both segments of a + // segment pair (left turn lanes, one-lane roads, some passing lanes, + // reversing lanes). Some lanes may not be usable by cars, such as bike + // lanes. Also, some lanes may not exist along the entire segment, e.g. + // left- or right-turn lanes that appear just before the intersection. + Lane []*GeostoreLaneProto `json:"lane,omitempty"` + + // LegalMaximumSpeed: The legal maximum, legal minimum, and advisory + // (recommended but non-legally binding) maximum speed limits that are + // permitted on this segment. These should be the segment's legal + // limits; however, note that it may contain estimated values based on + // country-wide defaults and other heuristics (see + // 'AppliedSpeedLimitProto.trust_level'). Before exposing these fields + // to users as the legal speed limit please consult with Google lawyers. + LegalMaximumSpeed []*GeostoreAppliedSpeedLimitProto `json:"legalMaximumSpeed,omitempty"` + + LegalMinimumSpeed []*GeostoreAppliedSpeedLimitProto `json:"legalMinimumSpeed,omitempty"` + + // MaxPermittedSpeedKph: The maximum speed that is permitted on this + // segment, in kilometers per hour. This should be the segment's legal + // speed limit; however, note that it may contain estimated values based + // on country-wide defaults and other heuristics (see + // 'is_max_permitted_speed_derived' below). Before exposing this field + // to users as the legal speed limit please consult with Google lawyers. + MaxPermittedSpeedKph float64 `json:"maxPermittedSpeedKph,omitempty"` + + // MaxPermittedSpeedKphMetadata: Field-level metadata for the maximum + // permitted speed. + MaxPermittedSpeedKphMetadata *GeostoreFieldMetadataProto `json:"maxPermittedSpeedKphMetadata,omitempty"` + + // OnRight: Specifies whether this segment carries right-hand traffic + // (cars keep to the right side of the road) instead of left-hand + // traffic (cars keep to the left side). This is true for US roads and + // false for UK roads, for example. See + // go/wikip/Left-_and_right-hand_traffic. + OnRight bool `json:"onRight,omitempty"` + + // PedestrianCrossing: Defines the pedestrian crossing(s) between the + // end point of this segment and the start point of this segment's + // sibling. + PedestrianCrossing *GeostorePedestrianCrossingProto `json:"pedestrianCrossing,omitempty"` + + // PedestrianFacility: clang-format on + // + // Possible values: + // "PEDESTRIAN_FACILITY_UNKNOWN" - No data about pedestrian facility + // is available. + // "PEDESTRIAN_FACILITY_NONE" - No special pedestrian facilities are + // available on this segment. + // "PEDESTRIAN_FACILITY_PRESENT" - The segment has some kind of + // pedestrian facility, like a sidewalk or wide shoulder, that separates + // pedestrians from motor vehicle traffic. + // "PEDESTRIAN_FACILITY_SIDEWALK" - Deprecated. Sidewalks are + // represented via a TYPE_PEDESTRIAN lane. + // "PEDESTRIAN_FACILITY_WIDE_SHOULDER" - Deprecated. Wide shoulder is + // implied when segment.pedestrian_facility = + // PEDESTRIAN_FACILITY_PRESENT and segment.lane does not include a + // TYPE_PEDESTRIAN lane. + PedestrianFacility string `json:"pedestrianFacility,omitempty"` + + // Possible values: + // "PEDESTRIAN_GRADE_FLAT" + // "PEDESTRIAN_GRADE_UP" + // "PEDESTRIAN_GRADE_DOWN" + PedestrianGrade string `json:"pedestrianGrade,omitempty"` + + // Priority: + // LINT.ThenChange(//depot/google3/maps/pathfinder/pgraph/pgraph-segment- + // categories.cc) + // + // Possible values: + // "PRIORITY_UNKNOWN" - The priority of the segment is unknown. This + // is not actually allowed to be set in MapFacts, but best-practice is + // to have a default 0 value for enums. + // "PRIORITY_NON_TRAFFIC" - A non-traffic segment is not intended for + // normal vehicles, e.g. a pedestrian mall. 0x10 + // "PRIORITY_TERMINAL" - A terminal road is not intended to carry + // through traffic, e.g. a narrow residential street or an access road + // to a point of interest. 0x20 + // "PRIORITY_LOCAL" - A small city street, typically for travel in a + // residential neighborhood, or a small rural road. This is the lowest + // priority suitable for through traffic. 0x30 + // "PRIORITY_MINOR_ARTERIAL" - A moderate-capacity "collector" that + // funnels traffic from local roads towards arterial roads or business + // areas. 0x40 + // "PRIORITY_MAJOR_ARTERIAL" - A high-capacity road that carries large + // volumes of traffic between different neighborhoods or towns. 0x50 + // "PRIORITY_SECONDARY_ROAD" - Roads that act as conduits a) between + // primary highways (and above), or b) from major/minor arterial roads + // to primary highways (and above). They may be state highways, for + // example. 0x60 + // "PRIORITY_PRIMARY_HIGHWAY" - These highways are major preferred + // roads that connect between regions, but that do not have significant + // access restrictions. Most crossings are level grade (traffic light, + // stop sign) and there may be driveways and local roads that connect + // directly to the highway. NOTE: Where a dense network of + // limited/controlled access roads carries most of the traffic between + // regions, this priority may be infrequent. 0x70 + // "PRIORITY_LIMITED_ACCESS" - Limited access highways have some + // access restrictions, but are not fully access controlled. Typically + // driveways and local roads connect to a separate "frontage road" that + // is connected to the highway via spaced traffic lights, interchanges, + // or stop signs. Limited access roads are sometimes called expressways. + // 0x80 + // "PRIORITY_CONTROLLED_ACCESS" - Controlled access highways have + // grade-separated crossings and are accessed exclusively by ramps. They + // are usually called "freeways" or "motorways". 0x90 + Priority string `json:"priority,omitempty"` + + // PriorityMetadata: Field-level metadata for the priority. + PriorityMetadata *GeostoreFieldMetadataProto `json:"priorityMetadata,omitempty"` + + // Restriction: The set of restrictions that apply to this segment. + // Restrictions may make a single segment, turn, or more complex + // maneuver along a set of segments unroutable for the specified travel + // modes, or may only add penalties or warnings, depending on the + // restriction type. Turn restrictions are one example of a restriction. + // By default, turns are allowed onto all outgoing segments from this + // segment's intersection (including the sibling of this segment, i.e. + // U-turns are allowed by default). If any of these turns are disallowed + // they will be listed as "subpath restrictions". A subpath restriction + // disallows travel on given sequence of segments. In the case of a + // disallowed turn, the subpath simply consists of the source and + // destination feature ids. There may also be restrictions that apply to + // all travel on this segment (e.g. chains required, or closed in + // winter), or restrictions that just apply to certain lanes (e.g. high + // occupancy vehicle lanes). + Restriction []*GeostoreRestrictionProto `json:"restriction,omitempty"` + + // RoadMonitor: The road monitors that monitor this segment for traffic + // violations. + RoadMonitor []*GeostoreFeatureIdProto `json:"roadMonitor,omitempty"` + + // RoadSign: The road sign(s) which this segment refers to. These are + // features of TYPE_ROAD_SIGN that are applicable to this segment. For + // example, a sign that says "TO KIRKLAND" might apply to several + // segments on a freeway off-ramp (until the end of the ramp). Note that + // this field makes it easy to find the signs for a given road segment. + // The feature for the sign lists the segments that refer to it. + RoadSign []*GeostoreFeatureIdProto `json:"roadSign,omitempty"` + + // Route: The route(s) to which this segment belongs. + Route []*GeostoreFeatureIdProto `json:"route,omitempty"` + + // RouteAssociation: Holds metadata about the associations between this + // segment and the route features listed in the route field. This + // metadata need not be present; the only consistency requirement is + // that every feature ID that appears inside 'route_association' must + // also appear in the repeated 'route' field. If a route does not appear + // in route_association, consumers should assume that it has a default + // initialized RouteAssociationProto. + RouteAssociation []*GeostoreRouteAssociationProto `json:"routeAssociation,omitempty"` + + // SeparatedRoadways: Indicates whether the segment's opposing lanes of + // traffic are separated from this segment, and hence have been + // represented in a separate feature. This means that there are two + // pairs of siblings instead of one. + SeparatedRoadways bool `json:"separatedRoadways,omitempty"` + + // Sibling: The other segment of this segment pair (see above). The + // segment that is referenced by the sibling field refers to this + // feature back via the same sibling field. Both segment and sibling + // should have the same properties such as geometry, country code, + // elevation, level relation, priority etc. Since routes are required to + // have segment and sibling at the same time, the set of routes on a + // segment is same to that of the sibling. + Sibling *GeostoreFeatureIdProto `json:"sibling,omitempty"` + + // Surface: clang-format on + // LINT.ThenChange(//depot/google3/geostore/base/proto/lane.proto) If + // this option is missing it means that the surface is unknown. Specific + // lanes may override this segment-level surface type. + // + // Possible values: + // "SURFACE_UNKNOWN" - RESERVED + // "SURFACE_PAVED" + // "SURFACE_ASPHALT" + // "SURFACE_CONCRETE" + // "SURFACE_CHIPSEAL" + // "SURFACE_BRICK" + // "SURFACE_SETT" + // "SURFACE_COBBLESTONE" + // "SURFACE_UNPAVED" + // "SURFACE_GRAVEL" + // "SURFACE_DIRT" + // "SURFACE_SAND" + Surface string `json:"surface,omitempty"` + + // SurfaceMetadata: Field-level metadata for the surface. + SurfaceMetadata *GeostoreFieldMetadataProto `json:"surfaceMetadata,omitempty"` + + // Sweep: The geometric sweeps between this segment and nearby segments, + // used for real road width rendering. A sweep describes the surface + // that connects to segments. + Sweep []*GeostoreSweepProto `json:"sweep,omitempty"` + + // TollRoad: If this segment is part of a toll road. It would be nice to + // have data about the toll cost, locations of toll booths, and so + // forth. Sadly, we don't have this data at this time. + TollRoad bool `json:"tollRoad,omitempty"` + + // Usage: clang-format on + // LINT.ThenChange(//depot/google3/maps/pathfinder/pgraph/pgraph-segment- + // categories.cc) + // + // Possible values: + // "USAGE_ANY" - Not a true usage category--this value was added just + // to ease the transition from proto1 to proto2. + // "USAGE_RAMP" - Ramps are connecting segments to or between limited + // access roads. They are often called "slip roads" in Europe. + // "USAGE_ON_RAMP" + // "USAGE_OFF_RAMP" + // "USAGE_ON_OFF_RAMP" + // "USAGE_INTERCHANGE" + // "USAGE_SPECIAL_TRAFFIC_FIGURE" - This road segment is part of a + // special traffic figure, which is like a roundabout or traffic circle, + // but doesn't meet all of the requirements of USAGE_ROUNDABOUT. It has + // a round shape but, e.g., there may be higher priority roads within + // the interior of the figure (also known as a hamburger roundabout), or + // the figure doesn't complete an entire circuit. + // "USAGE_ROUNDABOUT" - This road segment forms part of a roundabout + // or traffic circle (these terms don't have the exact same meaning, but + // the schema doesn't distinguish and captures both). Roundabouts + // complete one entire circuit, and are one-way through their entire + // circuit. Sample wording in directions: "At the roundabout, take the + // 2nd exit", or "Go through 1 roundabout". + // "USAGE_ROUNDABOUT_BYPASS" - This road segment is part of a bypass + // associated with, but not part of, a roundabout or traffic circle, + // that shortcuts the outer ring. + // "USAGE_ROUNDABOUT_INTERNAL_BYPASS" - This road segment is part of a + // special traffic figure that allows traffic to go straight through the + // roundabout without entering the circle part of the roundabout. + // Divides the roundabout into two halves. + // "USAGE_ROUNDABOUT_EXTERNAL_BYPASS" - Shortcut from the entrance of + // a roundabout to the same destination as the first exit from the + // roundabout relative to that entrance. + // "USAGE_ENCLOSED_TRAFFIC_AREA" - A parking lot or parking structure, + // possibly with multiple entrances that can be significant for routing. + // "USAGE_PEDESTRIAN_MALL" - A stretch of road closed to normal + // traffic (trams, buses, delivery vehicles may be allowed). + // "USAGE_MAJOR_PEDESTRIAN_MALL" + // "USAGE_MINOR_PEDESTRIAN_MALL" + // "USAGE_WALKWAY" - "Non-traffic" segments that are roughly + // associated with the road network but that are being modeled + // separately from the road network, e.g., a sidewalk or wide shoulder. + // In contrast, walkways modeled using segments that are part of the + // road network should be marked with pedestrian and bicycle facilities. + // NOTE: Separately modeled walkways are unusual and have issues; + // consult with oyster-team before using this in new data. + // "USAGE_TRAIL" - A non-road segment that can be described as a major + // path or a trail. A trail is often part of a dedicated network of + // named biking or walking trails, is not particularly short, and + // typically has scenic value or facilitates crossing rough terrain. + // USAGE_TRAIL implies that PRIORITY_NON_TRAFFIC must be set, but + // compared to a segment with no usage at all, is suitable for extra + // emphasis by clients as a more desirable segment to travel on. Minor + // paths, such as pedestrian shortcuts, walkways through building + // complexes, and short walkways through a city park should be modeled + // as PRIORITY_NON_TRAFFIC with no usage. Sample path description: "Take + // the trail." + // "USAGE_STATION_PATH" - Segment between toll gate and station center + // which represents logical location trains stop at. The segment's + // AddressComponent should have a route name which includes appropriate + // station name whenever possible. This segment should usually be + // restricted by RESTRICTION_USAGE_FEE_REQUIRED in order to penalize + // walking directions that just go through this segment. Sample path + // description: "Get in Shibuya station, and take the path to the + // platform." NOTE: This attribute is unusual; it should not be set in + // new data. + // "USAGE_ACCESS_PATH" - Alley in park, backyard of communal + // facilities such as museum, or kind of private properties open to + // public. The segment's AddressComponent should have a route name which + // includes the property's name whenever possible. This is different + // from trails as the purpose of the access path is more specific than + // trails. Sample path description: "Go through the access path to the + // National Museum." NOTE: This attribute is unusual and not clearly + // defined; it should not be set in new data. + // "USAGE_CROSSING" - A segment that connects separately modeled + // walkways (or other non-traffic segments) across a road. NOTE: + // USAGE_CROSSING segments make sense only where pedestrian segments are + // modeled separately. They cannot be used in the common case of + // sidewalks modeled as pedestrian facilities on road. Using a + // USAGE_CROSSING segment without connection to other non-traffic + // segments only to mark the location of a crossing is wrong. + // "USAGE_MARKED_CROSSING" - Crossing with mark. We assume zebra + // marking for now. Sample path description: "Take the crosswalk." + // "USAGE_UNMARKED_CROSSING" - Crossing with no mark Sample path + // description: "Cross the road." + // "USAGE_OVERPASS" - This is different from ELEVATION_SKYWAY as this + // implies "non-traffic". Sample path description: "Take the pedestrian + // overpass." + // "USAGE_UNDERPASS" - Underground crossing paths and implies + // "non-traffic". Sample path description: "Take the pedestrian + // underpass." + // "USAGE_HALLWAY" - Sample path description: "Go through the + // hallway." NOTE: This attribute is unusual and not clearly defined; it + // should not be set in new data. + // "USAGE_TURN_SEGMENT" - Turn segments are connecting segments + // between lower priority roads that bypass the direct intersection of + // the roads. They are the preferred route, or perhaps the only valid + // route, for turns between the roads. For example, in the US this would + // be a segment that would allow a vehicle to take a free right-turn + // without having to go through the intersection. Similarly in the UK, + // this would be a segment that allows a free left-turn. Also, the small + // segment next to the island of a channelized turn lane would fall + // under this category. + // "USAGE_INDOOR_CONNECTION_PATH" - Usage to explicitly indicate that + // the segment connects walking networks on indoor levels in different + // buildings. + Usage string `json:"usage,omitempty"` + + // VisibleLandmark: A collection of landmarks that are visible when + // traveling along this segment and useful for wayfinding to users + // following routes using this segment. The landmark need not be on the + // segment. Each segment in a pair of siblings specifies its landmarks + // independently. A landmark applicable to both appears in both. + VisibleLandmark []*GeostoreLandmarkReferenceProto `json:"visibleLandmark,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "AdvisoryMaximumSpeed") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AdvisoryMaximumSpeed") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSegmentProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSegmentProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreSegmentProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreSegmentProto + var s1 struct { + AvgSpeedKph gensupport.JSONFloat64 `json:"avgSpeedKph"` + DistanceToEdge gensupport.JSONFloat64 `json:"distanceToEdge"` + EdgeFollowsSegmentBeginFraction gensupport.JSONFloat64 `json:"edgeFollowsSegmentBeginFraction"` + EdgeFollowsSegmentEndFraction gensupport.JSONFloat64 `json:"edgeFollowsSegmentEndFraction"` + InterpolationOffsetMeters gensupport.JSONFloat64 `json:"interpolationOffsetMeters"` + MaxPermittedSpeedKph gensupport.JSONFloat64 `json:"maxPermittedSpeedKph"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.AvgSpeedKph = float64(s1.AvgSpeedKph) + s.DistanceToEdge = float64(s1.DistanceToEdge) + s.EdgeFollowsSegmentBeginFraction = float64(s1.EdgeFollowsSegmentBeginFraction) + s.EdgeFollowsSegmentEndFraction = float64(s1.EdgeFollowsSegmentEndFraction) + s.InterpolationOffsetMeters = float64(s1.InterpolationOffsetMeters) + s.MaxPermittedSpeedKph = float64(s1.MaxPermittedSpeedKph) + return nil +} + +// GeostoreServiceAreaProto: 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/ServiceArea.java +type GeostoreServiceAreaProto struct { + // ServedFeature: The features that make up the service area for this + // establishment. These features are subject to the following + // constraints applied by editing middleware (notably, not strictly + // enforced by lints in storage): 1. The following feature types (and + // their subtypes) may be used: + TYPE_ISLAND + TYPE_POLITICAL, except + // the following prohibited subtypes: - TYPE_CONSTITUENCY - + // TYPE_LAND_PARCEL + TYPE_POSTAL 2. There is a maximum limit (currently + // 20) to the number of areas which may be provided. This is due to + // serving efficiency limitations. 3. There are no additional geometry + // requirements for these features beyond the requirements based on the + // feature types above. In practice this means that these features will + // either have polygonal or point-based geometries. 4. These referenced + // features are generally required to have names, though this is not + // strictly enforced. + ServedFeature []*GeostoreFeatureIdProto `json:"servedFeature,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ServedFeature") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ServedFeature") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreServiceAreaProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreServiceAreaProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreServicedStopProto: Defines an ordered reference to a line +// variant’s stop. +type GeostoreServicedStopProto struct { + // Id: Reference to a Transit POI feature (gcid:transit_station) or + // platform compound section (gcid:railway_platform) serviced by the + // line variant. + Id *GeostoreFeatureIdProto `json:"id,omitempty"` + + // Index: An index representing the order in which the above station is + // serviced by the line variant. + Index int64 `json:"index,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreServicedStopProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreServicedStopProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSkiBoundaryProto: This protocol buffer holds attributes for +// features of TYPE_SKI_BOUNDARY. +type GeostoreSkiBoundaryProto struct { + // Possible values: + // "TYPE_ANY" - ABSTRACT + // "TYPE_DANGER" - The boundary line for a danger area. This is used + // to mark lines that should not be crossed for reasons of safety. + // "TYPE_SKI_AREA" - The boundary line for a ski area. This is + // generally used to specify the line at which the ski resort ends, + // rather than a line enclosing a single ski run. + // "TYPE_SLOW_ZONE" - An area signposted for slow skiing only. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSkiBoundaryProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSkiBoundaryProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSkiLiftProto: This protocol buffer holds attributes for +// features of TYPE_SKI_LIFT. +type GeostoreSkiLiftProto struct { + // Type: clang-format on + // + // Possible values: + // "TYPE_ANY" - ABSTRACT + // "TYPE_SURFACE" - Surface lifts are those that pull or carry a skier + // along the ground; rope tows are a common example. + // "TYPE_T_BAR" + // "TYPE_J_BAR" + // "TYPE_ROPE_TOW" + // "TYPE_POMA" + // "TYPE_CARPET" + // "TYPE_FUNICULAR" + // "TYPE_GONDOLA" - An aerial lift, such as a gondola or funitel, that + // moves enclosed cars along a continuously circulating set of cables. + // "TYPE_CHAIR" - An open-air chair lift. + // "TYPE_AERIAL" - Aerial lifts are those that run along cables + // suspended above the ground + // "TYPE_TRAM" - An aerial tram system that shuttles back and forth + // along a fixed set of cables. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSkiLiftProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSkiLiftProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSkiTrailProto: This protocol buffer holds attributes for +// features of TYPE_SKI_TRAIL. +type GeostoreSkiTrailProto struct { + // Possible values: + // "DIFFICULTY_EASIEST" - The easiest ski trail. In the US, this would + // be marked with double-green circles. + // "DIFFICULTY_EASY" - A novice ski trail. In the US, this would be + // marked with a single green circle. + // "DIFFICULTY_INTERMEDIATE" - An intermediate-level ski trail. In the + // US, this would be marked with a single blue square. + // "DIFFICULTY_ADVANCED_INTERMEDIATE" - An advanced-intermediate level + // ski trail. In the US, this would be marked with double-blue squares. + // "DIFFICULTY_DIFFICULT" - A difficult-level ski trail. In the US, + // this would be marked with a single black diamond. + // "DIFFICULTY_ADVANCED_DIFFICULT" - An advanced-difficult level ski + // trail. In the US, this would be marked with double-black diamonds. + Difficulty string `json:"difficulty,omitempty"` + + // Possible values: + // "TYPE_ANY" - ABSTRACT + // "TYPE_GLADE" - Glade trails are ski paths that traverse wooded + // areas; they may be well-defined or not, and groomed or ungroomed. + // Ideally, they should be rendered differently on map tiles to + // distinguish them from standard ski trails. + // "TYPE_TRAIL_TERRAIN" - A terrain-park area, usually containing + // special features such as jumps or half-pipes. + // "TYPE_TRAIL" - A regular ski-trail. + // "TYPE_RACE_COURSE" - A trail specifically used for ski races. + // "TYPE_BOWL" - Bowls are large open areas, usually steep and often + // rocky, that are open for skiing but don't have defined trails. They + // are frequented mostly by expert skiers. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Difficulty") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Difficulty") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSkiTrailProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSkiTrailProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSocialReferenceProto: MapFacts GAIA ID assigned to this +// feature. These values are virtual GAIA IDs from MapFacts, and as such +// are not stored in Focus. +type GeostoreSocialReferenceProto struct { + // BaseGaiaId: WARNING: Please do NOT introduce new uses; treat this + // field as if it were deprecated. + BaseGaiaId int64 `json:"baseGaiaId,omitempty,string"` + + // ClaimedGaiaId: GAIA ID used when a business has been claimed. This + // value is a robot GAIA ID. Robots are a special type of GAIA account + // used to denote identity for a user or a group of users, but are not + // logged-in directly by a user. + ClaimedGaiaId int64 `json:"claimedGaiaId,omitempty,string"` + + // GaiaIdForDisplay: WARNING: Please do NOT introduce new uses; treat + // this field as if it were deprecated. + GaiaIdForDisplay int64 `json:"gaiaIdForDisplay,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "BaseGaiaId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BaseGaiaId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSocialReferenceProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSocialReferenceProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSourceInfoProto: 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. +type GeostoreSourceInfoProto struct { + // AttributionUrl: This is the URL of a page representing all the data + // from this source in this feature. It may have be the ultimate source + // of the data (in case of scraping) or merely the same data styled + // according the provider's taste. There is a similar field in + // DataSourceProto which is NOT cached in this field, since it has a + // different meaning. + AttributionUrl []*GeostoreUrlProto `json:"attributionUrl,omitempty"` + + // CollectionDate: The time that this particular piece of data was + // collected. If different attributes were collected on different dates, + // this is the date of the most recent edit. + CollectionDate *GeostoreDateTimeProto `json:"collectionDate,omitempty"` + + // Cookie: A source info may have a magic cookie whose content and + // semantics are defined by the specific import process or third-party + // feed. For feeds that are processed by Distillery, the cookie, when + // set, should contain the unique identifier for the feature as provided + // by the feed. + Cookie string `json:"cookie,omitempty"` + + // Dataset: The dataset from which this SourceInfoProto was created. The + // content of this string will be determined by the data provider (e.g. + // for MultiNet data, "fra" would indicate the dataset for France). This + // field is unnecessary for providers that deliver a single dataset per + // release (e.g. Basarsoft). + Dataset string `json:"dataset,omitempty"` + + // GaiaId: The Gaia ID of the user who provided us with this data. This + // field should never be set on source infos present on features, but + // may be set on source infos present on edits. DEPRECATED: Most clients + // should use the "user" field instead where Gaia IDs are encrypted. + GaiaId int64 `json:"gaiaId,omitempty,string"` + + // ImpersonationUser: Information about an internal user or system that + // is operating on behalf of `user` by way of impersonation. + ImpersonationUser *GeostoreUserProto `json:"impersonationUser,omitempty"` + + // Layer: The name of the layer from which this SourceInfoProto was + // created. + Layer string `json:"layer,omitempty"` + + // OgrFid: The OGR feature identifier from which this SourceInfoProto + // was created. This is an internal OGR record identifier and has + // nothing to do with any of the feature's fields or the FeatureIdProto + // for the FeatureProto containing this SourceInfoProto. This field is + // present only for debugging purposes and possible use in the match + // pattern of a FeatureChangeProto designed to fix bad source data very + // early in the importing process. + OgrFid int64 `json:"ogrFid,omitempty,string"` + + // Provider: The data provider from which this source info was + // generated. The value must be equal to the one on the TYPE_DATA_SOURCE + // feature referenced by this source info via the source_id reference + // (see above). + Provider int64 `json:"provider,omitempty"` + + // RawData: A source info may optionally have a set of key-value pairs + // that provide "raw data" specific to that source. The types of raw + // data available will vary from one provider to another and should not + // be used in production code. Instead, new fields and/or protocol + // buffers should be defined to represent this information in a + // canonical form, and the relevant importers should be modified to + // populate these new fields. + RawData []*GeostoreRawDataProto `json:"rawData,omitempty"` + + // Release: The data release from which this SourceInfoProto was + // created. The format for this string is provider-dependent (e.g. a + // MultiNet release would look like "2008.01"). + Release string `json:"release,omitempty"` + + // SourceId: A source info may have a corresponding TYPE_DATA_SOURCE + // feature that describes it (provider, copyright information, date of + // release, etc). In the context of edits and issues, this field should + // not be set. + SourceId *GeostoreFeatureIdProto `json:"sourceId,omitempty"` + + // TemporaryData: A place for clients to attach arbitrary data to a + // source info. Never set in MapFacts. + TemporaryData *Proto2BridgeMessageSet `json:"temporaryData,omitempty"` + + // User: RESERVED + User *GeostoreUserProto `json:"user,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AttributionUrl") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AttributionUrl") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSourceInfoProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSourceInfoProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSourceTrustProto: 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. +type GeostoreSourceTrustProto struct { + // Level: The level of trust for the source of the observation. + // + // Possible values: + // "UNKNOWN" - Value not set + // "BLOCKED" - Should not be used (e.g. known spammer, 404 url) + // "NOT_TRUSTED" - Edits from external users. + // "YP_FEEDS" - Trusted feeds like IUSA etc. (See note below). + // "TRUSTED" - Internal operators, approved edits. + // "SUPER_TRUSTED" - Internal admin operators + Level string `json:"level,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Level") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Level") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSourceTrustProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSourceTrustProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSpeedLimitProto: A speed limit, containing both the limit and +// the conditions in which it applies. +type GeostoreSpeedLimitProto struct { + // Category: The type of speed limit. + // + // Possible values: + // "SPEED_LIMIT_CATEGORY_UNKNOWN" - Default proto value, this value + // will never be set in MapFacts. + // "NONE" - Speed limits that apply outside of any particular category + // (contrast to the following categories.) + // "SCHOOL" - Speed limits that apply in a school zone. + // "CONSTRUCTION" - Speed limits that apply in a construction zone. + Category string `json:"category,omitempty"` + + // Condition: The conditions under which this speed limit is applicable. + // If multiple conditions are set, at least one of them must be true. + Condition []*GeostoreRoadConditionalProto `json:"condition,omitempty"` + + // SpeedWithUnit: A constant speed limit. + SpeedWithUnit *GeostoreSpeedProto `json:"speedWithUnit,omitempty"` + + // UnlimitedSpeed: A speed limit with no limit value. When there is no + // speed limit in place. + UnlimitedSpeed *GeostoreUnlimitedSpeedProto `json:"unlimitedSpeed,omitempty"` + + // VariableSpeed: A dynamic speed limit that can vary within a range of + // values based on road conditions. + VariableSpeed *GeostoreVariableSpeedProto `json:"variableSpeed,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Category") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Category") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSpeedLimitProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSpeedLimitProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSpeedProto: A speed value and unit. +type GeostoreSpeedProto struct { + Speed float64 `json:"speed,omitempty"` + + // Possible values: + // "UNIT_UNKNOWN" - Default proto value, this value will never be set + // in MapFacts. + // "MILES_PER_HOUR" + // "KILOMETERS_PER_HOUR" + Unit string `json:"unit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Speed") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Speed") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSpeedProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSpeedProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreSpeedProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreSpeedProto + var s1 struct { + Speed gensupport.JSONFloat64 `json:"speed"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Speed = float64(s1.Speed) + return nil +} + +// GeostoreStableFieldPathProto: 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[*].altitu +// de +type GeostoreStableFieldPathProto struct { + // FieldPath: A sequence of field selectors to be traversed starting + // from the root message. + FieldPath []*GeostoreStableFieldPathProtoStableFieldSelector `json:"fieldPath,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FieldPath") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FieldPath") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreStableFieldPathProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreStableFieldPathProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreStableFieldPathProtoStableFieldSelector struct { + // FieldNum: Field number to select. + FieldNum int64 `json:"fieldNum,omitempty"` + + // VersionToken: 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. + VersionToken string `json:"versionToken,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FieldNum") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FieldNum") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreStableFieldPathProtoStableFieldSelector) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreStableFieldPathProtoStableFieldSelector + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreSweepProto: 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. +type GeostoreSweepProto struct { + // OtherSegmentFeatureId: The segment feature connected to this segment + // via the sweep geometry. + OtherSegmentFeatureId *GeostoreFeatureIdProto `json:"otherSegmentFeatureId,omitempty"` + + // Polygon: Polygonal geometry representing the area between this + // segment and the other segment. + Polygon *GeostorePolygonProto `json:"polygon,omitempty"` + + // SweepCurve: Describes parameters for generating the edge of this + // sweep that starts at edge_follows_segment_end_fraction. The other + // side of the sweep should be described on the sweep present on the + // sibling pair. + SweepCurve *GeostoreCurveConnectionProto `json:"sweepCurve,omitempty"` + + // SweepToken: A token that can be used to identify the version of the + // data about this sweep. + SweepToken string `json:"sweepToken,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "OtherSegmentFeatureId") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OtherSegmentFeatureId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreSweepProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreSweepProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTelephoneProto: This protocol buffer is used to represent +// telephone numbers and related information. +type GeostoreTelephoneProto struct { + // CallRate: RESERVED + CallRate []*GeostorePriceRangeProto `json:"callRate,omitempty"` + + // ContactCategory: RESERVED + // + // Possible values: + // "CONTACT_CATEGORY_UNSPECIFIED" + // "CUSTOMER_SERVICE" - Provides service to customers before, during, + // or after a purchase. /m/03w5xm + // "RESERVATIONS" - Allows customers to reserve a seat, ticket, room, + // etc. /m/0n9nm2h + // "SALES" - Provides information about a purchase of a product or + // service. /m/014dgf + ContactCategory string `json:"contactCategory,omitempty"` + + // Possible values: + // "FLAG_NO_COLD_CALLS" - DEPRECATED + // "FLAG_PREFERRED" - This number is (one of) the preferred numbers to + // call. It should be displayed before other numbers in maps/placepage, + // for example. For each language served, there shall be at most 1 + // preferred phone (i.e., if there are two preferred phones, then the + // intersection between the "language" array should be empty). Note that + // the presence of a "preferred" phone doesn't state that we have no + // confidence on the other numbers of this establishment. The preference + // is based on the fact that this number is the primary customer service + // number, reservation hot line, etc. + Flag []string `json:"flag,omitempty"` + + // IsSharedNumber: True if this phone number is not unique to this + // establishment and might be shared with other features. In case an + // establishment shares a phone number with a business chain of which it + // is a member, and the number canonically belongs to that chain, it + // should be marked as shared for the establishment but not shared for + // the chain. + IsSharedNumber bool `json:"isSharedNumber,omitempty"` + + // Label: RESERVED + Label []*GeostoreNameProto `json:"label,omitempty"` + + // Language: RESERVED + Language []string `json:"language,omitempty"` + + // Metadata: Field-level metadata for this telephone number. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Number: ** DEPRECATED ** This is deprecated in favor of phone_number + // below. An internationalized representation of a phone number. See + // //location/country/telephonenumber.proto + Number *TelephoneNumber `json:"number,omitempty"` + + // PhoneNumber: An internationalized representation of a phone number. + // See //java/com/google/i18n/phonenumbers/phonenumber.proto + PhoneNumber *I18nPhonenumbersPhoneNumber `json:"phoneNumber,omitempty"` + + // ServiceLocationFeature: RESERVED + ServiceLocationFeature []*GeostoreFeatureIdProto `json:"serviceLocationFeature,omitempty"` + + // Possible values: + // "VOICE" + // "FAX" + // "TDD" + // "DATA" + // "MOBILE" - The MESSAGING type should not be used in FeatureProto, + // but will be used in the context of KG /common/phone_number/type. + // "MESSAGING" - RESERVED + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CallRate") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CallRate") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTelephoneProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTelephoneProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTemporaryClosureProto: 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. +type GeostoreTemporaryClosureProto struct { + // EndAsOfDate: The latest when this closure may end, if the exact date + // is unknown. If set, the feature is operational again no later than + // this date. + EndAsOfDate *GeostoreDateTimeProto `json:"endAsOfDate,omitempty"` + + // EndDate: RESERVED + EndDate *GeostoreDateTimeProto `json:"endDate,omitempty"` + + // StartAsOfDate: The latest when this closure may start, if the exact + // date is unknown. If set, the feature is temporarily closed starting + // no later than this date. + StartAsOfDate *GeostoreDateTimeProto `json:"startAsOfDate,omitempty"` + + // StartDate: RESERVED + StartDate *GeostoreDateTimeProto `json:"startDate,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndAsOfDate") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndAsOfDate") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTemporaryClosureProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTemporaryClosureProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTextAffixProto: Represents text (with an associated language) +// that is affixed to the beginning and/or end of a primary text. +type GeostoreTextAffixProto struct { + // Language: The external form of a Google International Identifiers + // Initiative (III) LanguageCode object. See + // google3/i18n/identifiers/languagecode.h for details. These strings + // should be treated as opaque blobs. You can use + // LanguageCodeConverter::FromOther to convert the string to a + // LanguageCode reference. You can then call methods on the LanguageCode + // class to extract language/script/region subtags (if any). See also + // http://g3doc/i18n/identifiers/g3doc/using-iii. We place extra + // restrictions on languages in addition to what the III library + // requires. See + // http://go/geo-schema-reference/feature-properties/languages.md + Language string `json:"language,omitempty"` + + // Prefix: Text to prepend to the primary text, including any necessary + // trailing whitespace. At least one of prefix or suffix is required. + Prefix string `json:"prefix,omitempty"` + + // Suffix: Text to append to the end of the primary text, including any + // necessary leading whitespace. At least one of prefix or suffix is + // required. + Suffix string `json:"suffix,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Language") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Language") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTextAffixProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTextAffixProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreThreeDimensionalModelProto struct { + // PointIndices: Triangle vertex indices, each triple defines a + // triangle. + PointIndices []int64 `json:"pointIndices,omitempty"` + + // Points: We store a triangular mesh in indexed format. Points array. + Points []*GeostorePointWithHeightProto `json:"points,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PointIndices") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PointIndices") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreThreeDimensionalModelProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreThreeDimensionalModelProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTimeBasedRateProto: 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. +type GeostoreTimeBasedRateProto struct { + // DurationBasedRate: The rates for this rule. Each duration_based_rate + // defines the costs associated with a particular duration of a stay. + // There must be at least one rate with range_start_seconds set to 0 and + // there cannot be gaps between durations (i.e. there should be no + // interval uncovered between 0 and the largest range_end_seconds of any + // duration-based rate). + DurationBasedRate []*GeostoreDurationBasedRateProto `json:"durationBasedRate,omitempty"` + + // TaxIncluded: If true, tax is included in the prices in this rate. If + // false, additional taxes may apply. + TaxIncluded bool `json:"taxIncluded,omitempty"` + + ValidEndWithin *GeostoreTimeScheduleProto `json:"validEndWithin,omitempty"` + + // ValidStartWithin: Time period during which utilization of this rate + // must start in order to be eligible for the rate. If not set, there is + // no restriction on the time when the utilization starts. + ValidStartWithin *GeostoreTimeScheduleProto `json:"validStartWithin,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DurationBasedRate") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DurationBasedRate") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTimeBasedRateProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTimeBasedRateProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreTimeComponentProto struct { + // Possible values: + // "COMPONENT_TYPE_POSITIVE" - Indicates that this time component is + // set with regards to what the component is trying to model. For + // instance, if this time component models opening hours for a business + // then COMPONENT_TYPE_POSITIVE means open and if it models a road + // restriction COMPONENT_TYPE_POSITIVE means the road is closed. + // "COMPONENT_TYPE_MISSING_DATA" - Indicates that data for this time + // component is absent and that making assumptions about data over the + // time period this component represents may be unsafe. For instance, if + // this time component models opening hours for a business then + // COMPONENT_TYPE_MISSING_DATA can be used to explicitly record that we + // are missing data (eg. Sunday is not listed in the hours). NOTE: Not + // all uses of this proto support the COMPONENT_TYPE_MISSING_DATA + // component_type. + ComponentType string `json:"componentType,omitempty"` + + // Interval: The time component is the intersection of these intervals + Interval []*GeostoreTimeIntervalProto `json:"interval,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ComponentType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ComponentType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTimeComponentProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTimeComponentProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTimeEndpointProto: 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) +// ---------------------------------------------------------------------- +// ------- +type GeostoreTimeEndpointProto struct { + // Day: Valid ranges are 0-7, 1-31, and 1-366 (see day_type below) + Day int64 `json:"day,omitempty"` + + // Possible values: + // "DAY_OF_WEEK" - Valid day range 0-7. (see enum DayOfWeek) + // "DAY_OF_MONTH" - Valid day range 1-31, must be valid day in month + // "DAY_OF_YEAR" - Eg day = 31 is not valid if month = September Valid + // day range 1-366 + DayType string `json:"dayType,omitempty"` + + // Hour: Valid range is 0-24. Because it could be unclear what wrapping + // hours mean in relation to days, 24 is used to denote midnight at the + // end of a day. + Hour int64 `json:"hour,omitempty"` + + // Minute: Valid range is 0-59, except when a repetitive minute interval + // ends at the end of an hour, in which case 60 is a legal end value. + Minute int64 `json:"minute,omitempty"` + + // Possible values: + // "JANUARY" + // "FEBRUARY" + // "MARCH" + // "APRIL" + // "MAY" + // "JUNE" + // "JULY" + // "AUGUST" + // "SEPTEMBER" + // "OCTOBER" + // "NOVEMBER" + // "DECEMBER" + // "NEXT_JANUARY" - The following value is used to define the end of a + // recurring interval that ends at the end of the year. It can be used + // without a day to represent the end of an interval with month + // resolution (e.g. November through December) or with a day of month of + // 1 to represent the end of an interval with day resolution (e.g. + // November 15th through December 31th). This is similar to using hour + // 24 to represent the end of a recurring interval with hour resolution + // that ends at midnight. Also see + // http://g/pathfinder-team/NFS3S4L2lhs/tdMSGr0H9r4J for a real example. + Month string `json:"month,omitempty"` + + // Second: Valid range is 0-59, except when a repetitive second interval + // ends at the end of a minute, in which case 60 is a legal end value. + Second int64 `json:"second,omitempty"` + + // Week: Valid ranges are 0-5 and 1-53 (depending on the value of + // week_type, see below). + Week int64 `json:"week,omitempty"` + + // Possible values: + // "WEEK_OF_MONTH" - Valid week range 0-5. + // "WEEK_OF_YEAR" - Note: Weeks of this type are numbered such that + // week 0 begins on the 1st of the month and extends for 7 days. This + // has the consequence that week 4 never has a full 7 days. For example, + // for a month with 31 days, dates 1-7 are in week 0, 8-14 in week 1, + // 15-21 in week 2, 22-28 in week 3, and 29-31 in week 4. Week 5 is + // considered the first week of next month, and much like using `24` for + // the hour field or `NEXT_JANUARY` for the month field, is meant only + // to denote that an interval includes week 4. Valid week range 1-53. + WeekType string `json:"weekType,omitempty"` + + Year int64 `json:"year,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Day") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Day") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTimeEndpointProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTimeEndpointProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreTimeIntervalProto struct { + // Begin: 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()). + Begin *GeostoreTimeEndpointProto `json:"begin,omitempty"` + + End *GeostoreTimeEndpointProto `json:"end,omitempty"` + + // Inverted: 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 ] ] + Inverted bool `json:"inverted,omitempty"` + + // Occasion: clang-format on + // + // Possible values: + // "OCCASION_SEASON" - NavTeq just uses "seasonal closure = yes". + // "OCCASION_SEASON_WINTER" + // "OCCASION_SEASON_SUMMER" - "Ski season" appears in Tele Atlas once. + // Use OCCASION_SEASON_WINTER instead. + // "OCCASION_DAYS" + // "OCCASION_DAYS_SCHOOL" + // "OCCASION_DAYS_HOLIDAY" + // "OCCASION_DAYS_PRE_HOLIDAY" + // "OCCASION_HOURS" + // "OCCASION_HOURS_PEAK" + // "OCCASION_HOURS_SCHOOL" - OCCASION_HOURS_OFF_PEAK doesn't exist + // because it's the inverse of OCCASION_HOURS_PEAK. + // "OCCASION_HOURS_MARKET" + // "OCCASION_HOURS_BUSINESS" - Business hours appears only three + // times. + // "OCCASION_HOURS_DUSK_TO_DAWN" + // "OCCASION_HOURS_HIGH_TIDE" - OCCASION_HOURS_DAWN_TO_DUSK doesn't + // exist because it's the inverse of OCCASION_HOURS_DUSK_TO_DAWN. + // "OCCASION_CONDITIONS" + // "OCCASION_CONDITIONS_HIGH_WATER" + // "OCCASION_CONDITIONS_ADVERSE" - Adverse conditions include rain, + // storms, and fog. + // "OCCASION_CONDITIONS_ADVERSE_RAIN" + // "OCCASION_CONDITIONS_ADVERSE_WET" + // "OCCASION_CONDITIONS_ADVERSE_FOG" + // "OCCASION_CONDITIONS_WINTERY" - Wintery conditions include snow and + // ice. + // "OCCASION_CONDITIONS_WINTERY_AVALANCHE" + // "OCCASION_CONDITIONS_WINTERY_SNOW" + // "OCCASION_CONDITIONS_WINTERY_ICE" + // "OCCASION_CONDITIONS_EVENT" + // "OCCASION_CONDITIONS_POLLUTION" + // "OCCASION_CONDITIONS_LOW_WATER" + // "OCCASION_UNDEFINED" + // "OCCASION_UNDEFINED_REGULAR" + // "OCCASION_UNDEFINED_SELDOM" + Occasion string `json:"occasion,omitempty"` + + // Possible values: + // "TYPE_OCCASION" - Indicates a fuzzy interval using one of the + // occasion constants. + // "TYPE_RANGE" - Indicates a range of times between two endpoints, as + // specified in TimeEndpointProto. The endpoint is NOT inclusive. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Begin") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Begin") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTimeIntervalProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTimeIntervalProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreTimeScheduleProto struct { + // Component: The schedule is the union of these components. + Component []*GeostoreTimeComponentProto `json:"component,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Component") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Component") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTimeScheduleProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTimeScheduleProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTimezoneProto: A TimezoneProto holds information about a +// feature's related time zone. +type GeostoreTimezoneProto struct { + // Id: i18n recognized time zone identifier. For the full list of + // identifiers, see google3/i18n/identifiers/data/timezones.txt. + Id string `json:"id,omitempty"` + + // Metadata: Field-level metadata for this relation. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTimezoneProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTimezoneProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTollClusterProto: A collection of information that applies to +// a toll cluster. +type GeostoreTollClusterProto struct { + // Intersection: The list of TYPE_INTERSECTION features that are toll + // points and form this toll cluster. A toll cluser can consist of + // either a single or a group of intersection points called toll points + // at the end of various road segments in MapFacts that represent one or + // more lanes passing through a toll fixture that all go to the same + // routing destination. This relationship is reciprocal, as a toll point + // intersection also stores a reference to the toll cluster it belongs + // to. A toll cluster must have reference to one or more toll points + // i.e. toll_cluster.intersection should always be populated. + Intersection []*GeostoreFeatureIdProto `json:"intersection,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Intersection") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Intersection") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTollClusterProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTollClusterProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreTrackProto struct { + // Index: The index of this TrackProto in a list of TrackProtos. + Index int64 `json:"index,omitempty"` + + // Pose: The instantaneous pose of points along this track. The fields + // set inside each pose must be set consistently along the track. + Pose []*GeostorePoseProto `json:"pose,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Index") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Index") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTrackProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTrackProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTransitLineProto: 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. +type GeostoreTransitLineProto struct { + // Agency: The transit agencies responsible for operating this line. All + // lines should have at least one agency, and most will have exactly + // one. The following cases are reasons for multiple agencies: - Code + // share: Two or more agencies share trips - Alternations: Each trip is + // run by one of multiple agencies - Additional: All trips run by one + // agency, but a second one sells tickets In all cases the order has no + // meaning. Clarification comes from the trips. + Agency []*GeostoreFeatureIdProto `json:"agency,omitempty"` + + // LabelBackgroundColor: The background color of labels for that transit + // line. The encoding is like in HTML or CSS, eg. 0x11ff00 means a bit + // of red, full green, no blue, in sRGB color space. The most + // significant byte must be zero, i.e. no transparency. + LabelBackgroundColor int64 `json:"labelBackgroundColor,omitempty"` + + // LabelTextColor: The text color of labels for that transit line. + // Encoding like label_background_color. + LabelTextColor int64 `json:"labelTextColor,omitempty"` + + // Stations: The transit stations (establishment POIs with + // gcid:transit_station) which this transit line can go through, in no + // particular order. Usage note: The source of truth are the transit leg + // features in Transit Oyster. In MapFacts, that information is cached + // in two locations: in this field, and in transit station attachments + // on POIs. Do not assume these locations are always up to date and/or + // synchronized with each other. + Stations []*GeostoreFeatureIdProto `json:"stations,omitempty"` + + // VehicleType: The type of vehicle that applies to all trips that use + // this line. + // + // Possible values: + // "VEHICLE_TYPE_ANY" - ABSTRACT + // "VEHICLE_TYPE_RAIL" - ABSTRACT Metropolitan railway transport, + // mostly for local transit. + // "VEHICLE_TYPE_METRO_RAIL" - ABSTRACT + // "VEHICLE_TYPE_SUBWAY" - Subways run mainly or completely + // underground. + // "VEHICLE_TYPE_TRAM" - Trams run mainly or completely along streets. + // "VEHICLE_TYPE_MONORAIL" - Monorails run on track consisting of a + // single rail, e.g. suspended monorail. + // "VEHICLE_TYPE_HEAVY_RAIL" - Heavy rail is rail transit that + // consists of larger vehicles, typically to transport more people + // across longer distances. + // "VEHICLE_TYPE_COMMUTER_TRAIN" - Commuter trains connect the city + // with the suburbs. They tend to stop often and run short distances. + // "VEHICLE_TYPE_HIGH_SPEED_TRAIN" - High speed trains operate at much + // higher speed than normal trains. They can also run long distances. + // Typically with speeds upwards of 200 km/h. Examples are TGV, ICE, + // Shinkansen. + // "VEHICLE_TYPE_LONG_DISTANCE_TRAIN" - Long distance trains connect + // multiple cities/regions of a country or even multiple countries. They + // run faster, but not high-speed. Typically speeds under 200 km/h. + // "VEHICLE_TYPE_BUS" - Buses cover mass transit over roads. + // "VEHICLE_TYPE_INTERCITY_BUS" - A bus that connects cities to each + // other. + // "VEHICLE_TYPE_TROLLEYBUS" - A bus powered by electricity obtained + // from overhead wires by means of a pole. + // "VEHICLE_TYPE_SHARE_TAXI" - Share taxi is sort of bus transport + // with ability to drop off and pick up passengers anywhere on it route. + // Generally share taxi uses minibus vehicles. + // "VEHICLE_TYPE_FERRY" - Ferries are a means of transit over water, + // often operated on regular, frequent, return services. + // "VEHICLE_TYPE_CABLE_CAR" - Cable cars are a form of transit used in + // the mountains. + // "VEHICLE_TYPE_GONDOLA_LIFT" - An aerial lift (colloquially called + // "gondola lift") is a means of cable transport in which cabins, cars, + // gondolas or open chairs are hauled above the ground by means of one + // or more cables. Examples: gondola lift, aerial tramway. Funicular is + // a cable railway in which a pair of tram-like vehicles use each other + // as counter balance to ascend and descend. + // "VEHICLE_TYPE_FUNICULAR" + // "VEHICLE_TYPE_SPECIAL" - Used for easter eggs. + // "VEHICLE_TYPE_HORSE_CARRIAGE" + // "VEHICLE_TYPE_AIRPLANE" + VehicleType string `json:"vehicleType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Agency") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Agency") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTransitLineProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTransitLineProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTransitLineVariantProto: 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 +type GeostoreTransitLineVariantProto struct { + // LineConcept: Reference to the line variant’s line concept. + LineConcept *GeostoreFeatureIdProto `json:"lineConcept,omitempty"` + + // Stops: Ordered list of stations or platforms serviced by this line + // variant. The order is captured by the ServicedStopProto.index field. + Stops []*GeostoreServicedStopProto `json:"stops,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LineConcept") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LineConcept") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTransitLineVariantProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTransitLineVariantProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreTransitStationProto: Encapsulates information related to an +// individual transit station. +type GeostoreTransitStationProto struct { + // Agencies: Transit agencies which service this transit station. A + // station can be serviced by one or more transit agencies. See + // go/transit-agency-relation-migration for more information. + Agencies []*GeostoreFeatureIdProto `json:"agencies,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Agencies") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Agencies") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTransitStationProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTransitStationProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GeostoreTrustSignalsProto struct { + // SourceTrust: Trust signals for the source of a given observation, + // typically based on historical evidences or status (like internal + // Google operator). + SourceTrust *GeostoreSourceTrustProto `json:"sourceTrust,omitempty"` + + // ForceSendFields is a list of field names (e.g. "SourceTrust") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SourceTrust") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreTrustSignalsProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreTrustSignalsProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreUnlimitedSpeedProto: A speed limit without a limit value. +// Used to indicate the absence of a speed limit. +type GeostoreUnlimitedSpeedProto struct { +} + +// GeostoreUrlListProto: Hold a list of URLs, usually to contain +// translations of a single URL. +type GeostoreUrlListProto struct { + Url []*GeostoreUrlProto `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Url") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Url") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreUrlListProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreUrlListProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreUrlProto: 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. +type GeostoreUrlProto struct { + // Language: The external form of a Google International Identifiers + // Initiative (III) LanguageCode object. See + // google3/i18n/identifiers/languagecode.h for details. We place extra + // restrictions on languages in addition to what the III library + // requires. See + // http://go/geo-schema-reference/feature-properties/languages.md This + // field represents the language of the content of the web site. It may + // be missing if the web site is language-independent or if the language + // is unknown. + Language string `json:"language,omitempty"` + + // Metadata: Field-level metadata for this URL. NOTE: there are multiple + // UrlProto fields in the Geo Schema. Metadata here is only expected to + // be present on FeatureProto.website[]. + Metadata *GeostoreFieldMetadataProto `json:"metadata,omitempty"` + + // Pagerank: ** DEPRECATED ** The pagerank of this URL. Valid values [0, + // 65535] See http://wiki/Main/NearestSeeds for more information. + Pagerank int64 `json:"pagerank,omitempty"` + + // Url: The URL. + Url string `json:"url,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Language") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Language") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreUrlProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreUrlProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreUserProto: 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. +type GeostoreUserProto struct { + // EncryptedGaiaId: The user Gaia ID in encrypted form. Wipeout ids take + // value of "" in bytes. + EncryptedGaiaId string `json:"encryptedGaiaId,omitempty"` + + // EncryptionKeyName: Required. The name of the key used to encrypt the + // Gaia ID. + EncryptionKeyName string `json:"encryptionKeyName,omitempty"` + + // KeystoreConfigId: Required (valid default provided). The config ID of + // the owner of the above encryption_key_name. This field must be set if + // the encryption key name is *not* "mapfacts_gaia_id_encryption_key". + KeystoreConfigId int64 `json:"keystoreConfigId,omitempty"` + + // Username: If possible, writers should set this to a full user email, + // including the domain. Readers should not assume that this is a + // well-formed email address. This field may only be set by Atlas, + // Pushpin and OneRing because they are internal tools which have a PWG + // exception to store textual usernames in the clear. + Username string `json:"username,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EncryptedGaiaId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EncryptedGaiaId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreUserProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreUserProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreVariableSpeedProto: A speed limit whose value can change +// based on road, traffic, and weather conditions. +type GeostoreVariableSpeedProto struct { +} + +// GeostoreVehicleAttributeFilterProto: 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. +type GeostoreVehicleAttributeFilterProto struct { + // AxleCount: A repeated value here is treated as an AND operation. This + // allows for ranges to be represented by two values (ex: "count < 4" + // AND "count >= 2" means "2 <= count < 4"). + AxleCount []*GeostoreCountComparisonProto `json:"axleCount,omitempty"` + + // HasTrailer: Whether the applied vehicle types have a trailer attached + // to them. + HasTrailer bool `json:"hasTrailer,omitempty"` + + // HazardousGoods: List of prohibited hazardous goods for a vehicle to + // carry. A repeated value here is treated as an OR operation, meaning + // that they may not carry ANY of the goods listed. + // + // Possible values: + // "HAZARDOUS_GOODS_TYPE_UNSPECIFIED" + // "EXPLOSIVES" + // "GASES" + // "FLAMMABLE" + // "COMBUSTIBLE" + // "ORGANIC" + // "POISON" + // "RADIOACTIVE" + // "CORROSIVE" + // "ASPIRATION_HAZARD" + // "ENVIRONMENTAL_HAZARD" + // "OTHER" + HazardousGoods []string `json:"hazardousGoods,omitempty"` + + // NumTrailers: A repeated value here is treated as an AND operation. + // This allows for ranges to be represented by two values (ex: "count <= + // 4" AND "count > 2" means "2 < count <= 4"). + NumTrailers []*GeostoreCountComparisonProto `json:"numTrailers,omitempty"` + + // TrailerLength: A repeated value here is treated as an AND operation. + // This allows for ranges to be represented by two values (ex: "length + // <= 53ft" AND "length > 48ft" means "48ft < length <= 53ft"). + TrailerLength []*GeostoreDimensionComparisonProto `json:"trailerLength,omitempty"` + + // VehicleHeight: A repeated value here is treated as an AND operation. + // This allows for ranges to be represented by two values (ex: "height > + // 3m" AND "height <= 5m" means "3m < height <= 5m"). + VehicleHeight []*GeostoreDimensionComparisonProto `json:"vehicleHeight,omitempty"` + + // VehicleLength: A repeated value here is treated as an AND operation. + // This allows for ranges to be represented by two values (ex: "length + // <= 40m" AND "length > 35m" means "35m < length <= 40m"). + VehicleLength []*GeostoreDimensionComparisonProto `json:"vehicleLength,omitempty"` + + // VehicleWeight: A repeated value here is treated as an AND operation. + // This allows for ranges to be represented by two values (ex: "weight < + // 8T" AND "weight >= 3T" means "3T <= weight < 8T"). + VehicleWeight []*GeostoreWeightComparisonProto `json:"vehicleWeight,omitempty"` + + // VehicleWidth: A repeated value here is treated as an AND operation. + // This allows for ranges to be represented by two values (ex: "width < + // 4m" AND "width >= 2m" means "2m <= width < 4m"). + VehicleWidth []*GeostoreDimensionComparisonProto `json:"vehicleWidth,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AxleCount") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AxleCount") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreVehicleAttributeFilterProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreVehicleAttributeFilterProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreVerticalOrderingProto: 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. +type GeostoreVerticalOrderingProto struct { + // Level: The level represents the relative vertical ordering of a + // feature among all overlapping features. For example, we may have + // features along freeway surface have level = 0, and features on an + // overpass have level = 1. NOTE: It’s assumed that all features have + // level 0 by default, so that it’s not necessary for all overlapping + // features to have this set. + Level float64 `json:"level,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Level") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Level") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreVerticalOrderingProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreVerticalOrderingProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreVerticalOrderingProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreVerticalOrderingProto + var s1 struct { + Level gensupport.JSONFloat64 `json:"level"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Level = float64(s1.Level) + return nil +} + +// GeostoreWeightComparisonProto: A weight value tagged with a +// comparison operator. +type GeostoreWeightComparisonProto struct { + // Possible values: + // "COMPARISONOPERATOR_UNKNOWN" - Default proto value, this value will + // never be set in Mapfacts. + // "LESS_THAN" + // "GREATER_THAN" + Comparison string `json:"comparison,omitempty"` + + // Possible values: + // "UNSPECIFIED" + // "EQUAL" + // "LESS_THAN" + // "LESS_THAN_OR_EQUAL" + // "GREATER_THAN" + // "GREATER_THAN_OR_EQUAL" + ComparisonOperator string `json:"comparisonOperator,omitempty"` + + WeightWithUnit *GeostoreWeightProto `json:"weightWithUnit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Comparison") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Comparison") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreWeightComparisonProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreWeightComparisonProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GeostoreWeightProto: A weight with a numerical value and unit. +type GeostoreWeightProto struct { + // Possible values: + // "UNIT_UNKNOWN" - Default proto value, this value will never be set + // in Mapfacts. + // "METRIC_TON" + // "LONG_TON" + // "SHORT_TON" + // "POUND" + // "KILOGRAM" + Unit string `json:"unit,omitempty"` + + Weight float64 `json:"weight,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Unit") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Unit") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GeostoreWeightProto) MarshalJSON() ([]byte, error) { + type NoMethod GeostoreWeightProto + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GeostoreWeightProto) UnmarshalJSON(data []byte) error { + type NoMethod GeostoreWeightProto + var s1 struct { + Weight gensupport.JSONFloat64 `json:"weight"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Weight = float64(s1.Weight) + return nil +} + +// GoodocAnchorLabel: 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. +type GoodocAnchorLabel struct { + // Anchor: There is a generic method for composing such strings. Please + // take a look at GoodocUtils::GenerateUniqueAnchorName(...) in + // ocr/goodoc/goodoc-utils.h. + Anchor string `json:"Anchor,omitempty"` + + AnchorScope int64 `json:"anchorScope,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Anchor") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Anchor") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocAnchorLabel) MarshalJSON() ([]byte, error) { + type NoMethod GoodocAnchorLabel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocBoundingBox: Bounding box for page structural elements: +// pictures, paragraphs, characters, etc. +type GoodocBoundingBox struct { + Height int64 `json:"Height,omitempty"` + + // Label: Optional magic label, so objects can be sorted on bounding box + // dimensions easily + Label int64 `json:"Label,omitempty"` + + // Left: BoundingBox coordinates and sizes are expressed in pixels + Left int64 `json:"Left,omitempty"` + + Top int64 `json:"Top,omitempty"` + + Width int64 `json:"Width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Height") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Height") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocBoundingBox) MarshalJSON() ([]byte, error) { + type NoMethod GoodocBoundingBox + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocBoxPartitions: 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. +type GoodocBoxPartitions struct { + Direction int64 `json:"direction,omitempty"` + + // Span: "span" is width or height, determined by "direction". If there + // are k partitions, then there are k - 1 "span" values, one for each + // except the last symbol (which is redundant). + Span []int64 `json:"span,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Direction") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Direction") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocBoxPartitions) MarshalJSON() ([]byte, error) { + type NoMethod GoodocBoxPartitions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocBreakLabel: Break label +type GoodocBreakLabel struct { + BreakLabelType int64 `json:"BreakLabelType,omitempty"` + + // IsPrefix: True if break prepends the element + IsPrefix bool `json:"isPrefix,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BreakLabelType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BreakLabelType") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoodocBreakLabel) MarshalJSON() ([]byte, error) { + type NoMethod GoodocBreakLabel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocCharLabel: Font label +type GoodocCharLabel struct { + // BaseLine: The shift of a character from the base line of the string + // in pixels + BaseLine int64 `json:"BaseLine,omitempty"` + + // CharacterHeight: Height of small characters in pixels on the source + // image + CharacterHeight int64 `json:"CharacterHeight,omitempty"` + + // Color: The foreground color of the symbol; the default color is 0 + // (black) + Color int64 `json:"Color,omitempty"` + + // Confidence: Symbol recognition confidence from OCR. Range depends + // upon OCR Engine. + Confidence int64 `json:"Confidence,omitempty"` + + // FontId: The font ID refers to the fonts table in the document header + FontId int64 `json:"FontId,omitempty"` + + // FontSize: Size in points (JFYI: point is 1/72"). This is rounded to + // the nearest whole number. + FontSize int64 `json:"FontSize,omitempty"` + + // FontSizeFloat: Size in points represented as float. + FontSizeFloat float64 `json:"FontSizeFloat,omitempty"` + + FontType int64 `json:"FontType,omitempty"` + + // HasUncertainHeight: If CharacterHeight is defined uncertainly + HasUncertainHeight bool `json:"HasUncertainHeight,omitempty"` + + // HorizontalScale: The horizontal scaling for a character, in percents. + // The default value for this property is 100, which corresponds to no + // scaling. + HorizontalScale int64 `json:"HorizontalScale,omitempty"` + + IsBold bool `json:"IsBold,omitempty"` + + IsItalic bool `json:"IsItalic,omitempty"` + + IsSmallCaps bool `json:"IsSmallCaps,omitempty"` + + IsStrikeout bool `json:"IsStrikeout,omitempty"` + + IsSubscript bool `json:"IsSubscript,omitempty"` + + IsSuperscript bool `json:"IsSuperscript,omitempty"` + + // IsSuspicious: If OCR Engine marked the character as "suspicious" + // (this character is likely to be recognized incorrectly). + IsSuspicious bool `json:"IsSuspicious,omitempty"` + + IsUnderlined bool `json:"IsUnderlined,omitempty"` + + // NotOcrablePerQA: True if a QA operator has marked this as not + // OCRable. This is used for complex equations, scripts that the + // operator can't type, or handwriting. + NotOcrablePerQA bool `json:"NotOcrablePerQA,omitempty"` + + // Penalty: Symbol-level penalty from the garbage text detector. Lower + // is better; range = [0,100]. + Penalty int64 `json:"Penalty,omitempty"` + + // SerifProbability: The probability that a character is written with a + // Serif font + SerifProbability int64 `json:"SerifProbability,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BaseLine") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BaseLine") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocCharLabel) MarshalJSON() ([]byte, error) { + type NoMethod GoodocCharLabel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocCharLabel) UnmarshalJSON(data []byte) error { + type NoMethod GoodocCharLabel + var s1 struct { + FontSizeFloat gensupport.JSONFloat64 `json:"FontSizeFloat"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.FontSizeFloat = float64(s1.FontSizeFloat) + return nil +} + +// GoodocDocument: Top-level representation of OCRed document +type GoodocDocument struct { + // EditingHistory: Debug info, recording the history of any editing done + // through the interface in goodoc-editing.h. The strings look like + // "MoveParagraph(page_index = 0, source_block_index = 3, ...); + EditingHistory []string `json:"EditingHistory,omitempty"` + + // LogicalEntity: Logical entities are stored as blobs. Depending on the + // kind of thing this is a goodoc of, a separate .proto file is expected + // to define the logical entity structure. Hence we can still parse this + // as a goodoc for people who dont care about this, and people who care + // about this can parse it specifically. + // ocr/goodoc/logical-entity-utils.h has methods to read and write + // these. See Goodoc++ doc + LogicalEntity []string `json:"LogicalEntity,omitempty"` + + // LogicalEntityMessageName: The names of the proto messages serialized + // in LogicalEntity, one for each LogicalEntity. The repetitions should + // number 0 to leave this unspecified, or they should equal the number + // of LogicalEntity strings. + LogicalEntityMessageName []string `json:"LogicalEntityMessageName,omitempty"` + + // SubDocuments: For multi-goodoc documents + SubDocuments []*GoodocDocument `json:"SubDocuments,omitempty"` + + Header *GoodocDocumentHeader `json:"header,omitempty"` + + Page []*GoodocDocumentPage `json:"page,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EditingHistory") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EditingHistory") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoodocDocument) MarshalJSON() ([]byte, error) { + type NoMethod GoodocDocument + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoodocDocumentHeader struct { + OcrEngineId string `json:"OcrEngineId,omitempty"` + + OcrEngineVersion string `json:"OcrEngineVersion,omitempty"` + + Font []*GoodocDocumentHeaderFont `json:"font,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OcrEngineId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OcrEngineId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocDocumentHeader) MarshalJSON() ([]byte, error) { + type NoMethod GoodocDocumentHeader + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoodocDocumentHeaderFont struct { + FontId int64 `json:"FontId,omitempty"` + + FontName string `json:"FontName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FontId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FontId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocDocumentHeaderFont) MarshalJSON() ([]byte, error) { + type NoMethod GoodocDocumentHeaderFont + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoodocDocumentPage struct { + // GarbageDetectorChangeList: 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). + GarbageDetectorChangeList int64 `json:"GarbageDetectorChangeList,omitempty"` + + GarbageDetectorWasProduction bool `json:"GarbageDetectorWasProduction,omitempty"` + + // Height: Height in pixels + Height int64 `json:"Height,omitempty"` + + // HorizontalDpi: Horizontal resolution in DPI. + HorizontalDpi int64 `json:"HorizontalDpi,omitempty"` + + Label *GoodocLabel `json:"Label,omitempty"` + + // PornScore: 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. + PornScore float64 `json:"PornScore,omitempty"` + + // TextConfidence: Page text recognition confidence. Range depends on + // the algorithm but should be consistent in a given volume. 0 is bad, + // 100 is good. + TextConfidence int64 `json:"TextConfidence,omitempty"` + + // VerticalDpi: Vertical resolution in DPI. + VerticalDpi int64 `json:"VerticalDpi,omitempty"` + + // Width: Width in pixels + Width int64 `json:"Width,omitempty"` + + Block []*GoodocDocumentPageBlock `json:"block,omitempty"` + + Mergedpageinfo []*GoodocDocumentPageMergedPageInfo `json:"mergedpageinfo,omitempty"` + + // PostOcrConfidence: Whether page-level text confidences and other + // summary data were computed by PostOcrUtils instead of the + // now-obsolete GarbageTextDetector + PostOcrConfidence bool `json:"postOcrConfidence,omitempty"` + + // Stats: Page level stats (font size, line spacing, etc.) + Stats *GoodocSummaryStats `json:"stats,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "GarbageDetectorChangeList") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "GarbageDetectorChangeList") to include in API requests with the JSON + // null value. By default, fields with empty values are omitted from API + // requests. However, any field with an empty value appearing in + // NullFields will be sent to the server as null. It is an error if a + // field in this list has a non-empty value. This may be used to include + // null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocDocumentPage) MarshalJSON() ([]byte, error) { + type NoMethod GoodocDocumentPage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocDocumentPage) UnmarshalJSON(data []byte) error { + type NoMethod GoodocDocumentPage + var s1 struct { + PornScore gensupport.JSONFloat64 `json:"PornScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.PornScore = float64(s1.PornScore) + return nil +} + +type GoodocDocumentPageBlock struct { + BlockType int64 `json:"BlockType,omitempty"` + + Box *GoodocBoundingBox `json:"Box,omitempty"` + + Label *GoodocLabel `json:"Label,omitempty"` + + // OrientationLabel: Which way is upright for this block, and what is + // the reading order (applicable if there is text here). + OrientationLabel *GoodocOrientationLabel `json:"OrientationLabel,omitempty"` + + Paragraph []*GoodocParagraph `json:"Paragraph,omitempty"` + + // RotatedBox: If RotatedBox is set, Box must be set as well. See + // RotatedBoundingBox. + RotatedBox *GoodocRotatedBoundingBox `json:"RotatedBox,omitempty"` + + // TextConfidence: Block text recognition confidence. Range depends on + // the algorithm but should be consistent in a given volume. 0 is bad, + // 100 is good. + TextConfidence int64 `json:"TextConfidence,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BlockType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BlockType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocDocumentPageBlock) MarshalJSON() ([]byte, error) { + type NoMethod GoodocDocumentPageBlock + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocDocumentPageMergedPageInfo: 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. +type GoodocDocumentPageMergedPageInfo struct { + OcrEngineId string `json:"OcrEngineId,omitempty"` + + OcrEngineVersion string `json:"OcrEngineVersion,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OcrEngineId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OcrEngineId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocDocumentPageMergedPageInfo) MarshalJSON() ([]byte, error) { + type NoMethod GoodocDocumentPageMergedPageInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocFontSizeStats: Statistics about a particular font size (from +// CharLabel.FontSize) aggregated over a range of symbols +type GoodocFontSizeStats struct { + // FontId: CharLabel.FontId and FontSize + FontId int64 `json:"fontId,omitempty"` + + FontSize int64 `json:"fontSize,omitempty"` + + // MedianHeight: The measurements are in pixels + MedianHeight int64 `json:"medianHeight,omitempty"` + + // MedianLineHeight: top to bottom + MedianLineHeight int64 `json:"medianLineHeight,omitempty"` + + // MedianLineSpace: bottom to next top in para + MedianLineSpace int64 `json:"medianLineSpace,omitempty"` + + // MedianLineSpan: top to next top in para + MedianLineSpan int64 `json:"medianLineSpan,omitempty"` + + MedianWidth int64 `json:"medianWidth,omitempty"` + + // NumLineSpaces: Lines (out of num_lines) that have a successor line + // within their para + NumLineSpaces int64 `json:"numLineSpaces,omitempty"` + + // NumLines: Line stats for this font. "top" corresponds to the highest + // ascender and "bottom" to the lowest descender. num_lines = # lines + // with > 50% symbols having this font + NumLines int64 `json:"numLines,omitempty"` + + NumSymbols int64 `json:"numSymbols,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FontId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FontId") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocFontSizeStats) MarshalJSON() ([]byte, error) { + type NoMethod GoodocFontSizeStats + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocLabel: Label aggregates all kinds of optional characteristics +// of page elements. +type GoodocLabel struct { + // AnchorLabel: AnchorLabel identifies a link target. + AnchorLabel []*GoodocAnchorLabel `json:"AnchorLabel,omitempty"` + + BreakLabel *GoodocBreakLabel `json:"BreakLabel,omitempty"` + + // CharLabel: CharLabel is specifically intended for symbols + CharLabel *GoodocCharLabel `json:"CharLabel,omitempty"` + + // LanguageLabel: Languages used in the element (page, block, paragraph + // or word). Ordered by dominant-language first. Note: content scanjobs + // processed by the garbage_text_detector before CL 9223538 (Dec. 2008) + // have LanguageLabels in arbitrary order (within Page and Block + // elements) -- the confidence value should be inspected to find the + // dominant language guess for these, rather than just taking the first. + LanguageLabel []*GoodocLanguageLabel `json:"LanguageLabel,omitempty"` + + // SemanticLabel: SemanticLabel is defined in goodoc-semantics.proto, it + // allows rich annotation of content, identifying the nature of page + // elements. + SemanticLabel *GoodocSemanticLabel `json:"SemanticLabel,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AnchorLabel") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AnchorLabel") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocLabel) MarshalJSON() ([]byte, error) { + type NoMethod GoodocLabel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocLanguageCombinationLanguage: Weighted language +type GoodocLanguageCombinationLanguage struct { + // Bcp47Tag: Bcp47 language code. Note, this is not the same as + // OceanCode used by goodoc::Document. + Bcp47Tag string `json:"bcp47Tag,omitempty"` + + // Weight: Weight of language. This specifies how likely it is to see + // the language in the input text. The values don't have to add up to 1. + Weight float64 `json:"weight,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Bcp47Tag") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Bcp47Tag") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocLanguageCombinationLanguage) MarshalJSON() ([]byte, error) { + type NoMethod GoodocLanguageCombinationLanguage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocLanguageCombinationLanguage) UnmarshalJSON(data []byte) error { + type NoMethod GoodocLanguageCombinationLanguage + var s1 struct { + Weight gensupport.JSONFloat64 `json:"weight"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Weight = float64(s1.Weight) + return nil +} + +// GoodocLanguageLabel: Language label +type GoodocLanguageLabel struct { + // ClosestLanguageId: Closest id from + // i18n/languages/proto/languages.proto; caveat: may not accurately + // capture the language. GoodocLanguageCodeToLanguage() declared in + // ocr/goodoc/goodoc-utils.h may be used to convert a Language enum + // (i18n/languages/proto/languages.proto) to a string suitable for this + // field. + ClosestLanguageId int64 `json:"ClosestLanguageId,omitempty"` + + // Confidence: Confidence level on that language, between 0 and 100 + Confidence int64 `json:"Confidence,omitempty"` + + // LanguageCode: Old (Ocean) Language Code Usage: The language code is + // inferred during the running of the Garbage Text Detector and gets set + // at the paragraph, block and page level. Language code is a string of + // 3 or more characters. The first 3 letters specify the language, + // according to ISO 639. Optionally, the 3-letter code can be extended + // with an underscore and a language variant specifier. Specifiers exist + // for regional variants or for different forms of language spelling. + // The regional variants are specified as 2-letter country code, + // according to ISO 3166. Some examples: Standard "por" - Portuguese, + // standard "rus" - Russian, standard Regional variants: "por_br" - + // Portuguese, Brazilian "eng_us" - English, United States Variants of + // spelling: "rus_old" - Russian, old spelling "chi_tra" - Chinese, + // traditional "ger_new" - German, new spelling + // LanguageToGoodocLanguageCode() declared in ocr/goodoc/goodoc-utils.h + // may be used to convert a Language enum + // (i18n/languages/proto/languages.proto) to a string suitable for this + // field. New Language Code Usage: Most of the usages described above + // were standardized in BCP 47, and these codes are the new stanadard to + // be used in this field. To load either new or old language codes to + // form LanguageCode objects, use the function FromOceanCode() in + // ocr/quality/lang_util.h Note that the function ocr::FromOceanCode is + // capable of transforming either version of the LanguageCode to a C++ + // i18n_identifiers::LanguageCode. + LanguageCode string `json:"LanguageCode,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ClosestLanguageId") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ClosestLanguageId") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoodocLanguageLabel) MarshalJSON() ([]byte, error) { + type NoMethod GoodocLanguageLabel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocLogicalEntity: 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. +type GoodocLogicalEntity struct { + Metadata string `json:"Metadata,omitempty"` + + Link []*GoodocLogicalEntityLink `json:"link,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocLogicalEntity) MarshalJSON() ([]byte, error) { + type NoMethod GoodocLogicalEntity + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocLogicalEntityLink: 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." +type GoodocLogicalEntityLink struct { + // Anchor: The preferred way to link to an element is to create an + // AnchorLabel in the target element and name it here. Multiple elements + // may contain the same Anchor string. + Anchor string `json:"Anchor,omitempty"` + + BlockId int64 `json:"BlockId,omitempty"` + + // DocId: Links may also specifically locate the target element with the + // following indices. Note that during the course of layout analysis, + // goodoc elements may move around, so such hard links should be created + // only very late (or not at all -- Anchors would be more reliable + // target addresses). + DocId int64 `json:"DocId,omitempty"` + + PageId int64 `json:"PageId,omitempty"` + + ParagraphId int64 `json:"ParagraphId,omitempty"` + + RouteId int64 `json:"RouteId,omitempty"` + + SymbolId int64 `json:"SymbolId,omitempty"` + + // Url: If not defined, link points to the current doc + Url string `json:"Url,omitempty"` + + WordId int64 `json:"WordId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Anchor") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Anchor") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocLogicalEntityLink) MarshalJSON() ([]byte, error) { + type NoMethod GoodocLogicalEntityLink + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocOrdinal: 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. +type GoodocOrdinal struct { + // Possible values: + // "UNKNOWN_IMPLICIT" + // "IMPLICIT" + // "EXPLICIT" + Implicit string `json:"implicit,omitempty"` + + SectionStringValue string `json:"sectionStringValue,omitempty"` + + SectionValue int64 `json:"sectionValue,omitempty"` + + // SectionValueType: The following vars describe the section component + // of an ordinal (if exists). They are used to express situation where a + // page number has a section component, usually denoating the chapter + // number. For example pages 5-14, 5-15 will both have the common + // section 5. (If exists). The semantcis of the section variables + // correspond to that of the primary part of the ordinal. (Described + // above). + // + // Possible values: + // "UNKNOWN_VALUE_TYPE" + // "LEGACY_PRE_VALUE" - Not to be used + // "ROMAN" - Roman numeral + // "ASCII" - ASCII numeral (i.e. 1,2,3) + // "ALPHA" - Alphabetic, as in the first part of "A-11". + // "LEGACY_POST_VALUE" - Not to be used + // "UNDEFINED_VALUE_TYPE" + // "CHINESE" + // "JAPANESE" + // "KOREAN" + // "ARABIC_ARABIC" - Arabic numeral as used in Arabic. (Not to be + // confused with the ASCII numeral a.k.a Arabic numberal.) + SectionValueType string `json:"sectionValueType,omitempty"` + + // StringValue: The string page value. + StringValue string `json:"stringValue,omitempty"` + + // Value: The numeric page value. + Value int64 `json:"value,omitempty"` + + // ValueDelta: The delta in which the value increases between pages. + // + // Possible values: + // "DELTA_HALF" - appears in typewritten documents + // "DELTA_ONE" - the usual numbering scenario + // "DELTA_TWO" - appears in documents with two ordinals per page + ValueDelta string `json:"valueDelta,omitempty"` + + // ValueType: A value type from the Type enum above. + // + // Possible values: + // "UNKNOWN_VALUE_TYPE" + // "LEGACY_PRE_VALUE" - Not to be used + // "ROMAN" - Roman numeral + // "ASCII" - ASCII numeral (i.e. 1,2,3) + // "ALPHA" - Alphabetic, as in the first part of "A-11". + // "LEGACY_POST_VALUE" - Not to be used + // "UNDEFINED_VALUE_TYPE" + // "CHINESE" + // "JAPANESE" + // "KOREAN" + // "ARABIC_ARABIC" - Arabic numeral as used in Arabic. (Not to be + // confused with the ASCII numeral a.k.a Arabic numberal.) + ValueType string `json:"valueType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Implicit") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Implicit") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocOrdinal) MarshalJSON() ([]byte, error) { + type NoMethod GoodocOrdinal + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocOrientationLabel: OrientationLabel groups the details about +// orientation and reading order. +type GoodocOrientationLabel struct { + // DeskewAngle: After rotating so that the text orientation is upright, + // how many radians does one have to rotate the block anti-clockwise for + // it to be level? We guarantee: -Pi/4 <= deskew_angle <= Pi/4 + DeskewAngle float64 `json:"deskewAngle,omitempty"` + + // Mirrored: Whether a text line is mirrored (e.g. reflected in a shiny + // surface or seen through the opposite side of a storefront window). + // The intent is that this is a quality of the text line image. It needs + // to be reflected according to a vertical axis along the direction of + // upright characters to make it readable. This does not affect the + // shape of the bounding box. A mirrored line with top to bottom writing + // remains top to bottom. A mirrored horizontal line will flip left to + // right. However any child entities (symbols) will remain in the same + // order, and the writing direction imposed by the language (ltr or rtl) + // will remain the same. + Mirrored bool `json:"mirrored,omitempty"` + + // Possible values: + // "ORIENTATION_PAGE_UP" + // "ORIENTATION_PAGE_RIGHT" + // "ORIENTATION_PAGE_DOWN" + // "ORIENTATION_PAGE_LEFT" + Orientation string `json:"orientation,omitempty"` + + // Possible values: + // "TEXTLINE_ORDER_LEFT_TO_RIGHT" + // "TEXTLINE_ORDER_RIGHT_TO_LEFT" + // "TEXTLINE_ORDER_TOP_TO_BOTTOM" + TextlineOrder string `json:"textlineOrder,omitempty"` + + // Possible values: + // "WRITING_DIRECTION_LEFT_TO_RIGHT" + // "WRITING_DIRECTION_RIGHT_TO_LEFT" + // "WRITING_DIRECTION_TOP_TO_BOTTOM" + WritingDirection string `json:"writingDirection,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeskewAngle") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeskewAngle") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocOrientationLabel) MarshalJSON() ([]byte, error) { + type NoMethod GoodocOrientationLabel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocOrientationLabel) UnmarshalJSON(data []byte) error { + type NoMethod GoodocOrientationLabel + var s1 struct { + DeskewAngle gensupport.JSONFloat64 `json:"deskewAngle"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.DeskewAngle = float64(s1.DeskewAngle) + return nil +} + +// GoodocOverrides: This message specifies structure "overrides" to +// apply: it can be used to force certain kinds of GoodocToHTML +// renderings of elements. +type GoodocOverrides struct { + // BlockImagination: For text blocks only: do not allow this block to be + // turned into an image when rendering, even if your algorithms want to + // do so: + // + // Possible values: + // "LEAVE_ALONE" + // "FORCE_TRUE" + // "FORCE_FALSE" + BlockImagination string `json:"blockImagination,omitempty"` + + // DoNotExpandGraphicBox: For graphic blocks, we often expand the block + // a bit for rendering, to compensate for bad image segmentation. + // do_not_expand_graphic_box forces this behavior to be turned off. + DoNotExpandGraphicBox bool `json:"doNotExpandGraphicBox,omitempty"` + + // FullPageAsImage: For Pages only: explicitly specify whether or not + // this page should be rendered fully as an image + // + // Possible values: + // "LEAVE_ALONE" + // "FORCE_TRUE" + // "FORCE_FALSE" + FullPageAsImage string `json:"fullPageAsImage,omitempty"` + + // FullPageLineated: For Pages only: explicitly specify whether or not + // all text on this page should be treated as "LINEATED" + // + // Possible values: + // "LEAVE_ALONE" + // "FORCE_TRUE" + // "FORCE_FALSE" + FullPageLineated string `json:"fullPageLineated,omitempty"` + + // FullPageSkipped: For Pages only: explicitly specify whether or not + // this page should be skipped. + // + // Possible values: + // "LEAVE_ALONE" + // "FORCE_TRUE" + // "FORCE_FALSE" + FullPageSkipped string `json:"fullPageSkipped,omitempty"` + + // NeedNotSuppressPhoto: This GRAPHIC block's image can be shown even + // when GoodocToHTMLOptions.suppress_photos_with_this is specified. + NeedNotSuppressPhoto bool `json:"needNotSuppressPhoto,omitempty"` + + // PageBreakBefore: For blocks: explicitly specify whether or not this + // block should get a page-break before it. + // + // Possible values: + // "LEAVE_ALONE" + // "FORCE_TRUE" + // "FORCE_FALSE" + PageBreakBefore string `json:"pageBreakBefore,omitempty"` + + Style []*GoodocOverridesStyle `json:"style,omitempty"` + + // WordHtml: For Words only: replace the rendered HTML by this: + WordHtml string `json:"wordHtml,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BlockImagination") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BlockImagination") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoodocOverrides) MarshalJSON() ([]byte, error) { + type NoMethod GoodocOverrides + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocOverridesStyle: Extra css styles to apply +type GoodocOverridesStyle struct { + // Name: css attribute name: "margin-left", for eg. + Name string `json:"name,omitempty"` + + // Value: css attribute vale: "1em", for eg. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocOverridesStyle) MarshalJSON() ([]byte, error) { + type NoMethod GoodocOverridesStyle + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocParagraph: Represents a paragraph of text in OCRed content. +type GoodocParagraph struct { + Box *GoodocBoundingBox `json:"Box,omitempty"` + + FirstLineIndent int64 `json:"FirstLineIndent,omitempty"` + + Label *GoodocLabel `json:"Label,omitempty"` + + LeftIndent int64 `json:"LeftIndent,omitempty"` + + LineSpacing int64 `json:"LineSpacing,omitempty"` + + // OrientationLabel: Which way is upright for this paragraph and what is + // the dominant reading order? + OrientationLabel *GoodocOrientationLabel `json:"OrientationLabel,omitempty"` + + RightIndent int64 `json:"RightIndent,omitempty"` + + // RotatedBox: If RotatedBox is set, Box must be set as well. See + // RotatedBoundingBox. + RotatedBox *GoodocRotatedBoundingBox `json:"RotatedBox,omitempty"` + + SpaceAfter int64 `json:"SpaceAfter,omitempty"` + + SpaceBefore int64 `json:"SpaceBefore,omitempty"` + + // SubsumedParagraphProperties: If we merge any paragraphs into this one + // (through the MergeParagraphWithNext() interface in goodoc-editing.h), + // then we append the properties of the merged paragraph here, for + // debugging and to avoid losing any info. Note that the + // SubsumedParagraphProperties Paragraphs do not contain Routes. + SubsumedParagraphProperties []*GoodocParagraph `json:"SubsumedParagraphProperties,omitempty"` + + // TextConfidence: Paragraph text recognition confidence. Range depends + // on the algorithm but should be consistent in a given volume. 0 is + // bad, 100 is good. + TextConfidence int64 `json:"TextConfidence,omitempty"` + + Width int64 `json:"Width,omitempty"` + + Alignment int64 `json:"alignment,omitempty"` + + Droppedcap *GoodocParagraphDroppedCap `json:"droppedcap,omitempty"` + + Route []*GoodocParagraphRoute `json:"route,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Box") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Box") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocParagraph) MarshalJSON() ([]byte, error) { + type NoMethod GoodocParagraph + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocParagraphDroppedCap: Information about the paragraph's dropped +// capital letter +type GoodocParagraphDroppedCap struct { + Box *GoodocBoundingBox `json:"Box,omitempty"` + + LettersCount int64 `json:"LettersCount,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Box") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Box") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocParagraphDroppedCap) MarshalJSON() ([]byte, error) { + type NoMethod GoodocParagraphDroppedCap + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoodocParagraphRoute struct { + // EndPoint: Route end point + EndPoint *GoodocRoutePoint `json:"EndPoint,omitempty"` + + // StartPoint: Route start point + StartPoint *GoodocRoutePoint `json:"StartPoint,omitempty"` + + // Weight: Route weight, i.e. route + Weight int64 `json:"Weight,omitempty"` + + // Word: The array of words on this route + Word []*GoodocWord `json:"Word,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndPoint") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndPoint") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocParagraphRoute) MarshalJSON() ([]byte, error) { + type NoMethod GoodocParagraphRoute + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocRotatedBoundingBox: 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. +type GoodocRotatedBoundingBox struct { + // Angle: Angle of rotation of the original non-rotated box around the + // top left corner of the original non-rotated box, in clockwise degrees + // from the horizontal. + Angle float64 `json:"Angle,omitempty"` + + Height int64 `json:"Height,omitempty"` + + // Left: Coordinates and sizes are expressed in pixels, where the + // top-left pixel is (0, 0). The coordinates refer to the corner of the + // top-left vertex of the unrotated version of the box. + Left int64 `json:"Left,omitempty"` + + Top int64 `json:"Top,omitempty"` + + Width int64 `json:"Width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Angle") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Angle") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocRotatedBoundingBox) MarshalJSON() ([]byte, error) { + type NoMethod GoodocRotatedBoundingBox + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocRotatedBoundingBox) UnmarshalJSON(data []byte) error { + type NoMethod GoodocRotatedBoundingBox + var s1 struct { + Angle gensupport.JSONFloat64 `json:"Angle"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Angle = float64(s1.Angle) + return nil +} + +type GoodocRoutePoint struct { + // RouteIndex: The sequential route number, starts at 0 + RouteIndex int64 `json:"RouteIndex,omitempty"` + + // WordIndex: The sequential word number, starts at 0 + WordIndex int64 `json:"WordIndex,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RouteIndex") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RouteIndex") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocRoutePoint) MarshalJSON() ([]byte, error) { + type NoMethod GoodocRoutePoint + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocSemanticLabel: 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). +type GoodocSemanticLabel struct { + // AlternateText: Alternate text for a sequence of the Goodoc, just for + // the element containing this label, or for a sequence starting from + // this element to the EndOfSpanningLabel. Typically this is inserted by + // automatic or manual OCR correction. We use text instead of editing + // the Goodoc directly since we dont usually have accurate symbol level + // bboxes for the alternate text. Also the original values from OCR are + // preserved. It is upto the application to do anything more intelligent + // like mapping words and finding potential symbol/word bboxes. + AlternateText string `json:"AlternateText,omitempty"` + + // Attribute: Page elements can be given Attributes refining + // meaning/role. We keep this flexible by using strings instead of + // pre-determined enum values. But it is useful to list all such + // Attributes in use in ocr/goodoc/goodoc-semantics-attributes.h + Attribute []string `json:"Attribute,omitempty"` + + // ChapterStart: Blocks that are at the beginning of chapters have this + // set: + ChapterStart bool `json:"ChapterStart,omitempty"` + + CleanupAnnotation []int64 `json:"CleanupAnnotation,omitempty"` + + ContinuesFromPreviousPage bool `json:"ContinuesFromPreviousPage,omitempty"` + + // ContinuesFromPreviousPageHyphenated: When + // ContinuesFromPreviousPage=true, this bit can be set to note that the + // word fragment on the previous page ends in a hyphen. + ContinuesFromPreviousPageHyphenated bool `json:"ContinuesFromPreviousPageHyphenated,omitempty"` + + // ContinuesOnNextPage: Paragraphs that span across pages can be + // identified with the following flags. Note that flows just connect + // Blocks across pages. These continuation flags imply something more + // specific -- the case of a single logical paragraph split over pages. + // Only the last Paragraph in the last Block within a given FlowThread() + // on a page can have ContinuesOnNextPage set. Similarly, only the first + // Paragraph in the first Block with a given FlowThread() on a page may + // have ContinuesFromPreviousPage set. + ContinuesOnNextPage bool `json:"ContinuesOnNextPage,omitempty"` + + // EndOfSpanningLabel: Normally, a SemanticLabel applies exactly to the + // goodoc element that it is contained in (usually Block or Paragraph, + // sometimes Word). Occasionally, we need a SemanticLabel to span across + // the boundary or end before the boundary. For example, a URL may just + // be a few words within a Paragraph. In such cases, the SemanticLabel + // is added to the first element of the span and contains this + // LogicalEntity pointing to the last element of the span: + EndOfSpanningLabel *GoodocLogicalEntity `json:"EndOfSpanningLabel,omitempty"` + + // ExperimentalData: Message set for experimental algorithm data. Use + // case: We keep a set of features that was computed for the + // unsupervised caption extraction and store it here. Agora question + // producer will consume this message set to be embedded in a question. + // The experimental feature set can then be used later to pair up with + // ground truth labels for designing a supervised algorithm. Currently + // holding: o ocean/analysis/content/caption_data.proto's TextualElement + ExperimentalData *Proto2BridgeMessageSet `json:"ExperimentalData,omitempty"` + + // Flow: Flow identifies a single sequential unit of text (or other + // content). It is only set on Blocks -- a flow identifies a sequence of + // Blocks. The default, main flow is just the empty string. The + // "FlowThread" of a block is the flow (if non-empty), suffixed with the + // block appearance. This is computed by GoodocUtils::FlowThread(). + // Paragraphs may be split over blocks in the same FlowThread, across + // pages. The following table shows how FlowThread gets computed: ## + // Flow Appearance FlowThread (empty) UNSPECIFIED "UNSPECIFIED" foo BODY + // "foo:BODY" Please use lower-case strings for flows (such as + // article-33-box). One useful way to think of flows is this: A logical + // unit of interest in a a Document (for example, an article) would be + // identified by a starting block, an ending block, and a list of flows + // of interest within the [start, end) span. message Article { (page#, + // block#): article_start; (page#, block#): article_end; repeated string + // flows; } The reading order of blocks, paragraphs/etc within this + // article would be the same order as present in the goodoc itself. Some + // applications (such as rendering) may want to process the article by + // running over all the flows together, others (such as indexing) may + // want to deal with the FlowThreads one after the other. + Flow string `json:"Flow,omitempty"` + + // ModificationRecord: This field can be used to record the steps by + // which AlternateText for a sequence of the Goodoc is generated. + ModificationRecord string `json:"ModificationRecord,omitempty"` + + // PageNumberOrdinal: If Appearence is PAGE_NUMBER: + PageNumberOrdinal *GoodocOrdinal `json:"PageNumberOrdinal,omitempty"` + + Appearance int64 `json:"appearance,omitempty"` + + Columndetails *GoodocSemanticLabelColumnDetails `json:"columndetails,omitempty"` + + Contentlink *GoodocSemanticLabelContentLink `json:"contentlink,omitempty"` + + Editcorrectioncandidate []*GoodocSemanticLabelEditCorrectionCandidate `json:"editcorrectioncandidate,omitempty"` + + // Overrides: Structure overrides: typically manual corrections to + // goodoc renderings. + Overrides *GoodocOverrides `json:"overrides,omitempty"` + + Snippetfilter []*GoodocSemanticLabelSnippetFilter `json:"snippetfilter,omitempty"` + + Tablecelldetails *GoodocSemanticLabelTableCellDetails `json:"tablecelldetails,omitempty"` + + Tabledetails *GoodocSemanticLabelTableDetails `json:"tabledetails,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AlternateText") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AlternateText") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabel) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabel + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocSemanticLabelColumnDetails: If Appearance is COLUMN: +type GoodocSemanticLabelColumnDetails struct { + Column int64 `json:"Column,omitempty"` + + Columns int64 `json:"Columns,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Column") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Column") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabelColumnDetails) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabelColumnDetails + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocSemanticLabelContentLink: If the label is for something that +// links to another piece of content (in this volume, outside, a url, a +// citation, etc.). +type GoodocSemanticLabelContentLink struct { + // UrlTarget: For URL labels, we note the url here directly (it's also + // available by grabbing all text symbols within the labeled span). + // SCHOLARLY_CITATION labels or even CAPTION labels may occasionally + // contain URLs. + UrlTarget string `json:"UrlTarget,omitempty"` + + Citationtarget *GoodocSemanticLabelContentLinkCitationTarget `json:"citationtarget,omitempty"` + + Involumetarget *GoodocSemanticLabelContentLinkInVolumeTarget `json:"involumetarget,omitempty"` + + // ForceSendFields is a list of field names (e.g. "UrlTarget") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "UrlTarget") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabelContentLink) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabelContentLink + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocSemanticLabelContentLinkCitationTarget: For SCHOLARLY_CITATION +// labels: +type GoodocSemanticLabelContentLinkCitationTarget struct { + // Authors: separated by semicolons + Authors string `json:"Authors,omitempty"` + + BibKey string `json:"BibKey,omitempty"` + + Confidence float64 `json:"Confidence,omitempty"` + + Title string `json:"Title,omitempty"` + + Year int64 `json:"Year,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Authors") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Authors") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabelContentLinkCitationTarget) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabelContentLinkCitationTarget + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocSemanticLabelContentLinkCitationTarget) UnmarshalJSON(data []byte) error { + type NoMethod GoodocSemanticLabelContentLinkCitationTarget + var s1 struct { + Confidence gensupport.JSONFloat64 `json:"Confidence"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Confidence = float64(s1.Confidence) + return nil +} + +// GoodocSemanticLabelContentLinkInVolumeTarget: For CAPTION or +// FOOTNOTE_POINTER or TOC_ENTRY or INDEX_ENTRY or CONTINUATION labels: +type GoodocSemanticLabelContentLinkInVolumeTarget struct { + Confidence float64 `json:"Confidence,omitempty"` + + // LogicalEntity: The CAPTION label typically targets the previous or + // the next Block. The FOOTNOTE_POINTER label typically targets a + // paragraph in a FOOTNOTE Block. TOC_ENTRY and INDEX_ENTRY labels are + // links that point to a different page within the volume. CONTINUATION + // labels also are links that point to a different page within the + // volume, or maybe even a particular block or paragraph. + LogicalEntity *GoodocLogicalEntity `json:"LogicalEntity,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Confidence") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Confidence") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabelContentLinkInVolumeTarget) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabelContentLinkInVolumeTarget + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocSemanticLabelContentLinkInVolumeTarget) UnmarshalJSON(data []byte) error { + type NoMethod GoodocSemanticLabelContentLinkInVolumeTarget + var s1 struct { + Confidence gensupport.JSONFloat64 `json:"Confidence"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Confidence = float64(s1.Confidence) + return nil +} + +// GoodocSemanticLabelEditCorrectionCandidate: 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. +type GoodocSemanticLabelEditCorrectionCandidate struct { + EditedWord string `json:"EditedWord,omitempty"` + + Probability float64 `json:"Probability,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EditedWord") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EditedWord") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabelEditCorrectionCandidate) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabelEditCorrectionCandidate + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocSemanticLabelEditCorrectionCandidate) UnmarshalJSON(data []byte) error { + type NoMethod GoodocSemanticLabelEditCorrectionCandidate + var s1 struct { + Probability gensupport.JSONFloat64 `json:"Probability"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Probability = float64(s1.Probability) + return nil +} + +// GoodocSemanticLabelSnippetFilter: 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. +type GoodocSemanticLabelSnippetFilter struct { + BadwordFraction float64 `json:"badwordFraction,omitempty"` + + WindowSize int64 `json:"windowSize,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BadwordFraction") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BadwordFraction") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabelSnippetFilter) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabelSnippetFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoodocSemanticLabelSnippetFilter) UnmarshalJSON(data []byte) error { + type NoMethod GoodocSemanticLabelSnippetFilter + var s1 struct { + BadwordFraction gensupport.JSONFloat64 `json:"badwordFraction"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.BadwordFraction = float64(s1.BadwordFraction) + return nil +} + +// GoodocSemanticLabelTableCellDetails: If Appearance is TABLE_CELL: +type GoodocSemanticLabelTableCellDetails struct { + Column int64 `json:"Column,omitempty"` + + ColumnSpan int64 `json:"ColumnSpan,omitempty"` + + // Row: Row and Column are 0-based + Row int64 `json:"Row,omitempty"` + + RowSpan int64 `json:"RowSpan,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Column") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Column") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabelTableCellDetails) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabelTableCellDetails + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocSemanticLabelTableDetails: If Appearance is TABLE: +type GoodocSemanticLabelTableDetails struct { + Columns int64 `json:"Columns,omitempty"` + + Rows int64 `json:"Rows,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Columns") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Columns") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSemanticLabelTableDetails) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSemanticLabelTableDetails + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocSummaryStats: 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). +type GoodocSummaryStats struct { + // EstimatedFontSizes: This flag is set if the histogram above has been + // derived by estimating font sizes from CharLabel.CharacterHeight; that + // happens if the FontSize field is constant, as has happened with Abbyy + // 9. + EstimatedFontSizes bool `json:"estimatedFontSizes,omitempty"` + + // FontSizeHistogram: Symbol counts (and other attributes) for each + // distinct CharLabel.FontId and FontSize; histogram is in decreasing + // order of symbol count + FontSizeHistogram []*GoodocFontSizeStats `json:"fontSizeHistogram,omitempty"` + + MeanSymbolsPerBlock int64 `json:"meanSymbolsPerBlock,omitempty"` + + MeanSymbolsPerLine int64 `json:"meanSymbolsPerLine,omitempty"` + + MeanSymbolsPerParagraph int64 `json:"meanSymbolsPerParagraph,omitempty"` + + MeanSymbolsPerWord int64 `json:"meanSymbolsPerWord,omitempty"` + + MeanWordsPerBlock int64 `json:"meanWordsPerBlock,omitempty"` + + MeanWordsPerLine int64 `json:"meanWordsPerLine,omitempty"` + + MeanWordsPerParagraph int64 `json:"meanWordsPerParagraph,omitempty"` + + // MedianBlockSpace: bottom to next top in flow on page + MedianBlockSpace int64 `json:"medianBlockSpace,omitempty"` + + // MedianEvenPrintedBox: 0,2,4.. + MedianEvenPrintedBox *GoodocBoundingBox `json:"medianEvenPrintedBox,omitempty"` + + MedianFullEvenPrintedBox *GoodocBoundingBox `json:"medianFullEvenPrintedBox,omitempty"` + + MedianFullOddPrintedBox *GoodocBoundingBox `json:"medianFullOddPrintedBox,omitempty"` + + // MedianFullPrintedBox: Each median_full*_printed_box includes page + // header/footer but still excludes all graphic blocks + MedianFullPrintedBox *GoodocBoundingBox `json:"medianFullPrintedBox,omitempty"` + + MedianHeight int64 `json:"medianHeight,omitempty"` + + MedianHorizontalDpi int64 `json:"medianHorizontalDpi,omitempty"` + + // MedianLineHeight: top to bottom + MedianLineHeight int64 `json:"medianLineHeight,omitempty"` + + // MedianLineSpace: bottom to next top in para + MedianLineSpace int64 `json:"medianLineSpace,omitempty"` + + // MedianLineSpan: top to next top in para + MedianLineSpan int64 `json:"medianLineSpan,omitempty"` + + // MedianOddPrintedBox: 1,3,5.. + MedianOddPrintedBox *GoodocBoundingBox `json:"medianOddPrintedBox,omitempty"` + + // MedianParagraphIndent: leading space on first line + MedianParagraphIndent int64 `json:"medianParagraphIndent,omitempty"` + + // MedianParagraphSpace: bottom to next top in block + MedianParagraphSpace int64 `json:"medianParagraphSpace,omitempty"` + + // MedianPrintedBox: Each median*_printed_box excludes page + // header/footer and all graphic blocks + MedianPrintedBox *GoodocBoundingBox `json:"medianPrintedBox,omitempty"` + + MedianSymbolsPerBlock int64 `json:"medianSymbolsPerBlock,omitempty"` + + MedianSymbolsPerLine int64 `json:"medianSymbolsPerLine,omitempty"` + + MedianSymbolsPerParagraph int64 `json:"medianSymbolsPerParagraph,omitempty"` + + MedianSymbolsPerWord int64 `json:"medianSymbolsPerWord,omitempty"` + + MedianVerticalDpi int64 `json:"medianVerticalDpi,omitempty"` + + MedianWidth int64 `json:"medianWidth,omitempty"` + + MedianWordsPerBlock int64 `json:"medianWordsPerBlock,omitempty"` + + MedianWordsPerLine int64 `json:"medianWordsPerLine,omitempty"` + + MedianWordsPerParagraph int64 `json:"medianWordsPerParagraph,omitempty"` + + // NumBlockSpaces: blocks that have a successor block within their flow + // on their page + NumBlockSpaces int64 `json:"numBlockSpaces,omitempty"` + + // NumBlocks: ------ Block stats Median symbols and words omit junk, + // header and footer blocks; they are intended to be a measure of the + // typical "content" block. There can still be substantial differences + // between means and medians; however, block values will generally + // exceed paragraph values (not the case when headers and footers are + // included). + NumBlocks int64 `json:"numBlocks,omitempty"` + + // NumLineSpaces: Lines (out of num_lines) that have a successor line + // within their para + NumLineSpaces int64 `json:"numLineSpaces,omitempty"` + + // NumLines: ------ Line stats "top" corresponds to the highest ascender + // and "bottom" to the lowest descender. + NumLines int64 `json:"numLines,omitempty"` + + NumNonGraphicBlocks int64 `json:"numNonGraphicBlocks,omitempty"` + + // NumPages: ------ Page stats. + NumPages int64 `json:"numPages,omitempty"` + + // NumParagraphSpaces: paras that have a successor para within their + // block + NumParagraphSpaces int64 `json:"numParagraphSpaces,omitempty"` + + // NumParagraphs: ------ Paragraph stats Median symbols and words omit + // junk, header and footer blocks; they are intended to be a measure of + // the typical "content" paragraph. There can still be substantial + // differences between means and medians, particularly if a table is + // present (every cell is a paragraph). + NumParagraphs int64 `json:"numParagraphs,omitempty"` + + // NumSymbols: ------ Symbol stats + NumSymbols int64 `json:"numSymbols,omitempty"` + + // NumWords: ------ Word stats + NumWords int64 `json:"numWords,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EstimatedFontSizes") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EstimatedFontSizes") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSummaryStats) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSummaryStats + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocSymbol: A single symbol representation +type GoodocSymbol struct { + Box *GoodocBoundingBox `json:"Box,omitempty"` + + // Code: The unicode character code in UTF-32 + Code int64 `json:"Code,omitempty"` + + Label *GoodocLabel `json:"Label,omitempty"` + + // RotatedBox: If RotatedBox is set, Box must be set as well. See + // RotatedBoundingBox. + RotatedBox *GoodocRotatedBoundingBox `json:"RotatedBox,omitempty"` + + Symbolvariant []*GoodocSymbolSymbolVariant `json:"symbolvariant,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Box") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Box") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSymbol) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSymbol + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoodocSymbolSymbolVariant struct { + Code int64 `json:"Code,omitempty"` + + Confidence int64 `json:"Confidence,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocSymbolSymbolVariant) MarshalJSON() ([]byte, error) { + type NoMethod GoodocSymbolSymbolVariant + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocWord: A word representation +type GoodocWord struct { + // Baseline: The baseline's y-axis offset from the bottom of the word's + // bounding box, given in pixels. (A value of 2, for instance, indicates + // the baseline is 2px above the bottom of the box.) + Baseline int64 `json:"Baseline,omitempty"` + + Box *GoodocBoundingBox `json:"Box,omitempty"` + + // Capline: The capline is the y-axis offset from the top of the word + // bounding box. A positive value n indicates that capline is n-pixels + // above the top of this word. + Capline int64 `json:"Capline,omitempty"` + + // CompactSymbolBoxes: For space efficiency, we sometimes skip the + // detailed per-symbol bounding boxes in Symbol.Box, and use this + // coarser representation instead, where we just store Symbol boundaries + // within the Word box. Most client code should not have to worry + // directly about this, it should be handled in the deepest layers of + // writing/reading goodocs (for example, see Compress() and Uncompress() + // in ocean/goodoc/goovols-bigtable-volume.h). Note(viresh): I + // experimented with this compression, and here are some numbers for + // reference. If the zlib-compressed page goodoc string size was 100 to + // start with, then this compaction makes it 65. As a possible future + // relaxation to consider: if we add in, for each symbol, a "top" and + // "bottom" box offset then the size would be 75 (that's with "repeated + // int32 top/bottom_offset" fields inside BoxPartitions, instead of + // inside each symbol). + CompactSymbolBoxes *GoodocBoxPartitions `json:"CompactSymbolBoxes,omitempty"` + + // Confidence: Word recognition confidence. Range depends upon OCR + // Engine. + Confidence int64 `json:"Confidence,omitempty"` + + // IsFromDictionary: word. The meaning and range depends on the OCR + // engine or subsequent processing. Specifies whether the word was found + IsFromDictionary bool `json:"IsFromDictionary,omitempty"` + + // IsIdentifier: a number True if word represents + IsIdentifier bool `json:"IsIdentifier,omitempty"` + + // IsLastInSentence: True if the word is the last word in any + // sub-paragraph unit that functions at the same level of granularity as + // a sentence. Examples: "She hit the ball." (regular sentence) "Dewey + // defeats Truman" (heading) "The more, the merrier." (no verb) Note: + // not currently used. Code to set this was introduced in CL 7038338 and + // removed in OCL=10678722. + IsLastInSentence bool `json:"IsLastInSentence,omitempty"` + + // IsNumeric: in the dictionary True if the word represents + IsNumeric bool `json:"IsNumeric,omitempty"` + + Label *GoodocLabel `json:"Label,omitempty"` + + // Penalty: Penalty for discordance of characters in a + Penalty int64 `json:"Penalty,omitempty"` + + // RotatedBox: If RotatedBox is set, Box must be set as well. See + // RotatedBoundingBox. + RotatedBox *GoodocRotatedBoundingBox `json:"RotatedBox,omitempty"` + + // Symbol: Word characters, the text may + Symbol []*GoodocSymbol `json:"Symbol,omitempty"` + + Alternates *GoodocWordAlternates `json:"alternates,omitempty"` + + // Text: As a shortcut, the content API provides the text of words + // instead of individual symbols (NOTE: this is experimental). This is + // UTF8. And the main font for the word is stored in Label.CharLabel. + Text string `json:"text,omitempty"` + + // WritingDirection: Writing direction for this word. + // + // Possible values: + // "WRITING_DIRECTION_LEFT_TO_RIGHT" + // "WRITING_DIRECTION_RIGHT_TO_LEFT" + // "WRITING_DIRECTION_TOP_TO_BOTTOM" + WritingDirection string `json:"writingDirection,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Baseline") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Baseline") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocWord) MarshalJSON() ([]byte, error) { + type NoMethod GoodocWord + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocWordAlternates: Alternate OCR words for Ptolemy OCR Correction. +// This is the output of the Ptolemy error estimator. See +// http://go/Ptolemy. +type GoodocWordAlternates struct { + // ErrorProbability: The probability that the main OCR engine (Abbyy) + // string is incorrect; range is 0 (definitely correct) to 100 + // (definitely incorrect). + ErrorProbability int64 `json:"ErrorProbability,omitempty"` + + Alternate []*GoodocWordAlternatesAlternate `json:"alternate,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ErrorProbability") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ErrorProbability") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoodocWordAlternates) MarshalJSON() ([]byte, error) { + type NoMethod GoodocWordAlternates + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoodocWordAlternatesAlternate: 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. +type GoodocWordAlternatesAlternate struct { + // OcrEngineId: See Document.Header + OcrEngineId string `json:"OcrEngineId,omitempty"` + + // OcrEngineVersion: See Document.Header + OcrEngineVersion string `json:"OcrEngineVersion,omitempty"` + + // Word: In order to compile, this recursive message needs to be + // optional, even though it's within an optional group. + Word *GoodocWord `json:"Word,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OcrEngineId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OcrEngineId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoodocWordAlternatesAlternate) MarshalJSON() ([]byte, error) { + type NoMethod GoodocWordAlternatesAlternate + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantAccessoryV1AudioOutConfig: Specifies the desired +// format for the server to use when it returns `audio_out` messages. +type GoogleAssistantAccessoryV1AudioOutConfig struct { + // AudioMode: Current audio mode on the device while issuing the query. + // + // Possible values: + // "AUDIO_MODE_UNSPECIFIED" - No audio mode specified. The Assistant + // may respond as if in `AUDIO_SILENT` mode. + // "MUTED" - Device's audio mute mode has been activated by user. The + // Assistant will typically not return an audio response. + // "SILENT" - No audio is currently playing, and device's audio mute + // mode has NOT been activated by user. The Assistant will typically + // return an audio response. + // "PLAYING" - Audio is currently playing, such as a video or music. + // The Assistant will typically not return an audio response, but may + // for certain queries that are inherently audio (such as "what sound + // does a cow make?" or "how do you say 'something' in Korean". This + // mode should also typically be used when the screen is on and a + // screen-reader is activated for accessibility, as the screen-reader + // will read the contents of the visual response and manage navigation. + AudioMode string `json:"audioMode,omitempty"` + + // AudioRoutingMode: Current audio routing on the device while issuing + // the query. + // + // Possible values: + // "AUDIO_ROUTING_MODE_UNSPECIFIED" - No audio routing mode specified. + // "BLUETOOTH_HEADPHONES" - Audio routes to headphones connected over + // BLUETOOTH. + AudioRoutingMode string `json:"audioRoutingMode,omitempty"` + + // Encoding: *Required* The encoding of audio data to be returned in all + // `audio_out` messages. + // + // Possible values: + // "ENCODING_UNSPECIFIED" - Not specified. Will return result + // google.rpc.Code.INVALID_ARGUMENT. + // "LINEAR16" - Uncompressed 16-bit signed little-endian samples + // (Linear PCM). + // "MP3" - MP3 audio encoding. The sample rate is encoded in the + // payload. + // "OGG_OPUS" - Opus-encoded audio wrapped in an ogg container. The + // result will be a file which can be played natively on Android and in + // some browsers (such as Chrome). The quality of the encoding is + // considerably higher than MP3 while using the same bitrate. The sample + // rate is encoded in the payload. + // "MULAW" - Mulaw encoded 8-bit samples, typically used only by + // telephony. `sample_rate_hertz` must be 8000. + // "OPUS_CONTAINERLESS" - Opus encoded audio without a container. + Encoding string `json:"encoding,omitempty"` + + // PreferredBitrateBps: *Optional* Specifies preferred encoding bitrate + // (bits-per-second). Currently this is only implemented for OGG_OPUS + // for bitrates of 12000, 16000, 24000, 32000. If not specified, + // OGG_OPUS defaults to 32000. + PreferredBitrateBps int64 `json:"preferredBitrateBps,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AudioMode") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AudioMode") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantAccessoryV1AudioOutConfig) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantAccessoryV1AudioOutConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantAccessoryV1DeviceConfig: *Required* Fields that +// identify the device to the Assistant. See also: * Register a Device - +// REST API (https: //developers.google.com/assistant/sdk/re // +// ference/device-registration/register-device-manual) * Device Model +// and Instance Schemas (https: //developers.google.com/assistant/sdk/re +// // ference/device-registration/model-and-instance-schemas) * Device +// Proto (https: //developers.google.com/assistant/sdk/re // +// ference/rpc/google.assistant.devices.v1#device) +type GoogleAssistantAccessoryV1DeviceConfig struct { + // DeviceBuild: *Required* Identifier for the device which sent the + // request. + DeviceBuild *GoogleAssistantEmbeddedV1DeviceBuild `json:"deviceBuild,omitempty"` + + // DeviceModelCapabilitiesOverride: Device model capabilities from + // client to override capabilities in the primary device model. + DeviceModelCapabilitiesOverride *GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride `json:"deviceModelCapabilitiesOverride,omitempty"` + + // HeterodyneToken: *Optional* An encrypted heterodyne_experiment_token + // containing the list of experiment_ids (go/ph-server-tokens). + HeterodyneToken string `json:"heterodyneToken,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DeviceBuild") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceBuild") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantAccessoryV1DeviceConfig) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantAccessoryV1DeviceConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantAccessoryV1DeviceState: 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: 9 +type GoogleAssistantAccessoryV1DeviceState struct { + // AlarmState: *Optional* Information about on-device alarms. For + // devices that support alarms, all on-device alarms must be sent up + // with the DeviceState in order for Assistant Server to be able to + // perform operations on them. + AlarmState *GoogleAssistantEmbeddedV1Alarms `json:"alarmState,omitempty"` + + // ContextParams: Other context params to be sent to Assistant. This is + // a assistant.embedded.v1.ContextParams message in serialized binary + // proto format. + ContextParams string `json:"contextParams,omitempty"` + + // DeviceTime: A timestamp of the current device time when the request + // was made. This field is required if your device supports alarms or + // timers. This ensures that requests are fulfilled relative to the + // current device time and regardless of any clock skew between the + // client and the server. + DeviceTime string `json:"deviceTime,omitempty"` + + // DeviceTimeZone: The time zone where the device is currently located. + // This helps the Assistant answer time-related queries relative to the + // device's time zone. Generally speaking, mobile devices that support + // alarms or timers should supply device_time_zone. This field is + // required if your device supports alarms or timers and the device's + // location cannot reliably be determined. (See the comment above + // google.assistant.embedded.v1.DeviceLocation for a description of how + // the device's location is determined.) If the time zone cannot be + // determined, some queries for creating or modifying timers or alarms + // may fail with a generic error such as, "Sorry, I don't know how to + // help with that." + DeviceTimeZone *GoogleTypeTimeZone `json:"deviceTimeZone,omitempty"` + + // DoNotDisturb: Indicate whether do not disturb mode is turned on. + DoNotDisturb bool `json:"doNotDisturb,omitempty"` + + // FitnessActivitiesState: Information about on-device fitness + // activities. For devices that support fitness activities, all + // on-device fitness activities must be sent up with the DeviceState in + // order for Assistant Server to be able to perform operations on them. + FitnessActivitiesState *GoogleAssistantEmbeddedV1FitnessActivities `json:"fitnessActivitiesState,omitempty"` + + // TimerState: *Optional* Information about on-device timers. For + // devices that support timers, all on-device timers must be sent up + // with the DeviceState in order for Assistant Server to be able to + // perform operations on them. + TimerState *GoogleAssistantEmbeddedV1Timers `json:"timerState,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AlarmState") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AlarmState") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantAccessoryV1DeviceState) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantAccessoryV1DeviceState + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantAccessoryV1ResponseConfig: Configuration for the +// response. Next Id: 11 +type GoogleAssistantAccessoryV1ResponseConfig struct { + // AudioOutConfig: Specifies the current audio mode on the device. + AudioOutConfig *GoogleAssistantAccessoryV1AudioOutConfig `json:"audioOutConfig,omitempty"` + + // DeviceConfig: Configuration related to a specific device. + DeviceConfig *GoogleAssistantAccessoryV1DeviceConfig `json:"deviceConfig,omitempty"` + + // DeviceInteraction: The client interaction to be sent to Assistant. + // This is a assistant.embedded.v1.DeviceInteraction message in + // serialized binary proto format. + DeviceInteraction string `json:"deviceInteraction,omitempty"` + + // DeviceState: Device state to pass to the Assistant server to use in + // calculating the response. + DeviceState *GoogleAssistantAccessoryV1DeviceState `json:"deviceState,omitempty"` + + // InitialAudioBytes: Specifies the initial bytes of TTS audio to send. + InitialAudioBytes int64 `json:"initialAudioBytes,omitempty"` + + // IsNewConversation: If true, the server will treat the request as a + // new conversation and not use state from the prior request. Set this + // field to true when the conversation should be restarted, such as + // after a device reboot, or after a significant lapse of time since the + // prior query. + IsNewConversation bool `json:"isNewConversation,omitempty"` + + // OutputSampleRateHz: Specifies the desired audio sample rate of the + // output TTS stream in Hz. + OutputSampleRateHz int64 `json:"outputSampleRateHz,omitempty"` + + // ResponseType: Specifies the requested response type. + // + // Possible values: + // "RESPONSE_TYPE_UNSPECIFIED" - No response type specified. This is + // invalid and the host will send a state update indicating an error. + // "TEXT" - Requests an Assistant text response. + // "TRANSCRIPTION" - Requests a voice transcription only. + ResponseType string `json:"responseType,omitempty"` + + // ScreenOutConfig: Specifies the desired format to use when server + // returns a visual screen response. + ScreenOutConfig *GoogleAssistantAccessoryV1ScreenOutConfig `json:"screenOutConfig,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AudioOutConfig") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AudioOutConfig") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantAccessoryV1ResponseConfig) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantAccessoryV1ResponseConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantAccessoryV1ScreenOutConfig: Specifies the desired +// format for the server to use when it returns `screen_out` response. +type GoogleAssistantAccessoryV1ScreenOutConfig struct { + // Dimensions: Device dimensions. + Dimensions *GoogleAssistantAccessoryV1ScreenOutConfigDimensions `json:"dimensions,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Dimensions") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Dimensions") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantAccessoryV1ScreenOutConfig) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantAccessoryV1ScreenOutConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantAccessoryV1ScreenOutConfigDimensions: This contains +// physical and logical characteristics about the device (e.g. screen +// size and DPI, etc). +type GoogleAssistantAccessoryV1ScreenOutConfigDimensions struct { + // ScreenDpi: Dots (pixels) per inch of the screen. + ScreenDpi float64 `json:"screenDpi,omitempty"` + + // ScreenHeightPx: Height of the device's screen in pixels. If 0 or not + // specified, it's assumed to be the same as screen_width_px. For a + // square or round screen, it's recommended to leave this field empty as + // a bandwidth optimization. + ScreenHeightPx int64 `json:"screenHeightPx,omitempty"` + + // ScreenShape: The shape of the device's screen + // + // Possible values: + // "SCREEN_SHAPE_UNSPECIFIED" - Screen shape is undefined. + // "SCREEN_SHAPE_OVAL" - A round screen (typically found on most Wear + // devices). + // "SCREEN_SHAPE_RECT" - Rectangular screens. + ScreenShape string `json:"screenShape,omitempty"` + + // ScreenWidthPx: Width of the device's screen in pixels. + ScreenWidthPx int64 `json:"screenWidthPx,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ScreenDpi") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ScreenDpi") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantAccessoryV1ScreenOutConfigDimensions) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantAccessoryV1ScreenOutConfigDimensions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleAssistantAccessoryV1ScreenOutConfigDimensions) UnmarshalJSON(data []byte) error { + type NoMethod GoogleAssistantAccessoryV1ScreenOutConfigDimensions + var s1 struct { + ScreenDpi gensupport.JSONFloat64 `json:"screenDpi"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.ScreenDpi = float64(s1.ScreenDpi) + return nil +} + +// GoogleAssistantEmbeddedV1Alarm: 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. +type GoogleAssistantEmbeddedV1Alarm struct { + // AlarmId: A string key used as an identifier to this alarm. This key + // needs to be unique amongst all alarms on the device. The client can + // choose a mechanism of its choice to ensure this. If the server + // suggests an alarm_id, the client can either use the suggestion or + // create a new unique alarm_id of its choosing. + AlarmId string `json:"alarmId,omitempty"` + + // DatePattern: For single alarms: the one date the alarm should next be + // scheduled for. + DatePattern *GoogleTypeDate `json:"datePattern,omitempty"` + + // Label: A user-provided name for this alarm. + Label string `json:"label,omitempty"` + + // RecurrencePattern: For recurring alarms: a description of the dates + // when the alarm should recur. + RecurrencePattern *GoogleAssistantEmbeddedV1AlarmRecurrence `json:"recurrencePattern,omitempty"` + + // ScheduledTime: When SCHEDULED or SNOOZED, the absolute time the alarm + // will fire next. When SNOOZED, this time includes the additional time + // added by snoozing the alarm. When FIRING, the absolute time the alarm + // had been scheduled to fire. When DISABLED, this field is undefined + // and should be ignored. + ScheduledTime string `json:"scheduledTime,omitempty"` + + // Status: Describes the part of the lifecycle that an alarm is in. + // + // Possible values: + // "ALARM_STATUS_UNSPECIFIED" + // "SCHEDULED" - The alarm is scheduled to fire at some point in the + // future. + // "FIRING" - The alarm is currently firing. + // "SNOOZED" - Like SCHEDULED; the alarm has been snoozed after + // firing. + // "DISABLED" - Alarm is disabled, i.e., it won't ring. Scheduled time + // is undefined for disabled alarms and should be ignored. + Status string `json:"status,omitempty"` + + // TimePattern: The time of day the alarm should be scheduled for. This + // value does not change when an alarm enters the SNOOZED state; instead + // the scheduled_time field should be adjusted to the new alarm time. + TimePattern *GoogleTypeTimeOfDay `json:"timePattern,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AlarmId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AlarmId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1Alarm) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1Alarm + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantEmbeddedV1AlarmRecurrence: A description of the dates +// when an alarm should recur. +type GoogleAssistantEmbeddedV1AlarmRecurrence struct { + // DayOfWeek: Specifies a weekly or daily recurrence. Constraint: The + // date falls on one of these days of the week, in 0...6 + // (Sunday...Saturday). Should not be empty. + // + // Possible values: + // "DAY_OF_WEEK_UNSPECIFIED" - The day of the week is unspecified. + // "MONDAY" - Monday + // "TUESDAY" - Tuesday + // "WEDNESDAY" - Wednesday + // "THURSDAY" - Thursday + // "FRIDAY" - Friday + // "SATURDAY" - Saturday + // "SUNDAY" - Sunday + DayOfWeek []string `json:"dayOfWeek,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DayOfWeek") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DayOfWeek") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1AlarmRecurrence) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1AlarmRecurrence + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantEmbeddedV1Alarms: Contains information about on-device +// alarms for devices that support alarms. +type GoogleAssistantEmbeddedV1Alarms struct { + // Alarms: Information about all on-device alarms. + Alarms []*GoogleAssistantEmbeddedV1Alarm `json:"alarms,omitempty"` + + // SnoozeDuration: The amount of time for which alarms should be + // snoozed. If not specified, the productivity vertical applies a + // default snooze duration, which may be seen here: + // http://google3/assistant/verticals/productivity/utils/alarm_utils.cc;l=2734;rcl=415933085 + SnoozeDuration string `json:"snoozeDuration,omitempty"` + + // StateFetchError: Indicates if an error occurred while fetching alarm + // state. If this value is missing, it can be assumed that the state + // fetch was successful. + // + // Possible values: + // "STATE_FETCH_ERROR_UNSPECIFIED" - Equivalent to no errors from + // fetching state (i.e. success). + // "STATE_FETCH_ERROR_TIMEOUT" - The time taken to fetch state + // exceeded the allowed maximum time. + StateFetchError string `json:"stateFetchError,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Alarms") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Alarms") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1Alarms) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1Alarms + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantEmbeddedV1DeviceBuild: Contains fields to identify the +// device which sent the request. +type GoogleAssistantEmbeddedV1DeviceBuild struct { + // UserAgentSuffix: * Fully formed user agent suffix string. + UserAgentSuffix string `json:"userAgentSuffix,omitempty"` + + // ForceSendFields is a list of field names (e.g. "UserAgentSuffix") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "UserAgentSuffix") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1DeviceBuild) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1DeviceBuild + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride: Device +// model capabilities override from client. +type GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride struct { + // DeviceModelCapabilities: Device model capabilities from client. + DeviceModelCapabilities string `json:"deviceModelCapabilities,omitempty"` + + // UpdateMask: If present, overrides only fields specified in the mask. + // When doing so, selected message and repeated fields will be replaced + // rather than merged. Performs a regular proto MergeFrom if no mask is + // specified. + UpdateMask string `json:"updateMask,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "DeviceModelCapabilities") to unconditionally include in API + // requests. By default, fields with empty or default values are omitted + // from API requests. However, any non-pointer, non-interface field + // appearing in ForceSendFields will be sent to the server regardless of + // whether the field is empty or not. This may be used to include empty + // fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DeviceModelCapabilities") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1DeviceModelCapabilitiesOverride + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantEmbeddedV1FitnessActivities: Contains information +// about on-device fitness activities for devices that support fitness. +type GoogleAssistantEmbeddedV1FitnessActivities struct { + // FitnessActivities: Information about all on-device activities. + FitnessActivities []*GoogleAssistantEmbeddedV1FitnessActivity `json:"fitnessActivities,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FitnessActivities") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FitnessActivities") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1FitnessActivities) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1FitnessActivities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantEmbeddedV1FitnessActivity: Describes a particular +// fitness activity, its current state, and other data fields associated +// with that activity (e.g. elapsed time). LINT.IfChange +type GoogleAssistantEmbeddedV1FitnessActivity struct { + // ActivityId: Required A string key used as an identifier for this + // activity. This key needs to be unique amongst all activities on the + // device. The client can choose a mechanism of its choice to ensure + // this. If the server suggests an activity_id, the client can either + // use the suggestion or create a new unique activity_id of its + // choosing. + ActivityId string `json:"activityId,omitempty"` + + // MostRecentStartTime: DEPRECATED: The most recent time this activity + // was switched to the ACTIVE state. + MostRecentStartTime string `json:"mostRecentStartTime,omitempty"` + + // PreviouslyAccumulatedDuration: DEPRECATED: The total amount of time + // this activity has spent in the ACTIVE state until the most recent + // start time. The total time spent active may be computed by summing + // (now - most_recent_start_time) with previously_accumulated_duration. + PreviouslyAccumulatedDuration string `json:"previouslyAccumulatedDuration,omitempty"` + + // State: The current state of this activity. + // + // Possible values: + // "STATE_UNSPECIFIED" - The state is either unknown or unspecified. + // "ACTIVE" - Indicates that this activity is currently in progress. + // "PAUSED" - Indicates that this activity has been paused (and may be + // resumed later). Activities in this state should not continue to + // increment 'elapsed_time' until moved back into the ACTIVE state. + State string `json:"state,omitempty"` + + // Type: The type of activity being done. + // + // Possible values: + // "TYPE_UNSPECIFIED" - The type is unknown. + // "WALK" - Represents a walking activity type. + // "RUN" - Represents a running activity type. + // "ELLIPTICAL" - Represents an elliptical activity type. + // "SWIM" - Represents a swimming activity type. + // "WEIGHTS" - Represents a weightlifting activity type. + // "TREADMILL" - Represents a treadmill activity type (e.g. + // walking/running on a treadmill). + // "BIKE" - Represents a cycling activity type. + // "YOGA" - Represents a yoga activity type. + // "WORKOUT" - Represents a generic workout activity. + // "BOOT_CAMP" - Represents a bootcamp activity type. + // "CIRCUIT_TRAINING" - Represents a circuit training activity type. + // "GOLF" - Represents a golf activity type. + // "HIKING" - Represents a hiking activity type. + // "INTERVAL_TRAINING" - Represents an interval training activity + // type. + // "KICKBOXING" - Represents a kickboxing activity type. + // "MARTIAL_ARTS" - Represents a martial arts activity type. + // "PILATES" - Represents a pilates activity type. + // "SPINNING" - Represents a spinning(indoor cycling, stationary + // biking) activity type. + // "STAIR_CLIMBING" - Represents a stair climbing activity type. + // "TENNIS" - Represents a tennis activity type. + // "AEROBICS" - Represents an aerobics activity type. + // "CORE_TRAINING" - Represents a core training activity type. + // "DANCING" - Represents a dancing activity type. + // "HIGH_INTENSITY_INTERVAL_TRAINING" - Represents a HIIT activity + // type. + // "KAYAKING" - Represents a kayaking activity type. + // "ROWING" - Represents a rowing activity type. + // "SKIING" - Represents a skiing activity type. + // "STANDUP_PADDLEBOARDING" - Represents a standup paddleboading(SUP) + // activity type. + // "STRENGTH_TRAINING" - Represents a strength training activity type. + // "SNOWBOARDING" - Represents a snowboarding activity type. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ActivityId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ActivityId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1FitnessActivity) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1FitnessActivity + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantEmbeddedV1Timer: 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. +type GoogleAssistantEmbeddedV1Timer struct { + // ExpireTime: The time the timer is scheduled to expire. + // google.protobuf.Timestamp is a Unix epoch time with a granularity of + // 1 nanosecond. + ExpireTime string `json:"expireTime,omitempty"` + + // Label: A user-provided name for this timer. + Label string `json:"label,omitempty"` + + // OriginalDuration: The duration of the timer when it was started. For + // the ADD_TIME action, this field contains the amount of time to add to + // the timer with the given timer_id. + OriginalDuration string `json:"originalDuration,omitempty"` + + // RemainingDuration: The remaining duration for the timer. + RemainingDuration string `json:"remainingDuration,omitempty"` + + // Status: Describes the part of the lifecycle a timer is in. + // + // Possible values: + // "TIMER_STATUS_UNSPECIFIED" + // "RUNNING" - The timer is currently counting down. + // "PAUSED" - The timer is currently paused. + // "FIRING" - The timer has expired and is ringing. + Status string `json:"status,omitempty"` + + // TimerId: A string key used as an identifier to this timer. This key + // needs to be unique amongst all timers on the device. The client can + // choose a mechanism of its choice to ensure this. If the server + // suggests a timer_id, the client can either use the suggestion or + // create a new unique timer_id of its choosing. + TimerId string `json:"timerId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ExpireTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExpireTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1Timer) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1Timer + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleAssistantEmbeddedV1Timers: Contains information about on-device +// timers for devices that support timers. +type GoogleAssistantEmbeddedV1Timers struct { + // StateFetchError: Indicates if an error occurred while fetching timer + // state. If this value is missing, it can be assumed that the state + // fetch was successful. + // + // Possible values: + // "STATE_FETCH_ERROR_UNSPECIFIED" - Equivalent to no errors from + // fetching state (i.e. success). + // "STATE_FETCH_ERROR_TIMEOUT" - The time taken to fetch state + // exceeded the allowed maximum time. + StateFetchError string `json:"stateFetchError,omitempty"` + + // Timers: Information about all on-device timers. + Timers []*GoogleAssistantEmbeddedV1Timer `json:"timers,omitempty"` + + // ForceSendFields is a list of field names (e.g. "StateFetchError") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "StateFetchError") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleAssistantEmbeddedV1Timers) MarshalJSON() ([]byte, error) { + type NoMethod GoogleAssistantEmbeddedV1Timers + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1AccessControlAction: Represents the +// action responsible for access control list management operations. +type GoogleCloudContentwarehouseV1AccessControlAction struct { + // OperationType: Identifies the type of operation. + // + // Possible values: + // "UNKNOWN" + // "ADD_POLICY_BINDING" - Adds newly given policy bindings in the + // existing bindings list. + // "REMOVE_POLICY_BINDING" - Removes newly given policy bindings from + // the existing bindings list. + // "REPLACE_POLICY_BINDING" - Replaces existing policy bindings with + // the given policy binding list + OperationType string `json:"operationType,omitempty"` + + // Policy: Represents the new policy from which bindings are added, + // removed or replaced based on the type of the operation. the policy is + // limited to a few 10s of KB. + Policy *GoogleIamV1Policy `json:"policy,omitempty"` + + // ForceSendFields is a list of field names (e.g. "OperationType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "OperationType") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1AccessControlAction) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1AccessControlAction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1Action: Represents the action triggered +// by Rule Engine when the rule is true. +type GoogleCloudContentwarehouseV1Action struct { + // AccessControl: Action triggering access control operations. + AccessControl *GoogleCloudContentwarehouseV1AccessControlAction `json:"accessControl,omitempty"` + + // ActionId: ID of the action. Managed internally. + ActionId string `json:"actionId,omitempty"` + + // AddToFolder: Action triggering create document link operation. + AddToFolder *GoogleCloudContentwarehouseV1AddToFolderAction `json:"addToFolder,omitempty"` + + // DataUpdate: Action triggering data update operations. + DataUpdate *GoogleCloudContentwarehouseV1DataUpdateAction `json:"dataUpdate,omitempty"` + + // DataValidation: Action triggering data validation operations. + DataValidation *GoogleCloudContentwarehouseV1DataValidationAction `json:"dataValidation,omitempty"` + + // DeleteDocumentAction: Action deleting the document. + DeleteDocumentAction *GoogleCloudContentwarehouseV1DeleteDocumentAction `json:"deleteDocumentAction,omitempty"` + + // PublishToPubSub: Action publish to Pub/Sub operation. + PublishToPubSub *GoogleCloudContentwarehouseV1PublishAction `json:"publishToPubSub,omitempty"` + + // RemoveFromFolderAction: Action removing a document from a folder. + RemoveFromFolderAction *GoogleCloudContentwarehouseV1RemoveFromFolderAction `json:"removeFromFolderAction,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccessControl") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccessControl") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1Action) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1Action + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ActionExecutorOutput: Represents the +// output of the Action Executor. +type GoogleCloudContentwarehouseV1ActionExecutorOutput struct { + // RuleActionsPairs: List of rule and corresponding actions result. + RuleActionsPairs []*GoogleCloudContentwarehouseV1RuleActionsPair `json:"ruleActionsPairs,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RuleActionsPairs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RuleActionsPairs") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ActionExecutorOutput) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ActionExecutorOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ActionOutput: Represents the result of +// executing an action. +type GoogleCloudContentwarehouseV1ActionOutput struct { + // ActionId: ID of the action. + ActionId string `json:"actionId,omitempty"` + + // ActionState: State of an action. + // + // Possible values: + // "UNKNOWN" + // "ACTION_SUCCEEDED" - State indicating action executed successfully. + // "ACTION_FAILED" - State indicating action failed. + // "ACTION_TIMED_OUT" - State indicating action timed out. + // "ACTION_PENDING" - State indicating action is pending. + ActionState string `json:"actionState,omitempty"` + + // OutputMessage: Action execution output message. + OutputMessage string `json:"outputMessage,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ActionId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ActionId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ActionOutput) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ActionOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1AddToFolderAction: Represents the action +// responsible for adding document under a folder. +type GoogleCloudContentwarehouseV1AddToFolderAction struct { + // Folders: Names of the folder under which new document is to be added. + // Format: + // projects/{project_number}/locations/{location}/documents/{document_id} + // . + Folders []string `json:"folders,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Folders") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Folders") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1AddToFolderAction) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1AddToFolderAction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1CloudAIDocumentOption: Request Option +// for processing Cloud AI Document in CW Document. +type GoogleCloudContentwarehouseV1CloudAIDocumentOption struct { + // CustomizedEntitiesPropertiesConversions: If set, only selected + // entities will be converted to properties. + CustomizedEntitiesPropertiesConversions map[string]string `json:"customizedEntitiesPropertiesConversions,omitempty"` + + // EnableEntitiesConversions: Whether to convert all the entities to + // properties. + EnableEntitiesConversions bool `json:"enableEntitiesConversions,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CustomizedEntitiesPropertiesConversions") to unconditionally include + // in API requests. By default, fields with empty or default values are + // omitted from API requests. However, any non-pointer, non-interface + // field appearing in ForceSendFields will be sent to the server + // regardless of whether the field is empty or not. This may be used to + // include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. + // "CustomizedEntitiesPropertiesConversions") to include in API requests + // with the JSON null value. By default, fields with empty values are + // omitted from API requests. However, any field with an empty value + // appearing in NullFields will be sent to the server as null. It is an + // error if a field in this list has a non-empty value. This may be used + // to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1CloudAIDocumentOption) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1CloudAIDocumentOption + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1CreateDocumentLinkRequest: Request +// message for DocumentLinkService.CreateDocumentLink. +type GoogleCloudContentwarehouseV1CreateDocumentLinkRequest struct { + // DocumentLink: Required. Document links associated with the source + // documents (source_document_id). + DocumentLink *GoogleCloudContentwarehouseV1DocumentLink `json:"documentLink,omitempty"` + + // RequestMetadata: The meta information collected about the document + // creator, used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DocumentLink") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DocumentLink") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1CreateDocumentLinkRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1CreateDocumentLinkRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1CreateDocumentMetadata: Metadata object +// for CreateDocument request (currently empty). +type GoogleCloudContentwarehouseV1CreateDocumentMetadata struct { +} + +// GoogleCloudContentwarehouseV1CreateDocumentRequest: Request message +// for DocumentService.CreateDocument. +type GoogleCloudContentwarehouseV1CreateDocumentRequest struct { + // CloudAiDocumentOption: Request Option for processing Cloud AI + // Document in CW Document. + CloudAiDocumentOption *GoogleCloudContentwarehouseV1CloudAIDocumentOption `json:"cloudAiDocumentOption,omitempty"` + + // CreateMask: Field mask for creating Document fields. If mask path is + // empty, it means all fields are masked. For the `FieldMask` + // definition, see + // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask + CreateMask string `json:"createMask,omitempty"` + + // Document: Required. The document to create. + Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"` + + // Policy: Default document policy during creation. Conditions defined + // in the policy will be ignored. + Policy *GoogleIamV1Policy `json:"policy,omitempty"` + + // RequestMetadata: The meta information collected about the end user, + // used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CloudAiDocumentOption") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CloudAiDocumentOption") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1CreateDocumentRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1CreateDocumentRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1CreateDocumentResponse: Response message +// for DocumentService.CreateDocument. +type GoogleCloudContentwarehouseV1CreateDocumentResponse struct { + // Document: Document created after executing create request. + Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"` + + // Metadata: Additional information for the API invocation, such as the + // request tracking id. + Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"` + + // RuleEngineOutput: Output from Rule Engine recording the rule + // evaluator and action executor's output. Refer format in: + // google/cloud/contentwarehouse/v1/rule_engine.proto + RuleEngineOutput *GoogleCloudContentwarehouseV1RuleEngineOutput `json:"ruleEngineOutput,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Document") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Document") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1CreateDocumentResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1CreateDocumentResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DataUpdateAction: Represents the action +// responsible for properties update operations. +type GoogleCloudContentwarehouseV1DataUpdateAction struct { + // Entries: Map of (K, V) -> (valid name of the field, new value of the + // field) E.g., ("age", "60") entry triggers update of field age with a + // value of 60. If the field is not present then new entry is added. + // During update action execution, value strings will be casted to + // appropriate types. + Entries map[string]string `json:"entries,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Entries") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Entries") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DataUpdateAction) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DataUpdateAction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DataValidationAction: Represents the +// action responsible for data validation operations. +type GoogleCloudContentwarehouseV1DataValidationAction struct { + // Conditions: Map of (K, V) -> (field, string condition to be evaluated + // on the field) E.g., ("age", "age > 18 && age < 60") entry triggers + // validation of field age with the given condition. Map entries will be + // ANDed during validation. + Conditions map[string]string `json:"conditions,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Conditions") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Conditions") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DataValidationAction) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DataValidationAction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DateTimeArray: DateTime values. +type GoogleCloudContentwarehouseV1DateTimeArray struct { + // Values: List of datetime values. Both OffsetDateTime and + // ZonedDateTime are supported. + Values []*GoogleTypeDateTime `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Values") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Values") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DateTimeArray) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DateTimeArray + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DateTimeTypeOptions: Configurations for +// a date time property. +type GoogleCloudContentwarehouseV1DateTimeTypeOptions struct { +} + +// GoogleCloudContentwarehouseV1DeleteDocumentAction: Represents the +// action responsible for deleting the document. +type GoogleCloudContentwarehouseV1DeleteDocumentAction struct { + // EnableHardDelete: Boolean field to select between hard vs soft delete + // options. Set 'true' for 'hard delete' and 'false' for 'soft delete'. + EnableHardDelete bool `json:"enableHardDelete,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EnableHardDelete") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EnableHardDelete") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DeleteDocumentAction) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DeleteDocumentAction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest: Request +// message for DocumentLinkService.DeleteDocumentLink. +type GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest struct { + // RequestMetadata: The meta information collected about the document + // creator, used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RequestMetadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RequestMetadata") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DeleteDocumentLinkRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DeleteDocumentRequest: Request message +// for DocumentService.DeleteDocument. +type GoogleCloudContentwarehouseV1DeleteDocumentRequest struct { + // RequestMetadata: The meta information collected about the end user, + // used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RequestMetadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RequestMetadata") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DeleteDocumentRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DeleteDocumentRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1Document: Defines the structure for +// content warehouse document proto. Next ID: 20 +type GoogleCloudContentwarehouseV1Document struct { + // AsyncEnabled: If true, makes the document visible to asynchronous + // policies and rules. + AsyncEnabled bool `json:"asyncEnabled,omitempty"` + + // CloudAiDocument: Document AI format to save the structured content, + // including OCR. + CloudAiDocument *GoogleCloudDocumentaiV1Document `json:"cloudAiDocument,omitempty"` + + // CreateTime: Output only. The time when the document is created. + CreateTime string `json:"createTime,omitempty"` + + // Creator: The user who creates the document. + Creator string `json:"creator,omitempty"` + + // DisplayName: Required. Display name of the document given by the + // user. This name will be displayed in the UI. Customer can populate + // this field with the name of the document. This differs from the + // 'title' field as 'title' is optional and stores the top heading in + // the document. + DisplayName string `json:"displayName,omitempty"` + + // DisplayUri: Uri to display the document, for example, in the UI. + DisplayUri string `json:"displayUri,omitempty"` + + // DocumentSchemaName: The Document schema name. Format: + // projects/{project_number}/locations/{location}/documentSchemas/{docume + // nt_schema_id}. + DocumentSchemaName string `json:"documentSchemaName,omitempty"` + + // InlineRawDocument: Raw document content. + InlineRawDocument string `json:"inlineRawDocument,omitempty"` + + // Name: The resource name of the document. Format: + // projects/{project_number}/locations/{location}/documents/{document_id} + // . The name is ignored when creating a document. + Name string `json:"name,omitempty"` + + // PlainText: Other document format, such as PPTX, XLXS + PlainText string `json:"plainText,omitempty"` + + // Properties: List of values that are user supplied metadata. + Properties []*GoogleCloudContentwarehouseV1Property `json:"properties,omitempty"` + + // RawDocumentFileType: This is used when DocAI was not used to load the + // document and parsing/ extracting is needed for the + // inline_raw_document. For example, if inline_raw_document is the byte + // representation of a PDF file, then this should be set to: + // RAW_DOCUMENT_FILE_TYPE_PDF. + // + // Possible values: + // "RAW_DOCUMENT_FILE_TYPE_UNSPECIFIED" - No raw document specified or + // it is non-parsable + // "RAW_DOCUMENT_FILE_TYPE_PDF" - Adobe PDF format + // "RAW_DOCUMENT_FILE_TYPE_DOCX" - Microsoft Word format + // "RAW_DOCUMENT_FILE_TYPE_XLSX" - Microsoft Excel format + // "RAW_DOCUMENT_FILE_TYPE_PPTX" - Microsoft Powerpoint format + // "RAW_DOCUMENT_FILE_TYPE_TEXT" - UTF-8 encoded text format + RawDocumentFileType string `json:"rawDocumentFileType,omitempty"` + + // RawDocumentPath: Raw document file in Cloud Storage path. + RawDocumentPath string `json:"rawDocumentPath,omitempty"` + + // ReferenceId: The reference ID set by customers. Must be unique per + // project and location. + ReferenceId string `json:"referenceId,omitempty"` + + // StructuredContentUri: A path linked to structured content file. + StructuredContentUri string `json:"structuredContentUri,omitempty"` + + // TextExtractionDisabled: If true, text extraction will not be + // performed. + TextExtractionDisabled bool `json:"textExtractionDisabled,omitempty"` + + // Title: Title that describes the document. This is usually present in + // the top section of the document, and is a mandatory field for the + // question-answering feature. + Title string `json:"title,omitempty"` + + // UpdateTime: Output only. The time when the document is last updated. + UpdateTime string `json:"updateTime,omitempty"` + + // Updater: The user who lastly updates the document. + Updater string `json:"updater,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "AsyncEnabled") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AsyncEnabled") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1Document) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1Document + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DocumentLink: A document-link between +// source and target document. +type GoogleCloudContentwarehouseV1DocumentLink struct { + // CreateTime: Output only. The time when the documentLink is created. + CreateTime string `json:"createTime,omitempty"` + + // Description: Description of this document-link. + Description string `json:"description,omitempty"` + + // Name: Name of this document-link. It is required that the parent + // derived form the name to be consistent with the source document + // reference. Otherwise an exception will be thrown. Format: + // projects/{project_number}/locations/{location}/documents/{source_docum + // ent_id}/documentLinks/{document_link_id}. + Name string `json:"name,omitempty"` + + // SourceDocumentReference: Document references of the source document. + SourceDocumentReference *GoogleCloudContentwarehouseV1DocumentReference `json:"sourceDocumentReference,omitempty"` + + // State: The state of the documentlink. If target node has been + // deleted, the link is marked as invalid. Removing a source node will + // result in removal of all associated links. + // + // Possible values: + // "STATE_UNSPECIFIED" - Unknown state of documentlink. + // "ACTIVE" - The documentlink has both source and target documents + // detected. + // "SOFT_DELETED" - Target document is deleted, and mark the + // documentlink as soft-deleted. + State string `json:"state,omitempty"` + + // TargetDocumentReference: Document references of the target document. + TargetDocumentReference *GoogleCloudContentwarehouseV1DocumentReference `json:"targetDocumentReference,omitempty"` + + // UpdateTime: Output only. The time when the documentLink is last + // updated. + UpdateTime string `json:"updateTime,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "CreateTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CreateTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DocumentLink) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DocumentLink + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DocumentQuery: NEXT_ID: 13 +type GoogleCloudContentwarehouseV1DocumentQuery struct { + // CustomPropertyFilter: 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` + CustomPropertyFilter string `json:"customPropertyFilter,omitempty"` + + // DocumentCreatorFilter: 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. + DocumentCreatorFilter []string `json:"documentCreatorFilter,omitempty"` + + // DocumentSchemaNames: 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. + DocumentSchemaNames []string `json:"documentSchemaNames,omitempty"` + + // FileTypeFilter: 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. + FileTypeFilter *GoogleCloudContentwarehouseV1FileTypeFilter `json:"fileTypeFilter,omitempty"` + + // FolderNameFilter: Search all the documents under this specified + // folder. Format: + // projects/{project_number}/locations/{location}/documents/{document_id} + // . + FolderNameFilter string `json:"folderNameFilter,omitempty"` + + // IsNlQuery: 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. + IsNlQuery bool `json:"isNlQuery,omitempty"` + + // PropertyFilter: This filter specifies a structured syntax to match + // against the PropertyDefinition.is_filterable marked as `true`. The + // relationship between the PropertyFilters is OR. + PropertyFilter []*GoogleCloudContentwarehouseV1PropertyFilter `json:"propertyFilter,omitempty"` + + // Query: The query string that matches against the full text of the + // document and the searchable properties. The maximum number of allowed + // characters is 255. + Query string `json:"query,omitempty"` + + // QueryContext: 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. + QueryContext []string `json:"queryContext,omitempty"` + + // TimeFilters: Documents created/updated within a range specified by + // this filter are searched against. + TimeFilters []*GoogleCloudContentwarehouseV1TimeFilter `json:"timeFilters,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CustomPropertyFilter") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CustomPropertyFilter") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DocumentQuery) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DocumentQuery + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DocumentReference: References to the +// documents. +type GoogleCloudContentwarehouseV1DocumentReference struct { + // CreateTime: Output only. The time when the document is created. + CreateTime string `json:"createTime,omitempty"` + + // DeleteTime: Output only. The time when the document is deleted. + DeleteTime string `json:"deleteTime,omitempty"` + + // DisplayName: display_name of the referenced document; this name does + // not need to be consistent to the display_name in the Document proto, + // depending on the ACL constraint. + DisplayName string `json:"displayName,omitempty"` + + // DocumentIsFolder: The document type of the document being referenced. + DocumentIsFolder bool `json:"documentIsFolder,omitempty"` + + // DocumentName: Required. Name of the referenced document. + DocumentName string `json:"documentName,omitempty"` + + // Snippet: Stores the subset of the referenced document's content. This + // is useful to allow user peek the information of the referenced + // document. + Snippet string `json:"snippet,omitempty"` + + // UpdateTime: Output only. The time when the document is last updated. + UpdateTime string `json:"updateTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CreateTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CreateTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DocumentReference) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DocumentReference + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1DocumentSchema: A document schema used +// to define document structure. +type GoogleCloudContentwarehouseV1DocumentSchema struct { + // CreateTime: Output only. The time when the document schema is + // created. + CreateTime string `json:"createTime,omitempty"` + + // Description: Schema description. + Description string `json:"description,omitempty"` + + // DisplayName: Required. Name of the schema given by the user. Must be + // unique per customer. + DisplayName string `json:"displayName,omitempty"` + + // DocumentIsFolder: Document Type, true refers the document is a + // folder, otherwise it is a typical document. + DocumentIsFolder bool `json:"documentIsFolder,omitempty"` + + // Name: The resource name of the document schema. Format: + // projects/{project_number}/locations/{location}/documentSchemas/{docume + // nt_schema_id}. The name is ignored when creating a document schema. + Name string `json:"name,omitempty"` + + // PropertyDefinitions: Document details. + PropertyDefinitions []*GoogleCloudContentwarehouseV1PropertyDefinition `json:"propertyDefinitions,omitempty"` + + // UpdateTime: Output only. The time when the document schema is last + // updated. + UpdateTime string `json:"updateTime,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "CreateTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CreateTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1DocumentSchema) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1DocumentSchema + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1EnumArray: Enum values. +type GoogleCloudContentwarehouseV1EnumArray struct { + // Values: List of enum values. + Values []string `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Values") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Values") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1EnumArray) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1EnumArray + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1EnumTypeOptions: Configurations for an +// enum/categorical property. +type GoogleCloudContentwarehouseV1EnumTypeOptions struct { + // PossibleValues: Required. List of possible enum values. + PossibleValues []string `json:"possibleValues,omitempty"` + + // ValidationCheckDisabled: Make sure the Enum property value provided + // in the document is in the possile value list during document + // creation. The validation check runs by default. + ValidationCheckDisabled bool `json:"validationCheckDisabled,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PossibleValues") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PossibleValues") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1EnumTypeOptions) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1EnumTypeOptions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1EnumValue: Represents the string value +// of the enum field. +type GoogleCloudContentwarehouseV1EnumValue struct { + // Value: String value of the enum field. This must match defined set of + // enums in document schema using EnumTypeOptions. + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Value") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Value") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1EnumValue) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1EnumValue + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1FetchAclRequest: Request message for +// DocumentService.FetchAcl +type GoogleCloudContentwarehouseV1FetchAclRequest struct { + // ProjectOwner: For Get Project ACL only. Authorization check for end + // user will be ignored when project_owner=true. + ProjectOwner bool `json:"projectOwner,omitempty"` + + // RequestMetadata: The meta information collected about the end user, + // used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ProjectOwner") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ProjectOwner") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1FetchAclRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1FetchAclRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1FetchAclResponse: Response message for +// DocumentService.FetchAcl. +type GoogleCloudContentwarehouseV1FetchAclResponse struct { + // Metadata: Additional information for the API invocation, such as the + // request tracking id. + Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"` + + // Policy: The IAM policy. + Policy *GoogleIamV1Policy `json:"policy,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1FetchAclResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1FetchAclResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1FileTypeFilter: Filter for the specific +// types of documents returned. +type GoogleCloudContentwarehouseV1FileTypeFilter struct { + // FileType: The type of files to return. + // + // Possible values: + // "FILE_TYPE_UNSPECIFIED" - Default document type. If set, disables + // the filter. + // "ALL" - Returns all document types, including folders. + // "FOLDER" - Returns only folders. + // "DOCUMENT" - Returns only non-folder documents. + FileType string `json:"fileType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "FileType") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "FileType") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1FileTypeFilter) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1FileTypeFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1FloatArray: Float values. +type GoogleCloudContentwarehouseV1FloatArray struct { + // Values: List of float values. + Values []float64 `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Values") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Values") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1FloatArray) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1FloatArray + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1FloatTypeOptions: Configurations for a +// float property. +type GoogleCloudContentwarehouseV1FloatTypeOptions struct { +} + +// GoogleCloudContentwarehouseV1GetDocumentRequest: Request message for +// DocumentService.GetDocument. Next ID: 4 +type GoogleCloudContentwarehouseV1GetDocumentRequest struct { + // RequestMetadata: The meta information collected about the end user, + // used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RequestMetadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RequestMetadata") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1GetDocumentRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1GetDocumentRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1HistogramQuery: The histogram request. +type GoogleCloudContentwarehouseV1HistogramQuery struct { + // Filters: Optional. Filter the result of histogram query by the + // property names. It only works with histogram query + // count('FilterableProperties'). It is an optional. It will perform + // histogram on all the property names for all the document schemas. + // Setting this field will have a better performance. + Filters *GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter `json:"filters,omitempty"` + + // HistogramQuery: An expression specifies a histogram request against + // matching documents for searches. See + // SearchDocumentsRequest.histogram_queries for details about syntax. + HistogramQuery string `json:"histogramQuery,omitempty"` + + // RequirePreciseResultSize: Controls if the histogram query requires + // the return of a precise count. Enable this flag may adversely impact + // performance. Defaults to true. + RequirePreciseResultSize bool `json:"requirePreciseResultSize,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Filters") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Filters") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1HistogramQuery) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1HistogramQuery + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter struct { + // DocumentSchemas: 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/{docume + // nt_schema_id}. + DocumentSchemas []string `json:"documentSchemas,omitempty"` + + // PropertyNames: 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". + PropertyNames []string `json:"propertyNames,omitempty"` + + // YAxis: By default, the y_axis is HISTOGRAM_YAXIS_DOCUMENT if this + // field is not set. + // + // Possible values: + // "HISTOGRAM_YAXIS_DOCUMENT" - Count the documents per property name. + // "HISTOGRAM_YAXIS_PROPERTY" - Count the properties per property + // name. + YAxis string `json:"yAxis,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DocumentSchemas") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DocumentSchemas") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1HistogramQueryPropertyNameFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1HistogramQueryResult: Histogram result +// that matches HistogramQuery specified in searches. +type GoogleCloudContentwarehouseV1HistogramQueryResult struct { + // Histogram: A map from the values of the facet associated with + // distinct values to the number of matching entries with corresponding + // value. The key format is: * (for string histogram) string values + // stored in the field. + Histogram map[string]string `json:"histogram,omitempty"` + + // HistogramQuery: Requested histogram expression. + HistogramQuery string `json:"histogramQuery,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Histogram") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Histogram") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1HistogramQueryResult) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1HistogramQueryResult + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1InitializeProjectRequest: Request +// message for projectService.InitializeProject +type GoogleCloudContentwarehouseV1InitializeProjectRequest struct { + // AccessControlMode: Required. The access control mode for accessing + // the customer data + // + // Possible values: + // "ACL_MODE_UNKNOWN" - This value is required by protobuf best + // practices + // "ACL_MODE_UNIVERSAL_ACCESS" - Universal Access: No document level + // access control. + // "ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_BYOID" - Document level + // access control with customer own Identity Service. + // "ACL_MODE_DOCUMENT_LEVEL_ACCESS_CONTROL_GCI" - Document level + // access control using Google Cloud Identity. + AccessControlMode string `json:"accessControlMode,omitempty"` + + // DatabaseType: Required. The type of database used to store customer + // data + // + // Possible values: + // "DB_UNKNOWN" - This value is required by protobuf best practices + // "DB_INFRA_SPANNER" - Internal Spanner + // "DB_CLOUD_SQL_POSTGRES" - Cloud Sql with a Postgres Sql instance + DatabaseType string `json:"databaseType,omitempty"` + + // KmsKey: Optional. The KMS key used for CMEK encryption. It is + // required that the kms key is in the same region as the endpoint. The + // same key will be used for all provisioned resources, if encryption is + // available. If the kms_key is left empty, no encryption will be + // enforced. + KmsKey string `json:"kmsKey,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AccessControlMode") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AccessControlMode") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1InitializeProjectRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1InitializeProjectRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1InitializeProjectResponse: Response +// message for projectService.InitializeProject +type GoogleCloudContentwarehouseV1InitializeProjectResponse struct { + // Message: The message of the project initialization process. + Message string `json:"message,omitempty"` + + // State: The state of the project initialization process. + // + // Possible values: + // "STATE_UNSPECIFIED" - Clients should never see this. + // "SUCCEEDED" - Finished project initialization without error. + // "FAILED" - Finished project initialization with an error. + // "CANCELLED" - Client canceled the LRO. + // "RUNNING" - Ask the customer to check the operation for results. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Message") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Message") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1InitializeProjectResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1InitializeProjectResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1IntegerArray: Integer values. +type GoogleCloudContentwarehouseV1IntegerArray struct { + // Values: List of integer values. + Values []int64 `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Values") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Values") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1IntegerArray) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1IntegerArray + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1IntegerTypeOptions: Configurations for +// an integer property. +type GoogleCloudContentwarehouseV1IntegerTypeOptions struct { +} + +// GoogleCloudContentwarehouseV1InvalidRule: A triggered rule that +// failed the validation check(s) after parsing. +type GoogleCloudContentwarehouseV1InvalidRule struct { + // Error: Validation error on a parsed expression. + Error string `json:"error,omitempty"` + + // Rule: Triggered rule. + Rule *GoogleCloudContentwarehouseV1Rule `json:"rule,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Error") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Error") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1InvalidRule) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1InvalidRule + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ListDocumentSchemasResponse: Response +// message for DocumentSchemaService.ListDocumentSchemas. +type GoogleCloudContentwarehouseV1ListDocumentSchemasResponse struct { + // DocumentSchemas: The document schemas from the specified parent. + DocumentSchemas []*GoogleCloudContentwarehouseV1DocumentSchema `json:"documentSchemas,omitempty"` + + // NextPageToken: A token, which can be sent as `page_token` to retrieve + // the next page. If this field is omitted, there are no subsequent + // pages. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "DocumentSchemas") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DocumentSchemas") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ListDocumentSchemasResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ListDocumentSchemasResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ListLinkedSourcesRequest: Response +// message for DocumentLinkService.ListLinkedSources. +type GoogleCloudContentwarehouseV1ListLinkedSourcesRequest struct { + // PageSize: The maximum number of document-links to return. The service + // may return fewer than this value. If unspecified, at most 50 + // document-links will be returned. The maximum value is 1000; values + // above 1000 will be coerced to 1000. + PageSize int64 `json:"pageSize,omitempty"` + + // PageToken: A page token, received from a previous `ListLinkedSources` + // call. Provide this to retrieve the subsequent page. When paginating, + // all other parameters provided to `ListLinkedSources` must match the + // call that provided the page token. + PageToken string `json:"pageToken,omitempty"` + + // RequestMetadata: The meta information collected about the document + // creator, used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PageSize") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PageSize") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ListLinkedSourcesRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ListLinkedSourcesRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ListLinkedSourcesResponse: Response +// message for DocumentLinkService.ListLinkedSources. +type GoogleCloudContentwarehouseV1ListLinkedSourcesResponse struct { + // DocumentLinks: Source document-links. + DocumentLinks []*GoogleCloudContentwarehouseV1DocumentLink `json:"documentLinks,omitempty"` + + // NextPageToken: A token, which can be sent as `page_token` to retrieve + // the next page. If this field is omitted, there are no subsequent + // pages. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "DocumentLinks") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DocumentLinks") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ListLinkedSourcesResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ListLinkedSourcesResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ListLinkedTargetsRequest: Request +// message for DocumentLinkService.ListLinkedTargets. +type GoogleCloudContentwarehouseV1ListLinkedTargetsRequest struct { + // RequestMetadata: The meta information collected about the document + // creator, used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RequestMetadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RequestMetadata") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ListLinkedTargetsRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ListLinkedTargetsRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ListLinkedTargetsResponse: Response +// message for DocumentLinkService.ListLinkedTargets. +type GoogleCloudContentwarehouseV1ListLinkedTargetsResponse struct { + // DocumentLinks: Target document-links. + DocumentLinks []*GoogleCloudContentwarehouseV1DocumentLink `json:"documentLinks,omitempty"` + + // NextPageToken: A token, which can be sent as `page_token` to retrieve + // the next page. If this field is omitted, there are no subsequent + // pages. + NextPageToken string `json:"nextPageToken,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "DocumentLinks") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DocumentLinks") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ListLinkedTargetsResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ListLinkedTargetsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ListRuleSetsResponse: Response message +// for RuleSetService.ListRuleSets. +type GoogleCloudContentwarehouseV1ListRuleSetsResponse struct { + // NextPageToken: A token, which can be sent as `page_token` to retrieve + // the next page. If this field is omitted, there are no subsequent + // pages. + NextPageToken string `json:"nextPageToken,omitempty"` + + // RuleSets: The rule sets from the specified parent. + RuleSets []*GoogleCloudContentwarehouseV1RuleSet `json:"ruleSets,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ListRuleSetsResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ListRuleSetsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ListSynonymSetsResponse: Response +// message for SynonymSetService.ListSynonymSets. +type GoogleCloudContentwarehouseV1ListSynonymSetsResponse struct { + // NextPageToken: A page token, received from a previous + // `ListSynonymSets` call. Provide this to retrieve the subsequent page. + NextPageToken string `json:"nextPageToken,omitempty"` + + // SynonymSets: The synonymSets from the specified parent. + SynonymSets []*GoogleCloudContentwarehouseV1SynonymSet `json:"synonymSets,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "NextPageToken") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextPageToken") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ListSynonymSetsResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ListSynonymSetsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1MapProperty: Map property value. +// Represents a structured entries of key value pairs, consisting of +// field names which map to dynamically typed values. +type GoogleCloudContentwarehouseV1MapProperty struct { + // Fields: Unordered map of dynamically typed values. + Fields map[string]GoogleCloudContentwarehouseV1Value `json:"fields,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Fields") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Fields") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1MapProperty) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1MapProperty + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1MapTypeOptions: Configurations for a Map +// property. +type GoogleCloudContentwarehouseV1MapTypeOptions struct { +} + +// GoogleCloudContentwarehouseV1MergeFieldsOptions: Options for merging +// updated fields. +type GoogleCloudContentwarehouseV1MergeFieldsOptions struct { + // ReplaceMessageFields: When merging message fields, the default + // behavior is to merge the content of two message fields together. If + // you instead want to use the field from the source message to replace + // the corresponding field in the destination message, set this flag to + // true. When this flag is set, specified submessage fields that are + // missing in source will be cleared in destination. + ReplaceMessageFields bool `json:"replaceMessageFields,omitempty"` + + // ReplaceRepeatedFields: When merging repeated fields, the default + // behavior is to append entries from the source repeated field to the + // destination repeated field. If you instead want to keep only the + // entries from the source repeated field, set this flag to true. If you + // want to replace a repeated field within a message field on the + // destination message, you must set both replace_repeated_fields and + // replace_message_fields to true, otherwise the repeated fields will be + // appended. + ReplaceRepeatedFields bool `json:"replaceRepeatedFields,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ReplaceMessageFields") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ReplaceMessageFields") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1MergeFieldsOptions) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1MergeFieldsOptions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1Property: Property of a document. +type GoogleCloudContentwarehouseV1Property struct { + // DateTimeValues: Date time property values. It is not supported by + // CMEK compliant deployment. + DateTimeValues *GoogleCloudContentwarehouseV1DateTimeArray `json:"dateTimeValues,omitempty"` + + // EnumValues: Enum property values. + EnumValues *GoogleCloudContentwarehouseV1EnumArray `json:"enumValues,omitempty"` + + // FloatValues: Float property values. + FloatValues *GoogleCloudContentwarehouseV1FloatArray `json:"floatValues,omitempty"` + + // IntegerValues: Integer property values. + IntegerValues *GoogleCloudContentwarehouseV1IntegerArray `json:"integerValues,omitempty"` + + // MapProperty: Map property values. + MapProperty *GoogleCloudContentwarehouseV1MapProperty `json:"mapProperty,omitempty"` + + // Name: Required. Must match the name of a PropertyDefinition in the + // DocumentSchema. + Name string `json:"name,omitempty"` + + // PropertyValues: Nested structured data property values. + PropertyValues *GoogleCloudContentwarehouseV1PropertyArray `json:"propertyValues,omitempty"` + + // TextValues: String/text property values. + TextValues *GoogleCloudContentwarehouseV1TextArray `json:"textValues,omitempty"` + + // TimestampValues: Timestamp property values. It is not supported by + // CMEK compliant deployment. + TimestampValues *GoogleCloudContentwarehouseV1TimestampArray `json:"timestampValues,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DateTimeValues") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DateTimeValues") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1Property) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1Property + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1PropertyArray: Property values. +type GoogleCloudContentwarehouseV1PropertyArray struct { + // Properties: List of property values. + Properties []*GoogleCloudContentwarehouseV1Property `json:"properties,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Properties") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Properties") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1PropertyArray) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1PropertyArray + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1PropertyDefinition: Defines the metadata +// for a schema property. Next ID: 18 +type GoogleCloudContentwarehouseV1PropertyDefinition struct { + // DateTimeTypeOptions: Date time property. It is not supported by CMEK + // compliant deployment. + DateTimeTypeOptions *GoogleCloudContentwarehouseV1DateTimeTypeOptions `json:"dateTimeTypeOptions,omitempty"` + + // DisplayName: The display-name for the property, used for front-end. + DisplayName string `json:"displayName,omitempty"` + + // EnumTypeOptions: Enum/categorical property. + EnumTypeOptions *GoogleCloudContentwarehouseV1EnumTypeOptions `json:"enumTypeOptions,omitempty"` + + // FloatTypeOptions: Float property. + FloatTypeOptions *GoogleCloudContentwarehouseV1FloatTypeOptions `json:"floatTypeOptions,omitempty"` + + // IntegerTypeOptions: Integer property. + IntegerTypeOptions *GoogleCloudContentwarehouseV1IntegerTypeOptions `json:"integerTypeOptions,omitempty"` + + // IsFilterable: Whether the property can be filtered. If this is a + // sub-property, all the parent properties must be marked filterable. + IsFilterable bool `json:"isFilterable,omitempty"` + + // IsMetadata: Whether the property is user supplied metadata. + IsMetadata bool `json:"isMetadata,omitempty"` + + // IsRepeatable: Whether the property can have multiple values. + IsRepeatable bool `json:"isRepeatable,omitempty"` + + // IsRequired: Whether the property is mandatory. Default is 'false', + // i.e. populating property value can be skipped. If 'true' then user + // must populate the value for this property. + IsRequired bool `json:"isRequired,omitempty"` + + // IsSearchable: Indicates that the property should be included in a + // global search. + IsSearchable bool `json:"isSearchable,omitempty"` + + // MapTypeOptions: Map property. + MapTypeOptions *GoogleCloudContentwarehouseV1MapTypeOptions `json:"mapTypeOptions,omitempty"` + + // Name: Required. The name of the metadata property. Must be unique + // within a document schema and is case insensitive. Names must be + // non-blank, start with a letter, and can contain alphanumeric + // characters and: /, :, -, _, and . + Name string `json:"name,omitempty"` + + // PropertyTypeOptions: Nested structured data property. + PropertyTypeOptions *GoogleCloudContentwarehouseV1PropertyTypeOptions `json:"propertyTypeOptions,omitempty"` + + // TextTypeOptions: Text/string property. + TextTypeOptions *GoogleCloudContentwarehouseV1TextTypeOptions `json:"textTypeOptions,omitempty"` + + // TimestampTypeOptions: Timestamp property. It is not supported by CMEK + // compliant deployment. + TimestampTypeOptions *GoogleCloudContentwarehouseV1TimestampTypeOptions `json:"timestampTypeOptions,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DateTimeTypeOptions") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DateTimeTypeOptions") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1PropertyDefinition) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1PropertyDefinition + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoogleCloudContentwarehouseV1PropertyFilter struct { + // Condition: 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, "property.company ~~ + // \"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. + Condition string `json:"condition,omitempty"` + + // DocumentSchemaName: The Document schema name + // Document.document_schema_name. Format: + // projects/{project_number}/locations/{location}/documentSchemas/{docume + // nt_schema_id}. + DocumentSchemaName string `json:"documentSchemaName,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Condition") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Condition") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1PropertyFilter) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1PropertyFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1PropertyTypeOptions: Configurations for +// a nested structured data property. +type GoogleCloudContentwarehouseV1PropertyTypeOptions struct { + // PropertyDefinitions: Required. List of property definitions. + PropertyDefinitions []*GoogleCloudContentwarehouseV1PropertyDefinition `json:"propertyDefinitions,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PropertyDefinitions") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PropertyDefinitions") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1PropertyTypeOptions) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1PropertyTypeOptions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1PublishAction: Represents the action +// responsible for publishing messages to a Pub/Sub topic. +type GoogleCloudContentwarehouseV1PublishAction struct { + // Messages: Messages to be published. + Messages []string `json:"messages,omitempty"` + + // TopicId: The topic id in the Pub/Sub service for which messages will + // be published to. + TopicId string `json:"topicId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Messages") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Messages") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1PublishAction) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1PublishAction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1QAResult: Additional result info for the +// question-answering feature. +type GoogleCloudContentwarehouseV1QAResult struct { + // ConfidenceScore: The calibrated confidence score for this document, + // in the range [0., 1.]. This represents the confidence level for + // whether the returned document and snippet answers the user's query. + ConfidenceScore float64 `json:"confidenceScore,omitempty"` + + // Highlights: Highlighted sections in the snippet. + Highlights []*GoogleCloudContentwarehouseV1QAResultHighlight `json:"highlights,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ConfidenceScore") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ConfidenceScore") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1QAResult) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1QAResult + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudContentwarehouseV1QAResult) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudContentwarehouseV1QAResult + var s1 struct { + ConfidenceScore gensupport.JSONFloat64 `json:"confidenceScore"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.ConfidenceScore = float64(s1.ConfidenceScore) + return nil +} + +// GoogleCloudContentwarehouseV1QAResultHighlight: A text span in the +// search text snippet that represents a highlighted section (answer +// context, highly relevant sentence, etc.). +type GoogleCloudContentwarehouseV1QAResultHighlight struct { + // EndIndex: End index of the highlight, exclusive. + EndIndex int64 `json:"endIndex,omitempty"` + + // StartIndex: Start index of the highlight. + StartIndex int64 `json:"startIndex,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndIndex") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndIndex") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1QAResultHighlight) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1QAResultHighlight + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1RemoveFromFolderAction: Represents the +// action responsible for remove a document from a specific folder. +type GoogleCloudContentwarehouseV1RemoveFromFolderAction struct { + // Condition: Condition of the action to be executed. + Condition string `json:"condition,omitempty"` + + // Folder: Name of the folder under which new document is to be added. + // Format: + // projects/{project_number}/locations/{location}/documents/{document_id} + // . + Folder string `json:"folder,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Condition") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Condition") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1RemoveFromFolderAction) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1RemoveFromFolderAction + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1RequestMetadata: Meta information is +// used to improve the performance of the service. +type GoogleCloudContentwarehouseV1RequestMetadata struct { + // UserInfo: Provides user unique identification and groups information. + UserInfo *GoogleCloudContentwarehouseV1UserInfo `json:"userInfo,omitempty"` + + // ForceSendFields is a list of field names (e.g. "UserInfo") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "UserInfo") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1RequestMetadata) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1RequestMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1ResponseMetadata: Additional information +// returned to client, such as debugging information. +type GoogleCloudContentwarehouseV1ResponseMetadata struct { + // RequestId: A unique id associated with this call. This id is logged + // for tracking purpose. + RequestId string `json:"requestId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RequestId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RequestId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1ResponseMetadata) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1ResponseMetadata + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1Rule: Represents the rule for a content +// warehouse trigger. +type GoogleCloudContentwarehouseV1Rule struct { + // Actions: List of actions that are executed when the rule is + // satisfied. + Actions []*GoogleCloudContentwarehouseV1Action `json:"actions,omitempty"` + + // Condition: Represents the conditional expression to be evaluated. + // Expression should evaluate to a boolean result. When the condition is + // true actions are executed. Example: user_role = "hsbc_role_1" AND + // doc.salary > 20000 + Condition string `json:"condition,omitempty"` + + // Description: Short description of the rule and its context. + Description string `json:"description,omitempty"` + + // RuleId: ID of the rule. It has to be unique across all the examples. + // This is managed internally. + RuleId string `json:"ruleId,omitempty"` + + // TriggerType: Identifies the trigger type for running the policy. + // + // Possible values: + // "UNKNOWN" + // "ON_CREATE" - Trigger for create document action. + // "ON_UPDATE" - Trigger for update document action. + TriggerType string `json:"triggerType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Actions") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Actions") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1Rule) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1Rule + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1RuleActionsPair: Represents a rule and +// outputs of associated actions. +type GoogleCloudContentwarehouseV1RuleActionsPair struct { + // ActionOutputs: Outputs of executing the actions associated with the + // above rule. + ActionOutputs []*GoogleCloudContentwarehouseV1ActionOutput `json:"actionOutputs,omitempty"` + + // Rule: Represents the rule. + Rule *GoogleCloudContentwarehouseV1Rule `json:"rule,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ActionOutputs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ActionOutputs") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1RuleActionsPair) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1RuleActionsPair + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1RuleEngineOutput: Records the output of +// Rule Engine including rule evaluation and actions result. +type GoogleCloudContentwarehouseV1RuleEngineOutput struct { + // ActionExecutorOutput: Output from Action Executor containing rule and + // corresponding actions execution result. + ActionExecutorOutput *GoogleCloudContentwarehouseV1ActionExecutorOutput `json:"actionExecutorOutput,omitempty"` + + // DocumentName: Name of the document against which the rules and + // actions were evaluated. + DocumentName string `json:"documentName,omitempty"` + + // RuleEvaluatorOutput: Output from Rule Evaluator containing matched, + // unmatched and invalid rules. + RuleEvaluatorOutput *GoogleCloudContentwarehouseV1RuleEvaluatorOutput `json:"ruleEvaluatorOutput,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ActionExecutorOutput") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ActionExecutorOutput") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1RuleEngineOutput) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1RuleEngineOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1RuleEvaluatorOutput: Represents the +// output of the Rule Evaluator. +type GoogleCloudContentwarehouseV1RuleEvaluatorOutput struct { + // InvalidRules: A subset of triggered rules that failed the validation + // check(s) after parsing. + InvalidRules []*GoogleCloudContentwarehouseV1InvalidRule `json:"invalidRules,omitempty"` + + // MatchedRules: A subset of triggered rules that are evaluated true for + // a given request. + MatchedRules []*GoogleCloudContentwarehouseV1Rule `json:"matchedRules,omitempty"` + + // TriggeredRules: List of rules fetched from database for the given + // request trigger type. + TriggeredRules []*GoogleCloudContentwarehouseV1Rule `json:"triggeredRules,omitempty"` + + // ForceSendFields is a list of field names (e.g. "InvalidRules") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "InvalidRules") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1RuleEvaluatorOutput) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1RuleEvaluatorOutput + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1RuleSet: Represents a set of rules from +// a single customer. Next id: 9 +type GoogleCloudContentwarehouseV1RuleSet struct { + // Description: Short description of the rule-set. + Description string `json:"description,omitempty"` + + // Name: The resource name of the rule set. Managed internally. Format: + // projects/{project_number}/locations/{location}/ruleSet/{rule_set_id}. + // The name is ignored when creating a rule set. + Name string `json:"name,omitempty"` + + // Rules: List of rules given by the customer. + Rules []*GoogleCloudContentwarehouseV1Rule `json:"rules,omitempty"` + + // Source: Source of the rules i.e., customer name. + Source string `json:"source,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Description") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Description") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1RuleSet) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1RuleSet + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoogleCloudContentwarehouseV1SearchDocumentsRequest struct { + // DocumentQuery: Query used to search against documents (keyword, + // filters, etc.). + DocumentQuery *GoogleCloudContentwarehouseV1DocumentQuery `json:"documentQuery,omitempty"` + + // HistogramQueries: An expression specifying a histogram request + // against matching documents. Expression syntax is an aggregation + // function call with histogram facets and other options. The following + // aggregation functions are supported: * + // `count(string_histogram_facet)`: Count the number of matching + // entities for each distinct attribute value. Data types: * Histogram + // facet (aka filterable properties): Facet names with format .. Facets will have the format of: a-zA-Z. If the facet is + // a child facet, then the parent hierarchy needs to be specified + // separated by dots in the prefix after the schema id. Thus, the format + // for a multi- level facet is: .. . Example: + // schema123.root_parent_facet.middle_facet.child_facet * + // DocumentSchemaId: (with no schema id prefix) to get histograms for + // each document type (returns the schema id path, e.g. + // projects/12345/locations/us-west/documentSchemas/abc123). Example + // expression: * Document type counts: count('DocumentSchemaId') * For + // schema id, abc123, get the counts for MORTGAGE_TYPE: + // count('abc123.MORTGAGE_TYPE') + HistogramQueries []*GoogleCloudContentwarehouseV1HistogramQuery `json:"histogramQueries,omitempty"` + + // Offset: An integer that specifies the current offset (that is, + // starting result location, amongst the documents deemed by the API as + // relevant) in search results. This field is only considered if + // page_token is unset. The maximum allowed value is 5000. Otherwise an + // error is thrown. For example, 0 means to return results starting from + // the first matching document, and 10 means to return from the 11th + // document. This can be used for pagination, (for example, pageSize = + // 10 and offset = 10 means to return from the second page). + Offset int64 `json:"offset,omitempty"` + + // OrderBy: The criteria determining how search results are sorted. For + // non-empty query, default is "relevance desc". For empty query, + // default is "upload_date desc". Supported options are: * "relevance + // desc": By relevance descending, as determined by the API algorithms. + // * "upload_date desc": By upload date descending. * "upload_date": + // By upload date ascending. * "update_date desc": By last updated + // date descending. * "update_date": By last updated date ascending. + OrderBy string `json:"orderBy,omitempty"` + + // PageSize: A limit on the number of documents returned in the search + // results. Increasing this value above the default value of 10 can + // increase search response time. The value can be between 1 and 100. + PageSize int64 `json:"pageSize,omitempty"` + + // PageToken: The token specifying the current offset within search + // results. See SearchDocumentsResponse.next_page_token for an + // explanation of how to obtain the next set of query results. + PageToken string `json:"pageToken,omitempty"` + + // QaSizeLimit: Experimental, do not use. The limit on the number of + // documents returned for the question-answering feature. To enable the + // question-answering feature, set [DocumentQuery].is_nl_query to true. + QaSizeLimit int64 `json:"qaSizeLimit,omitempty"` + + // RequestMetadata: The meta information collected about the end user, + // used to enforce access control and improve the search quality of the + // service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // RequireTotalSize: Optional. Controls if the search document request + // requires the return of a total size of matched documents. See + // SearchDocumentsResponse.total_size. Enabling this flag may adversely + // impact performance. Defaults to false. + RequireTotalSize bool `json:"requireTotalSize,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DocumentQuery") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DocumentQuery") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1SearchDocumentsRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1SearchDocumentsRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1SearchDocumentsResponse: Response +// message for DocumentService.SearchDocuments. +type GoogleCloudContentwarehouseV1SearchDocumentsResponse struct { + // HistogramQueryResults: The histogram results that match with the + // specified SearchDocumentsRequest.histogram_queries. + HistogramQueryResults []*GoogleCloudContentwarehouseV1HistogramQueryResult `json:"histogramQueryResults,omitempty"` + + // MatchingDocuments: The document entities that match the specified + // SearchDocumentsRequest. + MatchingDocuments []*GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument `json:"matchingDocuments,omitempty"` + + // Metadata: Additional information for the API invocation, such as the + // request tracking id. + Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"` + + // NextPageToken: The token that specifies the starting position of the + // next page of results. This field is empty if there are no more + // results. + NextPageToken string `json:"nextPageToken,omitempty"` + + // TotalSize: The total number of matched documents which is available + // only if the client set SearchDocumentsRequest.require_total_size to + // `true`. Otherwise, the value will be `-1`. + TotalSize int64 `json:"totalSize,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. + // "HistogramQueryResults") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "HistogramQueryResults") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1SearchDocumentsResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1SearchDocumentsResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument: +// Document entry with metadata inside SearchDocumentsResponse +type GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument struct { + // Document: Document that matches the specified SearchDocumentsRequest. + // This document only contains indexed metadata information. + Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"` + + // QaResult: Experimental. Additional result info if the + // question-answering feature is enabled. + QaResult *GoogleCloudContentwarehouseV1QAResult `json:"qaResult,omitempty"` + + // SearchTextSnippet: Contains snippets of text from the document full + // raw text that most closely match a search query's keywords, if + // available. All HTML tags in the original fields are stripped when + // returned in this field, and matching query keywords are enclosed in + // HTML bold tags. If the question-answering feature is enabled, this + // field will instead contain a snippet that answers the user's + // natural-language query. No HTML bold tags will be present, and + // highlights in the answer snippet can be found in QAResult.highlights. + SearchTextSnippet string `json:"searchTextSnippet,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Document") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Document") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1SearchDocumentsResponseMatchingDocument + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1SetAclRequest: Request message for +// DocumentService.SetAcl. +type GoogleCloudContentwarehouseV1SetAclRequest struct { + // Policy: Required. REQUIRED: The complete policy to be applied to the + // `resource`. The size of the policy is limited to a few 10s of KB. + Policy *GoogleIamV1Policy `json:"policy,omitempty"` + + // ProjectOwner: For Set Project ACL only. Authorization check for end + // user will be ignored when project_owner=true. + ProjectOwner bool `json:"projectOwner,omitempty"` + + // RequestMetadata: The meta information collected about the end user, + // used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Policy") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Policy") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1SetAclRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1SetAclRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1SetAclResponse: Response message for +// DocumentService.SetAcl. +type GoogleCloudContentwarehouseV1SetAclResponse struct { + // Metadata: Additional information for the API invocation, such as the + // request tracking id. + Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"` + + // Policy: The policy will be attached to a resource (e.g. projecct, + // document). + Policy *GoogleIamV1Policy `json:"policy,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Metadata") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Metadata") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1SetAclResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1SetAclResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1SynonymSet: 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 +type GoogleCloudContentwarehouseV1SynonymSet struct { + // Context: This is a freeform field. Example contexts can be "sales," + // "engineering," "real estate," "accounting," etc. The context can be + // supplied during search requests. + Context string `json:"context,omitempty"` + + // Name: The resource name of the SynonymSet This is mandatory for + // google.api.resource. Format: + // projects/{project_number}/locations/{location}/synonymSets/{context}. + Name string `json:"name,omitempty"` + + // Synonyms: List of Synonyms for the context. + Synonyms []*GoogleCloudContentwarehouseV1SynonymSetSynonym `json:"synonyms,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Context") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Context") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1SynonymSet) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1SynonymSet + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1SynonymSetSynonym: Represents a list of +// words given by the customer All these words are synonyms of each +// other. +type GoogleCloudContentwarehouseV1SynonymSetSynonym struct { + // Words: For example: sale, invoice, bill, order + Words []string `json:"words,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Words") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Words") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1SynonymSetSynonym) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1SynonymSetSynonym + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1TextArray: String/text values. +type GoogleCloudContentwarehouseV1TextArray struct { + // Values: List of text values. + Values []string `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Values") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Values") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1TextArray) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1TextArray + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1TextTypeOptions: Configurations for a +// text property. +type GoogleCloudContentwarehouseV1TextTypeOptions struct { +} + +// GoogleCloudContentwarehouseV1TimeFilter: Filter on create timestamp +// or update timestamp of documents. +type GoogleCloudContentwarehouseV1TimeFilter struct { + // TimeField: Specifies which time field to filter documents on. + // Defaults to TimeField.UPLOAD_TIME. + // + // Possible values: + // "TIME_FIELD_UNSPECIFIED" - Default value. + // "CREATE_TIME" - Earliest document create time. + // "UPDATE_TIME" - Latest document update time. + TimeField string `json:"timeField,omitempty"` + + TimeRange *GoogleTypeInterval `json:"timeRange,omitempty"` + + // ForceSendFields is a list of field names (e.g. "TimeField") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TimeField") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1TimeFilter) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1TimeFilter + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1TimestampArray: Timestamp values. +type GoogleCloudContentwarehouseV1TimestampArray struct { + // Values: List of timestamp values. + Values []*GoogleCloudContentwarehouseV1TimestampValue `json:"values,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Values") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Values") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1TimestampArray) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1TimestampArray + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1TimestampTypeOptions: Configurations for +// a timestamp property. +type GoogleCloudContentwarehouseV1TimestampTypeOptions struct { +} + +// GoogleCloudContentwarehouseV1TimestampValue: Timestamp value type. +type GoogleCloudContentwarehouseV1TimestampValue struct { + // TextValue: The string must represent a valid instant in UTC and is + // parsed using java.time.format.DateTimeFormatter.ISO_INSTANT. e.g. + // "2013-09-29T18:46:19Z" + TextValue string `json:"textValue,omitempty"` + + // TimestampValue: Timestamp value + TimestampValue string `json:"timestampValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. "TextValue") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TextValue") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1TimestampValue) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1TimestampValue + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1UpdateDocumentMetadata: Metadata object +// for UpdateDocument request (currently empty). +type GoogleCloudContentwarehouseV1UpdateDocumentMetadata struct { +} + +// GoogleCloudContentwarehouseV1UpdateDocumentRequest: Request message +// for DocumentService.UpdateDocument. +type GoogleCloudContentwarehouseV1UpdateDocumentRequest struct { + // CloudAiDocumentOption: Request Option for processing Cloud AI + // Document in CW Document. + CloudAiDocumentOption *GoogleCloudContentwarehouseV1CloudAIDocumentOption `json:"cloudAiDocumentOption,omitempty"` + + // Document: Required. The document to update. + Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"` + + // RequestMetadata: The meta information collected about the end user, + // used to enforce access control for the service. + RequestMetadata *GoogleCloudContentwarehouseV1RequestMetadata `json:"requestMetadata,omitempty"` + + // UpdateOptions: Options for the update operation. + UpdateOptions *GoogleCloudContentwarehouseV1UpdateOptions `json:"updateOptions,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CloudAiDocumentOption") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CloudAiDocumentOption") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1UpdateDocumentRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1UpdateDocumentRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1UpdateDocumentResponse: Response message +// for DocumentService.UpdateDocument. +type GoogleCloudContentwarehouseV1UpdateDocumentResponse struct { + // Document: Updated document after executing update request. + Document *GoogleCloudContentwarehouseV1Document `json:"document,omitempty"` + + // Metadata: Additional information for the API invocation, such as the + // request tracking id. + Metadata *GoogleCloudContentwarehouseV1ResponseMetadata `json:"metadata,omitempty"` + + // RuleEngineOutput: Output from Rule Engine recording the rule + // evaluator and action executor's output. Refer format in: + // google/cloud/contentwarehouse/v1/rule_engine.proto + RuleEngineOutput *GoogleCloudContentwarehouseV1RuleEngineOutput `json:"ruleEngineOutput,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Document") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Document") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1UpdateDocumentResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1UpdateDocumentResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest: Request +// message for DocumentSchemaService.UpdateDocumentSchema. +type GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest struct { + // DocumentSchema: Required. The document schema to update with. + DocumentSchema *GoogleCloudContentwarehouseV1DocumentSchema `json:"documentSchema,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DocumentSchema") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DocumentSchema") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1UpdateDocumentSchemaRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1UpdateOptions: Options for Update +// operations. +type GoogleCloudContentwarehouseV1UpdateOptions struct { + // MergeFieldsOptions: Options for merging. + MergeFieldsOptions *GoogleCloudContentwarehouseV1MergeFieldsOptions `json:"mergeFieldsOptions,omitempty"` + + // UpdateMask: Field mask for merging Document fields. For the + // `FieldMask` definition, see + // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask + UpdateMask string `json:"updateMask,omitempty"` + + // UpdateType: Type for update. + // + // Possible values: + // "UPDATE_TYPE_UNSPECIFIED" - Defaults to full replace behavior, ie. + // FULL_REPLACE. + // "UPDATE_TYPE_REPLACE" - Fully replace all the fields. Any field + // masks will be ignored. + // "UPDATE_TYPE_MERGE" - Merge the fields into the existing entities. + // "UPDATE_TYPE_INSERT_PROPERTIES_BY_NAMES" - Inserts the properties + // by names. + // "UPDATE_TYPE_REPLACE_PROPERTIES_BY_NAMES" - Replace the properties + // by names. + // "UPDATE_TYPE_DELETE_PROPERTIES_BY_NAMES" - Delete the properties by + // names. + UpdateType string `json:"updateType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "MergeFieldsOptions") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "MergeFieldsOptions") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1UpdateOptions) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1UpdateOptions + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1UpdateRuleSetRequest: Request message +// for RuleSetService.UpdateRuleSet. +type GoogleCloudContentwarehouseV1UpdateRuleSetRequest struct { + // RuleSet: Required. The rule set to update. + RuleSet *GoogleCloudContentwarehouseV1RuleSet `json:"ruleSet,omitempty"` + + // ForceSendFields is a list of field names (e.g. "RuleSet") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "RuleSet") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1UpdateRuleSetRequest) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1UpdateRuleSetRequest + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GoogleCloudContentwarehouseV1UserInfo struct { + // GroupIds: The unique group identifications which the user is belong + // to. The format is "group:yyyy@example.com"; + GroupIds []string `json:"groupIds,omitempty"` + + // Id: A unique user identification string, as determined by the client. + // The maximum number of allowed characters is 255. Allowed characters + // include numbers 0 to 9, uppercase and lowercase letters, and + // restricted special symbols (:, @, +, -, _, ~) The format is + // "user:xxxx@example.com"; + Id string `json:"id,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GroupIds") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GroupIds") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1UserInfo) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1UserInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1Value: `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. +type GoogleCloudContentwarehouseV1Value struct { + // BooleanValue: Represents a boolean value. + BooleanValue bool `json:"booleanValue,omitempty"` + + // DatetimeValue: Represents a datetime value. + DatetimeValue *GoogleTypeDateTime `json:"datetimeValue,omitempty"` + + // EnumValue: Represents an enum value. + EnumValue *GoogleCloudContentwarehouseV1EnumValue `json:"enumValue,omitempty"` + + // FloatValue: Represents a float value. + FloatValue float64 `json:"floatValue,omitempty"` + + // IntValue: Represents a integer value. + IntValue int64 `json:"intValue,omitempty"` + + // StringValue: Represents a string value. + StringValue string `json:"stringValue,omitempty"` + + // TimestampValue: Represents a timestamp value. + TimestampValue *GoogleCloudContentwarehouseV1TimestampValue `json:"timestampValue,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BooleanValue") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BooleanValue") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1Value) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1Value + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudContentwarehouseV1Value) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudContentwarehouseV1Value + var s1 struct { + FloatValue gensupport.JSONFloat64 `json:"floatValue"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.FloatValue = float64(s1.FloatValue) + return nil +} + +// GoogleCloudContentwarehouseV1beta1CreateDocumentMetadata: Metadata +// object for CreateDocument request (currently empty). +type GoogleCloudContentwarehouseV1beta1CreateDocumentMetadata struct { +} + +// GoogleCloudContentwarehouseV1beta1InitializeProjectResponse: Response +// message for projectService.InitializeProject +type GoogleCloudContentwarehouseV1beta1InitializeProjectResponse struct { + // Message: The message of the project initialization process. + Message string `json:"message,omitempty"` + + // State: The state of the project initialization process. + // + // Possible values: + // "STATE_UNSPECIFIED" - Clients should never see this. + // "SUCCEEDED" - Finished project initialization without error. + // "FAILED" - Finished project initialization with an error. + // "CANCELLED" - Client canceled the LRO. + // "RUNNING" - Ask the customer to check the operation for results. + State string `json:"state,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Message") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Message") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudContentwarehouseV1beta1InitializeProjectResponse) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudContentwarehouseV1beta1InitializeProjectResponse + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudContentwarehouseV1beta1UpdateDocumentMetadata: Metadata +// object for UpdateDocument request (currently empty). +type GoogleCloudContentwarehouseV1beta1UpdateDocumentMetadata struct { +} + +// GoogleCloudDocumentaiV1Barcode: Encodes the detailed information of a +// barcode. +type GoogleCloudDocumentaiV1Barcode struct { + // Format: Format of a barcode. The supported formats are: CODE_128: + // Code 128 type. CODE_39: Code 39 type. CODE_93: Code 93 type. CODABAR: + // Codabar type. DATA_MATRIX: 2D Data Matrix type. ITF: ITF type. + // EAN_13: EAN-13 type. EAN_8: EAN-8 type. QR_CODE: 2D QR code type. + // UPC_A: UPC-A type. UPC_E: UPC-E type. PDF417: PDF417 type. AZTEC: 2D + // Aztec code type. DATABAR: GS1 DataBar code type. + Format string `json:"format,omitempty"` + + // RawValue: Raw value encoded in the barcode. For example, + // 'MEBKM:TITLE:Google;URL:https://www.google.com;;'. + RawValue string `json:"rawValue,omitempty"` + + // ValueFormat: Value format describes the format of the value that a + // barcode encodes. The supported formats are: CONTACT_INFO: Contact + // information. EMAIL: Email address. ISBN: ISBN identifier. PHONE: + // Phone number. PRODUCT: Product. SMS: SMS message. TEXT: Text string. + // URL: URL address. WIFI: Wifi information. GEO: Geo-localization. + // CALENDAR_EVENT: Calendar event. DRIVER_LICENSE: Driver's license. + ValueFormat string `json:"valueFormat,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Format") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Format") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1Barcode) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1Barcode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1BoundingPoly: A bounding polygon for the +// detected image annotation. +type GoogleCloudDocumentaiV1BoundingPoly struct { + // NormalizedVertices: The bounding polygon normalized vertices. + NormalizedVertices []*GoogleCloudDocumentaiV1NormalizedVertex `json:"normalizedVertices,omitempty"` + + // Vertices: The bounding polygon vertices. + Vertices []*GoogleCloudDocumentaiV1Vertex `json:"vertices,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NormalizedVertices") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NormalizedVertices") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1BoundingPoly) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1BoundingPoly + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1Document: 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. +type GoogleCloudDocumentaiV1Document struct { + // Content: Optional. Inline document content, represented as a stream + // of bytes. Note: As with all `bytes` fields, protobuffers use a pure + // binary representation, whereas JSON representations use base64. + Content string `json:"content,omitempty"` + + // Entities: A list of entities detected on Document.text. For document + // shards, entities in this list may cross shard boundaries. + Entities []*GoogleCloudDocumentaiV1DocumentEntity `json:"entities,omitempty"` + + // EntityRelations: Placeholder. Relationship among Document.entities. + EntityRelations []*GoogleCloudDocumentaiV1DocumentEntityRelation `json:"entityRelations,omitempty"` + + // Error: Any error that occurred while processing this document. + Error *GoogleRpcStatus `json:"error,omitempty"` + + // MimeType: An IANA published MIME type (also referred to as media + // type). For more information, see + // https://www.iana.org/assignments/media-types/media-types.xhtml. + MimeType string `json:"mimeType,omitempty"` + + // Pages: Visual page layout for the Document. + Pages []*GoogleCloudDocumentaiV1DocumentPage `json:"pages,omitempty"` + + // Revisions: Placeholder. Revision history of this document. + Revisions []*GoogleCloudDocumentaiV1DocumentRevision `json:"revisions,omitempty"` + + // ShardInfo: Information about the sharding if this document is sharded + // part of a larger document. If the document is not sharded, this + // message is not specified. + ShardInfo *GoogleCloudDocumentaiV1DocumentShardInfo `json:"shardInfo,omitempty"` + + // Text: Optional. UTF-8 encoded text in reading order from the + // document. + Text string `json:"text,omitempty"` + + // TextChanges: Placeholder. A list of text corrections made to + // [Document.text]. This is usually used for annotating corrections to + // OCR mistakes. Text changes for a given revision may not overlap with + // each other. + TextChanges []*GoogleCloudDocumentaiV1DocumentTextChange `json:"textChanges,omitempty"` + + // TextStyles: Placeholder. Styles for the Document.text. + TextStyles []*GoogleCloudDocumentaiV1DocumentStyle `json:"textStyles,omitempty"` + + // Uri: Optional. Currently supports Google Cloud Storage URI of the + // form `gs://bucket_name/object_name`. Object versioning is not + // supported. See Google Cloud Storage Request URIs + // (https://cloud.google.com/storage/docs/reference-uris) for more info. + Uri string `json:"uri,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Content") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Content") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1Document) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1Document + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentEntity: 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. +type GoogleCloudDocumentaiV1DocumentEntity struct { + // Confidence: Optional. Confidence of detected Schema entity. Range [0, + // 1]. + Confidence float64 `json:"confidence,omitempty"` + + // Id: Optional. Canonical id. This will be a unique value in the entity + // list for this document. + Id string `json:"id,omitempty"` + + // MentionId: Optional. Deprecated. Use `id` field instead. + MentionId string `json:"mentionId,omitempty"` + + // MentionText: Optional. Text value of the entity e.g. `1600 + // Amphitheatre Pkwy`. + MentionText string `json:"mentionText,omitempty"` + + // NormalizedValue: Optional. Normalized entity value. Absent if the + // extracted value could not be converted or the type (e.g. address) is + // not supported for certain parsers. This field is also only populated + // for certain supported document types. + NormalizedValue *GoogleCloudDocumentaiV1DocumentEntityNormalizedValue `json:"normalizedValue,omitempty"` + + // PageAnchor: Optional. Represents the provenance of this entity wrt. + // the location on the page where it was found. + PageAnchor *GoogleCloudDocumentaiV1DocumentPageAnchor `json:"pageAnchor,omitempty"` + + // Properties: Optional. Entities can be nested to form a hierarchical + // data structure representing the content in the document. + Properties []*GoogleCloudDocumentaiV1DocumentEntity `json:"properties,omitempty"` + + // Provenance: Optional. The history of this annotation. + Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"` + + // Redacted: Optional. Whether the entity will be redacted for + // de-identification purposes. + Redacted bool `json:"redacted,omitempty"` + + // TextAnchor: Optional. Provenance of the entity. Text anchor indexing + // into the Document.text. + TextAnchor *GoogleCloudDocumentaiV1DocumentTextAnchor `json:"textAnchor,omitempty"` + + // Type: Required. Entity type from a schema e.g. `Address`. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Confidence") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Confidence") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentEntity) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentEntity + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudDocumentaiV1DocumentEntity) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudDocumentaiV1DocumentEntity + var s1 struct { + Confidence gensupport.JSONFloat64 `json:"confidence"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Confidence = float64(s1.Confidence) + return nil +} + +// GoogleCloudDocumentaiV1DocumentEntityNormalizedValue: Parsed and +// normalized entity value. +type GoogleCloudDocumentaiV1DocumentEntityNormalizedValue struct { + // AddressValue: Postal address. See also: + // https://github.com/googleapis/googleapis/blob/master/google/type/postal_address.proto + AddressValue *GoogleTypePostalAddress `json:"addressValue,omitempty"` + + // BooleanValue: Boolean value. Can be used for entities with binary + // values, or for checkboxes. + BooleanValue bool `json:"booleanValue,omitempty"` + + // DateValue: Date value. Includes year, month, day. See also: + // https://github.com/googleapis/googleapis/blob/master/google/type/date.proto + DateValue *GoogleTypeDate `json:"dateValue,omitempty"` + + // DatetimeValue: DateTime value. Includes date, time, and timezone. See + // also: + // https://github.com/googleapis/googleapis/blob/master/google/type/datetime.proto + DatetimeValue *GoogleTypeDateTime `json:"datetimeValue,omitempty"` + + // FloatValue: Float value. + FloatValue float64 `json:"floatValue,omitempty"` + + // IntegerValue: Integer value. + IntegerValue int64 `json:"integerValue,omitempty"` + + // MoneyValue: Money value. See also: + // https://github.com/googleapis/googleapis/blob/master/google/type/money.proto + MoneyValue *GoogleTypeMoney `json:"moneyValue,omitempty"` + + // Text: Optional. An optional field to store a normalized string. For + // some entity types, one of respective `structured_value` fields may + // also be populated. Also not all the types of `structured_value` will + // be normalized. For example, some processors may not generate float or + // int normalized text by default. Below are sample formats mapped to + // structured values. - Money/Currency type (`money_value`) is in the + // ISO 4217 text format. - Date type (`date_value`) is in the ISO 8601 + // text format. - Datetime type (`datetime_value`) is in the ISO 8601 + // text format. + Text string `json:"text,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AddressValue") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AddressValue") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentEntityNormalizedValue) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentEntityNormalizedValue + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudDocumentaiV1DocumentEntityNormalizedValue) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudDocumentaiV1DocumentEntityNormalizedValue + var s1 struct { + FloatValue gensupport.JSONFloat64 `json:"floatValue"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.FloatValue = float64(s1.FloatValue) + return nil +} + +// GoogleCloudDocumentaiV1DocumentEntityRelation: Relationship between +// Entities. +type GoogleCloudDocumentaiV1DocumentEntityRelation struct { + // ObjectId: Object entity id. + ObjectId string `json:"objectId,omitempty"` + + // Relation: Relationship description. + Relation string `json:"relation,omitempty"` + + // SubjectId: Subject entity id. + SubjectId string `json:"subjectId,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ObjectId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ObjectId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentEntityRelation) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentEntityRelation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPage: A page in a Document. +type GoogleCloudDocumentaiV1DocumentPage struct { + // Blocks: A list of visually detected text blocks on the page. A block + // has a set of lines (collected into paragraphs) that have a common + // line-spacing and orientation. + Blocks []*GoogleCloudDocumentaiV1DocumentPageBlock `json:"blocks,omitempty"` + + // DetectedBarcodes: A list of detected barcodes. + DetectedBarcodes []*GoogleCloudDocumentaiV1DocumentPageDetectedBarcode `json:"detectedBarcodes,omitempty"` + + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // Dimension: Physical dimension of the page. + Dimension *GoogleCloudDocumentaiV1DocumentPageDimension `json:"dimension,omitempty"` + + // FormFields: A list of visually detected form fields on the page. + FormFields []*GoogleCloudDocumentaiV1DocumentPageFormField `json:"formFields,omitempty"` + + // Image: Rendered image for this page. This image is preprocessed to + // remove any skew, rotation, and distortions such that the annotation + // bounding boxes can be upright and axis-aligned. + Image *GoogleCloudDocumentaiV1DocumentPageImage `json:"image,omitempty"` + + // Layout: Layout for the page. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // Lines: A list of visually detected text lines on the page. A + // collection of tokens that a human would perceive as a line. + Lines []*GoogleCloudDocumentaiV1DocumentPageLine `json:"lines,omitempty"` + + // PageNumber: 1-based index for current Page in a parent Document. + // Useful when a page is taken out of a Document for individual + // processing. + PageNumber int64 `json:"pageNumber,omitempty"` + + // Paragraphs: A list of visually detected text paragraphs on the page. + // A collection of lines that a human would perceive as a paragraph. + Paragraphs []*GoogleCloudDocumentaiV1DocumentPageParagraph `json:"paragraphs,omitempty"` + + // Provenance: The history of this page. + Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"` + + // Symbols: A list of visually detected symbols on the page. + Symbols []*GoogleCloudDocumentaiV1DocumentPageSymbol `json:"symbols,omitempty"` + + // Tables: A list of visually detected tables on the page. + Tables []*GoogleCloudDocumentaiV1DocumentPageTable `json:"tables,omitempty"` + + // Tokens: A list of visually detected tokens on the page. + Tokens []*GoogleCloudDocumentaiV1DocumentPageToken `json:"tokens,omitempty"` + + // Transforms: Transformation matrices that were applied to the original + // document image to produce Page.image. + Transforms []*GoogleCloudDocumentaiV1DocumentPageMatrix `json:"transforms,omitempty"` + + // VisualElements: A list of detected non-text visual elements e.g. + // checkbox, signature etc. on the page. + VisualElements []*GoogleCloudDocumentaiV1DocumentPageVisualElement `json:"visualElements,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Blocks") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Blocks") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPage) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageAnchor: 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. +type GoogleCloudDocumentaiV1DocumentPageAnchor struct { + // PageRefs: One or more references to visual page elements + PageRefs []*GoogleCloudDocumentaiV1DocumentPageAnchorPageRef `json:"pageRefs,omitempty"` + + // ForceSendFields is a list of field names (e.g. "PageRefs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "PageRefs") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageAnchor) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageAnchor + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageAnchorPageRef: Represents a weak +// reference to a page element within a document. +type GoogleCloudDocumentaiV1DocumentPageAnchorPageRef struct { + // BoundingPoly: Optional. Identifies the bounding polygon of a layout + // element on the page. + BoundingPoly *GoogleCloudDocumentaiV1BoundingPoly `json:"boundingPoly,omitempty"` + + // Confidence: Optional. Confidence of detected page element, if + // applicable. Range [0, 1]. + Confidence float64 `json:"confidence,omitempty"` + + // LayoutId: Optional. Deprecated. Use PageRef.bounding_poly instead. + LayoutId string `json:"layoutId,omitempty"` + + // LayoutType: Optional. The type of the layout element that is being + // referenced if any. + // + // Possible values: + // "LAYOUT_TYPE_UNSPECIFIED" - Layout Unspecified. + // "BLOCK" - References a Page.blocks element. + // "PARAGRAPH" - References a Page.paragraphs element. + // "LINE" - References a Page.lines element. + // "TOKEN" - References a Page.tokens element. + // "VISUAL_ELEMENT" - References a Page.visual_elements element. + // "TABLE" - Refrrences a Page.tables element. + // "FORM_FIELD" - References a Page.form_fields element. + LayoutType string `json:"layoutType,omitempty"` + + // Page: Required. Index into the Document.pages element, for example + // using Document.pages to locate the related page element. This field + // is skipped when its value is the default 0. See + // https://developers.google.com/protocol-buffers/docs/proto3#json. + Page int64 `json:"page,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "BoundingPoly") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BoundingPoly") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageAnchorPageRef) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageAnchorPageRef + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudDocumentaiV1DocumentPageAnchorPageRef) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudDocumentaiV1DocumentPageAnchorPageRef + var s1 struct { + Confidence gensupport.JSONFloat64 `json:"confidence"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Confidence = float64(s1.Confidence) + return nil +} + +// GoogleCloudDocumentaiV1DocumentPageBlock: A block has a set of lines +// (collected into paragraphs) that have a common line-spacing and +// orientation. +type GoogleCloudDocumentaiV1DocumentPageBlock struct { + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // Layout: Layout for Block. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // Provenance: The history of this annotation. + Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DetectedLanguages") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DetectedLanguages") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageBlock) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageBlock + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageDetectedBarcode: A detected +// barcode. +type GoogleCloudDocumentaiV1DocumentPageDetectedBarcode struct { + // Barcode: Detailed barcode information of the DetectedBarcode. + Barcode *GoogleCloudDocumentaiV1Barcode `json:"barcode,omitempty"` + + // Layout: Layout for DetectedBarcode. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Barcode") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Barcode") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageDetectedBarcode) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageDetectedBarcode + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageDetectedLanguage: Detected +// language for a structural component. +type GoogleCloudDocumentaiV1DocumentPageDetectedLanguage struct { + // Confidence: Confidence of detected language. Range [0, 1]. + Confidence float64 `json:"confidence,omitempty"` + + // LanguageCode: The BCP-47 language code, such as "en-US" or "sr-Latn". + // For more information, see + // https://www.unicode.org/reports/tr35/#Unicode_locale_identifier. + LanguageCode string `json:"languageCode,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Confidence") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Confidence") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageDetectedLanguage) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageDetectedLanguage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudDocumentaiV1DocumentPageDetectedLanguage) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudDocumentaiV1DocumentPageDetectedLanguage + var s1 struct { + Confidence gensupport.JSONFloat64 `json:"confidence"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Confidence = float64(s1.Confidence) + return nil +} + +// GoogleCloudDocumentaiV1DocumentPageDimension: Dimension for the page. +type GoogleCloudDocumentaiV1DocumentPageDimension struct { + // Height: Page height. + Height float64 `json:"height,omitempty"` + + // Unit: Dimension unit. + Unit string `json:"unit,omitempty"` + + // Width: Page width. + Width float64 `json:"width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Height") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Height") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageDimension) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageDimension + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudDocumentaiV1DocumentPageDimension) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudDocumentaiV1DocumentPageDimension + var s1 struct { + Height gensupport.JSONFloat64 `json:"height"` + Width gensupport.JSONFloat64 `json:"width"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Height = float64(s1.Height) + s.Width = float64(s1.Width) + return nil +} + +// GoogleCloudDocumentaiV1DocumentPageFormField: A form field detected +// on the page. +type GoogleCloudDocumentaiV1DocumentPageFormField struct { + // CorrectedKeyText: Created for Labeling UI to export key text. If + // corrections were made to the text identified by the + // `field_name.text_anchor`, this field will contain the correction. + CorrectedKeyText string `json:"correctedKeyText,omitempty"` + + // CorrectedValueText: Created for Labeling UI to export value text. If + // corrections were made to the text identified by the + // `field_value.text_anchor`, this field will contain the correction. + CorrectedValueText string `json:"correctedValueText,omitempty"` + + // FieldName: Layout for the FormField name. e.g. `Address`, `Email`, + // `Grand total`, `Phone number`, etc. + FieldName *GoogleCloudDocumentaiV1DocumentPageLayout `json:"fieldName,omitempty"` + + // FieldValue: Layout for the FormField value. + FieldValue *GoogleCloudDocumentaiV1DocumentPageLayout `json:"fieldValue,omitempty"` + + // NameDetectedLanguages: A list of detected languages for name together + // with confidence. + NameDetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"nameDetectedLanguages,omitempty"` + + // Provenance: The history of this annotation. + Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"` + + // ValueDetectedLanguages: A list of detected languages for value + // together with confidence. + ValueDetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"valueDetectedLanguages,omitempty"` + + // ValueType: If the value is non-textual, this field represents the + // type. Current valid values are: - blank (this indicates the + // field_value is normal text) - "unfilled_checkbox" - "filled_checkbox" + ValueType string `json:"valueType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CorrectedKeyText") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CorrectedKeyText") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageFormField) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageFormField + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageImage: Rendered image contents for +// this page. +type GoogleCloudDocumentaiV1DocumentPageImage struct { + // Content: Raw byte content of the image. + Content string `json:"content,omitempty"` + + // Height: Height of the image in pixels. + Height int64 `json:"height,omitempty"` + + // MimeType: Encoding mime type for the image. + MimeType string `json:"mimeType,omitempty"` + + // Width: Width of the image in pixels. + Width int64 `json:"width,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Content") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Content") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageImage) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageImage + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageLayout: Visual element describing +// a layout unit on a page. +type GoogleCloudDocumentaiV1DocumentPageLayout struct { + // BoundingPoly: The bounding polygon for the Layout. + BoundingPoly *GoogleCloudDocumentaiV1BoundingPoly `json:"boundingPoly,omitempty"` + + // Confidence: Confidence of the current Layout within context of the + // object this layout is for. e.g. confidence can be for a single token, + // a table, a visual element, etc. depending on context. Range [0, 1]. + Confidence float64 `json:"confidence,omitempty"` + + // Orientation: Detected orientation for the Layout. + // + // Possible values: + // "ORIENTATION_UNSPECIFIED" - Unspecified orientation. + // "PAGE_UP" - Orientation is aligned with page up. + // "PAGE_RIGHT" - Orientation is aligned with page right. Turn the + // head 90 degrees clockwise from upright to read. + // "PAGE_DOWN" - Orientation is aligned with page down. Turn the head + // 180 degrees from upright to read. + // "PAGE_LEFT" - Orientation is aligned with page left. Turn the head + // 90 degrees counterclockwise from upright to read. + Orientation string `json:"orientation,omitempty"` + + // TextAnchor: Text anchor indexing into the Document.text. + TextAnchor *GoogleCloudDocumentaiV1DocumentTextAnchor `json:"textAnchor,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BoundingPoly") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BoundingPoly") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageLayout) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageLayout + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudDocumentaiV1DocumentPageLayout) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudDocumentaiV1DocumentPageLayout + var s1 struct { + Confidence gensupport.JSONFloat64 `json:"confidence"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Confidence = float64(s1.Confidence) + return nil +} + +// GoogleCloudDocumentaiV1DocumentPageLine: A collection of tokens that +// a human would perceive as a line. Does not cross column boundaries, +// can be horizontal, vertical, etc. +type GoogleCloudDocumentaiV1DocumentPageLine struct { + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // Layout: Layout for Line. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // Provenance: The history of this annotation. + Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DetectedLanguages") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DetectedLanguages") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageLine) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageLine + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageMatrix: Representation for +// transformation matrix, intended to be compatible and used with OpenCV +// format for image manipulation. +type GoogleCloudDocumentaiV1DocumentPageMatrix struct { + // Cols: Number of columns in the matrix. + Cols int64 `json:"cols,omitempty"` + + // Data: The matrix data. + Data string `json:"data,omitempty"` + + // Rows: Number of rows in the matrix. + Rows int64 `json:"rows,omitempty"` + + // Type: This encodes information about what data type the matrix uses. + // For example, 0 (CV_8U) is an unsigned 8-bit image. For the full list + // of OpenCV primitive data types, please refer to + // https://docs.opencv.org/4.3.0/d1/d1b/group__core__hal__interface.html + Type int64 `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Cols") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Cols") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageMatrix) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageMatrix + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageParagraph: A collection of lines +// that a human would perceive as a paragraph. +type GoogleCloudDocumentaiV1DocumentPageParagraph struct { + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // Layout: Layout for Paragraph. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // Provenance: The history of this annotation. + Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DetectedLanguages") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DetectedLanguages") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageParagraph) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageParagraph + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageSymbol: A detected symbol. +type GoogleCloudDocumentaiV1DocumentPageSymbol struct { + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // Layout: Layout for Symbol. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DetectedLanguages") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DetectedLanguages") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageSymbol) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageSymbol + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageTable: A table representation +// similar to HTML table structure. +type GoogleCloudDocumentaiV1DocumentPageTable struct { + // BodyRows: Body rows of the table. + BodyRows []*GoogleCloudDocumentaiV1DocumentPageTableTableRow `json:"bodyRows,omitempty"` + + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // HeaderRows: Header rows of the table. + HeaderRows []*GoogleCloudDocumentaiV1DocumentPageTableTableRow `json:"headerRows,omitempty"` + + // Layout: Layout for Table. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BodyRows") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BodyRows") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageTable) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageTable + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageTableTableCell: A cell +// representation inside the table. +type GoogleCloudDocumentaiV1DocumentPageTableTableCell struct { + // ColSpan: How many columns this cell spans. + ColSpan int64 `json:"colSpan,omitempty"` + + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // Layout: Layout for TableCell. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // RowSpan: How many rows this cell spans. + RowSpan int64 `json:"rowSpan,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ColSpan") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ColSpan") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageTableTableCell) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageTableTableCell + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageTableTableRow: A row of table +// cells. +type GoogleCloudDocumentaiV1DocumentPageTableTableRow struct { + // Cells: Cells that make up this row. + Cells []*GoogleCloudDocumentaiV1DocumentPageTableTableCell `json:"cells,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Cells") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Cells") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageTableTableRow) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageTableTableRow + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageToken: A detected token. +type GoogleCloudDocumentaiV1DocumentPageToken struct { + // DetectedBreak: Detected break at the end of a Token. + DetectedBreak *GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak `json:"detectedBreak,omitempty"` + + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // Layout: Layout for Token. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // Provenance: The history of this annotation. + Provenance *GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DetectedBreak") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DetectedBreak") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageToken) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageToken + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak: Detected break +// at the end of a Token. +type GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak struct { + // Type: Detected break type. + // + // Possible values: + // "TYPE_UNSPECIFIED" - Unspecified break type. + // "SPACE" - A single whitespace. + // "WIDE_SPACE" - A wider whitespace. + // "HYPHEN" - A hyphen that indicates that a token has been split + // across lines. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Type") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Type") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageTokenDetectedBreak + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentPageVisualElement: Detected non-text +// visual elements e.g. checkbox, signature etc. on the page. +type GoogleCloudDocumentaiV1DocumentPageVisualElement struct { + // DetectedLanguages: A list of detected languages together with + // confidence. + DetectedLanguages []*GoogleCloudDocumentaiV1DocumentPageDetectedLanguage `json:"detectedLanguages,omitempty"` + + // Layout: Layout for VisualElement. + Layout *GoogleCloudDocumentaiV1DocumentPageLayout `json:"layout,omitempty"` + + // Type: Type of the VisualElement. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DetectedLanguages") + // to unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DetectedLanguages") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentPageVisualElement) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentPageVisualElement + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentProvenance: Structure to identify +// provenance relationships between annotations in different revisions. +type GoogleCloudDocumentaiV1DocumentProvenance struct { + // Id: The Id of this operation. Needs to be unique within the scope of + // the revision. + Id int64 `json:"id,omitempty"` + + // Parents: References to the original elements that are replaced. + Parents []*GoogleCloudDocumentaiV1DocumentProvenanceParent `json:"parents,omitempty"` + + // Revision: The index of the revision that produced this element. + Revision int64 `json:"revision,omitempty"` + + // Type: The type of provenance operation. + // + // Possible values: + // "OPERATION_TYPE_UNSPECIFIED" - Operation type unspecified. If no + // operation is specified a provenance entry is simply used to match + // against a `parent`. + // "ADD" - Add an element. + // "REMOVE" - Remove an element identified by `parent`. + // "REPLACE" - Replace an element identified by `parent`. + // "EVAL_REQUESTED" - Request human review for the element identified + // by `parent`. + // "EVAL_APPROVED" - Element is reviewed and approved at human review, + // confidence will be set to 1.0. + // "EVAL_SKIPPED" - Element is skipped in the validation process. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentProvenance) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentProvenance + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentProvenanceParent: The parent element +// the current element is based on. Used for referencing/aligning, +// removal and replacement operations. +type GoogleCloudDocumentaiV1DocumentProvenanceParent struct { + // Id: The id of the parent provenance. + Id int64 `json:"id,omitempty"` + + // Index: The index of the parent item in the corresponding item list + // (eg. list of entities, properties within entities, etc.) in the + // parent revision. + Index int64 `json:"index,omitempty"` + + // Revision: The index of the index into current revision's parent_ids + // list. + Revision int64 `json:"revision,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentProvenanceParent) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentProvenanceParent + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentRevision: Contains past or forward +// revisions of this document. +type GoogleCloudDocumentaiV1DocumentRevision struct { + // Agent: If the change was made by a person specify the name or id of + // that person. + Agent string `json:"agent,omitempty"` + + // CreateTime: The time that the revision was created. + CreateTime string `json:"createTime,omitempty"` + + // HumanReview: Human Review information of this revision. + HumanReview *GoogleCloudDocumentaiV1DocumentRevisionHumanReview `json:"humanReview,omitempty"` + + // Id: Id of the revision. Unique within the context of the document. + Id string `json:"id,omitempty"` + + // Parent: The revisions that this revision is based on. This can + // include one or more parent (when documents are merged.) This field + // represents the index into the `revisions` field. + Parent []int64 `json:"parent,omitempty"` + + // ParentIds: The revisions that this revision is based on. Must include + // all the ids that have anything to do with this revision - eg. there + // are `provenance.parent.revision` fields that index into this field. + ParentIds []string `json:"parentIds,omitempty"` + + // Processor: If the annotation was made by processor identify the + // processor by its resource name. + Processor string `json:"processor,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Agent") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Agent") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentRevision) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentRevision + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentRevisionHumanReview: Human Review +// information of the document. +type GoogleCloudDocumentaiV1DocumentRevisionHumanReview struct { + // State: Human review state. e.g. `requested`, `succeeded`, `rejected`. + State string `json:"state,omitempty"` + + // StateMessage: A message providing more details about the current + // state of processing. For example, the rejection reason when the state + // is `rejected`. + StateMessage string `json:"stateMessage,omitempty"` + + // ForceSendFields is a list of field names (e.g. "State") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "State") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentRevisionHumanReview) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentRevisionHumanReview + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentShardInfo: 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. +type GoogleCloudDocumentaiV1DocumentShardInfo struct { + // ShardCount: Total number of shards. + ShardCount int64 `json:"shardCount,omitempty,string"` + + // ShardIndex: The 0-based index of this shard. + ShardIndex int64 `json:"shardIndex,omitempty,string"` + + // TextOffset: The index of the first character in Document.text in the + // overall document global text. + TextOffset int64 `json:"textOffset,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "ShardCount") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ShardCount") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentShardInfo) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentShardInfo + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentStyle: Annotation for common text +// style attributes. This adheres to CSS conventions as much as +// possible. +type GoogleCloudDocumentaiV1DocumentStyle struct { + // BackgroundColor: Text background color. + BackgroundColor *GoogleTypeColor `json:"backgroundColor,omitempty"` + + // Color: Text color. + Color *GoogleTypeColor `json:"color,omitempty"` + + // FontFamily: Font family such as "Arial", "Times New Roman". + // https://www.w3schools.com/cssref/pr_font_font-family.asp + FontFamily string `json:"fontFamily,omitempty"` + + // FontSize: Font size. + FontSize *GoogleCloudDocumentaiV1DocumentStyleFontSize `json:"fontSize,omitempty"` + + // FontWeight: Font weight. Possible values are normal, bold, bolder, + // and lighter. https://www.w3schools.com/cssref/pr_font_weight.asp + FontWeight string `json:"fontWeight,omitempty"` + + // TextAnchor: Text anchor indexing into the Document.text. + TextAnchor *GoogleCloudDocumentaiV1DocumentTextAnchor `json:"textAnchor,omitempty"` + + // TextDecoration: Text decoration. Follows CSS standard. + // https://www.w3schools.com/cssref/pr_text_text-decoration.asp + TextDecoration string `json:"textDecoration,omitempty"` + + // TextStyle: Text style. Possible values are normal, italic, and + // oblique. https://www.w3schools.com/cssref/pr_font_font-style.asp + TextStyle string `json:"textStyle,omitempty"` + + // ForceSendFields is a list of field names (e.g. "BackgroundColor") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "BackgroundColor") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentStyle) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentStyle + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentStyleFontSize: Font size with unit. +type GoogleCloudDocumentaiV1DocumentStyleFontSize struct { + // Size: Font size for the text. + Size float64 `json:"size,omitempty"` + + // Unit: Unit for the font size. Follows CSS naming (in, px, pt, etc.). + Unit string `json:"unit,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Size") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Size") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentStyleFontSize) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentStyleFontSize + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudDocumentaiV1DocumentStyleFontSize) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudDocumentaiV1DocumentStyleFontSize + var s1 struct { + Size gensupport.JSONFloat64 `json:"size"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Size = float64(s1.Size) + return nil +} + +// GoogleCloudDocumentaiV1DocumentTextAnchor: Text reference indexing +// into the Document.text. +type GoogleCloudDocumentaiV1DocumentTextAnchor struct { + // Content: Contains the content of the text span so that users do not + // have to look it up in the text_segments. It is always populated for + // formFields. + Content string `json:"content,omitempty"` + + // TextSegments: The text segments from the Document.text. + TextSegments []*GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment `json:"textSegments,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Content") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Content") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentTextAnchor) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentTextAnchor + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment: 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 +type GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment struct { + // EndIndex: TextSegment half open end UTF-8 char index in the + // Document.text. + EndIndex int64 `json:"endIndex,omitempty,string"` + + // StartIndex: TextSegment start UTF-8 char index in the Document.text. + StartIndex int64 `json:"startIndex,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "EndIndex") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndIndex") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentTextAnchorTextSegment + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1DocumentTextChange: This message is used for +// text changes aka. OCR corrections. +type GoogleCloudDocumentaiV1DocumentTextChange struct { + // ChangedText: The text that replaces the text identified in the + // `text_anchor`. + ChangedText string `json:"changedText,omitempty"` + + // Provenance: The history of this annotation. + Provenance []*GoogleCloudDocumentaiV1DocumentProvenance `json:"provenance,omitempty"` + + // TextAnchor: Provenance of the correction. Text anchor indexing into + // the Document.text. There can only be a single + // `TextAnchor.text_segments` element. If the start and end index of the + // text segment are the same, the text change is inserted before that + // index. + TextAnchor *GoogleCloudDocumentaiV1DocumentTextAnchor `json:"textAnchor,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChangedText") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChangedText") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1DocumentTextChange) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1DocumentTextChange + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleCloudDocumentaiV1NormalizedVertex: 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. +type GoogleCloudDocumentaiV1NormalizedVertex struct { + // X: X coordinate. + X float64 `json:"x,omitempty"` + + // Y: Y coordinate (starts from the top of the image). + Y float64 `json:"y,omitempty"` + + // ForceSendFields is a list of field names (e.g. "X") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "X") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1NormalizedVertex) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1NormalizedVertex + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleCloudDocumentaiV1NormalizedVertex) UnmarshalJSON(data []byte) error { + type NoMethod GoogleCloudDocumentaiV1NormalizedVertex + var s1 struct { + X gensupport.JSONFloat64 `json:"x"` + Y gensupport.JSONFloat64 `json:"y"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.X = float64(s1.X) + s.Y = float64(s1.Y) + return nil +} + +// GoogleCloudDocumentaiV1Vertex: A vertex represents a 2D point in the +// image. NOTE: the vertex coordinates are in the same scale as the +// original image. +type GoogleCloudDocumentaiV1Vertex struct { + // X: X coordinate. + X int64 `json:"x,omitempty"` + + // Y: Y coordinate (starts from the top of the image). + Y int64 `json:"y,omitempty"` + + // ForceSendFields is a list of field names (e.g. "X") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "X") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleCloudDocumentaiV1Vertex) MarshalJSON() ([]byte, error) { + type NoMethod GoogleCloudDocumentaiV1Vertex + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleIamV1AuditConfig: 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": +// [ "user:jose@example.com" ] }, { "log_type": "DATA_WRITE" }, { +// "log_type": "ADMIN_READ" } ] }, { "service": +// "sampleservice.googleapis.com", "audit_log_configs": [ { "log_type": +// "DATA_READ" }, { "log_type": "DATA_WRITE", "exempted_members": [ +// "user:aliya@example.com" ] } ] } ] } For sampleservice, this policy +// enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts +// `jose@example.com` from DATA_READ logging, and `aliya@example.com` +// from DATA_WRITE logging. +type GoogleIamV1AuditConfig struct { + // AuditLogConfigs: The configuration for logging of each type of + // permission. + AuditLogConfigs []*GoogleIamV1AuditLogConfig `json:"auditLogConfigs,omitempty"` + + // Service: Specifies a service that will be enabled for audit logging. + // For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. + // `allServices` is a special value that covers all services. + Service string `json:"service,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AuditLogConfigs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AuditLogConfigs") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleIamV1AuditConfig) MarshalJSON() ([]byte, error) { + type NoMethod GoogleIamV1AuditConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleIamV1AuditLogConfig: Provides the configuration for logging a +// type of permissions. Example: { "audit_log_configs": [ { "log_type": +// "DATA_READ", "exempted_members": [ "user:jose@example.com" ] }, { +// "log_type": "DATA_WRITE" } ] } This enables 'DATA_READ' and +// 'DATA_WRITE' logging, while exempting jose@example.com from DATA_READ +// logging. +type GoogleIamV1AuditLogConfig struct { + // ExemptedMembers: Specifies the identities that do not cause logging + // for this type of permission. Follows the same format of + // Binding.members. + ExemptedMembers []string `json:"exemptedMembers,omitempty"` + + // LogType: The log type that this config enables. + // + // Possible values: + // "LOG_TYPE_UNSPECIFIED" - Default case. Should never be this. + // "ADMIN_READ" - Admin reads. Example: CloudIAM getIamPolicy + // "DATA_WRITE" - Data writes. Example: CloudSQL Users create + // "DATA_READ" - Data reads. Example: CloudSQL Users list + LogType string `json:"logType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ExemptedMembers") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExemptedMembers") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleIamV1AuditLogConfig) MarshalJSON() ([]byte, error) { + type NoMethod GoogleIamV1AuditLogConfig + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleIamV1Binding: Associates `members`, or principals, with a +// `role`. +type GoogleIamV1Binding struct { + // Condition: The condition that is associated with this binding. If the + // condition evaluates to `true`, then this binding applies to the + // current request. If the condition evaluates to `false`, then this + // binding does not apply to the current request. However, a different + // role binding might grant the same role to one or more of the + // principals in this binding. To learn which resources support + // conditions in their IAM policies, see the IAM documentation + // (https://cloud.google.com/iam/help/conditions/resource-policies). + Condition *GoogleTypeExpr `json:"condition,omitempty"` + + // Members: Specifies the principals requesting access for a Google + // Cloud resource. `members` can have the following values: * + // `allUsers`: A special identifier that represents anyone who is on the + // internet; with or without a Google account. * + // `allAuthenticatedUsers`: A special identifier that represents anyone + // who is authenticated with a Google account or a service account. Does + // not include identities that come from external identity providers + // (IdPs) through identity federation. * `user:{emailid}`: An email + // address that represents a specific Google account. For example, + // `alice@example.com` . * `serviceAccount:{emailid}`: An email address + // that represents a Google service account. For example, + // `my-other-app@appspot.gserviceaccount.com`. * + // `serviceAccount:{projectid}.svc.id.goog[{namespace}/{kubernetes-sa}]`: + // An identifier for a Kubernetes service account + // (https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts). + // For example, `my-project.svc.id.goog[my-namespace/my-kubernetes-sa]`. + // * `group:{emailid}`: An email address that represents a Google group. + // For example, `admins@example.com`. * + // `deleted:user:{emailid}?uid={uniqueid}`: An email address (plus + // unique identifier) representing a user that has been recently + // deleted. For example, `alice@example.com?uid=123456789012345678901`. + // If the user is recovered, this value reverts to `user:{emailid}` and + // the recovered user retains the role in the binding. * + // `deleted:serviceAccount:{emailid}?uid={uniqueid}`: An email address + // (plus unique identifier) representing a service account that has been + // recently deleted. For example, + // `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`. + // If the service account is undeleted, this value reverts to + // `serviceAccount:{emailid}` and the undeleted service account retains + // the role in the binding. * `deleted:group:{emailid}?uid={uniqueid}`: + // An email address (plus unique identifier) representing a Google group + // that has been recently deleted. For example, + // `admins@example.com?uid=123456789012345678901`. If the group is + // recovered, this value reverts to `group:{emailid}` and the recovered + // group retains the role in the binding. * `domain:{domain}`: The G + // Suite domain (primary) that represents all the users of that domain. + // For example, `google.com` or `example.com`. + Members []string `json:"members,omitempty"` + + // Role: Role that is assigned to the list of `members`, or principals. + // For example, `roles/viewer`, `roles/editor`, or `roles/owner`. + Role string `json:"role,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Condition") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Condition") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleIamV1Binding) MarshalJSON() ([]byte, error) { + type NoMethod GoogleIamV1Binding + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleIamV1Policy: 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 documentation +// (https://cloud.google.com/iam/help/conditions/resource-policies). +// **JSON example:** { "bindings": [ { "role": +// "roles/resourcemanager.organizationAdmin", "members": [ +// "user:mike@example.com", "group:admins@example.com", +// "domain:google.com", +// "serviceAccount:my-project-id@appspot.gserviceaccount.com" ] }, { +// "role": "roles/resourcemanager.organizationViewer", "members": [ +// "user:eve@example.com" ], "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: - user:mike@example.com - group:admins@example.com - +// domain:google.com - +// serviceAccount:my-project-id@appspot.gserviceaccount.com role: +// roles/resourcemanager.organizationAdmin - members: - +// user:eve@example.com 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 +// (https://cloud.google.com/iam/docs/). +type GoogleIamV1Policy struct { + // AuditConfigs: Specifies cloud audit logging configuration for this + // policy. + AuditConfigs []*GoogleIamV1AuditConfig `json:"auditConfigs,omitempty"` + + // Bindings: Associates a list of `members`, or principals, with a + // `role`. Optionally, may specify a `condition` that determines how and + // when the `bindings` are applied. Each of the `bindings` must contain + // at least one principal. The `bindings` in a `Policy` can refer to up + // to 1,500 principals; up to 250 of these principals can be Google + // groups. Each occurrence of a principal counts towards these limits. + // For example, if the `bindings` grant 50 different roles to + // `user:alice@example.com`, and not to any other principal, then you + // can add another 1,450 principals to the `bindings` in the `Policy`. + Bindings []*GoogleIamV1Binding `json:"bindings,omitempty"` + + // Etag: `etag` is used for optimistic concurrency control as a way to + // help prevent simultaneous updates of a policy from overwriting each + // other. It is strongly suggested that systems make use of the `etag` + // in the read-modify-write cycle to perform policy updates in order to + // avoid race conditions: An `etag` is returned in the response to + // `getIamPolicy`, and systems are expected to put that etag in the + // request to `setIamPolicy` to ensure that their change will be applied + // to the same version of the policy. **Important:** If you use IAM + // Conditions, you must include the `etag` field whenever you call + // `setIamPolicy`. If you omit this field, then IAM allows you to + // overwrite a version `3` policy with a version `1` policy, and all of + // the conditions in the version `3` policy are lost. + Etag string `json:"etag,omitempty"` + + // Version: Specifies the format of the policy. Valid values are `0`, + // `1`, and `3`. Requests that specify an invalid value are rejected. + // Any operation that affects conditional role bindings must specify + // version `3`. This requirement applies to the following operations: * + // Getting a policy that includes a conditional role binding * Adding a + // conditional role binding to a policy * Changing a conditional role + // binding in a policy * Removing any role binding, with or without a + // condition, from a policy that includes conditions **Important:** If + // you use IAM Conditions, you must include the `etag` field whenever + // you call `setIamPolicy`. If you omit this field, then IAM allows you + // to overwrite a version `3` policy with a version `1` policy, and all + // of the conditions in the version `3` policy are lost. If a policy + // does not include any conditions, operations on that policy may + // specify any valid version or leave the field unset. To learn which + // resources support conditions in their IAM policies, see the IAM + // documentation + // (https://cloud.google.com/iam/help/conditions/resource-policies). + Version int64 `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AuditConfigs") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AuditConfigs") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleIamV1Policy) MarshalJSON() ([]byte, error) { + type NoMethod GoogleIamV1Policy + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaAvailabilityPeriod: 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). +type GoogleInternalAppsWaldoV1alphaAvailabilityPeriod struct { + // DayOfWeek: Day of week, 0 for Sunday, 1 for Monday, ... + DayOfWeek int64 `json:"dayOfWeek,omitempty"` + + // PeriodEndMinutes: Period end, in minutes from the start of the day, + // exclusive. + PeriodEndMinutes int64 `json:"periodEndMinutes,omitempty"` + + // PeriodStartMinutes: Period start, in minutes from the start of the + // day, inclusive. + PeriodStartMinutes int64 `json:"periodStartMinutes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "DayOfWeek") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "DayOfWeek") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaAvailabilityPeriod) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaAvailabilityPeriod + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaCalendarBusy: 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). +type GoogleInternalAppsWaldoV1alphaCalendarBusy struct { + // EventSummary: The summary of the corresponding event in Calendar. + EventSummary string `json:"eventSummary,omitempty"` + + // NextAvailable: The next time when the user will be available, i.e., + // when their status will be neither InMeeting, CalendarBusy, + // DoNotDisturb, OutsideWorkingHours, nor OutOfOffice. + NextAvailable string `json:"nextAvailable,omitempty"` + + // OccupiedUntil: The time when the user will stop being occupied, i.e., + // when their status will be neither inMeeting, Busy nor DoNotDisturb. + OccupiedUntil string `json:"occupiedUntil,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EventSummary") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EventSummary") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaCalendarBusy) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaCalendarBusy + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaCustomLocation: Custom location +// specified by the user. +type GoogleInternalAppsWaldoV1alphaCustomLocation struct { + // GeoCoordinates: Geographic location as geo coordinates. + GeoCoordinates *GoogleTypeLatLng `json:"geoCoordinates,omitempty"` + + // Label: The custom location label as a string entered manually by the + // user. + Label string `json:"label,omitempty"` + + // Location: Geographic location as free-form text. + Location string `json:"location,omitempty"` + + // ForceSendFields is a list of field names (e.g. "GeoCoordinates") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "GeoCoordinates") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaCustomLocation) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaCustomLocation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaDoNotDisturb: The status indicating the +// user should not be disturbed. +type GoogleInternalAppsWaldoV1alphaDoNotDisturb struct { + // NextAvailable: The next time when the user will be available, i.e., + // when their status will be neither InMeeting, CalendarBusy, + // DoNotDisturb, OutsideWorkingHours, nor OutOfOffice. + NextAvailable string `json:"nextAvailable,omitempty"` + + // OccupiedUntil: The time when the user will stop being occupied, i.e., + // when their status will be neither inMeeting, Busy nor DoNotDisturb. + OccupiedUntil string `json:"occupiedUntil,omitempty"` + + // ForceSendFields is a list of field names (e.g. "NextAvailable") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "NextAvailable") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaDoNotDisturb) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaDoNotDisturb + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaHomeLocation: Home location. +type GoogleInternalAppsWaldoV1alphaHomeLocation struct { +} + +// GoogleInternalAppsWaldoV1alphaInMeeting: The status indicating the +// user is in a meeting. +type GoogleInternalAppsWaldoV1alphaInMeeting struct { + // EventSummary: The summary of the corresponding event in Calendar. + EventSummary string `json:"eventSummary,omitempty"` + + // InMeetingsUntil: The time when the user will stop being in a meeting. + InMeetingsUntil string `json:"inMeetingsUntil,omitempty"` + + // NextAvailable: The next time when the user will be available, i.e., + // when their status will be neither InMeeting, CalendarBusy, + // DoNotDisturb, OutsideWorkingHours, nor OutOfOffice. + NextAvailable string `json:"nextAvailable,omitempty"` + + // OccupiedUntil: The time when the user will stop being occupied, i.e., + // when their status will be neither inMeeting, Busy nor DoNotDisturb. + OccupiedUntil string `json:"occupiedUntil,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EventSummary") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EventSummary") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaInMeeting) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaInMeeting + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaInactive: The status indicating that no +// other status applies. +type GoogleInternalAppsWaldoV1alphaInactive struct { +} + +// GoogleInternalAppsWaldoV1alphaLocalTimeContext: Context which helps +// to determine the user's local time. +type GoogleInternalAppsWaldoV1alphaLocalTimeContext struct { + // TimeZone: The current time zone of the user. Represented as a valid + // time zone ID from Olson database, like "Europe/Zurich" (see + // http://google3/i18n/identifiers/data/timezones.txt). + TimeZone string `json:"timeZone,omitempty"` + + // ForceSendFields is a list of field names (e.g. "TimeZone") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TimeZone") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaLocalTimeContext) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaLocalTimeContext + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaOfficeLocation: Office location. +type GoogleInternalAppsWaldoV1alphaOfficeLocation struct { + // ExperimentalBuildingId: Experimental. Can change or disappear without + // warning or notice. References a building from + // http://google3/ccc/hosted/api/rosy/resources/calendar/building.proto + // For example "US-NYC-9TH". + ExperimentalBuildingId string `json:"experimentalBuildingId,omitempty"` + + // ExperimentalDeskId: Experimental. Can change or disappear without + // warning or notice. The desk id. For example "11E358K". + ExperimentalDeskId string `json:"experimentalDeskId,omitempty"` + + // ExperimentalFloorId: Experimental. Can change or disappear without + // warning or notice. The floor id. For example "11". + ExperimentalFloorId string `json:"experimentalFloorId,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "ExperimentalBuildingId") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ExperimentalBuildingId") + // to include in API requests with the JSON null value. By default, + // fields with empty values are omitted from API requests. However, any + // field with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaOfficeLocation) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaOfficeLocation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaOutOfOffice: The status indicating the +// user is out of office. +type GoogleInternalAppsWaldoV1alphaOutOfOffice struct { + // ComeBackTime: The closest time when the user will be available after + // this OOO block. This might be different from the end of the OOO block + // in Calendar, since the OOO block might end on Friday evening, and + // then the user is outside working hours. + ComeBackTime string `json:"comeBackTime,omitempty"` + + // EventSummary: The summary of the corresponding OOO block in Calendar. + // This is entered by the user, so we return it "as is" - no i18n. + EventSummary string `json:"eventSummary,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ComeBackTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ComeBackTime") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaOutOfOffice) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaOutOfOffice + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaOutsideWorkingHours: The status +// indicating the user doesn't work at this time. +type GoogleInternalAppsWaldoV1alphaOutsideWorkingHours struct { + // ComeBackTime: The closest time when the user will be available after + // this block. This might be different from the start of the working + // hours in Calendar, because the given OutsideWorkingHours interval + // might be followed by OOO. + ComeBackTime string `json:"comeBackTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ComeBackTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ComeBackTime") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaOutsideWorkingHours) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaOutsideWorkingHours + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaTimeRange: A time range, which includes +// the start and excludes the end. +type GoogleInternalAppsWaldoV1alphaTimeRange struct { + // EndTime: End point of the range, exclusive. + EndTime string `json:"endTime,omitempty"` + + // StartTime: Starting point of the range, inclusive. + StartTime string `json:"startTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaTimeRange) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaTimeRange + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaUpcomingOooContext: The context +// indicating the user's upcoming Out of Office event. +type GoogleInternalAppsWaldoV1alphaUpcomingOooContext struct { + // TimeRange: The future period of absence. The start of this timerange + // is the start of the future Out of Office event. The end of this + // timerange represents the come back time of the user from that future + // OOO event. Note that the come back time might be different (greater) + // than the end of the corresponding future OOO event due to other + // non-working user status intervals that it may be followed by. + TimeRange *GoogleInternalAppsWaldoV1alphaTimeRange `json:"timeRange,omitempty"` + + // ForceSendFields is a list of field names (e.g. "TimeRange") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "TimeRange") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaUpcomingOooContext) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaUpcomingOooContext + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaUserAvailabilities: 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 +// https://docs.google.com/presentation/d/1ADCTxGawjF9UqMnfuVrVNxGvdyjeiV8h4D7p0a9zYgw/edit#slide=id.g3e2824ac6c_12_94 +// 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 +type GoogleInternalAppsWaldoV1alphaUserAvailabilities struct { + // Availabilities: A list of user availabilities having contiguous time + // ranges which are ordered chronologically. The first one starts at the + // time of the request or before, and is guaranteed to contain the + // request time. That means the first element always indicates the + // current status of a user. A client that wants to display a user's + // availability in real time should display the availability whose time + // range contains the current time. + Availabilities []*GoogleInternalAppsWaldoV1alphaUserAvailability `json:"availabilities,omitempty"` + + // NextPollTime: The time at which the client should issue the next + // availability query for this user. This field should only be used to + // control the polling frequency. This time is always before the end of + // the time range of the last availability so that the client always + // knows the current availability. + NextPollTime string `json:"nextPollTime,omitempty"` + + // WorkingHours: Information about the user's working hours. This will + // only be set in case working hours are enabled in their calendar + // settings. + WorkingHours *GoogleInternalAppsWaldoV1alphaWorkingHours `json:"workingHours,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Availabilities") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Availabilities") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaUserAvailabilities) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaUserAvailabilities + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaUserAvailability: A single availability +// range. The displayed status should be the same during the entire time +// range. +type GoogleInternalAppsWaldoV1alphaUserAvailability struct { + // Contexts: The contexts contain additional information about the + // current user's availability or its upcoming changes. The client + // doesn't need to extract certain bits to visualize the status or apply + // custom logic based on the content of this field: the status field + // should contain everything needed for the correct visualization. + Contexts *GoogleInternalAppsWaldoV1alphaUserContext `json:"contexts,omitempty"` + + // Status: The user status during the time range. + Status *GoogleInternalAppsWaldoV1alphaUserStatus `json:"status,omitempty"` + + // TimeRange: The time range when this availability should be displayed. + TimeRange *GoogleInternalAppsWaldoV1alphaTimeRange `json:"timeRange,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Contexts") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Contexts") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaUserAvailability) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaUserAvailability + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaUserContext: Additional context about +// the user's current and/or future availability to give a better +// understanding of the status ("Working from Zurich"). +type GoogleInternalAppsWaldoV1alphaUserContext struct { + // LocalTime: Helps to determine the user's local time by providing + // their current time zone. + LocalTime *GoogleInternalAppsWaldoV1alphaLocalTimeContext `json:"localTime,omitempty"` + + // UpcomingOoo: Set if user has upcoming OOO. + UpcomingOoo *GoogleInternalAppsWaldoV1alphaUpcomingOooContext `json:"upcomingOoo,omitempty"` + + // WorkingElsewhere: Set if the user is working remotely. + WorkingElsewhere *GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext `json:"workingElsewhere,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LocalTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LocalTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaUserContext) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaUserContext + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaUserLocation: Location of the user, +// which might be "home", for example, or another office building, as +// well as a custom location specified by the user. +type GoogleInternalAppsWaldoV1alphaUserLocation struct { + // CustomLocation: Indicates the user is working from some other + // location. + CustomLocation *GoogleInternalAppsWaldoV1alphaCustomLocation `json:"customLocation,omitempty"` + + // HomeLocation: Indicates the user is working from home. + HomeLocation *GoogleInternalAppsWaldoV1alphaHomeLocation `json:"homeLocation,omitempty"` + + // OfficeLocation: Indicates the user is working from the office. + OfficeLocation *GoogleInternalAppsWaldoV1alphaOfficeLocation `json:"officeLocation,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CustomLocation") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CustomLocation") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaUserLocation) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaUserLocation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaUserStatus: The actual status of the +// user. The message contains everything needed for visualisation of +// this status. +type GoogleInternalAppsWaldoV1alphaUserStatus struct { + // CalendarBusy: Set if the user is temporarily busy and there is not a + // more specific status derived from calendar that applies (e.g., + // InMeeting or DoNotDisturb). + CalendarBusy *GoogleInternalAppsWaldoV1alphaCalendarBusy `json:"calendarBusy,omitempty"` + + // DoNotDisturb: Set if the user is in a Focus Time block. Note that + // this is different than Chat's Do not disturb status, but they may + // coincide, see: go/focus-time-dnd. + DoNotDisturb *GoogleInternalAppsWaldoV1alphaDoNotDisturb `json:"doNotDisturb,omitempty"` + + // InMeeting: Set if the user is in a meeting. + InMeeting *GoogleInternalAppsWaldoV1alphaInMeeting `json:"inMeeting,omitempty"` + + // Inactive: Set if no other statuses apply. + Inactive *GoogleInternalAppsWaldoV1alphaInactive `json:"inactive,omitempty"` + + // OutOfOffice: Set if the user is out of office. + OutOfOffice *GoogleInternalAppsWaldoV1alphaOutOfOffice `json:"outOfOffice,omitempty"` + + // OutsideWorkingHours: Set if the user doesn't work at this time. + OutsideWorkingHours *GoogleInternalAppsWaldoV1alphaOutsideWorkingHours `json:"outsideWorkingHours,omitempty"` + + // ForceSendFields is a list of field names (e.g. "CalendarBusy") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CalendarBusy") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaUserStatus) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaUserStatus + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext: The context +// indicating the user is working remotely (from home / from a different +// office). +type GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext struct { + // Location: The new location of the user. Might represent home / + // another building, or a random address on the map. + Location *GoogleInternalAppsWaldoV1alphaUserLocation `json:"location,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Location") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Location") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaWorkingElsewhereContext + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalAppsWaldoV1alphaWorkingHours: Information about the +// user's working hours. +type GoogleInternalAppsWaldoV1alphaWorkingHours struct { + // AvailableTime: A list of availability periods representing the user's + // working hours as configured in calendar. + AvailableTime []*GoogleInternalAppsWaldoV1alphaAvailabilityPeriod `json:"availableTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AvailableTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AvailableTime") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalAppsWaldoV1alphaWorkingHours) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalAppsWaldoV1alphaWorkingHours + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalCommunicationsInstantmessagingV1Id: Id for message +// recipients, e.g. users, groups etc. +type GoogleInternalCommunicationsInstantmessagingV1Id struct { + // App: app is the tachyon client application that generated or is to + // receive a message. + App string `json:"app,omitempty"` + + // CountryCode: country_code is the E164_COUNTRY_CODE format country + // code for this id, used as a hint for its region. E.g, "+1" will be + // used for North America, "+86" will be used for China, etc. Should be + // filled only for RCS group id. + CountryCode string `json:"countryCode,omitempty"` + + // Id: id is a unique (for this type and app) identifier of a message + // source or recipient. + Id string `json:"id,omitempty"` + + // LocationHint: location_hint is used as a hint for the user's region. + LocationHint *GoogleInternalCommunicationsInstantmessagingV1LocationHint `json:"locationHint,omitempty"` + + // RoutingInfoToken: Raw byte array containing encoded routing + // information. Clients of Tachyon are expected to include the most + // recent routing_info_cookie that they have received from the server in + // the requests that they make. Its format is purposely opaque so that + // clients do not need to concern themselves with the content of this + // field. This field is expected to be used primarily by Tachygram + // clients for go/tachygram-groups to simplify the API contract for + // group operations while reducing the need for unnecessary lookups. + RoutingInfoToken string `json:"routingInfoToken,omitempty"` + + // Type: type defines what the id field contains, e.g. phone number, + // Fi-number, Gaia ID etc. + // + // Possible values: + // "UNSET" + // "PHONE_NUMBER" - E.164 format. + // "GROUP_ID" + // "FIREBALL_BOT" - Handled by Extractor + // "CALL_CONTROLLER" - Handled by Call Controller Message Receiver. + // "SUGGESTER" + // "FI_ID" - IDs of this type will be verified using a Fi service. + // "SYSTEM" - Used for any system-generated, internal and external + // "DUO_BOT" - messages. ex: Duo's invite reward. Bots for Duo + // "MATCHBOX_ID" - Used by Matchbox for 1P/3P App Preview Messaging. + // "RCS_BOT" - RCS BOT for sending message to Platinum + // "WIREBALL" - Web Client for Fireball + // "SERVICE_ACCOUNT" - Service account, currently only used for Duo + // API. + // "DEVICE_ID" - Device ID used by Matchstick anonymous registrations. + // "FOREIGN_RCS_GROUP" - Rcs group hosted by another RCS cloud. + // "DITTO" - Android messages desktop: go/android-messages-desktop. + // "EMAIL" - Email address. + // "GAIA_ID" - Only used by servers. + // "LIGHTER_ID" - Used by Lighter platform: go/lighter-backend-api. + // "OPAQUE_ID" - Used by spam server as a special id type that allows + // "SERVER" - apps that support external ids. Used for server + // delivery. go/tachyon_server_delivery + // "SHORT_CODE" - Phone short code. + // "CLOUDCAST_PLAYER_ID" - Used by cloudcast (yeti). 64 bit integer. + // "CHROMOTING_ID" - go/yeti-player-ids Chrome Remote Desktop + // (go/chromoting). + // "UNNORMALIZABLE_PHONE_NUMBER" - Unnormalizable phone number + // "NOT_KNOWN" - client does not know the id type. + // "ANDROID_ID" - android id + // "NEARBY_ID" - Used by Nearby devices. go/tachyon-express-nearby. + // "WAZE_ID" - Used by Waze. go/waze-tachyon. + // "GUEST" - Used by Duo currently. + // "MESSAGES_DATA_DONATION" - Used by Android Messages for data + // donation. + // "DUO_CLIP_ID" - Used as the Id Type of Clips From Duo clips. See + // http://go/clips-from-duo + // "ACCOUNT_ID" - used by Takeout/LIS: see go/tachyon-legal-takeout. + // "CARRIER_ID" - used by RCS NNI Notification + // "EXTERNAL_PARTNER_ID" - used by RCS NNI Notification + // "UNAUTHENTICATED_USER_ID" - used by GMM for anonymous registration + // "SUPPORT_CASES_ID" - used by Support Cases for Realtime Media + // WebRtc + // "FITBIT_P11_ID" - signaling. go/cases-media-channel-dd. used by + // Fitbit Project 11 for messaging. + Type string `json:"type,omitempty"` + + // ForceSendFields is a list of field names (e.g. "App") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "App") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalCommunicationsInstantmessagingV1Id) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalCommunicationsInstantmessagingV1Id + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleInternalCommunicationsInstantmessagingV1LocationHint: +// LocationHint is used to specify a location as well as format. +type GoogleInternalCommunicationsInstantmessagingV1LocationHint struct { + // Format: the format of location. + // + // Possible values: + // "UNKNOWN" + // "E164_CALLING" - E164 country codes: + // https://en.wikipedia.org/wiki/List_of_country_calling_codes e.g. +1 + // for USA + // "ISO_3166_1_ALPHA_2" - ISO 3166-1 alpha-2 country codes: + // https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 + Format string `json:"format,omitempty"` + + // Location: Location is the location, provided in the format specified + // by format. + Location string `json:"location,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Format") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Format") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleInternalCommunicationsInstantmessagingV1LocationHint) MarshalJSON() ([]byte, error) { + type NoMethod GoogleInternalCommunicationsInstantmessagingV1LocationHint + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleLongrunningOperation: This resource represents a long-running +// operation that is the result of a network API call. +type GoogleLongrunningOperation struct { + // Done: If the value is `false`, it means the operation is still in + // progress. If `true`, the operation is completed, and either `error` + // or `response` is available. + Done bool `json:"done,omitempty"` + + // Error: The error result of the operation in case of failure or + // cancellation. + Error *GoogleRpcStatus `json:"error,omitempty"` + + // Metadata: Service-specific metadata associated with the operation. It + // typically contains progress information and common metadata such as + // create time. Some services might not provide such metadata. Any + // method that returns a long-running operation should document the + // metadata type, if any. + Metadata googleapi.RawMessage `json:"metadata,omitempty"` + + // Name: The server-assigned name, which is only unique within the same + // service that originally returns it. If you use the default HTTP + // mapping, the `name` should be a resource name ending with + // `operations/{unique_id}`. + Name string `json:"name,omitempty"` + + // Response: The normal response of the operation in case of success. If + // the original method returns no data on success, such as `Delete`, the + // response is `google.protobuf.Empty`. If the original method is + // standard `Get`/`Create`/`Update`, the response should be the + // resource. For other methods, the response should have the type + // `XxxResponse`, where `Xxx` is the original method name. For example, + // if the original method name is `TakeSnapshot()`, the inferred + // response type is `TakeSnapshotResponse`. + Response googleapi.RawMessage `json:"response,omitempty"` + + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` + + // ForceSendFields is a list of field names (e.g. "Done") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Done") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) { + type NoMethod GoogleLongrunningOperation + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleProtobufEmpty: 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); } +type GoogleProtobufEmpty struct { + // ServerResponse contains the HTTP response code and headers from the + // server. + googleapi.ServerResponse `json:"-"` +} + +// GoogleRpcStatus: The `Status` type defines a logical error model that +// is suitable for different programming environments, including REST +// APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each +// `Status` message contains three pieces of data: error code, error +// message, and error details. You can find out more about this error +// model and how to work with it in the API Design Guide +// (https://cloud.google.com/apis/design/errors). +type GoogleRpcStatus struct { + // Code: The status code, which should be an enum value of + // google.rpc.Code. + Code int64 `json:"code,omitempty"` + + // Details: A list of messages that carry the error details. There is a + // common set of message types for APIs to use. + Details []googleapi.RawMessage `json:"details,omitempty"` + + // Message: A developer-facing error message, which should be in + // English. Any user-facing error message should be localized and sent + // in the google.rpc.Status.details field, or localized by the client. + Message string `json:"message,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Code") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Code") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleRpcStatus) MarshalJSON() ([]byte, error) { + type NoMethod GoogleRpcStatus + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleTypeColor: Represents a color in the RGBA color space. This +// representation is designed for simplicity of conversion to/from color +// representations in various languages over compactness. For example, +// the fields of this representation can be trivially provided to the +// constructor of `java.awt.Color` in Java; it can also be trivially +// provided to UIColor's `+colorWithRed:green:blue:alpha` method in iOS; +// and, with just a little work, it can be easily formatted into a CSS +// `rgba()` string in JavaScript. This reference page doesn't carry +// information about the absolute color space that should be used to +// interpret the RGB value (e.g. sRGB, Adobe RGB, DCI-P3, BT.2020, +// etc.). By default, applications should assume the sRGB color space. +// When color equality needs to be decided, implementations, unless +// documented otherwise, treat two colors as equal if all their red, +// green, blue, and alpha values each differ by at most 1e-5. Example +// (Java): import com.google.type.Color; // ... public static +// java.awt.Color fromProto(Color protocolor) { float alpha = +// protocolor.hasAlpha() ? protocolor.getAlpha().getValue() : 1.0; +// return new java.awt.Color( protocolor.getRed(), +// protocolor.getGreen(), protocolor.getBlue(), alpha); } public static +// Color toProto(java.awt.Color color) { float red = (float) +// color.getRed(); float green = (float) color.getGreen(); float blue = +// (float) color.getBlue(); float denominator = 255.0; Color.Builder +// resultBuilder = Color .newBuilder() .setRed(red / denominator) +// .setGreen(green / denominator) .setBlue(blue / denominator); int +// alpha = color.getAlpha(); if (alpha != 255) { result.setAlpha( +// FloatValue .newBuilder() .setValue(((float) alpha) / denominator) +// .build()); } return resultBuilder.build(); } // ... Example (iOS / +// Obj-C): // ... static UIColor* fromProto(Color* protocolor) { float +// red = [protocolor red]; float green = [protocolor green]; float blue +// = [protocolor blue]; FloatValue* alpha_wrapper = [protocolor alpha]; +// float alpha = 1.0; if (alpha_wrapper != nil) { alpha = [alpha_wrapper +// value]; } return [UIColor colorWithRed:red green:green blue:blue +// alpha:alpha]; } static Color* toProto(UIColor* color) { CGFloat red, +// green, blue, alpha; if (![color getRed:&red green:&green blue:&blue +// alpha:&alpha]) { return nil; } Color* result = [[Color alloc] init]; +// [result setRed:red]; [result setGreen:green]; [result setBlue:blue]; +// if (alpha <= 0.9999) { [result +// setAlpha:floatWrapperWithValue(alpha)]; } [result autorelease]; +// return result; } // ... Example (JavaScript): // ... var +// protoToCssColor = function(rgb_color) { var redFrac = rgb_color.red +// || 0.0; var greenFrac = rgb_color.green || 0.0; var blueFrac = +// rgb_color.blue || 0.0; var red = Math.floor(redFrac * 255); var green +// = Math.floor(greenFrac * 255); var blue = Math.floor(blueFrac * 255); +// if (!('alpha' in rgb_color)) { return rgbToCssColor(red, green, +// blue); } var alphaFrac = rgb_color.alpha.value || 0.0; var rgbParams +// = [red, green, blue].join(','); return ['rgba(', rgbParams, ',', +// alphaFrac, ')'].join(”); }; var rgbToCssColor = function(red, green, +// blue) { var rgbNumber = new Number((red << 16) | (green << 8) | +// blue); var hexString = rgbNumber.toString(16); var missingZeros = 6 - +// hexString.length; var resultBuilder = ['#']; for (var i = 0; i < +// missingZeros; i++) { resultBuilder.push('0'); } +// resultBuilder.push(hexString); return resultBuilder.join(”); }; // +// ... +type GoogleTypeColor struct { + // Alpha: The fraction of this color that should be applied to the + // pixel. That is, the final pixel color is defined by the equation: + // `pixel color = alpha * (this color) + (1.0 - alpha) * (background + // color)` This means that a value of 1.0 corresponds to a solid color, + // whereas a value of 0.0 corresponds to a completely transparent color. + // This uses a wrapper message rather than a simple float scalar so that + // it is possible to distinguish between a default value and the value + // being unset. If omitted, this color object is rendered as a solid + // color (as if the alpha value had been explicitly given a value of + // 1.0). + Alpha float64 `json:"alpha,omitempty"` + + // Blue: The amount of blue in the color as a value in the interval [0, + // 1]. + Blue float64 `json:"blue,omitempty"` + + // Green: The amount of green in the color as a value in the interval + // [0, 1]. + Green float64 `json:"green,omitempty"` + + // Red: The amount of red in the color as a value in the interval [0, + // 1]. + Red float64 `json:"red,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Alpha") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Alpha") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeColor) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeColor + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleTypeColor) UnmarshalJSON(data []byte) error { + type NoMethod GoogleTypeColor + var s1 struct { + Alpha gensupport.JSONFloat64 `json:"alpha"` + Blue gensupport.JSONFloat64 `json:"blue"` + Green gensupport.JSONFloat64 `json:"green"` + Red gensupport.JSONFloat64 `json:"red"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Alpha = float64(s1.Alpha) + s.Blue = float64(s1.Blue) + s.Green = float64(s1.Green) + s.Red = float64(s1.Red) + return nil +} + +// GoogleTypeDate: 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 +type GoogleTypeDate struct { + // Day: Day of a month. Must be from 1 to 31 and valid for the year and + // month, or 0 to specify a year by itself or a year and month where the + // day isn't significant. + Day int64 `json:"day,omitempty"` + + // Month: Month of a year. Must be from 1 to 12, or 0 to specify a year + // without a month and day. + Month int64 `json:"month,omitempty"` + + // Year: Year of the date. Must be from 1 to 9999, or 0 to specify a + // date without a year. + Year int64 `json:"year,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Day") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Day") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeDate) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeDate + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleTypeDateTime: 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. +type GoogleTypeDateTime struct { + // Day: Optional. Day of month. Must be from 1 to 31 and valid for the + // year and month, or 0 if specifying a datetime without a day. + Day int64 `json:"day,omitempty"` + + // Hours: Optional. Hours of day in 24 hour format. Should be from 0 to + // 23, defaults to 0 (midnight). An API may choose to allow the value + // "24:00:00" for scenarios like business closing time. + Hours int64 `json:"hours,omitempty"` + + // Minutes: Optional. Minutes of hour of day. Must be from 0 to 59, + // defaults to 0. + Minutes int64 `json:"minutes,omitempty"` + + // Month: Optional. Month of year. Must be from 1 to 12, or 0 if + // specifying a datetime without a month. + Month int64 `json:"month,omitempty"` + + // Nanos: Optional. Fractions of seconds in nanoseconds. Must be from 0 + // to 999,999,999, defaults to 0. + Nanos int64 `json:"nanos,omitempty"` + + // Seconds: Optional. Seconds of minutes of the time. Must normally be + // from 0 to 59, defaults to 0. An API may allow the value 60 if it + // allows leap-seconds. + Seconds int64 `json:"seconds,omitempty"` + + // TimeZone: Time zone. + TimeZone *GoogleTypeTimeZone `json:"timeZone,omitempty"` + + // UtcOffset: UTC offset. Must be whole seconds, between -18 hours and + // +18 hours. For example, a UTC offset of -4:00 would be represented as + // { seconds: -14400 }. + UtcOffset string `json:"utcOffset,omitempty"` + + // Year: Optional. Year of date. Must be from 1 to 9999, or 0 if + // specifying a datetime without a year. + Year int64 `json:"year,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Day") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Day") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeDateTime) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeDateTime + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleTypeExpr: Represents a textual expression in the Common +// Expression Language (CEL) syntax. CEL is a C-like expression +// language. The syntax and semantics of CEL are documented at +// https://github.com/google/cel-spec. Example (Comparison): title: +// "Summary size limit" description: "Determines if a summary is less +// than 100 chars" expression: "document.summary.size() < 100" Example +// (Equality): title: "Requestor is owner" description: "Determines if +// requestor is the document owner" expression: "document.owner == +// request.auth.claims.email" Example (Logic): title: "Public documents" +// description: "Determine whether the document should be publicly +// visible" expression: "document.type != 'private' && document.type != +// 'internal'" Example (Data Manipulation): title: "Notification string" +// description: "Create a notification string with a timestamp." +// expression: "'New message received at ' + +// string(document.create_time)" The exact variables and functions that +// may be referenced within an expression are determined by the service +// that evaluates it. See the service documentation for additional +// information. +type GoogleTypeExpr struct { + // Description: Optional. Description of the expression. This is a + // longer text which describes the expression, e.g. when hovered over it + // in a UI. + Description string `json:"description,omitempty"` + + // Expression: Textual representation of an expression in Common + // Expression Language syntax. + Expression string `json:"expression,omitempty"` + + // Location: Optional. String indicating the location of the expression + // for error reporting, e.g. a file name and a position in the file. + Location string `json:"location,omitempty"` + + // Title: Optional. Title for the expression, i.e. a short string + // describing its purpose. This can be used e.g. in UIs which allow to + // enter the expression. + Title string `json:"title,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Description") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Description") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeExpr) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeExpr + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleTypeInterval: 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. +type GoogleTypeInterval struct { + // EndTime: Optional. Exclusive end of the interval. If specified, a + // Timestamp matching this interval will have to be before the end. + EndTime string `json:"endTime,omitempty"` + + // StartTime: Optional. Inclusive start of the interval. If specified, a + // Timestamp matching this interval will have to be the same or after + // the start. + StartTime string `json:"startTime,omitempty"` + + // ForceSendFields is a list of field names (e.g. "EndTime") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "EndTime") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeInterval) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeInterval + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleTypeLatLng: 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. +type GoogleTypeLatLng struct { + // Latitude: The latitude in degrees. It must be in the range [-90.0, + // +90.0]. + Latitude float64 `json:"latitude,omitempty"` + + // Longitude: The longitude in degrees. It must be in the range [-180.0, + // +180.0]. + Longitude float64 `json:"longitude,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Latitude") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Latitude") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeLatLng) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeLatLng + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *GoogleTypeLatLng) UnmarshalJSON(data []byte) error { + type NoMethod GoogleTypeLatLng + var s1 struct { + Latitude gensupport.JSONFloat64 `json:"latitude"` + Longitude gensupport.JSONFloat64 `json:"longitude"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Latitude = float64(s1.Latitude) + s.Longitude = float64(s1.Longitude) + return nil +} + +// GoogleTypeMoney: Represents an amount of money with its currency +// type. +type GoogleTypeMoney struct { + // CurrencyCode: The three-letter currency code defined in ISO 4217. + CurrencyCode string `json:"currencyCode,omitempty"` + + // Nanos: Number of nano (10^-9) units of the amount. The value must be + // between -999,999,999 and +999,999,999 inclusive. If `units` is + // positive, `nanos` must be positive or zero. If `units` is zero, + // `nanos` can be positive, zero, or negative. If `units` is negative, + // `nanos` must be negative or zero. For example $-1.75 is represented + // as `units`=-1 and `nanos`=-750,000,000. + Nanos int64 `json:"nanos,omitempty"` + + // Units: The whole units of the amount. For example if `currencyCode` + // is "USD", then 1 unit is one US dollar. + Units int64 `json:"units,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "CurrencyCode") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CurrencyCode") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeMoney) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeMoney + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleTypePostalAddress: 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 +// https://github.com/google/libaddressinput) - Users should not be +// presented with UI elements for input or editing of fields outside +// countries where that field is used. For more guidance on how to use +// this schema, please see: +// https://support.google.com/business/answer/6397478 +type GoogleTypePostalAddress struct { + // AddressLines: Unstructured address lines describing the lower levels + // of an address. Because values in address_lines do not have type + // information and may sometimes contain multiple values in a single + // field (e.g. "Austin, TX"), it is important that the line order is + // clear. The order of address lines should be "envelope order" for the + // country/region of the address. In places where this can vary (e.g. + // Japan), address_language is used to make it explicit (e.g. "ja" for + // large-to-small ordering and "ja-Latn" or "en" for small-to-large). + // This way, the most specific line of an address can be selected based + // on the language. The minimum permitted structural representation of + // an address consists of a region_code with all remaining information + // placed in the address_lines. It would be possible to format such an + // address very approximately without geocoding, but no semantic + // reasoning could be made about any of the address components until it + // was at least partially resolved. Creating an address only containing + // a region_code and address_lines, and then geocoding is the + // recommended way to handle completely unstructured addresses (as + // opposed to guessing which parts of the address should be localities + // or administrative areas). + AddressLines []string `json:"addressLines,omitempty"` + + // AdministrativeArea: Optional. Highest administrative subdivision + // which is used for postal addresses of a country or region. For + // example, this can be a state, a province, an oblast, or a prefecture. + // Specifically, for Spain this is the province and not the autonomous + // community (e.g. "Barcelona" and not "Catalonia"). Many countries + // don't use an administrative area in postal addresses. E.g. in + // Switzerland this should be left unpopulated. + AdministrativeArea string `json:"administrativeArea,omitempty"` + + // LanguageCode: Optional. BCP-47 language code of the contents of this + // address (if known). This is often the UI language of the input form + // or is expected to match one of the languages used in the address' + // country/region, or their transliterated equivalents. This can affect + // formatting in certain countries, but is not critical to the + // correctness of the data and will never affect any validation or other + // non-formatting related operations. If this value is not known, it + // should be omitted (rather than specifying a possibly incorrect + // default). Examples: "zh-Hant", "ja", "ja-Latn", "en". + LanguageCode string `json:"languageCode,omitempty"` + + // Locality: Optional. Generally refers to the city/town portion of the + // address. Examples: US city, IT comune, UK post town. In regions of + // the world where localities are not well defined or do not fit into + // this structure well, leave locality empty and use address_lines. + Locality string `json:"locality,omitempty"` + + // Organization: Optional. The name of the organization at the address. + Organization string `json:"organization,omitempty"` + + // PostalCode: Optional. Postal code of the address. Not all countries + // use or require postal codes to be present, but where they are used, + // they may trigger additional validation with other parts of the + // address (e.g. state/zip validation in the U.S.A.). + PostalCode string `json:"postalCode,omitempty"` + + // Recipients: Optional. The recipient at the address. This field may, + // under certain circumstances, contain multiline information. For + // example, it might contain "care of" information. + Recipients []string `json:"recipients,omitempty"` + + // RegionCode: Required. CLDR region code of the country/region of the + // address. This is never inferred and it is up to the user to ensure + // the value is correct. See https://cldr.unicode.org/ and + // https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html + // for details. Example: "CH" for Switzerland. + RegionCode string `json:"regionCode,omitempty"` + + // Revision: The schema revision of the `PostalAddress`. This must be + // set to 0, which is the latest revision. All new revisions **must** be + // backward compatible with old revisions. + Revision int64 `json:"revision,omitempty"` + + // SortingCode: Optional. Additional, country-specific, sorting code. + // This is not used in most regions. Where it is used, the value is + // either a string like "CEDEX", optionally followed by a number (e.g. + // "CEDEX 7"), or just a number alone, representing the "sector code" + // (Jamaica), "delivery area indicator" (Malawi) or "post office + // indicator" (e.g. Côte d'Ivoire). + SortingCode string `json:"sortingCode,omitempty"` + + // Sublocality: Optional. Sublocality of the address. For example, this + // can be neighborhoods, boroughs, districts. + Sublocality string `json:"sublocality,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AddressLines") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AddressLines") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypePostalAddress) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypePostalAddress + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleTypeTimeOfDay: 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`. +type GoogleTypeTimeOfDay struct { + // Hours: Hours of day in 24 hour format. Should be from 0 to 23. An API + // may choose to allow the value "24:00:00" for scenarios like business + // closing time. + Hours int64 `json:"hours,omitempty"` + + // Minutes: Minutes of hour of day. Must be from 0 to 59. + Minutes int64 `json:"minutes,omitempty"` + + // Nanos: Fractions of seconds in nanoseconds. Must be from 0 to + // 999,999,999. + Nanos int64 `json:"nanos,omitempty"` + + // Seconds: Seconds of minutes of the time. Must normally be from 0 to + // 59. An API may allow the value 60 if it allows leap-seconds. + Seconds int64 `json:"seconds,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Hours") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Hours") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeTimeOfDay) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeTimeOfDay + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// GoogleTypeTimeZone: Represents a time zone from the IANA Time Zone +// Database (https://www.iana.org/time-zones). +type GoogleTypeTimeZone struct { + // Id: IANA Time Zone Database time zone, e.g. "America/New_York". + Id string `json:"id,omitempty"` + + // Version: Optional. IANA Time Zone Database version number, e.g. + // "2019a". + Version string `json:"version,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Id") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Id") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GoogleTypeTimeZone) MarshalJSON() ([]byte, error) { + type NoMethod GoogleTypeTimeZone + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type GroupsPerDocData struct { + AuthorId uint64 `json:"AuthorId,omitempty,string"` + + GroupGaiaId uint64 `json:"GroupGaiaId,omitempty,string"` + + // GroupId: Legacy group mysql id. + GroupId uint64 `json:"GroupId,omitempty,string"` + + ThreadId uint64 `json:"ThreadId,omitempty,string"` + + // ForceSendFields is a list of field names (e.g. "AuthorId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AuthorId") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *GroupsPerDocData) MarshalJSON() ([]byte, error) { + type NoMethod GroupsPerDocData + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +type HomeGraphCommonRoute struct { + // AgentDeviceId: The device ID defined by the agent. + AgentDeviceId string `json:"agentDeviceId,omitempty"` + + // AgentId: The agent's ID. Generally it is the agent's Google cloud + // project id. + AgentId string `json:"agentId,omitempty"` + + // ChipEndpoint: 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. + ChipEndpoint []int64 `json:"chipEndpoint,omitempty"` + + // TargetType: Execution routing target. + // + // Possible values: + // "UNSPECIFIED" + // "PARTNER_CLOUD" + // "LOCAL" + // "CHIP" + TargetType string `json:"targetType,omitempty"` + + // ForceSendFields is a list of field names (e.g. "AgentDeviceId") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "AgentDeviceId") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HomeGraphCommonRoute) MarshalJSON() ([]byte, error) { + type NoMethod HomeGraphCommonRoute + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HomeGraphCommonRoutingTable: 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. +type HomeGraphCommonRoutingTable struct { + // SupportedRoutes: List of supported execution route. + SupportedRoutes []*HomeGraphCommonRoute `json:"supportedRoutes,omitempty"` + + // ForceSendFields is a list of field names (e.g. "SupportedRoutes") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "SupportedRoutes") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *HomeGraphCommonRoutingTable) MarshalJSON() ([]byte, error) { + type NoMethod HomeGraphCommonRoutingTable + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HomeGraphCommonTraitRoutingHints: LINT.IfChange +// go/shed-per-trait-routing. Making it object to allow for extendible +// design, where we can add attributes in future. +type HomeGraphCommonTraitRoutingHints struct { + // CloudFulfillmentOnly: Set to true for a non-local trait. + CloudFulfillmentOnly bool `json:"cloudFulfillmentOnly,omitempty"` + + // Trait: Trait name, e.g., "action.devices.traits.MediaInitiation". See + // device traits + // (https://developers.google.com/assistant/smarthome/traits). See + // java/com/google/home/graph/common/devices/config/protoconf.pi for the + // exhaustive list of trait-strings. + Trait string `json:"trait,omitempty"` + + // ForceSendFields is a list of field names (e.g. + // "CloudFulfillmentOnly") to unconditionally include in API requests. + // By default, fields with empty or default values are omitted from API + // requests. However, any non-pointer, non-interface field appearing in + // ForceSendFields will be sent to the server regardless of whether the + // field is empty or not. This may be used to include empty fields in + // Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "CloudFulfillmentOnly") to + // include in API requests with the JSON null value. By default, fields + // with empty values are omitted from API requests. However, any field + // with an empty value appearing in NullFields will be sent to the + // server as null. It is an error if a field in this list has a + // non-empty value. This may be used to include null fields in Patch + // requests. + NullFields []string `json:"-"` +} + +func (s *HomeGraphCommonTraitRoutingHints) MarshalJSON() ([]byte, error) { + type NoMethod HomeGraphCommonTraitRoutingHints + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HtmlrenderWebkitHeadlessProtoAnonTimingStatPair: 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. +type HtmlrenderWebkitHeadlessProtoAnonTimingStatPair struct { + Name string `json:"name,omitempty"` + + TimeS float64 `json:"timeS,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Name") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Name") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HtmlrenderWebkitHeadlessProtoAnonTimingStatPair) MarshalJSON() ([]byte, error) { + type NoMethod HtmlrenderWebkitHeadlessProtoAnonTimingStatPair + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *HtmlrenderWebkitHeadlessProtoAnonTimingStatPair) UnmarshalJSON(data []byte) error { + type NoMethod HtmlrenderWebkitHeadlessProtoAnonTimingStatPair + var s1 struct { + TimeS gensupport.JSONFloat64 `json:"timeS"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.TimeS = float64(s1.TimeS) + return nil +} + +// HtmlrenderWebkitHeadlessProtoBox: A simple 2D box represented by an +// (x, y) coordinate, a width, and a height. Coordinates are in pixels. +type HtmlrenderWebkitHeadlessProtoBox struct { + Height int64 `json:"height,omitempty"` + + Width int64 `json:"width,omitempty"` + + // X: on horizontal axis + X int64 `json:"x,omitempty"` + + // Y: on vertical axis + Y int64 `json:"y,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Height") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Height") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HtmlrenderWebkitHeadlessProtoBox) MarshalJSON() ([]byte, error) { + type NoMethod HtmlrenderWebkitHeadlessProtoBox + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HtmlrenderWebkitHeadlessProtoChromiumTrace: A message to describe the +// trace events returned by Chromium. +type HtmlrenderWebkitHeadlessProtoChromiumTrace struct { + ChromiumTrace string `json:"chromiumTrace,omitempty"` + + // ForceSendFields is a list of field names (e.g. "ChromiumTrace") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "ChromiumTrace") to include + // in API requests with the JSON null value. By default, fields with + // empty values are omitted from API requests. However, any field with + // an empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HtmlrenderWebkitHeadlessProtoChromiumTrace) MarshalJSON() ([]byte, error) { + type NoMethod HtmlrenderWebkitHeadlessProtoChromiumTrace + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HtmlrenderWebkitHeadlessProtoConsoleLogEntry: 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. +type HtmlrenderWebkitHeadlessProtoConsoleLogEntry struct { + // LineNumber: Line number of the document which caused an error. + LineNumber int64 `json:"lineNumber,omitempty"` + + // Message: Message which indicates the nature of the error. e.g. parse + // error, reference error (happens when javascript functions or + // variables are not resolvable) etc. + Message string `json:"message,omitempty"` + + // MessageLevel: message level + // + // Possible values: + // "TIP_MESSAGE_LEVEL" + // "DEBUG_MESSAGE_LEVEL" + // "LOG_MESSAGE_LEVEL" + // "INFO_MESSAGE_LEVEL" + // "WARNING_MESSAGE_LEVEL" + // "ERROR_MESSAGE_LEVEL" + MessageLevel string `json:"messageLevel,omitempty"` + + // SourceUrl: The url of the document which has the error. + SourceUrl string `json:"sourceUrl,omitempty"` + + // StackTrace: Stack trace which functions were called when generating + // the console log. The first frame is the innermost one. + StackTrace []*HtmlrenderWebkitHeadlessProtoScriptStackFrame `json:"stackTrace,omitempty"` + + // Timestamp: Wall time (s) when the log entry was recorded + Timestamp float64 `json:"timestamp,omitempty"` + + // ForceSendFields is a list of field names (e.g. "LineNumber") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "LineNumber") to include in + // API requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HtmlrenderWebkitHeadlessProtoConsoleLogEntry) MarshalJSON() ([]byte, error) { + type NoMethod HtmlrenderWebkitHeadlessProtoConsoleLogEntry + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *HtmlrenderWebkitHeadlessProtoConsoleLogEntry) UnmarshalJSON(data []byte) error { + type NoMethod HtmlrenderWebkitHeadlessProtoConsoleLogEntry + var s1 struct { + Timestamp gensupport.JSONFloat64 `json:"timestamp"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Timestamp = float64(s1.Timestamp) + return nil +} + +type HtmlrenderWebkitHeadlessProtoCookie struct { + Domain string `json:"domain,omitempty"` + + Expiration float64 `json:"expiration,omitempty"` + + HttpOnly bool `json:"httpOnly,omitempty"` + + Name string `json:"name,omitempty"` + + Path string `json:"path,omitempty"` + + // Possible values: + // "SAME_SITE_UNSPECIFIED" + // "SAME_SITE_LAX" + // "SAME_SITE_STRICT" + // "SAME_SITE_NONE" + SameSite string `json:"sameSite,omitempty"` + + Secure bool `json:"secure,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Domain") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Domain") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HtmlrenderWebkitHeadlessProtoCookie) MarshalJSON() ([]byte, error) { + type NoMethod HtmlrenderWebkitHeadlessProtoCookie + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +func (s *HtmlrenderWebkitHeadlessProtoCookie) UnmarshalJSON(data []byte) error { + type NoMethod HtmlrenderWebkitHeadlessProtoCookie + var s1 struct { + Expiration gensupport.JSONFloat64 `json:"expiration"` + *NoMethod + } + s1.NoMethod = (*NoMethod)(s) + if err := json.Unmarshal(data, &s1); err != nil { + return err + } + s.Expiration = float64(s1.Expiration) + return nil +} + +type HtmlrenderWebkitHeadlessProtoDOMStorageItem struct { + Key string `json:"key,omitempty"` + + SecurityOrigin string `json:"securityOrigin,omitempty"` + + Value string `json:"value,omitempty"` + + // ForceSendFields is a list of field names (e.g. "Key") to + // unconditionally include in API requests. By default, fields with + // empty or default values are omitted from API requests. However, any + // non-pointer, non-interface field appearing in ForceSendFields will be + // sent to the server regardless of whether the field is empty or not. + // This may be used to include empty fields in Patch requests. + ForceSendFields []string `json:"-"` + + // NullFields is a list of field names (e.g. "Key") to include in API + // requests with the JSON null value. By default, fields with empty + // values are omitted from API requests. However, any field with an + // empty value appearing in NullFields will be sent to the server as + // null. It is an error if a field in this list has a non-empty value. + // This may be used to include null fields in Patch requests. + NullFields []string `json:"-"` +} + +func (s *HtmlrenderWebkitHeadlessProtoDOMStorageItem) MarshalJSON() ([]byte, error) { + type NoMethod HtmlrenderWebkitHeadlessProtoDOMStorageItem + raw := NoMethod(*s) + return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) +} + +// HtmlrenderWebkitHeadlessProtoDOMTreeNode: 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 +type HtmlrenderWebkitHeadlessProtoDOMTreeNode struct { + Attribute []*HtmlrenderWebkitHeadlessProtoDOMTreeNodeAttribute `json:"attribute,omitempty"` + + // ChildDomTreeNodeIndex: An index per child. Indexes can be used to + // fetch the DOMTreeNodes from the list maintained by the Document. + ChildDomTreeNodeIndex []int64 `json:"childDomTreeNodeIndex,omitempty"` + + // CurrentSourceUrl: For elements, the actual url that was used to fetch + // the image. Note that this field is set only if it is different from + // the 'src' attribute value. + CurrentSourceUrl string `json:"currentSourceUrl,omitempty"` + + // Document: If the node represents an iframe or a frame then document + // will be set. + Document *HtmlrenderWebkitHeadlessProtoDocument `json:"document,omitempty"` + + // HtmlTagType: Identifies the HTML tag type (IMG, P, DIV, etc). + // Applicable only for DOM nodes that are representative of html + // elements. For a list of possible types refer HtmlTagEnum defined in + // webutil/html/htmltagenum.h. + HtmlTagType int64 `json:"htmlTagType,omitempty"` + + // IsClickable: Whether this DOM node responds to mouse clicks. This + // includes e.g. nodes that have had click event listeners attached via + // JavaScript as well as e.g. anchor tags that naturally navigate when + // clicked. + IsClickable bool `json:"isClickable,omitempty"` + + // Name: Name of the node (document, text, comment, div, etc). + Name string `json:"name,omitempty"` + + // OriginUrl: URL of the script, if any, which created or populated this + // node. + OriginUrl string `json:"originUrl,omitempty"` + + // ReferencedResourceIndex: List of referenced resource indexes for any + // resources that this DOM tree node references. + ReferencedResourceIndex []int64 `json:"referencedResourceIndex,omitempty"` + + // RenderTreeNodeIndex: RenderTreeNode can be looked up from the list of + // RenderTreeNodes stored in the Document using render_tree_node_index. + // RenderTreeNode gives rendering information (bounding box, style that + // was applied, etc). Note: 1. If a DOMTreeNode does not have a + // RenderTreeNode then it is safe to assume that the DOMTreeNode has no + // effect on the rendering. DOMTreeNodes for a , + RenderTreeNodeIndex []int64 `json:"renderTreeNodeIndex,omitempty"` + + // Possible values: + // "ELEMENT_NODE" + // "ATTRIBUTE_NODE" + // "TEXT_NODE" + // "CDATA_SECTION_NODE" + // "ENTITY_REFERENCE_NODE" + // "ENTITY_NODE" + // "PROCESSING_INSTRUCTION_NODE" + // "COMMENT_NODE" + // "DOCUMENT_NODE" + // "DOCUMENT_TYPE_NODE" + // "DOCUMENT_FRAGMENT_NODE" + // "NOTATION_NODE" + // "XPATH_NAMESPACE_NODE" + // "SHADOW_ROOT_NODE" + Type string `json:"type,omitempty"` + + // Value: The node value is applicable for TEXT_NODEs, + // DOCUMENT_TYPE_NODEs, and user input elements such as , and