diff --git a/docs/dyn/cloudsearch_v1.indexing.datasources.html b/docs/dyn/cloudsearch_v1.indexing.datasources.html index bace4a6501a..f1a72fe3ca7 100644 --- a/docs/dyn/cloudsearch_v1.indexing.datasources.html +++ b/docs/dyn/cloudsearch_v1.indexing.datasources.html @@ -216,6 +216,11 @@

Method Details

}, }, "integerPropertyOptions": { # The options for integer properties. + "integerFacetingOptions": { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property should be marked isFacetable. + "integerBuckets": [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}. + "A String", + ], + }, "maximumValue": "A String", # The maximum value of the property. The minimum and maximum values for the property are used to rank results according to the ordered ranking. Indexing requests with values greater than the maximum are accepted and ranked with the same weight as items indexed with the maximum value. "minimumValue": "A String", # The minimum value of the property. The minimum and maximum values for the property are used to rank results according to the ordered ranking. Indexing requests with values less than the minimum are accepted and ranked with the same weight as items indexed with the minimum value. "operatorOptions": { # Used to provide a search operator for integer properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched. # If set, describes how the integer should be used as a search operator. @@ -344,6 +349,11 @@

Method Details

}, }, "integerPropertyOptions": { # The options for integer properties. + "integerFacetingOptions": { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property should be marked isFacetable. + "integerBuckets": [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}. + "A String", + ], + }, "maximumValue": "A String", # The maximum value of the property. The minimum and maximum values for the property are used to rank results according to the ordered ranking. Indexing requests with values greater than the maximum are accepted and ranked with the same weight as items indexed with the maximum value. "minimumValue": "A String", # The minimum value of the property. The minimum and maximum values for the property are used to rank results according to the ordered ranking. Indexing requests with values less than the minimum are accepted and ranked with the same weight as items indexed with the minimum value. "operatorOptions": { # Used to provide a search operator for integer properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched. # If set, describes how the integer should be used as a search operator. diff --git a/docs/dyn/cloudsearch_v1.query.html b/docs/dyn/cloudsearch_v1.query.html index 3f4274e8581..a2e01d6c3a2 100644 --- a/docs/dyn/cloudsearch_v1.query.html +++ b/docs/dyn/cloudsearch_v1.query.html @@ -149,6 +149,11 @@

Method Details

], "facetOptions": [ { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination. + "integerFacetingOptions": { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets. + "integerBuckets": [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}. + "A String", + ], + }, "numFacetBuckets": 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100. "objectType": "A String", # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets. "operatorName": "A String", # The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions @@ -205,6 +210,29 @@

Method Details

"buckets": [ # FacetBuckets for values in response containing at least a single result with the corresponding filter. { # A bucket in a facet is the basic unit of operation. A bucket can comprise either a single value OR a contiguous range of values, depending on the type of the field bucketed. FacetBucket is currently used only for returning the response object. "count": 42, # Number of results that match the bucket value. Counts are only returned for searches when count accuracy is ensured. Cloud Search does not guarantee facet counts for any query and facet counts might be present only intermittently, even for identical queries. Do not build dependencies on facet count existence; instead use facet ount percentages which are always returned. + "filter": { # A generic way of expressing filters in a query, which supports two approaches: **1. Setting a ValueFilter.** The name must match an operator_name defined in the schema for your data source. **2. Setting a CompositeFilter.** The filters are evaluated using the logical operator. The top-level operators can only be either an AND or a NOT. AND can appear only at the top-most level. OR can appear only under a top-level AND. # Filter to be passed in the search request if the corresponding bucket is selected. + "compositeFilter": { + "logicOperator": "A String", # The logic operator of the sub filter. + "subFilters": [ # Sub filters. + # Object with schema name: Filter + ], + }, + "valueFilter": { + "operatorName": "A String", # The `operator_name` applied to the query, such as *price_greater_than*. The filter can work against both types of filters defined in the schema for your data source: 1. `operator_name`, where the query filters results by the property that matches the value. 2. `greater_than_operator_name` or `less_than_operator_name` in your schema. The query filters the results for the property values that are greater than or less than the supplied value in the query. + "value": { # Definition of a single value with generic type. # The value to be compared with. + "booleanValue": True or False, + "dateValue": { # Represents a whole calendar date, for example a date of birth. The time of day and time zone are either specified elsewhere or are not significant. The date is relative to the [Proleptic Gregorian Calendar](https://en.wikipedia.org/wiki/Proleptic_Gregorian_calendar). The date must be a valid calendar date between the year 1 and 9999. + "day": 42, # Day of month. Must be from 1 to 31 and valid for the year and month. + "month": 42, # Month of date. Must be from 1 to 12. + "year": 42, # Year of date. Must be from 1 to 9999. + }, + "doubleValue": 3.14, + "integerValue": "A String", + "stringValue": "A String", + "timestampValue": "A String", + }, + }, + }, "percentage": 42, # Percent of results that match the bucket value. The returned value is between (0-100], and is rounded down to an integer if fractional. If the value is not explicitly returned, it represents a percentage value that rounds to 0. Percentages are returned for all searches, but are an estimate. Because percentages are always returned, you should render percentages instead of counts. "value": { # Definition of a single value with generic type. "booleanValue": True or False, diff --git a/docs/dyn/cloudsearch_v1.settings.searchapplications.html b/docs/dyn/cloudsearch_v1.settings.searchapplications.html index 957541531c1..ff7ac6cf990 100644 --- a/docs/dyn/cloudsearch_v1.settings.searchapplications.html +++ b/docs/dyn/cloudsearch_v1.settings.searchapplications.html @@ -154,6 +154,11 @@

Method Details

], "defaultFacetOptions": [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above. { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination. + "integerFacetingOptions": { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets. + "integerBuckets": [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}. + "A String", + ], + }, "numFacetBuckets": 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100. "objectType": "A String", # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets. "operatorName": "A String", # The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions @@ -315,6 +320,11 @@

Method Details

], "defaultFacetOptions": [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above. { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination. + "integerFacetingOptions": { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets. + "integerBuckets": [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}. + "A String", + ], + }, "numFacetBuckets": 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100. "objectType": "A String", # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets. "operatorName": "A String", # The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions @@ -416,6 +426,11 @@

Method Details

], "defaultFacetOptions": [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above. { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination. + "integerFacetingOptions": { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets. + "integerBuckets": [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}. + "A String", + ], + }, "numFacetBuckets": 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100. "objectType": "A String", # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets. "operatorName": "A String", # The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions @@ -523,6 +538,11 @@

Method Details

], "defaultFacetOptions": [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above. { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination. + "integerFacetingOptions": { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets. + "integerBuckets": [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}. + "A String", + ], + }, "numFacetBuckets": 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100. "objectType": "A String", # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets. "operatorName": "A String", # The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions @@ -687,6 +707,11 @@

Method Details

], "defaultFacetOptions": [ # The default fields for returning facet results. The sources specified here also have been included in data_source_restrictions above. { # Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination. + "integerFacetingOptions": { # Used to specify integer faceting options. # If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets. + "integerBuckets": [ # Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}. + "A String", + ], + }, "numFacetBuckets": 42, # Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100. "objectType": "A String", # If object_type is set, only those objects of that type will be used to compute facets. If empty, then all objects will be used to compute facets. "operatorName": "A String", # The name of the operator chosen for faceting. @see cloudsearch.SchemaPropertyOptions diff --git a/googleapiclient/discovery_cache/documents/cloudsearch.v1.json b/googleapiclient/discovery_cache/documents/cloudsearch.v1.json index 1d5932d171f..bd527bc6518 100644 --- a/googleapiclient/discovery_cache/documents/cloudsearch.v1.json +++ b/googleapiclient/discovery_cache/documents/cloudsearch.v1.json @@ -2077,7 +2077,7 @@ } } }, - "revision": "20221018", + "revision": "20221108", "rootUrl": "https://cloudsearch.googleapis.com/", "schemas": { "AbuseReportingConfig": { @@ -2889,6 +2889,7 @@ "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_TRIGGER", "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_PERMANENT_ERROR", "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_EMPTY_RESPONSE", + "SCAN_RULE_EVALUATION_SKIPPED_UNSUPPORTED_FILE_TYPE", "SCAN_SUCCEEDED_WITH_FAILURES_NO_VIOLATION", "SCAN_SUCCEEDED_WITH_FAILURES_BLOCK", "SCAN_SUCCEEDED_WITH_FAILURES_WARN", @@ -2915,6 +2916,7 @@ "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given trigger.", "Rule fetch happened, but rule evaluation is skipped because Changeling returned permanent failure while converting the attachment to text.", "Rule fetch happened, but rule evaluation is skipped because Changeling returned an empty response while converting the attachment to text.", + "Rule fetch happened, but rule evaluation is skipped because file type is unsupported.", "Rules were fetched but some evaluations failed. No violation was found in the rules that were successfully evaluated.", "Rules were fetched but some evaluations failed. A blocking violation was found in the rules that were successfully evaluated. The message/attachment will be blocked, the user will be notified, and the violation will be logged to BIP. A blocking violation takes precedence over all other violation types.", "Rules were fetched but some evaluations failed. A warn violation was found in the rules that were successfully evaluated. The user will be warned, and the violation will be logged to BIP.", @@ -5344,6 +5346,69 @@ }, "type": "object" }, + "Attribute": { + "description": "An Attribute is a piece of data attached an Item. Attributes are opaque to the Starbox and have no effect on, nor are they effected by, message storage, indexing, or search. ", + "id": "Attribute", + "properties": { + "name": { + "description": "The name of the attribute. Required - If a write is attempted with an empty string, the server will return an error.", + "type": "string" + }, + "value": { + "$ref": "CaribouAttributeValue" + } + }, + "type": "object" + }, + "AttributeRemoved": { + "description": "An attribute was deleted from some (subset of the) messages in this thread.", + "id": "AttributeRemoved", + "properties": { + "attributeId": { + "type": "string" + }, + "messageKeys": { + "items": { + "$ref": "MultiKey" + }, + "type": "array" + } + }, + "type": "object" + }, + "AttributeSet": { + "description": "An attribute was added to some (subset of the) messages in this thread.", + "id": "AttributeSet", + "properties": { + "attributeId": { + "type": "string" + }, + "attributeValue": { + "description": "The serialized attribute_value as persisted in the storage layer. The application is responsible for deserializing it to an Attribute.Value if appropriate.", + "format": "byte", + "type": "string" + }, + "messageKeys": { + "items": { + "$ref": "MultiKey" + }, + "type": "array" + } + }, + "type": "object" + }, + "Attributes": { + "id": "Attributes", + "properties": { + "attribute": { + "items": { + "$ref": "Attribute" + }, + "type": "array" + } + }, + "type": "object" + }, "AuditLoggingSettings": { "description": "Represents the settings for Cloud audit logging", "id": "AuditLoggingSettings", @@ -5767,10 +5832,6 @@ "readOnly": true, "type": "string" }, - "chatConfig": { - "$ref": "ChatConfig", - "description": "Configuration for the chat for this conference." - }, "coActivity": { "$ref": "CoActivity", "description": "The current co-activity session, or unset if there is none in progress. A co-activity session can be initiated by devices in JOINED state . Initiator of the co-activity is expected to populate this field to start the session. Once clients detect that the co-activity has finished, any JOINED device can clear this field to end the co-activity session. In the case of switching activities, the initiator of the new activity merely needs to override this with the new co-activity data, and all connected clients are expected to handle the transition gracefully." @@ -5790,7 +5851,7 @@ "type": "integer" }, "mediaBackendInfo": { - "description": "Output only. Information about the media backend for the currently ongoing conference in the meeting space. The media backend information will only be filled in for clients that are supposed to present the information. The information should be displayed in a debug panel and is only intended for internal debugging purposes. If the string is empty nothing should be displayed about the media backend.", + "description": "Output only. Information about the media backend for the currently ongoing conference in the meeting space. The media backend information will only be filled in for clients that are supposed to present the information. The information should be displayed in a debug panel and is only intended for internal debugging purposes. If the string is empty nothing should be displayed about the media backend. Deprecated because media backend is always MEDIA_ROUTER since Dec 2018.", "readOnly": true, "type": "string" }, @@ -6038,37 +6099,38 @@ }, "type": "object" }, - "ChatClientActionMarkup": { - "description": "Actions handled by Chat Clients.", - "id": "ChatClientActionMarkup", - "properties": {}, - "type": "object" - }, - "ChatConfig": { - "description": "Configuration of the in meeting chat.", - "id": "ChatConfig", + "CaribouAttributeValue": { + "id": "CaribouAttributeValue", "properties": { - "chatType": { - "description": "The Type of chat this Conference is currently using.", - "enum": [ - "CHAT_TYPE_UNSPECIFIED", - "MEET_CHAT", - "GOOGLE_CHAT" - ], - "enumDescriptions": [ - "Chat Type has not been specified.", - "Meets native chat.", - "Google Chat." - ], + "booleanValue": { + "description": "Tags 1 through 15 are reserved for the most commonly used fields.", + "type": "boolean" + }, + "intValue": { + "format": "int32", + "type": "integer" + }, + "longValue": { + "format": "int64", + "type": "string" + }, + "rawByteValue": { + "description": "Generally, applications should avoid storing raw bytes and instead store structured data as protocol buffer extensions. This both reduces the amount of ad-hoc attribute parsing code as well as eliminates an intermediate copy of the data when deserializing the value. The rawByteValue field is mainly provided for compatibility with attributes stored before the introduction of the Attribute.Value.", + "format": "byte", "type": "string" }, - "googleChatConfig": { - "$ref": "GoogleChatConfig", - "description": "The configuration of Google Chat when selected." + "stringValue": { + "type": "string" } }, "type": "object" }, + "ChatClientActionMarkup": { + "description": "Actions handled by Chat Clients.", + "id": "ChatClientActionMarkup", + "properties": {}, + "type": "object" + }, "ChatConserverDynamitePlaceholderMetadata": { "description": "Metadata used as inputs to the localization that is performed on Dynamite-originated messages that are incompatible with Hangouts clients. See go/localization-of-system-messages for more details.", "id": "ChatConserverDynamitePlaceholderMetadata", @@ -6276,6 +6338,29 @@ }, "type": "object" }, + "ClientContext": { + "description": "Represents the context of the client on behalf of which a HistoryRecord is produced. The ClientContext message can be used to hold context about the service client (e.g. the internal server making fusebox requests) or the user client (e.g. the IP address of the end user).", + "id": "ClientContext", + "properties": { + "clientOperationId": { + "description": "The client operation to which this history record belongs. The notion of a client operation is provided to keep track of client operations which might span multiple transactions in the lower level.", + "type": "string" + }, + "clientType": { + "description": "E.g. \"pinto\", \"imap\", \"bigtop\", \"upload\"", + "type": "string" + }, + "sessionContext": { + "$ref": "SessionContext", + "description": "Contains information about the session which created this history record. This will be empty if the history record was generated by an internal request." + }, + "userIp": { + "description": "Textual representation of the user's IP address, if available.", + "type": "string" + } + }, + "type": "object" + }, "CloudPrincipalProto": { "description": "Principal associated with a Cloud Principal representing third party user.", "id": "CloudPrincipalProto", @@ -6287,6 +6372,24 @@ }, "type": "object" }, + "ClusterInfo": { + "description": "ClusterInfo contains clustering related information for a particular thread that would be sent as part of the conversation view. Today, this information would be used by iOS notification server to identify whether the thread belongs to a cluster. If the thread belongs to a grouped cluster, it would identify whether the cluster is throttled.", + "id": "ClusterInfo", + "properties": { + "clusterId": { + "description": "IDs of the highest priority clusters to which the thread belongs to. If this field is not present, the thread does not belong to any cluster and would be shown in the inbox, unclustered.", + "items": { + "type": "string" + }, + "type": "array" + }, + "throttled": { + "description": "If the thread belongs to a grouped cluster and all of those clusters are throttled, then this field is set to true.", + "type": "boolean" + } + }, + "type": "object" + }, "CoActivity": { "description": "Metadata about a co-activity session.", "id": "CoActivity", @@ -6304,7 +6407,8 @@ "CO_ACTIVITY_APP_UNO", "CO_ACTIVITY_APP_HEADSUP", "CO_ACTIVITY_APP_KAHOOT", - "CO_ACTIVITY_APP_GQUEUES" + "CO_ACTIVITY_APP_GQUEUES", + "CO_ACTIVITY_APP_YOU_TUBE_MUSIC" ], "enumDescriptions": [ "Should never be used.", @@ -6313,7 +6417,8 @@ "Uno game.", "HeadsUp game.", "Kahoot! educational software.", - "GQueues task manager." + "GQueues task manager.", + "YouTube Music" ], "type": "string" } @@ -7038,6 +7143,7 @@ "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_TRIGGER", "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_PERMANENT_ERROR", "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_EMPTY_RESPONSE", + "SCAN_RULE_EVALUATION_SKIPPED_UNSUPPORTED_FILE_TYPE", "SCAN_SUCCEEDED_WITH_FAILURES_NO_VIOLATION", "SCAN_SUCCEEDED_WITH_FAILURES_BLOCK", "SCAN_SUCCEEDED_WITH_FAILURES_WARN", @@ -7064,6 +7170,7 @@ "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given trigger.", "Rule fetch happened, but rule evaluation is skipped because Changeling returned permanent failure while converting the attachment to text.", "Rule fetch happened, but rule evaluation is skipped because Changeling returned an empty response while converting the attachment to text.", + "Rule fetch happened, but rule evaluation is skipped because file type is unsupported.", "Rules were fetched but some evaluations failed. No violation was found in the rules that were successfully evaluated.", "Rules were fetched but some evaluations failed. A blocking violation was found in the rules that were successfully evaluated. The message/attachment will be blocked, the user will be notified, and the violation will be logged to BIP. A blocking violation takes precedence over all other violation types.", "Rules were fetched but some evaluations failed. A warn violation was found in the rules that were successfully evaluated. The user will be warned, and the violation will be logged to BIP.", @@ -8549,6 +8656,10 @@ "format": "int32", "type": "integer" }, + "filter": { + "$ref": "Filter", + "description": "Filter to be passed in the search request if the corresponding bucket is selected." + }, "percentage": { "description": "Percent of results that match the bucket value. The returned value is between (0-100], and is rounded down to an integer if fractional. If the value is not explicitly returned, it represents a percentage value that rounds to 0. Percentages are returned for all searches, but are an estimate. Because percentages are always returned, you should render percentages instead of counts.", "format": "int32", @@ -8564,6 +8675,10 @@ "description": "Specifies operators to return facet results for. There will be one FacetResult for every source_name/object_type/operator_name combination.", "id": "FacetOptions", "properties": { + "integerFacetingOptions": { + "$ref": "IntegerFacetingOptions", + "description": "If set, describes integer faceting options for the given integer property. The corresponding integer property in the schema should be marked isFacetable. The number of buckets returned would be minimum of this and num_facet_buckets." + }, "numFacetBuckets": { "description": "Maximum number of facet buckets that should be returned for this facet. Defaults to 10. Maximum value is 100.", "format": "int32", @@ -8637,6 +8752,18 @@ }, "type": "object" }, + "FilterCreated": { + "description": "A filter was created.", + "id": "FilterCreated", + "properties": {}, + "type": "object" + }, + "FilterDeleted": { + "description": "A filter was deleted.", + "id": "FilterDeleted", + "properties": {}, + "type": "object" + }, "FilterOptions": { "description": "Filter options to be applied on query.", "id": "FilterOptions", @@ -8652,6 +8779,22 @@ }, "type": "object" }, + "FilterUpdate": { + "description": "HistoryRecord for changes associated with a filter, namely: FILTER_CREATED FILTER_DELETED", + "id": "FilterUpdate", + "properties": { + "filterCreated": { + "$ref": "FilterCreated" + }, + "filterDeleted": { + "$ref": "FilterDeleted" + }, + "filterId": { + "type": "string" + } + }, + "type": "object" + }, "FixedFooter": { "description": "A persistent (sticky) footer that is added to the bottom of the card.", "id": "FixedFooter", @@ -8671,6 +8814,38 @@ }, "type": "object" }, + "Folder": { + "id": "Folder", + "properties": { + "id": { + "description": "Folder mapping id.", + "format": "uint64", + "type": "string" + }, + "message": { + "description": "One for each copy of the message in the IMAP folder.", + "items": { + "$ref": "ImapsyncFolderAttributeFolderMessage" + }, + "type": "array" + } + }, + "type": "object" + }, + "FolderAttribute": { + "description": "This is the content of //imapsync/folder attribute.", + "id": "FolderAttribute", + "properties": { + "folder": { + "description": "List of all IMAP folders where the message presents.", + "items": { + "$ref": "Folder" + }, + "type": "array" + } + }, + "type": "object" + }, "FormAction": { "id": "FormAction", "properties": { @@ -8805,6 +8980,118 @@ }, "type": "object" }, + "FuseboxItem": { + "description": "The Item message is the read interface for user data (traditionally referred to as a \"message\", such as a mail message or a chat message, but generalized to encompass other types such as tasks) and stored in Tingle. Each Item is associated with a single Thread. An Item contains three classes of data. (1): Item \"fields\" are common to items of all message types (e.g. mail, chat, task, etc.) and are identified by the ItemFieldSpec.FetchType enum when fetching Items. (2): Item \"attributes\" represent data associated with an Item that is stored on behalf of the client but to which the fusebox and storage layers are otherwise agnostic. (3): Item \"parts\" are application-defined protocol buffers that affect how the Item is indexed. Item parts are referenced as extensions to the ItemParts message. By default the application specifies the index terms associated with an Item part. For performance sensitive applications, the storage layer can be modified to understand and index data types natively.", + "id": "FuseboxItem", + "properties": { + "attributes": { + "$ref": "Attributes" + }, + "creationTimeMicroseconds": { + "description": "The creation time of the Item in micro seconds.", + "format": "uint64", + "type": "string" + }, + "history": { + "$ref": "History" + }, + "itemKey": { + "$ref": "MultiKey", + "description": "The key is used to refer to an item. Note that every field of the MultiKey is unique to the Item, and thus the Item can be looked up by any of the fields." + }, + "labels": { + "$ref": "Labels" + }, + "lastModificationTimeUs": { + "description": "The modification time of the Item in micro seconds. Modifications to the message include label addition, deletion, etc.", + "format": "uint64", + "type": "string" + }, + "lockerReferences": { + "$ref": "References", + "description": "go/lockpicker Locker counterpart of references." + }, + "matchInfo": { + "$ref": "MatchInfo" + }, + "parts": { + "$ref": "ItemParts", + "description": "Type-specific data are represented as extensions to the ItemParts message." + }, + "readTs": { + "description": "The read timestamp at which this item was read. This is a temporary field used to check if two items streamed during dual reading were read at the same timestamp. This will be populated by Fusebox RPCs. \"DO NOT USE UNLESS YOU TALK TO FUSEBOX TEAM (gmail-fusebox@)\".", + "format": "int64", + "type": "string" + }, + "references": { + "$ref": "References", + "description": "References to attachments, video attachments in Youtube and Hangout messages." + }, + "snippet": { + "description": "The snippet is a brief bit of text describing this item.", + "type": "string" + }, + "threadKey": { + "$ref": "MultiKey", + "description": "The key of the Thread with which this Item is associated." + }, + "threadLocator": { + "description": "A base64 encoded and encrypted string generated from the Gaia Id and the thread id. Used to generate the permalink for this thread, exposed from Gmail API.", + "type": "string" + }, + "triggers": { + "$ref": "Triggers" + }, + "version": { + "description": "The latest history operation id that resulted in a mutation of the item.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "FuseboxItemThreadMatchInfo": { + "description": "In the context of a search, the MatchInfo contains information about which Items matched the query.", + "id": "FuseboxItemThreadMatchInfo", + "properties": { + "clusterId": { + "description": "If SearchQuery.Options.Clustering is present, the query will be treated as a cluster query, and this field may be populated with the cluster ID of the cluster to which this thread belongs, if any. The cluster ID will be a label on the message.", + "type": "string" + }, + "lastMatchingItemId": { + "description": "The server id of the last item that matched the query. This is always set, regardless of the compute_matching_items_per_thread option. This is the value by which search results are sorted, in descending (i.e. newest first) order.", + "format": "uint64", + "type": "string" + }, + "lastMatchingItemKey": { + "$ref": "MultiKey", + "description": "The MultiKey of the last item that matched the query. This is always set, regardless of the compute_matching_items_per_thread option. This is the value by which search results are sorted, in descending (i.e. newest first) order." + }, + "matchingItemKey": { + "description": "If SearchQuery.Options.compute_matching_items_per_thread, this field will contain the keys of all items that matched the query, in ascending order. Note that this option requires extra computation.", + "items": { + "$ref": "MultiKey" + }, + "type": "array" + }, + "rank": { + "$ref": "Rank", + "description": "The rank of this ItemThread in the result set of the query. This rank may be used to sort ItemThreads in proper order. Ranks are specific to a query, and stable for a given query at a specific time." + } + }, + "type": "object" + }, + "FuseboxPrefUpdatePreState": { + "description": "If the Value field is not set this means the pref did not exist.", + "id": "FuseboxPrefUpdatePreState", + "properties": { + "value": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, "GSuitePrincipal": { "id": "GSuitePrincipal", "properties": { @@ -9027,17 +9314,6 @@ }, "type": "object" }, - "GoogleChatConfig": { - "description": "Configuration of the Google Chat in Meet.", - "id": "GoogleChatConfig", - "properties": { - "chatGroupId": { - "description": "ID of the Chat group.", - "type": "string" - } - }, - "type": "object" - }, "GoogleChatV1ContextualAddOnMarkup": { "description": "The markup for developers to specify the contents of a contextual AddOn.", "id": "GoogleChatV1ContextualAddOnMarkup", @@ -9864,6 +10140,103 @@ }, "type": "object" }, + "History": { + "description": "The most recent history records associated with the item.", + "id": "History", + "properties": { + "record": { + "items": { + "$ref": "HistoryRecord" + }, + "type": "array" + } + }, + "type": "object" + }, + "HistoryRecord": { + "id": "HistoryRecord", + "properties": { + "clientContext": { + "$ref": "ClientContext", + "description": "This will almost always be set, but there are corner cases in which the information is not available, and thus applications must handle its absence appropriately." + }, + "filterUpdate": { + "$ref": "FilterUpdate" + }, + "imapUpdate": { + "$ref": "ImapUpdate" + }, + "labelUpdate": { + "$ref": "LabelUpdate" + }, + "prefUpdate": { + "$ref": "PrefUpdate" + }, + "recordId": { + "description": "Each HistoryRecord has a unique id. Ids are monotonically increasing, and not necessarily contiguous.", + "format": "uint64", + "type": "string" + }, + "threadUpdate": { + "$ref": "ThreadUpdate" + }, + "transactionContext": { + "$ref": "TransactionContext", + "description": "This will almost always be set, but there are corner cases in which the information is not available, and thus applications must handle its absence appropriately." + }, + "txnDebugInfo": { + "$ref": "TransactionDebugInfo" + }, + "type": { + "enum": [ + "UNKNOWN", + "INTERNAL", + "MESSAGE_ADDED", + "MESSAGE_DELETED", + "LABEL_ADDED", + "LABEL_REMOVED", + "ATTRIBUTE_SET", + "ATTRIBUTE_REMOVED", + "THREAD_KEY_SET", + "LABEL_CREATED", + "LABEL_DELETED", + "LABEL_RENAMED", + "LABEL_UPDATED", + "PREF_WRITTEN", + "PREF_DELETED", + "FILTER_CREATED", + "FILTER_DELETED", + "IMAP_UIDS_REASSIGN", + "TOPIC_STATE_UPDATED", + "TXN_DEBUG_INFO" + ], + "enumDescriptions": [ + "Represents a type that is deprecated or not known by the executing code. Even if Fusebox sends a HistoryRecord with Type not UNKNOWN, it may send Type values that are not yet defined on the client-side, in which case they will be appear as Type.UNKNOWN on the client.", + "Represents a change internal to the Fusebox. HistoryRecords for Fusebox internal changes contribute to the user's version, which is defined as the latest HistoryRecord's record_id. INTERNAL HistoryRecords exist to allow a client to update its notion of the latest record_id it has processed, but do not necessarily contain any other information.", + "ThreadUpdate:", + "", + "", + "", + "", + "", + "", + "LabelUpdate:", + "", + "", + "", + "PrefUpdate:", + "", + "FilterUpdate:", + "", + "IMAP", + "EAI", + "TXN_DEBUG_INFO" + ], + "type": "string" + } + }, + "type": "object" + }, "HostAppActionMarkup": { "description": "Actions handled by individual host apps.", "id": "HostAppActionMarkup", @@ -10329,19 +10702,390 @@ }, "type": "object" }, - "IncomingWebhookChangedMetadata": { - "description": "Annotation metadata to display system messages for incoming webhook events. Next Tag: 7", - "id": "IncomingWebhookChangedMetadata", + "ImapSessionContext": { + "id": "ImapSessionContext", "properties": { - "incomingWebhookName": { - "description": "The webhook name at the time of the change. Used in Spanner storage, BE API responses and FE API responses.", + "app": { + "enum": [ + "OTHER_APP", + "CHROME", + "FIREFOX", + "MSIE", + "SAFARI", + "OPERA", + "EDGE", + "MSIE_COMPATIBILITY", + "OTHER_BROWSER", + "SAMSUNG_BROWSER", + "UC_BROWSER", + "ANDROID_BROWSER", + "YANDEX_BROWSER", + "SILK_BROWSER", + "COC_COC_BROWSER", + "MAX_BROWSER_APP_VALUE", + "GMAIL_APP", + "GMAIL_INBOX_APP", + "ANDROID_EMAIL_APP", + "SAMSUNG_MAIL_APP", + "MOTO_EMAIL_APP", + "BOXER_APP", + "LIMILABS_MAIL_DLL", + "BIS_APP", + "OUTLOOK_MAIL_APP", + "APPLE_NATIVE_APP", + "CHROME_WEBVIEW_APP", + "SAFARI_WEBVIEW_APP", + "CHROME_SYNC_APP", + "GSA_APP", + "GMM_APP", + "CALENDAR_APP", + "PLUS_APP", + "HANGOUTS_APP", + "HANGOUTS_MEET_APP", + "JAMBOARD_APP", + "VOICE_APP", + "PHOTOS_APP", + "DRIVE_SYNC_APP", + "DRIVE_APP", + "DOCS_APP", + "SHEETS_APP", + "SLIDES_APP", + "KEEP_APP", + "WHATS_APP_IN_DRIVE_APP", + "TRANSLATE_APP", + "YOUTUBE_APP", + "YOUTUBE_MUSIC_APP", + "YOUTUBE_GAMING_APP", + "YOUTUBE_KIDS_APP", + "YOUTUBE_CAPTURE_APP", + "YOUTUBE_CREATOR_APP", + "YOUTUBE_GO_APP", + "YOUTUBE_TV_APP", + "YOUTUBE_VR_APP", + "PLAY_APP", + "PLAY_MUSIC_APP", + "PLAY_BOOKS_APP", + "PLAY_MOVIES_APP", + "PLAY_NEWSSTAND_APP", + "PLAY_GAMES_APP", + "POKEMON_GO_APP", + "ALLO_APP", + "DUO_APP", + "CLASSROOM_APP", + "TRIPS_APP", + "GOOGLE_PAY_APP", + "WAZE_APP", + "ASSISTANT_APP", + "GBOARD_APP", + "NEWS_APP", + "HOME_APP", + "EARTH_APP", + "STREET_VIEW_APP", + "TEZ_APP", + "GOOGLE_ANALYTICS_APP", + "ADSENSE_APP", + "ADWORDS_APP", + "EXPRESS_APP", + "WEAR_APP", + "GOOGLE_MY_BUSINESS_APP", + "FAMILY_LINK_APP", + "OPINION_REWARDS_APP", + "WALLET_APP", + "ARTS_AND_CULTURE_APP", + "ANDROID_DEVICE_MANAGER_APP", + "GOOGLE_GO_APP", + "FILES_GO_APP", + "DATALLY_APP", + "WIFI_APP", + "STADIA_APP", + "BATTLESTAR_APP", + "SMART_LOCK_APP", + "LOGDOG_APP", + "DEPRECATED_MAC_OSX_MAIL_APP", + "DEPRECATED_IOS_MAIL_APP" + ], + "enumDescriptions": [ + "Unknown", + "Browsers Google Chrome", + "Mozilla Firefox", + "Microsoft Internet Explorer", + "Apple Safari", + "Opera", + "Tag #7 used to be CHROME_WEBVIEW, which was deprecated and replaced by CHROME_WEBVIEW_APP. When adding a new browser, skip #7 for safety. Microsoft Edge", + "MSIE in Compatibility View. See b/22467241.", + "Browser not otherwise specified", + "Samsung browser on Android", + "UC Browser", + "Android's legacy default AOSP browser (distinct", + "from customized OEM flavours). Yandex Browser", + "Amazon Silk browser", + "Popoular browser in Vietnam", + "Tag for the maximum enum value that represents a browser. Enum values (strictly) between OTHER_APP and this value represent browsers. This should never appear in real data.", + "Email apps Gmail", + "Inbox by Gmail", + "Native Android email app", + "(replaced by Gmail in Lollipop) Samsung mail", + "Motorola email app", + "Boxer", + "Mail.dll by Limilabs", + "BlackBerry Internet Service", + "Microsoft Outlook", + "Apple apps (mail, contacts & calendar)", + "Chrome Webview", + "Safari Webview", + "Chrome Sync", + "Includes both Now and Search on GSA.", + "Maps", + "Calendar", + "Google+", + "Hangouts Classic", + "Hangouts Meet", + "Jamboard app (go/jamboard)", + "Google Voice", + "Photos", + "Drive Sync", + "Drive", + "Docs", + "Sheets", + "Slides", + "Keep", + "WhatsApp in Drive", + "Translate", + "YouTube", + "YouTube Music", + "YouTube Gaming", + "YouTube Kids", + "YouTube Capture", + "YouTube Creator Studio", + "YouTube Go", + "YouTube TV", + "YouTube VR", + "Google Play", + "Google Play Music", + "Google Play Books", + "Google Play Movies & TV", + "Google Play Newsstand", + "Google Play Games", + "Pokemon GO (uses Google to sign in)", + "Allo", + "Duo", + "Google Classroom", + "Google Trips", + "Google Pay (formerly Android Pay)", + "Waze", + "Google Assistant standalone app. iOS only,", + "since on Android OPA is integrated in GSA. Gboard - the Google Keyboard", + "Google News & Weather", + "Google Home app (rebranded from Chromecast app)", + "Google Earth", + "Google Street View", + "Tez payment app for India (go/paisa)", + "Google Analytics", + "AdSense", + "AdWords", + "Google Express (formerly Shopping Express)", + "Android Wear companion app", + "Google My Business", + "Google Family Link", + "Google Opinion Rewards", + "Google Wallet", + "Google Arts & Culture", + "Android Device Manager", + "Google Go", + "Files Go", + "Datally", + "Google Wifi (incl. OnHub)", + "Stadia (go/stadia)", + "Battlestar (go/battlestar)", + "SmartLock", + "Non-browser, non-mail, non-first-party apps LogDog (https://getlogdog.com/)", + "Do not remove this fields - remvoing them caused issues in the past (see cl/180425348 for reference).", + "" + ], "type": "string" }, - "initiatorId": { - "$ref": "UserId", - "description": "The user id of the user whose action triggered this system message. Used in Spanner storage, BE API responses and FE API responses." - }, - "initiatorProfile": { + "deviceType": { + "description": "User agent information", + "enum": [ + "UNKNOWN", + "PC", + "MOBILE", + "TABLET", + "PORTABLE_MEDIA_PLAYER", + "TV", + "GAME_CONSOLE", + "MEDIA_PLAYER", + "SMART_SPEAKER", + "SMART_DISPLAY", + "CONNECTED_HOME_OTHER", + "WEARABLE", + "GLASS", + "CAR", + "VR_HEADSET" + ], + "enumDescriptions": [ + "Unknown device type.", + "PCs (incl. Macs). Desktops, laptops and various niche form factors that typically run desktop-class OSes (all-in-ones, HTPCs etc.).", + "Primarily used for phones, but also set as default for OSes that are predominantly for phones (Android, iOS etc.) when we can't determine otherwise.", + "Tablets.", + "Mobile devices which are not phones, but are capable of storing and playing digital media such as audio, images, and video files. Example: iPod.", + "Smart TVs which interact with Google products without an external additional device. Includes TV sets which run Android TV directly. Refers to actual TV screens, rather than connected boxes or dongles.", + "Devices whose primary purpose is playing games. Examples: Xbox, Playstation.", + "Add-on devices (i.e. devices which require connecting to another device, such as screens/TVs/speakers) whose primary purpose is media consumption (excludes physical TV screens). Examples: Chromecast, Roku, Apple TV, Nexus Player.", + "Examples: Google Home, Amazon Echo.", + "Examples: Google Home Display (Quartz/Manhattan/Jasper/Dragonglass), Amazon Echo Spot, Amazon Echo Show.", + "Other connected home devices which do not fit in any of the above categories; that is, neither media- or gaming-focused, nor primarily a voice-enabled speaker.", + "Wearable devices such as smartwatches.", + "Google Glass.", + "Examples: Android Auto (Embedded mode, not mirrored from phone).", + "Standalone VR headsets, such as the Lenovo Mirage Solo. Does not include phone-based VR (such as Daydream View or Gear VR) or PC/Console-based such as Oculus Rift, HTC Vive and PSVR; in such cases, the form factor may be PHONE, PC or GAME_CONSOLE as applicable." + ], + "type": "string" + }, + "guidFingerprint": { + "description": "As agreed with Bond team, this holds the fingerprint of any \"aguid\" or \"guid\" provided by the ID command. The fingerprint should be calculated by fingerprint2011. Note that not all clients will provide aguid or guid through ID command.", + "format": "uint64", + "type": "string" + }, + "os": { + "enum": [ + "UNKNOWN_OS", + "ANDROID_OS", + "IOS_OS", + "BLACKBERRY_OS", + "WIN_PHONE_OS", + "FIRE_OS", + "MAX_MOBILE_OS_VALUE", + "WINDOWS_OS", + "LINUX_OS", + "MAC_OS", + "CHROME_OS", + "PLAYSTATION_OS", + "XBOX_OS", + "TIZEN_OS", + "APPLE_TV_OS", + "KAI_OS", + "ANDROID_THINGS_OS", + "CAST_OS", + "STADIA_OS" + ], + "enumDescriptions": [ + "", + "Mobile operating systems (1-99).", + "", + "", + "", + "Amazon Fire OS (for Kindle Fire devices or Fire TV).", + "Tag for the maximum enum value that represents a mobile OS. Enum values (strictly) between UNKNOWN_OS and this value represent mobile OSes. This should never appear in real data.", + "PC operating systems.", + "", + "", + "", + "The OS powering Playstation consoles. Ignores OS changes across console generations.", + "The Windows-derived OS used on Xbox consoles.", + "Tizen OS, popular in Samsung TVs, watches and more.", + "Apple tvOS (powering the Apple TV).", + "KaiOS, a fork from Firefox OS that is between a full smartphone and a feature phone. Notably, it supports the Google Assistant. go/kaiosama", + "Android optimized for IoT devices. go/things", + "Cast family devices, including Chromecast, Google Home, and third-party speaker with integrated Assistant.", + "Stadia on Cast devices. This is not truly an OS, but it's a temporary setting since Stadia uses a different sign-in flow (and is revoked differently) from Cast. See http://go/stadia-in-google-account. Do not use without discussing with id-devices-eng@." + ], + "type": "string" + }, + "osVersion": { + "$ref": "OsVersion" + }, + "possiblyTrimmedModel": { + "$ref": "PossiblyTrimmedModel" + } + }, + "type": "object" + }, + "ImapSyncDelete": { + "description": "Message delete history record extension that exports //imapsync/folder attribute of deleted messages which have ^is label.", + "id": "ImapSyncDelete", + "properties": { + "mappings": { + "$ref": "FolderAttribute", + "description": "Contains the value of //imapsync/folder attribute of deleted message." + }, + "msgId": { + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "ImapUidsReassign": { + "id": "ImapUidsReassign", + "properties": { + "labelId": { + "description": "Label", + "type": "string" + }, + "messageId": { + "description": "The message Ids", + "items": { + "format": "uint64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, + "ImapUpdate": { + "description": "HistoryRecord for changes associated with IMAP, namely: IMAP_UIDS_REASSIGN", + "id": "ImapUpdate", + "properties": { + "imapUidsReassign": { + "$ref": "ImapUidsReassign" + } + }, + "type": "object" + }, + "ImapsyncFolderAttributeFolderMessage": { + "id": "ImapsyncFolderAttributeFolderMessage", + "properties": { + "flags": { + "$ref": "ImapsyncFolderAttributeFolderMessageFlags", + "description": "Flags of the message. Represents unseen and flagged state." + }, + "uid": { + "description": "UID of the message.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "ImapsyncFolderAttributeFolderMessageFlags": { + "id": "ImapsyncFolderAttributeFolderMessageFlags", + "properties": { + "flagged": { + "description": "Flagged state of the message.", + "type": "boolean" + }, + "seen": { + "description": "Seen state of the message.", + "type": "boolean" + } + }, + "type": "object" + }, + "IncomingWebhookChangedMetadata": { + "description": "Annotation metadata to display system messages for incoming webhook events. Next Tag: 7", + "id": "IncomingWebhookChangedMetadata", + "properties": { + "incomingWebhookName": { + "description": "The webhook name at the time of the change. Used in Spanner storage, BE API responses and FE API responses.", + "type": "string" + }, + "initiatorId": { + "$ref": "UserId", + "description": "The user id of the user whose action triggered this system message. Used in Spanner storage, BE API responses and FE API responses." + }, + "initiatorProfile": { "$ref": "User", "description": "Complete profile when ListTopicsRequest FetchOptions.USER is set. Otherwise, only the id will be filled in. Used in FE API responses." }, @@ -10468,6 +11212,21 @@ }, "type": "object" }, + "IntegerFacetingOptions": { + "description": "Used to specify integer faceting options.", + "id": "IntegerFacetingOptions", + "properties": { + "integerBuckets": { + "description": "Buckets for given integer values should be in strictly ascending order. For example, if values supplied are (1,5,10,100), the following facet buckets will be formed {<1, [1,5), [5-10), [10-100), >=100}.", + "items": { + "format": "int64", + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "IntegerOperatorOptions": { "description": "Used to provide a search operator for integer properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched.", "id": "IntegerOperatorOptions", @@ -10491,6 +11250,10 @@ "description": "The options for integer properties.", "id": "IntegerPropertyOptions", "properties": { + "integerFacetingOptions": { + "$ref": "IntegerFacetingOptions", + "description": "If set, describes integer faceting options for the given integer property. The corresponding integer property should be marked isFacetable." + }, "maximumValue": { "description": "The maximum value of the property. The minimum and maximum values for the property are used to rank results according to the ordered ranking. Indexing requests with values greater than the maximum are accepted and ranked with the same weight as items indexed with the maximum value.", "format": "int64", @@ -10880,6 +11643,12 @@ }, "type": "object" }, + "ItemParts": { + "description": "Container for type-specific extensions of an Item. This protobuf is defined in a separate file to allow types to reference/extend the message without depending on other fusebox protobufs. See items.proto.", + "id": "ItemParts", + "properties": {}, + "type": "object" + }, "ItemStatus": { "description": "This contains item's status and any errors.", "id": "ItemStatus", @@ -10934,6 +11703,67 @@ }, "type": "object" }, + "ItemThread": { + "description": "An ItemThread is an ordered list of Items. An ItemThread corresponds to a \"conversation\" in the context of mail. An Item belongs to exactly one ItemThread.", + "id": "ItemThread", + "properties": { + "clusterInfo": { + "$ref": "ClusterInfo" + }, + "item": { + "description": "The Items in the ItemThread. In the context of a search, the list of Items may be a subset of those that logically belong to the ItemThread. The details of which items are included are available in the ItemThreadView returned in the overall rpc response.", + "items": { + "$ref": "FuseboxItem" + }, + "type": "array" + }, + "lastItemId": { + "description": "The server id of the last item returned in the ItemThread. This can be deduced from the [item] list but is provided for convenience. When manually constructing an ItemThreadViewSpec to perform operations on the ItemThread, this value can be used as the [high_item_id_watermark].", + "format": "uint64", + "type": "string" + }, + "matchInfo": { + "$ref": "FuseboxItemThreadMatchInfo" + }, + "snippet": { + "description": "A snippet summarizing the thread. This field is only populated for searches.", + "type": "string" + }, + "threadKey": { + "$ref": "MultiKey", + "description": "The MultiKey that identifies this thread. This value never changes, i.e. remains constant across modifications to the thread, including addition, relabeling, or deletion of contained Items. As such, the thread key may not necessarily correspond to the key of an contained Item. Legacy note: The \"server_id\" of the thread key is equivalent to the notion of the \"original thread id\" in the CSS API." + }, + "threadLocator": { + "description": "A base64 encoded and encrypted string generated from the Gaia Id and the thread id. Used to generate the permalink for this thread, exposed from Gmail API.", + "type": "string" + }, + "topicState": { + "$ref": "TopicState", + "description": "Next available id : 10" + }, + "version": { + "description": "The latest history operation id that resulted in a mutation of any item in the thread.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, + "JobsettedServerSpec": { + "description": "Identifies a jobsetted server as a target for Trigger dispatch.", + "id": "JobsettedServerSpec", + "properties": { + "portName": { + "description": "E.g. \"gateway\", \"stubby\" etc. Leave unset to use the default unnamed port.", + "type": "string" + }, + "serverName": { + "description": "E.g. \"satellite-server\", \"bigtop-sync\", etc.", + "type": "string" + } + }, + "type": "object" + }, "KeyValue": { "id": "KeyValue", "properties": { @@ -11071,6 +11901,129 @@ }, "type": "object" }, + "LabelAdded": { + "description": "A label was added to some (subset of the) messages in this thread.", + "id": "LabelAdded", + "properties": { + "labelId": { + "type": "string" + }, + "labelName": { + "type": "string" + }, + "messageKeys": { + "items": { + "$ref": "MultiKey" + }, + "type": "array" + }, + "syncId": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "LabelCreated": { + "description": "A label was created.", + "id": "LabelCreated", + "properties": {}, + "type": "object" + }, + "LabelDeleted": { + "description": "A label was deleted.", + "id": "LabelDeleted", + "properties": {}, + "type": "object" + }, + "LabelRemoved": { + "description": "A label was removed from some (subset of the) messages in this thread.", + "id": "LabelRemoved", + "properties": { + "labelId": { + "type": "string" + }, + "labelName": { + "type": "string" + }, + "messageKeys": { + "items": { + "$ref": "MultiKey" + }, + "type": "array" + }, + "syncId": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "LabelRenamed": { + "description": "A label was renamed.", + "id": "LabelRenamed", + "properties": { + "oldCanonicalName": { + "type": "string" + } + }, + "type": "object" + }, + "LabelUpdate": { + "description": "HistoryRecord for changes associated with a label, namely: LABEL_CREATED LABEL_DELETED LABEL_RENAMED LABEL_UPDATED", + "id": "LabelUpdate", + "properties": { + "canonicalName": { + "type": "string" + }, + "labelCreated": { + "$ref": "LabelCreated" + }, + "labelDeleted": { + "$ref": "LabelDeleted" + }, + "labelId": { + "type": "string" + }, + "labelRenamed": { + "$ref": "LabelRenamed" + }, + "labelUpdated": { + "$ref": "LabelUpdated" + }, + "syncId": { + "format": "uint32", + "type": "integer" + } + }, + "type": "object" + }, + "LabelUpdated": { + "description": "A label pref was updated outside of a rename, create, or delete.", + "id": "LabelUpdated", + "properties": {}, + "type": "object" + }, + "Labels": { + "id": "Labels", + "properties": { + "displayName": { + "description": "The display name of the labels. This is populated (instead of the id) when the request fetch_spec has LABEL_DISPLAY_NAMES.", + "items": { + "type": "string" + }, + "type": "array" + }, + "id": { + "description": "The ids of the labels attached to the Item, e.g. \"^i\", \"^x_1\"", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "LanguageConfig": { "description": "The language configuration for the session.", "id": "LanguageConfig", @@ -11281,6 +12234,19 @@ }, "type": "object" }, + "MatchInfo": { + "id": "MatchInfo", + "properties": { + "matchingImageReferenceKey": { + "description": "Reference keys for image attachments that matches search query.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object" + }, "MatchRange": { "description": "Matched range of a snippet [start, end).", "id": "MatchRange", @@ -11704,6 +12670,7 @@ "SCAN_RULE_EVALUATION_SKIPPED_NO_APPLICABLE_RULES_FOR_TRIGGER", "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_PERMANENT_ERROR", "SCAN_RULE_EVALUATION_SKIPPED_CHANGELING_EMPTY_RESPONSE", + "SCAN_RULE_EVALUATION_SKIPPED_UNSUPPORTED_FILE_TYPE", "SCAN_SUCCEEDED_WITH_FAILURES_NO_VIOLATION", "SCAN_SUCCEEDED_WITH_FAILURES_BLOCK", "SCAN_SUCCEEDED_WITH_FAILURES_WARN", @@ -11730,6 +12697,7 @@ "Rule fetch happened, but rule evaluation is skipped because none of the rules are applicable to the given trigger.", "Rule fetch happened, but rule evaluation is skipped because Changeling returned permanent failure while converting the attachment to text.", "Rule fetch happened, but rule evaluation is skipped because Changeling returned an empty response while converting the attachment to text.", + "Rule fetch happened, but rule evaluation is skipped because file type is unsupported.", "Rules were fetched but some evaluations failed. No violation was found in the rules that were successfully evaluated.", "Rules were fetched but some evaluations failed. A blocking violation was found in the rules that were successfully evaluated. The message/attachment will be blocked, the user will be notified, and the violation will be logged to BIP. A blocking violation takes precedence over all other violation types.", "Rules were fetched but some evaluations failed. A warn violation was found in the rules that were successfully evaluated. The user will be warned, and the violation will be logged to BIP.", @@ -11924,6 +12892,36 @@ }, "type": "object" }, + "MessageAdded": { + "description": "A message was added. Specifying id and initial labels.", + "id": "MessageAdded", + "properties": { + "attributeIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "labelIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "messageKey": { + "$ref": "MultiKey" + }, + "syncIds": { + "description": "Note that there can be fewer sync ids than label ids.", + "items": { + "format": "uint32", + "type": "integer" + }, + "type": "array" + } + }, + "type": "object" + }, "MessageAttributes": { "description": "Stores tombstone message attributes: go/tombstone-message-attributes-overview", "id": "MessageAttributes", @@ -11935,6 +12933,26 @@ }, "type": "object" }, + "MessageDeleted": { + "description": "Some (subset of the) messages in this thread were deleted.", + "id": "MessageDeleted", + "properties": { + "imapSyncMappings": { + "description": "Value of coproc's message delete history record extension that exports /imapsync/folder attribute of deleted messages which have ^is label.", + "items": { + "$ref": "ImapSyncDelete" + }, + "type": "array" + }, + "messageKeys": { + "items": { + "$ref": "MultiKey" + }, + "type": "array" + } + }, + "type": "object" + }, "MessageId": { "description": "Primary key for Message resource.", "id": "MessageId", @@ -11999,6 +13017,12 @@ }, "type": "object" }, + "MessageSet": { + "description": "This is proto2's version of MessageSet.", + "id": "MessageSet", + "properties": {}, + "type": "object" + }, "Metadata": { "description": "Metadata of a matched search result.", "id": "Metadata", @@ -12061,6 +13085,22 @@ }, "type": "object" }, + "MultiKey": { + "description": "A union-like type for identifiying an object in storage. MultiKeys contain multiple key fields, each in a separate key space. At least one key field must be set. More than one key field may be set as long as all key values refer to the same object. All objects in storage have unique server_id keys. All MultiKeys returned from storage to storage clients will always have the server_id field set. When creating an object, if a MultiKey without a server_id is supplied to storage, the storage system will auto-assign a server ID to the new object. For all other storage requests (i.e. those not creating new objects), clients may omit server_id (as long as they supply another key). Instead of server ids, clients can specify string based client_assigned_perm_id keys. Mail message drafts are a prime example of these kinds of objects. Each time a user saves a new version of a draft, the storage system needs to create a new object with the updated draft content and needs to delete the object containing the old content. The new object gets a new SERVER_ID but should get the same CLIENT_ASSIGNED_PERM_ID as the now-deleted object containing the old content. Carrying forward the perm ID allows it to be used to consistently refer to the same logical object across revisions. These perm IDs save sync clients from having to deal with changing object IDs. For example, assume there's a mail message in storage with SERVER_ID = 123 and CLIENT_ASSIGNED_PERM_ID = \"foo\". The following are all valid ways of addressing the object using MultiKeys: 1) MultiKey { server_id = 123 } 2) MultiKey { server_id = 123, client_assigned_perm_id = \"foo\" } 3) MultiKey { client_assigned_perm_id = \"foo\" } Multikeys are never serialized in the storage. The individual keys are extracted and processed separately. Both the integer ids as well as string ids are indexed for efficient retrieval using the same fields in the backend. See go/tingle-multikeys for more information on background and motivation.", + "id": "MultiKey", + "properties": { + "clientAssignedPermId": { + "description": "A client-assigned string based key.", + "type": "string" + }, + "serverId": { + "description": "A server-assigned ID. This ID must be used only by Gmail and is constructed using millesecond ts << 20 + randomness. The ID affects the sort order of the index.", + "format": "uint64", + "type": "string" + } + }, + "type": "object" + }, "Name": { "description": "A person's name.", "id": "Name", @@ -12329,6 +13369,24 @@ }, "type": "object" }, + "OsVersion": { + "id": "OsVersion", + "properties": { + "majorVersion": { + "format": "int32", + "type": "integer" + }, + "minorVersion": { + "format": "int32", + "type": "integer" + }, + "tertiaryVersion": { + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, "OtrChatMessageEvent": { "id": "OtrChatMessageEvent", "properties": { @@ -12652,6 +13710,19 @@ }, "type": "object" }, + "PossiblyTrimmedModel": { + "description": "This message contains either the device model, or a prefix of the device model (AKA a trimmed device model). The \"is_trimmed\" field indicates which one it is.", + "id": "PossiblyTrimmedModel", + "properties": { + "isTrimmed": { + "type": "boolean" + }, + "model": { + "type": "string" + } + }, + "type": "object" + }, "PostiniUserProto": { "description": "See http://s/?fileprint=//depot/google3/security/authentication/postini/auth_token.proto", "id": "PostiniUserProto", @@ -12663,6 +13734,70 @@ }, "type": "object" }, + "PreState": { + "description": "State of the thread previous to the update. This really just describes the label state of all messages before the update.", + "id": "PreState", + "properties": { + "labelIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "messageKey": { + "$ref": "MultiKey" + }, + "syncIds": { + "description": "Note that there can be fewer sync ids than label ids.", + "items": { + "format": "uint32", + "type": "integer" + }, + "type": "array" + }, + "threadKey": { + "$ref": "MultiKey" + } + }, + "type": "object" + }, + "PrefDeleted": { + "description": "PREF_DELETED", + "id": "PrefDeleted", + "properties": {}, + "type": "object" + }, + "PrefUpdate": { + "description": "HistoryRecord for changes associated with prefs, namely: PREF_WRITTEN PREF_DELETED", + "id": "PrefUpdate", + "properties": { + "name": { + "description": "Name of the affected preference.", + "type": "string" + }, + "preState": { + "$ref": "FuseboxPrefUpdatePreState" + }, + "prefDeleted": { + "$ref": "PrefDeleted" + }, + "prefWritten": { + "$ref": "PrefWritten" + } + }, + "type": "object" + }, + "PrefWritten": { + "description": "PREF_WRITTEN", + "id": "PrefWritten", + "properties": { + "value": { + "format": "byte", + "type": "string" + } + }, + "type": "object" + }, "Presenter": { "description": "Presenter contains information about which device is currently presenting as well as which device requested the presenter to be set.", "id": "Presenter", @@ -12880,7 +14015,7 @@ "type": "object" }, "PrivateMessageInfo": { - "description": "Private message information specific to a given user.", + "description": "Private message information specific to a given user. DEPRECATED: Use the privateMessageViewer field in CreateMessageInfo instead.", "id": "PrivateMessageInfo", "properties": { "annotations": { @@ -13446,6 +14581,23 @@ }, "type": "object" }, + "Rank": { + "description": "The rank contains a tuple of numbers which may be used as a general sort order. The rank should be treated as an ordered set of numbers, where the ordering is done in descending order of the most significant rank member. For example, given the following ranks described as (primary, secondary): (1,1), (1,2), (2,2) (2,1) The descending rank-order is: (2,2) > (2,1) > (1,2) > (1,1)", + "id": "Rank", + "properties": { + "primary": { + "description": "The primary rank is the most significant rank member. This rank element should always be present. Items with higher primary rank are always considered of higher rank than those of lower primary rank.", + "format": "int64", + "type": "string" + }, + "secondary": { + "description": "The secondary rank may be used to rank items of identical primary rank. This rank element should always be present.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, "RbacRoleProto": { "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": "RbacRoleProto", @@ -13623,6 +14775,46 @@ }, "type": "object" }, + "Reference": { + "description": "All fields in this proto are now columns in spanner see google3/storage/slice/production/gmail/user_data_tables.pi for documentation.", + "id": "Reference", + "properties": { + "blobId": { + "type": "string" + }, + "contentType": { + "type": "string" + }, + "hash": { + "type": "string" + }, + "key": { + "description": "LINT.IfChange", + "type": "string" + }, + "name": { + "description": "LINT.ThenChange(//depot/google3/storage/slice/production/gmail/ user_data_tables.pi)", + "type": "string" + }, + "size": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "References": { + "id": "References", + "properties": { + "references": { + "items": { + "$ref": "Reference" + }, + "type": "array" + } + }, + "type": "object" + }, "RenameEvent": { "id": "RenameEvent", "properties": { @@ -13725,9 +14917,11 @@ "enum": [ "REQUIRED_FEATURE_UNSPECIFIED", "REQUIRED_FEATURE_MESSAGE_QUOTING", - "REQUIRED_FEATURE_TOMBSTONES_IN_DMS_AND_UFRS" + "REQUIRED_FEATURE_TOMBSTONES_IN_DMS_AND_UFRS", + "REQUIRED_FEATURE_CUSTOM_HYPERLINK" ], "enumDescriptions": [ + "", "", "", "" @@ -14013,6 +15207,17 @@ }, "type": "object" }, + "RpcOptions": { + "description": "Options for Triggers dispatched via RPC.", + "id": "RpcOptions", + "properties": { + "requestExtensions": { + "$ref": "MessageSet", + "description": "The RPC's request extensions (i.e. RPC::request_extensions(), a.k.a. the Stubby side channel) will be merged with the specified [request_extensions]. When Triggers are batched, the RPC's request extensions will be merged with all of the [request_extensions] of the Triggers in the batch. Note that merging of request extensions follows standard protocol buffer semantics; values of singular fields override previous values, and values of repeated fields are appended (In the case of Triggers, Triggers with later fire times will be merged after Triggers with earlier fire times in the same batch). It is not advised to specify extensions with repeated fields on batchable Triggers." + } + }, + "type": "object" + }, "SafeUrlProto": { "description": "Message containing a string that is safe to use in URL contexts in DOM APIs and HTML documents, where the URL context does not refer to a resource that loads code.", "id": "SafeUrlProto", @@ -14510,6 +15715,40 @@ }, "type": "object" }, + "SessionContext": { + "id": "SessionContext", + "properties": { + "authTime": { + "description": "Time at which this activity's session was authenticated, in seconds since the epoch.", + "format": "int64", + "type": "string" + }, + "delegateUserId": { + "description": "Gaia ID of the authenticated user when delegate access is active. In such sessions the main gaia ID is that of the delegator, i.e. the account being accessed.", + "format": "int64", + "type": "string" + }, + "dusi": { + "description": "Device User Session ID, see go/dusi.", + "type": "string" + }, + "imapSessionContext": { + "$ref": "ImapSessionContext", + "description": "Imap session context for Bond/Gmail integration" + }, + "oauthLoginId": { + "description": "OAuth login ID.", + "format": "int32", + "type": "integer" + }, + "oauthProjectId": { + "description": "The devconsole project ID of the developer who authenticated with OAuth.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, "SessionEvent": { "description": "A session event is something that happens to the streaming session in a conference.", "id": "SessionEvent", @@ -15512,6 +16751,79 @@ }, "type": "object" }, + "ThreadKeySet": { + "description": "The ThreadKey was set on some (subset of the) messages in this thread.", + "id": "ThreadKeySet", + "properties": { + "messageKeys": { + "description": "Messages on which the thread_key was changed.", + "items": { + "$ref": "MultiKey" + }, + "type": "array" + }, + "newThreadKey": { + "$ref": "MultiKey", + "description": "The new thread_key for this thread" + } + }, + "type": "object" + }, + "ThreadUpdate": { + "description": "HistoryRecord for changes associated with a thread, namely: MESSAGE_ADDED MESSAGE_DELETED LABEL_ADDED LABEL_REMOVED ATTRIBUTE_SET ATTRIBUTE_REMOVED THREAD_KEY_SET All label_ids refer to the (unchanging) value as defined by the Label.id field in labels.proto. In particular, it is *not* the canonical_name.", + "id": "ThreadUpdate", + "properties": { + "attributeRemoved": { + "$ref": "AttributeRemoved" + }, + "attributeSet": { + "$ref": "AttributeSet" + }, + "labelAdded": { + "$ref": "LabelAdded" + }, + "labelRemoved": { + "$ref": "LabelRemoved" + }, + "lastHistoryRecordId": { + "description": "Indicates the record id of the last operation that modified this thread.", + "format": "uint64", + "type": "string" + }, + "messageAdded": { + "$ref": "MessageAdded" + }, + "messageDeleted": { + "$ref": "MessageDeleted" + }, + "originalThreadKey": { + "$ref": "MultiKey", + "description": "The first non-empty thread-key on any message in the thread (including deleted messages). This field has been introduced to maintain backward compatibility for clients that are not subthread aware." + }, + "preState": { + "description": "The PreStates of all messages before the transaction. These are suppressed if the client requested that prestates not be included in the output of the GetHistoryRequest.", + "items": { + "$ref": "PreState" + }, + "type": "array" + }, + "threadKey": { + "$ref": "MultiKey", + "description": "Affected thread" + }, + "threadKeySet": { + "$ref": "ThreadKeySet" + }, + "threadLocator": { + "description": "Thread PLID", + "type": "string" + }, + "topicStateUpdate": { + "$ref": "TopicStateUpdate" + } + }, + "type": "object" + }, "TimestampOperatorOptions": { "description": "Used to provide a search operator for timestamp properties. This is optional. Search operators let users restrict the query to specific fields relevant to the type of item being searched.", "id": "TimestampOperatorOptions", @@ -15616,6 +16928,63 @@ }, "type": "object" }, + "TopicState": { + "description": "State of an topic thread as maintained within Tingle.", + "id": "TopicState", + "properties": { + "labelIdMessageCount": { + "additionalProperties": { + "format": "int32", + "type": "integer" + }, + "description": "Map of label => count of topic constituent messages with label These only contain counts of labels that are relevant for topic normalization/denormalization. Eg. If a topic thread has 5 constituents, 4 of which are in inbox, this will contain ^i => 4. Some labels of interest are archive, inbox, trash, spam, etc.", + "type": "object" + }, + "numConstituents": { + "description": "Number of constituents for this entity.", + "format": "int32", + "type": "integer" + } + }, + "type": "object" + }, + "TopicStateUpdate": { + "id": "TopicStateUpdate", + "properties": { + "topicState": { + "$ref": "TopicState" + } + }, + "type": "object" + }, + "TransactionContext": { + "description": "Storage information pertaining to the transaction with which a HistoryRecord is associated.", + "id": "TransactionContext", + "properties": { + "endingRecordId": { + "description": "The last HistoryRecord of the transaction. Note that this may correspond to a record that is filtered by Tingle (and thus not returned to the client). See http://b/9513464.", + "format": "uint64", + "type": "string" + }, + "startingRecordId": { + "description": "The first HistoryRecord of the transaction. Note that this may be a record of type INTERNAL.", + "format": "uint64", + "type": "string" + }, + "writeTimestampUs": { + "description": "The microsecond timestamp of the transaction.", + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "TransactionDebugInfo": { + "description": "HistoryRecord for debug info associated with the transaction, namely: TXN_DEBUG_INFO TODO(b/143845917) This is a short-term workaround for unblocking fusebox writes migration. Clean up the code or land a long-term solution after the rollout. go/diff-to-historyrecord", + "id": "TransactionDebugInfo", + "properties": {}, + "type": "object" + }, "TranscriptionSessionInfo": { "description": "Information about a transcription session.", "id": "TranscriptionSessionInfo", @@ -15637,6 +17006,200 @@ "properties": {}, "type": "object" }, + "Trigger": { + "id": "Trigger", + "properties": { + "actionType": { + "description": "Each dispatcher should use an enum to for the actions that it supports. If a dispatcher has only one action, this does not need to be set. (It can be expanded later, defining the default behaviour as type 0.) For purposes such as batching, the type of a trigger is (dispatcher, action_type).", + "format": "uint32", + "type": "integer" + }, + "batchTimeUs": { + "description": "Maximum possible delay in micros that can be tolerated so triggers can be batched, which makes processing more efficient compared to firing triggers individually. Note that the actual fire time will be somewhere in the timerange interval [fire_time_us, fire_time_us + batch_time_us).", + "format": "int64", + "type": "string" + }, + "dispatchId": { + "description": "Must be set for DISPATCHER_STUBBY_DISPATCHER.", + "format": "uint32", + "type": "integer" + }, + "dispatcher": { + "description": "Which server should interpret action_type.", + "enum": [ + "DISPATCHER_COPROC", + "DISPATCHER_JOBSETTED_PRIMARY", + "DISPATCHER_STRATUS", + "DISPATCHER_TASKS_SERVER", + "DISPATCHER_STUBBY_DISPATCHER", + "DISPATCHER_CS" + ], + "enumDescriptions": [ + "Replace ACTION_INVOKE_X; the CS and Stratus are no longer limited to a single type of action. Each additional remote client should be defined here.", + "", + "", + "", + "", + "" + ], + "type": "string" + }, + "fireTimeUs": { + "description": "Earliest time to fire at in microseconds. The actual time that the trigger will fire will be in the timerange: [fire_time_us, fire_time_us + batch_time_us).", + "format": "int64", + "type": "string" + }, + "jobsettedServerSpec": { + "$ref": "JobsettedServerSpec", + "description": "Must be set for DISPATCHER_JOBSETTED_PRIMARY." + }, + "key": { + "description": "The trigger key, if applicable.", + "type": "string" + }, + "rpcOptions": { + "$ref": "RpcOptions" + }, + "sliceFireTimeUs": { + "description": "The slice_fire_time_us is automatically computed and stored as part of the trigger write. It represents the exact fire time at which the trigger will be queued to fire and will satisfy fire_time_us < slice_fire_time_us <= fire_time_us + batch_time_us Triggers have an index row in the slice trigger index with the row prefix matching this time. Note that this field is internal to gmail_cp and is ignored if set by external clients when adding / updating triggers.", + "format": "int64", + "type": "string" + }, + "triggerAction": { + "$ref": "TriggerAction", + "description": "Trigger action to perform. This should always be set." + }, + "triggerKey": { + "$ref": "TriggerKey", + "description": "The TriggerKey will uniquely determine a trigger within a given context. A context is a single message for message triggers or a single account for account triggers." + } + }, + "type": "object" + }, + "TriggerAction": { + "id": "TriggerAction", + "properties": { + "action": { + "enum": [ + "ACTION_NONE", + "ACTION_DELETE", + "ACTION_CREATE_NEW_TRIGGER", + "ACTION_MESSAGE_EXPUNGE", + "ACTION_RETENTION_POLICY_UPDATE", + "ACTION_UPDATE_ICEBOX_MODEL", + "ACTION_INVOKE_CS", + "ACTION_INVOKE_STRATUS", + "ACTION_PDH_EXPUNGE", + "ACTION_QUERY_RETENTION", + "ACTION_INVOKE_JOBSETTED_PRIMARY", + "ACTION_INVOKE_TASKS_SERVER", + "ACTION_INVOKE_PUBLISHER", + "ACTION_INVOKE_OBSERVER", + "ACTION_PUSH_HISTORY_TO_PDH", + "ACTION_INVOKE_STUBBY_DISPATCHER", + "ACTION_PDH_BACKFILL", + "ACTION_MESSAGE_UNDELETE", + "ACTION_VAULT_END_USER_ACCESS", + "ACTION_INVOKE_GROUPS", + "ACTION_ACCOUNT_INITIALIZATION", + "ACTION_INVOKE_OBSERVER_WIPEOUT", + "ACTION_SERVICE_REMOVED_MESSAGE_EXPUNGE", + "ACTION_EVERCLEAR_EXPUNGE", + "ACTION_INVOKE_SMIME_CERTIFICATE_ISSUER", + "ACTION_GROUPS_QUERY_RETENTION", + "ACTION_INVOKE_SATELLITE_BACKUP", + "ACTION_INVOKE_DEBUG_LOG", + "ACTION_PREFERENCE_CLEANUP", + "ACTION_CARIBOU_DATA_RETENTION", + "ACTION_HISTORY_CLEANUP", + "ACTION_ITEM_BULK_RELABEL", + "ACTION_INVOKE_SATELLITE_IMAGE_PROCESSING", + "ACTION_CARIBOU_DATA_RETENTION_DIFF", + "ACTION_RELEVANCY_SCORE_BACKFILL", + "ACTION_PDH_PUSH_NOTIFICATION_BACKFILL", + "ACTION_AUTO_SAVE_DRAFT_EXPUNGE" + ], + "enumDescriptions": [ + "", + "No-op", + "No-op", + "This action begins the message expunge process. It will trigger a purge attempt for all messages that have this trigger.", + "When this trigger fires, the current retention policy will be loaded from the policy management system and stored into the preference cache (if necessary). This will also create new expunge triggers if necessary.", + "When this trigger fires, the message should be used to update the user's importance model. See http://go/io-tingle for more details.", + "Sends the trigger to the master Caribou server via the Stubby TriggerHandlerService interface (defined in caribou/coproc/proto/trigger_handler.proto). The trigger is handled at fire time in the account's primary replica, and only in non-primary replicas after a delay.", + "Similar to ACTION_INVOKE_CS, but instead of sending the trigger to the master Caribou server, sends it to a Stratus server that also implements the TriggerHandlerService. This Stratus server is specified via FLAGS_triggers_stratus_server_address. The trigger is handled at fire time in the account's primary replica, and only in non-primary replicas after a delay.", + "This action begins the message's PDH expunge. It will trigger a expunge (from pdh) attempt for all messages that have this trigger.", + "When this trigger fires, based on the latest retention policy: 1. messages that need to be deleted will be deleted through the CS trigger handler 2. ^deleted messages that need to be expunged will be expunged", + "Similar to ACTION_INVOKE_CS, but instead of sending the trigger to the master Caribou server, sends it to a jobsetted server in the user's master jobset using the consistent-hash homing algorithm. The jobsetted_server_spec must be specified when using this TriggerAction.", + "Send the trigger to a Tasks server that implements the TriggerHandlerService. Dispatched via GSLB target specified by FLAGS_triggers_tasks_server_address.", + "Send the trigger to a SmartMail Publisher server that implements the TriggerHandlerService. Dispatched via GSLB target specified by FLAGS_triggers_publisher_server_address.", + "Send the trigger to an Observer server that implements the TriggerHandlerService. Dispatched via GSLB target specified by FLAGS_triggers_observer_server_address.", + "Push a set of history records to PDH.", + "Send the trigger to the stubby dispatcher, which routes the RPC using the value of Trigger.dispatch_id as the RoutingInfo.extension_tag field. Dispatched via the GSLB target specified by FLAGS_triggers_stubby_dispatcher_address.", + "Backfills a set of records from an account and pushes them to PDH.", + "Move messages from ^deleted to ^all. This trigger will only undelete messages that were deleted before the fire time of the trigger. Also, messages whose blobs are already deleted will not be undeleted. This is an account trigger.", + "This trigger will undelete messages that were ^deleted arbitrarily long in the past and a trash label will be applied to these undeleted messages. This is an account trigger that will be written when the Vault admin enables end user access for the Vault customer. This trigger shares its implementation with the ACTION_MESSAGE_UNDELETE trigger.", + "Send the trigger to a groups server that implements the TriggerHandlerService. Dispatched via GSLB target specified by FLAGS_triggers_groups_server_address.", + "This trigger will be executed once per newly created account. It will be created as part of the first transaction written to the account. The trigger can also be written as part of an SVF in case we want to re-initialize every account.", + "Send the trigger to an Observer server that implements the TriggerHandlerService for wipeout purpose. Dispatched via GSLB target specified by FLAGS_triggers_observer_server_address. It behaves differently from the invoke observer trigger (ACTION_INVOKE_OBSERVER) and should be batched separately. Tingle always fires this kind of action trigger for ^deleted messages.", + "Begins the message expunge similar to ACTION_MESSAGE_EXPUNGE but doesn't check if the message was deleted at least 30 days back. To be used ONLY for service removal. See go/gmail-service-removal for more details.", + "Sends RPC to everclear for the message expunge.", + "Send the trigger to the S/MIME certificate issuer server. Dispatched via the GSLB target specified by FLAGS_triggers_smime_certificate_issuer_server_address.", + "The retention trigger that will be written to implement Groups retention.", + "Dispatches the permanent backup trigger to Satellite through Stubby dispatcher.", + "Process the debug log trigger by adding message body before dispatching to the Caribou Server through Stubby Dispatcher.", + "This trigger deletes expired temporary preferences. See go/tingle-temp-prefs for more details.", + "Similar to ACTION_QUERY_RETENTION but uses the MessageRetention policies to trash/delete the messages: cs/caribou/base/lib/proto/data_retention.proto .", + "This trigger deletes expired HistoryRecords. See go/history-record-cleanup for more details.", + "This trigger relabels messages asynchronously. See go/fusebox-bulk-api for more details.", + "Dispatches the image processing trigger to Satellite through Stubby dispatcher. See go/gmail-photo-sharing for details.", + "Trigger for executing comparison logic between the output of ApplyDataRetention idle task and CaribouDataRetention trigger.", + "Trigger for backfill relevancy score. see go/gmail-relevancy-scoring-write for detail.", + "Trigger to backfill gaps left by pdh pushed via push notification. see go/tingle-moonshine-push-v2", + "Begins the message expunge similar to ACTION_MESSAGE_EXPUNGE but fires within one day. To be used ONLY for auto save drafts. See go/faster-auto-save-draft-deletion for more details." + ], + "type": "string" + }, + "data": { + "description": "Clients should use extensions on the Trigger message instead.", + "format": "byte", + "type": "string" + }, + "dataInt": { + "format": "int64", + "type": "string" + } + }, + "type": "object" + }, + "TriggerKey": { + "description": "A TriggerKey (type + instance_id) uniquely identifies a trigger within a message for a message-trigger and within an account for an account-trigger.", + "id": "TriggerKey", + "properties": { + "instanceId": { + "description": "Identifier to distinguish multiple Triggers of the same type (per message or per account).", + "type": "string" + }, + "type": { + "description": "A non-empty string that identifies the type of Trigger. Triggers of the same type may be batched together. The universe of values for the type field should be finite as it is used as a stats key.", + "type": "string" + } + }, + "type": "object" + }, + "Triggers": { + "id": "Triggers", + "properties": { + "triggers": { + "description": "A list of triggers.", + "items": { + "$ref": "Trigger" + }, + "type": "array" + } + }, + "type": "object" + }, "TrustedResourceUrlProto": { "description": "Message containing a string that is safe to use in all URL contexts in DOM APIs and HTML documents; even where the referred-to resource is interpreted as code, e.g., as the src of a script element.", "id": "TrustedResourceUrlProto", @@ -15920,6 +17483,11 @@ "$ref": "AppsDynamiteSharedDlpMetricsMetadata", "description": "The metrics metadata of the Data Loss Prevention attachment scan." }, + "latestVirusScanTimestamp": { + "description": "The timestamp of the most recent virus scan completed (in microseconds).", + "format": "int64", + "type": "string" + }, "localId": { "description": "A copy of the LocalId in Annotation. This field is supposed to be filled by server only.", "type": "string"