google-shopping-merchant-promotions-v1beta 0.a → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +12 -0
  3. data/AUTHENTICATION.md +122 -0
  4. data/README.md +143 -8
  5. data/lib/google/shopping/merchant/promotions/v1beta/promotions_common_pb.rb +62 -0
  6. data/lib/google/shopping/merchant/promotions/v1beta/promotions_pb.rb +57 -0
  7. data/lib/google/shopping/merchant/promotions/v1beta/promotions_service/client.rb +642 -0
  8. data/lib/google/shopping/merchant/promotions/v1beta/promotions_service/credentials.rb +49 -0
  9. data/lib/google/shopping/merchant/promotions/v1beta/promotions_service/paths.rb +52 -0
  10. data/lib/google/shopping/merchant/promotions/v1beta/promotions_service/rest/client.rb +595 -0
  11. data/lib/google/shopping/merchant/promotions/v1beta/promotions_service/rest/service_stub.rb +249 -0
  12. data/lib/google/shopping/merchant/promotions/v1beta/promotions_service/rest.rb +54 -0
  13. data/lib/google/shopping/merchant/promotions/v1beta/promotions_service.rb +57 -0
  14. data/lib/google/shopping/merchant/promotions/v1beta/promotions_services_pb.rb +60 -0
  15. data/lib/google/shopping/merchant/promotions/v1beta/rest.rb +39 -0
  16. data/lib/google/shopping/merchant/promotions/v1beta/version.rb +7 -2
  17. data/lib/google/shopping/merchant/promotions/v1beta.rb +47 -0
  18. data/lib/google-shopping-merchant-promotions-v1beta.rb +21 -0
  19. data/proto_docs/README.md +4 -0
  20. data/proto_docs/google/api/client.rb +420 -0
  21. data/proto_docs/google/api/field_behavior.rb +85 -0
  22. data/proto_docs/google/api/launch_stage.rb +71 -0
  23. data/proto_docs/google/api/resource.rb +227 -0
  24. data/proto_docs/google/protobuf/duration.rb +98 -0
  25. data/proto_docs/google/protobuf/timestamp.rb +127 -0
  26. data/proto_docs/google/shopping/merchant/promotions/v1beta/promotions.rb +176 -0
  27. data/proto_docs/google/shopping/merchant/promotions/v1beta/promotions_common.rb +445 -0
  28. data/proto_docs/google/shopping/type/types.rb +210 -0
  29. data/proto_docs/google/type/interval.rb +45 -0
  30. metadata +89 -10
@@ -0,0 +1,227 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2024 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Api
22
+ # A simple descriptor of a resource type.
23
+ #
24
+ # ResourceDescriptor annotates a resource message (either by means of a
25
+ # protobuf annotation or use in the service config), and associates the
26
+ # resource's schema, the resource type, and the pattern of the resource name.
27
+ #
28
+ # Example:
29
+ #
30
+ # message Topic {
31
+ # // Indicates this message defines a resource schema.
32
+ # // Declares the resource type in the format of {service}/{kind}.
33
+ # // For Kubernetes resources, the format is {api group}/{kind}.
34
+ # option (google.api.resource) = {
35
+ # type: "pubsub.googleapis.com/Topic"
36
+ # pattern: "projects/{project}/topics/{topic}"
37
+ # };
38
+ # }
39
+ #
40
+ # The ResourceDescriptor Yaml config will look like:
41
+ #
42
+ # resources:
43
+ # - type: "pubsub.googleapis.com/Topic"
44
+ # pattern: "projects/{project}/topics/{topic}"
45
+ #
46
+ # Sometimes, resources have multiple patterns, typically because they can
47
+ # live under multiple parents.
48
+ #
49
+ # Example:
50
+ #
51
+ # message LogEntry {
52
+ # option (google.api.resource) = {
53
+ # type: "logging.googleapis.com/LogEntry"
54
+ # pattern: "projects/{project}/logs/{log}"
55
+ # pattern: "folders/{folder}/logs/{log}"
56
+ # pattern: "organizations/{organization}/logs/{log}"
57
+ # pattern: "billingAccounts/{billing_account}/logs/{log}"
58
+ # };
59
+ # }
60
+ #
61
+ # The ResourceDescriptor Yaml config will look like:
62
+ #
63
+ # resources:
64
+ # - type: 'logging.googleapis.com/LogEntry'
65
+ # pattern: "projects/{project}/logs/{log}"
66
+ # pattern: "folders/{folder}/logs/{log}"
67
+ # pattern: "organizations/{organization}/logs/{log}"
68
+ # pattern: "billingAccounts/{billing_account}/logs/{log}"
69
+ # @!attribute [rw] type
70
+ # @return [::String]
71
+ # The resource type. It must be in the format of
72
+ # \\{service_name}/\\{resource_type_kind}. The `resource_type_kind` must be
73
+ # singular and must not include version numbers.
74
+ #
75
+ # Example: `storage.googleapis.com/Bucket`
76
+ #
77
+ # The value of the resource_type_kind must follow the regular expression
78
+ # /[A-Za-z][a-zA-Z0-9]+/. It should start with an upper case character and
79
+ # should use PascalCase (UpperCamelCase). The maximum number of
80
+ # characters allowed for the `resource_type_kind` is 100.
81
+ # @!attribute [rw] pattern
82
+ # @return [::Array<::String>]
83
+ # Optional. The relative resource name pattern associated with this resource
84
+ # type. The DNS prefix of the full resource name shouldn't be specified here.
85
+ #
86
+ # The path pattern must follow the syntax, which aligns with HTTP binding
87
+ # syntax:
88
+ #
89
+ # Template = Segment { "/" Segment } ;
90
+ # Segment = LITERAL | Variable ;
91
+ # Variable = "{" LITERAL "}" ;
92
+ #
93
+ # Examples:
94
+ #
95
+ # - "projects/\\{project}/topics/\\{topic}"
96
+ # - "projects/\\{project}/knowledgeBases/\\{knowledge_base}"
97
+ #
98
+ # The components in braces correspond to the IDs for each resource in the
99
+ # hierarchy. It is expected that, if multiple patterns are provided,
100
+ # the same component name (e.g. "project") refers to IDs of the same
101
+ # type of resource.
102
+ # @!attribute [rw] name_field
103
+ # @return [::String]
104
+ # Optional. The field on the resource that designates the resource name
105
+ # field. If omitted, this is assumed to be "name".
106
+ # @!attribute [rw] history
107
+ # @return [::Google::Api::ResourceDescriptor::History]
108
+ # Optional. The historical or future-looking state of the resource pattern.
109
+ #
110
+ # Example:
111
+ #
112
+ # // The InspectTemplate message originally only supported resource
113
+ # // names with organization, and project was added later.
114
+ # message InspectTemplate {
115
+ # option (google.api.resource) = {
116
+ # type: "dlp.googleapis.com/InspectTemplate"
117
+ # pattern:
118
+ # "organizations/{organization}/inspectTemplates/{inspect_template}"
119
+ # pattern: "projects/{project}/inspectTemplates/{inspect_template}"
120
+ # history: ORIGINALLY_SINGLE_PATTERN
121
+ # };
122
+ # }
123
+ # @!attribute [rw] plural
124
+ # @return [::String]
125
+ # The plural name used in the resource name and permission names, such as
126
+ # 'projects' for the resource name of 'projects/\\{project}' and the permission
127
+ # name of 'cloudresourcemanager.googleapis.com/projects.get'. One exception
128
+ # to this is for Nested Collections that have stuttering names, as defined
129
+ # in [AIP-122](https://google.aip.dev/122#nested-collections), where the
130
+ # collection ID in the resource name pattern does not necessarily directly
131
+ # match the `plural` value.
132
+ #
133
+ # It is the same concept of the `plural` field in k8s CRD spec
134
+ # https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
135
+ #
136
+ # Note: The plural form is required even for singleton resources. See
137
+ # https://aip.dev/156
138
+ # @!attribute [rw] singular
139
+ # @return [::String]
140
+ # The same concept of the `singular` field in k8s CRD spec
141
+ # https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions/
142
+ # Such as "project" for the `resourcemanager.googleapis.com/Project` type.
143
+ # @!attribute [rw] style
144
+ # @return [::Array<::Google::Api::ResourceDescriptor::Style>]
145
+ # Style flag(s) for this resource.
146
+ # These indicate that a resource is expected to conform to a given
147
+ # style. See the specific style flags for additional information.
148
+ class ResourceDescriptor
149
+ include ::Google::Protobuf::MessageExts
150
+ extend ::Google::Protobuf::MessageExts::ClassMethods
151
+
152
+ # A description of the historical or future-looking state of the
153
+ # resource pattern.
154
+ module History
155
+ # The "unset" value.
156
+ HISTORY_UNSPECIFIED = 0
157
+
158
+ # The resource originally had one pattern and launched as such, and
159
+ # additional patterns were added later.
160
+ ORIGINALLY_SINGLE_PATTERN = 1
161
+
162
+ # The resource has one pattern, but the API owner expects to add more
163
+ # later. (This is the inverse of ORIGINALLY_SINGLE_PATTERN, and prevents
164
+ # that from being necessary once there are multiple patterns.)
165
+ FUTURE_MULTI_PATTERN = 2
166
+ end
167
+
168
+ # A flag representing a specific style that a resource claims to conform to.
169
+ module Style
170
+ # The unspecified value. Do not use.
171
+ STYLE_UNSPECIFIED = 0
172
+
173
+ # This resource is intended to be "declarative-friendly".
174
+ #
175
+ # Declarative-friendly resources must be more strictly consistent, and
176
+ # setting this to true communicates to tools that this resource should
177
+ # adhere to declarative-friendly expectations.
178
+ #
179
+ # Note: This is used by the API linter (linter.aip.dev) to enable
180
+ # additional checks.
181
+ DECLARATIVE_FRIENDLY = 1
182
+ end
183
+ end
184
+
185
+ # Defines a proto annotation that describes a string field that refers to
186
+ # an API resource.
187
+ # @!attribute [rw] type
188
+ # @return [::String]
189
+ # The resource type that the annotated field references.
190
+ #
191
+ # Example:
192
+ #
193
+ # message Subscription {
194
+ # string topic = 2 [(google.api.resource_reference) = {
195
+ # type: "pubsub.googleapis.com/Topic"
196
+ # }];
197
+ # }
198
+ #
199
+ # Occasionally, a field may reference an arbitrary resource. In this case,
200
+ # APIs use the special value * in their resource reference.
201
+ #
202
+ # Example:
203
+ #
204
+ # message GetIamPolicyRequest {
205
+ # string resource = 2 [(google.api.resource_reference) = {
206
+ # type: "*"
207
+ # }];
208
+ # }
209
+ # @!attribute [rw] child_type
210
+ # @return [::String]
211
+ # The resource type of a child collection that the annotated field
212
+ # references. This is useful for annotating the `parent` field that
213
+ # doesn't have a fixed resource type.
214
+ #
215
+ # Example:
216
+ #
217
+ # message ListLogEntriesRequest {
218
+ # string parent = 1 [(google.api.resource_reference) = {
219
+ # child_type: "logging.googleapis.com/LogEntry"
220
+ # };
221
+ # }
222
+ class ResourceReference
223
+ include ::Google::Protobuf::MessageExts
224
+ extend ::Google::Protobuf::MessageExts::ClassMethods
225
+ end
226
+ end
227
+ end
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2024 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Protobuf
22
+ # A Duration represents a signed, fixed-length span of time represented
23
+ # as a count of seconds and fractions of seconds at nanosecond
24
+ # resolution. It is independent of any calendar and concepts like "day"
25
+ # or "month". It is related to Timestamp in that the difference between
26
+ # two Timestamp values is a Duration and it can be added or subtracted
27
+ # from a Timestamp. Range is approximately +-10,000 years.
28
+ #
29
+ # # Examples
30
+ #
31
+ # Example 1: Compute Duration from two Timestamps in pseudo code.
32
+ #
33
+ # Timestamp start = ...;
34
+ # Timestamp end = ...;
35
+ # Duration duration = ...;
36
+ #
37
+ # duration.seconds = end.seconds - start.seconds;
38
+ # duration.nanos = end.nanos - start.nanos;
39
+ #
40
+ # if (duration.seconds < 0 && duration.nanos > 0) {
41
+ # duration.seconds += 1;
42
+ # duration.nanos -= 1000000000;
43
+ # } else if (duration.seconds > 0 && duration.nanos < 0) {
44
+ # duration.seconds -= 1;
45
+ # duration.nanos += 1000000000;
46
+ # }
47
+ #
48
+ # Example 2: Compute Timestamp from Timestamp + Duration in pseudo code.
49
+ #
50
+ # Timestamp start = ...;
51
+ # Duration duration = ...;
52
+ # Timestamp end = ...;
53
+ #
54
+ # end.seconds = start.seconds + duration.seconds;
55
+ # end.nanos = start.nanos + duration.nanos;
56
+ #
57
+ # if (end.nanos < 0) {
58
+ # end.seconds -= 1;
59
+ # end.nanos += 1000000000;
60
+ # } else if (end.nanos >= 1000000000) {
61
+ # end.seconds += 1;
62
+ # end.nanos -= 1000000000;
63
+ # }
64
+ #
65
+ # Example 3: Compute Duration from datetime.timedelta in Python.
66
+ #
67
+ # td = datetime.timedelta(days=3, minutes=10)
68
+ # duration = Duration()
69
+ # duration.FromTimedelta(td)
70
+ #
71
+ # # JSON Mapping
72
+ #
73
+ # In JSON format, the Duration type is encoded as a string rather than an
74
+ # object, where the string ends in the suffix "s" (indicating seconds) and
75
+ # is preceded by the number of seconds, with nanoseconds expressed as
76
+ # fractional seconds. For example, 3 seconds with 0 nanoseconds should be
77
+ # encoded in JSON format as "3s", while 3 seconds and 1 nanosecond should
78
+ # be expressed in JSON format as "3.000000001s", and 3 seconds and 1
79
+ # microsecond should be expressed in JSON format as "3.000001s".
80
+ # @!attribute [rw] seconds
81
+ # @return [::Integer]
82
+ # Signed seconds of the span of time. Must be from -315,576,000,000
83
+ # to +315,576,000,000 inclusive. Note: these bounds are computed from:
84
+ # 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years
85
+ # @!attribute [rw] nanos
86
+ # @return [::Integer]
87
+ # Signed fractions of a second at nanosecond resolution of the span
88
+ # of time. Durations less than one second are represented with a 0
89
+ # `seconds` field and a positive or negative `nanos` field. For durations
90
+ # of one second or more, a non-zero value for the `nanos` field must be
91
+ # of the same sign as the `seconds` field. Must be from -999,999,999
92
+ # to +999,999,999 inclusive.
93
+ class Duration
94
+ include ::Google::Protobuf::MessageExts
95
+ extend ::Google::Protobuf::MessageExts::ClassMethods
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,127 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2024 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Protobuf
22
+ # A Timestamp represents a point in time independent of any time zone or local
23
+ # calendar, encoded as a count of seconds and fractions of seconds at
24
+ # nanosecond resolution. The count is relative to an epoch at UTC midnight on
25
+ # January 1, 1970, in the proleptic Gregorian calendar which extends the
26
+ # Gregorian calendar backwards to year one.
27
+ #
28
+ # All minutes are 60 seconds long. Leap seconds are "smeared" so that no leap
29
+ # second table is needed for interpretation, using a [24-hour linear
30
+ # smear](https://developers.google.com/time/smear).
31
+ #
32
+ # The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By
33
+ # restricting to that range, we ensure that we can convert to and from [RFC
34
+ # 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.
35
+ #
36
+ # # Examples
37
+ #
38
+ # Example 1: Compute Timestamp from POSIX `time()`.
39
+ #
40
+ # Timestamp timestamp;
41
+ # timestamp.set_seconds(time(NULL));
42
+ # timestamp.set_nanos(0);
43
+ #
44
+ # Example 2: Compute Timestamp from POSIX `gettimeofday()`.
45
+ #
46
+ # struct timeval tv;
47
+ # gettimeofday(&tv, NULL);
48
+ #
49
+ # Timestamp timestamp;
50
+ # timestamp.set_seconds(tv.tv_sec);
51
+ # timestamp.set_nanos(tv.tv_usec * 1000);
52
+ #
53
+ # Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.
54
+ #
55
+ # FILETIME ft;
56
+ # GetSystemTimeAsFileTime(&ft);
57
+ # UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;
58
+ #
59
+ # // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z
60
+ # // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.
61
+ # Timestamp timestamp;
62
+ # timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));
63
+ # timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));
64
+ #
65
+ # Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.
66
+ #
67
+ # long millis = System.currentTimeMillis();
68
+ #
69
+ # Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)
70
+ # .setNanos((int) ((millis % 1000) * 1000000)).build();
71
+ #
72
+ # Example 5: Compute Timestamp from Java `Instant.now()`.
73
+ #
74
+ # Instant now = Instant.now();
75
+ #
76
+ # Timestamp timestamp =
77
+ # Timestamp.newBuilder().setSeconds(now.getEpochSecond())
78
+ # .setNanos(now.getNano()).build();
79
+ #
80
+ # Example 6: Compute Timestamp from current time in Python.
81
+ #
82
+ # timestamp = Timestamp()
83
+ # timestamp.GetCurrentTime()
84
+ #
85
+ # # JSON Mapping
86
+ #
87
+ # In JSON format, the Timestamp type is encoded as a string in the
88
+ # [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the
89
+ # format is "\\{year}-\\{month}-\\{day}T\\{hour}:\\{min}:\\{sec}[.\\{frac_sec}]Z"
90
+ # where \\{year} is always expressed using four digits while \\{month}, \\{day},
91
+ # \\{hour}, \\{min}, and \\{sec} are zero-padded to two digits each. The fractional
92
+ # seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),
93
+ # are optional. The "Z" suffix indicates the timezone ("UTC"); the timezone
94
+ # is required. A proto3 JSON serializer should always use UTC (as indicated by
95
+ # "Z") when printing the Timestamp type and a proto3 JSON parser should be
96
+ # able to accept both UTC and other timezones (as indicated by an offset).
97
+ #
98
+ # For example, "2017-01-15T01:30:15.01Z" encodes 15.01 seconds past
99
+ # 01:30 UTC on January 15, 2017.
100
+ #
101
+ # In JavaScript, one can convert a Date object to this format using the
102
+ # standard
103
+ # [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)
104
+ # method. In Python, a standard `datetime.datetime` object can be converted
105
+ # to this format using
106
+ # [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with
107
+ # the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use
108
+ # the Joda Time's [`ISODateTimeFormat.dateTime()`](
109
+ # http://joda-time.sourceforge.net/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime()
110
+ # ) to obtain a formatter capable of generating timestamps in this format.
111
+ # @!attribute [rw] seconds
112
+ # @return [::Integer]
113
+ # Represents seconds of UTC time since Unix epoch
114
+ # 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
115
+ # 9999-12-31T23:59:59Z inclusive.
116
+ # @!attribute [rw] nanos
117
+ # @return [::Integer]
118
+ # Non-negative fractions of a second at nanosecond resolution. Negative
119
+ # second values with fractions must still have non-negative nanos values
120
+ # that count forward in time. Must be from 0 to 999,999,999
121
+ # inclusive.
122
+ class Timestamp
123
+ include ::Google::Protobuf::MessageExts
124
+ extend ::Google::Protobuf::MessageExts::ClassMethods
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,176 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2024 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Shopping
22
+ module Merchant
23
+ module Promotions
24
+ module V1beta
25
+ # Represents a promotion. See the following articles for more details.
26
+ #
27
+ # Required promotion input attributes to pass data validation checks are
28
+ # primarily defined below:
29
+ #
30
+ # * [Promotions data
31
+ # specification](https://support.google.com/merchants/answer/2906014)
32
+ # * [Local promotions data
33
+ # specification](https://support.google.com/merchants/answer/10146130)
34
+ #
35
+ # After inserting, updating a promotion input, it may take several minutes
36
+ # before the final promotion can be retrieved.
37
+ # @!attribute [rw] name
38
+ # @return [::String]
39
+ # Identifier. The name of the promotion.
40
+ # Format: `accounts/{account}/promotions/{promotion}`
41
+ # @!attribute [rw] promotion_id
42
+ # @return [::String]
43
+ # Required. The user provided promotion ID to uniquely identify the
44
+ # promotion. Follow [minimum
45
+ # requirements](https://support.google.com/merchants/answer/7050148?ref_topic=7322920&sjid=871860036916537104-NC#minimum_requirements)
46
+ # to prevent promotion disapprovals.
47
+ # @!attribute [rw] content_language
48
+ # @return [::String]
49
+ # Required. The two-letter [ISO
50
+ # 639-1](http://en.wikipedia.org/wiki/ISO_639-1) language code for the
51
+ # promotion.
52
+ #
53
+ # Promotions is only for [selected
54
+ # languages](https://support.google.com/merchants/answer/4588281?ref_topic=6396150&sjid=18314938579342094533-NC#option3&zippy=).
55
+ # @!attribute [rw] target_country
56
+ # @return [::String]
57
+ # Required. The target country used as part of the unique identifier.
58
+ # Represented as a [CLDR territory
59
+ # code](https://github.com/unicode-org/cldr/blob/latest/common/main/en.xml).
60
+ #
61
+ # Promotions are only available in selected
62
+ # countries, [Free Listings and Shopping
63
+ # ads](https://support.google.com/merchants/answer/4588460) [Local Inventory
64
+ # ads](https://support.google.com/merchants/answer/10146326)
65
+ # @!attribute [rw] redemption_channel
66
+ # @return [::Array<::Google::Shopping::Merchant::Promotions::V1beta::RedemptionChannel>]
67
+ # Required. [Redemption
68
+ # channel](https://support.google.com/merchants/answer/13837674?ref_topic=13773355&sjid=17642868584668136159-NC)
69
+ # for the promotion. At least one channel is required.
70
+ # @!attribute [r] data_source
71
+ # @return [::String]
72
+ # Output only. The primary data source of the promotion.
73
+ # @!attribute [rw] attributes
74
+ # @return [::Google::Shopping::Merchant::Promotions::V1beta::Attributes]
75
+ # Optional. A list of promotion attributes.
76
+ # @!attribute [rw] custom_attributes
77
+ # @return [::Array<::Google::Shopping::Type::CustomAttribute>]
78
+ # Optional. A list of custom (merchant-provided) attributes. It can also be
79
+ # used for submitting any attribute of the data specification in its generic
80
+ # form (for example,
81
+ # `{ "name": "size type", "value": "regular" }`).
82
+ # This is useful for submitting attributes not explicitly exposed by the
83
+ # API.
84
+ # @!attribute [r] promotion_status
85
+ # @return [::Google::Shopping::Merchant::Promotions::V1beta::PromotionStatus]
86
+ # Output only. The [status of a
87
+ # promotion](https://support.google.com/merchants/answer/3398326?ref_topic=7322924&sjid=5155774230887277618-NC),
88
+ # data validation issues, that is, information about a promotion computed
89
+ # asynchronously.
90
+ # @!attribute [rw] version_number
91
+ # @return [::Integer]
92
+ # Optional. Represents the existing version (freshness) of the promotion,
93
+ # which can be used to preserve the right order when multiple updates are
94
+ # done at the same time.
95
+ #
96
+ # If set, the insertion is prevented when version number is lower than
97
+ # the current version number of the existing promotion. Re-insertion (for
98
+ # example, promotion refresh after 30 days) can be performed with the current
99
+ # `version_number`.
100
+ #
101
+ # If the operation is prevented, the aborted exception will be
102
+ # thrown.
103
+ class Promotion
104
+ include ::Google::Protobuf::MessageExts
105
+ extend ::Google::Protobuf::MessageExts::ClassMethods
106
+ end
107
+
108
+ # Request message for the `InsertPromotion` method.
109
+ # @!attribute [rw] parent
110
+ # @return [::String]
111
+ # Required. The account where the promotion will be inserted.
112
+ # Format: accounts/\\{account}
113
+ # @!attribute [rw] promotion
114
+ # @return [::Google::Shopping::Merchant::Promotions::V1beta::Promotion]
115
+ # Required. The promotion to insert.
116
+ # @!attribute [rw] data_source
117
+ # @return [::String]
118
+ # Required. The data source of the
119
+ # [promotion](https://support.google.com/merchants/answer/6396268?sjid=5155774230887277618-NC)
120
+ # Format:
121
+ # `accounts/{account}/dataSources/{datasource}`.
122
+ class InsertPromotionRequest
123
+ include ::Google::Protobuf::MessageExts
124
+ extend ::Google::Protobuf::MessageExts::ClassMethods
125
+ end
126
+
127
+ # Request message for the `GetPromotion` method.
128
+ # @!attribute [rw] name
129
+ # @return [::String]
130
+ # Required. The name of the promotion to retrieve.
131
+ # Format: `accounts/{account}/promotions/{promotions}`
132
+ class GetPromotionRequest
133
+ include ::Google::Protobuf::MessageExts
134
+ extend ::Google::Protobuf::MessageExts::ClassMethods
135
+ end
136
+
137
+ # Request message for the `ListPromotions` method.
138
+ # @!attribute [rw] parent
139
+ # @return [::String]
140
+ # Required. The account to list processed promotions for.
141
+ # Format: `accounts/{account}`
142
+ # @!attribute [r] page_size
143
+ # @return [::Integer]
144
+ # Output only. The maximum number of promotions to return. The service may
145
+ # return fewer than this value. The maximum value is 1000; values above 1000
146
+ # will be coerced to 1000. If unspecified, the maximum number of promotions
147
+ # will be returned.
148
+ # @!attribute [r] page_token
149
+ # @return [::String]
150
+ # Output only. A page token, received from a previous `ListPromotions` call.
151
+ # Provide this to retrieve the subsequent page.
152
+ #
153
+ # When paginating, all other parameters provided to `ListPromotions` must
154
+ # match the call that provided the page token.
155
+ class ListPromotionsRequest
156
+ include ::Google::Protobuf::MessageExts
157
+ extend ::Google::Protobuf::MessageExts::ClassMethods
158
+ end
159
+
160
+ # Response message for the `ListPromotions` method.
161
+ # @!attribute [rw] promotions
162
+ # @return [::Array<::Google::Shopping::Merchant::Promotions::V1beta::Promotion>]
163
+ # The processed promotions from the specified account.
164
+ # @!attribute [rw] next_page_token
165
+ # @return [::String]
166
+ # A token, which can be sent as `page_token` to retrieve the next page.
167
+ # If this field is omitted, there are no subsequent pages.
168
+ class ListPromotionsResponse
169
+ include ::Google::Protobuf::MessageExts
170
+ extend ::Google::Protobuf::MessageExts::ClassMethods
171
+ end
172
+ end
173
+ end
174
+ end
175
+ end
176
+ end