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