1// Copyright 2020 Google LLC.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Code generated file. DO NOT EDIT.
6
7// Package pagespeedonline provides access to the PageSpeed Insights API.
8//
9// For product documentation, see: https://developers.google.com/speed/docs/insights/v5/about
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/pagespeedonline/v5"
16//   ...
17//   ctx := context.Background()
18//   pagespeedonlineService, err := pagespeedonline.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// To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey:
27//
28//   pagespeedonlineService, err := pagespeedonline.NewService(ctx, option.WithAPIKey("AIza..."))
29//
30// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
31//
32//   config := &oauth2.Config{...}
33//   // ...
34//   token, err := config.Exchange(ctx, ...)
35//   pagespeedonlineService, err := pagespeedonline.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
36//
37// See https://godoc.org/google.golang.org/api/option/ for details on options.
38package pagespeedonline // import "google.golang.org/api/pagespeedonline/v5"
39
40import (
41	"bytes"
42	"context"
43	"encoding/json"
44	"errors"
45	"fmt"
46	"io"
47	"net/http"
48	"net/url"
49	"strconv"
50	"strings"
51
52	googleapi "google.golang.org/api/googleapi"
53	gensupport "google.golang.org/api/internal/gensupport"
54	option "google.golang.org/api/option"
55	internaloption "google.golang.org/api/option/internaloption"
56	htransport "google.golang.org/api/transport/http"
57)
58
59// Always reference these packages, just in case the auto-generated code
60// below doesn't.
61var _ = bytes.NewBuffer
62var _ = strconv.Itoa
63var _ = fmt.Sprintf
64var _ = json.NewDecoder
65var _ = io.Copy
66var _ = url.Parse
67var _ = gensupport.MarshalJSON
68var _ = googleapi.Version
69var _ = errors.New
70var _ = strings.Replace
71var _ = context.Canceled
72var _ = internaloption.WithDefaultEndpoint
73
74const apiId = "pagespeedonline:v5"
75const apiName = "pagespeedonline"
76const apiVersion = "v5"
77const basePath = "https://pagespeedonline.googleapis.com/"
78const mtlsBasePath = "https://pagespeedonline.mtls.googleapis.com/"
79
80// OAuth2 scopes used by this API.
81const (
82	// Associate you with your personal info on Google
83	OpenIDScope = "openid"
84)
85
86// NewService creates a new Service.
87func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
88	scopesOption := option.WithScopes(
89		"openid",
90	)
91	// NOTE: prepend, so we don't override user-specified scopes.
92	opts = append([]option.ClientOption{scopesOption}, opts...)
93	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
94	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
95	client, endpoint, err := htransport.NewClient(ctx, opts...)
96	if err != nil {
97		return nil, err
98	}
99	s, err := New(client)
100	if err != nil {
101		return nil, err
102	}
103	if endpoint != "" {
104		s.BasePath = endpoint
105	}
106	return s, nil
107}
108
109// New creates a new Service. It uses the provided http.Client for requests.
110//
111// Deprecated: please use NewService instead.
112// To provide a custom HTTP client, use option.WithHTTPClient.
113// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
114func New(client *http.Client) (*Service, error) {
115	if client == nil {
116		return nil, errors.New("client is nil")
117	}
118	s := &Service{client: client, BasePath: basePath}
119	s.Pagespeedapi = NewPagespeedapiService(s)
120	return s, nil
121}
122
123type Service struct {
124	client    *http.Client
125	BasePath  string // API endpoint base URL
126	UserAgent string // optional additional User-Agent fragment
127
128	Pagespeedapi *PagespeedapiService
129}
130
131func (s *Service) userAgent() string {
132	if s.UserAgent == "" {
133		return googleapi.UserAgent
134	}
135	return googleapi.UserAgent + " " + s.UserAgent
136}
137
138func NewPagespeedapiService(s *Service) *PagespeedapiService {
139	rs := &PagespeedapiService{s: s}
140	return rs
141}
142
143type PagespeedapiService struct {
144	s *Service
145}
146
147// AuditRefs: A light reference to an audit by id, used to group and
148// weight audits in a
149// given category.
150type AuditRefs struct {
151	// Group: The category group that the audit belongs to (optional).
152	Group string `json:"group,omitempty"`
153
154	// Id: The audit ref id.
155	Id string `json:"id,omitempty"`
156
157	// Weight: The weight this audit's score has on the overall category
158	// score.
159	Weight float64 `json:"weight,omitempty"`
160
161	// ForceSendFields is a list of field names (e.g. "Group") to
162	// unconditionally include in API requests. By default, fields with
163	// empty values are omitted from API requests. However, any non-pointer,
164	// non-interface field appearing in ForceSendFields will be sent to the
165	// server regardless of whether the field is empty or not. This may be
166	// used to include empty fields in Patch requests.
167	ForceSendFields []string `json:"-"`
168
169	// NullFields is a list of field names (e.g. "Group") to include in API
170	// requests with the JSON null value. By default, fields with empty
171	// values are omitted from API requests. However, any field with an
172	// empty value appearing in NullFields will be sent to the server as
173	// null. It is an error if a field in this list has a non-empty value.
174	// This may be used to include null fields in Patch requests.
175	NullFields []string `json:"-"`
176}
177
178func (s *AuditRefs) MarshalJSON() ([]byte, error) {
179	type NoMethod AuditRefs
180	raw := NoMethod(*s)
181	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
182}
183
184func (s *AuditRefs) UnmarshalJSON(data []byte) error {
185	type NoMethod AuditRefs
186	var s1 struct {
187		Weight gensupport.JSONFloat64 `json:"weight"`
188		*NoMethod
189	}
190	s1.NoMethod = (*NoMethod)(s)
191	if err := json.Unmarshal(data, &s1); err != nil {
192		return err
193	}
194	s.Weight = float64(s1.Weight)
195	return nil
196}
197
198// Bucket: A proportion of data in the total distribution, bucketed by a
199// min/max
200// percentage. Each bucket's range is bounded by min <= x < max,
201// In
202// millisecond.
203type Bucket struct {
204	// Max: Upper bound for a bucket's range.
205	Max int64 `json:"max,omitempty"`
206
207	// Min: Lower bound for a bucket's range.
208	Min int64 `json:"min,omitempty"`
209
210	// Proportion: The proportion of data in this bucket.
211	Proportion float64 `json:"proportion,omitempty"`
212
213	// ForceSendFields is a list of field names (e.g. "Max") to
214	// unconditionally include in API requests. By default, fields with
215	// empty values are omitted from API requests. However, any non-pointer,
216	// non-interface field appearing in ForceSendFields will be sent to the
217	// server regardless of whether the field is empty or not. This may be
218	// used to include empty fields in Patch requests.
219	ForceSendFields []string `json:"-"`
220
221	// NullFields is a list of field names (e.g. "Max") to include in API
222	// requests with the JSON null value. By default, fields with empty
223	// values are omitted from API requests. However, any field with an
224	// empty value appearing in NullFields will be sent to the server as
225	// null. It is an error if a field in this list has a non-empty value.
226	// This may be used to include null fields in Patch requests.
227	NullFields []string `json:"-"`
228}
229
230func (s *Bucket) MarshalJSON() ([]byte, error) {
231	type NoMethod Bucket
232	raw := NoMethod(*s)
233	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
234}
235
236func (s *Bucket) UnmarshalJSON(data []byte) error {
237	type NoMethod Bucket
238	var s1 struct {
239		Proportion gensupport.JSONFloat64 `json:"proportion"`
240		*NoMethod
241	}
242	s1.NoMethod = (*NoMethod)(s)
243	if err := json.Unmarshal(data, &s1); err != nil {
244		return err
245	}
246	s.Proportion = float64(s1.Proportion)
247	return nil
248}
249
250// Categories: The categories in a Lighthouse run.
251type Categories struct {
252	// Accessibility: The accessibility category, containing all
253	// accessibility related audits.
254	Accessibility *LighthouseCategoryV5 `json:"accessibility,omitempty"`
255
256	// BestPractices: The best practices category, containing all best
257	// practices related
258	// audits.
259	BestPractices *LighthouseCategoryV5 `json:"best-practices,omitempty"`
260
261	// Performance: The performance category, containing all performance
262	// related audits.
263	Performance *LighthouseCategoryV5 `json:"performance,omitempty"`
264
265	// Pwa: The Progressive-Web-App (PWA) category, containing all pwa
266	// related
267	// audits.
268	Pwa *LighthouseCategoryV5 `json:"pwa,omitempty"`
269
270	// Seo: The Search-Engine-Optimization (SEO) category, containing all
271	// seo related
272	// audits.
273	Seo *LighthouseCategoryV5 `json:"seo,omitempty"`
274
275	// ForceSendFields is a list of field names (e.g. "Accessibility") to
276	// unconditionally include in API requests. By default, fields with
277	// empty values are omitted from API requests. However, any non-pointer,
278	// non-interface field appearing in ForceSendFields will be sent to the
279	// server regardless of whether the field is empty or not. This may be
280	// used to include empty fields in Patch requests.
281	ForceSendFields []string `json:"-"`
282
283	// NullFields is a list of field names (e.g. "Accessibility") to include
284	// in API requests with the JSON null value. By default, fields with
285	// empty values are omitted from API requests. However, any field with
286	// an empty value appearing in NullFields will be sent to the server as
287	// null. It is an error if a field in this list has a non-empty value.
288	// This may be used to include null fields in Patch requests.
289	NullFields []string `json:"-"`
290}
291
292func (s *Categories) MarshalJSON() ([]byte, error) {
293	type NoMethod Categories
294	raw := NoMethod(*s)
295	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
296}
297
298// CategoryGroupV5: Message containing a category
299type CategoryGroupV5 struct {
300	// Description: The description of what the category is grouping
301	Description string `json:"description,omitempty"`
302
303	// Title: The human readable title of the group
304	Title string `json:"title,omitempty"`
305
306	// ForceSendFields is a list of field names (e.g. "Description") to
307	// unconditionally include in API requests. By default, fields with
308	// empty values are omitted from API requests. However, any non-pointer,
309	// non-interface field appearing in ForceSendFields will be sent to the
310	// server regardless of whether the field is empty or not. This may be
311	// used to include empty fields in Patch requests.
312	ForceSendFields []string `json:"-"`
313
314	// NullFields is a list of field names (e.g. "Description") to include
315	// in API requests with the JSON null value. By default, fields with
316	// empty values are omitted from API requests. However, any field with
317	// an empty value appearing in NullFields will be sent to the server as
318	// null. It is an error if a field in this list has a non-empty value.
319	// This may be used to include null fields in Patch requests.
320	NullFields []string `json:"-"`
321}
322
323func (s *CategoryGroupV5) MarshalJSON() ([]byte, error) {
324	type NoMethod CategoryGroupV5
325	raw := NoMethod(*s)
326	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
327}
328
329// ConfigSettings: Message containing the configuration settings for the
330// Lighthouse run.
331type ConfigSettings struct {
332	// Channel: How Lighthouse was run, e.g. from the Chrome extension or
333	// from the npm
334	// module.
335	Channel string `json:"channel,omitempty"`
336
337	// EmulatedFormFactor: The form factor the emulation should use.
338	EmulatedFormFactor string `json:"emulatedFormFactor,omitempty"`
339
340	// Locale: The locale setting.
341	Locale string `json:"locale,omitempty"`
342
343	// OnlyCategories: List of categories of audits the run should conduct.
344	OnlyCategories interface{} `json:"onlyCategories,omitempty"`
345
346	// ForceSendFields is a list of field names (e.g. "Channel") to
347	// unconditionally include in API requests. By default, fields with
348	// empty values are omitted from API requests. However, any non-pointer,
349	// non-interface field appearing in ForceSendFields will be sent to the
350	// server regardless of whether the field is empty or not. This may be
351	// used to include empty fields in Patch requests.
352	ForceSendFields []string `json:"-"`
353
354	// NullFields is a list of field names (e.g. "Channel") to include in
355	// API requests with the JSON null value. By default, fields with empty
356	// values are omitted from API requests. However, any field with an
357	// empty value appearing in NullFields will be sent to the server as
358	// null. It is an error if a field in this list has a non-empty value.
359	// This may be used to include null fields in Patch requests.
360	NullFields []string `json:"-"`
361}
362
363func (s *ConfigSettings) MarshalJSON() ([]byte, error) {
364	type NoMethod ConfigSettings
365	raw := NoMethod(*s)
366	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
367}
368
369// Environment: Message containing environment configuration for a
370// Lighthouse run.
371type Environment struct {
372	// BenchmarkIndex: The benchmark index number that indicates rough
373	// device class.
374	BenchmarkIndex float64 `json:"benchmarkIndex,omitempty"`
375
376	// HostUserAgent: The user agent string of the version of Chrome used.
377	HostUserAgent string `json:"hostUserAgent,omitempty"`
378
379	// NetworkUserAgent: The user agent string that was sent over the
380	// network.
381	NetworkUserAgent string `json:"networkUserAgent,omitempty"`
382
383	// ForceSendFields is a list of field names (e.g. "BenchmarkIndex") to
384	// unconditionally include in API requests. By default, fields with
385	// empty values are omitted from API requests. However, any non-pointer,
386	// non-interface field appearing in ForceSendFields will be sent to the
387	// server regardless of whether the field is empty or not. This may be
388	// used to include empty fields in Patch requests.
389	ForceSendFields []string `json:"-"`
390
391	// NullFields is a list of field names (e.g. "BenchmarkIndex") to
392	// include in API requests with the JSON null value. By default, fields
393	// with empty values are omitted from API requests. However, any field
394	// with an empty value appearing in NullFields will be sent to the
395	// server as null. It is an error if a field in this list has a
396	// non-empty value. This may be used to include null fields in Patch
397	// requests.
398	NullFields []string `json:"-"`
399}
400
401func (s *Environment) MarshalJSON() ([]byte, error) {
402	type NoMethod Environment
403	raw := NoMethod(*s)
404	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
405}
406
407func (s *Environment) UnmarshalJSON(data []byte) error {
408	type NoMethod Environment
409	var s1 struct {
410		BenchmarkIndex gensupport.JSONFloat64 `json:"benchmarkIndex"`
411		*NoMethod
412	}
413	s1.NoMethod = (*NoMethod)(s)
414	if err := json.Unmarshal(data, &s1); err != nil {
415		return err
416	}
417	s.BenchmarkIndex = float64(s1.BenchmarkIndex)
418	return nil
419}
420
421// I18n: Message containing the i18n data for the LHR - Version 1.
422type I18n struct {
423	// RendererFormattedStrings: Internationalized strings that are
424	// formatted to the locale in
425	// configSettings.
426	RendererFormattedStrings *RendererFormattedStrings `json:"rendererFormattedStrings,omitempty"`
427
428	// ForceSendFields is a list of field names (e.g.
429	// "RendererFormattedStrings") to unconditionally include in API
430	// requests. By default, fields with empty values are omitted from API
431	// requests. However, any non-pointer, non-interface field appearing in
432	// ForceSendFields will be sent to the server regardless of whether the
433	// field is empty or not. This may be used to include empty fields in
434	// Patch requests.
435	ForceSendFields []string `json:"-"`
436
437	// NullFields is a list of field names (e.g. "RendererFormattedStrings")
438	// to include in API requests with the JSON null value. By default,
439	// fields with empty values are omitted from API requests. However, any
440	// field with an empty value appearing in NullFields will be sent to the
441	// server as null. It is an error if a field in this list has a
442	// non-empty value. This may be used to include null fields in Patch
443	// requests.
444	NullFields []string `json:"-"`
445}
446
447func (s *I18n) MarshalJSON() ([]byte, error) {
448	type NoMethod I18n
449	raw := NoMethod(*s)
450	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
451}
452
453// LighthouseAuditResultV5: An audit's result object in a Lighthouse
454// result.
455type LighthouseAuditResultV5 struct {
456	// Description: The description of the audit.
457	Description string `json:"description,omitempty"`
458
459	// Details: Freeform details section of the audit.
460	Details googleapi.RawMessage `json:"details,omitempty"`
461
462	// DisplayValue: The value that should be displayed on the UI for this
463	// audit.
464	DisplayValue string `json:"displayValue,omitempty"`
465
466	// ErrorMessage: An error message from a thrown error inside the audit.
467	ErrorMessage string `json:"errorMessage,omitempty"`
468
469	// Explanation: An explanation of the errors in the audit.
470	Explanation string `json:"explanation,omitempty"`
471
472	// Id: The audit's id.
473	Id string `json:"id,omitempty"`
474
475	// NumericValue: A numeric value that has a meaning specific to the
476	// audit, e.g. the number
477	// of nodes in the DOM or the timestamp of a specific load event.
478	// More
479	// information can be found in the audit details, if present.
480	NumericValue float64 `json:"numericValue,omitempty"`
481
482	// Score: The score of the audit, can be null.
483	Score interface{} `json:"score,omitempty"`
484
485	// ScoreDisplayMode: The enumerated score display mode.
486	ScoreDisplayMode string `json:"scoreDisplayMode,omitempty"`
487
488	// Title: The human readable title.
489	Title string `json:"title,omitempty"`
490
491	// Warnings: Possible warnings that occurred in the audit, can be null.
492	Warnings interface{} `json:"warnings,omitempty"`
493
494	// ForceSendFields is a list of field names (e.g. "Description") to
495	// unconditionally include in API requests. By default, fields with
496	// empty values are omitted from API requests. However, any non-pointer,
497	// non-interface field appearing in ForceSendFields will be sent to the
498	// server regardless of whether the field is empty or not. This may be
499	// used to include empty fields in Patch requests.
500	ForceSendFields []string `json:"-"`
501
502	// NullFields is a list of field names (e.g. "Description") to include
503	// in API requests with the JSON null value. By default, fields with
504	// empty values are omitted from API requests. However, any field with
505	// an empty value appearing in NullFields will be sent to the server as
506	// null. It is an error if a field in this list has a non-empty value.
507	// This may be used to include null fields in Patch requests.
508	NullFields []string `json:"-"`
509}
510
511func (s *LighthouseAuditResultV5) MarshalJSON() ([]byte, error) {
512	type NoMethod LighthouseAuditResultV5
513	raw := NoMethod(*s)
514	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
515}
516
517func (s *LighthouseAuditResultV5) UnmarshalJSON(data []byte) error {
518	type NoMethod LighthouseAuditResultV5
519	var s1 struct {
520		NumericValue gensupport.JSONFloat64 `json:"numericValue"`
521		*NoMethod
522	}
523	s1.NoMethod = (*NoMethod)(s)
524	if err := json.Unmarshal(data, &s1); err != nil {
525		return err
526	}
527	s.NumericValue = float64(s1.NumericValue)
528	return nil
529}
530
531// LighthouseCategoryV5: A Lighthouse category.
532type LighthouseCategoryV5 struct {
533	// AuditRefs: An array of references to all the audit members of this
534	// category.
535	AuditRefs []*AuditRefs `json:"auditRefs,omitempty"`
536
537	// Description: A more detailed description of the category and its
538	// importance.
539	Description string `json:"description,omitempty"`
540
541	// Id: The string identifier of the category.
542	Id string `json:"id,omitempty"`
543
544	// ManualDescription: A description for the manual audits in the
545	// category.
546	ManualDescription string `json:"manualDescription,omitempty"`
547
548	// Score: The overall score of the category, the weighted average of all
549	// its audits.
550	// (The category's score, can be null.)
551	Score interface{} `json:"score,omitempty"`
552
553	// Title: The human-friendly name of the category.
554	Title string `json:"title,omitempty"`
555
556	// ForceSendFields is a list of field names (e.g. "AuditRefs") to
557	// unconditionally include in API requests. By default, fields with
558	// empty values are omitted from API requests. However, any non-pointer,
559	// non-interface field appearing in ForceSendFields will be sent to the
560	// server regardless of whether the field is empty or not. This may be
561	// used to include empty fields in Patch requests.
562	ForceSendFields []string `json:"-"`
563
564	// NullFields is a list of field names (e.g. "AuditRefs") to include in
565	// API requests with the JSON null value. By default, fields with empty
566	// values are omitted from API requests. However, any field with an
567	// empty value appearing in NullFields will be sent to the server as
568	// null. It is an error if a field in this list has a non-empty value.
569	// This may be used to include null fields in Patch requests.
570	NullFields []string `json:"-"`
571}
572
573func (s *LighthouseCategoryV5) MarshalJSON() ([]byte, error) {
574	type NoMethod LighthouseCategoryV5
575	raw := NoMethod(*s)
576	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
577}
578
579// LighthouseResultV5: The Lighthouse result object.
580type LighthouseResultV5 struct {
581	// Audits: Map of audits in the LHR.
582	Audits map[string]LighthouseAuditResultV5 `json:"audits,omitempty"`
583
584	// Categories: Map of categories in the LHR.
585	Categories *Categories `json:"categories,omitempty"`
586
587	// CategoryGroups: Map of category groups in the LHR.
588	CategoryGroups map[string]CategoryGroupV5 `json:"categoryGroups,omitempty"`
589
590	// ConfigSettings: The configuration settings for this LHR.
591	ConfigSettings *ConfigSettings `json:"configSettings,omitempty"`
592
593	// Environment: Environment settings that were used when making this
594	// LHR.
595	Environment *Environment `json:"environment,omitempty"`
596
597	// FetchTime: The time that this run was fetched.
598	FetchTime string `json:"fetchTime,omitempty"`
599
600	// FinalUrl: The final resolved url that was audited.
601	FinalUrl string `json:"finalUrl,omitempty"`
602
603	// I18n: The internationalization strings that are required to render
604	// the LHR.
605	I18n *I18n `json:"i18n,omitempty"`
606
607	// LighthouseVersion: The lighthouse version that was used to generate
608	// this LHR.
609	LighthouseVersion string `json:"lighthouseVersion,omitempty"`
610
611	// RequestedUrl: The original requested url.
612	RequestedUrl string `json:"requestedUrl,omitempty"`
613
614	// RunWarnings: List of all run warnings in the LHR.  Will always output
615	// to at least `[]`.
616	RunWarnings []interface{} `json:"runWarnings,omitempty"`
617
618	// RuntimeError: A top-level error message that, if present, indicates a
619	// serious enough
620	// problem that this Lighthouse result may need to be discarded.
621	RuntimeError *RuntimeError `json:"runtimeError,omitempty"`
622
623	// StackPacks: The Stack Pack advice strings.
624	StackPacks []*StackPack `json:"stackPacks,omitempty"`
625
626	// Timing: Timing information for this LHR.
627	Timing *Timing `json:"timing,omitempty"`
628
629	// UserAgent: The user agent that was used to run this LHR.
630	UserAgent string `json:"userAgent,omitempty"`
631
632	// ForceSendFields is a list of field names (e.g. "Audits") to
633	// unconditionally include in API requests. By default, fields with
634	// empty values are omitted from API requests. However, any non-pointer,
635	// non-interface field appearing in ForceSendFields will be sent to the
636	// server regardless of whether the field is empty or not. This may be
637	// used to include empty fields in Patch requests.
638	ForceSendFields []string `json:"-"`
639
640	// NullFields is a list of field names (e.g. "Audits") to include in API
641	// requests with the JSON null value. By default, fields with empty
642	// values are omitted from API requests. However, any field with an
643	// empty value appearing in NullFields will be sent to the server as
644	// null. It is an error if a field in this list has a non-empty value.
645	// This may be used to include null fields in Patch requests.
646	NullFields []string `json:"-"`
647}
648
649func (s *LighthouseResultV5) MarshalJSON() ([]byte, error) {
650	type NoMethod LighthouseResultV5
651	raw := NoMethod(*s)
652	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
653}
654
655// PagespeedApiLoadingExperienceV5: The CrUX loading experience object
656// that contains CrUX data breakdowns.
657type PagespeedApiLoadingExperienceV5 struct {
658	// Id: The url, pattern or origin which the metrics are on.
659	Id string `json:"id,omitempty"`
660
661	// InitialUrl: The requested URL, which may differ from the resolved
662	// "id".
663	InitialUrl string `json:"initial_url,omitempty"`
664
665	// Metrics: The map of <metrics, data>.
666	Metrics map[string]UserPageLoadMetricV5 `json:"metrics,omitempty"`
667
668	// OriginFallback: True if the result is an origin fallback from a page,
669	// false otherwise.
670	OriginFallback bool `json:"origin_fallback,omitempty"`
671
672	// OverallCategory: The human readable speed "category" of the id.
673	OverallCategory string `json:"overall_category,omitempty"`
674
675	// ForceSendFields is a list of field names (e.g. "Id") to
676	// unconditionally include in API requests. By default, fields with
677	// empty values are omitted from API requests. However, any non-pointer,
678	// non-interface field appearing in ForceSendFields will be sent to the
679	// server regardless of whether the field is empty or not. This may be
680	// used to include empty fields in Patch requests.
681	ForceSendFields []string `json:"-"`
682
683	// NullFields is a list of field names (e.g. "Id") to include in API
684	// requests with the JSON null value. By default, fields with empty
685	// values are omitted from API requests. However, any field with an
686	// empty value appearing in NullFields will be sent to the server as
687	// null. It is an error if a field in this list has a non-empty value.
688	// This may be used to include null fields in Patch requests.
689	NullFields []string `json:"-"`
690}
691
692func (s *PagespeedApiLoadingExperienceV5) MarshalJSON() ([]byte, error) {
693	type NoMethod PagespeedApiLoadingExperienceV5
694	raw := NoMethod(*s)
695	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
696}
697
698// PagespeedApiPagespeedResponseV5: The Pagespeed API response object.
699type PagespeedApiPagespeedResponseV5 struct {
700	// AnalysisUTCTimestamp: The UTC timestamp of this analysis.
701	AnalysisUTCTimestamp string `json:"analysisUTCTimestamp,omitempty"`
702
703	// CaptchaResult: The captcha verify result
704	CaptchaResult string `json:"captchaResult,omitempty"`
705
706	// Id: Canonicalized and final URL for the document, after following
707	// page
708	// redirects (if any).
709	Id string `json:"id,omitempty"`
710
711	// Kind: Kind of result.
712	Kind string `json:"kind,omitempty"`
713
714	// LighthouseResult: Lighthouse response for the audit url as an object.
715	LighthouseResult *LighthouseResultV5 `json:"lighthouseResult,omitempty"`
716
717	// LoadingExperience: Metrics of end users' page loading experience.
718	LoadingExperience *PagespeedApiLoadingExperienceV5 `json:"loadingExperience,omitempty"`
719
720	// OriginLoadingExperience: Metrics of the aggregated page loading
721	// experience of the origin
722	OriginLoadingExperience *PagespeedApiLoadingExperienceV5 `json:"originLoadingExperience,omitempty"`
723
724	// Version: The version of PageSpeed used to generate these results.
725	Version *PagespeedVersion `json:"version,omitempty"`
726
727	// ServerResponse contains the HTTP response code and headers from the
728	// server.
729	googleapi.ServerResponse `json:"-"`
730
731	// ForceSendFields is a list of field names (e.g.
732	// "AnalysisUTCTimestamp") to unconditionally include in API requests.
733	// By default, fields with empty values are omitted from API requests.
734	// However, any non-pointer, non-interface field appearing in
735	// ForceSendFields will be sent to the server regardless of whether the
736	// field is empty or not. This may be used to include empty fields in
737	// Patch requests.
738	ForceSendFields []string `json:"-"`
739
740	// NullFields is a list of field names (e.g. "AnalysisUTCTimestamp") to
741	// include in API requests with the JSON null value. By default, fields
742	// with empty values are omitted from API requests. However, any field
743	// with an empty value appearing in NullFields will be sent to the
744	// server as null. It is an error if a field in this list has a
745	// non-empty value. This may be used to include null fields in Patch
746	// requests.
747	NullFields []string `json:"-"`
748}
749
750func (s *PagespeedApiPagespeedResponseV5) MarshalJSON() ([]byte, error) {
751	type NoMethod PagespeedApiPagespeedResponseV5
752	raw := NoMethod(*s)
753	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
754}
755
756// PagespeedVersion: The Pagespeed Version object.
757type PagespeedVersion struct {
758	// Major: The major version number of PageSpeed used to generate these
759	// results.
760	Major string `json:"major,omitempty"`
761
762	// Minor: The minor version number of PageSpeed used to generate these
763	// results.
764	Minor string `json:"minor,omitempty"`
765
766	// ForceSendFields is a list of field names (e.g. "Major") to
767	// unconditionally include in API requests. By default, fields with
768	// empty values are omitted from API requests. However, any non-pointer,
769	// non-interface field appearing in ForceSendFields will be sent to the
770	// server regardless of whether the field is empty or not. This may be
771	// used to include empty fields in Patch requests.
772	ForceSendFields []string `json:"-"`
773
774	// NullFields is a list of field names (e.g. "Major") to include in API
775	// requests with the JSON null value. By default, fields with empty
776	// values are omitted from API requests. However, any field with an
777	// empty value appearing in NullFields will be sent to the server as
778	// null. It is an error if a field in this list has a non-empty value.
779	// This may be used to include null fields in Patch requests.
780	NullFields []string `json:"-"`
781}
782
783func (s *PagespeedVersion) MarshalJSON() ([]byte, error) {
784	type NoMethod PagespeedVersion
785	raw := NoMethod(*s)
786	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
787}
788
789// RendererFormattedStrings: Message holding the formatted strings used
790// in the renderer.
791type RendererFormattedStrings struct {
792	// AuditGroupExpandTooltip: The tooltip text on an expandable chevron
793	// icon.
794	AuditGroupExpandTooltip string `json:"auditGroupExpandTooltip,omitempty"`
795
796	// CrcInitialNavigation: The label for the initial request in a critical
797	// request chain.
798	CrcInitialNavigation string `json:"crcInitialNavigation,omitempty"`
799
800	// CrcLongestDurationLabel: The label for values shown in the summary of
801	// critical request chains.
802	CrcLongestDurationLabel string `json:"crcLongestDurationLabel,omitempty"`
803
804	// ErrorLabel: The label shown next to an audit or metric that has had
805	// an error.
806	ErrorLabel string `json:"errorLabel,omitempty"`
807
808	// ErrorMissingAuditInfo: The error string shown next to an erroring
809	// audit.
810	ErrorMissingAuditInfo string `json:"errorMissingAuditInfo,omitempty"`
811
812	// LabDataTitle: The title of the lab data performance category.
813	LabDataTitle string `json:"labDataTitle,omitempty"`
814
815	// LsPerformanceCategoryDescription: The disclaimer shown under
816	// performance explaning that the network can
817	// vary.
818	LsPerformanceCategoryDescription string `json:"lsPerformanceCategoryDescription,omitempty"`
819
820	// ManualAuditsGroupTitle: The heading shown above a list of audits that
821	// were not computerd in the
822	// run.
823	ManualAuditsGroupTitle string `json:"manualAuditsGroupTitle,omitempty"`
824
825	// NotApplicableAuditsGroupTitle: The heading shown above a list of
826	// audits that do not apply to a page.
827	NotApplicableAuditsGroupTitle string `json:"notApplicableAuditsGroupTitle,omitempty"`
828
829	// OpportunityResourceColumnLabel: The heading for the estimated page
830	// load savings opportunity of an
831	// audit.
832	OpportunityResourceColumnLabel string `json:"opportunityResourceColumnLabel,omitempty"`
833
834	// OpportunitySavingsColumnLabel: The heading for the estimated page
835	// load savings of opportunity audits.
836	OpportunitySavingsColumnLabel string `json:"opportunitySavingsColumnLabel,omitempty"`
837
838	// PassedAuditsGroupTitle: The heading that is shown above a list of
839	// audits that are passing.
840	PassedAuditsGroupTitle string `json:"passedAuditsGroupTitle,omitempty"`
841
842	// ScorescaleLabel: The label that explains the score gauges scale
843	// (0-49, 50-89, 90-100).
844	ScorescaleLabel string `json:"scorescaleLabel,omitempty"`
845
846	// ToplevelWarningsMessage: The label shown preceding important warnings
847	// that may have invalidated
848	// an entire report.
849	ToplevelWarningsMessage string `json:"toplevelWarningsMessage,omitempty"`
850
851	// VarianceDisclaimer: The disclaimer shown below a performance metric
852	// value.
853	VarianceDisclaimer string `json:"varianceDisclaimer,omitempty"`
854
855	// WarningHeader: The label shown above a bulleted list of warnings.
856	WarningHeader string `json:"warningHeader,omitempty"`
857
858	// ForceSendFields is a list of field names (e.g.
859	// "AuditGroupExpandTooltip") to unconditionally include in API
860	// requests. By default, fields with empty values are omitted from API
861	// requests. However, any non-pointer, non-interface field appearing in
862	// ForceSendFields will be sent to the server regardless of whether the
863	// field is empty or not. This may be used to include empty fields in
864	// Patch requests.
865	ForceSendFields []string `json:"-"`
866
867	// NullFields is a list of field names (e.g. "AuditGroupExpandTooltip")
868	// to include in API requests with the JSON null value. By default,
869	// fields with empty values are omitted from API requests. However, any
870	// field with an empty value appearing in NullFields will be sent to the
871	// server as null. It is an error if a field in this list has a
872	// non-empty value. This may be used to include null fields in Patch
873	// requests.
874	NullFields []string `json:"-"`
875}
876
877func (s *RendererFormattedStrings) MarshalJSON() ([]byte, error) {
878	type NoMethod RendererFormattedStrings
879	raw := NoMethod(*s)
880	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
881}
882
883// RuntimeError: Message containing a runtime error config.
884type RuntimeError struct {
885	// Code: The enumerated Lighthouse Error code.
886	Code string `json:"code,omitempty"`
887
888	// Message: A human readable message explaining the error code.
889	Message string `json:"message,omitempty"`
890
891	// ForceSendFields is a list of field names (e.g. "Code") to
892	// unconditionally include in API requests. By default, fields with
893	// empty values are omitted from API requests. However, any non-pointer,
894	// non-interface field appearing in ForceSendFields will be sent to the
895	// server regardless of whether the field is empty or not. This may be
896	// used to include empty fields in Patch requests.
897	ForceSendFields []string `json:"-"`
898
899	// NullFields is a list of field names (e.g. "Code") to include in API
900	// requests with the JSON null value. By default, fields with empty
901	// values are omitted from API requests. However, any field with an
902	// empty value appearing in NullFields will be sent to the server as
903	// null. It is an error if a field in this list has a non-empty value.
904	// This may be used to include null fields in Patch requests.
905	NullFields []string `json:"-"`
906}
907
908func (s *RuntimeError) MarshalJSON() ([]byte, error) {
909	type NoMethod RuntimeError
910	raw := NoMethod(*s)
911	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
912}
913
914// StackPack: Message containing Stack Pack information.
915type StackPack struct {
916	// Descriptions: The stack pack advice strings.
917	Descriptions map[string]string `json:"descriptions,omitempty"`
918
919	// IconDataURL: The stack pack icon data uri.
920	IconDataURL string `json:"iconDataURL,omitempty"`
921
922	// Id: The stack pack id.
923	Id string `json:"id,omitempty"`
924
925	// Title: The stack pack title.
926	Title string `json:"title,omitempty"`
927
928	// ForceSendFields is a list of field names (e.g. "Descriptions") to
929	// unconditionally include in API requests. By default, fields with
930	// empty values are omitted from API requests. However, any non-pointer,
931	// non-interface field appearing in ForceSendFields will be sent to the
932	// server regardless of whether the field is empty or not. This may be
933	// used to include empty fields in Patch requests.
934	ForceSendFields []string `json:"-"`
935
936	// NullFields is a list of field names (e.g. "Descriptions") to include
937	// in API requests with the JSON null value. By default, fields with
938	// empty values are omitted from API requests. However, any field with
939	// an empty value appearing in NullFields will be sent to the server as
940	// null. It is an error if a field in this list has a non-empty value.
941	// This may be used to include null fields in Patch requests.
942	NullFields []string `json:"-"`
943}
944
945func (s *StackPack) MarshalJSON() ([]byte, error) {
946	type NoMethod StackPack
947	raw := NoMethod(*s)
948	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
949}
950
951// Timing: Message containing the performance timing data for the
952// Lighthouse run.
953type Timing struct {
954	// Total: The total duration of Lighthouse's run.
955	Total float64 `json:"total,omitempty"`
956
957	// ForceSendFields is a list of field names (e.g. "Total") to
958	// unconditionally include in API requests. By default, fields with
959	// empty values are omitted from API requests. However, any non-pointer,
960	// non-interface field appearing in ForceSendFields will be sent to the
961	// server regardless of whether the field is empty or not. This may be
962	// used to include empty fields in Patch requests.
963	ForceSendFields []string `json:"-"`
964
965	// NullFields is a list of field names (e.g. "Total") to include in API
966	// requests with the JSON null value. By default, fields with empty
967	// values are omitted from API requests. However, any field with an
968	// empty value appearing in NullFields will be sent to the server as
969	// null. It is an error if a field in this list has a non-empty value.
970	// This may be used to include null fields in Patch requests.
971	NullFields []string `json:"-"`
972}
973
974func (s *Timing) MarshalJSON() ([]byte, error) {
975	type NoMethod Timing
976	raw := NoMethod(*s)
977	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
978}
979
980func (s *Timing) UnmarshalJSON(data []byte) error {
981	type NoMethod Timing
982	var s1 struct {
983		Total gensupport.JSONFloat64 `json:"total"`
984		*NoMethod
985	}
986	s1.NoMethod = (*NoMethod)(s)
987	if err := json.Unmarshal(data, &s1); err != nil {
988		return err
989	}
990	s.Total = float64(s1.Total)
991	return nil
992}
993
994// UserPageLoadMetricV5: A CrUX metric object for a single metric and
995// form factor.
996type UserPageLoadMetricV5 struct {
997	// Category: The category of the specific time metric.
998	Category string `json:"category,omitempty"`
999
1000	// Distributions: Metric distributions. Proportions should sum up to 1.
1001	Distributions []*Bucket `json:"distributions,omitempty"`
1002
1003	// FormFactor: Identifies the form factor of the metric being collected.
1004	FormFactor string `json:"formFactor,omitempty"`
1005
1006	// Median: The median number of the metric, in millisecond.
1007	Median int64 `json:"median,omitempty"`
1008
1009	// MetricId: Identifies the type of the metric.
1010	MetricId string `json:"metricId,omitempty"`
1011
1012	// Percentile: We use this field to store certain percentile value for
1013	// this metric.
1014	// For v4, this field contains pc50.
1015	// For v5, this field contains pc90.
1016	Percentile int64 `json:"percentile,omitempty"`
1017
1018	// ForceSendFields is a list of field names (e.g. "Category") to
1019	// unconditionally include in API requests. By default, fields with
1020	// empty values are omitted from API requests. However, any non-pointer,
1021	// non-interface field appearing in ForceSendFields will be sent to the
1022	// server regardless of whether the field is empty or not. This may be
1023	// used to include empty fields in Patch requests.
1024	ForceSendFields []string `json:"-"`
1025
1026	// NullFields is a list of field names (e.g. "Category") to include in
1027	// API requests with the JSON null value. By default, fields with empty
1028	// values are omitted from API requests. However, any field with an
1029	// empty value appearing in NullFields will be sent to the server as
1030	// null. It is an error if a field in this list has a non-empty value.
1031	// This may be used to include null fields in Patch requests.
1032	NullFields []string `json:"-"`
1033}
1034
1035func (s *UserPageLoadMetricV5) MarshalJSON() ([]byte, error) {
1036	type NoMethod UserPageLoadMetricV5
1037	raw := NoMethod(*s)
1038	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
1039}
1040
1041// method id "pagespeedonline.pagespeedapi.runpagespeed":
1042
1043type PagespeedapiRunpagespeedCall struct {
1044	s            *Service
1045	urlParams_   gensupport.URLParams
1046	ifNoneMatch_ string
1047	ctx_         context.Context
1048	header_      http.Header
1049}
1050
1051// Runpagespeed: Runs PageSpeed analysis on the page at the specified
1052// URL, and returns
1053// PageSpeed scores, a list of suggestions to make that page faster, and
1054// other
1055// information.
1056func (r *PagespeedapiService) Runpagespeed() *PagespeedapiRunpagespeedCall {
1057	c := &PagespeedapiRunpagespeedCall{s: r.s, urlParams_: make(gensupport.URLParams)}
1058	return c
1059}
1060
1061// CaptchaToken sets the optional parameter "captchaToken": The captcha
1062// token passed when filling out a captcha.
1063func (c *PagespeedapiRunpagespeedCall) CaptchaToken(captchaToken string) *PagespeedapiRunpagespeedCall {
1064	c.urlParams_.Set("captchaToken", captchaToken)
1065	return c
1066}
1067
1068// Category sets the optional parameter "category": A Lighthouse
1069// category to run; if none are given, only Performance category
1070// will be run
1071//
1072// Possible values:
1073//   "CATEGORY_UNSPECIFIED"
1074//   "ACCESSIBILITY"
1075//   "BEST_PRACTICES"
1076//   "PERFORMANCE"
1077//   "PWA"
1078//   "SEO"
1079func (c *PagespeedapiRunpagespeedCall) Category(category ...string) *PagespeedapiRunpagespeedCall {
1080	c.urlParams_.SetMulti("category", append([]string{}, category...))
1081	return c
1082}
1083
1084// Locale sets the optional parameter "locale": The locale used to
1085// localize formatted results
1086func (c *PagespeedapiRunpagespeedCall) Locale(locale string) *PagespeedapiRunpagespeedCall {
1087	c.urlParams_.Set("locale", locale)
1088	return c
1089}
1090
1091// Strategy sets the optional parameter "strategy": The analysis
1092// strategy (desktop or mobile) to use, and desktop is the
1093// default
1094//
1095// Possible values:
1096//   "STRATEGY_UNSPECIFIED"
1097//   "DESKTOP"
1098//   "MOBILE"
1099func (c *PagespeedapiRunpagespeedCall) Strategy(strategy string) *PagespeedapiRunpagespeedCall {
1100	c.urlParams_.Set("strategy", strategy)
1101	return c
1102}
1103
1104// Url sets the optional parameter "url": The URL to fetch and analyze
1105func (c *PagespeedapiRunpagespeedCall) Url(url string) *PagespeedapiRunpagespeedCall {
1106	c.urlParams_.Set("url", url)
1107	return c
1108}
1109
1110// UtmCampaign sets the optional parameter "utm_campaign": Campaign name
1111// for analytics.
1112func (c *PagespeedapiRunpagespeedCall) UtmCampaign(utmCampaign string) *PagespeedapiRunpagespeedCall {
1113	c.urlParams_.Set("utm_campaign", utmCampaign)
1114	return c
1115}
1116
1117// UtmSource sets the optional parameter "utm_source": Campaign source
1118// for analytics.
1119func (c *PagespeedapiRunpagespeedCall) UtmSource(utmSource string) *PagespeedapiRunpagespeedCall {
1120	c.urlParams_.Set("utm_source", utmSource)
1121	return c
1122}
1123
1124// Fields allows partial responses to be retrieved. See
1125// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
1126// for more information.
1127func (c *PagespeedapiRunpagespeedCall) Fields(s ...googleapi.Field) *PagespeedapiRunpagespeedCall {
1128	c.urlParams_.Set("fields", googleapi.CombineFields(s))
1129	return c
1130}
1131
1132// IfNoneMatch sets the optional parameter which makes the operation
1133// fail if the object's ETag matches the given value. This is useful for
1134// getting updates only after the object has changed since the last
1135// request. Use googleapi.IsNotModified to check whether the response
1136// error from Do is the result of In-None-Match.
1137func (c *PagespeedapiRunpagespeedCall) IfNoneMatch(entityTag string) *PagespeedapiRunpagespeedCall {
1138	c.ifNoneMatch_ = entityTag
1139	return c
1140}
1141
1142// Context sets the context to be used in this call's Do method. Any
1143// pending HTTP request will be aborted if the provided context is
1144// canceled.
1145func (c *PagespeedapiRunpagespeedCall) Context(ctx context.Context) *PagespeedapiRunpagespeedCall {
1146	c.ctx_ = ctx
1147	return c
1148}
1149
1150// Header returns an http.Header that can be modified by the caller to
1151// add HTTP headers to the request.
1152func (c *PagespeedapiRunpagespeedCall) Header() http.Header {
1153	if c.header_ == nil {
1154		c.header_ = make(http.Header)
1155	}
1156	return c.header_
1157}
1158
1159func (c *PagespeedapiRunpagespeedCall) doRequest(alt string) (*http.Response, error) {
1160	reqHeaders := make(http.Header)
1161	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200707")
1162	for k, v := range c.header_ {
1163		reqHeaders[k] = v
1164	}
1165	reqHeaders.Set("User-Agent", c.s.userAgent())
1166	if c.ifNoneMatch_ != "" {
1167		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
1168	}
1169	var body io.Reader = nil
1170	c.urlParams_.Set("alt", alt)
1171	c.urlParams_.Set("prettyPrint", "false")
1172	urls := googleapi.ResolveRelative(c.s.BasePath, "pagespeedonline/v5/runPagespeed")
1173	urls += "?" + c.urlParams_.Encode()
1174	req, err := http.NewRequest("GET", urls, body)
1175	if err != nil {
1176		return nil, err
1177	}
1178	req.Header = reqHeaders
1179	return gensupport.SendRequest(c.ctx_, c.s.client, req)
1180}
1181
1182// Do executes the "pagespeedonline.pagespeedapi.runpagespeed" call.
1183// Exactly one of *PagespeedApiPagespeedResponseV5 or error will be
1184// non-nil. Any non-2xx status code is an error. Response headers are in
1185// either *PagespeedApiPagespeedResponseV5.ServerResponse.Header or (if
1186// a response was returned at all) in error.(*googleapi.Error).Header.
1187// Use googleapi.IsNotModified to check whether the returned error was
1188// because http.StatusNotModified was returned.
1189func (c *PagespeedapiRunpagespeedCall) Do(opts ...googleapi.CallOption) (*PagespeedApiPagespeedResponseV5, error) {
1190	gensupport.SetOptions(c.urlParams_, opts...)
1191	res, err := c.doRequest("json")
1192	if res != nil && res.StatusCode == http.StatusNotModified {
1193		if res.Body != nil {
1194			res.Body.Close()
1195		}
1196		return nil, &googleapi.Error{
1197			Code:   res.StatusCode,
1198			Header: res.Header,
1199		}
1200	}
1201	if err != nil {
1202		return nil, err
1203	}
1204	defer googleapi.CloseBody(res)
1205	if err := googleapi.CheckResponse(res); err != nil {
1206		return nil, err
1207	}
1208	ret := &PagespeedApiPagespeedResponseV5{
1209		ServerResponse: googleapi.ServerResponse{
1210			Header:         res.Header,
1211			HTTPStatusCode: res.StatusCode,
1212		},
1213	}
1214	target := &ret
1215	if err := gensupport.DecodeResponse(target, res); err != nil {
1216		return nil, err
1217	}
1218	return ret, nil
1219	// {
1220	//   "description": "Runs PageSpeed analysis on the page at the specified URL, and returns\nPageSpeed scores, a list of suggestions to make that page faster, and other\ninformation.",
1221	//   "flatPath": "pagespeedonline/v5/runPagespeed",
1222	//   "httpMethod": "GET",
1223	//   "id": "pagespeedonline.pagespeedapi.runpagespeed",
1224	//   "parameterOrder": [],
1225	//   "parameters": {
1226	//     "captchaToken": {
1227	//       "description": "The captcha token passed when filling out a captcha.",
1228	//       "location": "query",
1229	//       "type": "string"
1230	//     },
1231	//     "category": {
1232	//       "description": "A Lighthouse category to run; if none are given, only Performance category\nwill be run",
1233	//       "enum": [
1234	//         "CATEGORY_UNSPECIFIED",
1235	//         "ACCESSIBILITY",
1236	//         "BEST_PRACTICES",
1237	//         "PERFORMANCE",
1238	//         "PWA",
1239	//         "SEO"
1240	//       ],
1241	//       "location": "query",
1242	//       "repeated": true,
1243	//       "type": "string"
1244	//     },
1245	//     "locale": {
1246	//       "description": "The locale used to localize formatted results",
1247	//       "location": "query",
1248	//       "type": "string"
1249	//     },
1250	//     "strategy": {
1251	//       "description": "The analysis strategy (desktop or mobile) to use, and desktop is the\ndefault",
1252	//       "enum": [
1253	//         "STRATEGY_UNSPECIFIED",
1254	//         "DESKTOP",
1255	//         "MOBILE"
1256	//       ],
1257	//       "location": "query",
1258	//       "type": "string"
1259	//     },
1260	//     "url": {
1261	//       "description": "The URL to fetch and analyze",
1262	//       "location": "query",
1263	//       "type": "string"
1264	//     },
1265	//     "utm_campaign": {
1266	//       "description": "Campaign name for analytics.",
1267	//       "location": "query",
1268	//       "type": "string"
1269	//     },
1270	//     "utm_source": {
1271	//       "description": "Campaign source for analytics.",
1272	//       "location": "query",
1273	//       "type": "string"
1274	//     }
1275	//   },
1276	//   "path": "pagespeedonline/v5/runPagespeed",
1277	//   "response": {
1278	//     "$ref": "PagespeedApiPagespeedResponseV5"
1279	//   },
1280	//   "scopes": [
1281	//     "openid"
1282	//   ]
1283	// }
1284
1285}
1286