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