Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Side by Side Diff: generated/googleapis/lib/analyticsreporting/v4.dart

Issue 3006323002: Api-Roll 54: 2017-09-11 (Closed)
Patch Set: use 2.0.0-dev.infinity sdk constraint in pubspecs Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // This is a generated file (see the discoveryapis_generator project). 1 // This is a generated file (see the discoveryapis_generator project).
2 2
3 library googleapis.analyticsreporting.v4; 3 library googleapis.analyticsreporting.v4;
4 4
5 import 'dart:core' as core; 5 import 'dart:core' as core;
6 import 'dart:async' as async; 6 import 'dart:async' as async;
7 import 'dart:convert' as convert; 7 import 'dart:convert' as convert;
8 8
9 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons; 9 import 'package:_discoveryapis_commons/_discoveryapis_commons.dart' as commons;
10 import 'package:http/http.dart' as http; 10 import 'package:http/http.dart' as http;
11 11
12 export 'package:_discoveryapis_commons/_discoveryapis_commons.dart' show 12 export 'package:_discoveryapis_commons/_discoveryapis_commons.dart'
13 ApiRequestError, DetailedApiRequestError; 13 show ApiRequestError, DetailedApiRequestError;
14 14
15 const core.String USER_AGENT = 'dart-api-client analyticsreporting/v4'; 15 const core.String USER_AGENT = 'dart-api-client analyticsreporting/v4';
16 16
17 /** Accesses Analytics report data. */ 17 /// Accesses Analytics report data.
18 class AnalyticsreportingApi { 18 class AnalyticsreportingApi {
19 /** View and manage your Google Analytics data */ 19 /// View and manage your Google Analytics data
20 static const AnalyticsScope = "https://www.googleapis.com/auth/analytics"; 20 static const AnalyticsScope = "https://www.googleapis.com/auth/analytics";
21 21
22 /** View your Google Analytics data */ 22 /// View your Google Analytics data
23 static const AnalyticsReadonlyScope = "https://www.googleapis.com/auth/analyti cs.readonly"; 23 static const AnalyticsReadonlyScope =
24 24 "https://www.googleapis.com/auth/analytics.readonly";
25 25
26 final commons.ApiRequester _requester; 26 final commons.ApiRequester _requester;
27 27
28 ReportsResourceApi get reports => new ReportsResourceApi(_requester); 28 ReportsResourceApi get reports => new ReportsResourceApi(_requester);
29 29
30 AnalyticsreportingApi(http.Client client, {core.String rootUrl: "https://analy ticsreporting.googleapis.com/", core.String servicePath: ""}) : 30 AnalyticsreportingApi(http.Client client,
31 _requester = new commons.ApiRequester(client, rootUrl, servicePath, USER_A GENT); 31 {core.String rootUrl: "https://analyticsreporting.googleapis.com/",
32 core.String servicePath: ""})
33 : _requester =
34 new commons.ApiRequester(client, rootUrl, servicePath, USER_AGENT);
32 } 35 }
33 36
34
35 class ReportsResourceApi { 37 class ReportsResourceApi {
36 final commons.ApiRequester _requester; 38 final commons.ApiRequester _requester;
37 39
38 ReportsResourceApi(commons.ApiRequester client) : 40 ReportsResourceApi(commons.ApiRequester client) : _requester = client;
39 _requester = client;
40 41
41 /** 42 /// Returns the Analytics data.
42 * Returns the Analytics data. 43 ///
43 * 44 /// [request] - The metadata request object.
44 * [request] - The metadata request object. 45 ///
45 * 46 /// Request parameters:
46 * Request parameters: 47 ///
47 * 48 /// Completes with a [GetReportsResponse].
48 * Completes with a [GetReportsResponse]. 49 ///
49 * 50 /// Completes with a [commons.ApiRequestError] if the API endpoint returned
50 * Completes with a [commons.ApiRequestError] if the API endpoint returned an 51 /// an error.
51 * error. 52 ///
52 * 53 /// If the used [http.Client] completes with an error when making a REST
53 * If the used [http.Client] completes with an error when making a REST call, 54 /// call, this method will complete with the same error.
54 * this method will complete with the same error.
55 */
56 async.Future<GetReportsResponse> batchGet(GetReportsRequest request) { 55 async.Future<GetReportsResponse> batchGet(GetReportsRequest request) {
57 var _url = null; 56 var _url = null;
58 var _queryParams = new core.Map(); 57 var _queryParams = new core.Map();
59 var _uploadMedia = null; 58 var _uploadMedia = null;
60 var _uploadOptions = null; 59 var _uploadOptions = null;
61 var _downloadOptions = commons.DownloadOptions.Metadata; 60 var _downloadOptions = commons.DownloadOptions.Metadata;
62 var _body = null; 61 var _body = null;
63 62
64 if (request != null) { 63 if (request != null) {
65 _body = convert.JSON.encode((request).toJson()); 64 _body = convert.JSON.encode((request).toJson());
66 } 65 }
67 66
68 _url = 'v4/reports:batchGet'; 67 _url = 'v4/reports:batchGet';
69 68
70 var _response = _requester.request(_url, 69 var _response = _requester.request(_url, "POST",
71 "POST", 70 body: _body,
72 body: _body, 71 queryParams: _queryParams,
73 queryParams: _queryParams, 72 uploadOptions: _uploadOptions,
74 uploadOptions: _uploadOptions, 73 uploadMedia: _uploadMedia,
75 uploadMedia: _uploadMedia, 74 downloadOptions: _downloadOptions);
76 downloadOptions: _downloadOptions);
77 return _response.then((data) => new GetReportsResponse.fromJson(data)); 75 return _response.then((data) => new GetReportsResponse.fromJson(data));
78 } 76 }
79
80 } 77 }
81 78
79 /// Defines a cohort. A cohort is a group of users who share a common
80 /// characteristic. For example, all users with the same acquisition date
81 /// belong to the same cohort.
82 class Cohort {
83 /// This is used for `FIRST_VISIT_DATE` cohort, the cohort selects users
84 /// whose first visit date is between start date and end date defined in the
85 /// DateRange. The date ranges should be aligned for cohort requests. If the
86 /// request contains `ga:cohortNthDay` it should be exactly one day long,
87 /// if `ga:cohortNthWeek` it should be aligned to the week boundary (starting
88 /// at Sunday and ending Saturday), and for `ga:cohortNthMonth` the date
89 /// range
90 /// should be aligned to the month (starting at the first and ending on the
91 /// last day of the month).
92 /// For LTV requests there are no such restrictions.
93 /// You do not need to supply a date range for the
94 /// `reportsRequest.dateRanges` field.
95 DateRange dateRange;
82 96
97 /// A unique name for the cohort. If not defined name will be auto-generated
98 /// with values cohort_[1234...].
99 core.String name;
83 100
84 /** 101 /// Type of the cohort. The only supported type as of now is
85 * Defines a cohort. A cohort is a group of users who share a common 102 /// `FIRST_VISIT_DATE`. If this field is unspecified the cohort is treated
86 * characteristic. For example, all users with the same acquisition date 103 /// as `FIRST_VISIT_DATE` type cohort.
87 * belong to the same cohort. 104 /// Possible string values are:
88 */ 105 /// - "UNSPECIFIED_COHORT_TYPE" : If unspecified it's treated as
89 class Cohort { 106 /// `FIRST_VISIT_DATE`.
90 /** 107 /// - "FIRST_VISIT_DATE" : Cohorts that are selected based on first visit
91 * This is used for `FIRST_VISIT_DATE` cohort, the cohort selects users 108 /// date.
92 * whose first visit date is between start date and end date defined in the
93 * DateRange. The date ranges should be aligned for cohort requests. If the
94 * request contains `ga:cohortNthDay` it should be exactly one day long,
95 * if `ga:cohortNthWeek` it should be aligned to the week boundary (starting
96 * at Sunday and ending Saturday), and for `ga:cohortNthMonth` the date range
97 * should be aligned to the month (starting at the first and ending on the
98 * last day of the month).
99 * For LTV requests there are no such restrictions.
100 * You do not need to supply a date range for the
101 * `reportsRequest.dateRanges` field.
102 */
103 DateRange dateRange;
104 /**
105 * A unique name for the cohort. If not defined name will be auto-generated
106 * with values cohort_[1234...].
107 */
108 core.String name;
109 /**
110 * Type of the cohort. The only supported type as of now is
111 * `FIRST_VISIT_DATE`. If this field is unspecified the cohort is treated
112 * as `FIRST_VISIT_DATE` type cohort.
113 * Possible string values are:
114 * - "UNSPECIFIED_COHORT_TYPE" : If unspecified it's treated as
115 * `FIRST_VISIT_DATE`.
116 * - "FIRST_VISIT_DATE" : Cohorts that are selected based on first visit date.
117 */
118 core.String type; 109 core.String type;
119 110
120 Cohort(); 111 Cohort();
121 112
122 Cohort.fromJson(core.Map _json) { 113 Cohort.fromJson(core.Map _json) {
123 if (_json.containsKey("dateRange")) { 114 if (_json.containsKey("dateRange")) {
124 dateRange = new DateRange.fromJson(_json["dateRange"]); 115 dateRange = new DateRange.fromJson(_json["dateRange"]);
125 } 116 }
126 if (_json.containsKey("name")) { 117 if (_json.containsKey("name")) {
127 name = _json["name"]; 118 name = _json["name"];
128 } 119 }
129 if (_json.containsKey("type")) { 120 if (_json.containsKey("type")) {
130 type = _json["type"]; 121 type = _json["type"];
131 } 122 }
132 } 123 }
133 124
134 core.Map<core.String, core.Object> toJson() { 125 core.Map<core.String, core.Object> toJson() {
135 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 126 final core.Map<core.String, core.Object> _json =
127 new core.Map<core.String, core.Object>();
136 if (dateRange != null) { 128 if (dateRange != null) {
137 _json["dateRange"] = (dateRange).toJson(); 129 _json["dateRange"] = (dateRange).toJson();
138 } 130 }
139 if (name != null) { 131 if (name != null) {
140 _json["name"] = name; 132 _json["name"] = name;
141 } 133 }
142 if (type != null) { 134 if (type != null) {
143 _json["type"] = type; 135 _json["type"] = type;
144 } 136 }
145 return _json; 137 return _json;
146 } 138 }
147 } 139 }
148 140
149 /** 141 /// Defines a cohort group.
150 * Defines a cohort group. 142 /// For example:
151 * For example: 143 ///
152 * 144 /// "cohortGroup": {
153 * "cohortGroup": { 145 /// "cohorts": [{
154 * "cohorts": [{ 146 /// "name": "cohort 1",
155 * "name": "cohort 1", 147 /// "type": "FIRST_VISIT_DATE",
156 * "type": "FIRST_VISIT_DATE", 148 /// "dateRange": { "startDate": "2015-08-01", "endDate": "2015-08-01" }
157 * "dateRange": { "startDate": "2015-08-01", "endDate": "2015-08-01" } 149 /// },{
158 * },{ 150 /// "name": "cohort 2"
159 * "name": "cohort 2" 151 /// "type": "FIRST_VISIT_DATE"
160 * "type": "FIRST_VISIT_DATE" 152 /// "dateRange": { "startDate": "2015-07-01", "endDate": "2015-07-01" }
161 * "dateRange": { "startDate": "2015-07-01", "endDate": "2015-07-01" } 153 /// }]
162 * }] 154 /// }
163 * }
164 */
165 class CohortGroup { 155 class CohortGroup {
166 /** The definition for the cohort. */ 156 /// The definition for the cohort.
167 core.List<Cohort> cohorts; 157 core.List<Cohort> cohorts;
168 /** 158
169 * Enable Life Time Value (LTV). LTV measures lifetime value for users 159 /// Enable Life Time Value (LTV). LTV measures lifetime value for users
170 * acquired through different channels. 160 /// acquired through different channels.
171 * Please see: 161 /// Please see:
172 * [Cohort Analysis](https://support.google.com/analytics/answer/6074676) and 162 /// [Cohort Analysis](https://support.google.com/analytics/answer/6074676)
173 * [Lifetime Value](https://support.google.com/analytics/answer/6182550) 163 /// and
174 * If the value of lifetimeValue is false: 164 /// [Lifetime Value](https://support.google.com/analytics/answer/6182550)
175 * 165 /// If the value of lifetimeValue is false:
176 * - The metric values are similar to the values in the web interface cohort 166 ///
177 * report. 167 /// - The metric values are similar to the values in the web interface cohort
178 * - The cohort definition date ranges must be aligned to the calendar week 168 /// report.
179 * and month. i.e. while requesting `ga:cohortNthWeek` the `startDate` in 169 /// - The cohort definition date ranges must be aligned to the calendar week
180 * the cohort definition should be a Sunday and the `endDate` should be the 170 /// and month. i.e. while requesting `ga:cohortNthWeek` the `startDate` in
181 * following Saturday, and for `ga:cohortNthMonth`, the `startDate` 171 /// the cohort definition should be a Sunday and the `endDate` should be the
182 * should be the 1st of the month and `endDate` should be the last day 172 /// following Saturday, and for `ga:cohortNthMonth`, the `startDate`
183 * of the month. 173 /// should be the 1st of the month and `endDate` should be the last day
184 * 174 /// of the month.
185 * When the lifetimeValue is true: 175 ///
186 * 176 /// When the lifetimeValue is true:
187 * - The metric values will correspond to the values in the web interface 177 ///
188 * LifeTime value report. 178 /// - The metric values will correspond to the values in the web interface
189 * - The Lifetime Value report shows you how user value (Revenue) and 179 /// LifeTime value report.
190 * engagement (Appviews, Goal Completions, Sessions, and Session Duration) 180 /// - The Lifetime Value report shows you how user value (Revenue) and
191 * grow during the 90 days after a user is acquired. 181 /// engagement (Appviews, Goal Completions, Sessions, and Session Duration)
192 * - The metrics are calculated as a cumulative average per user per the time 182 /// grow during the 90 days after a user is acquired.
193 * increment. 183 /// - The metrics are calculated as a cumulative average per user per the
194 * - The cohort definition date ranges need not be aligned to the calendar 184 /// time
195 * week and month boundaries. 185 /// increment.
196 * - The `viewId` must be an 186 /// - The cohort definition date ranges need not be aligned to the calendar
197 * [app view 187 /// week and month boundaries.
198 * ID](https://support.google.com/analytics/answer/2649553#WebVersusAppViews) 188 /// - The `viewId` must be an
199 */ 189 /// [app view
190 /// ID](https://support.google.com/analytics/answer/2649553#WebVersusAppViews)
200 core.bool lifetimeValue; 191 core.bool lifetimeValue;
201 192
202 CohortGroup(); 193 CohortGroup();
203 194
204 CohortGroup.fromJson(core.Map _json) { 195 CohortGroup.fromJson(core.Map _json) {
205 if (_json.containsKey("cohorts")) { 196 if (_json.containsKey("cohorts")) {
206 cohorts = _json["cohorts"].map((value) => new Cohort.fromJson(value)).toLi st(); 197 cohorts =
198 _json["cohorts"].map((value) => new Cohort.fromJson(value)).toList();
207 } 199 }
208 if (_json.containsKey("lifetimeValue")) { 200 if (_json.containsKey("lifetimeValue")) {
209 lifetimeValue = _json["lifetimeValue"]; 201 lifetimeValue = _json["lifetimeValue"];
210 } 202 }
211 } 203 }
212 204
213 core.Map<core.String, core.Object> toJson() { 205 core.Map<core.String, core.Object> toJson() {
214 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 206 final core.Map<core.String, core.Object> _json =
207 new core.Map<core.String, core.Object>();
215 if (cohorts != null) { 208 if (cohorts != null) {
216 _json["cohorts"] = cohorts.map((value) => (value).toJson()).toList(); 209 _json["cohorts"] = cohorts.map((value) => (value).toJson()).toList();
217 } 210 }
218 if (lifetimeValue != null) { 211 if (lifetimeValue != null) {
219 _json["lifetimeValue"] = lifetimeValue; 212 _json["lifetimeValue"] = lifetimeValue;
220 } 213 }
221 return _json; 214 return _json;
222 } 215 }
223 } 216 }
224 217
225 /** Column headers. */ 218 /// Column headers.
226 class ColumnHeader { 219 class ColumnHeader {
227 /** The dimension names in the response. */ 220 /// The dimension names in the response.
228 core.List<core.String> dimensions; 221 core.List<core.String> dimensions;
229 /** Metric headers for the metrics in the response. */ 222
223 /// Metric headers for the metrics in the response.
230 MetricHeader metricHeader; 224 MetricHeader metricHeader;
231 225
232 ColumnHeader(); 226 ColumnHeader();
233 227
234 ColumnHeader.fromJson(core.Map _json) { 228 ColumnHeader.fromJson(core.Map _json) {
235 if (_json.containsKey("dimensions")) { 229 if (_json.containsKey("dimensions")) {
236 dimensions = _json["dimensions"]; 230 dimensions = _json["dimensions"];
237 } 231 }
238 if (_json.containsKey("metricHeader")) { 232 if (_json.containsKey("metricHeader")) {
239 metricHeader = new MetricHeader.fromJson(_json["metricHeader"]); 233 metricHeader = new MetricHeader.fromJson(_json["metricHeader"]);
240 } 234 }
241 } 235 }
242 236
243 core.Map<core.String, core.Object> toJson() { 237 core.Map<core.String, core.Object> toJson() {
244 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 238 final core.Map<core.String, core.Object> _json =
239 new core.Map<core.String, core.Object>();
245 if (dimensions != null) { 240 if (dimensions != null) {
246 _json["dimensions"] = dimensions; 241 _json["dimensions"] = dimensions;
247 } 242 }
248 if (metricHeader != null) { 243 if (metricHeader != null) {
249 _json["metricHeader"] = (metricHeader).toJson(); 244 _json["metricHeader"] = (metricHeader).toJson();
250 } 245 }
251 return _json; 246 return _json;
252 } 247 }
253 } 248 }
254 249
255 /** 250 /// A contiguous set of days: startDate, startDate + 1 day, ..., endDate.
256 * A contiguous set of days: startDate, startDate + 1 day, ..., endDate. 251 /// The start and end dates are specified in
257 * The start and end dates are specified in 252 /// [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format `YYYY-MM-DD`.
258 * [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format `YYYY-MM-DD`.
259 */
260 class DateRange { 253 class DateRange {
261 /** The end date for the query in the format `YYYY-MM-DD`. */ 254 /// The end date for the query in the format `YYYY-MM-DD`.
262 core.String endDate; 255 core.String endDate;
263 /** The start date for the query in the format `YYYY-MM-DD`. */ 256
257 /// The start date for the query in the format `YYYY-MM-DD`.
264 core.String startDate; 258 core.String startDate;
265 259
266 DateRange(); 260 DateRange();
267 261
268 DateRange.fromJson(core.Map _json) { 262 DateRange.fromJson(core.Map _json) {
269 if (_json.containsKey("endDate")) { 263 if (_json.containsKey("endDate")) {
270 endDate = _json["endDate"]; 264 endDate = _json["endDate"];
271 } 265 }
272 if (_json.containsKey("startDate")) { 266 if (_json.containsKey("startDate")) {
273 startDate = _json["startDate"]; 267 startDate = _json["startDate"];
274 } 268 }
275 } 269 }
276 270
277 core.Map<core.String, core.Object> toJson() { 271 core.Map<core.String, core.Object> toJson() {
278 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 272 final core.Map<core.String, core.Object> _json =
273 new core.Map<core.String, core.Object>();
279 if (endDate != null) { 274 if (endDate != null) {
280 _json["endDate"] = endDate; 275 _json["endDate"] = endDate;
281 } 276 }
282 if (startDate != null) { 277 if (startDate != null) {
283 _json["startDate"] = startDate; 278 _json["startDate"] = startDate;
284 } 279 }
285 return _json; 280 return _json;
286 } 281 }
287 } 282 }
288 283
289 /** 284 /// Used to return a list of metrics for a single DateRange / dimension
290 * Used to return a list of metrics for a single DateRange / dimension 285 /// combination
291 * combination
292 */
293 class DateRangeValues { 286 class DateRangeValues {
294 /** The values of each pivot region. */ 287 /// The values of each pivot region.
295 core.List<PivotValueRegion> pivotValueRegions; 288 core.List<PivotValueRegion> pivotValueRegions;
296 /** Each value corresponds to each Metric in the request. */ 289
290 /// Each value corresponds to each Metric in the request.
297 core.List<core.String> values; 291 core.List<core.String> values;
298 292
299 DateRangeValues(); 293 DateRangeValues();
300 294
301 DateRangeValues.fromJson(core.Map _json) { 295 DateRangeValues.fromJson(core.Map _json) {
302 if (_json.containsKey("pivotValueRegions")) { 296 if (_json.containsKey("pivotValueRegions")) {
303 pivotValueRegions = _json["pivotValueRegions"].map((value) => new PivotVal ueRegion.fromJson(value)).toList(); 297 pivotValueRegions = _json["pivotValueRegions"]
298 .map((value) => new PivotValueRegion.fromJson(value))
299 .toList();
304 } 300 }
305 if (_json.containsKey("values")) { 301 if (_json.containsKey("values")) {
306 values = _json["values"]; 302 values = _json["values"];
307 } 303 }
308 } 304 }
309 305
310 core.Map<core.String, core.Object> toJson() { 306 core.Map<core.String, core.Object> toJson() {
311 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 307 final core.Map<core.String, core.Object> _json =
308 new core.Map<core.String, core.Object>();
312 if (pivotValueRegions != null) { 309 if (pivotValueRegions != null) {
313 _json["pivotValueRegions"] = pivotValueRegions.map((value) => (value).toJs on()).toList(); 310 _json["pivotValueRegions"] =
311 pivotValueRegions.map((value) => (value).toJson()).toList();
314 } 312 }
315 if (values != null) { 313 if (values != null) {
316 _json["values"] = values; 314 _json["values"] = values;
317 } 315 }
318 return _json; 316 return _json;
319 } 317 }
320 } 318 }
321 319
322 /** 320 /// [Dimensions](https://support.google.com/analytics/answer/1033861)
323 * [Dimensions](https://support.google.com/analytics/answer/1033861) 321 /// are attributes of your data. For example, the dimension `ga:city`
324 * are attributes of your data. For example, the dimension `ga:city` 322 /// indicates the city, for example, "Paris" or "New York", from which
325 * indicates the city, for example, "Paris" or "New York", from which 323 /// a session originates.
326 * a session originates.
327 */
328 class Dimension { 324 class Dimension {
329 /** 325 /// If non-empty, we place dimension values into buckets after string to
330 * If non-empty, we place dimension values into buckets after string to 326 /// int64. Dimension values that are not the string representation of an
331 * int64. Dimension values that are not the string representation of an 327 /// integral value will be converted to zero. The bucket values have to be
332 * integral value will be converted to zero. The bucket values have to be in 328 /// in
333 * increasing order. Each bucket is closed on the lower end, and open on the 329 /// increasing order. Each bucket is closed on the lower end, and open on
334 * upper end. The "first" bucket includes all values less than the first 330 /// the
335 * boundary, the "last" bucket includes all values up to infinity. Dimension 331 /// upper end. The "first" bucket includes all values less than the first
336 * values that fall in a bucket get transformed to a new dimension value. For 332 /// boundary, the "last" bucket includes all values up to infinity. Dimension
337 * example, if one gives a list of "0, 1, 3, 4, 7", then we return the 333 /// values that fall in a bucket get transformed to a new dimension value.
338 * following buckets: 334 /// For
339 * 335 /// example, if one gives a list of "0, 1, 3, 4, 7", then we return the
340 * - bucket #1: values < 0, dimension value "<0" 336 /// following buckets:
341 * - bucket #2: values in [0,1), dimension value "0" 337 ///
342 * - bucket #3: values in [1,3), dimension value "1-2" 338 /// - bucket #1: values < 0, dimension value "<0"
343 * - bucket #4: values in [3,4), dimension value "3" 339 /// - bucket #2: values in [0,1), dimension value "0"
344 * - bucket #5: values in [4,7), dimension value "4-6" 340 /// - bucket #3: values in [1,3), dimension value "1-2"
345 * - bucket #6: values >= 7, dimension value "7+" 341 /// - bucket #4: values in [3,4), dimension value "3"
346 * 342 /// - bucket #5: values in [4,7), dimension value "4-6"
347 * NOTE: If you are applying histogram mutation on any dimension, and using 343 /// - bucket #6: values >= 7, dimension value "7+"
348 * that dimension in sort, you will want to use the sort type 344 ///
349 * `HISTOGRAM_BUCKET` for that purpose. Without that the dimension values 345 /// NOTE: If you are applying histogram mutation on any dimension, and using
350 * will be sorted according to dictionary 346 /// that dimension in sort, you will want to use the sort type
351 * (lexicographic) order. For example the ascending dictionary order is: 347 /// `HISTOGRAM_BUCKET` for that purpose. Without that the dimension values
352 * 348 /// will be sorted according to dictionary
353 * "<50", "1001+", "121-1000", "50-120" 349 /// (lexicographic) order. For example the ascending dictionary order is:
354 * 350 ///
355 * And the ascending `HISTOGRAM_BUCKET` order is: 351 /// "<50", "1001+", "121-1000", "50-120"
356 * 352 ///
357 * "<50", "50-120", "121-1000", "1001+" 353 /// And the ascending `HISTOGRAM_BUCKET` order is:
358 * 354 ///
359 * The client has to explicitly request `"orderType": "HISTOGRAM_BUCKET"` 355 /// "<50", "50-120", "121-1000", "1001+"
360 * for a histogram-mutated dimension. 356 ///
361 */ 357 /// The client has to explicitly request `"orderType": "HISTOGRAM_BUCKET"`
358 /// for a histogram-mutated dimension.
362 core.List<core.String> histogramBuckets; 359 core.List<core.String> histogramBuckets;
363 /** Name of the dimension to fetch, for example `ga:browser`. */ 360
361 /// Name of the dimension to fetch, for example `ga:browser`.
364 core.String name; 362 core.String name;
365 363
366 Dimension(); 364 Dimension();
367 365
368 Dimension.fromJson(core.Map _json) { 366 Dimension.fromJson(core.Map _json) {
369 if (_json.containsKey("histogramBuckets")) { 367 if (_json.containsKey("histogramBuckets")) {
370 histogramBuckets = _json["histogramBuckets"]; 368 histogramBuckets = _json["histogramBuckets"];
371 } 369 }
372 if (_json.containsKey("name")) { 370 if (_json.containsKey("name")) {
373 name = _json["name"]; 371 name = _json["name"];
374 } 372 }
375 } 373 }
376 374
377 core.Map<core.String, core.Object> toJson() { 375 core.Map<core.String, core.Object> toJson() {
378 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 376 final core.Map<core.String, core.Object> _json =
377 new core.Map<core.String, core.Object>();
379 if (histogramBuckets != null) { 378 if (histogramBuckets != null) {
380 _json["histogramBuckets"] = histogramBuckets; 379 _json["histogramBuckets"] = histogramBuckets;
381 } 380 }
382 if (name != null) { 381 if (name != null) {
383 _json["name"] = name; 382 _json["name"] = name;
384 } 383 }
385 return _json; 384 return _json;
386 } 385 }
387 } 386 }
388 387
389 /** Dimension filter specifies the filtering options on a dimension. */ 388 /// Dimension filter specifies the filtering options on a dimension.
390 class DimensionFilter { 389 class DimensionFilter {
391 /** Should the match be case sensitive? Default is false. */ 390 /// Should the match be case sensitive? Default is false.
392 core.bool caseSensitive; 391 core.bool caseSensitive;
393 /** 392
394 * The dimension to filter on. A DimensionFilter must contain a dimension. 393 /// The dimension to filter on. A DimensionFilter must contain a dimension.
395 */
396 core.String dimensionName; 394 core.String dimensionName;
397 /** 395
398 * Strings or regular expression to match against. Only the first value of 396 /// Strings or regular expression to match against. Only the first value of
399 * the list is used for comparison unless the operator is `IN_LIST`. 397 /// the list is used for comparison unless the operator is `IN_LIST`.
400 * If `IN_LIST` operator, then the entire list is used to filter the 398 /// If `IN_LIST` operator, then the entire list is used to filter the
401 * dimensions as explained in the description of the `IN_LIST` operator. 399 /// dimensions as explained in the description of the `IN_LIST` operator.
402 */
403 core.List<core.String> expressions; 400 core.List<core.String> expressions;
404 /** 401
405 * Logical `NOT` operator. If this boolean is set to true, then the matching 402 /// Logical `NOT` operator. If this boolean is set to true, then the matching
406 * dimension values will be excluded in the report. The default is false. 403 /// dimension values will be excluded in the report. The default is false.
407 */
408 core.bool not; 404 core.bool not;
409 /** 405
410 * How to match the dimension to the expression. The default is REGEXP. 406 /// How to match the dimension to the expression. The default is REGEXP.
411 * Possible string values are: 407 /// Possible string values are:
412 * - "OPERATOR_UNSPECIFIED" : If the match type is unspecified, it is treated 408 /// - "OPERATOR_UNSPECIFIED" : If the match type is unspecified, it is
413 * as a `REGEXP`. 409 /// treated as a `REGEXP`.
414 * - "REGEXP" : The match expression is treated as a regular expression. All 410 /// - "REGEXP" : The match expression is treated as a regular expression. All
415 * match types 411 /// match types
416 * are not treated as regular expressions. 412 /// are not treated as regular expressions.
417 * - "BEGINS_WITH" : Matches the value which begin with the match expression 413 /// - "BEGINS_WITH" : Matches the value which begin with the match expression
418 * provided. 414 /// provided.
419 * - "ENDS_WITH" : Matches the values which end with the match expression 415 /// - "ENDS_WITH" : Matches the values which end with the match expression
420 * provided. 416 /// provided.
421 * - "PARTIAL" : Substring match. 417 /// - "PARTIAL" : Substring match.
422 * - "EXACT" : The value should match the match expression entirely. 418 /// - "EXACT" : The value should match the match expression entirely.
423 * - "NUMERIC_EQUAL" : Integer comparison filters. 419 /// - "NUMERIC_EQUAL" : Integer comparison filters.
424 * case sensitivity is ignored for these and the expression 420 /// case sensitivity is ignored for these and the expression
425 * is assumed to be a string representing an integer. 421 /// is assumed to be a string representing an integer.
426 * Failure conditions: 422 /// Failure conditions:
427 * 423 ///
428 * - If expression is not a valid int64, the client should expect 424 /// - If expression is not a valid int64, the client should expect
429 * an error. 425 /// an error.
430 * - Input dimensions that are not valid int64 values will never match the 426 /// - Input dimensions that are not valid int64 values will never match the
431 * filter. 427 /// filter.
432 * - "NUMERIC_GREATER_THAN" : Checks if the dimension is numerically greater 428 /// - "NUMERIC_GREATER_THAN" : Checks if the dimension is numerically greater
433 * than the match 429 /// than the match
434 * expression. Read the description for `NUMERIC_EQUALS` for restrictions. 430 /// expression. Read the description for `NUMERIC_EQUALS` for restrictions.
435 * - "NUMERIC_LESS_THAN" : Checks if the dimension is numerically less than 431 /// - "NUMERIC_LESS_THAN" : Checks if the dimension is numerically less than
436 * the match expression. 432 /// the match expression.
437 * Read the description for `NUMERIC_EQUALS` for restrictions. 433 /// Read the description for `NUMERIC_EQUALS` for restrictions.
438 * - "IN_LIST" : This option is used to specify a dimension filter whose 434 /// - "IN_LIST" : This option is used to specify a dimension filter whose
439 * expression can 435 /// expression can
440 * take any value from a selected list of values. This helps avoiding 436 /// take any value from a selected list of values. This helps avoiding
441 * evaluating multiple exact match dimension filters which are OR'ed for 437 /// evaluating multiple exact match dimension filters which are OR'ed for
442 * every single response row. For example: 438 /// every single response row. For example:
443 * 439 ///
444 * expressions: ["A", "B", "C"] 440 /// expressions: ["A", "B", "C"]
445 * 441 ///
446 * Any response row whose dimension has it is value as A, B or C, matches 442 /// Any response row whose dimension has it is value as A, B or C, matches
447 * this DimensionFilter. 443 /// this DimensionFilter.
448 */
449 core.String operator; 444 core.String operator;
450 445
451 DimensionFilter(); 446 DimensionFilter();
452 447
453 DimensionFilter.fromJson(core.Map _json) { 448 DimensionFilter.fromJson(core.Map _json) {
454 if (_json.containsKey("caseSensitive")) { 449 if (_json.containsKey("caseSensitive")) {
455 caseSensitive = _json["caseSensitive"]; 450 caseSensitive = _json["caseSensitive"];
456 } 451 }
457 if (_json.containsKey("dimensionName")) { 452 if (_json.containsKey("dimensionName")) {
458 dimensionName = _json["dimensionName"]; 453 dimensionName = _json["dimensionName"];
459 } 454 }
460 if (_json.containsKey("expressions")) { 455 if (_json.containsKey("expressions")) {
461 expressions = _json["expressions"]; 456 expressions = _json["expressions"];
462 } 457 }
463 if (_json.containsKey("not")) { 458 if (_json.containsKey("not")) {
464 not = _json["not"]; 459 not = _json["not"];
465 } 460 }
466 if (_json.containsKey("operator")) { 461 if (_json.containsKey("operator")) {
467 operator = _json["operator"]; 462 operator = _json["operator"];
468 } 463 }
469 } 464 }
470 465
471 core.Map<core.String, core.Object> toJson() { 466 core.Map<core.String, core.Object> toJson() {
472 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 467 final core.Map<core.String, core.Object> _json =
468 new core.Map<core.String, core.Object>();
473 if (caseSensitive != null) { 469 if (caseSensitive != null) {
474 _json["caseSensitive"] = caseSensitive; 470 _json["caseSensitive"] = caseSensitive;
475 } 471 }
476 if (dimensionName != null) { 472 if (dimensionName != null) {
477 _json["dimensionName"] = dimensionName; 473 _json["dimensionName"] = dimensionName;
478 } 474 }
479 if (expressions != null) { 475 if (expressions != null) {
480 _json["expressions"] = expressions; 476 _json["expressions"] = expressions;
481 } 477 }
482 if (not != null) { 478 if (not != null) {
483 _json["not"] = not; 479 _json["not"] = not;
484 } 480 }
485 if (operator != null) { 481 if (operator != null) {
486 _json["operator"] = operator; 482 _json["operator"] = operator;
487 } 483 }
488 return _json; 484 return _json;
489 } 485 }
490 } 486 }
491 487
492 /** 488 /// A group of dimension filters. Set the operator value to specify how
493 * A group of dimension filters. Set the operator value to specify how 489 /// the filters are logically combined.
494 * the filters are logically combined.
495 */
496 class DimensionFilterClause { 490 class DimensionFilterClause {
497 /** 491 /// The repeated set of filters. They are logically combined based on the
498 * The repeated set of filters. They are logically combined based on the 492 /// operator specified.
499 * operator specified.
500 */
501 core.List<DimensionFilter> filters; 493 core.List<DimensionFilter> filters;
502 /** 494
503 * The operator for combining multiple dimension filters. If unspecified, it 495 /// The operator for combining multiple dimension filters. If unspecified, it
504 * is treated as an `OR`. 496 /// is treated as an `OR`.
505 * Possible string values are: 497 /// Possible string values are:
506 * - "OPERATOR_UNSPECIFIED" : Unspecified operator. It is treated as an `OR`. 498 /// - "OPERATOR_UNSPECIFIED" : Unspecified operator. It is treated as an
507 * - "OR" : The logical `OR` operator. 499 /// `OR`.
508 * - "AND" : The logical `AND` operator. 500 /// - "OR" : The logical `OR` operator.
509 */ 501 /// - "AND" : The logical `AND` operator.
510 core.String operator; 502 core.String operator;
511 503
512 DimensionFilterClause(); 504 DimensionFilterClause();
513 505
514 DimensionFilterClause.fromJson(core.Map _json) { 506 DimensionFilterClause.fromJson(core.Map _json) {
515 if (_json.containsKey("filters")) { 507 if (_json.containsKey("filters")) {
516 filters = _json["filters"].map((value) => new DimensionFilter.fromJson(val ue)).toList(); 508 filters = _json["filters"]
509 .map((value) => new DimensionFilter.fromJson(value))
510 .toList();
517 } 511 }
518 if (_json.containsKey("operator")) { 512 if (_json.containsKey("operator")) {
519 operator = _json["operator"]; 513 operator = _json["operator"];
520 } 514 }
521 } 515 }
522 516
523 core.Map<core.String, core.Object> toJson() { 517 core.Map<core.String, core.Object> toJson() {
524 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 518 final core.Map<core.String, core.Object> _json =
519 new core.Map<core.String, core.Object>();
525 if (filters != null) { 520 if (filters != null) {
526 _json["filters"] = filters.map((value) => (value).toJson()).toList(); 521 _json["filters"] = filters.map((value) => (value).toJson()).toList();
527 } 522 }
528 if (operator != null) { 523 if (operator != null) {
529 _json["operator"] = operator; 524 _json["operator"] = operator;
530 } 525 }
531 return _json; 526 return _json;
532 } 527 }
533 } 528 }
534 529
535 /** 530 /// Dynamic segment definition for defining the segment within the request.
536 * Dynamic segment definition for defining the segment within the request. 531 /// A segment can select users, sessions or both.
537 * A segment can select users, sessions or both.
538 */
539 class DynamicSegment { 532 class DynamicSegment {
540 /** The name of the dynamic segment. */ 533 /// The name of the dynamic segment.
541 core.String name; 534 core.String name;
542 /** Session Segment to select sessions to include in the segment. */ 535
536 /// Session Segment to select sessions to include in the segment.
543 SegmentDefinition sessionSegment; 537 SegmentDefinition sessionSegment;
544 /** User Segment to select users to include in the segment. */ 538
539 /// User Segment to select users to include in the segment.
545 SegmentDefinition userSegment; 540 SegmentDefinition userSegment;
546 541
547 DynamicSegment(); 542 DynamicSegment();
548 543
549 DynamicSegment.fromJson(core.Map _json) { 544 DynamicSegment.fromJson(core.Map _json) {
550 if (_json.containsKey("name")) { 545 if (_json.containsKey("name")) {
551 name = _json["name"]; 546 name = _json["name"];
552 } 547 }
553 if (_json.containsKey("sessionSegment")) { 548 if (_json.containsKey("sessionSegment")) {
554 sessionSegment = new SegmentDefinition.fromJson(_json["sessionSegment"]); 549 sessionSegment = new SegmentDefinition.fromJson(_json["sessionSegment"]);
555 } 550 }
556 if (_json.containsKey("userSegment")) { 551 if (_json.containsKey("userSegment")) {
557 userSegment = new SegmentDefinition.fromJson(_json["userSegment"]); 552 userSegment = new SegmentDefinition.fromJson(_json["userSegment"]);
558 } 553 }
559 } 554 }
560 555
561 core.Map<core.String, core.Object> toJson() { 556 core.Map<core.String, core.Object> toJson() {
562 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 557 final core.Map<core.String, core.Object> _json =
558 new core.Map<core.String, core.Object>();
563 if (name != null) { 559 if (name != null) {
564 _json["name"] = name; 560 _json["name"] = name;
565 } 561 }
566 if (sessionSegment != null) { 562 if (sessionSegment != null) {
567 _json["sessionSegment"] = (sessionSegment).toJson(); 563 _json["sessionSegment"] = (sessionSegment).toJson();
568 } 564 }
569 if (userSegment != null) { 565 if (userSegment != null) {
570 _json["userSegment"] = (userSegment).toJson(); 566 _json["userSegment"] = (userSegment).toJson();
571 } 567 }
572 return _json; 568 return _json;
573 } 569 }
574 } 570 }
575 571
576 /** The batch request containing multiple report request. */ 572 /// The batch request containing multiple report request.
577 class GetReportsRequest { 573 class GetReportsRequest {
578 /** 574 /// Requests, each request will have a separate response.
579 * Requests, each request will have a separate response. 575 /// There can be a maximum of 5 requests. All requests should have the same
580 * There can be a maximum of 5 requests. All requests should have the same 576 /// `dateRanges`, `viewId`, `segments`, `samplingLevel`, and `cohortGroup`.
581 * `dateRanges`, `viewId`, `segments`, `samplingLevel`, and `cohortGroup`.
582 */
583 core.List<ReportRequest> reportRequests; 577 core.List<ReportRequest> reportRequests;
584 578
585 GetReportsRequest(); 579 GetReportsRequest();
586 580
587 GetReportsRequest.fromJson(core.Map _json) { 581 GetReportsRequest.fromJson(core.Map _json) {
588 if (_json.containsKey("reportRequests")) { 582 if (_json.containsKey("reportRequests")) {
589 reportRequests = _json["reportRequests"].map((value) => new ReportRequest. fromJson(value)).toList(); 583 reportRequests = _json["reportRequests"]
584 .map((value) => new ReportRequest.fromJson(value))
585 .toList();
590 } 586 }
591 } 587 }
592 588
593 core.Map<core.String, core.Object> toJson() { 589 core.Map<core.String, core.Object> toJson() {
594 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 590 final core.Map<core.String, core.Object> _json =
591 new core.Map<core.String, core.Object>();
595 if (reportRequests != null) { 592 if (reportRequests != null) {
596 _json["reportRequests"] = reportRequests.map((value) => (value).toJson()). toList(); 593 _json["reportRequests"] =
594 reportRequests.map((value) => (value).toJson()).toList();
597 } 595 }
598 return _json; 596 return _json;
599 } 597 }
600 } 598 }
601 599
602 /** 600 /// The main response class which holds the reports from the Reporting API
603 * The main response class which holds the reports from the Reporting API 601 /// `batchGet` call.
604 * `batchGet` call.
605 */
606 class GetReportsResponse { 602 class GetReportsResponse {
607 /** Responses corresponding to each of the request. */ 603 /// Responses corresponding to each of the request.
608 core.List<Report> reports; 604 core.List<Report> reports;
609 605
610 GetReportsResponse(); 606 GetReportsResponse();
611 607
612 GetReportsResponse.fromJson(core.Map _json) { 608 GetReportsResponse.fromJson(core.Map _json) {
613 if (_json.containsKey("reports")) { 609 if (_json.containsKey("reports")) {
614 reports = _json["reports"].map((value) => new Report.fromJson(value)).toLi st(); 610 reports =
611 _json["reports"].map((value) => new Report.fromJson(value)).toList();
615 } 612 }
616 } 613 }
617 614
618 core.Map<core.String, core.Object> toJson() { 615 core.Map<core.String, core.Object> toJson() {
619 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 616 final core.Map<core.String, core.Object> _json =
617 new core.Map<core.String, core.Object>();
620 if (reports != null) { 618 if (reports != null) {
621 _json["reports"] = reports.map((value) => (value).toJson()).toList(); 619 _json["reports"] = reports.map((value) => (value).toJson()).toList();
622 } 620 }
623 return _json; 621 return _json;
624 } 622 }
625 } 623 }
626 624
627 /** 625 /// [Metrics](https://support.google.com/analytics/answer/1033861)
628 * [Metrics](https://support.google.com/analytics/answer/1033861) 626 /// are the quantitative measurements. For example, the metric `ga:users`
629 * are the quantitative measurements. For example, the metric `ga:users` 627 /// indicates the total number of users for the requested time period.
630 * indicates the total number of users for the requested time period.
631 */
632 class Metric { 628 class Metric {
633 /** 629 /// An alias for the metric expression is an alternate name for the
634 * An alias for the metric expression is an alternate name for the 630 /// expression. The alias can be used for filtering and sorting. This field
635 * expression. The alias can be used for filtering and sorting. This field 631 /// is optional and is useful if the expression is not a single metric but
636 * is optional and is useful if the expression is not a single metric but 632 /// a complex expression which cannot be used in filtering and sorting.
637 * a complex expression which cannot be used in filtering and sorting. 633 /// The alias is also used in the response column header.
638 * The alias is also used in the response column header.
639 */
640 core.String alias; 634 core.String alias;
641 /** 635
642 * A metric expression in the request. An expression is constructed from one 636 /// A metric expression in the request. An expression is constructed from one
643 * or more metrics and numbers. Accepted operators include: Plus (+), Minus 637 /// or more metrics and numbers. Accepted operators include: Plus (+), Minus
644 * (-), Negation (Unary -), Divided by (/), Multiplied by (*), Parenthesis, 638 /// (-), Negation (Unary -), Divided by (/), Multiplied by (*), Parenthesis,
645 * Positive cardinal numbers (0-9), can include decimals and is limited to 639 /// Positive cardinal numbers (0-9), can include decimals and is limited to
646 * 1024 characters. Example `ga:totalRefunds/ga:users`, in most cases the 640 /// 1024 characters. Example `ga:totalRefunds/ga:users`, in most cases the
647 * metric expression is just a single metric name like `ga:users`. 641 /// metric expression is just a single metric name like `ga:users`.
648 * Adding mixed `MetricType` (E.g., `CURRENCY` + `PERCENTAGE`) metrics 642 /// Adding mixed `MetricType` (E.g., `CURRENCY` + `PERCENTAGE`) metrics
649 * will result in unexpected results. 643 /// will result in unexpected results.
650 */
651 core.String expression; 644 core.String expression;
652 /** 645
653 * Specifies how the metric expression should be formatted, for example 646 /// Specifies how the metric expression should be formatted, for example
654 * `INTEGER`. 647 /// `INTEGER`.
655 * Possible string values are: 648 /// Possible string values are:
656 * - "METRIC_TYPE_UNSPECIFIED" : Metric type is unspecified. 649 /// - "METRIC_TYPE_UNSPECIFIED" : Metric type is unspecified.
657 * - "INTEGER" : Integer metric. 650 /// - "INTEGER" : Integer metric.
658 * - "FLOAT" : Float metric. 651 /// - "FLOAT" : Float metric.
659 * - "CURRENCY" : Currency metric. 652 /// - "CURRENCY" : Currency metric.
660 * - "PERCENT" : Percentage metric. 653 /// - "PERCENT" : Percentage metric.
661 * - "TIME" : Time metric in `HH:MM:SS` format. 654 /// - "TIME" : Time metric in `HH:MM:SS` format.
662 */
663 core.String formattingType; 655 core.String formattingType;
664 656
665 Metric(); 657 Metric();
666 658
667 Metric.fromJson(core.Map _json) { 659 Metric.fromJson(core.Map _json) {
668 if (_json.containsKey("alias")) { 660 if (_json.containsKey("alias")) {
669 alias = _json["alias"]; 661 alias = _json["alias"];
670 } 662 }
671 if (_json.containsKey("expression")) { 663 if (_json.containsKey("expression")) {
672 expression = _json["expression"]; 664 expression = _json["expression"];
673 } 665 }
674 if (_json.containsKey("formattingType")) { 666 if (_json.containsKey("formattingType")) {
675 formattingType = _json["formattingType"]; 667 formattingType = _json["formattingType"];
676 } 668 }
677 } 669 }
678 670
679 core.Map<core.String, core.Object> toJson() { 671 core.Map<core.String, core.Object> toJson() {
680 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 672 final core.Map<core.String, core.Object> _json =
673 new core.Map<core.String, core.Object>();
681 if (alias != null) { 674 if (alias != null) {
682 _json["alias"] = alias; 675 _json["alias"] = alias;
683 } 676 }
684 if (expression != null) { 677 if (expression != null) {
685 _json["expression"] = expression; 678 _json["expression"] = expression;
686 } 679 }
687 if (formattingType != null) { 680 if (formattingType != null) {
688 _json["formattingType"] = formattingType; 681 _json["formattingType"] = formattingType;
689 } 682 }
690 return _json; 683 return _json;
691 } 684 }
692 } 685 }
693 686
694 /** MetricFilter specifies the filter on a metric. */ 687 /// MetricFilter specifies the filter on a metric.
695 class MetricFilter { 688 class MetricFilter {
696 /** The value to compare against. */ 689 /// The value to compare against.
697 core.String comparisonValue; 690 core.String comparisonValue;
698 /** 691
699 * The metric that will be filtered on. A metricFilter must contain a metric 692 /// The metric that will be filtered on. A metricFilter must contain a metric
700 * name. A metric name can be an alias earlier defined as a metric or it can 693 /// name. A metric name can be an alias earlier defined as a metric or it can
701 * also be a metric expression. 694 /// also be a metric expression.
702 */
703 core.String metricName; 695 core.String metricName;
704 /** 696
705 * Logical `NOT` operator. If this boolean is set to true, then the matching 697 /// Logical `NOT` operator. If this boolean is set to true, then the matching
706 * metric values will be excluded in the report. The default is false. 698 /// metric values will be excluded in the report. The default is false.
707 */
708 core.bool not; 699 core.bool not;
709 /** 700
710 * Is the metric `EQUAL`, `LESS_THAN` or `GREATER_THAN` the 701 /// Is the metric `EQUAL`, `LESS_THAN` or `GREATER_THAN` the
711 * comparisonValue, the default is `EQUAL`. If the operator is 702 /// comparisonValue, the default is `EQUAL`. If the operator is
712 * `IS_MISSING`, checks if the metric is missing and would ignore the 703 /// `IS_MISSING`, checks if the metric is missing and would ignore the
713 * comparisonValue. 704 /// comparisonValue.
714 * Possible string values are: 705 /// Possible string values are:
715 * - "OPERATOR_UNSPECIFIED" : If the operator is not specified, it is treated 706 /// - "OPERATOR_UNSPECIFIED" : If the operator is not specified, it is
716 * as `EQUAL`. 707 /// treated as `EQUAL`.
717 * - "EQUAL" : Should the value of the metric be exactly equal to the 708 /// - "EQUAL" : Should the value of the metric be exactly equal to the
718 * comparison value. 709 /// comparison value.
719 * - "LESS_THAN" : Should the value of the metric be less than to the 710 /// - "LESS_THAN" : Should the value of the metric be less than to the
720 * comparison value. 711 /// comparison value.
721 * - "GREATER_THAN" : Should the value of the metric be greater than to the 712 /// - "GREATER_THAN" : Should the value of the metric be greater than to the
722 * comparison value. 713 /// comparison value.
723 * - "IS_MISSING" : Validates if the metric is missing. 714 /// - "IS_MISSING" : Validates if the metric is missing.
724 * Doesn't take comparisonValue into account. 715 /// Doesn't take comparisonValue into account.
725 */
726 core.String operator; 716 core.String operator;
727 717
728 MetricFilter(); 718 MetricFilter();
729 719
730 MetricFilter.fromJson(core.Map _json) { 720 MetricFilter.fromJson(core.Map _json) {
731 if (_json.containsKey("comparisonValue")) { 721 if (_json.containsKey("comparisonValue")) {
732 comparisonValue = _json["comparisonValue"]; 722 comparisonValue = _json["comparisonValue"];
733 } 723 }
734 if (_json.containsKey("metricName")) { 724 if (_json.containsKey("metricName")) {
735 metricName = _json["metricName"]; 725 metricName = _json["metricName"];
736 } 726 }
737 if (_json.containsKey("not")) { 727 if (_json.containsKey("not")) {
738 not = _json["not"]; 728 not = _json["not"];
739 } 729 }
740 if (_json.containsKey("operator")) { 730 if (_json.containsKey("operator")) {
741 operator = _json["operator"]; 731 operator = _json["operator"];
742 } 732 }
743 } 733 }
744 734
745 core.Map<core.String, core.Object> toJson() { 735 core.Map<core.String, core.Object> toJson() {
746 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 736 final core.Map<core.String, core.Object> _json =
737 new core.Map<core.String, core.Object>();
747 if (comparisonValue != null) { 738 if (comparisonValue != null) {
748 _json["comparisonValue"] = comparisonValue; 739 _json["comparisonValue"] = comparisonValue;
749 } 740 }
750 if (metricName != null) { 741 if (metricName != null) {
751 _json["metricName"] = metricName; 742 _json["metricName"] = metricName;
752 } 743 }
753 if (not != null) { 744 if (not != null) {
754 _json["not"] = not; 745 _json["not"] = not;
755 } 746 }
756 if (operator != null) { 747 if (operator != null) {
757 _json["operator"] = operator; 748 _json["operator"] = operator;
758 } 749 }
759 return _json; 750 return _json;
760 } 751 }
761 } 752 }
762 753
763 /** 754 /// Represents a group of metric filters.
764 * Represents a group of metric filters. 755 /// Set the operator value to specify how the filters are logically combined.
765 * Set the operator value to specify how the filters are logically combined.
766 */
767 class MetricFilterClause { 756 class MetricFilterClause {
768 /** 757 /// The repeated set of filters. They are logically combined based on the
769 * The repeated set of filters. They are logically combined based on the 758 /// operator specified.
770 * operator specified.
771 */
772 core.List<MetricFilter> filters; 759 core.List<MetricFilter> filters;
773 /** 760
774 * The operator for combining multiple metric filters. If unspecified, it is 761 /// The operator for combining multiple metric filters. If unspecified, it is
775 * treated as an `OR`. 762 /// treated as an `OR`.
776 * Possible string values are: 763 /// Possible string values are:
777 * - "OPERATOR_UNSPECIFIED" : Unspecified operator. It is treated as an `OR`. 764 /// - "OPERATOR_UNSPECIFIED" : Unspecified operator. It is treated as an
778 * - "OR" : The logical `OR` operator. 765 /// `OR`.
779 * - "AND" : The logical `AND` operator. 766 /// - "OR" : The logical `OR` operator.
780 */ 767 /// - "AND" : The logical `AND` operator.
781 core.String operator; 768 core.String operator;
782 769
783 MetricFilterClause(); 770 MetricFilterClause();
784 771
785 MetricFilterClause.fromJson(core.Map _json) { 772 MetricFilterClause.fromJson(core.Map _json) {
786 if (_json.containsKey("filters")) { 773 if (_json.containsKey("filters")) {
787 filters = _json["filters"].map((value) => new MetricFilter.fromJson(value) ).toList(); 774 filters = _json["filters"]
775 .map((value) => new MetricFilter.fromJson(value))
776 .toList();
788 } 777 }
789 if (_json.containsKey("operator")) { 778 if (_json.containsKey("operator")) {
790 operator = _json["operator"]; 779 operator = _json["operator"];
791 } 780 }
792 } 781 }
793 782
794 core.Map<core.String, core.Object> toJson() { 783 core.Map<core.String, core.Object> toJson() {
795 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 784 final core.Map<core.String, core.Object> _json =
785 new core.Map<core.String, core.Object>();
796 if (filters != null) { 786 if (filters != null) {
797 _json["filters"] = filters.map((value) => (value).toJson()).toList(); 787 _json["filters"] = filters.map((value) => (value).toJson()).toList();
798 } 788 }
799 if (operator != null) { 789 if (operator != null) {
800 _json["operator"] = operator; 790 _json["operator"] = operator;
801 } 791 }
802 return _json; 792 return _json;
803 } 793 }
804 } 794 }
805 795
806 /** The headers for the metrics. */ 796 /// The headers for the metrics.
807 class MetricHeader { 797 class MetricHeader {
808 /** Headers for the metrics in the response. */ 798 /// Headers for the metrics in the response.
809 core.List<MetricHeaderEntry> metricHeaderEntries; 799 core.List<MetricHeaderEntry> metricHeaderEntries;
810 /** Headers for the pivots in the response. */ 800
801 /// Headers for the pivots in the response.
811 core.List<PivotHeader> pivotHeaders; 802 core.List<PivotHeader> pivotHeaders;
812 803
813 MetricHeader(); 804 MetricHeader();
814 805
815 MetricHeader.fromJson(core.Map _json) { 806 MetricHeader.fromJson(core.Map _json) {
816 if (_json.containsKey("metricHeaderEntries")) { 807 if (_json.containsKey("metricHeaderEntries")) {
817 metricHeaderEntries = _json["metricHeaderEntries"].map((value) => new Metr icHeaderEntry.fromJson(value)).toList(); 808 metricHeaderEntries = _json["metricHeaderEntries"]
809 .map((value) => new MetricHeaderEntry.fromJson(value))
810 .toList();
818 } 811 }
819 if (_json.containsKey("pivotHeaders")) { 812 if (_json.containsKey("pivotHeaders")) {
820 pivotHeaders = _json["pivotHeaders"].map((value) => new PivotHeader.fromJs on(value)).toList(); 813 pivotHeaders = _json["pivotHeaders"]
814 .map((value) => new PivotHeader.fromJson(value))
815 .toList();
821 } 816 }
822 } 817 }
823 818
824 core.Map<core.String, core.Object> toJson() { 819 core.Map<core.String, core.Object> toJson() {
825 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 820 final core.Map<core.String, core.Object> _json =
821 new core.Map<core.String, core.Object>();
826 if (metricHeaderEntries != null) { 822 if (metricHeaderEntries != null) {
827 _json["metricHeaderEntries"] = metricHeaderEntries.map((value) => (value). toJson()).toList(); 823 _json["metricHeaderEntries"] =
824 metricHeaderEntries.map((value) => (value).toJson()).toList();
828 } 825 }
829 if (pivotHeaders != null) { 826 if (pivotHeaders != null) {
830 _json["pivotHeaders"] = pivotHeaders.map((value) => (value).toJson()).toLi st(); 827 _json["pivotHeaders"] =
828 pivotHeaders.map((value) => (value).toJson()).toList();
831 } 829 }
832 return _json; 830 return _json;
833 } 831 }
834 } 832 }
835 833
836 /** Header for the metrics. */ 834 /// Header for the metrics.
837 class MetricHeaderEntry { 835 class MetricHeaderEntry {
838 /** The name of the header. */ 836 /// The name of the header.
839 core.String name; 837 core.String name;
840 /** 838
841 * The type of the metric, for example `INTEGER`. 839 /// The type of the metric, for example `INTEGER`.
842 * Possible string values are: 840 /// Possible string values are:
843 * - "METRIC_TYPE_UNSPECIFIED" : Metric type is unspecified. 841 /// - "METRIC_TYPE_UNSPECIFIED" : Metric type is unspecified.
844 * - "INTEGER" : Integer metric. 842 /// - "INTEGER" : Integer metric.
845 * - "FLOAT" : Float metric. 843 /// - "FLOAT" : Float metric.
846 * - "CURRENCY" : Currency metric. 844 /// - "CURRENCY" : Currency metric.
847 * - "PERCENT" : Percentage metric. 845 /// - "PERCENT" : Percentage metric.
848 * - "TIME" : Time metric in `HH:MM:SS` format. 846 /// - "TIME" : Time metric in `HH:MM:SS` format.
849 */
850 core.String type; 847 core.String type;
851 848
852 MetricHeaderEntry(); 849 MetricHeaderEntry();
853 850
854 MetricHeaderEntry.fromJson(core.Map _json) { 851 MetricHeaderEntry.fromJson(core.Map _json) {
855 if (_json.containsKey("name")) { 852 if (_json.containsKey("name")) {
856 name = _json["name"]; 853 name = _json["name"];
857 } 854 }
858 if (_json.containsKey("type")) { 855 if (_json.containsKey("type")) {
859 type = _json["type"]; 856 type = _json["type"];
860 } 857 }
861 } 858 }
862 859
863 core.Map<core.String, core.Object> toJson() { 860 core.Map<core.String, core.Object> toJson() {
864 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 861 final core.Map<core.String, core.Object> _json =
862 new core.Map<core.String, core.Object>();
865 if (name != null) { 863 if (name != null) {
866 _json["name"] = name; 864 _json["name"] = name;
867 } 865 }
868 if (type != null) { 866 if (type != null) {
869 _json["type"] = type; 867 _json["type"] = type;
870 } 868 }
871 return _json; 869 return _json;
872 } 870 }
873 } 871 }
874 872
875 /** 873 /// A list of segment filters in the `OR` group are combined with the logical
876 * A list of segment filters in the `OR` group are combined with the logical OR 874 /// OR
877 * operator. 875 /// operator.
878 */
879 class OrFiltersForSegment { 876 class OrFiltersForSegment {
880 /** List of segment filters to be combined with a `OR` operator. */ 877 /// List of segment filters to be combined with a `OR` operator.
881 core.List<SegmentFilterClause> segmentFilterClauses; 878 core.List<SegmentFilterClause> segmentFilterClauses;
882 879
883 OrFiltersForSegment(); 880 OrFiltersForSegment();
884 881
885 OrFiltersForSegment.fromJson(core.Map _json) { 882 OrFiltersForSegment.fromJson(core.Map _json) {
886 if (_json.containsKey("segmentFilterClauses")) { 883 if (_json.containsKey("segmentFilterClauses")) {
887 segmentFilterClauses = _json["segmentFilterClauses"].map((value) => new Se gmentFilterClause.fromJson(value)).toList(); 884 segmentFilterClauses = _json["segmentFilterClauses"]
885 .map((value) => new SegmentFilterClause.fromJson(value))
886 .toList();
888 } 887 }
889 } 888 }
890 889
891 core.Map<core.String, core.Object> toJson() { 890 core.Map<core.String, core.Object> toJson() {
892 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 891 final core.Map<core.String, core.Object> _json =
892 new core.Map<core.String, core.Object>();
893 if (segmentFilterClauses != null) { 893 if (segmentFilterClauses != null) {
894 _json["segmentFilterClauses"] = segmentFilterClauses.map((value) => (value ).toJson()).toList(); 894 _json["segmentFilterClauses"] =
895 segmentFilterClauses.map((value) => (value).toJson()).toList();
895 } 896 }
896 return _json; 897 return _json;
897 } 898 }
898 } 899 }
899 900
900 /** Specifies the sorting options. */ 901 /// Specifies the sorting options.
901 class OrderBy { 902 class OrderBy {
902 /** 903 /// The field which to sort by. The default sort order is ascending. Example:
903 * The field which to sort by. The default sort order is ascending. Example: 904 /// `ga:browser`.
904 * `ga:browser`. 905 /// Note, that you can only specify one field for sort here. For example,
905 * Note, that you can only specify one field for sort here. For example, 906 /// `ga:browser, ga:city` is not valid.
906 * `ga:browser, ga:city` is not valid.
907 */
908 core.String fieldName; 907 core.String fieldName;
909 /** 908
910 * The order type. The default orderType is `VALUE`. 909 /// The order type. The default orderType is `VALUE`.
911 * Possible string values are: 910 /// Possible string values are:
912 * - "ORDER_TYPE_UNSPECIFIED" : Unspecified order type will be treated as sort 911 /// - "ORDER_TYPE_UNSPECIFIED" : Unspecified order type will be treated as
913 * based on value. 912 /// sort based on value.
914 * - "VALUE" : The sort order is based on the value of the chosen column; 913 /// - "VALUE" : The sort order is based on the value of the chosen column;
915 * looks only at 914 /// looks only at
916 * the first date range. 915 /// the first date range.
917 * - "DELTA" : The sort order is based on the difference of the values of the 916 /// - "DELTA" : The sort order is based on the difference of the values of
918 * chosen 917 /// the chosen
919 * column between the first two date ranges. Usable only if there are 918 /// column between the first two date ranges. Usable only if there are
920 * exactly two date ranges. 919 /// exactly two date ranges.
921 * - "SMART" : The sort order is based on weighted value of the chosen column. 920 /// - "SMART" : The sort order is based on weighted value of the chosen
922 * If 921 /// column. If
923 * column has n/d format, then weighted value of this ratio will 922 /// column has n/d format, then weighted value of this ratio will
924 * be `(n + totals.n)/(d + totals.d)` Usable only for metrics that 923 /// be `(n + totals.n)/(d + totals.d)` Usable only for metrics that
925 * represent ratios. 924 /// represent ratios.
926 * - "HISTOGRAM_BUCKET" : Histogram order type is applicable only to dimension 925 /// - "HISTOGRAM_BUCKET" : Histogram order type is applicable only to
927 * columns with 926 /// dimension columns with
928 * non-empty histogram-buckets. 927 /// non-empty histogram-buckets.
929 * - "DIMENSION_AS_INTEGER" : If the dimensions are fixed length numbers, 928 /// - "DIMENSION_AS_INTEGER" : If the dimensions are fixed length numbers,
930 * ordinary sort would just 929 /// ordinary sort would just
931 * work fine. `DIMENSION_AS_INTEGER` can be used if the dimensions are 930 /// work fine. `DIMENSION_AS_INTEGER` can be used if the dimensions are
932 * variable length numbers. 931 /// variable length numbers.
933 */
934 core.String orderType; 932 core.String orderType;
935 /** 933
936 * The sorting order for the field. 934 /// The sorting order for the field.
937 * Possible string values are: 935 /// Possible string values are:
938 * - "SORT_ORDER_UNSPECIFIED" : If the sort order is unspecified, the default 936 /// - "SORT_ORDER_UNSPECIFIED" : If the sort order is unspecified, the
939 * is ascending. 937 /// default is ascending.
940 * - "ASCENDING" : Ascending sort. The field will be sorted in an ascending 938 /// - "ASCENDING" : Ascending sort. The field will be sorted in an ascending
941 * manner. 939 /// manner.
942 * - "DESCENDING" : Descending sort. The field will be sorted in a descending 940 /// - "DESCENDING" : Descending sort. The field will be sorted in a
943 * manner. 941 /// descending manner.
944 */
945 core.String sortOrder; 942 core.String sortOrder;
946 943
947 OrderBy(); 944 OrderBy();
948 945
949 OrderBy.fromJson(core.Map _json) { 946 OrderBy.fromJson(core.Map _json) {
950 if (_json.containsKey("fieldName")) { 947 if (_json.containsKey("fieldName")) {
951 fieldName = _json["fieldName"]; 948 fieldName = _json["fieldName"];
952 } 949 }
953 if (_json.containsKey("orderType")) { 950 if (_json.containsKey("orderType")) {
954 orderType = _json["orderType"]; 951 orderType = _json["orderType"];
955 } 952 }
956 if (_json.containsKey("sortOrder")) { 953 if (_json.containsKey("sortOrder")) {
957 sortOrder = _json["sortOrder"]; 954 sortOrder = _json["sortOrder"];
958 } 955 }
959 } 956 }
960 957
961 core.Map<core.String, core.Object> toJson() { 958 core.Map<core.String, core.Object> toJson() {
962 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 959 final core.Map<core.String, core.Object> _json =
960 new core.Map<core.String, core.Object>();
963 if (fieldName != null) { 961 if (fieldName != null) {
964 _json["fieldName"] = fieldName; 962 _json["fieldName"] = fieldName;
965 } 963 }
966 if (orderType != null) { 964 if (orderType != null) {
967 _json["orderType"] = orderType; 965 _json["orderType"] = orderType;
968 } 966 }
969 if (sortOrder != null) { 967 if (sortOrder != null) {
970 _json["sortOrder"] = sortOrder; 968 _json["sortOrder"] = sortOrder;
971 } 969 }
972 return _json; 970 return _json;
973 } 971 }
974 } 972 }
975 973
976 /** 974 /// The Pivot describes the pivot section in the request.
977 * The Pivot describes the pivot section in the request. 975 /// The Pivot helps rearrange the information in the table for certain reports
978 * The Pivot helps rearrange the information in the table for certain reports 976 /// by pivoting your data on a second dimension.
979 * by pivoting your data on a second dimension.
980 */
981 class Pivot { 977 class Pivot {
982 /** 978 /// DimensionFilterClauses are logically combined with an `AND` operator:
983 * DimensionFilterClauses are logically combined with an `AND` operator: only 979 /// only
984 * data that is included by all these DimensionFilterClauses contributes to 980 /// data that is included by all these DimensionFilterClauses contributes to
985 * the values in this pivot region. Dimension filters can be used to restrict 981 /// the values in this pivot region. Dimension filters can be used to
986 * the columns shown in the pivot region. For example if you have 982 /// restrict
987 * `ga:browser` as the requested dimension in the pivot region, and you 983 /// the columns shown in the pivot region. For example if you have
988 * specify key filters to restrict `ga:browser` to only "IE" or "Firefox", 984 /// `ga:browser` as the requested dimension in the pivot region, and you
989 * then only those two browsers would show up as columns. 985 /// specify key filters to restrict `ga:browser` to only "IE" or "Firefox",
990 */ 986 /// then only those two browsers would show up as columns.
991 core.List<DimensionFilterClause> dimensionFilterClauses; 987 core.List<DimensionFilterClause> dimensionFilterClauses;
992 /** 988
993 * A list of dimensions to show as pivot columns. A Pivot can have a maximum 989 /// A list of dimensions to show as pivot columns. A Pivot can have a maximum
994 * of 4 dimensions. Pivot dimensions are part of the restriction on the 990 /// of 4 dimensions. Pivot dimensions are part of the restriction on the
995 * total number of dimensions allowed in the request. 991 /// total number of dimensions allowed in the request.
996 */
997 core.List<Dimension> dimensions; 992 core.List<Dimension> dimensions;
998 /** 993
999 * Specifies the maximum number of groups to return. 994 /// Specifies the maximum number of groups to return.
1000 * The default value is 10, also the maximum value is 1,000. 995 /// The default value is 10, also the maximum value is 1,000.
1001 */
1002 core.int maxGroupCount; 996 core.int maxGroupCount;
1003 /** 997
1004 * The pivot metrics. Pivot metrics are part of the 998 /// The pivot metrics. Pivot metrics are part of the
1005 * restriction on total number of metrics allowed in the request. 999 /// restriction on total number of metrics allowed in the request.
1006 */
1007 core.List<Metric> metrics; 1000 core.List<Metric> metrics;
1008 /** 1001
1009 * If k metrics were requested, then the response will contain some 1002 /// If k metrics were requested, then the response will contain some
1010 * data-dependent multiple of k columns in the report. E.g., if you pivoted 1003 /// data-dependent multiple of k columns in the report. E.g., if you pivoted
1011 * on the dimension `ga:browser` then you'd get k columns for "Firefox", k 1004 /// on the dimension `ga:browser` then you'd get k columns for "Firefox", k
1012 * columns for "IE", k columns for "Chrome", etc. The ordering of the groups 1005 /// columns for "IE", k columns for "Chrome", etc. The ordering of the groups
1013 * of columns is determined by descending order of "total" for the first of 1006 /// of columns is determined by descending order of "total" for the first of
1014 * the k values. Ties are broken by lexicographic ordering of the first 1007 /// the k values. Ties are broken by lexicographic ordering of the first
1015 * pivot dimension, then lexicographic ordering of the second pivot 1008 /// pivot dimension, then lexicographic ordering of the second pivot
1016 * dimension, and so on. E.g., if the totals for the first value for 1009 /// dimension, and so on. E.g., if the totals for the first value for
1017 * Firefox, IE, and Chrome were 8, 2, 8, respectively, the order of columns 1010 /// Firefox, IE, and Chrome were 8, 2, 8, respectively, the order of columns
1018 * would be Chrome, Firefox, IE. 1011 /// would be Chrome, Firefox, IE.
1019 * 1012 ///
1020 * The following let you choose which of the groups of k columns are 1013 /// The following let you choose which of the groups of k columns are
1021 * included in the response. 1014 /// included in the response.
1022 */
1023 core.int startGroup; 1015 core.int startGroup;
1024 1016
1025 Pivot(); 1017 Pivot();
1026 1018
1027 Pivot.fromJson(core.Map _json) { 1019 Pivot.fromJson(core.Map _json) {
1028 if (_json.containsKey("dimensionFilterClauses")) { 1020 if (_json.containsKey("dimensionFilterClauses")) {
1029 dimensionFilterClauses = _json["dimensionFilterClauses"].map((value) => ne w DimensionFilterClause.fromJson(value)).toList(); 1021 dimensionFilterClauses = _json["dimensionFilterClauses"]
1022 .map((value) => new DimensionFilterClause.fromJson(value))
1023 .toList();
1030 } 1024 }
1031 if (_json.containsKey("dimensions")) { 1025 if (_json.containsKey("dimensions")) {
1032 dimensions = _json["dimensions"].map((value) => new Dimension.fromJson(val ue)).toList(); 1026 dimensions = _json["dimensions"]
1027 .map((value) => new Dimension.fromJson(value))
1028 .toList();
1033 } 1029 }
1034 if (_json.containsKey("maxGroupCount")) { 1030 if (_json.containsKey("maxGroupCount")) {
1035 maxGroupCount = _json["maxGroupCount"]; 1031 maxGroupCount = _json["maxGroupCount"];
1036 } 1032 }
1037 if (_json.containsKey("metrics")) { 1033 if (_json.containsKey("metrics")) {
1038 metrics = _json["metrics"].map((value) => new Metric.fromJson(value)).toLi st(); 1034 metrics =
1035 _json["metrics"].map((value) => new Metric.fromJson(value)).toList();
1039 } 1036 }
1040 if (_json.containsKey("startGroup")) { 1037 if (_json.containsKey("startGroup")) {
1041 startGroup = _json["startGroup"]; 1038 startGroup = _json["startGroup"];
1042 } 1039 }
1043 } 1040 }
1044 1041
1045 core.Map<core.String, core.Object> toJson() { 1042 core.Map<core.String, core.Object> toJson() {
1046 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1043 final core.Map<core.String, core.Object> _json =
1044 new core.Map<core.String, core.Object>();
1047 if (dimensionFilterClauses != null) { 1045 if (dimensionFilterClauses != null) {
1048 _json["dimensionFilterClauses"] = dimensionFilterClauses.map((value) => (v alue).toJson()).toList(); 1046 _json["dimensionFilterClauses"] =
1047 dimensionFilterClauses.map((value) => (value).toJson()).toList();
1049 } 1048 }
1050 if (dimensions != null) { 1049 if (dimensions != null) {
1051 _json["dimensions"] = dimensions.map((value) => (value).toJson()).toList() ; 1050 _json["dimensions"] =
1051 dimensions.map((value) => (value).toJson()).toList();
1052 } 1052 }
1053 if (maxGroupCount != null) { 1053 if (maxGroupCount != null) {
1054 _json["maxGroupCount"] = maxGroupCount; 1054 _json["maxGroupCount"] = maxGroupCount;
1055 } 1055 }
1056 if (metrics != null) { 1056 if (metrics != null) {
1057 _json["metrics"] = metrics.map((value) => (value).toJson()).toList(); 1057 _json["metrics"] = metrics.map((value) => (value).toJson()).toList();
1058 } 1058 }
1059 if (startGroup != null) { 1059 if (startGroup != null) {
1060 _json["startGroup"] = startGroup; 1060 _json["startGroup"] = startGroup;
1061 } 1061 }
1062 return _json; 1062 return _json;
1063 } 1063 }
1064 } 1064 }
1065 1065
1066 /** The headers for each of the pivot sections defined in the request. */ 1066 /// The headers for each of the pivot sections defined in the request.
1067 class PivotHeader { 1067 class PivotHeader {
1068 /** A single pivot section header. */ 1068 /// A single pivot section header.
1069 core.List<PivotHeaderEntry> pivotHeaderEntries; 1069 core.List<PivotHeaderEntry> pivotHeaderEntries;
1070 /** The total number of groups for this pivot. */ 1070
1071 /// The total number of groups for this pivot.
1071 core.int totalPivotGroupsCount; 1072 core.int totalPivotGroupsCount;
1072 1073
1073 PivotHeader(); 1074 PivotHeader();
1074 1075
1075 PivotHeader.fromJson(core.Map _json) { 1076 PivotHeader.fromJson(core.Map _json) {
1076 if (_json.containsKey("pivotHeaderEntries")) { 1077 if (_json.containsKey("pivotHeaderEntries")) {
1077 pivotHeaderEntries = _json["pivotHeaderEntries"].map((value) => new PivotH eaderEntry.fromJson(value)).toList(); 1078 pivotHeaderEntries = _json["pivotHeaderEntries"]
1079 .map((value) => new PivotHeaderEntry.fromJson(value))
1080 .toList();
1078 } 1081 }
1079 if (_json.containsKey("totalPivotGroupsCount")) { 1082 if (_json.containsKey("totalPivotGroupsCount")) {
1080 totalPivotGroupsCount = _json["totalPivotGroupsCount"]; 1083 totalPivotGroupsCount = _json["totalPivotGroupsCount"];
1081 } 1084 }
1082 } 1085 }
1083 1086
1084 core.Map<core.String, core.Object> toJson() { 1087 core.Map<core.String, core.Object> toJson() {
1085 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1088 final core.Map<core.String, core.Object> _json =
1089 new core.Map<core.String, core.Object>();
1086 if (pivotHeaderEntries != null) { 1090 if (pivotHeaderEntries != null) {
1087 _json["pivotHeaderEntries"] = pivotHeaderEntries.map((value) => (value).to Json()).toList(); 1091 _json["pivotHeaderEntries"] =
1092 pivotHeaderEntries.map((value) => (value).toJson()).toList();
1088 } 1093 }
1089 if (totalPivotGroupsCount != null) { 1094 if (totalPivotGroupsCount != null) {
1090 _json["totalPivotGroupsCount"] = totalPivotGroupsCount; 1095 _json["totalPivotGroupsCount"] = totalPivotGroupsCount;
1091 } 1096 }
1092 return _json; 1097 return _json;
1093 } 1098 }
1094 } 1099 }
1095 1100
1096 /** 1101 /// The headers for the each of the metric column corresponding to the metrics
1097 * The headers for the each of the metric column corresponding to the metrics 1102 /// requested in the pivots section of the response.
1098 * requested in the pivots section of the response.
1099 */
1100 class PivotHeaderEntry { 1103 class PivotHeaderEntry {
1101 /** The name of the dimensions in the pivot response. */ 1104 /// The name of the dimensions in the pivot response.
1102 core.List<core.String> dimensionNames; 1105 core.List<core.String> dimensionNames;
1103 /** The values for the dimensions in the pivot. */ 1106
1107 /// The values for the dimensions in the pivot.
1104 core.List<core.String> dimensionValues; 1108 core.List<core.String> dimensionValues;
1105 /** The metric header for the metric in the pivot. */ 1109
1110 /// The metric header for the metric in the pivot.
1106 MetricHeaderEntry metric; 1111 MetricHeaderEntry metric;
1107 1112
1108 PivotHeaderEntry(); 1113 PivotHeaderEntry();
1109 1114
1110 PivotHeaderEntry.fromJson(core.Map _json) { 1115 PivotHeaderEntry.fromJson(core.Map _json) {
1111 if (_json.containsKey("dimensionNames")) { 1116 if (_json.containsKey("dimensionNames")) {
1112 dimensionNames = _json["dimensionNames"]; 1117 dimensionNames = _json["dimensionNames"];
1113 } 1118 }
1114 if (_json.containsKey("dimensionValues")) { 1119 if (_json.containsKey("dimensionValues")) {
1115 dimensionValues = _json["dimensionValues"]; 1120 dimensionValues = _json["dimensionValues"];
1116 } 1121 }
1117 if (_json.containsKey("metric")) { 1122 if (_json.containsKey("metric")) {
1118 metric = new MetricHeaderEntry.fromJson(_json["metric"]); 1123 metric = new MetricHeaderEntry.fromJson(_json["metric"]);
1119 } 1124 }
1120 } 1125 }
1121 1126
1122 core.Map<core.String, core.Object> toJson() { 1127 core.Map<core.String, core.Object> toJson() {
1123 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1128 final core.Map<core.String, core.Object> _json =
1129 new core.Map<core.String, core.Object>();
1124 if (dimensionNames != null) { 1130 if (dimensionNames != null) {
1125 _json["dimensionNames"] = dimensionNames; 1131 _json["dimensionNames"] = dimensionNames;
1126 } 1132 }
1127 if (dimensionValues != null) { 1133 if (dimensionValues != null) {
1128 _json["dimensionValues"] = dimensionValues; 1134 _json["dimensionValues"] = dimensionValues;
1129 } 1135 }
1130 if (metric != null) { 1136 if (metric != null) {
1131 _json["metric"] = (metric).toJson(); 1137 _json["metric"] = (metric).toJson();
1132 } 1138 }
1133 return _json; 1139 return _json;
1134 } 1140 }
1135 } 1141 }
1136 1142
1137 /** The metric values in the pivot region. */ 1143 /// The metric values in the pivot region.
1138 class PivotValueRegion { 1144 class PivotValueRegion {
1139 /** The values of the metrics in each of the pivot regions. */ 1145 /// The values of the metrics in each of the pivot regions.
1140 core.List<core.String> values; 1146 core.List<core.String> values;
1141 1147
1142 PivotValueRegion(); 1148 PivotValueRegion();
1143 1149
1144 PivotValueRegion.fromJson(core.Map _json) { 1150 PivotValueRegion.fromJson(core.Map _json) {
1145 if (_json.containsKey("values")) { 1151 if (_json.containsKey("values")) {
1146 values = _json["values"]; 1152 values = _json["values"];
1147 } 1153 }
1148 } 1154 }
1149 1155
1150 core.Map<core.String, core.Object> toJson() { 1156 core.Map<core.String, core.Object> toJson() {
1151 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1157 final core.Map<core.String, core.Object> _json =
1158 new core.Map<core.String, core.Object>();
1152 if (values != null) { 1159 if (values != null) {
1153 _json["values"] = values; 1160 _json["values"] = values;
1154 } 1161 }
1155 return _json; 1162 return _json;
1156 } 1163 }
1157 } 1164 }
1158 1165
1159 /** The data response corresponding to the request. */ 1166 /// The data response corresponding to the request.
1160 class Report { 1167 class Report {
1161 /** The column headers. */ 1168 /// The column headers.
1162 ColumnHeader columnHeader; 1169 ColumnHeader columnHeader;
1163 /** Response data. */ 1170
1171 /// Response data.
1164 ReportData data; 1172 ReportData data;
1165 /** Page token to retrieve the next page of results in the list. */ 1173
1174 /// Page token to retrieve the next page of results in the list.
1166 core.String nextPageToken; 1175 core.String nextPageToken;
1167 1176
1168 Report(); 1177 Report();
1169 1178
1170 Report.fromJson(core.Map _json) { 1179 Report.fromJson(core.Map _json) {
1171 if (_json.containsKey("columnHeader")) { 1180 if (_json.containsKey("columnHeader")) {
1172 columnHeader = new ColumnHeader.fromJson(_json["columnHeader"]); 1181 columnHeader = new ColumnHeader.fromJson(_json["columnHeader"]);
1173 } 1182 }
1174 if (_json.containsKey("data")) { 1183 if (_json.containsKey("data")) {
1175 data = new ReportData.fromJson(_json["data"]); 1184 data = new ReportData.fromJson(_json["data"]);
1176 } 1185 }
1177 if (_json.containsKey("nextPageToken")) { 1186 if (_json.containsKey("nextPageToken")) {
1178 nextPageToken = _json["nextPageToken"]; 1187 nextPageToken = _json["nextPageToken"];
1179 } 1188 }
1180 } 1189 }
1181 1190
1182 core.Map<core.String, core.Object> toJson() { 1191 core.Map<core.String, core.Object> toJson() {
1183 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1192 final core.Map<core.String, core.Object> _json =
1193 new core.Map<core.String, core.Object>();
1184 if (columnHeader != null) { 1194 if (columnHeader != null) {
1185 _json["columnHeader"] = (columnHeader).toJson(); 1195 _json["columnHeader"] = (columnHeader).toJson();
1186 } 1196 }
1187 if (data != null) { 1197 if (data != null) {
1188 _json["data"] = (data).toJson(); 1198 _json["data"] = (data).toJson();
1189 } 1199 }
1190 if (nextPageToken != null) { 1200 if (nextPageToken != null) {
1191 _json["nextPageToken"] = nextPageToken; 1201 _json["nextPageToken"] = nextPageToken;
1192 } 1202 }
1193 return _json; 1203 return _json;
1194 } 1204 }
1195 } 1205 }
1196 1206
1197 /** The data part of the report. */ 1207 /// The data part of the report.
1198 class ReportData { 1208 class ReportData {
1199 /** 1209 /// The last time the data in the report was refreshed. All the hits received
1200 * The last time the data in the report was refreshed. All the hits received 1210 /// before this timestamp are included in the calculation of the report.
1201 * before this timestamp are included in the calculation of the report.
1202 */
1203 core.String dataLastRefreshed; 1211 core.String dataLastRefreshed;
1204 /** 1212
1205 * Indicates if response to this request is golden or not. Data is 1213 /// Indicates if response to this request is golden or not. Data is
1206 * golden when the exact same request will not produce any new results if 1214 /// golden when the exact same request will not produce any new results if
1207 * asked at a later point in time. 1215 /// asked at a later point in time.
1208 */
1209 core.bool isDataGolden; 1216 core.bool isDataGolden;
1210 /** 1217
1211 * Minimum and maximum values seen over all matching rows. These are both 1218 /// Minimum and maximum values seen over all matching rows. These are both
1212 * empty when `hideValueRanges` in the request is false, or when 1219 /// empty when `hideValueRanges` in the request is false, or when
1213 * rowCount is zero. 1220 /// rowCount is zero.
1214 */
1215 core.List<DateRangeValues> maximums; 1221 core.List<DateRangeValues> maximums;
1216 /** 1222
1217 * Minimum and maximum values seen over all matching rows. These are both 1223 /// Minimum and maximum values seen over all matching rows. These are both
1218 * empty when `hideValueRanges` in the request is false, or when 1224 /// empty when `hideValueRanges` in the request is false, or when
1219 * rowCount is zero. 1225 /// rowCount is zero.
1220 */
1221 core.List<DateRangeValues> minimums; 1226 core.List<DateRangeValues> minimums;
1222 /** Total number of matching rows for this query. */ 1227
1228 /// Total number of matching rows for this query.
1223 core.int rowCount; 1229 core.int rowCount;
1224 /** There's one ReportRow for every unique combination of dimensions. */ 1230
1231 /// There's one ReportRow for every unique combination of dimensions.
1225 core.List<ReportRow> rows; 1232 core.List<ReportRow> rows;
1226 /** 1233
1227 * If the results are 1234 /// If the results are
1228 * [sampled](https://support.google.com/analytics/answer/2637192), 1235 /// [sampled](https://support.google.com/analytics/answer/2637192),
1229 * this returns the total number of samples read, one entry per date range. 1236 /// this returns the total number of samples read, one entry per date range.
1230 * If the results are not sampled this field will not be defined. See 1237 /// If the results are not sampled this field will not be defined. See
1231 * [developer guide](/analytics/devguides/reporting/core/v4/basics#sampling) 1238 /// [developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)
1232 * for details. 1239 /// for details.
1233 */
1234 core.List<core.String> samplesReadCounts; 1240 core.List<core.String> samplesReadCounts;
1235 /** 1241
1236 * If the results are 1242 /// If the results are
1237 * [sampled](https://support.google.com/analytics/answer/2637192), 1243 /// [sampled](https://support.google.com/analytics/answer/2637192),
1238 * this returns the total number of 1244 /// this returns the total number of
1239 * samples present, one entry per date range. If the results are not sampled 1245 /// samples present, one entry per date range. If the results are not sampled
1240 * this field will not be defined. See 1246 /// this field will not be defined. See
1241 * [developer guide](/analytics/devguides/reporting/core/v4/basics#sampling) 1247 /// [developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)
1242 * for details. 1248 /// for details.
1243 */
1244 core.List<core.String> samplingSpaceSizes; 1249 core.List<core.String> samplingSpaceSizes;
1245 /** 1250
1246 * For each requested date range, for the set of all rows that match 1251 /// For each requested date range, for the set of all rows that match
1247 * the query, every requested value format gets a total. The total 1252 /// the query, every requested value format gets a total. The total
1248 * for a value format is computed by first totaling the metrics 1253 /// for a value format is computed by first totaling the metrics
1249 * mentioned in the value format and then evaluating the value 1254 /// mentioned in the value format and then evaluating the value
1250 * format as a scalar expression. E.g., The "totals" for 1255 /// format as a scalar expression. E.g., The "totals" for
1251 * `3 / (ga:sessions + 2)` we compute 1256 /// `3 / (ga:sessions + 2)` we compute
1252 * `3 / ((sum of all relevant ga:sessions) + 2)`. 1257 /// `3 / ((sum of all relevant ga:sessions) + 2)`.
1253 * Totals are computed before pagination. 1258 /// Totals are computed before pagination.
1254 */
1255 core.List<DateRangeValues> totals; 1259 core.List<DateRangeValues> totals;
1256 1260
1257 ReportData(); 1261 ReportData();
1258 1262
1259 ReportData.fromJson(core.Map _json) { 1263 ReportData.fromJson(core.Map _json) {
1260 if (_json.containsKey("dataLastRefreshed")) { 1264 if (_json.containsKey("dataLastRefreshed")) {
1261 dataLastRefreshed = _json["dataLastRefreshed"]; 1265 dataLastRefreshed = _json["dataLastRefreshed"];
1262 } 1266 }
1263 if (_json.containsKey("isDataGolden")) { 1267 if (_json.containsKey("isDataGolden")) {
1264 isDataGolden = _json["isDataGolden"]; 1268 isDataGolden = _json["isDataGolden"];
1265 } 1269 }
1266 if (_json.containsKey("maximums")) { 1270 if (_json.containsKey("maximums")) {
1267 maximums = _json["maximums"].map((value) => new DateRangeValues.fromJson(v alue)).toList(); 1271 maximums = _json["maximums"]
1272 .map((value) => new DateRangeValues.fromJson(value))
1273 .toList();
1268 } 1274 }
1269 if (_json.containsKey("minimums")) { 1275 if (_json.containsKey("minimums")) {
1270 minimums = _json["minimums"].map((value) => new DateRangeValues.fromJson(v alue)).toList(); 1276 minimums = _json["minimums"]
1277 .map((value) => new DateRangeValues.fromJson(value))
1278 .toList();
1271 } 1279 }
1272 if (_json.containsKey("rowCount")) { 1280 if (_json.containsKey("rowCount")) {
1273 rowCount = _json["rowCount"]; 1281 rowCount = _json["rowCount"];
1274 } 1282 }
1275 if (_json.containsKey("rows")) { 1283 if (_json.containsKey("rows")) {
1276 rows = _json["rows"].map((value) => new ReportRow.fromJson(value)).toList( ); 1284 rows =
1285 _json["rows"].map((value) => new ReportRow.fromJson(value)).toList();
1277 } 1286 }
1278 if (_json.containsKey("samplesReadCounts")) { 1287 if (_json.containsKey("samplesReadCounts")) {
1279 samplesReadCounts = _json["samplesReadCounts"]; 1288 samplesReadCounts = _json["samplesReadCounts"];
1280 } 1289 }
1281 if (_json.containsKey("samplingSpaceSizes")) { 1290 if (_json.containsKey("samplingSpaceSizes")) {
1282 samplingSpaceSizes = _json["samplingSpaceSizes"]; 1291 samplingSpaceSizes = _json["samplingSpaceSizes"];
1283 } 1292 }
1284 if (_json.containsKey("totals")) { 1293 if (_json.containsKey("totals")) {
1285 totals = _json["totals"].map((value) => new DateRangeValues.fromJson(value )).toList(); 1294 totals = _json["totals"]
1295 .map((value) => new DateRangeValues.fromJson(value))
1296 .toList();
1286 } 1297 }
1287 } 1298 }
1288 1299
1289 core.Map<core.String, core.Object> toJson() { 1300 core.Map<core.String, core.Object> toJson() {
1290 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1301 final core.Map<core.String, core.Object> _json =
1302 new core.Map<core.String, core.Object>();
1291 if (dataLastRefreshed != null) { 1303 if (dataLastRefreshed != null) {
1292 _json["dataLastRefreshed"] = dataLastRefreshed; 1304 _json["dataLastRefreshed"] = dataLastRefreshed;
1293 } 1305 }
1294 if (isDataGolden != null) { 1306 if (isDataGolden != null) {
1295 _json["isDataGolden"] = isDataGolden; 1307 _json["isDataGolden"] = isDataGolden;
1296 } 1308 }
1297 if (maximums != null) { 1309 if (maximums != null) {
1298 _json["maximums"] = maximums.map((value) => (value).toJson()).toList(); 1310 _json["maximums"] = maximums.map((value) => (value).toJson()).toList();
1299 } 1311 }
1300 if (minimums != null) { 1312 if (minimums != null) {
(...skipping 11 matching lines...) Expand all
1312 if (samplingSpaceSizes != null) { 1324 if (samplingSpaceSizes != null) {
1313 _json["samplingSpaceSizes"] = samplingSpaceSizes; 1325 _json["samplingSpaceSizes"] = samplingSpaceSizes;
1314 } 1326 }
1315 if (totals != null) { 1327 if (totals != null) {
1316 _json["totals"] = totals.map((value) => (value).toJson()).toList(); 1328 _json["totals"] = totals.map((value) => (value).toJson()).toList();
1317 } 1329 }
1318 return _json; 1330 return _json;
1319 } 1331 }
1320 } 1332 }
1321 1333
1322 /** The main request class which specifies the Reporting API request. */ 1334 /// The main request class which specifies the Reporting API request.
1323 class ReportRequest { 1335 class ReportRequest {
1324 /** 1336 /// Cohort group associated with this request. If there is a cohort group
1325 * Cohort group associated with this request. If there is a cohort group 1337 /// in the request the `ga:cohort` dimension must be present.
1326 * in the request the `ga:cohort` dimension must be present. 1338 /// Every [ReportRequest](#ReportRequest) within a `batchGet` method must
1327 * Every [ReportRequest](#ReportRequest) within a `batchGet` method must 1339 /// contain the same `cohortGroup` definition.
1328 * contain the same `cohortGroup` definition.
1329 */
1330 CohortGroup cohortGroup; 1340 CohortGroup cohortGroup;
1331 /** 1341
1332 * Date ranges in the request. The request can have a maximum of 2 date 1342 /// Date ranges in the request. The request can have a maximum of 2 date
1333 * ranges. The response will contain a set of metric values for each 1343 /// ranges. The response will contain a set of metric values for each
1334 * combination of the dimensions for each date range in the request. So, if 1344 /// combination of the dimensions for each date range in the request. So, if
1335 * there are two date ranges, there will be two set of metric values, one for 1345 /// there are two date ranges, there will be two set of metric values, one
1336 * the original date range and one for the second date range. 1346 /// for
1337 * The `reportRequest.dateRanges` field should not be specified for cohorts 1347 /// the original date range and one for the second date range.
1338 * or Lifetime value requests. 1348 /// The `reportRequest.dateRanges` field should not be specified for cohorts
1339 * If a date range is not provided, the default date range is (startDate: 1349 /// or Lifetime value requests.
1340 * current date - 7 days, endDate: current date - 1 day). Every 1350 /// If a date range is not provided, the default date range is (startDate:
1341 * [ReportRequest](#ReportRequest) within a `batchGet` method must 1351 /// current date - 7 days, endDate: current date - 1 day). Every
1342 * contain the same `dateRanges` definition. 1352 /// [ReportRequest](#ReportRequest) within a `batchGet` method must
1343 */ 1353 /// contain the same `dateRanges` definition.
1344 core.List<DateRange> dateRanges; 1354 core.List<DateRange> dateRanges;
1345 /** 1355
1346 * The dimension filter clauses for filtering Dimension Values. They are 1356 /// The dimension filter clauses for filtering Dimension Values. They are
1347 * logically combined with the `AND` operator. Note that filtering occurs 1357 /// logically combined with the `AND` operator. Note that filtering occurs
1348 * before any dimensions are aggregated, so that the returned metrics 1358 /// before any dimensions are aggregated, so that the returned metrics
1349 * represent the total for only the relevant dimensions. 1359 /// represent the total for only the relevant dimensions.
1350 */
1351 core.List<DimensionFilterClause> dimensionFilterClauses; 1360 core.List<DimensionFilterClause> dimensionFilterClauses;
1352 /** 1361
1353 * The dimensions requested. 1362 /// The dimensions requested.
1354 * Requests can have a total of 7 dimensions. 1363 /// Requests can have a total of 7 dimensions.
1355 */
1356 core.List<Dimension> dimensions; 1364 core.List<Dimension> dimensions;
1357 /** 1365
1358 * Dimension or metric filters that restrict the data returned for your 1366 /// Dimension or metric filters that restrict the data returned for your
1359 * request. To use the `filtersExpression`, supply a dimension or metric on 1367 /// request. To use the `filtersExpression`, supply a dimension or metric on
1360 * which to filter, followed by the filter expression. For example, the 1368 /// which to filter, followed by the filter expression. For example, the
1361 * following expression selects `ga:browser` dimension which starts with 1369 /// following expression selects `ga:browser` dimension which starts with
1362 * Firefox; `ga:browser=~^Firefox`. For more information on dimensions 1370 /// Firefox; `ga:browser=~^Firefox`. For more information on dimensions
1363 * and metric filters, see 1371 /// and metric filters, see
1364 * [Filters 1372 /// [Filters
1365 * reference](https://developers.google.com/analytics/devguides/reporting/core /v3/reference#filters). 1373 /// reference](https://developers.google.com/analytics/devguides/reporting/cor e/v3/reference#filters).
1366 */
1367 core.String filtersExpression; 1374 core.String filtersExpression;
1368 /** 1375
1369 * If set to true, hides the total of all metrics for all the matching rows, 1376 /// If set to true, hides the total of all metrics for all the matching rows,
1370 * for every date range. The default false and will return the totals. 1377 /// for every date range. The default false and will return the totals.
1371 */
1372 core.bool hideTotals; 1378 core.bool hideTotals;
1373 /** 1379
1374 * If set to true, hides the minimum and maximum across all matching rows. 1380 /// If set to true, hides the minimum and maximum across all matching rows.
1375 * The default is false and the value ranges are returned. 1381 /// The default is false and the value ranges are returned.
1376 */
1377 core.bool hideValueRanges; 1382 core.bool hideValueRanges;
1378 /** 1383
1379 * If set to false, the response does not include rows if all the retrieved 1384 /// If set to false, the response does not include rows if all the retrieved
1380 * metrics are equal to zero. The default is false which will exclude these 1385 /// metrics are equal to zero. The default is false which will exclude these
1381 * rows. 1386 /// rows.
1382 */
1383 core.bool includeEmptyRows; 1387 core.bool includeEmptyRows;
1384 /** 1388
1385 * The metric filter clauses. They are logically combined with the `AND` 1389 /// The metric filter clauses. They are logically combined with the `AND`
1386 * operator. Metric filters look at only the first date range and not the 1390 /// operator. Metric filters look at only the first date range and not the
1387 * comparing date range. Note that filtering on metrics occurs after the 1391 /// comparing date range. Note that filtering on metrics occurs after the
1388 * metrics are aggregated. 1392 /// metrics are aggregated.
1389 */
1390 core.List<MetricFilterClause> metricFilterClauses; 1393 core.List<MetricFilterClause> metricFilterClauses;
1391 /** 1394
1392 * The metrics requested. 1395 /// The metrics requested.
1393 * Requests must specify at least one metric. Requests can have a 1396 /// Requests must specify at least one metric. Requests can have a
1394 * total of 10 metrics. 1397 /// total of 10 metrics.
1395 */
1396 core.List<Metric> metrics; 1398 core.List<Metric> metrics;
1397 /** 1399
1398 * Sort order on output rows. To compare two rows, the elements of the 1400 /// Sort order on output rows. To compare two rows, the elements of the
1399 * following are applied in order until a difference is found. All date 1401 /// following are applied in order until a difference is found. All date
1400 * ranges in the output get the same row order. 1402 /// ranges in the output get the same row order.
1401 */
1402 core.List<OrderBy> orderBys; 1403 core.List<OrderBy> orderBys;
1403 /** 1404
1404 * Page size is for paging and specifies the maximum number of returned rows. 1405 /// Page size is for paging and specifies the maximum number of returned
1405 * Page size should be >= 0. A query returns the default of 1,000 rows. 1406 /// rows.
1406 * The Analytics Core Reporting API returns a maximum of 10,000 rows per 1407 /// Page size should be >= 0. A query returns the default of 1,000 rows.
1407 * request, no matter how many you ask for. It can also return fewer rows 1408 /// The Analytics Core Reporting API returns a maximum of 10,000 rows per
1408 * than requested, if there aren't as many dimension segments as you expect. 1409 /// request, no matter how many you ask for. It can also return fewer rows
1409 * For instance, there are fewer than 300 possible values for `ga:country`, 1410 /// than requested, if there aren't as many dimension segments as you expect.
1410 * so when segmenting only by country, you can't get more than 300 rows, 1411 /// For instance, there are fewer than 300 possible values for `ga:country`,
1411 * even if you set `pageSize` to a higher value. 1412 /// so when segmenting only by country, you can't get more than 300 rows,
1412 */ 1413 /// even if you set `pageSize` to a higher value.
1413 core.int pageSize; 1414 core.int pageSize;
1414 /** 1415
1415 * A continuation token to get the next page of the results. Adding this to 1416 /// A continuation token to get the next page of the results. Adding this to
1416 * the request will return the rows after the pageToken. The pageToken should 1417 /// the request will return the rows after the pageToken. The pageToken
1417 * be the value returned in the nextPageToken parameter in the response to 1418 /// should
1418 * the GetReports request. 1419 /// be the value returned in the nextPageToken parameter in the response to
1419 */ 1420 /// the GetReports request.
1420 core.String pageToken; 1421 core.String pageToken;
1421 /** The pivot definitions. Requests can have a maximum of 2 pivots. */ 1422
1423 /// The pivot definitions. Requests can have a maximum of 2 pivots.
1422 core.List<Pivot> pivots; 1424 core.List<Pivot> pivots;
1423 /** 1425
1424 * The desired report 1426 /// The desired report
1425 * [sample](https://support.google.com/analytics/answer/2637192) size. 1427 /// [sample](https://support.google.com/analytics/answer/2637192) size.
1426 * If the the `samplingLevel` field is unspecified the `DEFAULT` sampling 1428 /// If the the `samplingLevel` field is unspecified the `DEFAULT` sampling
1427 * level is used. Every [ReportRequest](#ReportRequest) within a 1429 /// level is used. Every [ReportRequest](#ReportRequest) within a
1428 * `batchGet` method must contain the same `samplingLevel` definition. See 1430 /// `batchGet` method must contain the same `samplingLevel` definition. See
1429 * [developer guide](/analytics/devguides/reporting/core/v4/basics#sampling) 1431 /// [developer guide](/analytics/devguides/reporting/core/v4/basics#sampling)
1430 * for details. 1432 /// for details.
1431 * Possible string values are: 1433 /// Possible string values are:
1432 * - "SAMPLING_UNSPECIFIED" : If the `samplingLevel` field is unspecified the 1434 /// - "SAMPLING_UNSPECIFIED" : If the `samplingLevel` field is unspecified
1433 * `DEFAULT` sampling level 1435 /// the `DEFAULT` sampling level
1434 * is used. 1436 /// is used.
1435 * - "DEFAULT" : Returns response with a sample size that balances speed and 1437 /// - "DEFAULT" : Returns response with a sample size that balances speed and
1436 * accuracy. 1438 /// accuracy.
1437 * - "SMALL" : It returns a fast response with a smaller sampling size. 1439 /// - "SMALL" : It returns a fast response with a smaller sampling size.
1438 * - "LARGE" : Returns a more accurate response using a large sampling size. 1440 /// - "LARGE" : Returns a more accurate response using a large sampling size.
1439 * But this 1441 /// But this
1440 * may result in response being slower. 1442 /// may result in response being slower.
1441 */
1442 core.String samplingLevel; 1443 core.String samplingLevel;
1443 /** 1444
1444 * Segment the data returned for the request. A segment definition helps look 1445 /// Segment the data returned for the request. A segment definition helps
1445 * at a subset of the segment request. A request can contain up to four 1446 /// look
1446 * segments. Every [ReportRequest](#ReportRequest) within a 1447 /// at a subset of the segment request. A request can contain up to four
1447 * `batchGet` method must contain the same `segments` definition. Requests 1448 /// segments. Every [ReportRequest](#ReportRequest) within a
1448 * with segments must have the `ga:segment` dimension. 1449 /// `batchGet` method must contain the same `segments` definition. Requests
1449 */ 1450 /// with segments must have the `ga:segment` dimension.
1450 core.List<Segment> segments; 1451 core.List<Segment> segments;
1451 /** 1452
1452 * The Analytics 1453 /// The Analytics
1453 * [view ID](https://support.google.com/analytics/answer/1009618) 1454 /// [view ID](https://support.google.com/analytics/answer/1009618)
1454 * from which to retrieve data. Every [ReportRequest](#ReportRequest) 1455 /// from which to retrieve data. Every [ReportRequest](#ReportRequest)
1455 * within a `batchGet` method must contain the same `viewId`. 1456 /// within a `batchGet` method must contain the same `viewId`.
1456 */
1457 core.String viewId; 1457 core.String viewId;
1458 1458
1459 ReportRequest(); 1459 ReportRequest();
1460 1460
1461 ReportRequest.fromJson(core.Map _json) { 1461 ReportRequest.fromJson(core.Map _json) {
1462 if (_json.containsKey("cohortGroup")) { 1462 if (_json.containsKey("cohortGroup")) {
1463 cohortGroup = new CohortGroup.fromJson(_json["cohortGroup"]); 1463 cohortGroup = new CohortGroup.fromJson(_json["cohortGroup"]);
1464 } 1464 }
1465 if (_json.containsKey("dateRanges")) { 1465 if (_json.containsKey("dateRanges")) {
1466 dateRanges = _json["dateRanges"].map((value) => new DateRange.fromJson(val ue)).toList(); 1466 dateRanges = _json["dateRanges"]
1467 .map((value) => new DateRange.fromJson(value))
1468 .toList();
1467 } 1469 }
1468 if (_json.containsKey("dimensionFilterClauses")) { 1470 if (_json.containsKey("dimensionFilterClauses")) {
1469 dimensionFilterClauses = _json["dimensionFilterClauses"].map((value) => ne w DimensionFilterClause.fromJson(value)).toList(); 1471 dimensionFilterClauses = _json["dimensionFilterClauses"]
1472 .map((value) => new DimensionFilterClause.fromJson(value))
1473 .toList();
1470 } 1474 }
1471 if (_json.containsKey("dimensions")) { 1475 if (_json.containsKey("dimensions")) {
1472 dimensions = _json["dimensions"].map((value) => new Dimension.fromJson(val ue)).toList(); 1476 dimensions = _json["dimensions"]
1477 .map((value) => new Dimension.fromJson(value))
1478 .toList();
1473 } 1479 }
1474 if (_json.containsKey("filtersExpression")) { 1480 if (_json.containsKey("filtersExpression")) {
1475 filtersExpression = _json["filtersExpression"]; 1481 filtersExpression = _json["filtersExpression"];
1476 } 1482 }
1477 if (_json.containsKey("hideTotals")) { 1483 if (_json.containsKey("hideTotals")) {
1478 hideTotals = _json["hideTotals"]; 1484 hideTotals = _json["hideTotals"];
1479 } 1485 }
1480 if (_json.containsKey("hideValueRanges")) { 1486 if (_json.containsKey("hideValueRanges")) {
1481 hideValueRanges = _json["hideValueRanges"]; 1487 hideValueRanges = _json["hideValueRanges"];
1482 } 1488 }
1483 if (_json.containsKey("includeEmptyRows")) { 1489 if (_json.containsKey("includeEmptyRows")) {
1484 includeEmptyRows = _json["includeEmptyRows"]; 1490 includeEmptyRows = _json["includeEmptyRows"];
1485 } 1491 }
1486 if (_json.containsKey("metricFilterClauses")) { 1492 if (_json.containsKey("metricFilterClauses")) {
1487 metricFilterClauses = _json["metricFilterClauses"].map((value) => new Metr icFilterClause.fromJson(value)).toList(); 1493 metricFilterClauses = _json["metricFilterClauses"]
1494 .map((value) => new MetricFilterClause.fromJson(value))
1495 .toList();
1488 } 1496 }
1489 if (_json.containsKey("metrics")) { 1497 if (_json.containsKey("metrics")) {
1490 metrics = _json["metrics"].map((value) => new Metric.fromJson(value)).toLi st(); 1498 metrics =
1499 _json["metrics"].map((value) => new Metric.fromJson(value)).toList();
1491 } 1500 }
1492 if (_json.containsKey("orderBys")) { 1501 if (_json.containsKey("orderBys")) {
1493 orderBys = _json["orderBys"].map((value) => new OrderBy.fromJson(value)).t oList(); 1502 orderBys = _json["orderBys"]
1503 .map((value) => new OrderBy.fromJson(value))
1504 .toList();
1494 } 1505 }
1495 if (_json.containsKey("pageSize")) { 1506 if (_json.containsKey("pageSize")) {
1496 pageSize = _json["pageSize"]; 1507 pageSize = _json["pageSize"];
1497 } 1508 }
1498 if (_json.containsKey("pageToken")) { 1509 if (_json.containsKey("pageToken")) {
1499 pageToken = _json["pageToken"]; 1510 pageToken = _json["pageToken"];
1500 } 1511 }
1501 if (_json.containsKey("pivots")) { 1512 if (_json.containsKey("pivots")) {
1502 pivots = _json["pivots"].map((value) => new Pivot.fromJson(value)).toList( ); 1513 pivots =
1514 _json["pivots"].map((value) => new Pivot.fromJson(value)).toList();
1503 } 1515 }
1504 if (_json.containsKey("samplingLevel")) { 1516 if (_json.containsKey("samplingLevel")) {
1505 samplingLevel = _json["samplingLevel"]; 1517 samplingLevel = _json["samplingLevel"];
1506 } 1518 }
1507 if (_json.containsKey("segments")) { 1519 if (_json.containsKey("segments")) {
1508 segments = _json["segments"].map((value) => new Segment.fromJson(value)).t oList(); 1520 segments = _json["segments"]
1521 .map((value) => new Segment.fromJson(value))
1522 .toList();
1509 } 1523 }
1510 if (_json.containsKey("viewId")) { 1524 if (_json.containsKey("viewId")) {
1511 viewId = _json["viewId"]; 1525 viewId = _json["viewId"];
1512 } 1526 }
1513 } 1527 }
1514 1528
1515 core.Map<core.String, core.Object> toJson() { 1529 core.Map<core.String, core.Object> toJson() {
1516 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1530 final core.Map<core.String, core.Object> _json =
1531 new core.Map<core.String, core.Object>();
1517 if (cohortGroup != null) { 1532 if (cohortGroup != null) {
1518 _json["cohortGroup"] = (cohortGroup).toJson(); 1533 _json["cohortGroup"] = (cohortGroup).toJson();
1519 } 1534 }
1520 if (dateRanges != null) { 1535 if (dateRanges != null) {
1521 _json["dateRanges"] = dateRanges.map((value) => (value).toJson()).toList() ; 1536 _json["dateRanges"] =
1537 dateRanges.map((value) => (value).toJson()).toList();
1522 } 1538 }
1523 if (dimensionFilterClauses != null) { 1539 if (dimensionFilterClauses != null) {
1524 _json["dimensionFilterClauses"] = dimensionFilterClauses.map((value) => (v alue).toJson()).toList(); 1540 _json["dimensionFilterClauses"] =
1541 dimensionFilterClauses.map((value) => (value).toJson()).toList();
1525 } 1542 }
1526 if (dimensions != null) { 1543 if (dimensions != null) {
1527 _json["dimensions"] = dimensions.map((value) => (value).toJson()).toList() ; 1544 _json["dimensions"] =
1545 dimensions.map((value) => (value).toJson()).toList();
1528 } 1546 }
1529 if (filtersExpression != null) { 1547 if (filtersExpression != null) {
1530 _json["filtersExpression"] = filtersExpression; 1548 _json["filtersExpression"] = filtersExpression;
1531 } 1549 }
1532 if (hideTotals != null) { 1550 if (hideTotals != null) {
1533 _json["hideTotals"] = hideTotals; 1551 _json["hideTotals"] = hideTotals;
1534 } 1552 }
1535 if (hideValueRanges != null) { 1553 if (hideValueRanges != null) {
1536 _json["hideValueRanges"] = hideValueRanges; 1554 _json["hideValueRanges"] = hideValueRanges;
1537 } 1555 }
1538 if (includeEmptyRows != null) { 1556 if (includeEmptyRows != null) {
1539 _json["includeEmptyRows"] = includeEmptyRows; 1557 _json["includeEmptyRows"] = includeEmptyRows;
1540 } 1558 }
1541 if (metricFilterClauses != null) { 1559 if (metricFilterClauses != null) {
1542 _json["metricFilterClauses"] = metricFilterClauses.map((value) => (value). toJson()).toList(); 1560 _json["metricFilterClauses"] =
1561 metricFilterClauses.map((value) => (value).toJson()).toList();
1543 } 1562 }
1544 if (metrics != null) { 1563 if (metrics != null) {
1545 _json["metrics"] = metrics.map((value) => (value).toJson()).toList(); 1564 _json["metrics"] = metrics.map((value) => (value).toJson()).toList();
1546 } 1565 }
1547 if (orderBys != null) { 1566 if (orderBys != null) {
1548 _json["orderBys"] = orderBys.map((value) => (value).toJson()).toList(); 1567 _json["orderBys"] = orderBys.map((value) => (value).toJson()).toList();
1549 } 1568 }
1550 if (pageSize != null) { 1569 if (pageSize != null) {
1551 _json["pageSize"] = pageSize; 1570 _json["pageSize"] = pageSize;
1552 } 1571 }
1553 if (pageToken != null) { 1572 if (pageToken != null) {
1554 _json["pageToken"] = pageToken; 1573 _json["pageToken"] = pageToken;
1555 } 1574 }
1556 if (pivots != null) { 1575 if (pivots != null) {
1557 _json["pivots"] = pivots.map((value) => (value).toJson()).toList(); 1576 _json["pivots"] = pivots.map((value) => (value).toJson()).toList();
1558 } 1577 }
1559 if (samplingLevel != null) { 1578 if (samplingLevel != null) {
1560 _json["samplingLevel"] = samplingLevel; 1579 _json["samplingLevel"] = samplingLevel;
1561 } 1580 }
1562 if (segments != null) { 1581 if (segments != null) {
1563 _json["segments"] = segments.map((value) => (value).toJson()).toList(); 1582 _json["segments"] = segments.map((value) => (value).toJson()).toList();
1564 } 1583 }
1565 if (viewId != null) { 1584 if (viewId != null) {
1566 _json["viewId"] = viewId; 1585 _json["viewId"] = viewId;
1567 } 1586 }
1568 return _json; 1587 return _json;
1569 } 1588 }
1570 } 1589 }
1571 1590
1572 /** A row in the report. */ 1591 /// A row in the report.
1573 class ReportRow { 1592 class ReportRow {
1574 /** List of requested dimensions. */ 1593 /// List of requested dimensions.
1575 core.List<core.String> dimensions; 1594 core.List<core.String> dimensions;
1576 /** List of metrics for each requested DateRange. */ 1595
1596 /// List of metrics for each requested DateRange.
1577 core.List<DateRangeValues> metrics; 1597 core.List<DateRangeValues> metrics;
1578 1598
1579 ReportRow(); 1599 ReportRow();
1580 1600
1581 ReportRow.fromJson(core.Map _json) { 1601 ReportRow.fromJson(core.Map _json) {
1582 if (_json.containsKey("dimensions")) { 1602 if (_json.containsKey("dimensions")) {
1583 dimensions = _json["dimensions"]; 1603 dimensions = _json["dimensions"];
1584 } 1604 }
1585 if (_json.containsKey("metrics")) { 1605 if (_json.containsKey("metrics")) {
1586 metrics = _json["metrics"].map((value) => new DateRangeValues.fromJson(val ue)).toList(); 1606 metrics = _json["metrics"]
1607 .map((value) => new DateRangeValues.fromJson(value))
1608 .toList();
1587 } 1609 }
1588 } 1610 }
1589 1611
1590 core.Map<core.String, core.Object> toJson() { 1612 core.Map<core.String, core.Object> toJson() {
1591 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1613 final core.Map<core.String, core.Object> _json =
1614 new core.Map<core.String, core.Object>();
1592 if (dimensions != null) { 1615 if (dimensions != null) {
1593 _json["dimensions"] = dimensions; 1616 _json["dimensions"] = dimensions;
1594 } 1617 }
1595 if (metrics != null) { 1618 if (metrics != null) {
1596 _json["metrics"] = metrics.map((value) => (value).toJson()).toList(); 1619 _json["metrics"] = metrics.map((value) => (value).toJson()).toList();
1597 } 1620 }
1598 return _json; 1621 return _json;
1599 } 1622 }
1600 } 1623 }
1601 1624
1602 /** 1625 /// The segment definition, if the report needs to be segmented.
1603 * The segment definition, if the report needs to be segmented. 1626 /// A Segment is a subset of the Analytics data. For example, of the entire
1604 * A Segment is a subset of the Analytics data. For example, of the entire 1627 /// set of users, one Segment might be users from a particular country or city.
1605 * set of users, one Segment might be users from a particular country or city.
1606 */
1607 class Segment { 1628 class Segment {
1608 /** A dynamic segment definition in the request. */ 1629 /// A dynamic segment definition in the request.
1609 DynamicSegment dynamicSegment; 1630 DynamicSegment dynamicSegment;
1610 /** 1631
1611 * The segment ID of a built-in or custom segment, for example `gaid::-3`. 1632 /// The segment ID of a built-in or custom segment, for example `gaid::-3`.
1612 */
1613 core.String segmentId; 1633 core.String segmentId;
1614 1634
1615 Segment(); 1635 Segment();
1616 1636
1617 Segment.fromJson(core.Map _json) { 1637 Segment.fromJson(core.Map _json) {
1618 if (_json.containsKey("dynamicSegment")) { 1638 if (_json.containsKey("dynamicSegment")) {
1619 dynamicSegment = new DynamicSegment.fromJson(_json["dynamicSegment"]); 1639 dynamicSegment = new DynamicSegment.fromJson(_json["dynamicSegment"]);
1620 } 1640 }
1621 if (_json.containsKey("segmentId")) { 1641 if (_json.containsKey("segmentId")) {
1622 segmentId = _json["segmentId"]; 1642 segmentId = _json["segmentId"];
1623 } 1643 }
1624 } 1644 }
1625 1645
1626 core.Map<core.String, core.Object> toJson() { 1646 core.Map<core.String, core.Object> toJson() {
1627 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1647 final core.Map<core.String, core.Object> _json =
1648 new core.Map<core.String, core.Object>();
1628 if (dynamicSegment != null) { 1649 if (dynamicSegment != null) {
1629 _json["dynamicSegment"] = (dynamicSegment).toJson(); 1650 _json["dynamicSegment"] = (dynamicSegment).toJson();
1630 } 1651 }
1631 if (segmentId != null) { 1652 if (segmentId != null) {
1632 _json["segmentId"] = segmentId; 1653 _json["segmentId"] = segmentId;
1633 } 1654 }
1634 return _json; 1655 return _json;
1635 } 1656 }
1636 } 1657 }
1637 1658
1638 /** 1659 /// SegmentDefinition defines the segment to be a set of SegmentFilters which
1639 * SegmentDefinition defines the segment to be a set of SegmentFilters which 1660 /// are combined together with a logical `AND` operation.
1640 * are combined together with a logical `AND` operation.
1641 */
1642 class SegmentDefinition { 1661 class SegmentDefinition {
1643 /** 1662 /// A segment is defined by a set of segment filters which are combined
1644 * A segment is defined by a set of segment filters which are combined 1663 /// together with a logical `AND` operation.
1645 * together with a logical `AND` operation.
1646 */
1647 core.List<SegmentFilter> segmentFilters; 1664 core.List<SegmentFilter> segmentFilters;
1648 1665
1649 SegmentDefinition(); 1666 SegmentDefinition();
1650 1667
1651 SegmentDefinition.fromJson(core.Map _json) { 1668 SegmentDefinition.fromJson(core.Map _json) {
1652 if (_json.containsKey("segmentFilters")) { 1669 if (_json.containsKey("segmentFilters")) {
1653 segmentFilters = _json["segmentFilters"].map((value) => new SegmentFilter. fromJson(value)).toList(); 1670 segmentFilters = _json["segmentFilters"]
1671 .map((value) => new SegmentFilter.fromJson(value))
1672 .toList();
1654 } 1673 }
1655 } 1674 }
1656 1675
1657 core.Map<core.String, core.Object> toJson() { 1676 core.Map<core.String, core.Object> toJson() {
1658 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1677 final core.Map<core.String, core.Object> _json =
1678 new core.Map<core.String, core.Object>();
1659 if (segmentFilters != null) { 1679 if (segmentFilters != null) {
1660 _json["segmentFilters"] = segmentFilters.map((value) => (value).toJson()). toList(); 1680 _json["segmentFilters"] =
1681 segmentFilters.map((value) => (value).toJson()).toList();
1661 } 1682 }
1662 return _json; 1683 return _json;
1663 } 1684 }
1664 } 1685 }
1665 1686
1666 /** Dimension filter specifies the filtering options on a dimension. */ 1687 /// Dimension filter specifies the filtering options on a dimension.
1667 class SegmentDimensionFilter { 1688 class SegmentDimensionFilter {
1668 /** Should the match be case sensitive, ignored for `IN_LIST` operator. */ 1689 /// Should the match be case sensitive, ignored for `IN_LIST` operator.
1669 core.bool caseSensitive; 1690 core.bool caseSensitive;
1670 /** Name of the dimension for which the filter is being applied. */ 1691
1692 /// Name of the dimension for which the filter is being applied.
1671 core.String dimensionName; 1693 core.String dimensionName;
1672 /** 1694
1673 * The list of expressions, only the first element is used for all operators 1695 /// The list of expressions, only the first element is used for all operators
1674 */
1675 core.List<core.String> expressions; 1696 core.List<core.String> expressions;
1676 /** Maximum comparison values for `BETWEEN` match type. */ 1697
1698 /// Maximum comparison values for `BETWEEN` match type.
1677 core.String maxComparisonValue; 1699 core.String maxComparisonValue;
1678 /** Minimum comparison values for `BETWEEN` match type. */ 1700
1701 /// Minimum comparison values for `BETWEEN` match type.
1679 core.String minComparisonValue; 1702 core.String minComparisonValue;
1680 /** 1703
1681 * The operator to use to match the dimension with the expressions. 1704 /// The operator to use to match the dimension with the expressions.
1682 * Possible string values are: 1705 /// Possible string values are:
1683 * - "OPERATOR_UNSPECIFIED" : If the match type is unspecified, it is treated 1706 /// - "OPERATOR_UNSPECIFIED" : If the match type is unspecified, it is
1684 * as a REGEXP. 1707 /// treated as a REGEXP.
1685 * - "REGEXP" : The match expression is treated as a regular expression. All 1708 /// - "REGEXP" : The match expression is treated as a regular expression. All
1686 * other match 1709 /// other match
1687 * types are not treated as regular expressions. 1710 /// types are not treated as regular expressions.
1688 * - "BEGINS_WITH" : Matches the values which begin with the match expression 1711 /// - "BEGINS_WITH" : Matches the values which begin with the match
1689 * provided. 1712 /// expression provided.
1690 * - "ENDS_WITH" : Matches the values which end with the match expression 1713 /// - "ENDS_WITH" : Matches the values which end with the match expression
1691 * provided. 1714 /// provided.
1692 * - "PARTIAL" : Substring match. 1715 /// - "PARTIAL" : Substring match.
1693 * - "EXACT" : The value should match the match expression entirely. 1716 /// - "EXACT" : The value should match the match expression entirely.
1694 * - "IN_LIST" : This option is used to specify a dimension filter whose 1717 /// - "IN_LIST" : This option is used to specify a dimension filter whose
1695 * expression can 1718 /// expression can
1696 * take any value from a selected list of values. This helps avoiding 1719 /// take any value from a selected list of values. This helps avoiding
1697 * evaluating multiple exact match dimension filters which are OR'ed for 1720 /// evaluating multiple exact match dimension filters which are OR'ed for
1698 * every single response row. For example: 1721 /// every single response row. For example:
1699 * 1722 ///
1700 * expressions: ["A", "B", "C"] 1723 /// expressions: ["A", "B", "C"]
1701 * 1724 ///
1702 * Any response row whose dimension has it is value as A, B or C, matches 1725 /// Any response row whose dimension has it is value as A, B or C, matches
1703 * this DimensionFilter. 1726 /// this DimensionFilter.
1704 * - "NUMERIC_LESS_THAN" : Integer comparison filters. 1727 /// - "NUMERIC_LESS_THAN" : Integer comparison filters.
1705 * case sensitivity is ignored for these and the expression 1728 /// case sensitivity is ignored for these and the expression
1706 * is assumed to be a string representing an integer. 1729 /// is assumed to be a string representing an integer.
1707 * Failure conditions: 1730 /// Failure conditions:
1708 * 1731 ///
1709 * - if expression is not a valid int64, the client should expect 1732 /// - if expression is not a valid int64, the client should expect
1710 * an error. 1733 /// an error.
1711 * - input dimensions that are not valid int64 values will never match the 1734 /// - input dimensions that are not valid int64 values will never match the
1712 * filter. 1735 /// filter.
1713 * 1736 ///
1714 * Checks if the dimension is numerically less than the match expression. 1737 /// Checks if the dimension is numerically less than the match expression.
1715 * - "NUMERIC_GREATER_THAN" : Checks if the dimension is numerically greater 1738 /// - "NUMERIC_GREATER_THAN" : Checks if the dimension is numerically greater
1716 * than the match 1739 /// than the match
1717 * expression. 1740 /// expression.
1718 * - "NUMERIC_BETWEEN" : Checks if the dimension is numerically between the 1741 /// - "NUMERIC_BETWEEN" : Checks if the dimension is numerically between the
1719 * minimum and maximum 1742 /// minimum and maximum
1720 * of the match expression, boundaries excluded. 1743 /// of the match expression, boundaries excluded.
1721 */
1722 core.String operator; 1744 core.String operator;
1723 1745
1724 SegmentDimensionFilter(); 1746 SegmentDimensionFilter();
1725 1747
1726 SegmentDimensionFilter.fromJson(core.Map _json) { 1748 SegmentDimensionFilter.fromJson(core.Map _json) {
1727 if (_json.containsKey("caseSensitive")) { 1749 if (_json.containsKey("caseSensitive")) {
1728 caseSensitive = _json["caseSensitive"]; 1750 caseSensitive = _json["caseSensitive"];
1729 } 1751 }
1730 if (_json.containsKey("dimensionName")) { 1752 if (_json.containsKey("dimensionName")) {
1731 dimensionName = _json["dimensionName"]; 1753 dimensionName = _json["dimensionName"];
1732 } 1754 }
1733 if (_json.containsKey("expressions")) { 1755 if (_json.containsKey("expressions")) {
1734 expressions = _json["expressions"]; 1756 expressions = _json["expressions"];
1735 } 1757 }
1736 if (_json.containsKey("maxComparisonValue")) { 1758 if (_json.containsKey("maxComparisonValue")) {
1737 maxComparisonValue = _json["maxComparisonValue"]; 1759 maxComparisonValue = _json["maxComparisonValue"];
1738 } 1760 }
1739 if (_json.containsKey("minComparisonValue")) { 1761 if (_json.containsKey("minComparisonValue")) {
1740 minComparisonValue = _json["minComparisonValue"]; 1762 minComparisonValue = _json["minComparisonValue"];
1741 } 1763 }
1742 if (_json.containsKey("operator")) { 1764 if (_json.containsKey("operator")) {
1743 operator = _json["operator"]; 1765 operator = _json["operator"];
1744 } 1766 }
1745 } 1767 }
1746 1768
1747 core.Map<core.String, core.Object> toJson() { 1769 core.Map<core.String, core.Object> toJson() {
1748 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1770 final core.Map<core.String, core.Object> _json =
1771 new core.Map<core.String, core.Object>();
1749 if (caseSensitive != null) { 1772 if (caseSensitive != null) {
1750 _json["caseSensitive"] = caseSensitive; 1773 _json["caseSensitive"] = caseSensitive;
1751 } 1774 }
1752 if (dimensionName != null) { 1775 if (dimensionName != null) {
1753 _json["dimensionName"] = dimensionName; 1776 _json["dimensionName"] = dimensionName;
1754 } 1777 }
1755 if (expressions != null) { 1778 if (expressions != null) {
1756 _json["expressions"] = expressions; 1779 _json["expressions"] = expressions;
1757 } 1780 }
1758 if (maxComparisonValue != null) { 1781 if (maxComparisonValue != null) {
1759 _json["maxComparisonValue"] = maxComparisonValue; 1782 _json["maxComparisonValue"] = maxComparisonValue;
1760 } 1783 }
1761 if (minComparisonValue != null) { 1784 if (minComparisonValue != null) {
1762 _json["minComparisonValue"] = minComparisonValue; 1785 _json["minComparisonValue"] = minComparisonValue;
1763 } 1786 }
1764 if (operator != null) { 1787 if (operator != null) {
1765 _json["operator"] = operator; 1788 _json["operator"] = operator;
1766 } 1789 }
1767 return _json; 1790 return _json;
1768 } 1791 }
1769 } 1792 }
1770 1793
1771 /** 1794 /// SegmentFilter defines the segment to be either a simple or a sequence
1772 * SegmentFilter defines the segment to be either a simple or a sequence 1795 /// segment. A simple segment condition contains dimension and metric
1773 * segment. A simple segment condition contains dimension and metric conditions 1796 /// conditions
1774 * to select the sessions or users. A sequence segment condition can be used to 1797 /// to select the sessions or users. A sequence segment condition can be used
1775 * select users or sessions based on sequential conditions. 1798 /// to
1776 */ 1799 /// select users or sessions based on sequential conditions.
1777 class SegmentFilter { 1800 class SegmentFilter {
1778 /** 1801 /// If true, match the complement of simple or sequence segment.
1779 * If true, match the complement of simple or sequence segment. 1802 /// For example, to match all visits not from "New York", we can define the
1780 * For example, to match all visits not from "New York", we can define the 1803 /// segment as follows:
1781 * segment as follows: 1804 ///
1782 * 1805 /// "sessionSegment": {
1783 * "sessionSegment": { 1806 /// "segmentFilters": [{
1784 * "segmentFilters": [{ 1807 /// "simpleSegment" :{
1785 * "simpleSegment" :{ 1808 /// "orFiltersForSegment": [{
1786 * "orFiltersForSegment": [{ 1809 /// "segmentFilterClauses":[{
1787 * "segmentFilterClauses":[{ 1810 /// "dimensionFilter": {
1788 * "dimensionFilter": { 1811 /// "dimensionName": "ga:city",
1789 * "dimensionName": "ga:city", 1812 /// "expressions": ["New York"]
1790 * "expressions": ["New York"] 1813 /// }
1791 * } 1814 /// }]
1792 * }] 1815 /// }]
1793 * }] 1816 /// },
1794 * }, 1817 /// "not": "True"
1795 * "not": "True" 1818 /// }]
1796 * }] 1819 /// },
1797 * },
1798 */
1799 core.bool not; 1820 core.bool not;
1800 /** 1821
1801 * Sequence conditions consist of one or more steps, where each step is 1822 /// Sequence conditions consist of one or more steps, where each step is
1802 * defined by one or more dimension/metric conditions. Multiple steps can 1823 /// defined by one or more dimension/metric conditions. Multiple steps can
1803 * be combined with special sequence operators. 1824 /// be combined with special sequence operators.
1804 */
1805 SequenceSegment sequenceSegment; 1825 SequenceSegment sequenceSegment;
1806 /** 1826
1807 * A Simple segment conditions consist of one or more dimension/metric 1827 /// A Simple segment conditions consist of one or more dimension/metric
1808 * conditions that can be combined 1828 /// conditions that can be combined
1809 */
1810 SimpleSegment simpleSegment; 1829 SimpleSegment simpleSegment;
1811 1830
1812 SegmentFilter(); 1831 SegmentFilter();
1813 1832
1814 SegmentFilter.fromJson(core.Map _json) { 1833 SegmentFilter.fromJson(core.Map _json) {
1815 if (_json.containsKey("not")) { 1834 if (_json.containsKey("not")) {
1816 not = _json["not"]; 1835 not = _json["not"];
1817 } 1836 }
1818 if (_json.containsKey("sequenceSegment")) { 1837 if (_json.containsKey("sequenceSegment")) {
1819 sequenceSegment = new SequenceSegment.fromJson(_json["sequenceSegment"]); 1838 sequenceSegment = new SequenceSegment.fromJson(_json["sequenceSegment"]);
1820 } 1839 }
1821 if (_json.containsKey("simpleSegment")) { 1840 if (_json.containsKey("simpleSegment")) {
1822 simpleSegment = new SimpleSegment.fromJson(_json["simpleSegment"]); 1841 simpleSegment = new SimpleSegment.fromJson(_json["simpleSegment"]);
1823 } 1842 }
1824 } 1843 }
1825 1844
1826 core.Map<core.String, core.Object> toJson() { 1845 core.Map<core.String, core.Object> toJson() {
1827 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1846 final core.Map<core.String, core.Object> _json =
1847 new core.Map<core.String, core.Object>();
1828 if (not != null) { 1848 if (not != null) {
1829 _json["not"] = not; 1849 _json["not"] = not;
1830 } 1850 }
1831 if (sequenceSegment != null) { 1851 if (sequenceSegment != null) {
1832 _json["sequenceSegment"] = (sequenceSegment).toJson(); 1852 _json["sequenceSegment"] = (sequenceSegment).toJson();
1833 } 1853 }
1834 if (simpleSegment != null) { 1854 if (simpleSegment != null) {
1835 _json["simpleSegment"] = (simpleSegment).toJson(); 1855 _json["simpleSegment"] = (simpleSegment).toJson();
1836 } 1856 }
1837 return _json; 1857 return _json;
1838 } 1858 }
1839 } 1859 }
1840 1860
1841 /** 1861 /// Filter Clause to be used in a segment definition, can be wither a metric or
1842 * Filter Clause to be used in a segment definition, can be wither a metric or 1862 /// a dimension filter.
1843 * a dimension filter.
1844 */
1845 class SegmentFilterClause { 1863 class SegmentFilterClause {
1846 /** Dimension Filter for the segment definition. */ 1864 /// Dimension Filter for the segment definition.
1847 SegmentDimensionFilter dimensionFilter; 1865 SegmentDimensionFilter dimensionFilter;
1848 /** Metric Filter for the segment definition. */ 1866
1867 /// Metric Filter for the segment definition.
1849 SegmentMetricFilter metricFilter; 1868 SegmentMetricFilter metricFilter;
1850 /** Matches the complement (`!`) of the filter. */ 1869
1870 /// Matches the complement (`!`) of the filter.
1851 core.bool not; 1871 core.bool not;
1852 1872
1853 SegmentFilterClause(); 1873 SegmentFilterClause();
1854 1874
1855 SegmentFilterClause.fromJson(core.Map _json) { 1875 SegmentFilterClause.fromJson(core.Map _json) {
1856 if (_json.containsKey("dimensionFilter")) { 1876 if (_json.containsKey("dimensionFilter")) {
1857 dimensionFilter = new SegmentDimensionFilter.fromJson(_json["dimensionFilt er"]); 1877 dimensionFilter =
1878 new SegmentDimensionFilter.fromJson(_json["dimensionFilter"]);
1858 } 1879 }
1859 if (_json.containsKey("metricFilter")) { 1880 if (_json.containsKey("metricFilter")) {
1860 metricFilter = new SegmentMetricFilter.fromJson(_json["metricFilter"]); 1881 metricFilter = new SegmentMetricFilter.fromJson(_json["metricFilter"]);
1861 } 1882 }
1862 if (_json.containsKey("not")) { 1883 if (_json.containsKey("not")) {
1863 not = _json["not"]; 1884 not = _json["not"];
1864 } 1885 }
1865 } 1886 }
1866 1887
1867 core.Map<core.String, core.Object> toJson() { 1888 core.Map<core.String, core.Object> toJson() {
1868 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1889 final core.Map<core.String, core.Object> _json =
1890 new core.Map<core.String, core.Object>();
1869 if (dimensionFilter != null) { 1891 if (dimensionFilter != null) {
1870 _json["dimensionFilter"] = (dimensionFilter).toJson(); 1892 _json["dimensionFilter"] = (dimensionFilter).toJson();
1871 } 1893 }
1872 if (metricFilter != null) { 1894 if (metricFilter != null) {
1873 _json["metricFilter"] = (metricFilter).toJson(); 1895 _json["metricFilter"] = (metricFilter).toJson();
1874 } 1896 }
1875 if (not != null) { 1897 if (not != null) {
1876 _json["not"] = not; 1898 _json["not"] = not;
1877 } 1899 }
1878 return _json; 1900 return _json;
1879 } 1901 }
1880 } 1902 }
1881 1903
1882 /** Metric filter to be used in a segment filter clause. */ 1904 /// Metric filter to be used in a segment filter clause.
1883 class SegmentMetricFilter { 1905 class SegmentMetricFilter {
1884 /** 1906 /// The value to compare against. If the operator is `BETWEEN`, this value is
1885 * The value to compare against. If the operator is `BETWEEN`, this value is 1907 /// treated as minimum comparison value.
1886 * treated as minimum comparison value.
1887 */
1888 core.String comparisonValue; 1908 core.String comparisonValue;
1889 /** Max comparison value is only used for `BETWEEN` operator. */ 1909
1910 /// Max comparison value is only used for `BETWEEN` operator.
1890 core.String maxComparisonValue; 1911 core.String maxComparisonValue;
1891 /** 1912
1892 * The metric that will be filtered on. A `metricFilter` must contain a 1913 /// The metric that will be filtered on. A `metricFilter` must contain a
1893 * metric name. 1914 /// metric name.
1894 */
1895 core.String metricName; 1915 core.String metricName;
1896 /** 1916
1897 * Specifies is the operation to perform to compare the metric. The default 1917 /// Specifies is the operation to perform to compare the metric. The default
1898 * is `EQUAL`. 1918 /// is `EQUAL`.
1899 * Possible string values are: 1919 /// Possible string values are:
1900 * - "UNSPECIFIED_OPERATOR" : Unspecified operator is treated as `LESS_THAN` 1920 /// - "UNSPECIFIED_OPERATOR" : Unspecified operator is treated as `LESS_THAN`
1901 * operator. 1921 /// operator.
1902 * - "LESS_THAN" : Checks if the metric value is less than comparison value. 1922 /// - "LESS_THAN" : Checks if the metric value is less than comparison value.
1903 * - "GREATER_THAN" : Checks if the metric value is greater than comparison 1923 /// - "GREATER_THAN" : Checks if the metric value is greater than comparison
1904 * value. 1924 /// value.
1905 * - "EQUAL" : Equals operator. 1925 /// - "EQUAL" : Equals operator.
1906 * - "BETWEEN" : For between operator, both the minimum and maximum are 1926 /// - "BETWEEN" : For between operator, both the minimum and maximum are
1907 * exclusive. 1927 /// exclusive.
1908 * We will use `LT` and `GT` for comparison. 1928 /// We will use `LT` and `GT` for comparison.
1909 */
1910 core.String operator; 1929 core.String operator;
1911 /** 1930
1912 * Scope for a metric defines the level at which that metric is defined. The 1931 /// Scope for a metric defines the level at which that metric is defined.
1913 * specified metric scope must be equal to or greater than its primary scope 1932 /// The
1914 * as defined in the data model. The primary scope is defined by if the 1933 /// specified metric scope must be equal to or greater than its primary scope
1915 * segment is selecting users or sessions. 1934 /// as defined in the data model. The primary scope is defined by if the
1916 * Possible string values are: 1935 /// segment is selecting users or sessions.
1917 * - "UNSPECIFIED_SCOPE" : If the scope is unspecified, it defaults to the 1936 /// Possible string values are:
1918 * condition scope, 1937 /// - "UNSPECIFIED_SCOPE" : If the scope is unspecified, it defaults to the
1919 * `USER` or `SESSION` depending on if the segment is trying to choose 1938 /// condition scope,
1920 * users or sessions. 1939 /// `USER` or `SESSION` depending on if the segment is trying to choose
1921 * - "PRODUCT" : Product scope. 1940 /// users or sessions.
1922 * - "HIT" : Hit scope. 1941 /// - "PRODUCT" : Product scope.
1923 * - "SESSION" : Session scope. 1942 /// - "HIT" : Hit scope.
1924 * - "USER" : User scope. 1943 /// - "SESSION" : Session scope.
1925 */ 1944 /// - "USER" : User scope.
1926 core.String scope; 1945 core.String scope;
1927 1946
1928 SegmentMetricFilter(); 1947 SegmentMetricFilter();
1929 1948
1930 SegmentMetricFilter.fromJson(core.Map _json) { 1949 SegmentMetricFilter.fromJson(core.Map _json) {
1931 if (_json.containsKey("comparisonValue")) { 1950 if (_json.containsKey("comparisonValue")) {
1932 comparisonValue = _json["comparisonValue"]; 1951 comparisonValue = _json["comparisonValue"];
1933 } 1952 }
1934 if (_json.containsKey("maxComparisonValue")) { 1953 if (_json.containsKey("maxComparisonValue")) {
1935 maxComparisonValue = _json["maxComparisonValue"]; 1954 maxComparisonValue = _json["maxComparisonValue"];
1936 } 1955 }
1937 if (_json.containsKey("metricName")) { 1956 if (_json.containsKey("metricName")) {
1938 metricName = _json["metricName"]; 1957 metricName = _json["metricName"];
1939 } 1958 }
1940 if (_json.containsKey("operator")) { 1959 if (_json.containsKey("operator")) {
1941 operator = _json["operator"]; 1960 operator = _json["operator"];
1942 } 1961 }
1943 if (_json.containsKey("scope")) { 1962 if (_json.containsKey("scope")) {
1944 scope = _json["scope"]; 1963 scope = _json["scope"];
1945 } 1964 }
1946 } 1965 }
1947 1966
1948 core.Map<core.String, core.Object> toJson() { 1967 core.Map<core.String, core.Object> toJson() {
1949 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 1968 final core.Map<core.String, core.Object> _json =
1969 new core.Map<core.String, core.Object>();
1950 if (comparisonValue != null) { 1970 if (comparisonValue != null) {
1951 _json["comparisonValue"] = comparisonValue; 1971 _json["comparisonValue"] = comparisonValue;
1952 } 1972 }
1953 if (maxComparisonValue != null) { 1973 if (maxComparisonValue != null) {
1954 _json["maxComparisonValue"] = maxComparisonValue; 1974 _json["maxComparisonValue"] = maxComparisonValue;
1955 } 1975 }
1956 if (metricName != null) { 1976 if (metricName != null) {
1957 _json["metricName"] = metricName; 1977 _json["metricName"] = metricName;
1958 } 1978 }
1959 if (operator != null) { 1979 if (operator != null) {
1960 _json["operator"] = operator; 1980 _json["operator"] = operator;
1961 } 1981 }
1962 if (scope != null) { 1982 if (scope != null) {
1963 _json["scope"] = scope; 1983 _json["scope"] = scope;
1964 } 1984 }
1965 return _json; 1985 return _json;
1966 } 1986 }
1967 } 1987 }
1968 1988
1969 /** A segment sequence definition. */ 1989 /// A segment sequence definition.
1970 class SegmentSequenceStep { 1990 class SegmentSequenceStep {
1971 /** 1991 /// Specifies if the step immediately precedes or can be any time before the
1972 * Specifies if the step immediately precedes or can be any time before the 1992 /// next step.
1973 * next step. 1993 /// Possible string values are:
1974 * Possible string values are: 1994 /// - "UNSPECIFIED_MATCH_TYPE" : Unspecified match type is treated as
1975 * - "UNSPECIFIED_MATCH_TYPE" : Unspecified match type is treated as precedes. 1995 /// precedes.
1976 * - "PRECEDES" : Operator indicates that the previous step precedes the next 1996 /// - "PRECEDES" : Operator indicates that the previous step precedes the
1977 * step. 1997 /// next step.
1978 * - "IMMEDIATELY_PRECEDES" : Operator indicates that the previous step 1998 /// - "IMMEDIATELY_PRECEDES" : Operator indicates that the previous step
1979 * immediately precedes the next 1999 /// immediately precedes the next
1980 * step. 2000 /// step.
1981 */
1982 core.String matchType; 2001 core.String matchType;
1983 /** 2002
1984 * A sequence is specified with a list of Or grouped filters which are 2003 /// A sequence is specified with a list of Or grouped filters which are
1985 * combined with `AND` operator. 2004 /// combined with `AND` operator.
1986 */
1987 core.List<OrFiltersForSegment> orFiltersForSegment; 2005 core.List<OrFiltersForSegment> orFiltersForSegment;
1988 2006
1989 SegmentSequenceStep(); 2007 SegmentSequenceStep();
1990 2008
1991 SegmentSequenceStep.fromJson(core.Map _json) { 2009 SegmentSequenceStep.fromJson(core.Map _json) {
1992 if (_json.containsKey("matchType")) { 2010 if (_json.containsKey("matchType")) {
1993 matchType = _json["matchType"]; 2011 matchType = _json["matchType"];
1994 } 2012 }
1995 if (_json.containsKey("orFiltersForSegment")) { 2013 if (_json.containsKey("orFiltersForSegment")) {
1996 orFiltersForSegment = _json["orFiltersForSegment"].map((value) => new OrFi ltersForSegment.fromJson(value)).toList(); 2014 orFiltersForSegment = _json["orFiltersForSegment"]
2015 .map((value) => new OrFiltersForSegment.fromJson(value))
2016 .toList();
1997 } 2017 }
1998 } 2018 }
1999 2019
2000 core.Map<core.String, core.Object> toJson() { 2020 core.Map<core.String, core.Object> toJson() {
2001 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 2021 final core.Map<core.String, core.Object> _json =
2022 new core.Map<core.String, core.Object>();
2002 if (matchType != null) { 2023 if (matchType != null) {
2003 _json["matchType"] = matchType; 2024 _json["matchType"] = matchType;
2004 } 2025 }
2005 if (orFiltersForSegment != null) { 2026 if (orFiltersForSegment != null) {
2006 _json["orFiltersForSegment"] = orFiltersForSegment.map((value) => (value). toJson()).toList(); 2027 _json["orFiltersForSegment"] =
2028 orFiltersForSegment.map((value) => (value).toJson()).toList();
2007 } 2029 }
2008 return _json; 2030 return _json;
2009 } 2031 }
2010 } 2032 }
2011 2033
2012 /** 2034 /// Sequence conditions consist of one or more steps, where each step is
2013 * Sequence conditions consist of one or more steps, where each step is defined 2035 /// defined
2014 * by one or more dimension/metric conditions. Multiple steps can be combined 2036 /// by one or more dimension/metric conditions. Multiple steps can be combined
2015 * with special sequence operators. 2037 /// with special sequence operators.
2016 */
2017 class SequenceSegment { 2038 class SequenceSegment {
2018 /** 2039 /// If set, first step condition must match the first hit of the visitor (in
2019 * If set, first step condition must match the first hit of the visitor (in 2040 /// the date range).
2020 * the date range).
2021 */
2022 core.bool firstStepShouldMatchFirstHit; 2041 core.bool firstStepShouldMatchFirstHit;
2023 /** The list of steps in the sequence. */ 2042
2043 /// The list of steps in the sequence.
2024 core.List<SegmentSequenceStep> segmentSequenceSteps; 2044 core.List<SegmentSequenceStep> segmentSequenceSteps;
2025 2045
2026 SequenceSegment(); 2046 SequenceSegment();
2027 2047
2028 SequenceSegment.fromJson(core.Map _json) { 2048 SequenceSegment.fromJson(core.Map _json) {
2029 if (_json.containsKey("firstStepShouldMatchFirstHit")) { 2049 if (_json.containsKey("firstStepShouldMatchFirstHit")) {
2030 firstStepShouldMatchFirstHit = _json["firstStepShouldMatchFirstHit"]; 2050 firstStepShouldMatchFirstHit = _json["firstStepShouldMatchFirstHit"];
2031 } 2051 }
2032 if (_json.containsKey("segmentSequenceSteps")) { 2052 if (_json.containsKey("segmentSequenceSteps")) {
2033 segmentSequenceSteps = _json["segmentSequenceSteps"].map((value) => new Se gmentSequenceStep.fromJson(value)).toList(); 2053 segmentSequenceSteps = _json["segmentSequenceSteps"]
2054 .map((value) => new SegmentSequenceStep.fromJson(value))
2055 .toList();
2034 } 2056 }
2035 } 2057 }
2036 2058
2037 core.Map<core.String, core.Object> toJson() { 2059 core.Map<core.String, core.Object> toJson() {
2038 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 2060 final core.Map<core.String, core.Object> _json =
2061 new core.Map<core.String, core.Object>();
2039 if (firstStepShouldMatchFirstHit != null) { 2062 if (firstStepShouldMatchFirstHit != null) {
2040 _json["firstStepShouldMatchFirstHit"] = firstStepShouldMatchFirstHit; 2063 _json["firstStepShouldMatchFirstHit"] = firstStepShouldMatchFirstHit;
2041 } 2064 }
2042 if (segmentSequenceSteps != null) { 2065 if (segmentSequenceSteps != null) {
2043 _json["segmentSequenceSteps"] = segmentSequenceSteps.map((value) => (value ).toJson()).toList(); 2066 _json["segmentSequenceSteps"] =
2067 segmentSequenceSteps.map((value) => (value).toJson()).toList();
2044 } 2068 }
2045 return _json; 2069 return _json;
2046 } 2070 }
2047 } 2071 }
2048 2072
2049 /** 2073 /// A Simple segment conditions consist of one or more dimension/metric
2050 * A Simple segment conditions consist of one or more dimension/metric 2074 /// conditions that can be combined.
2051 * conditions that can be combined.
2052 */
2053 class SimpleSegment { 2075 class SimpleSegment {
2054 /** 2076 /// A list of segment filters groups which are combined with logical `AND`
2055 * A list of segment filters groups which are combined with logical `AND` 2077 /// operator.
2056 * operator.
2057 */
2058 core.List<OrFiltersForSegment> orFiltersForSegment; 2078 core.List<OrFiltersForSegment> orFiltersForSegment;
2059 2079
2060 SimpleSegment(); 2080 SimpleSegment();
2061 2081
2062 SimpleSegment.fromJson(core.Map _json) { 2082 SimpleSegment.fromJson(core.Map _json) {
2063 if (_json.containsKey("orFiltersForSegment")) { 2083 if (_json.containsKey("orFiltersForSegment")) {
2064 orFiltersForSegment = _json["orFiltersForSegment"].map((value) => new OrFi ltersForSegment.fromJson(value)).toList(); 2084 orFiltersForSegment = _json["orFiltersForSegment"]
2085 .map((value) => new OrFiltersForSegment.fromJson(value))
2086 .toList();
2065 } 2087 }
2066 } 2088 }
2067 2089
2068 core.Map<core.String, core.Object> toJson() { 2090 core.Map<core.String, core.Object> toJson() {
2069 final core.Map<core.String, core.Object> _json = new core.Map<core.String, c ore.Object>(); 2091 final core.Map<core.String, core.Object> _json =
2092 new core.Map<core.String, core.Object>();
2070 if (orFiltersForSegment != null) { 2093 if (orFiltersForSegment != null) {
2071 _json["orFiltersForSegment"] = orFiltersForSegment.map((value) => (value). toJson()).toList(); 2094 _json["orFiltersForSegment"] =
2095 orFiltersForSegment.map((value) => (value).toJson()).toList();
2072 } 2096 }
2073 return _json; 2097 return _json;
2074 } 2098 }
2075 } 2099 }
OLDNEW
« no previous file with comments | « generated/googleapis/lib/analytics/v3.dart ('k') | generated/googleapis/lib/androiddeviceprovisioning/v1.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698