Skip to content

Commit 3d20b39

Browse files
Google APIscopybara-github
Google APIs
authored andcommitted
feat: add analytics service
PiperOrigin-RevId: 599976565
1 parent fa8b417 commit 3d20b39

File tree

5 files changed

+219
-73
lines changed

5 files changed

+219
-73
lines changed

google/cloud/retail/v2beta/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
2121
proto_library(
2222
name = "retail_proto",
2323
srcs = [
24+
"analytics_service.proto",
2425
"catalog.proto",
2526
"catalog_service.proto",
2627
"common.proto",
@@ -111,6 +112,8 @@ java_gapic_library(
111112
java_gapic_test(
112113
name = "retail_java_gapic_test_suite",
113114
test_classes = [
115+
"com.google.cloud.retail.v2beta.AnalyticsServiceClientHttpJsonTest",
116+
"com.google.cloud.retail.v2beta.AnalyticsServiceClientTest",
114117
"com.google.cloud.retail.v2beta.CatalogServiceClientHttpJsonTest",
115118
"com.google.cloud.retail.v2beta.CatalogServiceClientTest",
116119
"com.google.cloud.retail.v2beta.CompletionServiceClientHttpJsonTest",
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// Copyright 2021 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+
15+
syntax = "proto3";
16+
17+
package google.cloud.retail.v2beta;
18+
19+
import "google/api/annotations.proto";
20+
import "google/api/client.proto";
21+
import "google/api/field_behavior.proto";
22+
import "google/api/resource.proto";
23+
import "google/cloud/retail/v2beta/export_config.proto";
24+
import "google/longrunning/operations.proto";
25+
26+
option csharp_namespace = "Google.Cloud.Retail.V2Beta";
27+
option go_package = "cloud.google.com/go/retail/apiv2beta/retailpb;retailpb";
28+
option java_multiple_files = true;
29+
option java_outer_classname = "AnalyticsServiceProto";
30+
option java_package = "com.google.cloud.retail.v2beta";
31+
option objc_class_prefix = "RETAIL";
32+
option php_namespace = "Google\\Cloud\\Retail\\V2beta";
33+
option ruby_package = "Google::Cloud::Retail::V2beta";
34+
35+
// Service for managing & accessing retail search business metric.
36+
// Retail recommendation business metric is currently not available.
37+
service AnalyticsService {
38+
option (google.api.default_host) = "retail.googleapis.com";
39+
option (google.api.oauth_scopes) =
40+
"https://www.googleapis.com/auth/cloud-platform";
41+
42+
// Exports analytics metrics.
43+
//
44+
// `Operation.response` is of type `ExportAnalyticsMetricsResponse`.
45+
// `Operation.metadata` is of type `ExportMetadata`.
46+
rpc ExportAnalyticsMetrics(ExportAnalyticsMetricsRequest)
47+
returns (google.longrunning.Operation) {
48+
option (google.api.http) = {
49+
post: "/v2beta/{catalog=projects/*/locations/*/catalogs/*}:exportAnalyticsMetrics"
50+
body: "*"
51+
};
52+
option (google.longrunning.operation_info) = {
53+
response_type: "google.cloud.retail.v2beta.ExportAnalyticsMetricsResponse"
54+
metadata_type: "google.cloud.retail.v2beta.ExportMetadata"
55+
};
56+
}
57+
}

google/cloud/retail/v2beta/export_config.proto

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,45 @@ option objc_class_prefix = "RETAIL";
3030
option php_namespace = "Google\\Cloud\\Retail\\V2beta";
3131
option ruby_package = "Google::Cloud::Retail::V2beta";
3232

33+
// The output configuration setting.
34+
message OutputConfig {
35+
// The Google Cloud Storage output destination configuration.
36+
message GcsDestination {
37+
// Required. The output uri prefix for saving output data to json files.
38+
// Some mapping examples are as follows:
39+
// output_uri_prefix sample output(assuming the object is foo.json)
40+
// ======================== =============================================
41+
// gs://bucket/ gs://bucket/foo.json
42+
// gs://bucket/folder/ gs://bucket/folder/foo.json
43+
// gs://bucket/folder/item_ gs://bucket/folder/item_foo.json
44+
string output_uri_prefix = 1 [(google.api.field_behavior) = REQUIRED];
45+
}
46+
47+
// The BigQuery output destination configuration.
48+
message BigQueryDestination {
49+
// Required. The ID of a BigQuery Dataset.
50+
string dataset_id = 1 [(google.api.field_behavior) = REQUIRED];
51+
52+
// Required. The prefix of exported BigQuery tables.
53+
string table_id_prefix = 2 [(google.api.field_behavior) = REQUIRED];
54+
55+
// Required. Describes the table type. The following values are supported:
56+
//
57+
// * `table`: A BigQuery native table.
58+
// * `view`: A virtual table defined by a SQL query.
59+
string table_type = 3 [(google.api.field_behavior) = REQUIRED];
60+
}
61+
62+
// The configuration of destination for holding output data.
63+
oneof destination {
64+
// The Google Cloud Storage location where the output is to be written to.
65+
GcsDestination gcs_destination = 1;
66+
67+
// The BigQuery location where the output is to be written to.
68+
BigQueryDestination bigquery_destination = 2;
69+
}
70+
}
71+
3372
// Configuration of destination for Export related errors.
3473
message ExportErrorsConfig {
3574
// Required. Errors destination.
@@ -42,6 +81,35 @@ message ExportErrorsConfig {
4281
}
4382
}
4483

84+
// Request message for the `ExportAnalyticsMetrics` method.
85+
message ExportAnalyticsMetricsRequest {
86+
// Required. Full resource name of the parent catalog.
87+
// Expected format: `projects/*/locations/*/catalogs/*`
88+
string catalog = 1 [(google.api.field_behavior) = REQUIRED];
89+
90+
// Required. The output location of the data.
91+
OutputConfig output_config = 2 [(google.api.field_behavior) = REQUIRED];
92+
93+
// A filtering expression to specify restrictions on returned metrics.
94+
// The expression is a sequence of terms. Each term applies a restriction to
95+
// the returned metrics. Use this expression to restrict results to a
96+
// specific time range.
97+
//
98+
// Currently we expect only one types of fields:
99+
//
100+
// * `timestamp`: This can be specified twice, once with a
101+
// less than operator and once with a greater than operator. The
102+
// `timestamp` restriction should result in one, contiguous, valid,
103+
// `timestamp` range.
104+
//
105+
// Some examples of valid filters expressions:
106+
//
107+
// * Example 1: `timestamp > "2012-04-23T18:25:43.511Z"
108+
// timestamp < "2012-04-23T18:30:43.511Z"`
109+
// * Example 2: `timestamp > "2012-04-23T18:25:43.511Z"`
110+
string filter = 3;
111+
}
112+
45113
// Metadata related to the progress of the Export operation. This is
46114
// returned by the google.longrunning.Operation.metadata field.
47115
message ExportMetadata {
@@ -81,6 +149,20 @@ message ExportUserEventsResponse {
81149
OutputResult output_result = 3;
82150
}
83151

152+
// Response of the ExportAnalyticsMetricsRequest. If the long running
153+
// operation was successful, then this message is returned by the
154+
// google.longrunning.Operations.response field if the operation was successful.
155+
message ExportAnalyticsMetricsResponse {
156+
// A sample of errors encountered while processing the request.
157+
repeated google.rpc.Status error_samples = 1;
158+
159+
// This field is never set.
160+
ExportErrorsConfig errors_config = 2;
161+
162+
// Output result indicating where the data were exported to.
163+
OutputResult output_result = 3;
164+
}
165+
84166
// Output result that stores the information about where the exported data is
85167
// stored.
86168
message OutputResult {
Lines changed: 71 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,44 @@
11
{
2-
"methodConfig": [{
3-
"name": [
4-
{ "service": "google.cloud.retail.v2beta.CatalogService" },
5-
{ "service": "google.cloud.retail.v2beta.CompletionService" },
6-
{ "service": "google.cloud.retail.v2beta.UserEventService" },
7-
{ "service": "google.cloud.retail.v2beta.PredictionService" },
8-
{ "service": "google.cloud.retail.v2beta.SearchService" }
9-
],
10-
"timeout": "5s",
11-
"retryPolicy": {
12-
"initialBackoff": "0.100s",
13-
"maxBackoff": "5s",
14-
"backoffMultiplier": 1.3,
15-
"retryableStatusCodes": [
16-
"UNAVAILABLE",
17-
"DEADLINE_EXCEEDED"
18-
]
19-
}
20-
}, {
21-
"name": [
22-
{ "service": "google.cloud.retail.v2beta.ProductService" },
23-
{
24-
"service": "google.cloud.retail.v2beta.UserEventService",
25-
"method": "PurgeUserEvents"
2+
"methodConfig": [
3+
{
4+
"name": [
5+
{ "service": "google.cloud.retail.v2beta.CatalogService" },
6+
{ "service": "google.cloud.retail.v2beta.CompletionService" },
7+
{ "service": "google.cloud.retail.v2beta.UserEventService" },
8+
{ "service": "google.cloud.retail.v2beta.PredictionService" },
9+
{ "service": "google.cloud.retail.v2beta.SearchService" }
10+
],
11+
"timeout": "5s",
12+
"retryPolicy": {
13+
"initialBackoff": "0.100s",
14+
"maxBackoff": "5s",
15+
"backoffMultiplier": 1.3,
16+
"retryableStatusCodes": ["UNAVAILABLE", "DEADLINE_EXCEEDED"]
2617
}
27-
],
28-
"timeout": "30s",
29-
"retryPolicy": {
30-
"initialBackoff": "0.100s",
31-
"maxBackoff": "30s",
32-
"backoffMultiplier": 1.3,
33-
"retryableStatusCodes": [
34-
"UNAVAILABLE",
35-
"DEADLINE_EXCEEDED"
36-
]
37-
}
38-
}, {
18+
},
19+
{
20+
"name": [
21+
{ "service": "google.cloud.retail.v2beta.ProductService" },
22+
{
23+
"service": "google.cloud.retail.v2beta.UserEventService",
24+
"method": "PurgeUserEvents"
25+
}
26+
],
27+
"timeout": "30s",
28+
"retryPolicy": {
29+
"initialBackoff": "0.100s",
30+
"maxBackoff": "30s",
31+
"backoffMultiplier": 1.3,
32+
"retryableStatusCodes": ["UNAVAILABLE", "DEADLINE_EXCEEDED"]
33+
}
34+
},
35+
{
3936
"name": [
40-
{ "service": "google.cloud.retail.v2alpha.ModelService" }
37+
{
38+
"service": "google.cloud.retail.v2beta.AnalyticsService",
39+
"method": "ExportAnalyticsMetrics"
40+
},
41+
{ "service": "google.cloud.retail.v2beta.ModelService" }
4142
],
4243
"timeout": "60s",
4344
"retryPolicy": {
@@ -46,43 +47,40 @@
4647
"backoffMultiplier": 1.3,
4748
"retryableStatusCodes": ["UNAVAILABLE", "DEADLINE_EXCEEDED"]
4849
}
49-
}, {
50-
"name": [
51-
{
52-
"service": "google.longrunning.Operations",
53-
"method": "ListOperations"
54-
},
55-
{
56-
"service": "google.cloud.retail.v2beta.ProductService",
57-
"method": "ImportProducts"
50+
},
51+
{
52+
"name": [
53+
{
54+
"service": "google.longrunning.Operations",
55+
"method": "ListOperations"
56+
},
57+
{
58+
"service": "google.cloud.retail.v2beta.ProductService",
59+
"method": "ImportProducts"
60+
}
61+
],
62+
"timeout": "300s",
63+
"retryPolicy": {
64+
"initialBackoff": "0.100s",
65+
"maxBackoff": "300s",
66+
"backoffMultiplier": 1.3,
67+
"retryableStatusCodes": ["UNAVAILABLE", "DEADLINE_EXCEEDED"]
5868
}
59-
],
60-
"timeout": "300s",
61-
"retryPolicy": {
62-
"initialBackoff": "0.100s",
63-
"maxBackoff": "300s",
64-
"backoffMultiplier": 1.3,
65-
"retryableStatusCodes": [
66-
"UNAVAILABLE",
67-
"DEADLINE_EXCEEDED"
68-
]
69-
}
70-
}, {
71-
"name": [
72-
{
73-
"service": "google.cloud.retail.v2beta.UserEventService",
74-
"method": "ImportUserEvents"
69+
},
70+
{
71+
"name": [
72+
{
73+
"service": "google.cloud.retail.v2beta.UserEventService",
74+
"method": "ImportUserEvents"
75+
}
76+
],
77+
"timeout": "600s",
78+
"retryPolicy": {
79+
"initialBackoff": "0.100s",
80+
"maxBackoff": "300s",
81+
"backoffMultiplier": 1.3,
82+
"retryableStatusCodes": ["UNAVAILABLE", "DEADLINE_EXCEEDED"]
7583
}
76-
],
77-
"timeout": "600s",
78-
"retryPolicy": {
79-
"initialBackoff": "0.100s",
80-
"maxBackoff": "300s",
81-
"backoffMultiplier": 1.3,
82-
"retryableStatusCodes": [
83-
"UNAVAILABLE",
84-
"DEADLINE_EXCEEDED"
85-
]
8684
}
87-
}]
85+
]
8886
}

google/cloud/retail/v2beta/retail_v2beta.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ title: Retail API
55

66
apis:
77
- name: google.cloud.location.Locations
8+
- name: google.cloud.retail.v2beta.AnalyticsService
89
- name: google.cloud.retail.v2beta.CatalogService
910
- name: google.cloud.retail.v2beta.CompletionService
1011
- name: google.cloud.retail.v2beta.ControlService
@@ -23,6 +24,7 @@ types:
2324
- name: google.cloud.retail.v2beta.AddLocalInventoriesMetadata
2425
- name: google.cloud.retail.v2beta.AddLocalInventoriesResponse
2526
- name: google.cloud.retail.v2beta.CreateModelMetadata
27+
- name: google.cloud.retail.v2beta.ExportAnalyticsMetricsResponse
2628
- name: google.cloud.retail.v2beta.ExportErrorsConfig
2729
- name: google.cloud.retail.v2beta.ExportMetadata
2830
- name: google.cloud.retail.v2beta.ExportProductsResponse
@@ -103,6 +105,10 @@ authentication:
103105
oauth:
104106
canonical_scopes: |-
105107
https://www.googleapis.com/auth/cloud-platform
108+
- selector: google.cloud.retail.v2beta.AnalyticsService.ExportAnalyticsMetrics
109+
oauth:
110+
canonical_scopes: |-
111+
https://www.googleapis.com/auth/cloud-platform
106112
- selector: 'google.cloud.retail.v2beta.CatalogService.*'
107113
oauth:
108114
canonical_scopes: |-

0 commit comments

Comments
 (0)