user_event_service.proto 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. // Copyright 2020 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. syntax = "proto3";
  15. package google.cloud.recommendationengine.v1beta1;
  16. import "google/api/annotations.proto";
  17. import "google/api/field_behavior.proto";
  18. import "google/api/httpbody.proto";
  19. import "google/api/resource.proto";
  20. import "google/cloud/recommendationengine/v1beta1/import.proto";
  21. import "google/cloud/recommendationengine/v1beta1/user_event.proto";
  22. import "google/longrunning/operations.proto";
  23. import "google/protobuf/timestamp.proto";
  24. import "google/type/date.proto";
  25. import "google/api/client.proto";
  26. option csharp_namespace = "Google.Cloud.RecommendationEngine.V1Beta1";
  27. option go_package = "google.golang.org/genproto/googleapis/cloud/recommendationengine/v1beta1;recommendationengine";
  28. option java_multiple_files = true;
  29. option java_package = "com.google.cloud.recommendationengine.v1beta1";
  30. option objc_class_prefix = "RECAI";
  31. option php_namespace = "Google\\Cloud\\RecommendationEngine\\V1beta1";
  32. option ruby_package = "Google::Cloud::RecommendationEngine::V1beta1";
  33. // Service for ingesting end user actions on the customer website.
  34. service UserEventService {
  35. option (google.api.default_host) = "recommendationengine.googleapis.com";
  36. option (google.api.oauth_scopes) =
  37. "https://www.googleapis.com/auth/cloud-platform";
  38. // Writes a single user event.
  39. rpc WriteUserEvent(WriteUserEventRequest) returns (UserEvent) {
  40. option (google.api.http) = {
  41. post: "/v1beta1/{parent=projects/*/locations/*/catalogs/*/eventStores/*}/userEvents:write"
  42. body: "user_event"
  43. };
  44. option (google.api.method_signature) = "parent,user_event";
  45. }
  46. // Writes a single user event from the browser. This uses a GET request to
  47. // due to browser restriction of POST-ing to a 3rd party domain.
  48. //
  49. // This method is used only by the Recommendations AI JavaScript pixel.
  50. // Users should not call this method directly.
  51. rpc CollectUserEvent(CollectUserEventRequest) returns (google.api.HttpBody) {
  52. option (google.api.http) = {
  53. get: "/v1beta1/{parent=projects/*/locations/*/catalogs/*/eventStores/*}/userEvents:collect"
  54. };
  55. option (google.api.method_signature) = "parent,user_event,uri,ets";
  56. }
  57. // Gets a list of user events within a time range, with potential filtering.
  58. rpc ListUserEvents(ListUserEventsRequest) returns (ListUserEventsResponse) {
  59. option (google.api.http) = {
  60. get: "/v1beta1/{parent=projects/*/locations/*/catalogs/*/eventStores/*}/userEvents"
  61. };
  62. option (google.api.method_signature) = "parent,filter";
  63. }
  64. // Deletes permanently all user events specified by the filter provided.
  65. // Depending on the number of events specified by the filter, this operation
  66. // could take hours or days to complete. To test a filter, use the list
  67. // command first.
  68. rpc PurgeUserEvents(PurgeUserEventsRequest)
  69. returns (google.longrunning.Operation) {
  70. option (google.api.http) = {
  71. post: "/v1beta1/{parent=projects/*/locations/*/catalogs/*/eventStores/*}/userEvents:purge"
  72. body: "*"
  73. };
  74. option (google.longrunning.operation_info) = {
  75. response_type: "google.cloud.recommendationengine.v1beta1.PurgeUserEventsResponse"
  76. metadata_type: "google.cloud.recommendationengine.v1beta1.PurgeUserEventsMetadata"
  77. };
  78. option (google.api.method_signature) = "parent,filter,force";
  79. }
  80. // Bulk import of User events. Request processing might be
  81. // synchronous. Events that already exist are skipped.
  82. // Use this method for backfilling historical user events.
  83. //
  84. // Operation.response is of type ImportResponse. Note that it is
  85. // possible for a subset of the items to be successfully inserted.
  86. // Operation.metadata is of type ImportMetadata.
  87. rpc ImportUserEvents(ImportUserEventsRequest)
  88. returns (google.longrunning.Operation) {
  89. option (google.api.http) = {
  90. post: "/v1beta1/{parent=projects/*/locations/*/catalogs/*/eventStores/*}/userEvents:import"
  91. body: "*"
  92. };
  93. option (google.longrunning.operation_info) = {
  94. response_type: "google.cloud.recommendationengine.v1beta1.ImportUserEventsResponse"
  95. metadata_type: "google.cloud.recommendationengine.v1beta1.ImportMetadata"
  96. };
  97. option (google.api.method_signature) =
  98. "parent,request_id,input_config,errors_config";
  99. }
  100. }
  101. // Request message for PurgeUserEvents method.
  102. message PurgeUserEventsRequest {
  103. // Required. The resource name of the event_store under which the events are
  104. // created. The format is
  105. // `projects/${projectId}/locations/global/catalogs/${catalogId}/eventStores/${eventStoreId}`
  106. string parent = 1 [
  107. (google.api.field_behavior) = REQUIRED,
  108. (google.api.resource_reference) = {
  109. type: "recommendationengine.googleapis.com/EventStore"
  110. }
  111. ];
  112. // Required. The filter string to specify the events to be deleted. Empty
  113. // string filter is not allowed. This filter can also be used with
  114. // ListUserEvents API to list events that will be deleted. The eligible fields
  115. // for filtering are:
  116. // * eventType - UserEvent.eventType field of type string.
  117. // * eventTime - in ISO 8601 "zulu" format.
  118. // * visitorId - field of type string. Specifying this will delete all events
  119. // associated with a visitor.
  120. // * userId - field of type string. Specifying this will delete all events
  121. // associated with a user.
  122. // Example 1: Deleting all events in a time range.
  123. // `eventTime > "2012-04-23T18:25:43.511Z" eventTime <
  124. // "2012-04-23T18:30:43.511Z"`
  125. // Example 2: Deleting specific eventType in time range.
  126. // `eventTime > "2012-04-23T18:25:43.511Z" eventType = "detail-page-view"`
  127. // Example 3: Deleting all events for a specific visitor
  128. // `visitorId = visitor1024`
  129. // The filtering fields are assumed to have an implicit AND.
  130. string filter = 2 [(google.api.field_behavior) = REQUIRED];
  131. // Optional. The default value is false. Override this flag to true to
  132. // actually perform the purge. If the field is not set to true, a sampling of
  133. // events to be deleted will be returned.
  134. bool force = 3 [(google.api.field_behavior) = OPTIONAL];
  135. }
  136. // Metadata related to the progress of the PurgeUserEvents operation.
  137. // This will be returned by the google.longrunning.Operation.metadata field.
  138. message PurgeUserEventsMetadata {
  139. // The ID of the request / operation.
  140. string operation_name = 1;
  141. // Operation create time.
  142. google.protobuf.Timestamp create_time = 2;
  143. }
  144. // Response of the PurgeUserEventsRequest. If the long running operation is
  145. // successfully done, then this message is returned by the
  146. // google.longrunning.Operations.response field.
  147. message PurgeUserEventsResponse {
  148. // The total count of events purged as a result of the operation.
  149. int64 purged_events_count = 1;
  150. // A sampling of events deleted (or will be deleted) depending on the `force`
  151. // property in the request. Max of 500 items will be returned.
  152. repeated UserEvent user_events_sample = 2;
  153. }
  154. // Request message for WriteUserEvent method.
  155. message WriteUserEventRequest {
  156. // Required. The parent eventStore resource name, such as
  157. // `projects/1234/locations/global/catalogs/default_catalog/eventStores/default_event_store`.
  158. string parent = 1 [
  159. (google.api.field_behavior) = REQUIRED,
  160. (google.api.resource_reference) = {
  161. type: "recommendationengine.googleapis.com/EventStore"
  162. }
  163. ];
  164. // Required. User event to write.
  165. UserEvent user_event = 2 [(google.api.field_behavior) = REQUIRED];
  166. }
  167. // Request message for CollectUserEvent method.
  168. message CollectUserEventRequest {
  169. // Required. The parent eventStore name, such as
  170. // `projects/1234/locations/global/catalogs/default_catalog/eventStores/default_event_store`.
  171. string parent = 1 [
  172. (google.api.field_behavior) = REQUIRED,
  173. (google.api.resource_reference) = {
  174. type: "recommendationengine.googleapis.com/EventStore"
  175. }
  176. ];
  177. // Required. URL encoded UserEvent proto.
  178. string user_event = 2 [(google.api.field_behavior) = REQUIRED];
  179. // Optional. The url including cgi-parameters but excluding the hash fragment.
  180. // The URL must be truncated to 1.5K bytes to conservatively be under the 2K
  181. // bytes. This is often more useful than the referer url, because many
  182. // browsers only send the domain for 3rd party requests.
  183. string uri = 3 [(google.api.field_behavior) = OPTIONAL];
  184. // Optional. The event timestamp in milliseconds. This prevents browser
  185. // caching of otherwise identical get requests. The name is abbreviated to
  186. // reduce the payload bytes.
  187. int64 ets = 4 [(google.api.field_behavior) = OPTIONAL];
  188. }
  189. // Request message for ListUserEvents method.
  190. message ListUserEventsRequest {
  191. // Required. The parent eventStore resource name, such as
  192. // `projects/*/locations/*/catalogs/default_catalog/eventStores/default_event_store`.
  193. string parent = 1 [
  194. (google.api.field_behavior) = REQUIRED,
  195. (google.api.resource_reference) = {
  196. type: "recommendationengine.googleapis.com/EventStore"
  197. }
  198. ];
  199. // Optional. Maximum number of results to return per page. If zero, the
  200. // service will choose a reasonable default.
  201. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  202. // Optional. The previous ListUserEventsResponse.next_page_token.
  203. string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
  204. // Optional. Filtering expression to specify restrictions over
  205. // returned events. This is a sequence of terms, where each term applies some
  206. // kind of a restriction to the returned user events. Use this expression to
  207. // restrict results to a specific time range, or filter events by eventType.
  208. // eg: eventTime > "2012-04-23T18:25:43.511Z" eventsMissingCatalogItems
  209. // eventTime<"2012-04-23T18:25:43.511Z" eventType=search
  210. //
  211. // We expect only 3 types of fields:
  212. //
  213. // * eventTime: this can be specified a maximum of 2 times, once with a
  214. // less than operator and once with a greater than operator. The
  215. // eventTime restrict should result in one contiguous valid eventTime
  216. // range.
  217. //
  218. // * eventType: only 1 eventType restriction can be specified.
  219. //
  220. // * eventsMissingCatalogItems: specififying this will restrict results
  221. // to events for which catalog items were not found in the catalog. The
  222. // default behavior is to return only those events for which catalog
  223. // items were found.
  224. //
  225. // Some examples of valid filters expressions:
  226. //
  227. // * Example 1: eventTime > "2012-04-23T18:25:43.511Z"
  228. // eventTime < "2012-04-23T18:30:43.511Z"
  229. // * Example 2: eventTime > "2012-04-23T18:25:43.511Z"
  230. // eventType = detail-page-view
  231. // * Example 3: eventsMissingCatalogItems
  232. // eventType = search eventTime < "2018-04-23T18:30:43.511Z"
  233. // * Example 4: eventTime > "2012-04-23T18:25:43.511Z"
  234. // * Example 5: eventType = search
  235. // * Example 6: eventsMissingCatalogItems
  236. string filter = 4 [(google.api.field_behavior) = OPTIONAL];
  237. }
  238. // Response message for ListUserEvents method.
  239. message ListUserEventsResponse {
  240. // The user events.
  241. repeated UserEvent user_events = 1;
  242. // If empty, the list is complete. If nonempty, the token to pass to the next
  243. // request's ListUserEvents.page_token.
  244. string next_page_token = 2;
  245. }