Skip to content

Commit badabdc

Browse files
Google APIscopybara-github
authored andcommitted
feat: add generative_summary and area_summary for place summaries
feat: add `contextual_contents` field for contextual search results docs: `included_primary_types` supports type collections `(regions)` and `(cities)` Introduces Place summaries and Contextual Search Results features. PiperOrigin-RevId: 634816526
1 parent a07bf82 commit badabdc

6 files changed

Lines changed: 278 additions & 7 deletions

File tree

google/maps/places/v1/BUILD.bazel

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ package(default_visibility = ["//visibility:public"])
1717
##############################################################################
1818
# Common
1919
##############################################################################
20-
load("@rules_proto//proto:defs.bzl", "proto_library")
20+
# buildifier: disable=same-origin-load
2121
load("@com_google_googleapis_imports//:imports.bzl", "proto_library_with_info")
22+
load("@rules_proto//proto:defs.bzl", "proto_library")
2223
load(
2324
"@com_google_googleapis_imports//:imports.bzl",
2425
"cc_grpc_library",
@@ -55,12 +56,15 @@ proto_library(
5556
name = "places_proto",
5657
srcs = [
5758
"attribution.proto",
59+
"content_block.proto",
60+
"contextual_content.proto",
5861
"ev_charging.proto",
5962
"fuel_options.proto",
6063
"geometry.proto",
6164
"photo.proto",
6265
"place.proto",
6366
"places_service.proto",
67+
"reference.proto",
6468
"review.proto",
6569
],
6670
deps = [
@@ -228,7 +232,7 @@ py_gapic_library(
228232
service_yaml = "places_v1.yaml",
229233
transport = "grpc+rest",
230234
deps = [
231-
":viewport"
235+
":viewport"
232236
],
233237
)
234238

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Copyright 2024 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.maps.places.v1;
18+
19+
import "google/maps/places/v1/reference.proto";
20+
import "google/type/localized_text.proto";
21+
22+
option cc_enable_arenas = true;
23+
option csharp_namespace = "Google.Maps.Places.V1";
24+
option go_package = "cloud.google.com/go/maps/places/apiv1/placespb;placespb";
25+
option java_multiple_files = true;
26+
option java_outer_classname = "ContentBlockProto";
27+
option java_package = "com.google.maps.places.v1";
28+
option objc_class_prefix = "GMPSV1";
29+
option php_namespace = "Google\\Maps\\Places\\V1";
30+
31+
// A block of content that can be served individually.
32+
message ContentBlock {
33+
// The topic of the content, for example "overview" or "restaurant".
34+
string topic = 1;
35+
36+
// Content related to the topic.
37+
google.type.LocalizedText content = 2;
38+
39+
// Experimental: See
40+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
41+
// for more details.
42+
//
43+
// References that are related to this block of content.
44+
References references = 3;
45+
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
// Copyright 2024 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.maps.places.v1;
18+
19+
import "google/maps/places/v1/photo.proto";
20+
import "google/maps/places/v1/review.proto";
21+
22+
option cc_enable_arenas = true;
23+
option csharp_namespace = "Google.Maps.Places.V1";
24+
option go_package = "cloud.google.com/go/maps/places/apiv1/placespb;placespb";
25+
option java_multiple_files = true;
26+
option java_outer_classname = "ContextualContentProto";
27+
option java_package = "com.google.maps.places.v1";
28+
option objc_class_prefix = "GMPSV1";
29+
option php_namespace = "Google\\Maps\\Places\\V1";
30+
31+
// Experimental: See
32+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
33+
// for more details.
34+
//
35+
// Content that is contextual to the place query.
36+
message ContextualContent {
37+
// Experimental: See
38+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
39+
// for more details.
40+
//
41+
// Justifications for the place. Justifications answers the question of why a
42+
// place could interest an end user.
43+
message Justification {
44+
// Experimental: See
45+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
46+
// for more details.
47+
//
48+
// User review justifications. This highlights a section of the user review
49+
// that would interest an end user. For instance, if the search query is
50+
// "firewood pizza", the review justification highlights the text relevant
51+
// to the search query.
52+
message ReviewJustification {
53+
// The text highlighted by the justification. This is a subset of the
54+
// review itself. The exact word to highlight is marked by the
55+
// HighlightedTextRange. There could be several words in the text being
56+
// highlighted.
57+
message HighlightedText {
58+
// The range of highlighted text.
59+
message HighlightedTextRange {
60+
int32 start_index = 1;
61+
62+
int32 end_index = 2;
63+
}
64+
65+
string text = 1;
66+
67+
// The list of the ranges of the highlighted text.
68+
repeated HighlightedTextRange highlighted_text_ranges = 2;
69+
}
70+
71+
HighlightedText highlighted_text = 1;
72+
73+
// The review that the highlighted text is generated from.
74+
Review review = 2;
75+
}
76+
77+
// Experimental: See
78+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
79+
// for more details.
80+
// BusinessAvailabilityAttributes justifications. This shows some attributes
81+
// a business has that could interest an end user.
82+
message BusinessAvailabilityAttributesJustification {
83+
// If a place provides takeout.
84+
bool takeout = 1;
85+
86+
// If a place provides delivery.
87+
bool delivery = 2;
88+
89+
// If a place provides dine-in.
90+
bool dine_in = 3;
91+
}
92+
93+
oneof justification {
94+
// Experimental: See
95+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
96+
// for more details.
97+
ReviewJustification review_justification = 1;
98+
99+
// Experimental: See
100+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
101+
// for more details.
102+
BusinessAvailabilityAttributesJustification
103+
business_availability_attributes_justification = 2;
104+
}
105+
}
106+
107+
// List of reviews about this place, contexual to the place query.
108+
repeated Review reviews = 1;
109+
110+
// Information (including references) about photos of this place, contexual to
111+
// the place query.
112+
repeated Photo photos = 2;
113+
114+
// Experimental: See
115+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
116+
// for more details.
117+
//
118+
// Justifications for the place.
119+
repeated Justification justifications = 3;
120+
}

google/maps/places/v1/place.proto

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@ package google.maps.places.v1;
1818

1919
import "google/api/resource.proto";
2020
import "google/geo/type/viewport.proto";
21+
import "google/maps/places/v1/content_block.proto";
2122
import "google/maps/places/v1/ev_charging.proto";
2223
import "google/maps/places/v1/fuel_options.proto";
2324
import "google/maps/places/v1/photo.proto";
25+
import "google/maps/places/v1/reference.proto";
2426
import "google/maps/places/v1/review.proto";
2527
import "google/type/date.proto";
2628
import "google/type/latlng.proto";
@@ -283,6 +285,33 @@ message Place {
283285
optional bool wheelchair_accessible_seating = 4;
284286
}
285287

288+
// Experimental: See
289+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
290+
// for more details.
291+
//
292+
// AI-generated summary of the place.
293+
message GenerativeSummary {
294+
// The overview of the place.
295+
google.type.LocalizedText overview = 1;
296+
297+
// The detailed description of the place.
298+
google.type.LocalizedText description = 2;
299+
300+
// References that are used to generate the summary description.
301+
References references = 3;
302+
}
303+
304+
// Experimental: See
305+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
306+
// for more details.
307+
//
308+
// AI-generated summary of the area that the place is in.
309+
message AreaSummary {
310+
// Content blocks that compose the area summary. Each block has a separate
311+
// topic about the area.
312+
repeated ContentBlock content_blocks = 4;
313+
}
314+
286315
// This Place's resource name, in `places/{place_id}` format. Can be used to
287316
// look up the Place.
288317
string name = 1;
@@ -517,6 +546,20 @@ message Place {
517546

518547
// Information of ev charging options.
519548
EVChargeOptions ev_charge_options = 79;
549+
550+
// Experimental: See
551+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
552+
// for more details.
553+
//
554+
// AI-generated summary of the place.
555+
GenerativeSummary generative_summary = 80;
556+
557+
// Experimental: See
558+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
559+
// for more details.
560+
//
561+
// AI-generated summary of the area that the place is in.
562+
AreaSummary area_summary = 81;
520563
}
521564

522565
// Price level of the place.

google/maps/places/v1/places_service.proto

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import "google/api/client.proto";
2121
import "google/api/field_behavior.proto";
2222
import "google/api/resource.proto";
2323
import "google/geo/type/viewport.proto";
24+
import "google/maps/places/v1/contextual_content.proto";
2425
import "google/maps/places/v1/ev_charging.proto";
2526
import "google/maps/places/v1/geometry.proto";
2627
import "google/maps/places/v1/place.proto";
@@ -371,6 +372,19 @@ message SearchTextRequest {
371372
message SearchTextResponse {
372373
// A list of places that meet the user's text search criteria.
373374
repeated Place places = 1;
375+
376+
// Experimental: See
377+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
378+
// for more details.
379+
//
380+
// A list of contextual contents where each entry associates to the
381+
// corresponding place in the same index in the places field. The contents
382+
// that are relevant to the `text_query` in the request are preferred. If the
383+
// contextual content is not available for one of the places, it will return
384+
// non-contextual content. It will be empty only when the content is
385+
// unavailable for this place. This list should have as many entries as the
386+
// list of places if requested.
387+
repeated ContextualContent contextual_contents = 3;
374388
}
375389

376390
// Request for fetching a photo of a place using a photo resource name.
@@ -542,11 +556,11 @@ message AutocompletePlacesRequest {
542556
[(google.api.field_behavior) = OPTIONAL];
543557

544558
// Optional. Included primary Place type (for example, "restaurant" or
545-
// "gas_station") from
546-
// https://developers.google.com/maps/documentation/places/web-service/place-types.
547-
// A Place is only returned if its primary type is included in this list. Up
548-
// to 5 values can be specified. If no types are specified, all Place types
549-
// are returned.
559+
// "gas_station") in Place Types
560+
// (https://developers.google.com/maps/documentation/places/web-service/place-types),
561+
// or only `(regions)`, or only `(cities)`. A Place is only returned if its
562+
// primary type is included in this list. Up to 5 values can be specified. If
563+
// no types are specified, all Place types are returned.
550564
repeated string included_primary_types = 4
551565
[(google.api.field_behavior) = OPTIONAL];
552566

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Copyright 2024 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.maps.places.v1;
18+
19+
import "google/api/resource.proto";
20+
import "google/maps/places/v1/review.proto";
21+
22+
option cc_enable_arenas = true;
23+
option csharp_namespace = "Google.Maps.Places.V1";
24+
option go_package = "cloud.google.com/go/maps/places/apiv1/placespb;placespb";
25+
option java_multiple_files = true;
26+
option java_outer_classname = "ReferenceProto";
27+
option java_package = "com.google.maps.places.v1";
28+
option objc_class_prefix = "GMPSV1";
29+
option php_namespace = "Google\\Maps\\Places\\V1";
30+
31+
// Experimental: See
32+
// https://developers.google.com/maps/documentation/places/web-service/experimental/places-generative
33+
// for more details.
34+
//
35+
// Reference that the generative content is related to.
36+
message References {
37+
// Reviews that serve as references.
38+
repeated Review reviews = 1;
39+
40+
// The list of resource names of the referenced places. This name can be used
41+
// in other APIs that accept Place resource names.
42+
repeated string places = 2 [
43+
(google.api.resource_reference) = { type: "places.googleapis.com/Place" }
44+
];
45+
}

0 commit comments

Comments
 (0)