1// Copyright 2020 Google LLC.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Code generated file. DO NOT EDIT.
6
7// Package testing provides access to the Cloud Testing API.
8//
9// For product documentation, see: https://developers.google.com/cloud-test-lab/
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/testing/v1"
16//   ...
17//   ctx := context.Background()
18//   testingService, err := testing.NewService(ctx)
19//
20// In this example, Google Application Default Credentials are used for authentication.
21//
22// For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials.
23//
24// Other authentication options
25//
26// By default, all available scopes (see "Constants") are used to authenticate. To restrict scopes, use option.WithScopes:
27//
28//   testingService, err := testing.NewService(ctx, option.WithScopes(testing.CloudPlatformReadOnlyScope))
29//
30// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
31//
32//   testingService, err := testing.NewService(ctx, option.WithAPIKey("AIza..."))
33//
34// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
35//
36//   config := &oauth2.Config{...}
37//   // ...
38//   token, err := config.Exchange(ctx, ...)
39//   testingService, err := testing.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
40//
41// See https://godoc.org/google.golang.org/api/option/ for details on options.
42package testing // import "google.golang.org/api/testing/v1"
43
44import (
45	"bytes"
46	"context"
47	"encoding/json"
48	"errors"
49	"fmt"
50	"io"
51	"net/http"
52	"net/url"
53	"strconv"
54	"strings"
55
56	googleapi "google.golang.org/api/googleapi"
57	gensupport "google.golang.org/api/internal/gensupport"
58	option "google.golang.org/api/option"
59	internaloption "google.golang.org/api/option/internaloption"
60	htransport "google.golang.org/api/transport/http"
61)
62
63// Always reference these packages, just in case the auto-generated code
64// below doesn't.
65var _ = bytes.NewBuffer
66var _ = strconv.Itoa
67var _ = fmt.Sprintf
68var _ = json.NewDecoder
69var _ = io.Copy
70var _ = url.Parse
71var _ = gensupport.MarshalJSON
72var _ = googleapi.Version
73var _ = errors.New
74var _ = strings.Replace
75var _ = context.Canceled
76var _ = internaloption.WithDefaultEndpoint
77
78const apiId = "testing:v1"
79const apiName = "testing"
80const apiVersion = "v1"
81const basePath = "https://testing.googleapis.com/"
82
83// OAuth2 scopes used by this API.
84const (
85	// View and manage your data across Google Cloud Platform services
86	CloudPlatformScope = "https://www.googleapis.com/auth/cloud-platform"
87
88	// View your data across Google Cloud Platform services
89	CloudPlatformReadOnlyScope = "https://www.googleapis.com/auth/cloud-platform.read-only"
90)
91
92// NewService creates a new Service.
93func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
94	scopesOption := option.WithScopes(
95		"https://www.googleapis.com/auth/cloud-platform",
96		"https://www.googleapis.com/auth/cloud-platform.read-only",
97	)
98	// NOTE: prepend, so we don't override user-specified scopes.
99	opts = append([]option.ClientOption{scopesOption}, opts...)
100	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
101	client, endpoint, err := htransport.NewClient(ctx, opts...)
102	if err != nil {
103		return nil, err
104	}
105	s, err := New(client)
106	if err != nil {
107		return nil, err
108	}
109	if endpoint != "" {
110		s.BasePath = endpoint
111	}
112	return s, nil
113}
114
115// New creates a new Service. It uses the provided http.Client for requests.
116//
117// Deprecated: please use NewService instead.
118// To provide a custom HTTP client, use option.WithHTTPClient.
119// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
120func New(client *http.Client) (*Service, error) {
121	if client == nil {
122		return nil, errors.New("client is nil")
123	}
124	s := &Service{client: client, BasePath: basePath}
125	s.ApplicationDetailService = NewApplicationDetailServiceService(s)
126	s.Projects = NewProjectsService(s)
127	s.TestEnvironmentCatalog = NewTestEnvironmentCatalogService(s)
128	return s, nil
129}
130
131type Service struct {
132	client    *http.Client
133	BasePath  string // API endpoint base URL
134	UserAgent string // optional additional User-Agent fragment
135
136	ApplicationDetailService *ApplicationDetailServiceService
137
138	Projects *ProjectsService
139
140	TestEnvironmentCatalog *TestEnvironmentCatalogService
141}
142
143func (s *Service) userAgent() string {
144	if s.UserAgent == "" {
145		return googleapi.UserAgent
146	}
147	return googleapi.UserAgent + " " + s.UserAgent
148}
149
150func NewApplicationDetailServiceService(s *Service) *ApplicationDetailServiceService {
151	rs := &ApplicationDetailServiceService{s: s}
152	return rs
153}
154
155type ApplicationDetailServiceService struct {
156	s *Service
157}
158
159func NewProjectsService(s *Service) *ProjectsService {
160	rs := &ProjectsService{s: s}
161	rs.TestMatrices = NewProjectsTestMatricesService(s)
162	return rs
163}
164
165type ProjectsService struct {
166	s *Service
167
168	TestMatrices *ProjectsTestMatricesService
169}
170
171func NewProjectsTestMatricesService(s *Service) *ProjectsTestMatricesService {
172	rs := &ProjectsTestMatricesService{s: s}
173	return rs
174}
175
176type ProjectsTestMatricesService struct {
177	s *Service
178}
179
180func NewTestEnvironmentCatalogService(s *Service) *TestEnvironmentCatalogService {
181	rs := &TestEnvironmentCatalogService{s: s}
182	return rs
183}
184
185type TestEnvironmentCatalogService struct {
186	s *Service
187}
188
189// Account: Identifies an account and how to log into it.
190type Account struct {
191	// GoogleAuto: An automatic google login account.
192	GoogleAuto *GoogleAuto `json:"googleAuto,omitempty"`
193
194	// ForceSendFields is a list of field names (e.g. "GoogleAuto") to
195	// unconditionally include in API requests. By default, fields with
196	// empty values are omitted from API requests. However, any non-pointer,
197	// non-interface field appearing in ForceSendFields will be sent to the
198	// server regardless of whether the field is empty or not. This may be
199	// used to include empty fields in Patch requests.
200	ForceSendFields []string `json:"-"`
201
202	// NullFields is a list of field names (e.g. "GoogleAuto") to include in
203	// API requests with the JSON null value. By default, fields with empty
204	// values are omitted from API requests. However, any field with an
205	// empty value appearing in NullFields will be sent to the server as
206	// null. It is an error if a field in this list has a non-empty value.
207	// This may be used to include null fields in Patch requests.
208	NullFields []string `json:"-"`
209}
210
211func (s *Account) MarshalJSON() ([]byte, error) {
212	type NoMethod Account
213	raw := NoMethod(*s)
214	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
215}
216
217// AndroidDevice: A single Android device.
218type AndroidDevice struct {
219	// AndroidModelId: Required. The id of the Android device to be
220	// used.
221	// Use the TestEnvironmentDiscoveryService to get supported options.
222	AndroidModelId string `json:"androidModelId,omitempty"`
223
224	// AndroidVersionId: Required. The id of the Android OS version to be
225	// used.
226	// Use the TestEnvironmentDiscoveryService to get supported options.
227	AndroidVersionId string `json:"androidVersionId,omitempty"`
228
229	// Locale: Required. The locale the test device used for testing.
230	// Use the TestEnvironmentDiscoveryService to get supported options.
231	Locale string `json:"locale,omitempty"`
232
233	// Orientation: Required. How the device is oriented during the
234	// test.
235	// Use the TestEnvironmentDiscoveryService to get supported options.
236	Orientation string `json:"orientation,omitempty"`
237
238	// ForceSendFields is a list of field names (e.g. "AndroidModelId") to
239	// unconditionally include in API requests. By default, fields with
240	// empty values are omitted from API requests. However, any non-pointer,
241	// non-interface field appearing in ForceSendFields will be sent to the
242	// server regardless of whether the field is empty or not. This may be
243	// used to include empty fields in Patch requests.
244	ForceSendFields []string `json:"-"`
245
246	// NullFields is a list of field names (e.g. "AndroidModelId") to
247	// include in API requests with the JSON null value. By default, fields
248	// with empty values are omitted from API requests. However, any field
249	// with an empty value appearing in NullFields will be sent to the
250	// server as null. It is an error if a field in this list has a
251	// non-empty value. This may be used to include null fields in Patch
252	// requests.
253	NullFields []string `json:"-"`
254}
255
256func (s *AndroidDevice) MarshalJSON() ([]byte, error) {
257	type NoMethod AndroidDevice
258	raw := NoMethod(*s)
259	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
260}
261
262// AndroidDeviceCatalog: The currently supported Android devices.
263type AndroidDeviceCatalog struct {
264	// Models: The set of supported Android device models.
265	Models []*AndroidModel `json:"models,omitempty"`
266
267	// RuntimeConfiguration: The set of supported runtime configurations.
268	RuntimeConfiguration *AndroidRuntimeConfiguration `json:"runtimeConfiguration,omitempty"`
269
270	// Versions: The set of supported Android OS versions.
271	Versions []*AndroidVersion `json:"versions,omitempty"`
272
273	// ForceSendFields is a list of field names (e.g. "Models") to
274	// unconditionally include in API requests. By default, fields with
275	// empty values are omitted from API requests. However, any non-pointer,
276	// non-interface field appearing in ForceSendFields will be sent to the
277	// server regardless of whether the field is empty or not. This may be
278	// used to include empty fields in Patch requests.
279	ForceSendFields []string `json:"-"`
280
281	// NullFields is a list of field names (e.g. "Models") to include in API
282	// requests with the JSON null value. By default, fields with empty
283	// values are omitted from API requests. However, any field with an
284	// empty value appearing in NullFields will be sent to the server as
285	// null. It is an error if a field in this list has a non-empty value.
286	// This may be used to include null fields in Patch requests.
287	NullFields []string `json:"-"`
288}
289
290func (s *AndroidDeviceCatalog) MarshalJSON() ([]byte, error) {
291	type NoMethod AndroidDeviceCatalog
292	raw := NoMethod(*s)
293	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
294}
295
296// AndroidDeviceList: A list of Android device configurations in which
297// the test is to be executed.
298type AndroidDeviceList struct {
299	// AndroidDevices: Required. A list of Android devices.
300	AndroidDevices []*AndroidDevice `json:"androidDevices,omitempty"`
301
302	// ForceSendFields is a list of field names (e.g. "AndroidDevices") to
303	// unconditionally include in API requests. By default, fields with
304	// empty values are omitted from API requests. However, any non-pointer,
305	// non-interface field appearing in ForceSendFields will be sent to the
306	// server regardless of whether the field is empty or not. This may be
307	// used to include empty fields in Patch requests.
308	ForceSendFields []string `json:"-"`
309
310	// NullFields is a list of field names (e.g. "AndroidDevices") to
311	// include in API requests with the JSON null value. By default, fields
312	// with empty values are omitted from API requests. However, any field
313	// with an empty value appearing in NullFields will be sent to the
314	// server as null. It is an error if a field in this list has a
315	// non-empty value. This may be used to include null fields in Patch
316	// requests.
317	NullFields []string `json:"-"`
318}
319
320func (s *AndroidDeviceList) MarshalJSON() ([]byte, error) {
321	type NoMethod AndroidDeviceList
322	raw := NoMethod(*s)
323	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
324}
325
326// AndroidInstrumentationTest: A test of an Android application that can
327// control an Android component
328// independently of its normal lifecycle.
329// Android instrumentation tests run an application APK and test APK
330// inside the
331// same process on a virtual or physical AndroidDevice.  They also
332// specify
333// a test runner class, such as com.google.GoogleTestRunner, which can
334// vary
335// on the specific instrumentation framework chosen.
336//
337// See <http://developer.android.com/tools/testing/testing_android.html>
338// for
339// more information on types of Android tests.
340type AndroidInstrumentationTest struct {
341	// AppApk: The APK for the application under test.
342	AppApk *FileReference `json:"appApk,omitempty"`
343
344	// AppBundle: A multi-apk app bundle for the application under test.
345	AppBundle *AppBundle `json:"appBundle,omitempty"`
346
347	// AppPackageId: The java package for the application under test.
348	// The default value is determined by examining the application's
349	// manifest.
350	AppPackageId string `json:"appPackageId,omitempty"`
351
352	// OrchestratorOption: The option of whether running each test within
353	// its own invocation of
354	// instrumentation with Android Test Orchestrator or not.
355	// ** Orchestrator is only compatible with AndroidJUnitRunner version
356	// 1.0 or
357	// higher! **
358	// Orchestrator offers the following benefits:
359	//  - No shared state
360	//  - Crashes are isolated
361	//  - Logs are scoped per
362	// test
363	//
364	// See
365	// <https://developer.android.com/training/testing/junit-runner
366	// .html#using-android-test-orchestrator>
367	// for more information about Android Test Orchestrator.
368	//
369	// If not set, the test will be run without the orchestrator.
370	//
371	// Possible values:
372	//   "ORCHESTRATOR_OPTION_UNSPECIFIED" - Default value: the server will
373	// choose the mode. Currently implies that
374	// the test will run without the orchestrator. In the future,
375	// all instrumentation tests will be run with the orchestrator.
376	// Using the orchestrator is highly encouraged because of all the
377	// benefits it
378	// offers.
379	//   "USE_ORCHESTRATOR" - Run test using orchestrator.
380	// ** Only compatible with AndroidJUnitRunner version 1.0 or higher!
381	// **
382	// Recommended.
383	//   "DO_NOT_USE_ORCHESTRATOR" - Run test without using orchestrator.
384	OrchestratorOption string `json:"orchestratorOption,omitempty"`
385
386	// ShardingOption: The option to run tests in multiple shards in
387	// parallel.
388	ShardingOption *ShardingOption `json:"shardingOption,omitempty"`
389
390	// TestApk: Required. The APK containing the test code to be executed.
391	TestApk *FileReference `json:"testApk,omitempty"`
392
393	// TestPackageId: The java package for the test to be executed.
394	// The default value is determined by examining the application's
395	// manifest.
396	TestPackageId string `json:"testPackageId,omitempty"`
397
398	// TestRunnerClass: The InstrumentationTestRunner class.
399	// The default value is determined by examining the application's
400	// manifest.
401	TestRunnerClass string `json:"testRunnerClass,omitempty"`
402
403	// TestTargets: Each target must be fully qualified with the package
404	// name or class name,
405	// in one of these formats:
406	//  - "package package_name"
407	//  - "class package_name.class_name"
408	//  - "class package_name.class_name#method_name"
409	//
410	// If empty, all targets in the module will be run.
411	TestTargets []string `json:"testTargets,omitempty"`
412
413	// ForceSendFields is a list of field names (e.g. "AppApk") to
414	// unconditionally include in API requests. By default, fields with
415	// empty values are omitted from API requests. However, any non-pointer,
416	// non-interface field appearing in ForceSendFields will be sent to the
417	// server regardless of whether the field is empty or not. This may be
418	// used to include empty fields in Patch requests.
419	ForceSendFields []string `json:"-"`
420
421	// NullFields is a list of field names (e.g. "AppApk") to include in API
422	// requests with the JSON null value. By default, fields with empty
423	// values are omitted from API requests. However, any field with an
424	// empty value appearing in NullFields will be sent to the server as
425	// null. It is an error if a field in this list has a non-empty value.
426	// This may be used to include null fields in Patch requests.
427	NullFields []string `json:"-"`
428}
429
430func (s *AndroidInstrumentationTest) MarshalJSON() ([]byte, error) {
431	type NoMethod AndroidInstrumentationTest
432	raw := NoMethod(*s)
433	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
434}
435
436// AndroidMatrix: A set of Android device configuration permutations is
437// defined by the
438// the cross-product of the given axes. Internally, the given
439// AndroidMatrix
440// will be expanded into a set of AndroidDevices.
441//
442// Only supported permutations will be instantiated.  Invalid
443// permutations
444// (e.g., incompatible models/versions) are ignored.
445type AndroidMatrix struct {
446	// AndroidModelIds: Required. The ids of the set of Android device to be
447	// used.
448	// Use the TestEnvironmentDiscoveryService to get supported options.
449	AndroidModelIds []string `json:"androidModelIds,omitempty"`
450
451	// AndroidVersionIds: Required. The ids of the set of Android OS version
452	// to be used.
453	// Use the TestEnvironmentDiscoveryService to get supported options.
454	AndroidVersionIds []string `json:"androidVersionIds,omitempty"`
455
456	// Locales: Required. The set of locales the test device will enable for
457	// testing.
458	// Use the TestEnvironmentDiscoveryService to get supported options.
459	Locales []string `json:"locales,omitempty"`
460
461	// Orientations: Required. The set of orientations to test with.
462	// Use the TestEnvironmentDiscoveryService to get supported options.
463	Orientations []string `json:"orientations,omitempty"`
464
465	// ForceSendFields is a list of field names (e.g. "AndroidModelIds") to
466	// unconditionally include in API requests. By default, fields with
467	// empty values are omitted from API requests. However, any non-pointer,
468	// non-interface field appearing in ForceSendFields will be sent to the
469	// server regardless of whether the field is empty or not. This may be
470	// used to include empty fields in Patch requests.
471	ForceSendFields []string `json:"-"`
472
473	// NullFields is a list of field names (e.g. "AndroidModelIds") to
474	// include in API requests with the JSON null value. By default, fields
475	// with empty values are omitted from API requests. However, any field
476	// with an empty value appearing in NullFields will be sent to the
477	// server as null. It is an error if a field in this list has a
478	// non-empty value. This may be used to include null fields in Patch
479	// requests.
480	NullFields []string `json:"-"`
481}
482
483func (s *AndroidMatrix) MarshalJSON() ([]byte, error) {
484	type NoMethod AndroidMatrix
485	raw := NoMethod(*s)
486	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
487}
488
489// AndroidModel: A description of an Android device tests may be run on.
490type AndroidModel struct {
491	// Brand: The company that this device is branded with.
492	// Example: "Google", "Samsung".
493	Brand string `json:"brand,omitempty"`
494
495	// Codename: The name of the industrial design.
496	// This corresponds to android.os.Build.DEVICE.
497	Codename string `json:"codename,omitempty"`
498
499	// Form: Whether this device is virtual or physical.
500	//
501	// Possible values:
502	//   "DEVICE_FORM_UNSPECIFIED" - Do not use.  For proto versioning only.
503	//   "VIRTUAL" - A software stack that simulates the device.
504	//   "PHYSICAL" - Actual hardware.
505	Form string `json:"form,omitempty"`
506
507	// FormFactor: Whether this device is a phone, tablet, wearable, etc.
508	//
509	// Possible values:
510	//   "DEVICE_FORM_FACTOR_UNSPECIFIED" - Do not use. For proto versioning
511	// only.
512	//   "PHONE" - This device has the shape of a phone.
513	//   "TABLET" - This device has the shape of a tablet.
514	//   "WEARABLE" - This device has the shape of a watch or other
515	// wearable.
516	FormFactor string `json:"formFactor,omitempty"`
517
518	// Id: The unique opaque id for this model.
519	// Use this for invoking the TestExecutionService.
520	Id string `json:"id,omitempty"`
521
522	// LowFpsVideoRecording: True if and only if tests with this model are
523	// recorded by stitching
524	// together screenshots. See use_low_spec_video_recording in device
525	// config.
526	LowFpsVideoRecording bool `json:"lowFpsVideoRecording,omitempty"`
527
528	// Manufacturer: The manufacturer of this device.
529	Manufacturer string `json:"manufacturer,omitempty"`
530
531	// Name: The human-readable marketing name for this device
532	// model.
533	// Examples: "Nexus 5", "Galaxy S5".
534	Name string `json:"name,omitempty"`
535
536	// ScreenDensity: Screen density in DPI.
537	// This corresponds to ro.sf.lcd_density
538	ScreenDensity int64 `json:"screenDensity,omitempty"`
539
540	// ScreenX: Screen size in the horizontal (X) dimension measured in
541	// pixels.
542	ScreenX int64 `json:"screenX,omitempty"`
543
544	// ScreenY: Screen size in the vertical (Y) dimension measured in
545	// pixels.
546	ScreenY int64 `json:"screenY,omitempty"`
547
548	// SupportedAbis: The list of supported ABIs for this device.
549	// This corresponds to either android.os.Build.SUPPORTED_ABIS (for API
550	// level
551	// 21 and above) or android.os.Build.CPU_ABI/CPU_ABI2.
552	// The most preferred ABI is the first element in the list.
553	//
554	// Elements are optionally prefixed by "version_id:" (where version_id
555	// is
556	// the id of an AndroidVersion), denoting an ABI that is supported only
557	// on
558	// a particular version.
559	SupportedAbis []string `json:"supportedAbis,omitempty"`
560
561	// SupportedVersionIds: The set of Android versions this device
562	// supports.
563	SupportedVersionIds []string `json:"supportedVersionIds,omitempty"`
564
565	// Tags: Tags for this dimension.
566	// Examples: "default", "preview", "deprecated".
567	Tags []string `json:"tags,omitempty"`
568
569	// ThumbnailUrl: URL of a thumbnail image of the device.
570	ThumbnailUrl string `json:"thumbnailUrl,omitempty"`
571
572	// ForceSendFields is a list of field names (e.g. "Brand") to
573	// unconditionally include in API requests. By default, fields with
574	// empty values are omitted from API requests. However, any non-pointer,
575	// non-interface field appearing in ForceSendFields will be sent to the
576	// server regardless of whether the field is empty or not. This may be
577	// used to include empty fields in Patch requests.
578	ForceSendFields []string `json:"-"`
579
580	// NullFields is a list of field names (e.g. "Brand") to include in API
581	// requests with the JSON null value. By default, fields with empty
582	// values are omitted from API requests. However, any field with an
583	// empty value appearing in NullFields will be sent to the server as
584	// null. It is an error if a field in this list has a non-empty value.
585	// This may be used to include null fields in Patch requests.
586	NullFields []string `json:"-"`
587}
588
589func (s *AndroidModel) MarshalJSON() ([]byte, error) {
590	type NoMethod AndroidModel
591	raw := NoMethod(*s)
592	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
593}
594
595// AndroidRoboTest: A test of an android application that explores the
596// application on a virtual
597// or physical Android Device, finding culprits and crashes as it goes.
598type AndroidRoboTest struct {
599	// AppApk: The APK for the application under test.
600	AppApk *FileReference `json:"appApk,omitempty"`
601
602	// AppBundle: A multi-apk app bundle for the application under test.
603	AppBundle *AppBundle `json:"appBundle,omitempty"`
604
605	// AppInitialActivity: The initial activity that should be used to start
606	// the app.
607	AppInitialActivity string `json:"appInitialActivity,omitempty"`
608
609	// AppPackageId: The java package for the application under test.
610	// The default value is determined by examining the application's
611	// manifest.
612	AppPackageId string `json:"appPackageId,omitempty"`
613
614	// MaxDepth: The max depth of the traversal stack Robo can explore.
615	// Needs to be at least
616	// 2 to make Robo explore the app beyond the first activity.
617	// Default is 50.
618	MaxDepth int64 `json:"maxDepth,omitempty"`
619
620	// MaxSteps: The max number of steps Robo can execute.
621	// Default is no limit.
622	MaxSteps int64 `json:"maxSteps,omitempty"`
623
624	// RoboDirectives: A set of directives Robo should apply during the
625	// crawl.
626	// This allows users to customize the crawl. For example, the username
627	// and
628	// password for a test account can be provided.
629	RoboDirectives []*RoboDirective `json:"roboDirectives,omitempty"`
630
631	// RoboScript: A JSON file with a sequence of actions Robo should
632	// perform as a prologue
633	// for the crawl.
634	RoboScript *FileReference `json:"roboScript,omitempty"`
635
636	// StartingIntents: The intents used to launch the app for the crawl.
637	// If none are provided, then the main launcher activity is launched.
638	// If some are provided, then only those provided are launched (the
639	// main
640	// launcher activity must be provided explicitly).
641	StartingIntents []*RoboStartingIntent `json:"startingIntents,omitempty"`
642
643	// ForceSendFields is a list of field names (e.g. "AppApk") to
644	// unconditionally include in API requests. By default, fields with
645	// empty values are omitted from API requests. However, any non-pointer,
646	// non-interface field appearing in ForceSendFields will be sent to the
647	// server regardless of whether the field is empty or not. This may be
648	// used to include empty fields in Patch requests.
649	ForceSendFields []string `json:"-"`
650
651	// NullFields is a list of field names (e.g. "AppApk") to include in API
652	// requests with the JSON null value. By default, fields with empty
653	// values are omitted from API requests. However, any field with an
654	// empty value appearing in NullFields will be sent to the server as
655	// null. It is an error if a field in this list has a non-empty value.
656	// This may be used to include null fields in Patch requests.
657	NullFields []string `json:"-"`
658}
659
660func (s *AndroidRoboTest) MarshalJSON() ([]byte, error) {
661	type NoMethod AndroidRoboTest
662	raw := NoMethod(*s)
663	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
664}
665
666// AndroidRuntimeConfiguration: Android configuration that can be
667// selected at the time a test is run.
668type AndroidRuntimeConfiguration struct {
669	// Locales: The set of available locales.
670	Locales []*Locale `json:"locales,omitempty"`
671
672	// Orientations: The set of available orientations.
673	Orientations []*Orientation `json:"orientations,omitempty"`
674
675	// ForceSendFields is a list of field names (e.g. "Locales") to
676	// unconditionally include in API requests. By default, fields with
677	// empty values are omitted from API requests. However, any non-pointer,
678	// non-interface field appearing in ForceSendFields will be sent to the
679	// server regardless of whether the field is empty or not. This may be
680	// used to include empty fields in Patch requests.
681	ForceSendFields []string `json:"-"`
682
683	// NullFields is a list of field names (e.g. "Locales") to include in
684	// API requests with the JSON null value. By default, fields with empty
685	// values are omitted from API requests. However, any field with an
686	// empty value appearing in NullFields will be sent to the server as
687	// null. It is an error if a field in this list has a non-empty value.
688	// This may be used to include null fields in Patch requests.
689	NullFields []string `json:"-"`
690}
691
692func (s *AndroidRuntimeConfiguration) MarshalJSON() ([]byte, error) {
693	type NoMethod AndroidRuntimeConfiguration
694	raw := NoMethod(*s)
695	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
696}
697
698// AndroidTestLoop: A test of an Android Application with a Test
699// Loop.
700// The intent \<intent-name\> will be implicitly added, since Games is
701// the only
702// user of this api, for the time being.
703type AndroidTestLoop struct {
704	// AppApk: The APK for the application under test.
705	AppApk *FileReference `json:"appApk,omitempty"`
706
707	// AppBundle: A multi-apk app bundle for the application under test.
708	AppBundle *AppBundle `json:"appBundle,omitempty"`
709
710	// AppPackageId: The java package for the application under test.
711	// The default is determined by examining the application's manifest.
712	AppPackageId string `json:"appPackageId,omitempty"`
713
714	// ScenarioLabels: The list of scenario labels that should be run during
715	// the test.
716	// The scenario labels should map to labels defined in the
717	// application's
718	// manifest. For example, player_experience
719	// and
720	// com.google.test.loops.player_experience add all of the loops labeled
721	// in the
722	// manifest with the com.google.test.loops.player_experience name to
723	// the
724	// execution.
725	// Scenarios can also be specified in the scenarios field.
726	ScenarioLabels []string `json:"scenarioLabels,omitempty"`
727
728	// Scenarios: The list of scenarios that should be run during the
729	// test.
730	// The default is all test loops, derived from the
731	// application's
732	// manifest.
733	Scenarios []int64 `json:"scenarios,omitempty"`
734
735	// ForceSendFields is a list of field names (e.g. "AppApk") to
736	// unconditionally include in API requests. By default, fields with
737	// empty values are omitted from API requests. However, any non-pointer,
738	// non-interface field appearing in ForceSendFields will be sent to the
739	// server regardless of whether the field is empty or not. This may be
740	// used to include empty fields in Patch requests.
741	ForceSendFields []string `json:"-"`
742
743	// NullFields is a list of field names (e.g. "AppApk") to include in API
744	// requests with the JSON null value. By default, fields with empty
745	// values are omitted from API requests. However, any field with an
746	// empty value appearing in NullFields will be sent to the server as
747	// null. It is an error if a field in this list has a non-empty value.
748	// This may be used to include null fields in Patch requests.
749	NullFields []string `json:"-"`
750}
751
752func (s *AndroidTestLoop) MarshalJSON() ([]byte, error) {
753	type NoMethod AndroidTestLoop
754	raw := NoMethod(*s)
755	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
756}
757
758// AndroidVersion: A version of the Android OS.
759type AndroidVersion struct {
760	// ApiLevel: The API level for this Android version.
761	// Examples: 18, 19.
762	ApiLevel int64 `json:"apiLevel,omitempty"`
763
764	// CodeName: The code name for this Android version.
765	// Examples: "JellyBean", "KitKat".
766	CodeName string `json:"codeName,omitempty"`
767
768	// Distribution: Market share for this version.
769	Distribution *Distribution `json:"distribution,omitempty"`
770
771	// Id: An opaque id for this Android version.
772	// Use this id to invoke the TestExecutionService.
773	Id string `json:"id,omitempty"`
774
775	// ReleaseDate: The date this Android version became available in the
776	// market.
777	ReleaseDate *Date `json:"releaseDate,omitempty"`
778
779	// Tags: Tags for this dimension.
780	// Examples: "default", "preview", "deprecated".
781	Tags []string `json:"tags,omitempty"`
782
783	// VersionString: A string representing this version of the Android
784	// OS.
785	// Examples: "4.3", "4.4".
786	VersionString string `json:"versionString,omitempty"`
787
788	// ForceSendFields is a list of field names (e.g. "ApiLevel") to
789	// unconditionally include in API requests. By default, fields with
790	// empty values are omitted from API requests. However, any non-pointer,
791	// non-interface field appearing in ForceSendFields will be sent to the
792	// server regardless of whether the field is empty or not. This may be
793	// used to include empty fields in Patch requests.
794	ForceSendFields []string `json:"-"`
795
796	// NullFields is a list of field names (e.g. "ApiLevel") to include in
797	// API requests with the JSON null value. By default, fields with empty
798	// values are omitted from API requests. However, any field with an
799	// empty value appearing in NullFields will be sent to the server as
800	// null. It is an error if a field in this list has a non-empty value.
801	// This may be used to include null fields in Patch requests.
802	NullFields []string `json:"-"`
803}
804
805func (s *AndroidVersion) MarshalJSON() ([]byte, error) {
806	type NoMethod AndroidVersion
807	raw := NoMethod(*s)
808	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
809}
810
811// Apk: An Android package file to install.
812type Apk struct {
813	// Location: The path to an APK to be installed on the device before the
814	// test begins.
815	Location *FileReference `json:"location,omitempty"`
816
817	// PackageName: The java package for the APK to be installed.
818	// Value is determined by examining the application's manifest.
819	PackageName string `json:"packageName,omitempty"`
820
821	// ForceSendFields is a list of field names (e.g. "Location") to
822	// unconditionally include in API requests. By default, fields with
823	// empty values are omitted from API requests. However, any non-pointer,
824	// non-interface field appearing in ForceSendFields will be sent to the
825	// server regardless of whether the field is empty or not. This may be
826	// used to include empty fields in Patch requests.
827	ForceSendFields []string `json:"-"`
828
829	// NullFields is a list of field names (e.g. "Location") to include in
830	// API requests with the JSON null value. By default, fields with empty
831	// values are omitted from API requests. However, any field with an
832	// empty value appearing in NullFields will be sent to the server as
833	// null. It is an error if a field in this list has a non-empty value.
834	// This may be used to include null fields in Patch requests.
835	NullFields []string `json:"-"`
836}
837
838func (s *Apk) MarshalJSON() ([]byte, error) {
839	type NoMethod Apk
840	raw := NoMethod(*s)
841	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
842}
843
844// ApkDetail: Android application details based on application manifest
845// and apk archive
846// contents.
847type ApkDetail struct {
848	ApkManifest *ApkManifest `json:"apkManifest,omitempty"`
849
850	// ForceSendFields is a list of field names (e.g. "ApkManifest") to
851	// unconditionally include in API requests. By default, fields with
852	// empty values are omitted from API requests. However, any non-pointer,
853	// non-interface field appearing in ForceSendFields will be sent to the
854	// server regardless of whether the field is empty or not. This may be
855	// used to include empty fields in Patch requests.
856	ForceSendFields []string `json:"-"`
857
858	// NullFields is a list of field names (e.g. "ApkManifest") to include
859	// in API requests with the JSON null value. By default, fields with
860	// empty values are omitted from API requests. However, any field with
861	// an empty value appearing in NullFields will be sent to the server as
862	// null. It is an error if a field in this list has a non-empty value.
863	// This may be used to include null fields in Patch requests.
864	NullFields []string `json:"-"`
865}
866
867func (s *ApkDetail) MarshalJSON() ([]byte, error) {
868	type NoMethod ApkDetail
869	raw := NoMethod(*s)
870	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
871}
872
873// ApkManifest: An Android app manifest.
874// See
875// http://developer.android.com/guide/topics/manifest/manifest-intro.
876// html
877type ApkManifest struct {
878	// ApplicationLabel: User-readable name for the application.
879	ApplicationLabel string `json:"applicationLabel,omitempty"`
880
881	IntentFilters []*IntentFilter `json:"intentFilters,omitempty"`
882
883	// MaxSdkVersion: Maximum API level on which the application is designed
884	// to run.
885	MaxSdkVersion int64 `json:"maxSdkVersion,omitempty"`
886
887	// MinSdkVersion: Minimum API level required for the application to run.
888	MinSdkVersion int64 `json:"minSdkVersion,omitempty"`
889
890	// PackageName: Full Java-style package name for this application,
891	// e.g.
892	// "com.example.foo".
893	PackageName string `json:"packageName,omitempty"`
894
895	// TargetSdkVersion: Specifies the API Level on which the application is
896	// designed to run.
897	TargetSdkVersion int64 `json:"targetSdkVersion,omitempty"`
898
899	// ForceSendFields is a list of field names (e.g. "ApplicationLabel") to
900	// unconditionally include in API requests. By default, fields with
901	// empty values are omitted from API requests. However, any non-pointer,
902	// non-interface field appearing in ForceSendFields will be sent to the
903	// server regardless of whether the field is empty or not. This may be
904	// used to include empty fields in Patch requests.
905	ForceSendFields []string `json:"-"`
906
907	// NullFields is a list of field names (e.g. "ApplicationLabel") to
908	// include in API requests with the JSON null value. By default, fields
909	// with empty values are omitted from API requests. However, any field
910	// with an empty value appearing in NullFields will be sent to the
911	// server as null. It is an error if a field in this list has a
912	// non-empty value. This may be used to include null fields in Patch
913	// requests.
914	NullFields []string `json:"-"`
915}
916
917func (s *ApkManifest) MarshalJSON() ([]byte, error) {
918	type NoMethod ApkManifest
919	raw := NoMethod(*s)
920	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
921}
922
923// AppBundle: An Android App Bundle file format, containing a
924// BundleConfig.pb file,
925// a base module directory, zero or more dynamic feature module
926// directories.
927// <p>See https://developer.android.com/guide/app-bundle/build for
928// guidance on
929// building App Bundles.
930type AppBundle struct {
931	// BundleLocation: .aab file representing the app bundle under test.
932	BundleLocation *FileReference `json:"bundleLocation,omitempty"`
933
934	// ForceSendFields is a list of field names (e.g. "BundleLocation") to
935	// unconditionally include in API requests. By default, fields with
936	// empty values are omitted from API requests. However, any non-pointer,
937	// non-interface field appearing in ForceSendFields will be sent to the
938	// server regardless of whether the field is empty or not. This may be
939	// used to include empty fields in Patch requests.
940	ForceSendFields []string `json:"-"`
941
942	// NullFields is a list of field names (e.g. "BundleLocation") to
943	// include in API requests with the JSON null value. By default, fields
944	// with empty values are omitted from API requests. However, any field
945	// with an empty value appearing in NullFields will be sent to the
946	// server as null. It is an error if a field in this list has a
947	// non-empty value. This may be used to include null fields in Patch
948	// requests.
949	NullFields []string `json:"-"`
950}
951
952func (s *AppBundle) MarshalJSON() ([]byte, error) {
953	type NoMethod AppBundle
954	raw := NoMethod(*s)
955	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
956}
957
958// CancelTestMatrixResponse: Response containing the current state of
959// the specified test matrix.
960type CancelTestMatrixResponse struct {
961	// TestState: The current rolled-up state of the test matrix.
962	// If this state is already final, then the cancelation request
963	// will
964	// have no effect.
965	//
966	// Possible values:
967	//   "TEST_STATE_UNSPECIFIED" - Do not use.  For proto versioning only.
968	//   "VALIDATING" - The execution or matrix is being validated.
969	//   "PENDING" - The execution or matrix is waiting for resources to
970	// become available.
971	//   "RUNNING" - The execution is currently being processed.
972	//
973	// Can only be set on an execution.
974	//   "FINISHED" - The execution or matrix has terminated normally.
975	//
976	// On a matrix this means that the matrix level processing completed
977	// normally,
978	// but individual executions may be in an ERROR state.
979	//   "ERROR" - The execution or matrix has stopped because it
980	// encountered an
981	// infrastructure failure.
982	//   "UNSUPPORTED_ENVIRONMENT" - The execution was not run because it
983	// corresponds to a unsupported
984	// environment.
985	//
986	// Can only be set on an execution.
987	//   "INCOMPATIBLE_ENVIRONMENT" - The execution was not run because the
988	// provided inputs are incompatible with
989	// the requested environment.
990	//
991	// Example: requested AndroidVersion is lower than APK's
992	// minSdkVersion
993	//
994	// Can only be set on an execution.
995	//   "INCOMPATIBLE_ARCHITECTURE" - The execution was not run because the
996	// provided inputs are incompatible with
997	// the requested architecture.
998	//
999	// Example: requested device does not support running the native code
1000	// in
1001	// the supplied APK
1002	//
1003	// Can only be set on an execution.
1004	//   "CANCELLED" - The user cancelled the execution.
1005	//
1006	// Can only be set on an execution.
1007	//   "INVALID" - The execution or matrix was not run because the
1008	// provided inputs are not
1009	// valid.
1010	//
1011	// Examples: input file is not of the expected type, is
1012	// malformed/corrupt, or
1013	// was flagged as malware
1014	TestState string `json:"testState,omitempty"`
1015
1016	// ServerResponse contains the HTTP response code and headers from the
1017	// server.
1018	googleapi.ServerResponse `json:"-"`
1019
1020	// ForceSendFields is a list of field names (e.g. "TestState") to
1021	// unconditionally include in API requests. By default, fields with
1022	// empty values are omitted from API requests. However, any non-pointer,
1023	// non-interface field appearing in ForceSendFields will be sent to the
1024	// server regardless of whether the field is empty or not. This may be
1025	// used to include empty fields in Patch requests.
1026	ForceSendFields []string `json:"-"`
1027
1028	// NullFields is a list of field names (e.g. "TestState") to include in
1029	// API requests with the JSON null value. By default, fields with empty
1030	// values are omitted from API requests. However, any field with an
1031	// empty value appearing in NullFields will be sent to the server as
1032	// null. It is an error if a field in this list has a non-empty value.
1033	// This may be used to include null fields in Patch requests.
1034	NullFields []string `json:"-"`
1035}
1036
1037func (s *CancelTestMatrixResponse) MarshalJSON() ([]byte, error) {
1038	type NoMethod CancelTestMatrixResponse
1039	raw := NoMethod(*s)
1040	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1041}
1042
1043// ClientInfo: Information about the client which invoked the test.
1044type ClientInfo struct {
1045	// ClientInfoDetails: The list of detailed information about client.
1046	ClientInfoDetails []*ClientInfoDetail `json:"clientInfoDetails,omitempty"`
1047
1048	// Name: Required. Client name, such as gcloud.
1049	Name string `json:"name,omitempty"`
1050
1051	// ForceSendFields is a list of field names (e.g. "ClientInfoDetails")
1052	// to unconditionally include in API requests. By default, fields with
1053	// empty values are omitted from API requests. However, any non-pointer,
1054	// non-interface field appearing in ForceSendFields will be sent to the
1055	// server regardless of whether the field is empty or not. This may be
1056	// used to include empty fields in Patch requests.
1057	ForceSendFields []string `json:"-"`
1058
1059	// NullFields is a list of field names (e.g. "ClientInfoDetails") to
1060	// include in API requests with the JSON null value. By default, fields
1061	// with empty values are omitted from API requests. However, any field
1062	// with an empty value appearing in NullFields will be sent to the
1063	// server as null. It is an error if a field in this list has a
1064	// non-empty value. This may be used to include null fields in Patch
1065	// requests.
1066	NullFields []string `json:"-"`
1067}
1068
1069func (s *ClientInfo) MarshalJSON() ([]byte, error) {
1070	type NoMethod ClientInfo
1071	raw := NoMethod(*s)
1072	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1073}
1074
1075// ClientInfoDetail: Key-value pair of detailed information about the
1076// client which invoked the
1077// test. Examples: {'Version', '1.0'}, {'Release Track', 'BETA'}.
1078type ClientInfoDetail struct {
1079	// Key: Required. The key of detailed client information.
1080	Key string `json:"key,omitempty"`
1081
1082	// Value: Required. The value of detailed client information.
1083	Value string `json:"value,omitempty"`
1084
1085	// ForceSendFields is a list of field names (e.g. "Key") to
1086	// unconditionally include in API requests. By default, fields with
1087	// empty values are omitted from API requests. However, any non-pointer,
1088	// non-interface field appearing in ForceSendFields will be sent to the
1089	// server regardless of whether the field is empty or not. This may be
1090	// used to include empty fields in Patch requests.
1091	ForceSendFields []string `json:"-"`
1092
1093	// NullFields is a list of field names (e.g. "Key") to include in API
1094	// requests with the JSON null value. By default, fields with empty
1095	// values are omitted from API requests. However, any field with an
1096	// empty value appearing in NullFields will be sent to the server as
1097	// null. It is an error if a field in this list has a non-empty value.
1098	// This may be used to include null fields in Patch requests.
1099	NullFields []string `json:"-"`
1100}
1101
1102func (s *ClientInfoDetail) MarshalJSON() ([]byte, error) {
1103	type NoMethod ClientInfoDetail
1104	raw := NoMethod(*s)
1105	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1106}
1107
1108// Date: Represents a whole or partial calendar date, e.g. a birthday.
1109// The time of day
1110// and time zone are either specified elsewhere or are not significant.
1111// The date
1112// is relative to the Proleptic Gregorian Calendar. This can
1113// represent:
1114//
1115// * A full date, with non-zero year, month and day values
1116// * A month and day value, with a zero year, e.g. an anniversary
1117// * A year on its own, with zero month and day values
1118// * A year and month value, with a zero day, e.g. a credit card
1119// expiration date
1120//
1121// Related types are google.type.TimeOfDay and
1122// `google.protobuf.Timestamp`.
1123type Date struct {
1124	// Day: Day of month. Must be from 1 to 31 and valid for the year and
1125	// month, or 0
1126	// if specifying a year by itself or a year and month where the day is
1127	// not
1128	// significant.
1129	Day int64 `json:"day,omitempty"`
1130
1131	// Month: Month of year. Must be from 1 to 12, or 0 if specifying a year
1132	// without a
1133	// month and day.
1134	Month int64 `json:"month,omitempty"`
1135
1136	// Year: Year of date. Must be from 1 to 9999, or 0 if specifying a date
1137	// without
1138	// a year.
1139	Year int64 `json:"year,omitempty"`
1140
1141	// ForceSendFields is a list of field names (e.g. "Day") to
1142	// unconditionally include in API requests. By default, fields with
1143	// empty values are omitted from API requests. However, any non-pointer,
1144	// non-interface field appearing in ForceSendFields will be sent to the
1145	// server regardless of whether the field is empty or not. This may be
1146	// used to include empty fields in Patch requests.
1147	ForceSendFields []string `json:"-"`
1148
1149	// NullFields is a list of field names (e.g. "Day") to include in API
1150	// requests with the JSON null value. By default, fields with empty
1151	// values are omitted from API requests. However, any field with an
1152	// empty value appearing in NullFields will be sent to the server as
1153	// null. It is an error if a field in this list has a non-empty value.
1154	// This may be used to include null fields in Patch requests.
1155	NullFields []string `json:"-"`
1156}
1157
1158func (s *Date) MarshalJSON() ([]byte, error) {
1159	type NoMethod Date
1160	raw := NoMethod(*s)
1161	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1162}
1163
1164// DeviceFile: A single device file description.
1165type DeviceFile struct {
1166	// ObbFile: A reference to an opaque binary blob file.
1167	ObbFile *ObbFile `json:"obbFile,omitempty"`
1168
1169	// RegularFile: A reference to a regular file.
1170	RegularFile *RegularFile `json:"regularFile,omitempty"`
1171
1172	// ForceSendFields is a list of field names (e.g. "ObbFile") to
1173	// unconditionally include in API requests. By default, fields with
1174	// empty values are omitted from API requests. However, any non-pointer,
1175	// non-interface field appearing in ForceSendFields will be sent to the
1176	// server regardless of whether the field is empty or not. This may be
1177	// used to include empty fields in Patch requests.
1178	ForceSendFields []string `json:"-"`
1179
1180	// NullFields is a list of field names (e.g. "ObbFile") to include in
1181	// API requests with the JSON null value. By default, fields with empty
1182	// values are omitted from API requests. However, any field with an
1183	// empty value appearing in NullFields will be sent to the server as
1184	// null. It is an error if a field in this list has a non-empty value.
1185	// This may be used to include null fields in Patch requests.
1186	NullFields []string `json:"-"`
1187}
1188
1189func (s *DeviceFile) MarshalJSON() ([]byte, error) {
1190	type NoMethod DeviceFile
1191	raw := NoMethod(*s)
1192	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1193}
1194
1195// Distribution: Data about the relative number of devices running
1196// a
1197// given configuration of the Android platform.
1198type Distribution struct {
1199	// MarketShare: Output only. The estimated fraction (0-1) of the total
1200	// market with this
1201	// configuration.
1202	MarketShare float64 `json:"marketShare,omitempty"`
1203
1204	// MeasurementTime: Output only. The time this distribution was
1205	// measured.
1206	MeasurementTime string `json:"measurementTime,omitempty"`
1207
1208	// ForceSendFields is a list of field names (e.g. "MarketShare") to
1209	// unconditionally include in API requests. By default, fields with
1210	// empty values are omitted from API requests. However, any non-pointer,
1211	// non-interface field appearing in ForceSendFields will be sent to the
1212	// server regardless of whether the field is empty or not. This may be
1213	// used to include empty fields in Patch requests.
1214	ForceSendFields []string `json:"-"`
1215
1216	// NullFields is a list of field names (e.g. "MarketShare") to include
1217	// in API requests with the JSON null value. By default, fields with
1218	// empty values are omitted from API requests. However, any field with
1219	// an empty value appearing in NullFields will be sent to the server as
1220	// null. It is an error if a field in this list has a non-empty value.
1221	// This may be used to include null fields in Patch requests.
1222	NullFields []string `json:"-"`
1223}
1224
1225func (s *Distribution) MarshalJSON() ([]byte, error) {
1226	type NoMethod Distribution
1227	raw := NoMethod(*s)
1228	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1229}
1230
1231func (s *Distribution) UnmarshalJSON(data []byte) error {
1232	type NoMethod Distribution
1233	var s1 struct {
1234		MarketShare gensupport.JSONFloat64 `json:"marketShare"`
1235		*NoMethod
1236	}
1237	s1.NoMethod = (*NoMethod)(s)
1238	if err := json.Unmarshal(data, &s1); err != nil {
1239		return err
1240	}
1241	s.MarketShare = float64(s1.MarketShare)
1242	return nil
1243}
1244
1245// Environment: The environment in which the test is run.
1246type Environment struct {
1247	// AndroidDevice: An Android device which must be used with an Android
1248	// test.
1249	AndroidDevice *AndroidDevice `json:"androidDevice,omitempty"`
1250
1251	// IosDevice: An iOS device which must be used with an iOS test.
1252	IosDevice *IosDevice `json:"iosDevice,omitempty"`
1253
1254	// ForceSendFields is a list of field names (e.g. "AndroidDevice") to
1255	// unconditionally include in API requests. By default, fields with
1256	// empty values are omitted from API requests. However, any non-pointer,
1257	// non-interface field appearing in ForceSendFields will be sent to the
1258	// server regardless of whether the field is empty or not. This may be
1259	// used to include empty fields in Patch requests.
1260	ForceSendFields []string `json:"-"`
1261
1262	// NullFields is a list of field names (e.g. "AndroidDevice") to include
1263	// in API requests with the JSON null value. By default, fields with
1264	// empty values are omitted from API requests. However, any field with
1265	// an empty value appearing in NullFields will be sent to the server as
1266	// null. It is an error if a field in this list has a non-empty value.
1267	// This may be used to include null fields in Patch requests.
1268	NullFields []string `json:"-"`
1269}
1270
1271func (s *Environment) MarshalJSON() ([]byte, error) {
1272	type NoMethod Environment
1273	raw := NoMethod(*s)
1274	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1275}
1276
1277// EnvironmentMatrix: The matrix of environments in which the test is to
1278// be executed.
1279type EnvironmentMatrix struct {
1280	// AndroidDeviceList: A list of Android devices; the test will be run
1281	// only on the specified
1282	// devices.
1283	AndroidDeviceList *AndroidDeviceList `json:"androidDeviceList,omitempty"`
1284
1285	// AndroidMatrix: A matrix of Android devices.
1286	AndroidMatrix *AndroidMatrix `json:"androidMatrix,omitempty"`
1287
1288	// IosDeviceList: A list of iOS devices.
1289	IosDeviceList *IosDeviceList `json:"iosDeviceList,omitempty"`
1290
1291	// ForceSendFields is a list of field names (e.g. "AndroidDeviceList")
1292	// to unconditionally include in API requests. By default, fields with
1293	// empty values are omitted from API requests. However, any non-pointer,
1294	// non-interface field appearing in ForceSendFields will be sent to the
1295	// server regardless of whether the field is empty or not. This may be
1296	// used to include empty fields in Patch requests.
1297	ForceSendFields []string `json:"-"`
1298
1299	// NullFields is a list of field names (e.g. "AndroidDeviceList") to
1300	// include in API requests with the JSON null value. By default, fields
1301	// with empty values are omitted from API requests. However, any field
1302	// with an empty value appearing in NullFields will be sent to the
1303	// server as null. It is an error if a field in this list has a
1304	// non-empty value. This may be used to include null fields in Patch
1305	// requests.
1306	NullFields []string `json:"-"`
1307}
1308
1309func (s *EnvironmentMatrix) MarshalJSON() ([]byte, error) {
1310	type NoMethod EnvironmentMatrix
1311	raw := NoMethod(*s)
1312	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1313}
1314
1315// EnvironmentVariable: A key-value pair passed as an environment
1316// variable to the test.
1317type EnvironmentVariable struct {
1318	// Key: Key for the environment variable.
1319	Key string `json:"key,omitempty"`
1320
1321	// Value: Value for the environment variable.
1322	Value string `json:"value,omitempty"`
1323
1324	// ForceSendFields is a list of field names (e.g. "Key") to
1325	// unconditionally include in API requests. By default, fields with
1326	// empty values are omitted from API requests. However, any non-pointer,
1327	// non-interface field appearing in ForceSendFields will be sent to the
1328	// server regardless of whether the field is empty or not. This may be
1329	// used to include empty fields in Patch requests.
1330	ForceSendFields []string `json:"-"`
1331
1332	// NullFields is a list of field names (e.g. "Key") to include in API
1333	// requests with the JSON null value. By default, fields with empty
1334	// values are omitted from API requests. However, any field with an
1335	// empty value appearing in NullFields will be sent to the server as
1336	// null. It is an error if a field in this list has a non-empty value.
1337	// This may be used to include null fields in Patch requests.
1338	NullFields []string `json:"-"`
1339}
1340
1341func (s *EnvironmentVariable) MarshalJSON() ([]byte, error) {
1342	type NoMethod EnvironmentVariable
1343	raw := NoMethod(*s)
1344	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1345}
1346
1347// FileReference: A reference to a file, used for user inputs.
1348type FileReference struct {
1349	// GcsPath: A path to a file in Google Cloud Storage.
1350	// Example: gs://build-app-1414623860166/app-debug-unaligned.apk
1351	GcsPath string `json:"gcsPath,omitempty"`
1352
1353	// ForceSendFields is a list of field names (e.g. "GcsPath") to
1354	// unconditionally include in API requests. By default, fields with
1355	// empty values are omitted from API requests. However, any non-pointer,
1356	// non-interface field appearing in ForceSendFields will be sent to the
1357	// server regardless of whether the field is empty or not. This may be
1358	// used to include empty fields in Patch requests.
1359	ForceSendFields []string `json:"-"`
1360
1361	// NullFields is a list of field names (e.g. "GcsPath") to include in
1362	// API requests with the JSON null value. By default, fields with empty
1363	// values are omitted from API requests. However, any field with an
1364	// empty value appearing in NullFields will be sent to the server as
1365	// null. It is an error if a field in this list has a non-empty value.
1366	// This may be used to include null fields in Patch requests.
1367	NullFields []string `json:"-"`
1368}
1369
1370func (s *FileReference) MarshalJSON() ([]byte, error) {
1371	type NoMethod FileReference
1372	raw := NoMethod(*s)
1373	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1374}
1375
1376// GetApkDetailsResponse: Response containing the details of the
1377// specified Android application APK.
1378type GetApkDetailsResponse struct {
1379	// ApkDetail: Details of the Android APK.
1380	ApkDetail *ApkDetail `json:"apkDetail,omitempty"`
1381
1382	// ServerResponse contains the HTTP response code and headers from the
1383	// server.
1384	googleapi.ServerResponse `json:"-"`
1385
1386	// ForceSendFields is a list of field names (e.g. "ApkDetail") to
1387	// unconditionally include in API requests. By default, fields with
1388	// empty values are omitted from API requests. However, any non-pointer,
1389	// non-interface field appearing in ForceSendFields will be sent to the
1390	// server regardless of whether the field is empty or not. This may be
1391	// used to include empty fields in Patch requests.
1392	ForceSendFields []string `json:"-"`
1393
1394	// NullFields is a list of field names (e.g. "ApkDetail") to include in
1395	// API requests with the JSON null value. By default, fields with empty
1396	// values are omitted from API requests. However, any field with an
1397	// empty value appearing in NullFields will be sent to the server as
1398	// null. It is an error if a field in this list has a non-empty value.
1399	// This may be used to include null fields in Patch requests.
1400	NullFields []string `json:"-"`
1401}
1402
1403func (s *GetApkDetailsResponse) MarshalJSON() ([]byte, error) {
1404	type NoMethod GetApkDetailsResponse
1405	raw := NoMethod(*s)
1406	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1407}
1408
1409// GoogleAuto: Enables automatic Google account login.
1410// If set, the service automatically generates a Google test account and
1411// adds
1412// it to the device, before executing the test. Note that test accounts
1413// might be
1414// reused.
1415// Many applications show their full set of functionalities when an
1416// account is
1417// present on the device. Logging into the device with these generated
1418// accounts
1419// allows testing more functionalities.
1420type GoogleAuto struct {
1421}
1422
1423// GoogleCloudStorage: A storage location within Google cloud storage
1424// (GCS).
1425type GoogleCloudStorage struct {
1426	// GcsPath: Required. The path to a directory in GCS that
1427	// will
1428	// eventually contain the results for this test.
1429	// The requesting user must have write access on the bucket in the
1430	// supplied
1431	// path.
1432	GcsPath string `json:"gcsPath,omitempty"`
1433
1434	// ForceSendFields is a list of field names (e.g. "GcsPath") to
1435	// unconditionally include in API requests. By default, fields with
1436	// empty values are omitted from API requests. However, any non-pointer,
1437	// non-interface field appearing in ForceSendFields will be sent to the
1438	// server regardless of whether the field is empty or not. This may be
1439	// used to include empty fields in Patch requests.
1440	ForceSendFields []string `json:"-"`
1441
1442	// NullFields is a list of field names (e.g. "GcsPath") to include in
1443	// API requests with the JSON null value. By default, fields with empty
1444	// values are omitted from API requests. However, any field with an
1445	// empty value appearing in NullFields will be sent to the server as
1446	// null. It is an error if a field in this list has a non-empty value.
1447	// This may be used to include null fields in Patch requests.
1448	NullFields []string `json:"-"`
1449}
1450
1451func (s *GoogleCloudStorage) MarshalJSON() ([]byte, error) {
1452	type NoMethod GoogleCloudStorage
1453	raw := NoMethod(*s)
1454	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1455}
1456
1457// IntentFilter: The <intent-filter> section of an <activity>
1458// tag.
1459// https://developer.android.com/guide/topics/manifest/intent-filter
1460// -element.html
1461type IntentFilter struct {
1462	// ActionNames: The android:name value of the <action> tag.
1463	ActionNames []string `json:"actionNames,omitempty"`
1464
1465	// CategoryNames: The android:name value of the <category> tag.
1466	CategoryNames []string `json:"categoryNames,omitempty"`
1467
1468	// MimeType: The android:mimeType value of the <data> tag.
1469	MimeType string `json:"mimeType,omitempty"`
1470
1471	// ForceSendFields is a list of field names (e.g. "ActionNames") to
1472	// unconditionally include in API requests. By default, fields with
1473	// empty values are omitted from API requests. However, any non-pointer,
1474	// non-interface field appearing in ForceSendFields will be sent to the
1475	// server regardless of whether the field is empty or not. This may be
1476	// used to include empty fields in Patch requests.
1477	ForceSendFields []string `json:"-"`
1478
1479	// NullFields is a list of field names (e.g. "ActionNames") to include
1480	// in API requests with the JSON null value. By default, fields with
1481	// empty values are omitted from API requests. However, any field with
1482	// an empty value appearing in NullFields will be sent to the server as
1483	// null. It is an error if a field in this list has a non-empty value.
1484	// This may be used to include null fields in Patch requests.
1485	NullFields []string `json:"-"`
1486}
1487
1488func (s *IntentFilter) MarshalJSON() ([]byte, error) {
1489	type NoMethod IntentFilter
1490	raw := NoMethod(*s)
1491	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1492}
1493
1494// IosDevice: A single iOS device.
1495type IosDevice struct {
1496	// IosModelId: Required. The id of the iOS device to be used.
1497	// Use the TestEnvironmentDiscoveryService to get supported options.
1498	IosModelId string `json:"iosModelId,omitempty"`
1499
1500	// IosVersionId: Required. The id of the iOS major software version to
1501	// be used.
1502	// Use the TestEnvironmentDiscoveryService to get supported options.
1503	IosVersionId string `json:"iosVersionId,omitempty"`
1504
1505	// Locale: Required. The locale the test device used for testing.
1506	// Use the TestEnvironmentDiscoveryService to get supported options.
1507	Locale string `json:"locale,omitempty"`
1508
1509	// Orientation: Required. How the device is oriented during the
1510	// test.
1511	// Use the TestEnvironmentDiscoveryService to get supported options.
1512	Orientation string `json:"orientation,omitempty"`
1513
1514	// ForceSendFields is a list of field names (e.g. "IosModelId") to
1515	// unconditionally include in API requests. By default, fields with
1516	// empty values are omitted from API requests. However, any non-pointer,
1517	// non-interface field appearing in ForceSendFields will be sent to the
1518	// server regardless of whether the field is empty or not. This may be
1519	// used to include empty fields in Patch requests.
1520	ForceSendFields []string `json:"-"`
1521
1522	// NullFields is a list of field names (e.g. "IosModelId") to include in
1523	// API requests with the JSON null value. By default, fields with empty
1524	// values are omitted from API requests. However, any field with an
1525	// empty value appearing in NullFields will be sent to the server as
1526	// null. It is an error if a field in this list has a non-empty value.
1527	// This may be used to include null fields in Patch requests.
1528	NullFields []string `json:"-"`
1529}
1530
1531func (s *IosDevice) MarshalJSON() ([]byte, error) {
1532	type NoMethod IosDevice
1533	raw := NoMethod(*s)
1534	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1535}
1536
1537// IosDeviceCatalog: The currently supported iOS devices.
1538type IosDeviceCatalog struct {
1539	// Models: The set of supported iOS device models.
1540	Models []*IosModel `json:"models,omitempty"`
1541
1542	// RuntimeConfiguration: The set of supported runtime configurations.
1543	RuntimeConfiguration *IosRuntimeConfiguration `json:"runtimeConfiguration,omitempty"`
1544
1545	// Versions: The set of supported iOS software versions.
1546	Versions []*IosVersion `json:"versions,omitempty"`
1547
1548	// XcodeVersions: The set of supported Xcode versions.
1549	XcodeVersions []*XcodeVersion `json:"xcodeVersions,omitempty"`
1550
1551	// ForceSendFields is a list of field names (e.g. "Models") to
1552	// unconditionally include in API requests. By default, fields with
1553	// empty values are omitted from API requests. However, any non-pointer,
1554	// non-interface field appearing in ForceSendFields will be sent to the
1555	// server regardless of whether the field is empty or not. This may be
1556	// used to include empty fields in Patch requests.
1557	ForceSendFields []string `json:"-"`
1558
1559	// NullFields is a list of field names (e.g. "Models") to include in API
1560	// requests with the JSON null value. By default, fields with empty
1561	// values are omitted from API requests. However, any field with an
1562	// empty value appearing in NullFields will be sent to the server as
1563	// null. It is an error if a field in this list has a non-empty value.
1564	// This may be used to include null fields in Patch requests.
1565	NullFields []string `json:"-"`
1566}
1567
1568func (s *IosDeviceCatalog) MarshalJSON() ([]byte, error) {
1569	type NoMethod IosDeviceCatalog
1570	raw := NoMethod(*s)
1571	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1572}
1573
1574// IosDeviceList: A list of iOS device configurations in which the test
1575// is to be executed.
1576type IosDeviceList struct {
1577	// IosDevices: Required. A list of iOS devices.
1578	IosDevices []*IosDevice `json:"iosDevices,omitempty"`
1579
1580	// ForceSendFields is a list of field names (e.g. "IosDevices") to
1581	// unconditionally include in API requests. By default, fields with
1582	// empty values are omitted from API requests. However, any non-pointer,
1583	// non-interface field appearing in ForceSendFields will be sent to the
1584	// server regardless of whether the field is empty or not. This may be
1585	// used to include empty fields in Patch requests.
1586	ForceSendFields []string `json:"-"`
1587
1588	// NullFields is a list of field names (e.g. "IosDevices") to include in
1589	// API requests with the JSON null value. By default, fields with empty
1590	// values are omitted from API requests. However, any field with an
1591	// empty value appearing in NullFields will be sent to the server as
1592	// null. It is an error if a field in this list has a non-empty value.
1593	// This may be used to include null fields in Patch requests.
1594	NullFields []string `json:"-"`
1595}
1596
1597func (s *IosDeviceList) MarshalJSON() ([]byte, error) {
1598	type NoMethod IosDeviceList
1599	raw := NoMethod(*s)
1600	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1601}
1602
1603// IosModel: A description of an iOS device tests may be run on.
1604// Next tag: 12
1605type IosModel struct {
1606	// DeviceCapabilities: Device capabilities.
1607	// Copied
1608	// from
1609	// https://developer.apple.com/library/archive/documentation/DeviceI
1610	// nformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/
1611	// DeviceCompatibilityMatrix.html
1612	DeviceCapabilities []string `json:"deviceCapabilities,omitempty"`
1613
1614	// FormFactor: Whether this device is a phone, tablet, wearable, etc.
1615	//
1616	// Possible values:
1617	//   "DEVICE_FORM_FACTOR_UNSPECIFIED" - Do not use. For proto versioning
1618	// only.
1619	//   "PHONE" - This device has the shape of a phone.
1620	//   "TABLET" - This device has the shape of a tablet.
1621	//   "WEARABLE" - This device has the shape of a watch or other
1622	// wearable.
1623	FormFactor string `json:"formFactor,omitempty"`
1624
1625	// Id: The unique opaque id for this model.
1626	// Use this for invoking the TestExecutionService.
1627	Id string `json:"id,omitempty"`
1628
1629	// Name: The human-readable name for this device model.
1630	// Examples: "iPhone 4s", "iPad Mini 2".
1631	Name string `json:"name,omitempty"`
1632
1633	// ScreenDensity: Screen density in DPI.
1634	ScreenDensity int64 `json:"screenDensity,omitempty"`
1635
1636	// ScreenX: Screen size in the horizontal (X) dimension measured in
1637	// pixels.
1638	ScreenX int64 `json:"screenX,omitempty"`
1639
1640	// ScreenY: Screen size in the vertical (Y) dimension measured in
1641	// pixels.
1642	ScreenY int64 `json:"screenY,omitempty"`
1643
1644	// SupportedVersionIds: The set of iOS major software versions this
1645	// device supports.
1646	SupportedVersionIds []string `json:"supportedVersionIds,omitempty"`
1647
1648	// Tags: Tags for this dimension.
1649	// Examples: "default", "preview", "deprecated".
1650	Tags []string `json:"tags,omitempty"`
1651
1652	// ForceSendFields is a list of field names (e.g. "DeviceCapabilities")
1653	// to unconditionally include in API requests. By default, fields with
1654	// empty values are omitted from API requests. However, any non-pointer,
1655	// non-interface field appearing in ForceSendFields will be sent to the
1656	// server regardless of whether the field is empty or not. This may be
1657	// used to include empty fields in Patch requests.
1658	ForceSendFields []string `json:"-"`
1659
1660	// NullFields is a list of field names (e.g. "DeviceCapabilities") to
1661	// include in API requests with the JSON null value. By default, fields
1662	// with empty values are omitted from API requests. However, any field
1663	// with an empty value appearing in NullFields will be sent to the
1664	// server as null. It is an error if a field in this list has a
1665	// non-empty value. This may be used to include null fields in Patch
1666	// requests.
1667	NullFields []string `json:"-"`
1668}
1669
1670func (s *IosModel) MarshalJSON() ([]byte, error) {
1671	type NoMethod IosModel
1672	raw := NoMethod(*s)
1673	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1674}
1675
1676// IosRuntimeConfiguration: iOS configuration that can be selected at
1677// the time a test is run.
1678type IosRuntimeConfiguration struct {
1679	// Locales: The set of available locales.
1680	Locales []*Locale `json:"locales,omitempty"`
1681
1682	// Orientations: The set of available orientations.
1683	Orientations []*Orientation `json:"orientations,omitempty"`
1684
1685	// ForceSendFields is a list of field names (e.g. "Locales") to
1686	// unconditionally include in API requests. By default, fields with
1687	// empty values are omitted from API requests. However, any non-pointer,
1688	// non-interface field appearing in ForceSendFields will be sent to the
1689	// server regardless of whether the field is empty or not. This may be
1690	// used to include empty fields in Patch requests.
1691	ForceSendFields []string `json:"-"`
1692
1693	// NullFields is a list of field names (e.g. "Locales") to include in
1694	// API requests with the JSON null value. By default, fields with empty
1695	// values are omitted from API requests. However, any field with an
1696	// empty value appearing in NullFields will be sent to the server as
1697	// null. It is an error if a field in this list has a non-empty value.
1698	// This may be used to include null fields in Patch requests.
1699	NullFields []string `json:"-"`
1700}
1701
1702func (s *IosRuntimeConfiguration) MarshalJSON() ([]byte, error) {
1703	type NoMethod IosRuntimeConfiguration
1704	raw := NoMethod(*s)
1705	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1706}
1707
1708// IosTestLoop: A test of an iOS application that implements one or more
1709// game loop scenarios.
1710// This test type accepts an archived application (.ipa file) and a list
1711// of
1712// integer scenarios that will be executed on the app sequentially.
1713type IosTestLoop struct {
1714	// AppBundleId: Output only. The bundle id for the application under
1715	// test.
1716	AppBundleId string `json:"appBundleId,omitempty"`
1717
1718	// AppIpa: Required. The .ipa of the application to test.
1719	AppIpa *FileReference `json:"appIpa,omitempty"`
1720
1721	// Scenarios: The list of scenarios that should be run during the test.
1722	// Defaults to the
1723	// single scenario 0 if unspecified.
1724	Scenarios []int64 `json:"scenarios,omitempty"`
1725
1726	// ForceSendFields is a list of field names (e.g. "AppBundleId") to
1727	// unconditionally include in API requests. By default, fields with
1728	// empty values are omitted from API requests. However, any non-pointer,
1729	// non-interface field appearing in ForceSendFields will be sent to the
1730	// server regardless of whether the field is empty or not. This may be
1731	// used to include empty fields in Patch requests.
1732	ForceSendFields []string `json:"-"`
1733
1734	// NullFields is a list of field names (e.g. "AppBundleId") to include
1735	// in API requests with the JSON null value. By default, fields with
1736	// empty values are omitted from API requests. However, any field with
1737	// an empty value appearing in NullFields will be sent to the server as
1738	// null. It is an error if a field in this list has a non-empty value.
1739	// This may be used to include null fields in Patch requests.
1740	NullFields []string `json:"-"`
1741}
1742
1743func (s *IosTestLoop) MarshalJSON() ([]byte, error) {
1744	type NoMethod IosTestLoop
1745	raw := NoMethod(*s)
1746	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1747}
1748
1749// IosTestSetup: A description of how to set up an iOS device prior to
1750// running the test.
1751type IosTestSetup struct {
1752	// NetworkProfile: The network traffic profile used for running the
1753	// test.
1754	// Available network profiles can be queried by using
1755	// the
1756	// NETWORK_CONFIGURATION environment type when
1757	// calling
1758	// TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
1759	NetworkProfile string `json:"networkProfile,omitempty"`
1760
1761	// ForceSendFields is a list of field names (e.g. "NetworkProfile") to
1762	// unconditionally include in API requests. By default, fields with
1763	// empty values are omitted from API requests. However, any non-pointer,
1764	// non-interface field appearing in ForceSendFields will be sent to the
1765	// server regardless of whether the field is empty or not. This may be
1766	// used to include empty fields in Patch requests.
1767	ForceSendFields []string `json:"-"`
1768
1769	// NullFields is a list of field names (e.g. "NetworkProfile") to
1770	// include in API requests with the JSON null value. By default, fields
1771	// with empty values are omitted from API requests. However, any field
1772	// with an empty value appearing in NullFields will be sent to the
1773	// server as null. It is an error if a field in this list has a
1774	// non-empty value. This may be used to include null fields in Patch
1775	// requests.
1776	NullFields []string `json:"-"`
1777}
1778
1779func (s *IosTestSetup) MarshalJSON() ([]byte, error) {
1780	type NoMethod IosTestSetup
1781	raw := NoMethod(*s)
1782	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1783}
1784
1785// IosVersion: An iOS version.
1786type IosVersion struct {
1787	// Id: An opaque id for this iOS version.
1788	// Use this id to invoke the TestExecutionService.
1789	Id string `json:"id,omitempty"`
1790
1791	// MajorVersion: An integer representing the major iOS
1792	// version.
1793	// Examples: "8", "9".
1794	MajorVersion int64 `json:"majorVersion,omitempty"`
1795
1796	// MinorVersion: An integer representing the minor iOS
1797	// version.
1798	// Examples: "1", "2".
1799	MinorVersion int64 `json:"minorVersion,omitempty"`
1800
1801	// SupportedXcodeVersionIds: The available Xcode versions for this
1802	// version.
1803	SupportedXcodeVersionIds []string `json:"supportedXcodeVersionIds,omitempty"`
1804
1805	// Tags: Tags for this dimension.
1806	// Examples: "default", "preview", "deprecated".
1807	Tags []string `json:"tags,omitempty"`
1808
1809	// ForceSendFields is a list of field names (e.g. "Id") to
1810	// unconditionally include in API requests. By default, fields with
1811	// empty values are omitted from API requests. However, any non-pointer,
1812	// non-interface field appearing in ForceSendFields will be sent to the
1813	// server regardless of whether the field is empty or not. This may be
1814	// used to include empty fields in Patch requests.
1815	ForceSendFields []string `json:"-"`
1816
1817	// NullFields is a list of field names (e.g. "Id") to include in API
1818	// requests with the JSON null value. By default, fields with empty
1819	// values are omitted from API requests. However, any field with an
1820	// empty value appearing in NullFields will be sent to the server as
1821	// null. It is an error if a field in this list has a non-empty value.
1822	// This may be used to include null fields in Patch requests.
1823	NullFields []string `json:"-"`
1824}
1825
1826func (s *IosVersion) MarshalJSON() ([]byte, error) {
1827	type NoMethod IosVersion
1828	raw := NoMethod(*s)
1829	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1830}
1831
1832// IosXcTest: A test of an iOS application that uses the XCTest
1833// framework.
1834// Xcode supports the option to "build for testing", which generates
1835// an
1836// .xctestrun file that contains a test specification (arguments, test
1837// methods,
1838// etc). This test type accepts a zip file containing the .xctestrun
1839// file and
1840// the corresponding contents of the Build/Products directory that
1841// contains all
1842// the binaries needed to run the tests.
1843type IosXcTest struct {
1844	// AppBundleId: Output only. The bundle id for the application under
1845	// test.
1846	AppBundleId string `json:"appBundleId,omitempty"`
1847
1848	// TestSpecialEntitlements: The option to test special app entitlements.
1849	// Setting this would re-sign the
1850	// app having special entitlements with an explicit
1851	// application-identifier.
1852	// Currently supports testing aps-environment entitlement.
1853	TestSpecialEntitlements bool `json:"testSpecialEntitlements,omitempty"`
1854
1855	// TestsZip: Required. The .zip containing the .xctestrun file and the
1856	// contents of the
1857	// DerivedData/Build/Products directory.
1858	// The .xctestrun file in this zip is ignored if the xctestrun field
1859	// is
1860	// specified.
1861	TestsZip *FileReference `json:"testsZip,omitempty"`
1862
1863	// XcodeVersion: The Xcode version that should be used for the test.
1864	// Use the TestEnvironmentDiscoveryService to get supported
1865	// options.
1866	// Defaults to the latest Xcode version Firebase Test Lab supports.
1867	XcodeVersion string `json:"xcodeVersion,omitempty"`
1868
1869	// Xctestrun: An .xctestrun file that will override the .xctestrun file
1870	// in the
1871	// tests zip. Because the .xctestrun file contains environment variables
1872	// along
1873	// with test methods to run and/or ignore, this can be useful for
1874	// sharding
1875	// tests. Default is taken from the tests zip.
1876	Xctestrun *FileReference `json:"xctestrun,omitempty"`
1877
1878	// ForceSendFields is a list of field names (e.g. "AppBundleId") to
1879	// unconditionally include in API requests. By default, fields with
1880	// empty values are omitted from API requests. However, any non-pointer,
1881	// non-interface field appearing in ForceSendFields will be sent to the
1882	// server regardless of whether the field is empty or not. This may be
1883	// used to include empty fields in Patch requests.
1884	ForceSendFields []string `json:"-"`
1885
1886	// NullFields is a list of field names (e.g. "AppBundleId") to include
1887	// in API requests with the JSON null value. By default, fields with
1888	// empty values are omitted from API requests. However, any field with
1889	// an empty value appearing in NullFields will be sent to the server as
1890	// null. It is an error if a field in this list has a non-empty value.
1891	// This may be used to include null fields in Patch requests.
1892	NullFields []string `json:"-"`
1893}
1894
1895func (s *IosXcTest) MarshalJSON() ([]byte, error) {
1896	type NoMethod IosXcTest
1897	raw := NoMethod(*s)
1898	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1899}
1900
1901// LauncherActivityIntent: Specifies an intent that starts the main
1902// launcher activity.
1903type LauncherActivityIntent struct {
1904}
1905
1906// Locale: A location/region designation for language.
1907type Locale struct {
1908	// Id: The id for this locale.
1909	// Example: "en_US".
1910	Id string `json:"id,omitempty"`
1911
1912	// Name: A human-friendly name for this language/locale.
1913	// Example: "English".
1914	Name string `json:"name,omitempty"`
1915
1916	// Region: A human-friendly string representing the region for
1917	// this
1918	// locale. Example: "United States". Not present for every locale.
1919	Region string `json:"region,omitempty"`
1920
1921	// Tags: Tags for this dimension.
1922	// Example: "default".
1923	Tags []string `json:"tags,omitempty"`
1924
1925	// ForceSendFields is a list of field names (e.g. "Id") to
1926	// unconditionally include in API requests. By default, fields with
1927	// empty values are omitted from API requests. However, any non-pointer,
1928	// non-interface field appearing in ForceSendFields will be sent to the
1929	// server regardless of whether the field is empty or not. This may be
1930	// used to include empty fields in Patch requests.
1931	ForceSendFields []string `json:"-"`
1932
1933	// NullFields is a list of field names (e.g. "Id") to include in API
1934	// requests with the JSON null value. By default, fields with empty
1935	// values are omitted from API requests. However, any field with an
1936	// empty value appearing in NullFields will be sent to the server as
1937	// null. It is an error if a field in this list has a non-empty value.
1938	// This may be used to include null fields in Patch requests.
1939	NullFields []string `json:"-"`
1940}
1941
1942func (s *Locale) MarshalJSON() ([]byte, error) {
1943	type NoMethod Locale
1944	raw := NoMethod(*s)
1945	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1946}
1947
1948// ManualSharding: Shards test cases into the specified groups of
1949// packages, classes, and/or
1950// methods.
1951//
1952// With manual sharding enabled, specifying test targets
1953// via
1954// environment_variables or in InstrumentationTest is invalid.
1955type ManualSharding struct {
1956	// TestTargetsForShard: Required. Group of packages, classes, and/or
1957	// test methods to be run for
1958	// each shard. The number of shard_test_targets must be >= 1 and <= 50.
1959	TestTargetsForShard []*TestTargetsForShard `json:"testTargetsForShard,omitempty"`
1960
1961	// ForceSendFields is a list of field names (e.g. "TestTargetsForShard")
1962	// to unconditionally include in API requests. By default, fields with
1963	// empty values are omitted from API requests. However, any non-pointer,
1964	// non-interface field appearing in ForceSendFields will be sent to the
1965	// server regardless of whether the field is empty or not. This may be
1966	// used to include empty fields in Patch requests.
1967	ForceSendFields []string `json:"-"`
1968
1969	// NullFields is a list of field names (e.g. "TestTargetsForShard") to
1970	// include in API requests with the JSON null value. By default, fields
1971	// with empty values are omitted from API requests. However, any field
1972	// with an empty value appearing in NullFields will be sent to the
1973	// server as null. It is an error if a field in this list has a
1974	// non-empty value. This may be used to include null fields in Patch
1975	// requests.
1976	NullFields []string `json:"-"`
1977}
1978
1979func (s *ManualSharding) MarshalJSON() ([]byte, error) {
1980	type NoMethod ManualSharding
1981	raw := NoMethod(*s)
1982	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1983}
1984
1985type NetworkConfiguration struct {
1986	// DownRule: The emulation rule applying to the download traffic.
1987	DownRule *TrafficRule `json:"downRule,omitempty"`
1988
1989	// Id: The unique opaque id for this network traffic configuration.
1990	Id string `json:"id,omitempty"`
1991
1992	// UpRule: The emulation rule applying to the upload traffic.
1993	UpRule *TrafficRule `json:"upRule,omitempty"`
1994
1995	// ForceSendFields is a list of field names (e.g. "DownRule") to
1996	// unconditionally include in API requests. By default, fields with
1997	// empty values are omitted from API requests. However, any non-pointer,
1998	// non-interface field appearing in ForceSendFields will be sent to the
1999	// server regardless of whether the field is empty or not. This may be
2000	// used to include empty fields in Patch requests.
2001	ForceSendFields []string `json:"-"`
2002
2003	// NullFields is a list of field names (e.g. "DownRule") to include in
2004	// API requests with the JSON null value. By default, fields with empty
2005	// values are omitted from API requests. However, any field with an
2006	// empty value appearing in NullFields will be sent to the server as
2007	// null. It is an error if a field in this list has a non-empty value.
2008	// This may be used to include null fields in Patch requests.
2009	NullFields []string `json:"-"`
2010}
2011
2012func (s *NetworkConfiguration) MarshalJSON() ([]byte, error) {
2013	type NoMethod NetworkConfiguration
2014	raw := NoMethod(*s)
2015	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2016}
2017
2018type NetworkConfigurationCatalog struct {
2019	Configurations []*NetworkConfiguration `json:"configurations,omitempty"`
2020
2021	// ForceSendFields is a list of field names (e.g. "Configurations") to
2022	// unconditionally include in API requests. By default, fields with
2023	// empty values are omitted from API requests. However, any non-pointer,
2024	// non-interface field appearing in ForceSendFields will be sent to the
2025	// server regardless of whether the field is empty or not. This may be
2026	// used to include empty fields in Patch requests.
2027	ForceSendFields []string `json:"-"`
2028
2029	// NullFields is a list of field names (e.g. "Configurations") to
2030	// include in API requests with the JSON null value. By default, fields
2031	// with empty values are omitted from API requests. However, any field
2032	// with an empty value appearing in NullFields will be sent to the
2033	// server as null. It is an error if a field in this list has a
2034	// non-empty value. This may be used to include null fields in Patch
2035	// requests.
2036	NullFields []string `json:"-"`
2037}
2038
2039func (s *NetworkConfigurationCatalog) MarshalJSON() ([]byte, error) {
2040	type NoMethod NetworkConfigurationCatalog
2041	raw := NoMethod(*s)
2042	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2043}
2044
2045// ObbFile: An opaque binary blob file to install on the device before
2046// the test starts.
2047type ObbFile struct {
2048	// Obb: Required. Opaque Binary Blob (OBB) file(s) to install on the
2049	// device.
2050	Obb *FileReference `json:"obb,omitempty"`
2051
2052	// ObbFileName: Required. OBB file name which must conform to the format
2053	// as specified by
2054	// Android
2055	// e.g. [main|patch].0300110.com.example.android.obb
2056	// which will be installed into
2057	//   \<shared-storage\>/Android/obb/\<package-name\>/
2058	// on the device.
2059	ObbFileName string `json:"obbFileName,omitempty"`
2060
2061	// ForceSendFields is a list of field names (e.g. "Obb") to
2062	// unconditionally include in API requests. By default, fields with
2063	// empty values are omitted from API requests. However, any non-pointer,
2064	// non-interface field appearing in ForceSendFields will be sent to the
2065	// server regardless of whether the field is empty or not. This may be
2066	// used to include empty fields in Patch requests.
2067	ForceSendFields []string `json:"-"`
2068
2069	// NullFields is a list of field names (e.g. "Obb") to include in API
2070	// requests with the JSON null value. By default, fields with empty
2071	// values are omitted from API requests. However, any field with an
2072	// empty value appearing in NullFields will be sent to the server as
2073	// null. It is an error if a field in this list has a non-empty value.
2074	// This may be used to include null fields in Patch requests.
2075	NullFields []string `json:"-"`
2076}
2077
2078func (s *ObbFile) MarshalJSON() ([]byte, error) {
2079	type NoMethod ObbFile
2080	raw := NoMethod(*s)
2081	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2082}
2083
2084// Orientation: Screen orientation of the device.
2085type Orientation struct {
2086	// Id: The id for this orientation.
2087	// Example: "portrait".
2088	Id string `json:"id,omitempty"`
2089
2090	// Name: A human-friendly name for this orientation.
2091	// Example: "portrait".
2092	Name string `json:"name,omitempty"`
2093
2094	// Tags: Tags for this dimension.
2095	// Example: "default".
2096	Tags []string `json:"tags,omitempty"`
2097
2098	// ForceSendFields is a list of field names (e.g. "Id") to
2099	// unconditionally include in API requests. By default, fields with
2100	// empty values are omitted from API requests. However, any non-pointer,
2101	// non-interface field appearing in ForceSendFields will be sent to the
2102	// server regardless of whether the field is empty or not. This may be
2103	// used to include empty fields in Patch requests.
2104	ForceSendFields []string `json:"-"`
2105
2106	// NullFields is a list of field names (e.g. "Id") to include in API
2107	// requests with the JSON null value. By default, fields with empty
2108	// values are omitted from API requests. However, any field with an
2109	// empty value appearing in NullFields will be sent to the server as
2110	// null. It is an error if a field in this list has a non-empty value.
2111	// This may be used to include null fields in Patch requests.
2112	NullFields []string `json:"-"`
2113}
2114
2115func (s *Orientation) MarshalJSON() ([]byte, error) {
2116	type NoMethod Orientation
2117	raw := NoMethod(*s)
2118	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2119}
2120
2121// ProvidedSoftwareCatalog: The currently provided software environment
2122// on the devices under test.
2123type ProvidedSoftwareCatalog struct {
2124	// OrchestratorVersion: A string representing the current version of
2125	// Android Test
2126	// Orchestrator that is provided by TestExecutionService.
2127	// Example: "1.0.2 beta".
2128	OrchestratorVersion string `json:"orchestratorVersion,omitempty"`
2129
2130	// ForceSendFields is a list of field names (e.g. "OrchestratorVersion")
2131	// to unconditionally include in API requests. By default, fields with
2132	// empty values are omitted from API requests. However, any non-pointer,
2133	// non-interface field appearing in ForceSendFields will be sent to the
2134	// server regardless of whether the field is empty or not. This may be
2135	// used to include empty fields in Patch requests.
2136	ForceSendFields []string `json:"-"`
2137
2138	// NullFields is a list of field names (e.g. "OrchestratorVersion") to
2139	// include in API requests with the JSON null value. By default, fields
2140	// with empty values are omitted from API requests. However, any field
2141	// with an empty value appearing in NullFields will be sent to the
2142	// server as null. It is an error if a field in this list has a
2143	// non-empty value. This may be used to include null fields in Patch
2144	// requests.
2145	NullFields []string `json:"-"`
2146}
2147
2148func (s *ProvidedSoftwareCatalog) MarshalJSON() ([]byte, error) {
2149	type NoMethod ProvidedSoftwareCatalog
2150	raw := NoMethod(*s)
2151	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2152}
2153
2154// RegularFile: A file or directory to install on the device before the
2155// test starts.
2156type RegularFile struct {
2157	// Content: Required. The source file.
2158	Content *FileReference `json:"content,omitempty"`
2159
2160	// DevicePath: Required. Where to put the content on the device. Must be
2161	// an absolute,
2162	// whitelisted path. If the file exists, it will be replaced.
2163	// The following device-side directories and any of their subdirectories
2164	// are
2165	// whitelisted:
2166	// <p>${EXTERNAL_STORAGE}, or /sdcard</p>
2167	// <p>${ANDROID_DATA}/local/tmp, or /data/local/tmp</p>
2168	// <p>Specifying a path outside of these directory trees is
2169	// invalid.
2170	//
2171	// <p> The paths /sdcard and /data will be made available and treated
2172	// as
2173	// implicit path substitutions. E.g. if /sdcard on a particular device
2174	// does
2175	// not map to external storage, the system will replace it with the
2176	// external
2177	// storage path prefix for that device and copy the file there.
2178	//
2179	// <p> It is strongly advised to use the <a
2180	// href=
2181	// "http://developer.android.com/reference/android/os/Environment.h
2182	// tml">
2183	// Environment API</a> in app and test code to access files on the
2184	// device in a
2185	// portable way.
2186	DevicePath string `json:"devicePath,omitempty"`
2187
2188	// ForceSendFields is a list of field names (e.g. "Content") to
2189	// unconditionally include in API requests. By default, fields with
2190	// empty values are omitted from API requests. However, any non-pointer,
2191	// non-interface field appearing in ForceSendFields will be sent to the
2192	// server regardless of whether the field is empty or not. This may be
2193	// used to include empty fields in Patch requests.
2194	ForceSendFields []string `json:"-"`
2195
2196	// NullFields is a list of field names (e.g. "Content") to include in
2197	// API requests with the JSON null value. By default, fields with empty
2198	// values are omitted from API requests. However, any field with an
2199	// empty value appearing in NullFields will be sent to the server as
2200	// null. It is an error if a field in this list has a non-empty value.
2201	// This may be used to include null fields in Patch requests.
2202	NullFields []string `json:"-"`
2203}
2204
2205func (s *RegularFile) MarshalJSON() ([]byte, error) {
2206	type NoMethod RegularFile
2207	raw := NoMethod(*s)
2208	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2209}
2210
2211// ResultStorage: Locations where the results of running the test are
2212// stored.
2213type ResultStorage struct {
2214	// GoogleCloudStorage: Required.
2215	GoogleCloudStorage *GoogleCloudStorage `json:"googleCloudStorage,omitempty"`
2216
2217	// ResultsUrl: Output only. URL to the results in the Firebase Web
2218	// Console.
2219	ResultsUrl string `json:"resultsUrl,omitempty"`
2220
2221	// ToolResultsExecution: Output only. The tool results execution that
2222	// results are written to.
2223	ToolResultsExecution *ToolResultsExecution `json:"toolResultsExecution,omitempty"`
2224
2225	// ToolResultsHistory: The tool results history that contains the tool
2226	// results execution that
2227	// results are written to.
2228	//
2229	// If not provided, the service will choose an appropriate value.
2230	ToolResultsHistory *ToolResultsHistory `json:"toolResultsHistory,omitempty"`
2231
2232	// ForceSendFields is a list of field names (e.g. "GoogleCloudStorage")
2233	// to unconditionally include in API requests. By default, fields with
2234	// empty values are omitted from API requests. However, any non-pointer,
2235	// non-interface field appearing in ForceSendFields will be sent to the
2236	// server regardless of whether the field is empty or not. This may be
2237	// used to include empty fields in Patch requests.
2238	ForceSendFields []string `json:"-"`
2239
2240	// NullFields is a list of field names (e.g. "GoogleCloudStorage") to
2241	// include in API requests with the JSON null value. By default, fields
2242	// with empty values are omitted from API requests. However, any field
2243	// with an empty value appearing in NullFields will be sent to the
2244	// server as null. It is an error if a field in this list has a
2245	// non-empty value. This may be used to include null fields in Patch
2246	// requests.
2247	NullFields []string `json:"-"`
2248}
2249
2250func (s *ResultStorage) MarshalJSON() ([]byte, error) {
2251	type NoMethod ResultStorage
2252	raw := NoMethod(*s)
2253	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2254}
2255
2256// RoboDirective: Directs Robo to interact with a specific UI element if
2257// it is encountered
2258// during the crawl. Currently, Robo can perform text entry or element
2259// click.
2260type RoboDirective struct {
2261	// ActionType: Required. The type of action that Robo should perform on
2262	// the specified
2263	// element.
2264	//
2265	// Possible values:
2266	//   "ACTION_TYPE_UNSPECIFIED" - DO NOT USE. For proto versioning only.
2267	//   "SINGLE_CLICK" - Direct Robo to click on the specified element.
2268	// No-op if specified element
2269	// is not clickable.
2270	//   "ENTER_TEXT" - Direct Robo to enter text on the specified element.
2271	// No-op if specified
2272	// element is not enabled or does not allow text entry.
2273	//   "IGNORE" - Direct Robo to ignore interactions with a specific
2274	// element.
2275	ActionType string `json:"actionType,omitempty"`
2276
2277	// InputText: The text that Robo is directed to set. If left empty, the
2278	// directive will be
2279	// treated as a CLICK on the element matching the resource_name.
2280	InputText string `json:"inputText,omitempty"`
2281
2282	// ResourceName: Required. The android resource name of the target UI
2283	// element.
2284	// For example,
2285	//    in Java: R.string.foo
2286	//    in xml: @string/foo
2287	// Only the "foo" part is needed.
2288	// Reference
2289	// doc:
2290	// https://developer.android.com/guide/topics/resources/accessing-re
2291	// sources.html
2292	ResourceName string `json:"resourceName,omitempty"`
2293
2294	// ForceSendFields is a list of field names (e.g. "ActionType") to
2295	// unconditionally include in API requests. By default, fields with
2296	// empty values are omitted from API requests. However, any non-pointer,
2297	// non-interface field appearing in ForceSendFields will be sent to the
2298	// server regardless of whether the field is empty or not. This may be
2299	// used to include empty fields in Patch requests.
2300	ForceSendFields []string `json:"-"`
2301
2302	// NullFields is a list of field names (e.g. "ActionType") to include in
2303	// API requests with the JSON null value. By default, fields with empty
2304	// values are omitted from API requests. However, any field with an
2305	// empty value appearing in NullFields will be sent to the server as
2306	// null. It is an error if a field in this list has a non-empty value.
2307	// This may be used to include null fields in Patch requests.
2308	NullFields []string `json:"-"`
2309}
2310
2311func (s *RoboDirective) MarshalJSON() ([]byte, error) {
2312	type NoMethod RoboDirective
2313	raw := NoMethod(*s)
2314	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2315}
2316
2317// RoboStartingIntent: Message for specifying the start activities to
2318// crawl.
2319type RoboStartingIntent struct {
2320	// LauncherActivity: An intent that starts the main launcher activity.
2321	LauncherActivity *LauncherActivityIntent `json:"launcherActivity,omitempty"`
2322
2323	// StartActivity: An intent that starts an activity with specific
2324	// details.
2325	StartActivity *StartActivityIntent `json:"startActivity,omitempty"`
2326
2327	// Timeout: Timeout in seconds for each intent.
2328	Timeout string `json:"timeout,omitempty"`
2329
2330	// ForceSendFields is a list of field names (e.g. "LauncherActivity") to
2331	// unconditionally include in API requests. By default, fields with
2332	// empty values are omitted from API requests. However, any non-pointer,
2333	// non-interface field appearing in ForceSendFields will be sent to the
2334	// server regardless of whether the field is empty or not. This may be
2335	// used to include empty fields in Patch requests.
2336	ForceSendFields []string `json:"-"`
2337
2338	// NullFields is a list of field names (e.g. "LauncherActivity") to
2339	// include in API requests with the JSON null value. By default, fields
2340	// with empty values are omitted from API requests. However, any field
2341	// with an empty value appearing in NullFields will be sent to the
2342	// server as null. It is an error if a field in this list has a
2343	// non-empty value. This may be used to include null fields in Patch
2344	// requests.
2345	NullFields []string `json:"-"`
2346}
2347
2348func (s *RoboStartingIntent) MarshalJSON() ([]byte, error) {
2349	type NoMethod RoboStartingIntent
2350	raw := NoMethod(*s)
2351	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2352}
2353
2354// Shard: Output only. Details about the shard.
2355type Shard struct {
2356	// NumShards: Output only. The total number of shards.
2357	NumShards int64 `json:"numShards,omitempty"`
2358
2359	// ShardIndex: Output only. The index of the shard among all the shards.
2360	ShardIndex int64 `json:"shardIndex,omitempty"`
2361
2362	// TestTargetsForShard: Output only. Test targets for each shard.
2363	TestTargetsForShard *TestTargetsForShard `json:"testTargetsForShard,omitempty"`
2364
2365	// ForceSendFields is a list of field names (e.g. "NumShards") to
2366	// unconditionally include in API requests. By default, fields with
2367	// empty values are omitted from API requests. However, any non-pointer,
2368	// non-interface field appearing in ForceSendFields will be sent to the
2369	// server regardless of whether the field is empty or not. This may be
2370	// used to include empty fields in Patch requests.
2371	ForceSendFields []string `json:"-"`
2372
2373	// NullFields is a list of field names (e.g. "NumShards") to include in
2374	// API requests with the JSON null value. By default, fields with empty
2375	// values are omitted from API requests. However, any field with an
2376	// empty value appearing in NullFields will be sent to the server as
2377	// null. It is an error if a field in this list has a non-empty value.
2378	// This may be used to include null fields in Patch requests.
2379	NullFields []string `json:"-"`
2380}
2381
2382func (s *Shard) MarshalJSON() ([]byte, error) {
2383	type NoMethod Shard
2384	raw := NoMethod(*s)
2385	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2386}
2387
2388// ShardingOption: Options for enabling sharding.
2389type ShardingOption struct {
2390	// ManualSharding: Shards test cases into the specified groups of
2391	// packages, classes, and/or
2392	// methods.
2393	ManualSharding *ManualSharding `json:"manualSharding,omitempty"`
2394
2395	// UniformSharding: Uniformly shards test cases given a total number of
2396	// shards.
2397	UniformSharding *UniformSharding `json:"uniformSharding,omitempty"`
2398
2399	// ForceSendFields is a list of field names (e.g. "ManualSharding") to
2400	// unconditionally include in API requests. By default, fields with
2401	// empty values are omitted from API requests. However, any non-pointer,
2402	// non-interface field appearing in ForceSendFields will be sent to the
2403	// server regardless of whether the field is empty or not. This may be
2404	// used to include empty fields in Patch requests.
2405	ForceSendFields []string `json:"-"`
2406
2407	// NullFields is a list of field names (e.g. "ManualSharding") to
2408	// include in API requests with the JSON null value. By default, fields
2409	// with empty values are omitted from API requests. However, any field
2410	// with an empty value appearing in NullFields will be sent to the
2411	// server as null. It is an error if a field in this list has a
2412	// non-empty value. This may be used to include null fields in Patch
2413	// requests.
2414	NullFields []string `json:"-"`
2415}
2416
2417func (s *ShardingOption) MarshalJSON() ([]byte, error) {
2418	type NoMethod ShardingOption
2419	raw := NoMethod(*s)
2420	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2421}
2422
2423// StartActivityIntent: A starting intent specified by an action, uri,
2424// and categories.
2425type StartActivityIntent struct {
2426	// Action: Action name.
2427	// Required for START_ACTIVITY.
2428	Action string `json:"action,omitempty"`
2429
2430	// Categories: Intent categories to set on the intent.
2431	Categories []string `json:"categories,omitempty"`
2432
2433	// Uri: URI for the action.
2434	Uri string `json:"uri,omitempty"`
2435
2436	// ForceSendFields is a list of field names (e.g. "Action") to
2437	// unconditionally include in API requests. By default, fields with
2438	// empty values are omitted from API requests. However, any non-pointer,
2439	// non-interface field appearing in ForceSendFields will be sent to the
2440	// server regardless of whether the field is empty or not. This may be
2441	// used to include empty fields in Patch requests.
2442	ForceSendFields []string `json:"-"`
2443
2444	// NullFields is a list of field names (e.g. "Action") to include in API
2445	// requests with the JSON null value. By default, fields with empty
2446	// values are omitted from API requests. However, any field with an
2447	// empty value appearing in NullFields will be sent to the server as
2448	// null. It is an error if a field in this list has a non-empty value.
2449	// This may be used to include null fields in Patch requests.
2450	NullFields []string `json:"-"`
2451}
2452
2453func (s *StartActivityIntent) MarshalJSON() ([]byte, error) {
2454	type NoMethod StartActivityIntent
2455	raw := NoMethod(*s)
2456	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2457}
2458
2459type SystraceSetup struct {
2460	// DurationSeconds: Systrace duration in seconds.
2461	// Should be between 1 and 30 seconds. 0 disables systrace.
2462	DurationSeconds int64 `json:"durationSeconds,omitempty"`
2463
2464	// ForceSendFields is a list of field names (e.g. "DurationSeconds") to
2465	// unconditionally include in API requests. By default, fields with
2466	// empty values are omitted from API requests. However, any non-pointer,
2467	// non-interface field appearing in ForceSendFields will be sent to the
2468	// server regardless of whether the field is empty or not. This may be
2469	// used to include empty fields in Patch requests.
2470	ForceSendFields []string `json:"-"`
2471
2472	// NullFields is a list of field names (e.g. "DurationSeconds") to
2473	// include in API requests with the JSON null value. By default, fields
2474	// with empty values are omitted from API requests. However, any field
2475	// with an empty value appearing in NullFields will be sent to the
2476	// server as null. It is an error if a field in this list has a
2477	// non-empty value. This may be used to include null fields in Patch
2478	// requests.
2479	NullFields []string `json:"-"`
2480}
2481
2482func (s *SystraceSetup) MarshalJSON() ([]byte, error) {
2483	type NoMethod SystraceSetup
2484	raw := NoMethod(*s)
2485	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2486}
2487
2488// TestDetails: Additional details about the progress of the running
2489// test.
2490type TestDetails struct {
2491	// ErrorMessage: Output only. If the TestState is ERROR, then this
2492	// string will contain
2493	// human-readable details about the error.
2494	ErrorMessage string `json:"errorMessage,omitempty"`
2495
2496	// ProgressMessages: Output only. Human-readable, detailed descriptions
2497	// of the test's progress.
2498	// For example: "Provisioning a device", "Starting Test".
2499	//
2500	// During the course of execution new data may be appended
2501	// to the end of progress_messages.
2502	ProgressMessages []string `json:"progressMessages,omitempty"`
2503
2504	// ForceSendFields is a list of field names (e.g. "ErrorMessage") to
2505	// unconditionally include in API requests. By default, fields with
2506	// empty values are omitted from API requests. However, any non-pointer,
2507	// non-interface field appearing in ForceSendFields will be sent to the
2508	// server regardless of whether the field is empty or not. This may be
2509	// used to include empty fields in Patch requests.
2510	ForceSendFields []string `json:"-"`
2511
2512	// NullFields is a list of field names (e.g. "ErrorMessage") to include
2513	// in API requests with the JSON null value. By default, fields with
2514	// empty values are omitted from API requests. However, any field with
2515	// an empty value appearing in NullFields will be sent to the server as
2516	// null. It is an error if a field in this list has a non-empty value.
2517	// This may be used to include null fields in Patch requests.
2518	NullFields []string `json:"-"`
2519}
2520
2521func (s *TestDetails) MarshalJSON() ([]byte, error) {
2522	type NoMethod TestDetails
2523	raw := NoMethod(*s)
2524	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2525}
2526
2527// TestEnvironmentCatalog: A description of a test environment.
2528type TestEnvironmentCatalog struct {
2529	// AndroidDeviceCatalog: Supported Android devices.
2530	AndroidDeviceCatalog *AndroidDeviceCatalog `json:"androidDeviceCatalog,omitempty"`
2531
2532	// IosDeviceCatalog: Supported iOS devices.
2533	IosDeviceCatalog *IosDeviceCatalog `json:"iosDeviceCatalog,omitempty"`
2534
2535	// NetworkConfigurationCatalog: Supported network configurations.
2536	NetworkConfigurationCatalog *NetworkConfigurationCatalog `json:"networkConfigurationCatalog,omitempty"`
2537
2538	// SoftwareCatalog: The software test environment provided by
2539	// TestExecutionService.
2540	SoftwareCatalog *ProvidedSoftwareCatalog `json:"softwareCatalog,omitempty"`
2541
2542	// ServerResponse contains the HTTP response code and headers from the
2543	// server.
2544	googleapi.ServerResponse `json:"-"`
2545
2546	// ForceSendFields is a list of field names (e.g.
2547	// "AndroidDeviceCatalog") to unconditionally include in API requests.
2548	// By default, fields with empty values are omitted from API requests.
2549	// However, any non-pointer, non-interface field appearing in
2550	// ForceSendFields will be sent to the server regardless of whether the
2551	// field is empty or not. This may be used to include empty fields in
2552	// Patch requests.
2553	ForceSendFields []string `json:"-"`
2554
2555	// NullFields is a list of field names (e.g. "AndroidDeviceCatalog") to
2556	// include in API requests with the JSON null value. By default, fields
2557	// with empty values are omitted from API requests. However, any field
2558	// with an empty value appearing in NullFields will be sent to the
2559	// server as null. It is an error if a field in this list has a
2560	// non-empty value. This may be used to include null fields in Patch
2561	// requests.
2562	NullFields []string `json:"-"`
2563}
2564
2565func (s *TestEnvironmentCatalog) MarshalJSON() ([]byte, error) {
2566	type NoMethod TestEnvironmentCatalog
2567	raw := NoMethod(*s)
2568	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2569}
2570
2571// TestExecution: A single test executed in a single environment.
2572type TestExecution struct {
2573	// Environment: Output only. How the host machine(s) are configured.
2574	Environment *Environment `json:"environment,omitempty"`
2575
2576	// Id: Output only. Unique id set by the service.
2577	Id string `json:"id,omitempty"`
2578
2579	// MatrixId: Output only. Id of the containing TestMatrix.
2580	MatrixId string `json:"matrixId,omitempty"`
2581
2582	// ProjectId: Output only. The cloud project that owns the test
2583	// execution.
2584	ProjectId string `json:"projectId,omitempty"`
2585
2586	// Shard: Output only. Details about the shard.
2587	Shard *Shard `json:"shard,omitempty"`
2588
2589	// State: Output only. Indicates the current progress of the test
2590	// execution
2591	// (e.g., FINISHED).
2592	//
2593	// Possible values:
2594	//   "TEST_STATE_UNSPECIFIED" - Do not use.  For proto versioning only.
2595	//   "VALIDATING" - The execution or matrix is being validated.
2596	//   "PENDING" - The execution or matrix is waiting for resources to
2597	// become available.
2598	//   "RUNNING" - The execution is currently being processed.
2599	//
2600	// Can only be set on an execution.
2601	//   "FINISHED" - The execution or matrix has terminated normally.
2602	//
2603	// On a matrix this means that the matrix level processing completed
2604	// normally,
2605	// but individual executions may be in an ERROR state.
2606	//   "ERROR" - The execution or matrix has stopped because it
2607	// encountered an
2608	// infrastructure failure.
2609	//   "UNSUPPORTED_ENVIRONMENT" - The execution was not run because it
2610	// corresponds to a unsupported
2611	// environment.
2612	//
2613	// Can only be set on an execution.
2614	//   "INCOMPATIBLE_ENVIRONMENT" - The execution was not run because the
2615	// provided inputs are incompatible with
2616	// the requested environment.
2617	//
2618	// Example: requested AndroidVersion is lower than APK's
2619	// minSdkVersion
2620	//
2621	// Can only be set on an execution.
2622	//   "INCOMPATIBLE_ARCHITECTURE" - The execution was not run because the
2623	// provided inputs are incompatible with
2624	// the requested architecture.
2625	//
2626	// Example: requested device does not support running the native code
2627	// in
2628	// the supplied APK
2629	//
2630	// Can only be set on an execution.
2631	//   "CANCELLED" - The user cancelled the execution.
2632	//
2633	// Can only be set on an execution.
2634	//   "INVALID" - The execution or matrix was not run because the
2635	// provided inputs are not
2636	// valid.
2637	//
2638	// Examples: input file is not of the expected type, is
2639	// malformed/corrupt, or
2640	// was flagged as malware
2641	State string `json:"state,omitempty"`
2642
2643	// TestDetails: Output only. Additional details about the running test.
2644	TestDetails *TestDetails `json:"testDetails,omitempty"`
2645
2646	// TestSpecification: Output only. How to run the test.
2647	TestSpecification *TestSpecification `json:"testSpecification,omitempty"`
2648
2649	// Timestamp: Output only. The time this test execution was initially
2650	// created.
2651	Timestamp string `json:"timestamp,omitempty"`
2652
2653	// ToolResultsStep: Output only. Where the results for this execution
2654	// are written.
2655	ToolResultsStep *ToolResultsStep `json:"toolResultsStep,omitempty"`
2656
2657	// ForceSendFields is a list of field names (e.g. "Environment") to
2658	// unconditionally include in API requests. By default, fields with
2659	// empty values are omitted from API requests. However, any non-pointer,
2660	// non-interface field appearing in ForceSendFields will be sent to the
2661	// server regardless of whether the field is empty or not. This may be
2662	// used to include empty fields in Patch requests.
2663	ForceSendFields []string `json:"-"`
2664
2665	// NullFields is a list of field names (e.g. "Environment") to include
2666	// in API requests with the JSON null value. By default, fields with
2667	// empty values are omitted from API requests. However, any field with
2668	// an empty value appearing in NullFields will be sent to the server as
2669	// null. It is an error if a field in this list has a non-empty value.
2670	// This may be used to include null fields in Patch requests.
2671	NullFields []string `json:"-"`
2672}
2673
2674func (s *TestExecution) MarshalJSON() ([]byte, error) {
2675	type NoMethod TestExecution
2676	raw := NoMethod(*s)
2677	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2678}
2679
2680// TestMatrix: TestMatrix captures all details about a test. It contains
2681// the environment
2682// configuration, test specification, test executions and overall state
2683// and
2684// outcome.
2685type TestMatrix struct {
2686	// ClientInfo: Information about the client which invoked the test.
2687	ClientInfo *ClientInfo `json:"clientInfo,omitempty"`
2688
2689	// EnvironmentMatrix: Required. The devices the tests are being executed
2690	// on.
2691	EnvironmentMatrix *EnvironmentMatrix `json:"environmentMatrix,omitempty"`
2692
2693	// FlakyTestAttempts: The number of times a TestExecution should be
2694	// re-attempted if one or more
2695	// of its test cases fail for any reason.
2696	// The maximum number of reruns allowed is 10.
2697	//
2698	// Default is 0, which implies no reruns.
2699	FlakyTestAttempts int64 `json:"flakyTestAttempts,omitempty"`
2700
2701	// InvalidMatrixDetails: Output only. Describes why the matrix is
2702	// considered invalid.
2703	// Only useful for matrices in the INVALID state.
2704	//
2705	// Possible values:
2706	//   "INVALID_MATRIX_DETAILS_UNSPECIFIED" - Do not use. For proto
2707	// versioning only.
2708	//   "DETAILS_UNAVAILABLE" - The matrix is INVALID, but there are no
2709	// further details available.
2710	//   "MALFORMED_APK" - The input app APK could not be parsed.
2711	//   "MALFORMED_TEST_APK" - The input test APK could not be parsed.
2712	//   "NO_MANIFEST" - The AndroidManifest.xml could not be found.
2713	//   "NO_PACKAGE_NAME" - The APK manifest does not declare a package
2714	// name.
2715	//   "INVALID_PACKAGE_NAME" - The APK application ID (aka package name)
2716	// is invalid.
2717	// See also
2718	// https://developer.android.com/studio/build/application-id
2719	//   "TEST_SAME_AS_APP" - The test package and app package are the same.
2720	//   "NO_INSTRUMENTATION" - The test apk does not declare an
2721	// instrumentation.
2722	//   "NO_SIGNATURE" - The input app apk does not have a signature.
2723	//   "INSTRUMENTATION_ORCHESTRATOR_INCOMPATIBLE" - The test runner class
2724	// specified by user or in the test APK's manifest file
2725	// is not compatible with Android Test Orchestrator.
2726	// Orchestrator is only compatible with AndroidJUnitRunner version 1.0
2727	// or
2728	// higher.
2729	// Orchestrator can be disabled by using
2730	// DO_NOT_USE_ORCHESTRATOR
2731	// OrchestratorOption.
2732	//   "NO_TEST_RUNNER_CLASS" - The test APK does not contain the test
2733	// runner class specified by user or in
2734	// the manifest file.
2735	// This can be caused by either of the following reasons:
2736	// - the user provided a runner class name that's incorrect, or
2737	// - the test runner isn't built into the test APK (might be in the app
2738	// APK
2739	// instead).
2740	//   "NO_LAUNCHER_ACTIVITY" - A main launcher activity could not be
2741	// found.
2742	//   "FORBIDDEN_PERMISSIONS" - The app declares one or more permissions
2743	// that are not allowed.
2744	//   "INVALID_ROBO_DIRECTIVES" - There is a conflict in the provided
2745	// robo_directives.
2746	//   "INVALID_RESOURCE_NAME" - There is at least one invalid resource
2747	// name in the provided
2748	// robo directives
2749	//   "INVALID_DIRECTIVE_ACTION" - Invalid definition of action in the
2750	// robo directives
2751	// (e.g. a click or ignore action includes an input text field)
2752	//   "TEST_LOOP_INTENT_FILTER_NOT_FOUND" - There is no test loop intent
2753	// filter, or the one that is given is
2754	// not formatted correctly.
2755	//   "SCENARIO_LABEL_NOT_DECLARED" - The request contains a scenario
2756	// label that was not declared in the
2757	// manifest.
2758	//   "SCENARIO_LABEL_MALFORMED" - There was an error when parsing a
2759	// label's value.
2760	//   "SCENARIO_NOT_DECLARED" - The request contains a scenario number
2761	// that was not declared in the
2762	// manifest.
2763	//   "DEVICE_ADMIN_RECEIVER" - Device administrator applications are not
2764	// allowed.
2765	//   "MALFORMED_XC_TEST_ZIP" - The zipped XCTest was malformed. The zip
2766	// did not contain a single
2767	// .xctestrun file and the contents of the
2768	// DerivedData/Build/Products
2769	// directory.
2770	//   "BUILT_FOR_IOS_SIMULATOR" - The zipped XCTest was built for the iOS
2771	// simulator rather than for a
2772	// physical device.
2773	//   "NO_TESTS_IN_XC_TEST_ZIP" - The .xctestrun file did not specify any
2774	// test targets.
2775	//   "USE_DESTINATION_ARTIFACTS" - One or more of the test targets
2776	// defined in the .xctestrun file specifies
2777	// "UseDestinationArtifacts", which is disallowed.
2778	//   "TEST_NOT_APP_HOSTED" - XC tests which run on physical devices must
2779	// have
2780	// "IsAppHostedTestBundle" == "true" in the xctestrun file.
2781	//   "PLIST_CANNOT_BE_PARSED" - An Info.plist file in the XCTest zip
2782	// could not be parsed.
2783	//   "TEST_ONLY_APK" - The APK is marked as "testOnly".
2784	// Deprecated and not currently used.
2785	//   "MALFORMED_IPA" - The input IPA could not be parsed.
2786	//   "MISSING_URL_SCHEME" - The application doesn't register the game
2787	// loop URL scheme.
2788	//   "MALFORMED_APP_BUNDLE" - The iOS application bundle (.app) couldn't
2789	// be processed.
2790	//   "NO_CODE_APK" - APK contains no code.
2791	// See
2792	// also
2793	// https://developer.android.com/guide/topics/manifest/application-e
2794	// lement.html#code
2795	//   "INVALID_INPUT_APK" - Either the provided input APK path was
2796	// malformed,
2797	// the APK file does not exist, or the user does not have permission
2798	// to
2799	// access the APK file.
2800	//   "INVALID_APK_PREVIEW_SDK" - APK is built for a preview SDK which is
2801	// unsupported
2802	InvalidMatrixDetails string `json:"invalidMatrixDetails,omitempty"`
2803
2804	// OutcomeSummary: Output Only. The overall outcome of the test.
2805	// Only set when the test matrix state is FINISHED.
2806	//
2807	// Possible values:
2808	//   "OUTCOME_SUMMARY_UNSPECIFIED" - Do not use. For proto versioning
2809	// only.
2810	//   "SUCCESS" - The test matrix run was successful, for instance:
2811	// - All the test cases passed.
2812	// - Robo did not detect a crash of the application under test.
2813	//   "FAILURE" - A run failed, for instance:
2814	// - One or more test case failed.
2815	// - A test timed out.
2816	// - The application under test crashed.
2817	//   "INCONCLUSIVE" - Something unexpected happened. The run should
2818	// still be considered
2819	// unsuccessful but this is likely a transient problem and re-running
2820	// the
2821	// test might be successful.
2822	//   "SKIPPED" - All tests were skipped, for instance:
2823	// - All device configurations were incompatible.
2824	OutcomeSummary string `json:"outcomeSummary,omitempty"`
2825
2826	// ProjectId: The cloud project that owns the test matrix.
2827	ProjectId string `json:"projectId,omitempty"`
2828
2829	// ResultStorage: Required. Where the results for the matrix are
2830	// written.
2831	ResultStorage *ResultStorage `json:"resultStorage,omitempty"`
2832
2833	// State: Output only. Indicates the current progress of the test
2834	// matrix.
2835	//
2836	// Possible values:
2837	//   "TEST_STATE_UNSPECIFIED" - Do not use.  For proto versioning only.
2838	//   "VALIDATING" - The execution or matrix is being validated.
2839	//   "PENDING" - The execution or matrix is waiting for resources to
2840	// become available.
2841	//   "RUNNING" - The execution is currently being processed.
2842	//
2843	// Can only be set on an execution.
2844	//   "FINISHED" - The execution or matrix has terminated normally.
2845	//
2846	// On a matrix this means that the matrix level processing completed
2847	// normally,
2848	// but individual executions may be in an ERROR state.
2849	//   "ERROR" - The execution or matrix has stopped because it
2850	// encountered an
2851	// infrastructure failure.
2852	//   "UNSUPPORTED_ENVIRONMENT" - The execution was not run because it
2853	// corresponds to a unsupported
2854	// environment.
2855	//
2856	// Can only be set on an execution.
2857	//   "INCOMPATIBLE_ENVIRONMENT" - The execution was not run because the
2858	// provided inputs are incompatible with
2859	// the requested environment.
2860	//
2861	// Example: requested AndroidVersion is lower than APK's
2862	// minSdkVersion
2863	//
2864	// Can only be set on an execution.
2865	//   "INCOMPATIBLE_ARCHITECTURE" - The execution was not run because the
2866	// provided inputs are incompatible with
2867	// the requested architecture.
2868	//
2869	// Example: requested device does not support running the native code
2870	// in
2871	// the supplied APK
2872	//
2873	// Can only be set on an execution.
2874	//   "CANCELLED" - The user cancelled the execution.
2875	//
2876	// Can only be set on an execution.
2877	//   "INVALID" - The execution or matrix was not run because the
2878	// provided inputs are not
2879	// valid.
2880	//
2881	// Examples: input file is not of the expected type, is
2882	// malformed/corrupt, or
2883	// was flagged as malware
2884	State string `json:"state,omitempty"`
2885
2886	// TestExecutions: Output only. The list of test executions that the
2887	// service creates for
2888	// this matrix.
2889	TestExecutions []*TestExecution `json:"testExecutions,omitempty"`
2890
2891	// TestMatrixId: Output only. Unique id set by the service.
2892	TestMatrixId string `json:"testMatrixId,omitempty"`
2893
2894	// TestSpecification: Required. How to run the test.
2895	TestSpecification *TestSpecification `json:"testSpecification,omitempty"`
2896
2897	// Timestamp: Output only. The time this test matrix was initially
2898	// created.
2899	Timestamp string `json:"timestamp,omitempty"`
2900
2901	// ServerResponse contains the HTTP response code and headers from the
2902	// server.
2903	googleapi.ServerResponse `json:"-"`
2904
2905	// ForceSendFields is a list of field names (e.g. "ClientInfo") to
2906	// unconditionally include in API requests. By default, fields with
2907	// empty values are omitted from API requests. However, any non-pointer,
2908	// non-interface field appearing in ForceSendFields will be sent to the
2909	// server regardless of whether the field is empty or not. This may be
2910	// used to include empty fields in Patch requests.
2911	ForceSendFields []string `json:"-"`
2912
2913	// NullFields is a list of field names (e.g. "ClientInfo") to include in
2914	// API requests with the JSON null value. By default, fields with empty
2915	// values are omitted from API requests. However, any field with an
2916	// empty value appearing in NullFields will be sent to the server as
2917	// null. It is an error if a field in this list has a non-empty value.
2918	// This may be used to include null fields in Patch requests.
2919	NullFields []string `json:"-"`
2920}
2921
2922func (s *TestMatrix) MarshalJSON() ([]byte, error) {
2923	type NoMethod TestMatrix
2924	raw := NoMethod(*s)
2925	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
2926}
2927
2928// TestSetup: A description of how to set up the Android device prior to
2929// running the test.
2930type TestSetup struct {
2931	// Account: The device will be logged in on this account for the
2932	// duration of the test.
2933	Account *Account `json:"account,omitempty"`
2934
2935	// AdditionalApks: APKs to install in addition to those being directly
2936	// tested.
2937	// Currently capped at 100.
2938	AdditionalApks []*Apk `json:"additionalApks,omitempty"`
2939
2940	// DirectoriesToPull: List of directories on the device to upload to GCS
2941	// at the end of the test;
2942	// they must be absolute paths under /sdcard or /data/local/tmp.
2943	// Path names are restricted to characters a-z A-Z 0-9 _ - . + and
2944	// /
2945	//
2946	// Note: The paths /sdcard and /data will be made available and treated
2947	// as
2948	// implicit path substitutions. E.g. if /sdcard on a particular device
2949	// does
2950	// not map to external storage, the system will replace it with the
2951	// external
2952	// storage path prefix for that device.
2953	DirectoriesToPull []string `json:"directoriesToPull,omitempty"`
2954
2955	// EnvironmentVariables: Environment variables to set for the test (only
2956	// applicable for
2957	// instrumentation tests).
2958	EnvironmentVariables []*EnvironmentVariable `json:"environmentVariables,omitempty"`
2959
2960	// FilesToPush: List of files to push to the device before starting the
2961	// test.
2962	FilesToPush []*DeviceFile `json:"filesToPush,omitempty"`
2963
2964	// NetworkProfile: The network traffic profile used for running the
2965	// test.
2966	// Available network profiles can be queried by using
2967	// the
2968	// NETWORK_CONFIGURATION environment type when
2969	// calling
2970	// TestEnvironmentDiscoveryService.GetTestEnvironmentCatalog.
2971	NetworkProfile string `json:"networkProfile,omitempty"`
2972
2973	// Systrace: Systrace configuration for the run.
2974	// If set a systrace will be taken, starting on test start and lasting
2975	// for the
2976	// configured duration. The systrace file thus obtained is put in the
2977	// results
2978	// bucket together with the other artifacts from the run.
2979	Systrace *SystraceSetup `json:"systrace,omitempty"`
2980
2981	// ForceSendFields is a list of field names (e.g. "Account") to
2982	// unconditionally include in API requests. By default, fields with
2983	// empty values are omitted from API requests. However, any non-pointer,
2984	// non-interface field appearing in ForceSendFields will be sent to the
2985	// server regardless of whether the field is empty or not. This may be
2986	// used to include empty fields in Patch requests.
2987	ForceSendFields []string `json:"-"`
2988
2989	// NullFields is a list of field names (e.g. "Account") to include in
2990	// API requests with the JSON null value. By default, fields with empty
2991	// values are omitted from API requests. However, any field with an
2992	// empty value appearing in NullFields will be sent to the server as
2993	// null. It is an error if a field in this list has a non-empty value.
2994	// This may be used to include null fields in Patch requests.
2995	NullFields []string `json:"-"`
2996}
2997
2998func (s *TestSetup) MarshalJSON() ([]byte, error) {
2999	type NoMethod TestSetup
3000	raw := NoMethod(*s)
3001	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3002}
3003
3004// TestSpecification: A description of how to run the test.
3005type TestSpecification struct {
3006	// AndroidInstrumentationTest: An Android instrumentation test.
3007	AndroidInstrumentationTest *AndroidInstrumentationTest `json:"androidInstrumentationTest,omitempty"`
3008
3009	// AndroidRoboTest: An Android robo test.
3010	AndroidRoboTest *AndroidRoboTest `json:"androidRoboTest,omitempty"`
3011
3012	// AndroidTestLoop: An Android Application with a Test Loop.
3013	AndroidTestLoop *AndroidTestLoop `json:"androidTestLoop,omitempty"`
3014
3015	// DisablePerformanceMetrics: Disables performance metrics recording.
3016	// May reduce test latency.
3017	DisablePerformanceMetrics bool `json:"disablePerformanceMetrics,omitempty"`
3018
3019	// DisableVideoRecording: Disables video recording. May reduce test
3020	// latency.
3021	DisableVideoRecording bool `json:"disableVideoRecording,omitempty"`
3022
3023	// IosTestLoop: An iOS application with a test loop.
3024	IosTestLoop *IosTestLoop `json:"iosTestLoop,omitempty"`
3025
3026	// IosTestSetup: Test setup requirements for iOS.
3027	IosTestSetup *IosTestSetup `json:"iosTestSetup,omitempty"`
3028
3029	// IosXcTest: An iOS XCTest, via an .xctestrun file.
3030	IosXcTest *IosXcTest `json:"iosXcTest,omitempty"`
3031
3032	// TestSetup: Test setup requirements for Android e.g. files to install,
3033	// bootstrap
3034	// scripts.
3035	TestSetup *TestSetup `json:"testSetup,omitempty"`
3036
3037	// TestTimeout: Max time a test execution is allowed to run before it
3038	// is
3039	// automatically cancelled.
3040	// The default value is 5 min.
3041	TestTimeout string `json:"testTimeout,omitempty"`
3042
3043	// ForceSendFields is a list of field names (e.g.
3044	// "AndroidInstrumentationTest") to unconditionally include in API
3045	// requests. By default, fields with empty values are omitted from API
3046	// requests. However, any non-pointer, non-interface field appearing in
3047	// ForceSendFields will be sent to the server regardless of whether the
3048	// field is empty or not. This may be used to include empty fields in
3049	// Patch requests.
3050	ForceSendFields []string `json:"-"`
3051
3052	// NullFields is a list of field names (e.g.
3053	// "AndroidInstrumentationTest") to include in API requests with the
3054	// JSON null value. By default, fields with empty values are omitted
3055	// from API requests. However, any field with an empty value appearing
3056	// in NullFields will be sent to the server as null. It is an error if a
3057	// field in this list has a non-empty value. This may be used to include
3058	// null fields in Patch requests.
3059	NullFields []string `json:"-"`
3060}
3061
3062func (s *TestSpecification) MarshalJSON() ([]byte, error) {
3063	type NoMethod TestSpecification
3064	raw := NoMethod(*s)
3065	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3066}
3067
3068// TestTargetsForShard: Test targets for a shard.
3069type TestTargetsForShard struct {
3070	// TestTargets: Group of packages, classes, and/or test methods to be
3071	// run for each shard.
3072	// The targets need to be specified in AndroidJUnitRunner argument
3073	// format. For
3074	// example, “package com.my.packages” “class
3075	// com.my.package.MyClass”.
3076	//
3077	// The number of shard_test_targets must be greater than 0.
3078	TestTargets []string `json:"testTargets,omitempty"`
3079
3080	// ForceSendFields is a list of field names (e.g. "TestTargets") to
3081	// unconditionally include in API requests. By default, fields with
3082	// empty values are omitted from API requests. However, any non-pointer,
3083	// non-interface field appearing in ForceSendFields will be sent to the
3084	// server regardless of whether the field is empty or not. This may be
3085	// used to include empty fields in Patch requests.
3086	ForceSendFields []string `json:"-"`
3087
3088	// NullFields is a list of field names (e.g. "TestTargets") to include
3089	// in API requests with the JSON null value. By default, fields with
3090	// empty values are omitted from API requests. However, any field with
3091	// an empty value appearing in NullFields will be sent to the server as
3092	// null. It is an error if a field in this list has a non-empty value.
3093	// This may be used to include null fields in Patch requests.
3094	NullFields []string `json:"-"`
3095}
3096
3097func (s *TestTargetsForShard) MarshalJSON() ([]byte, error) {
3098	type NoMethod TestTargetsForShard
3099	raw := NoMethod(*s)
3100	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3101}
3102
3103// ToolResultsExecution: Represents a tool results execution
3104// resource.
3105//
3106// This has the results of a TestMatrix.
3107type ToolResultsExecution struct {
3108	// ExecutionId: Output only. A tool results execution ID.
3109	ExecutionId string `json:"executionId,omitempty"`
3110
3111	// HistoryId: Output only. A tool results history ID.
3112	HistoryId string `json:"historyId,omitempty"`
3113
3114	// ProjectId: Output only. The cloud project that owns the tool results
3115	// execution.
3116	ProjectId string `json:"projectId,omitempty"`
3117
3118	// ForceSendFields is a list of field names (e.g. "ExecutionId") to
3119	// unconditionally include in API requests. By default, fields with
3120	// empty values are omitted from API requests. However, any non-pointer,
3121	// non-interface field appearing in ForceSendFields will be sent to the
3122	// server regardless of whether the field is empty or not. This may be
3123	// used to include empty fields in Patch requests.
3124	ForceSendFields []string `json:"-"`
3125
3126	// NullFields is a list of field names (e.g. "ExecutionId") to include
3127	// in API requests with the JSON null value. By default, fields with
3128	// empty values are omitted from API requests. However, any field with
3129	// an empty value appearing in NullFields will be sent to the server as
3130	// null. It is an error if a field in this list has a non-empty value.
3131	// This may be used to include null fields in Patch requests.
3132	NullFields []string `json:"-"`
3133}
3134
3135func (s *ToolResultsExecution) MarshalJSON() ([]byte, error) {
3136	type NoMethod ToolResultsExecution
3137	raw := NoMethod(*s)
3138	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3139}
3140
3141// ToolResultsHistory: Represents a tool results history resource.
3142type ToolResultsHistory struct {
3143	// HistoryId: Required. A tool results history ID.
3144	HistoryId string `json:"historyId,omitempty"`
3145
3146	// ProjectId: Required. The cloud project that owns the tool results
3147	// history.
3148	ProjectId string `json:"projectId,omitempty"`
3149
3150	// ForceSendFields is a list of field names (e.g. "HistoryId") to
3151	// unconditionally include in API requests. By default, fields with
3152	// empty values are omitted from API requests. However, any non-pointer,
3153	// non-interface field appearing in ForceSendFields will be sent to the
3154	// server regardless of whether the field is empty or not. This may be
3155	// used to include empty fields in Patch requests.
3156	ForceSendFields []string `json:"-"`
3157
3158	// NullFields is a list of field names (e.g. "HistoryId") to include in
3159	// API requests with the JSON null value. By default, fields with empty
3160	// values are omitted from API requests. However, any field with an
3161	// empty value appearing in NullFields will be sent to the server as
3162	// null. It is an error if a field in this list has a non-empty value.
3163	// This may be used to include null fields in Patch requests.
3164	NullFields []string `json:"-"`
3165}
3166
3167func (s *ToolResultsHistory) MarshalJSON() ([]byte, error) {
3168	type NoMethod ToolResultsHistory
3169	raw := NoMethod(*s)
3170	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3171}
3172
3173// ToolResultsStep: Represents a tool results step resource.
3174//
3175// This has the results of a TestExecution.
3176type ToolResultsStep struct {
3177	// ExecutionId: Output only. A tool results execution ID.
3178	ExecutionId string `json:"executionId,omitempty"`
3179
3180	// HistoryId: Output only. A tool results history ID.
3181	HistoryId string `json:"historyId,omitempty"`
3182
3183	// ProjectId: Output only. The cloud project that owns the tool results
3184	// step.
3185	ProjectId string `json:"projectId,omitempty"`
3186
3187	// StepId: Output only. A tool results step ID.
3188	StepId string `json:"stepId,omitempty"`
3189
3190	// ForceSendFields is a list of field names (e.g. "ExecutionId") to
3191	// unconditionally include in API requests. By default, fields with
3192	// empty values are omitted from API requests. However, any non-pointer,
3193	// non-interface field appearing in ForceSendFields will be sent to the
3194	// server regardless of whether the field is empty or not. This may be
3195	// used to include empty fields in Patch requests.
3196	ForceSendFields []string `json:"-"`
3197
3198	// NullFields is a list of field names (e.g. "ExecutionId") to include
3199	// in API requests with the JSON null value. By default, fields with
3200	// empty values are omitted from API requests. However, any field with
3201	// an empty value appearing in NullFields will be sent to the server as
3202	// null. It is an error if a field in this list has a non-empty value.
3203	// This may be used to include null fields in Patch requests.
3204	NullFields []string `json:"-"`
3205}
3206
3207func (s *ToolResultsStep) MarshalJSON() ([]byte, error) {
3208	type NoMethod ToolResultsStep
3209	raw := NoMethod(*s)
3210	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3211}
3212
3213// TrafficRule: Network emulation parameters.
3214type TrafficRule struct {
3215	// Bandwidth: Bandwidth in kbits/second.
3216	Bandwidth float64 `json:"bandwidth,omitempty"`
3217
3218	// Burst: Burst size in kbits.
3219	Burst float64 `json:"burst,omitempty"`
3220
3221	// Delay: Packet delay, must be >= 0.
3222	Delay string `json:"delay,omitempty"`
3223
3224	// PacketDuplicationRatio: Packet duplication ratio (0.0 - 1.0).
3225	PacketDuplicationRatio float64 `json:"packetDuplicationRatio,omitempty"`
3226
3227	// PacketLossRatio: Packet loss ratio (0.0 - 1.0).
3228	PacketLossRatio float64 `json:"packetLossRatio,omitempty"`
3229
3230	// ForceSendFields is a list of field names (e.g. "Bandwidth") to
3231	// unconditionally include in API requests. By default, fields with
3232	// empty values are omitted from API requests. However, any non-pointer,
3233	// non-interface field appearing in ForceSendFields will be sent to the
3234	// server regardless of whether the field is empty or not. This may be
3235	// used to include empty fields in Patch requests.
3236	ForceSendFields []string `json:"-"`
3237
3238	// NullFields is a list of field names (e.g. "Bandwidth") to include in
3239	// API requests with the JSON null value. By default, fields with empty
3240	// values are omitted from API requests. However, any field with an
3241	// empty value appearing in NullFields will be sent to the server as
3242	// null. It is an error if a field in this list has a non-empty value.
3243	// This may be used to include null fields in Patch requests.
3244	NullFields []string `json:"-"`
3245}
3246
3247func (s *TrafficRule) MarshalJSON() ([]byte, error) {
3248	type NoMethod TrafficRule
3249	raw := NoMethod(*s)
3250	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3251}
3252
3253func (s *TrafficRule) UnmarshalJSON(data []byte) error {
3254	type NoMethod TrafficRule
3255	var s1 struct {
3256		Bandwidth              gensupport.JSONFloat64 `json:"bandwidth"`
3257		Burst                  gensupport.JSONFloat64 `json:"burst"`
3258		PacketDuplicationRatio gensupport.JSONFloat64 `json:"packetDuplicationRatio"`
3259		PacketLossRatio        gensupport.JSONFloat64 `json:"packetLossRatio"`
3260		*NoMethod
3261	}
3262	s1.NoMethod = (*NoMethod)(s)
3263	if err := json.Unmarshal(data, &s1); err != nil {
3264		return err
3265	}
3266	s.Bandwidth = float64(s1.Bandwidth)
3267	s.Burst = float64(s1.Burst)
3268	s.PacketDuplicationRatio = float64(s1.PacketDuplicationRatio)
3269	s.PacketLossRatio = float64(s1.PacketLossRatio)
3270	return nil
3271}
3272
3273// UniformSharding: Uniformly shards test cases given a total number of
3274// shards.
3275//
3276// For Instrumentation test, it will be translated to “-e numShard”
3277// “-e
3278// shardIndex” AndroidJUnitRunner arguments. With uniform sharding
3279// enabled,
3280// specifying these sharding arguments via environment_variables is
3281// invalid.
3282type UniformSharding struct {
3283	// NumShards: Required. Total number of shards. The number must be >= 1
3284	// and <= 50.
3285	NumShards int64 `json:"numShards,omitempty"`
3286
3287	// ForceSendFields is a list of field names (e.g. "NumShards") to
3288	// unconditionally include in API requests. By default, fields with
3289	// empty values are omitted from API requests. However, any non-pointer,
3290	// non-interface field appearing in ForceSendFields will be sent to the
3291	// server regardless of whether the field is empty or not. This may be
3292	// used to include empty fields in Patch requests.
3293	ForceSendFields []string `json:"-"`
3294
3295	// NullFields is a list of field names (e.g. "NumShards") to include in
3296	// API requests with the JSON null value. By default, fields with empty
3297	// values are omitted from API requests. However, any field with an
3298	// empty value appearing in NullFields will be sent to the server as
3299	// null. It is an error if a field in this list has a non-empty value.
3300	// This may be used to include null fields in Patch requests.
3301	NullFields []string `json:"-"`
3302}
3303
3304func (s *UniformSharding) MarshalJSON() ([]byte, error) {
3305	type NoMethod UniformSharding
3306	raw := NoMethod(*s)
3307	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3308}
3309
3310// XcodeVersion: An Xcode version that an iOS version is compatible
3311// with.
3312type XcodeVersion struct {
3313	// Tags: Tags for this Xcode version.
3314	// Example: "default".
3315	Tags []string `json:"tags,omitempty"`
3316
3317	// Version: The id for this version.
3318	// Example: "9.2".
3319	Version string `json:"version,omitempty"`
3320
3321	// ForceSendFields is a list of field names (e.g. "Tags") to
3322	// unconditionally include in API requests. By default, fields with
3323	// empty values are omitted from API requests. However, any non-pointer,
3324	// non-interface field appearing in ForceSendFields will be sent to the
3325	// server regardless of whether the field is empty or not. This may be
3326	// used to include empty fields in Patch requests.
3327	ForceSendFields []string `json:"-"`
3328
3329	// NullFields is a list of field names (e.g. "Tags") to include in API
3330	// requests with the JSON null value. By default, fields with empty
3331	// values are omitted from API requests. However, any field with an
3332	// empty value appearing in NullFields will be sent to the server as
3333	// null. It is an error if a field in this list has a non-empty value.
3334	// This may be used to include null fields in Patch requests.
3335	NullFields []string `json:"-"`
3336}
3337
3338func (s *XcodeVersion) MarshalJSON() ([]byte, error) {
3339	type NoMethod XcodeVersion
3340	raw := NoMethod(*s)
3341	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
3342}
3343
3344// method id "testing.applicationDetailService.getApkDetails":
3345
3346type ApplicationDetailServiceGetApkDetailsCall struct {
3347	s             *Service
3348	filereference *FileReference
3349	urlParams_    gensupport.URLParams
3350	ctx_          context.Context
3351	header_       http.Header
3352}
3353
3354// GetApkDetails: Gets the details of an Android application APK.
3355func (r *ApplicationDetailServiceService) GetApkDetails(filereference *FileReference) *ApplicationDetailServiceGetApkDetailsCall {
3356	c := &ApplicationDetailServiceGetApkDetailsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3357	c.filereference = filereference
3358	return c
3359}
3360
3361// Fields allows partial responses to be retrieved. See
3362// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3363// for more information.
3364func (c *ApplicationDetailServiceGetApkDetailsCall) Fields(s ...googleapi.Field) *ApplicationDetailServiceGetApkDetailsCall {
3365	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3366	return c
3367}
3368
3369// Context sets the context to be used in this call's Do method. Any
3370// pending HTTP request will be aborted if the provided context is
3371// canceled.
3372func (c *ApplicationDetailServiceGetApkDetailsCall) Context(ctx context.Context) *ApplicationDetailServiceGetApkDetailsCall {
3373	c.ctx_ = ctx
3374	return c
3375}
3376
3377// Header returns an http.Header that can be modified by the caller to
3378// add HTTP headers to the request.
3379func (c *ApplicationDetailServiceGetApkDetailsCall) Header() http.Header {
3380	if c.header_ == nil {
3381		c.header_ = make(http.Header)
3382	}
3383	return c.header_
3384}
3385
3386func (c *ApplicationDetailServiceGetApkDetailsCall) doRequest(alt string) (*http.Response, error) {
3387	reqHeaders := make(http.Header)
3388	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200503")
3389	for k, v := range c.header_ {
3390		reqHeaders[k] = v
3391	}
3392	reqHeaders.Set("User-Agent", c.s.userAgent())
3393	var body io.Reader = nil
3394	body, err := googleapi.WithoutDataWrapper.JSONReader(c.filereference)
3395	if err != nil {
3396		return nil, err
3397	}
3398	reqHeaders.Set("Content-Type", "application/json")
3399	c.urlParams_.Set("alt", alt)
3400	c.urlParams_.Set("prettyPrint", "false")
3401	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/applicationDetailService/getApkDetails")
3402	urls += "?" + c.urlParams_.Encode()
3403	req, err := http.NewRequest("POST", urls, body)
3404	if err != nil {
3405		return nil, err
3406	}
3407	req.Header = reqHeaders
3408	return gensupport.SendRequest(c.ctx_, c.s.client, req)
3409}
3410
3411// Do executes the "testing.applicationDetailService.getApkDetails" call.
3412// Exactly one of *GetApkDetailsResponse or error will be non-nil. Any
3413// non-2xx status code is an error. Response headers are in either
3414// *GetApkDetailsResponse.ServerResponse.Header or (if a response was
3415// returned at all) in error.(*googleapi.Error).Header. Use
3416// googleapi.IsNotModified to check whether the returned error was
3417// because http.StatusNotModified was returned.
3418func (c *ApplicationDetailServiceGetApkDetailsCall) Do(opts ...googleapi.CallOption) (*GetApkDetailsResponse, error) {
3419	gensupport.SetOptions(c.urlParams_, opts...)
3420	res, err := c.doRequest("json")
3421	if res != nil && res.StatusCode == http.StatusNotModified {
3422		if res.Body != nil {
3423			res.Body.Close()
3424		}
3425		return nil, &googleapi.Error{
3426			Code:   res.StatusCode,
3427			Header: res.Header,
3428		}
3429	}
3430	if err != nil {
3431		return nil, err
3432	}
3433	defer googleapi.CloseBody(res)
3434	if err := googleapi.CheckResponse(res); err != nil {
3435		return nil, err
3436	}
3437	ret := &GetApkDetailsResponse{
3438		ServerResponse: googleapi.ServerResponse{
3439			Header:         res.Header,
3440			HTTPStatusCode: res.StatusCode,
3441		},
3442	}
3443	target := &ret
3444	if err := gensupport.DecodeResponse(target, res); err != nil {
3445		return nil, err
3446	}
3447	return ret, nil
3448	// {
3449	//   "description": "Gets the details of an Android application APK.",
3450	//   "flatPath": "v1/applicationDetailService/getApkDetails",
3451	//   "httpMethod": "POST",
3452	//   "id": "testing.applicationDetailService.getApkDetails",
3453	//   "parameterOrder": [],
3454	//   "parameters": {},
3455	//   "path": "v1/applicationDetailService/getApkDetails",
3456	//   "request": {
3457	//     "$ref": "FileReference"
3458	//   },
3459	//   "response": {
3460	//     "$ref": "GetApkDetailsResponse"
3461	//   },
3462	//   "scopes": [
3463	//     "https://www.googleapis.com/auth/cloud-platform"
3464	//   ]
3465	// }
3466
3467}
3468
3469// method id "testing.projects.testMatrices.cancel":
3470
3471type ProjectsTestMatricesCancelCall struct {
3472	s            *Service
3473	projectId    string
3474	testMatrixId string
3475	urlParams_   gensupport.URLParams
3476	ctx_         context.Context
3477	header_      http.Header
3478}
3479
3480// Cancel: Cancels unfinished test executions in a test matrix.
3481// This call returns immediately and cancellation proceeds
3482// asychronously.
3483// If the matrix is already final, this operation will have no
3484// effect.
3485//
3486// May return any of the following canonical error codes:
3487//
3488// - PERMISSION_DENIED - if the user is not authorized to read project
3489// - INVALID_ARGUMENT - if the request is malformed
3490// - NOT_FOUND - if the Test Matrix does not exist
3491func (r *ProjectsTestMatricesService) Cancel(projectId string, testMatrixId string) *ProjectsTestMatricesCancelCall {
3492	c := &ProjectsTestMatricesCancelCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3493	c.projectId = projectId
3494	c.testMatrixId = testMatrixId
3495	return c
3496}
3497
3498// Fields allows partial responses to be retrieved. See
3499// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3500// for more information.
3501func (c *ProjectsTestMatricesCancelCall) Fields(s ...googleapi.Field) *ProjectsTestMatricesCancelCall {
3502	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3503	return c
3504}
3505
3506// Context sets the context to be used in this call's Do method. Any
3507// pending HTTP request will be aborted if the provided context is
3508// canceled.
3509func (c *ProjectsTestMatricesCancelCall) Context(ctx context.Context) *ProjectsTestMatricesCancelCall {
3510	c.ctx_ = ctx
3511	return c
3512}
3513
3514// Header returns an http.Header that can be modified by the caller to
3515// add HTTP headers to the request.
3516func (c *ProjectsTestMatricesCancelCall) Header() http.Header {
3517	if c.header_ == nil {
3518		c.header_ = make(http.Header)
3519	}
3520	return c.header_
3521}
3522
3523func (c *ProjectsTestMatricesCancelCall) doRequest(alt string) (*http.Response, error) {
3524	reqHeaders := make(http.Header)
3525	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200503")
3526	for k, v := range c.header_ {
3527		reqHeaders[k] = v
3528	}
3529	reqHeaders.Set("User-Agent", c.s.userAgent())
3530	var body io.Reader = nil
3531	c.urlParams_.Set("alt", alt)
3532	c.urlParams_.Set("prettyPrint", "false")
3533	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/testMatrices/{testMatrixId}:cancel")
3534	urls += "?" + c.urlParams_.Encode()
3535	req, err := http.NewRequest("POST", urls, body)
3536	if err != nil {
3537		return nil, err
3538	}
3539	req.Header = reqHeaders
3540	googleapi.Expand(req.URL, map[string]string{
3541		"projectId":    c.projectId,
3542		"testMatrixId": c.testMatrixId,
3543	})
3544	return gensupport.SendRequest(c.ctx_, c.s.client, req)
3545}
3546
3547// Do executes the "testing.projects.testMatrices.cancel" call.
3548// Exactly one of *CancelTestMatrixResponse or error will be non-nil.
3549// Any non-2xx status code is an error. Response headers are in either
3550// *CancelTestMatrixResponse.ServerResponse.Header or (if a response was
3551// returned at all) in error.(*googleapi.Error).Header. Use
3552// googleapi.IsNotModified to check whether the returned error was
3553// because http.StatusNotModified was returned.
3554func (c *ProjectsTestMatricesCancelCall) Do(opts ...googleapi.CallOption) (*CancelTestMatrixResponse, error) {
3555	gensupport.SetOptions(c.urlParams_, opts...)
3556	res, err := c.doRequest("json")
3557	if res != nil && res.StatusCode == http.StatusNotModified {
3558		if res.Body != nil {
3559			res.Body.Close()
3560		}
3561		return nil, &googleapi.Error{
3562			Code:   res.StatusCode,
3563			Header: res.Header,
3564		}
3565	}
3566	if err != nil {
3567		return nil, err
3568	}
3569	defer googleapi.CloseBody(res)
3570	if err := googleapi.CheckResponse(res); err != nil {
3571		return nil, err
3572	}
3573	ret := &CancelTestMatrixResponse{
3574		ServerResponse: googleapi.ServerResponse{
3575			Header:         res.Header,
3576			HTTPStatusCode: res.StatusCode,
3577		},
3578	}
3579	target := &ret
3580	if err := gensupport.DecodeResponse(target, res); err != nil {
3581		return nil, err
3582	}
3583	return ret, nil
3584	// {
3585	//   "description": "Cancels unfinished test executions in a test matrix.\nThis call returns immediately and cancellation proceeds asychronously.\nIf the matrix is already final, this operation will have no effect.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to read project\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the Test Matrix does not exist",
3586	//   "flatPath": "v1/projects/{projectId}/testMatrices/{testMatrixId}:cancel",
3587	//   "httpMethod": "POST",
3588	//   "id": "testing.projects.testMatrices.cancel",
3589	//   "parameterOrder": [
3590	//     "projectId",
3591	//     "testMatrixId"
3592	//   ],
3593	//   "parameters": {
3594	//     "projectId": {
3595	//       "description": "Cloud project that owns the test.",
3596	//       "location": "path",
3597	//       "required": true,
3598	//       "type": "string"
3599	//     },
3600	//     "testMatrixId": {
3601	//       "description": "Test matrix that will be canceled.",
3602	//       "location": "path",
3603	//       "required": true,
3604	//       "type": "string"
3605	//     }
3606	//   },
3607	//   "path": "v1/projects/{projectId}/testMatrices/{testMatrixId}:cancel",
3608	//   "response": {
3609	//     "$ref": "CancelTestMatrixResponse"
3610	//   },
3611	//   "scopes": [
3612	//     "https://www.googleapis.com/auth/cloud-platform"
3613	//   ]
3614	// }
3615
3616}
3617
3618// method id "testing.projects.testMatrices.create":
3619
3620type ProjectsTestMatricesCreateCall struct {
3621	s          *Service
3622	projectId  string
3623	testmatrix *TestMatrix
3624	urlParams_ gensupport.URLParams
3625	ctx_       context.Context
3626	header_    http.Header
3627}
3628
3629// Create: Creates and runs a matrix of tests according to the given
3630// specifications.
3631// Unsupported environments will be returned in the state
3632// UNSUPPORTED.
3633// Matrices are limited to at most 200 supported executions.
3634//
3635// May return any of the following canonical error codes:
3636//
3637// - PERMISSION_DENIED - if the user is not authorized to write to
3638// project
3639// - INVALID_ARGUMENT - if the request is malformed or if the matrix
3640// expands
3641//                      to more than 200 supported executions
3642func (r *ProjectsTestMatricesService) Create(projectId string, testmatrix *TestMatrix) *ProjectsTestMatricesCreateCall {
3643	c := &ProjectsTestMatricesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3644	c.projectId = projectId
3645	c.testmatrix = testmatrix
3646	return c
3647}
3648
3649// RequestId sets the optional parameter "requestId": A string id used
3650// to detect duplicated requests.
3651// Ids are automatically scoped to a project, so
3652// users should ensure the ID is unique per-project.
3653// A UUID is recommended.
3654//
3655// Optional, but strongly recommended.
3656func (c *ProjectsTestMatricesCreateCall) RequestId(requestId string) *ProjectsTestMatricesCreateCall {
3657	c.urlParams_.Set("requestId", requestId)
3658	return c
3659}
3660
3661// Fields allows partial responses to be retrieved. See
3662// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3663// for more information.
3664func (c *ProjectsTestMatricesCreateCall) Fields(s ...googleapi.Field) *ProjectsTestMatricesCreateCall {
3665	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3666	return c
3667}
3668
3669// Context sets the context to be used in this call's Do method. Any
3670// pending HTTP request will be aborted if the provided context is
3671// canceled.
3672func (c *ProjectsTestMatricesCreateCall) Context(ctx context.Context) *ProjectsTestMatricesCreateCall {
3673	c.ctx_ = ctx
3674	return c
3675}
3676
3677// Header returns an http.Header that can be modified by the caller to
3678// add HTTP headers to the request.
3679func (c *ProjectsTestMatricesCreateCall) Header() http.Header {
3680	if c.header_ == nil {
3681		c.header_ = make(http.Header)
3682	}
3683	return c.header_
3684}
3685
3686func (c *ProjectsTestMatricesCreateCall) doRequest(alt string) (*http.Response, error) {
3687	reqHeaders := make(http.Header)
3688	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200503")
3689	for k, v := range c.header_ {
3690		reqHeaders[k] = v
3691	}
3692	reqHeaders.Set("User-Agent", c.s.userAgent())
3693	var body io.Reader = nil
3694	body, err := googleapi.WithoutDataWrapper.JSONReader(c.testmatrix)
3695	if err != nil {
3696		return nil, err
3697	}
3698	reqHeaders.Set("Content-Type", "application/json")
3699	c.urlParams_.Set("alt", alt)
3700	c.urlParams_.Set("prettyPrint", "false")
3701	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/testMatrices")
3702	urls += "?" + c.urlParams_.Encode()
3703	req, err := http.NewRequest("POST", urls, body)
3704	if err != nil {
3705		return nil, err
3706	}
3707	req.Header = reqHeaders
3708	googleapi.Expand(req.URL, map[string]string{
3709		"projectId": c.projectId,
3710	})
3711	return gensupport.SendRequest(c.ctx_, c.s.client, req)
3712}
3713
3714// Do executes the "testing.projects.testMatrices.create" call.
3715// Exactly one of *TestMatrix or error will be non-nil. Any non-2xx
3716// status code is an error. Response headers are in either
3717// *TestMatrix.ServerResponse.Header or (if a response was returned at
3718// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
3719// to check whether the returned error was because
3720// http.StatusNotModified was returned.
3721func (c *ProjectsTestMatricesCreateCall) Do(opts ...googleapi.CallOption) (*TestMatrix, error) {
3722	gensupport.SetOptions(c.urlParams_, opts...)
3723	res, err := c.doRequest("json")
3724	if res != nil && res.StatusCode == http.StatusNotModified {
3725		if res.Body != nil {
3726			res.Body.Close()
3727		}
3728		return nil, &googleapi.Error{
3729			Code:   res.StatusCode,
3730			Header: res.Header,
3731		}
3732	}
3733	if err != nil {
3734		return nil, err
3735	}
3736	defer googleapi.CloseBody(res)
3737	if err := googleapi.CheckResponse(res); err != nil {
3738		return nil, err
3739	}
3740	ret := &TestMatrix{
3741		ServerResponse: googleapi.ServerResponse{
3742			Header:         res.Header,
3743			HTTPStatusCode: res.StatusCode,
3744		},
3745	}
3746	target := &ret
3747	if err := gensupport.DecodeResponse(target, res); err != nil {
3748		return nil, err
3749	}
3750	return ret, nil
3751	// {
3752	//   "description": "Creates and runs a matrix of tests according to the given specifications.\nUnsupported environments will be returned in the state UNSUPPORTED.\nMatrices are limited to at most 200 supported executions.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to write to project\n- INVALID_ARGUMENT - if the request is malformed or if the matrix expands\n                     to more than 200 supported executions",
3753	//   "flatPath": "v1/projects/{projectId}/testMatrices",
3754	//   "httpMethod": "POST",
3755	//   "id": "testing.projects.testMatrices.create",
3756	//   "parameterOrder": [
3757	//     "projectId"
3758	//   ],
3759	//   "parameters": {
3760	//     "projectId": {
3761	//       "description": "The GCE project under which this job will run.",
3762	//       "location": "path",
3763	//       "required": true,
3764	//       "type": "string"
3765	//     },
3766	//     "requestId": {
3767	//       "description": "A string id used to detect duplicated requests.\nIds are automatically scoped to a project, so\nusers should ensure the ID is unique per-project.\nA UUID is recommended.\n\nOptional, but strongly recommended.",
3768	//       "location": "query",
3769	//       "type": "string"
3770	//     }
3771	//   },
3772	//   "path": "v1/projects/{projectId}/testMatrices",
3773	//   "request": {
3774	//     "$ref": "TestMatrix"
3775	//   },
3776	//   "response": {
3777	//     "$ref": "TestMatrix"
3778	//   },
3779	//   "scopes": [
3780	//     "https://www.googleapis.com/auth/cloud-platform"
3781	//   ]
3782	// }
3783
3784}
3785
3786// method id "testing.projects.testMatrices.get":
3787
3788type ProjectsTestMatricesGetCall struct {
3789	s            *Service
3790	projectId    string
3791	testMatrixId string
3792	urlParams_   gensupport.URLParams
3793	ifNoneMatch_ string
3794	ctx_         context.Context
3795	header_      http.Header
3796}
3797
3798// Get: Checks the status of a test matrix.
3799//
3800// May return any of the following canonical error codes:
3801//
3802// - PERMISSION_DENIED - if the user is not authorized to read project
3803// - INVALID_ARGUMENT - if the request is malformed
3804// - NOT_FOUND - if the Test Matrix does not exist
3805func (r *ProjectsTestMatricesService) Get(projectId string, testMatrixId string) *ProjectsTestMatricesGetCall {
3806	c := &ProjectsTestMatricesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3807	c.projectId = projectId
3808	c.testMatrixId = testMatrixId
3809	return c
3810}
3811
3812// Fields allows partial responses to be retrieved. See
3813// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3814// for more information.
3815func (c *ProjectsTestMatricesGetCall) Fields(s ...googleapi.Field) *ProjectsTestMatricesGetCall {
3816	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3817	return c
3818}
3819
3820// IfNoneMatch sets the optional parameter which makes the operation
3821// fail if the object's ETag matches the given value. This is useful for
3822// getting updates only after the object has changed since the last
3823// request. Use googleapi.IsNotModified to check whether the response
3824// error from Do is the result of In-None-Match.
3825func (c *ProjectsTestMatricesGetCall) IfNoneMatch(entityTag string) *ProjectsTestMatricesGetCall {
3826	c.ifNoneMatch_ = entityTag
3827	return c
3828}
3829
3830// Context sets the context to be used in this call's Do method. Any
3831// pending HTTP request will be aborted if the provided context is
3832// canceled.
3833func (c *ProjectsTestMatricesGetCall) Context(ctx context.Context) *ProjectsTestMatricesGetCall {
3834	c.ctx_ = ctx
3835	return c
3836}
3837
3838// Header returns an http.Header that can be modified by the caller to
3839// add HTTP headers to the request.
3840func (c *ProjectsTestMatricesGetCall) Header() http.Header {
3841	if c.header_ == nil {
3842		c.header_ = make(http.Header)
3843	}
3844	return c.header_
3845}
3846
3847func (c *ProjectsTestMatricesGetCall) doRequest(alt string) (*http.Response, error) {
3848	reqHeaders := make(http.Header)
3849	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200503")
3850	for k, v := range c.header_ {
3851		reqHeaders[k] = v
3852	}
3853	reqHeaders.Set("User-Agent", c.s.userAgent())
3854	if c.ifNoneMatch_ != "" {
3855		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
3856	}
3857	var body io.Reader = nil
3858	c.urlParams_.Set("alt", alt)
3859	c.urlParams_.Set("prettyPrint", "false")
3860	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/projects/{projectId}/testMatrices/{testMatrixId}")
3861	urls += "?" + c.urlParams_.Encode()
3862	req, err := http.NewRequest("GET", urls, body)
3863	if err != nil {
3864		return nil, err
3865	}
3866	req.Header = reqHeaders
3867	googleapi.Expand(req.URL, map[string]string{
3868		"projectId":    c.projectId,
3869		"testMatrixId": c.testMatrixId,
3870	})
3871	return gensupport.SendRequest(c.ctx_, c.s.client, req)
3872}
3873
3874// Do executes the "testing.projects.testMatrices.get" call.
3875// Exactly one of *TestMatrix or error will be non-nil. Any non-2xx
3876// status code is an error. Response headers are in either
3877// *TestMatrix.ServerResponse.Header or (if a response was returned at
3878// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
3879// to check whether the returned error was because
3880// http.StatusNotModified was returned.
3881func (c *ProjectsTestMatricesGetCall) Do(opts ...googleapi.CallOption) (*TestMatrix, error) {
3882	gensupport.SetOptions(c.urlParams_, opts...)
3883	res, err := c.doRequest("json")
3884	if res != nil && res.StatusCode == http.StatusNotModified {
3885		if res.Body != nil {
3886			res.Body.Close()
3887		}
3888		return nil, &googleapi.Error{
3889			Code:   res.StatusCode,
3890			Header: res.Header,
3891		}
3892	}
3893	if err != nil {
3894		return nil, err
3895	}
3896	defer googleapi.CloseBody(res)
3897	if err := googleapi.CheckResponse(res); err != nil {
3898		return nil, err
3899	}
3900	ret := &TestMatrix{
3901		ServerResponse: googleapi.ServerResponse{
3902			Header:         res.Header,
3903			HTTPStatusCode: res.StatusCode,
3904		},
3905	}
3906	target := &ret
3907	if err := gensupport.DecodeResponse(target, res); err != nil {
3908		return nil, err
3909	}
3910	return ret, nil
3911	// {
3912	//   "description": "Checks the status of a test matrix.\n\nMay return any of the following canonical error codes:\n\n- PERMISSION_DENIED - if the user is not authorized to read project\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the Test Matrix does not exist",
3913	//   "flatPath": "v1/projects/{projectId}/testMatrices/{testMatrixId}",
3914	//   "httpMethod": "GET",
3915	//   "id": "testing.projects.testMatrices.get",
3916	//   "parameterOrder": [
3917	//     "projectId",
3918	//     "testMatrixId"
3919	//   ],
3920	//   "parameters": {
3921	//     "projectId": {
3922	//       "description": "Cloud project that owns the test matrix.",
3923	//       "location": "path",
3924	//       "required": true,
3925	//       "type": "string"
3926	//     },
3927	//     "testMatrixId": {
3928	//       "description": "Unique test matrix id which was assigned by the service.",
3929	//       "location": "path",
3930	//       "required": true,
3931	//       "type": "string"
3932	//     }
3933	//   },
3934	//   "path": "v1/projects/{projectId}/testMatrices/{testMatrixId}",
3935	//   "response": {
3936	//     "$ref": "TestMatrix"
3937	//   },
3938	//   "scopes": [
3939	//     "https://www.googleapis.com/auth/cloud-platform",
3940	//     "https://www.googleapis.com/auth/cloud-platform.read-only"
3941	//   ]
3942	// }
3943
3944}
3945
3946// method id "testing.testEnvironmentCatalog.get":
3947
3948type TestEnvironmentCatalogGetCall struct {
3949	s               *Service
3950	environmentType string
3951	urlParams_      gensupport.URLParams
3952	ifNoneMatch_    string
3953	ctx_            context.Context
3954	header_         http.Header
3955}
3956
3957// Get: Gets the catalog of supported test environments.
3958//
3959// May return any of the following canonical error codes:
3960//
3961// - INVALID_ARGUMENT - if the request is malformed
3962// - NOT_FOUND - if the environment type does not exist
3963// - INTERNAL - if an internal error occurred
3964func (r *TestEnvironmentCatalogService) Get(environmentType string) *TestEnvironmentCatalogGetCall {
3965	c := &TestEnvironmentCatalogGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
3966	c.environmentType = environmentType
3967	return c
3968}
3969
3970// ProjectId sets the optional parameter "projectId": For authorization,
3971// the cloud project requesting the TestEnvironmentCatalog.
3972func (c *TestEnvironmentCatalogGetCall) ProjectId(projectId string) *TestEnvironmentCatalogGetCall {
3973	c.urlParams_.Set("projectId", projectId)
3974	return c
3975}
3976
3977// Fields allows partial responses to be retrieved. See
3978// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
3979// for more information.
3980func (c *TestEnvironmentCatalogGetCall) Fields(s ...googleapi.Field) *TestEnvironmentCatalogGetCall {
3981	c.urlParams_.Set("fields", googleapi.CombineFields(s))
3982	return c
3983}
3984
3985// IfNoneMatch sets the optional parameter which makes the operation
3986// fail if the object's ETag matches the given value. This is useful for
3987// getting updates only after the object has changed since the last
3988// request. Use googleapi.IsNotModified to check whether the response
3989// error from Do is the result of In-None-Match.
3990func (c *TestEnvironmentCatalogGetCall) IfNoneMatch(entityTag string) *TestEnvironmentCatalogGetCall {
3991	c.ifNoneMatch_ = entityTag
3992	return c
3993}
3994
3995// Context sets the context to be used in this call's Do method. Any
3996// pending HTTP request will be aborted if the provided context is
3997// canceled.
3998func (c *TestEnvironmentCatalogGetCall) Context(ctx context.Context) *TestEnvironmentCatalogGetCall {
3999	c.ctx_ = ctx
4000	return c
4001}
4002
4003// Header returns an http.Header that can be modified by the caller to
4004// add HTTP headers to the request.
4005func (c *TestEnvironmentCatalogGetCall) Header() http.Header {
4006	if c.header_ == nil {
4007		c.header_ = make(http.Header)
4008	}
4009	return c.header_
4010}
4011
4012func (c *TestEnvironmentCatalogGetCall) doRequest(alt string) (*http.Response, error) {
4013	reqHeaders := make(http.Header)
4014	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200503")
4015	for k, v := range c.header_ {
4016		reqHeaders[k] = v
4017	}
4018	reqHeaders.Set("User-Agent", c.s.userAgent())
4019	if c.ifNoneMatch_ != "" {
4020		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
4021	}
4022	var body io.Reader = nil
4023	c.urlParams_.Set("alt", alt)
4024	c.urlParams_.Set("prettyPrint", "false")
4025	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/testEnvironmentCatalog/{environmentType}")
4026	urls += "?" + c.urlParams_.Encode()
4027	req, err := http.NewRequest("GET", urls, body)
4028	if err != nil {
4029		return nil, err
4030	}
4031	req.Header = reqHeaders
4032	googleapi.Expand(req.URL, map[string]string{
4033		"environmentType": c.environmentType,
4034	})
4035	return gensupport.SendRequest(c.ctx_, c.s.client, req)
4036}
4037
4038// Do executes the "testing.testEnvironmentCatalog.get" call.
4039// Exactly one of *TestEnvironmentCatalog or error will be non-nil. Any
4040// non-2xx status code is an error. Response headers are in either
4041// *TestEnvironmentCatalog.ServerResponse.Header or (if a response was
4042// returned at all) in error.(*googleapi.Error).Header. Use
4043// googleapi.IsNotModified to check whether the returned error was
4044// because http.StatusNotModified was returned.
4045func (c *TestEnvironmentCatalogGetCall) Do(opts ...googleapi.CallOption) (*TestEnvironmentCatalog, error) {
4046	gensupport.SetOptions(c.urlParams_, opts...)
4047	res, err := c.doRequest("json")
4048	if res != nil && res.StatusCode == http.StatusNotModified {
4049		if res.Body != nil {
4050			res.Body.Close()
4051		}
4052		return nil, &googleapi.Error{
4053			Code:   res.StatusCode,
4054			Header: res.Header,
4055		}
4056	}
4057	if err != nil {
4058		return nil, err
4059	}
4060	defer googleapi.CloseBody(res)
4061	if err := googleapi.CheckResponse(res); err != nil {
4062		return nil, err
4063	}
4064	ret := &TestEnvironmentCatalog{
4065		ServerResponse: googleapi.ServerResponse{
4066			Header:         res.Header,
4067			HTTPStatusCode: res.StatusCode,
4068		},
4069	}
4070	target := &ret
4071	if err := gensupport.DecodeResponse(target, res); err != nil {
4072		return nil, err
4073	}
4074	return ret, nil
4075	// {
4076	//   "description": "Gets the catalog of supported test environments.\n\nMay return any of the following canonical error codes:\n\n- INVALID_ARGUMENT - if the request is malformed\n- NOT_FOUND - if the environment type does not exist\n- INTERNAL - if an internal error occurred",
4077	//   "flatPath": "v1/testEnvironmentCatalog/{environmentType}",
4078	//   "httpMethod": "GET",
4079	//   "id": "testing.testEnvironmentCatalog.get",
4080	//   "parameterOrder": [
4081	//     "environmentType"
4082	//   ],
4083	//   "parameters": {
4084	//     "environmentType": {
4085	//       "description": "Required. The type of environment that should be listed.",
4086	//       "enum": [
4087	//         "ENVIRONMENT_TYPE_UNSPECIFIED",
4088	//         "ANDROID",
4089	//         "IOS",
4090	//         "NETWORK_CONFIGURATION",
4091	//         "PROVIDED_SOFTWARE"
4092	//       ],
4093	//       "location": "path",
4094	//       "required": true,
4095	//       "type": "string"
4096	//     },
4097	//     "projectId": {
4098	//       "description": "For authorization, the cloud project requesting the TestEnvironmentCatalog.",
4099	//       "location": "query",
4100	//       "type": "string"
4101	//     }
4102	//   },
4103	//   "path": "v1/testEnvironmentCatalog/{environmentType}",
4104	//   "response": {
4105	//     "$ref": "TestEnvironmentCatalog"
4106	//   },
4107	//   "scopes": [
4108	//     "https://www.googleapis.com/auth/cloud-platform",
4109	//     "https://www.googleapis.com/auth/cloud-platform.read-only"
4110	//   ]
4111	// }
4112
4113}
4114