Skip to content

Commit 102d9f9

Browse files
Google APIscopybara-github
authored andcommitted
feat: increase timeout in gRPC service config JSON for all methods to 120 seconds
the field is required feat: deprecate `Product` enum, and add `AccountType` enum as its replacement feat: add destination_references to AudienceMember to support sending audience members to distinct destinations in a single request feat: add `RetrieveRequestStatus` method for retrieving processing results for a given `request_id` feat: add `RequestStatusPerDestination`, `ErrorInfo`, `WarningInfo` and related enums docs: update `customer_match_terms_of_service_status` documentation to clarify when docs: update Destination and ProductAccount comments to reflect the new AccountType enum and account_type field PiperOrigin-RevId: 817354691
1 parent 2778608 commit 102d9f9

12 files changed

+547
-14
lines changed

google/ads/datamanager/v1/BUILD.bazel

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ proto_library(
3333
"event.proto",
3434
"experimental_field.proto",
3535
"ingestion_service.proto",
36+
"match_rate.proto",
37+
"processing_errors.proto",
38+
"request_status_per_destination.proto",
3639
"terms_of_service.proto",
3740
"user_data.proto",
3841
"user_properties.proto",
@@ -124,11 +127,12 @@ load(
124127
"@com_google_googleapis_imports//:imports.bzl",
125128
"go_gapic_assembly_pkg",
126129
"go_gapic_library",
127-
"go_grpc_library",
130+
"go_proto_library",
128131
)
129132

130-
go_grpc_library(
133+
go_proto_library(
131134
name = "datamanager_go_proto",
135+
compilers = ["@io_bazel_rules_go//proto:go_grpc"],
132136
importpath = "google.golang.org/genproto/googleapis/ads/datamanager/v1",
133137
protos = [":datamanager_proto"],
134138
deps = [
@@ -333,7 +337,6 @@ load(
333337

334338
csharp_proto_library(
335339
name = "datamanager_csharp_proto",
336-
extra_opts = [],
337340
deps = [":datamanager_proto"],
338341
)
339342

google/ads/datamanager/v1/audience.proto

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ option ruby_package = "Google::Ads::DataManager::V1";
3030

3131
// The audience member to be operated on.
3232
message AudienceMember {
33+
// Optional. Defines which
34+
// [Destination][google.ads.datamanager.v1.Destination] to send the audience
35+
// member to.
36+
repeated string destination_references = 1
37+
[(google.api.field_behavior) = OPTIONAL];
38+
3339
// The type of identifying data to be operated on.
3440
oneof data {
3541
// User-provided data that identifies the user.

google/ads/datamanager/v1/datamanager_grpc_service_config.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,17 @@
99
{
1010
"service": "google.ads.datamanager.v1.IngestionService",
1111
"method": " RemoveAudienceMembers"
12+
},
13+
{
14+
"service": "google.ads.datamanager.v1.IngestionService",
15+
"method": " IngestEvents"
16+
},
17+
{
18+
"service": "google.ads.datamanager.v1.IngestionService",
19+
"method": " RetrieveRequestStatus"
1220
}
1321
],
14-
"timeout": "60s",
22+
"timeout": "120s",
1523
"retryPolicy": {
1624
"initialBackoff": "5s",
1725
"maxBackoff": "60s",

google/ads/datamanager/v1/destination.proto

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ option ruby_package = "Google::Ads::DataManager::V1";
3131
message Destination {
3232
// Optional. ID for this `Destination` resource, unique within the request.
3333
// Use to reference this `Destination` in the
34-
// [IngestEventsRequest][google.ads.datamanager.v1.IngestEventsRequest].
34+
// [IngestEventsRequest][google.ads.datamanager.v1.IngestEventsRequest] and
35+
// [IngestAudienceMembersRequest][google.ads.datamanager.v1.IngestAudienceMembersRequest].
3536
string reference = 1 [(google.api.field_behavior) = OPTIONAL];
3637

3738
// Optional. The account used to make this API call. To add or remove data
@@ -55,22 +56,52 @@ message Destination {
5556
ProductAccount operating_account = 4 [(google.api.field_behavior) = REQUIRED];
5657

5758
// Required. The object within the product account to ingest into. For
58-
// example, a Google Ads audience ID or a Display & Video 360 audience ID.
59+
// example, a Google Ads audience ID, a Display & Video 360 audience ID or a
60+
// Google Ads conversion action ID.
5961
string product_destination_id = 5 [(google.api.field_behavior) = REQUIRED];
6062
}
6163

6264
// Represents a specific account.
6365
message ProductAccount {
64-
// Required. The product the account belongs to. For example, `GOOGLE_ADS`.
65-
Product product = 1 [(google.api.field_behavior) = REQUIRED];
66+
// Represents Google account types. Used to locate accounts and
67+
// destinations.
68+
enum AccountType {
69+
// Unspecified product. Should never be used.
70+
ACCOUNT_TYPE_UNSPECIFIED = 0;
71+
72+
// Google Ads.
73+
GOOGLE_ADS = 1;
74+
75+
// Display & Video 360 partner.
76+
DISPLAY_VIDEO_PARTNER = 2;
77+
78+
// Display & Video 360 advertiser.
79+
DISPLAY_VIDEO_ADVERTISER = 3;
80+
81+
// Data Partner.
82+
DATA_PARTNER = 4;
83+
}
84+
85+
// Deprecated. Use
86+
// [`account_type`][google.ads.datamanager.v1.ProductAccount.account_type]
87+
// instead.
88+
Product product = 1 [deprecated = true];
6689

6790
// Required. The ID of the account. For example, your Google Ads account ID.
6891
string account_id = 2 [(google.api.field_behavior) = REQUIRED];
92+
93+
// Optional. The type of the account. For example, `GOOGLE_ADS`.
94+
// Either `account_type` or the deprecated `product` is required.
95+
// If both are set, the values must match.
96+
AccountType account_type = 3 [(google.api.field_behavior) = OPTIONAL];
6997
}
7098

71-
// Represents a specific Google product. Used to locate accounts and
72-
// destinations.
99+
// Deprecated. Use
100+
// [`AccountType`][google.ads.datamanager.v1.ProductAccount.AccountType]
101+
// instead. Represents a specific Google product.
73102
enum Product {
103+
option deprecated = true;
104+
74105
// Unspecified product. Should never be used.
75106
PRODUCT_UNSPECIFIED = 0;
76107

google/ads/datamanager/v1/device_info.proto

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,15 @@ message DeviceInfo {
3232
string user_agent = 1 [(google.api.field_behavior) = OPTIONAL];
3333

3434
// Optional. The IP address of the device for the given context.
35+
//
36+
// **Note:** Google Ads does not support IP address matching for end users in
37+
// the European Economic Area (EEA), United Kingdom (UK), or Switzerland (CH).
38+
// Add logic to conditionally exclude sharing IP addresses from users from
39+
// these regions and ensure that you provide users with clear and
40+
// comprehensive information about the data you collect on your sites, apps,
41+
// and other properties and get consent where required by law or any
42+
// applicable Google policies. See the [About offline conversion
43+
// imports](https://support.google.com/google-ads/answer/2998031) page for
44+
// more details.
3545
string ip_address = 2 [(google.api.field_behavior) = OPTIONAL];
3646
}

google/ads/datamanager/v1/encryption_info.proto

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ message GcpWrappedKeyInfo {
5757
string wip_provider = 2 [(google.api.field_behavior) = REQUIRED];
5858

5959
// Required. Google Cloud Platform [Cloud Key Management Service resource
60-
// ID](//cloud.google.com/kms/docs/getting-resource-ids).
60+
// ID](//cloud.google.com/kms/docs/getting-resource-ids). Should be in the
61+
// format of
62+
// "projects/{project}/locations/{location}/keyRings/{key_ring}/cryptoKeys/{key}".
6163
string kek_uri = 3 [(google.api.field_behavior) = REQUIRED];
6264

6365
// Required. The base64 encoded encrypted data encryption key.

google/ads/datamanager/v1/event.proto

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,9 @@ message Event {
4242
repeated string destination_references = 1
4343
[(google.api.field_behavior) = OPTIONAL];
4444

45-
// Required. The unique identifier for this event.
46-
string transaction_id = 2 [(google.api.field_behavior) = REQUIRED];
45+
// Optional. The unique identifier for this event. Required for conversions
46+
// using multiple data sources.
47+
string transaction_id = 2 [(google.api.field_behavior) = OPTIONAL];
4748

4849
// Required. The time the event occurred.
4950
google.protobuf.Timestamp event_timestamp = 3

google/ads/datamanager/v1/ingestion_service.proto

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import "google/ads/datamanager/v1/consent.proto";
2121
import "google/ads/datamanager/v1/destination.proto";
2222
import "google/ads/datamanager/v1/encryption_info.proto";
2323
import "google/ads/datamanager/v1/event.proto";
24+
import "google/ads/datamanager/v1/request_status_per_destination.proto";
2425
import "google/ads/datamanager/v1/terms_of_service.proto";
2526
import "google/api/annotations.proto";
2627
import "google/api/client.proto";
@@ -71,6 +72,14 @@ service IngestionService {
7172
body: "*"
7273
};
7374
}
75+
76+
// Gets the status of a request given request id.
77+
rpc RetrieveRequestStatus(RetrieveRequestStatusRequest)
78+
returns (RetrieveRequestStatusResponse) {
79+
option (google.api.http) = {
80+
get: "/v1/requestStatus:retrieve"
81+
};
82+
}
7483
}
7584

7685
// Request to upload audience members to the provided destinations. Returns an
@@ -201,6 +210,22 @@ message IngestEventsResponse {
201210
string request_id = 1;
202211
}
203212

213+
// Request to get the status of request made to the DM API for a given request
214+
// ID. Returns a
215+
// [RetrieveRequestStatusResponse][google.ads.datamanager.v1.RetrieveRequestStatusResponse].
216+
message RetrieveRequestStatusRequest {
217+
// Required. Required. The request ID of the Data Manager API request.
218+
string request_id = 1 [(google.api.field_behavior) = REQUIRED];
219+
}
220+
221+
// Response from the
222+
// [RetrieveRequestStatusRequest][google.ads.datamanager.v1.RetrieveRequestStatusRequest].
223+
message RetrieveRequestStatusResponse {
224+
// A list of request statuses per destination. The order of the statuses
225+
// matches the order of the destinations in the original request.
226+
repeated RequestStatusPerDestination request_status_per_destination = 1;
227+
}
228+
204229
// The encoding type of the hashed identifying information.
205230
enum Encoding {
206231
// Unspecified Encoding type. Should never be used.
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
// Copyright 2025 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.ads.datamanager.v1;
18+
19+
option csharp_namespace = "Google.Ads.DataManager.V1";
20+
option go_package = "google.golang.org/genproto/googleapis/ads/datamanager/v1;datamanager";
21+
option java_multiple_files = true;
22+
option java_outer_classname = "MatchRateProto";
23+
option java_package = "com.google.ads.datamanager.v1";
24+
option php_namespace = "Google\\Ads\\DataManager\\V1";
25+
option ruby_package = "Google::Ads::DataManager::V1";
26+
27+
// The match rate range of the upload or userlist.
28+
enum MatchRateRange {
29+
// The match rate range is unknown.
30+
MATCH_RATE_RANGE_UNKNOWN = 0;
31+
32+
// The match rate range is not eligible.
33+
MATCH_RATE_RANGE_NOT_ELIGIBLE = 1;
34+
35+
// The match rate range is less than 20% (in the interval `[0, 20)`).
36+
MATCH_RATE_RANGE_LESS_THAN_20 = 2;
37+
38+
// The match rate range is between 20% and 30% (in the interval `[20, 31)`).
39+
MATCH_RATE_RANGE_20_TO_30 = 3;
40+
41+
// The match rate range is between 31% and 40% (in the interval `[31, 41)`).
42+
MATCH_RATE_RANGE_31_TO_40 = 4;
43+
44+
// The match rate range is between 41% and 50% (in the interval `[41, 51)`).
45+
MATCH_RATE_RANGE_41_TO_50 = 5;
46+
47+
// The match rate range is between 51% and 60% (in the interval `[51, 61)`.
48+
MATCH_RATE_RANGE_51_TO_60 = 6;
49+
50+
// The match rate range is between 61% and 70% (in the interval `[61, 71)`).
51+
MATCH_RATE_RANGE_61_TO_70 = 7;
52+
53+
// The match rate range is between 71% and 80% (in the interval `[71, 81)`).
54+
MATCH_RATE_RANGE_71_TO_80 = 8;
55+
56+
// The match rate range is between 81% and 90% (in the interval `[81, 91)`).
57+
MATCH_RATE_RANGE_81_TO_90 = 9;
58+
59+
// The match rate range is between 91% and 100% (in the interval `[91,
60+
// 100]`).
61+
MATCH_RATE_RANGE_91_TO_100 = 10;
62+
}

0 commit comments

Comments
 (0)