| // Copyright 2020 Google LLC. | 
 | // Use of this source code is governed by a BSD-style | 
 | // license that can be found in the LICENSE file. | 
 |  | 
 | // Code generated file. DO NOT EDIT. | 
 |  | 
 | // Package pagespeedonline provides access to the PageSpeed Insights API. | 
 | // | 
 | // For product documentation, see: https://developers.google.com/speed/docs/insights/v5/about | 
 | // | 
 | // Creating a client | 
 | // | 
 | // Usage example: | 
 | // | 
 | //   import "google.golang.org/api/pagespeedonline/v5" | 
 | //   ... | 
 | //   ctx := context.Background() | 
 | //   pagespeedonlineService, err := pagespeedonline.NewService(ctx) | 
 | // | 
 | // In this example, Google Application Default Credentials are used for authentication. | 
 | // | 
 | // For information on how to create and obtain Application Default Credentials, see https://developers.google.com/identity/protocols/application-default-credentials. | 
 | // | 
 | // Other authentication options | 
 | // | 
 | // To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey: | 
 | // | 
 | //   pagespeedonlineService, err := pagespeedonline.NewService(ctx, option.WithAPIKey("AIza...")) | 
 | // | 
 | // To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource: | 
 | // | 
 | //   config := &oauth2.Config{...} | 
 | //   // ... | 
 | //   token, err := config.Exchange(ctx, ...) | 
 | //   pagespeedonlineService, err := pagespeedonline.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token))) | 
 | // | 
 | // See https://godoc.org/google.golang.org/api/option/ for details on options. | 
 | package pagespeedonline // import "google.golang.org/api/pagespeedonline/v5" | 
 |  | 
 | import ( | 
 | 	"bytes" | 
 | 	"context" | 
 | 	"encoding/json" | 
 | 	"errors" | 
 | 	"fmt" | 
 | 	"io" | 
 | 	"net/http" | 
 | 	"net/url" | 
 | 	"strconv" | 
 | 	"strings" | 
 |  | 
 | 	googleapi "google.golang.org/api/googleapi" | 
 | 	gensupport "google.golang.org/api/internal/gensupport" | 
 | 	option "google.golang.org/api/option" | 
 | 	internaloption "google.golang.org/api/option/internaloption" | 
 | 	htransport "google.golang.org/api/transport/http" | 
 | ) | 
 |  | 
 | // Always reference these packages, just in case the auto-generated code | 
 | // below doesn't. | 
 | var _ = bytes.NewBuffer | 
 | var _ = strconv.Itoa | 
 | var _ = fmt.Sprintf | 
 | var _ = json.NewDecoder | 
 | var _ = io.Copy | 
 | var _ = url.Parse | 
 | var _ = gensupport.MarshalJSON | 
 | var _ = googleapi.Version | 
 | var _ = errors.New | 
 | var _ = strings.Replace | 
 | var _ = context.Canceled | 
 | var _ = internaloption.WithDefaultEndpoint | 
 |  | 
 | const apiId = "pagespeedonline:v5" | 
 | const apiName = "pagespeedonline" | 
 | const apiVersion = "v5" | 
 | const basePath = "https://pagespeedonline.googleapis.com/" | 
 |  | 
 | // OAuth2 scopes used by this API. | 
 | const ( | 
 | 	// Associate you with your personal info on Google | 
 | 	OpenIDScope = "openid" | 
 | ) | 
 |  | 
 | // NewService creates a new Service. | 
 | func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) { | 
 | 	scopesOption := option.WithScopes( | 
 | 		"openid", | 
 | 	) | 
 | 	// NOTE: prepend, so we don't override user-specified scopes. | 
 | 	opts = append([]option.ClientOption{scopesOption}, opts...) | 
 | 	opts = append(opts, internaloption.WithDefaultEndpoint(basePath)) | 
 | 	client, endpoint, err := htransport.NewClient(ctx, opts...) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	s, err := New(client) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	if endpoint != "" { | 
 | 		s.BasePath = endpoint | 
 | 	} | 
 | 	return s, nil | 
 | } | 
 |  | 
 | // New creates a new Service. It uses the provided http.Client for requests. | 
 | // | 
 | // Deprecated: please use NewService instead. | 
 | // To provide a custom HTTP client, use option.WithHTTPClient. | 
 | // If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead. | 
 | func New(client *http.Client) (*Service, error) { | 
 | 	if client == nil { | 
 | 		return nil, errors.New("client is nil") | 
 | 	} | 
 | 	s := &Service{client: client, BasePath: basePath} | 
 | 	s.Pagespeedapi = NewPagespeedapiService(s) | 
 | 	return s, nil | 
 | } | 
 |  | 
 | type Service struct { | 
 | 	client    *http.Client | 
 | 	BasePath  string // API endpoint base URL | 
 | 	UserAgent string // optional additional User-Agent fragment | 
 |  | 
 | 	Pagespeedapi *PagespeedapiService | 
 | } | 
 |  | 
 | func (s *Service) userAgent() string { | 
 | 	if s.UserAgent == "" { | 
 | 		return googleapi.UserAgent | 
 | 	} | 
 | 	return googleapi.UserAgent + " " + s.UserAgent | 
 | } | 
 |  | 
 | func NewPagespeedapiService(s *Service) *PagespeedapiService { | 
 | 	rs := &PagespeedapiService{s: s} | 
 | 	return rs | 
 | } | 
 |  | 
 | type PagespeedapiService struct { | 
 | 	s *Service | 
 | } | 
 |  | 
 | // AuditRefs: A light reference to an audit by id, used to group and | 
 | // weight audits in a | 
 | // given category. | 
 | type AuditRefs struct { | 
 | 	// Group: The category group that the audit belongs to (optional). | 
 | 	Group string `json:"group,omitempty"` | 
 |  | 
 | 	// Id: The audit ref id. | 
 | 	Id string `json:"id,omitempty"` | 
 |  | 
 | 	// Weight: The weight this audit's score has on the overall category | 
 | 	// score. | 
 | 	Weight float64 `json:"weight,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Group") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Group") to include in API | 
 | 	// requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *AuditRefs) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod AuditRefs | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | func (s *AuditRefs) UnmarshalJSON(data []byte) error { | 
 | 	type NoMethod AuditRefs | 
 | 	var s1 struct { | 
 | 		Weight gensupport.JSONFloat64 `json:"weight"` | 
 | 		*NoMethod | 
 | 	} | 
 | 	s1.NoMethod = (*NoMethod)(s) | 
 | 	if err := json.Unmarshal(data, &s1); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	s.Weight = float64(s1.Weight) | 
 | 	return nil | 
 | } | 
 |  | 
 | // Bucket: A proportion of data in the total distribution, bucketed by a | 
 | // min/max | 
 | // percentage. Each bucket's range is bounded by min <= x < max, | 
 | // In | 
 | // millisecond. | 
 | type Bucket struct { | 
 | 	// Max: Upper bound for a bucket's range. | 
 | 	Max int64 `json:"max,omitempty"` | 
 |  | 
 | 	// Min: Lower bound for a bucket's range. | 
 | 	Min int64 `json:"min,omitempty"` | 
 |  | 
 | 	// Proportion: The proportion of data in this bucket. | 
 | 	Proportion float64 `json:"proportion,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Max") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Max") to include in API | 
 | 	// requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *Bucket) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod Bucket | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | func (s *Bucket) UnmarshalJSON(data []byte) error { | 
 | 	type NoMethod Bucket | 
 | 	var s1 struct { | 
 | 		Proportion gensupport.JSONFloat64 `json:"proportion"` | 
 | 		*NoMethod | 
 | 	} | 
 | 	s1.NoMethod = (*NoMethod)(s) | 
 | 	if err := json.Unmarshal(data, &s1); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	s.Proportion = float64(s1.Proportion) | 
 | 	return nil | 
 | } | 
 |  | 
 | // Categories: The categories in a Lighthouse run. | 
 | type Categories struct { | 
 | 	// Accessibility: The accessibility category, containing all | 
 | 	// accessibility related audits. | 
 | 	Accessibility *LighthouseCategoryV5 `json:"accessibility,omitempty"` | 
 |  | 
 | 	// BestPractices: The best practices category, containing all best | 
 | 	// practices related | 
 | 	// audits. | 
 | 	BestPractices *LighthouseCategoryV5 `json:"best-practices,omitempty"` | 
 |  | 
 | 	// Performance: The performance category, containing all performance | 
 | 	// related audits. | 
 | 	Performance *LighthouseCategoryV5 `json:"performance,omitempty"` | 
 |  | 
 | 	// Pwa: The Progressive-Web-App (PWA) category, containing all pwa | 
 | 	// related | 
 | 	// audits. | 
 | 	Pwa *LighthouseCategoryV5 `json:"pwa,omitempty"` | 
 |  | 
 | 	// Seo: The Search-Engine-Optimization (SEO) category, containing all | 
 | 	// seo related | 
 | 	// audits. | 
 | 	Seo *LighthouseCategoryV5 `json:"seo,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Accessibility") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Accessibility") to include | 
 | 	// in API requests with the JSON null value. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any field with | 
 | 	// an empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *Categories) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod Categories | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // CategoryGroupV5: Message containing a category | 
 | type CategoryGroupV5 struct { | 
 | 	// Description: The description of what the category is grouping | 
 | 	Description string `json:"description,omitempty"` | 
 |  | 
 | 	// Title: The human readable title of the group | 
 | 	Title string `json:"title,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Description") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Description") to include | 
 | 	// in API requests with the JSON null value. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any field with | 
 | 	// an empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *CategoryGroupV5) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod CategoryGroupV5 | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // ConfigSettings: Message containing the configuration settings for the | 
 | // Lighthouse run. | 
 | type ConfigSettings struct { | 
 | 	// Channel: How Lighthouse was run, e.g. from the Chrome extension or | 
 | 	// from the npm | 
 | 	// module. | 
 | 	Channel string `json:"channel,omitempty"` | 
 |  | 
 | 	// EmulatedFormFactor: The form factor the emulation should use. | 
 | 	EmulatedFormFactor string `json:"emulatedFormFactor,omitempty"` | 
 |  | 
 | 	// Locale: The locale setting. | 
 | 	Locale string `json:"locale,omitempty"` | 
 |  | 
 | 	// OnlyCategories: List of categories of audits the run should conduct. | 
 | 	OnlyCategories interface{} `json:"onlyCategories,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Channel") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Channel") to include in | 
 | 	// API requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *ConfigSettings) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod ConfigSettings | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // Environment: Message containing environment configuration for a | 
 | // Lighthouse run. | 
 | type Environment struct { | 
 | 	// BenchmarkIndex: The benchmark index number that indicates rough | 
 | 	// device class. | 
 | 	BenchmarkIndex float64 `json:"benchmarkIndex,omitempty"` | 
 |  | 
 | 	// HostUserAgent: The user agent string of the version of Chrome used. | 
 | 	HostUserAgent string `json:"hostUserAgent,omitempty"` | 
 |  | 
 | 	// NetworkUserAgent: The user agent string that was sent over the | 
 | 	// network. | 
 | 	NetworkUserAgent string `json:"networkUserAgent,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "BenchmarkIndex") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "BenchmarkIndex") to | 
 | 	// include in API requests with the JSON null value. By default, fields | 
 | 	// with empty values are omitted from API requests. However, any field | 
 | 	// with an empty value appearing in NullFields will be sent to the | 
 | 	// server as null. It is an error if a field in this list has a | 
 | 	// non-empty value. This may be used to include null fields in Patch | 
 | 	// requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *Environment) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod Environment | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | func (s *Environment) UnmarshalJSON(data []byte) error { | 
 | 	type NoMethod Environment | 
 | 	var s1 struct { | 
 | 		BenchmarkIndex gensupport.JSONFloat64 `json:"benchmarkIndex"` | 
 | 		*NoMethod | 
 | 	} | 
 | 	s1.NoMethod = (*NoMethod)(s) | 
 | 	if err := json.Unmarshal(data, &s1); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	s.BenchmarkIndex = float64(s1.BenchmarkIndex) | 
 | 	return nil | 
 | } | 
 |  | 
 | // I18n: Message containing the i18n data for the LHR - Version 1. | 
 | type I18n struct { | 
 | 	// RendererFormattedStrings: Internationalized strings that are | 
 | 	// formatted to the locale in | 
 | 	// configSettings. | 
 | 	RendererFormattedStrings *RendererFormattedStrings `json:"rendererFormattedStrings,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. | 
 | 	// "RendererFormattedStrings") to unconditionally include in API | 
 | 	// requests. By default, fields with empty values are omitted from API | 
 | 	// requests. However, any non-pointer, non-interface field appearing in | 
 | 	// ForceSendFields will be sent to the server regardless of whether the | 
 | 	// field is empty or not. This may be used to include empty fields in | 
 | 	// Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "RendererFormattedStrings") | 
 | 	// to include in API requests with the JSON null value. By default, | 
 | 	// fields with empty values are omitted from API requests. However, any | 
 | 	// field with an empty value appearing in NullFields will be sent to the | 
 | 	// server as null. It is an error if a field in this list has a | 
 | 	// non-empty value. This may be used to include null fields in Patch | 
 | 	// requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *I18n) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod I18n | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // LighthouseAuditResultV5: An audit's result object in a Lighthouse | 
 | // result. | 
 | type LighthouseAuditResultV5 struct { | 
 | 	// Description: The description of the audit. | 
 | 	Description string `json:"description,omitempty"` | 
 |  | 
 | 	// Details: Freeform details section of the audit. | 
 | 	Details googleapi.RawMessage `json:"details,omitempty"` | 
 |  | 
 | 	// DisplayValue: The value that should be displayed on the UI for this | 
 | 	// audit. | 
 | 	DisplayValue string `json:"displayValue,omitempty"` | 
 |  | 
 | 	// ErrorMessage: An error message from a thrown error inside the audit. | 
 | 	ErrorMessage string `json:"errorMessage,omitempty"` | 
 |  | 
 | 	// Explanation: An explanation of the errors in the audit. | 
 | 	Explanation string `json:"explanation,omitempty"` | 
 |  | 
 | 	// Id: The audit's id. | 
 | 	Id string `json:"id,omitempty"` | 
 |  | 
 | 	// NumericValue: A numeric value that has a meaning specific to the | 
 | 	// audit, e.g. the number | 
 | 	// of nodes in the DOM or the timestamp of a specific load event. | 
 | 	// More | 
 | 	// information can be found in the audit details, if present. | 
 | 	NumericValue float64 `json:"numericValue,omitempty"` | 
 |  | 
 | 	// Score: The score of the audit, can be null. | 
 | 	Score interface{} `json:"score,omitempty"` | 
 |  | 
 | 	// ScoreDisplayMode: The enumerated score display mode. | 
 | 	ScoreDisplayMode string `json:"scoreDisplayMode,omitempty"` | 
 |  | 
 | 	// Title: The human readable title. | 
 | 	Title string `json:"title,omitempty"` | 
 |  | 
 | 	// Warnings: Possible warnings that occurred in the audit, can be null. | 
 | 	Warnings interface{} `json:"warnings,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Description") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Description") to include | 
 | 	// in API requests with the JSON null value. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any field with | 
 | 	// an empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *LighthouseAuditResultV5) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod LighthouseAuditResultV5 | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | func (s *LighthouseAuditResultV5) UnmarshalJSON(data []byte) error { | 
 | 	type NoMethod LighthouseAuditResultV5 | 
 | 	var s1 struct { | 
 | 		NumericValue gensupport.JSONFloat64 `json:"numericValue"` | 
 | 		*NoMethod | 
 | 	} | 
 | 	s1.NoMethod = (*NoMethod)(s) | 
 | 	if err := json.Unmarshal(data, &s1); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	s.NumericValue = float64(s1.NumericValue) | 
 | 	return nil | 
 | } | 
 |  | 
 | // LighthouseCategoryV5: A Lighthouse category. | 
 | type LighthouseCategoryV5 struct { | 
 | 	// AuditRefs: An array of references to all the audit members of this | 
 | 	// category. | 
 | 	AuditRefs []*AuditRefs `json:"auditRefs,omitempty"` | 
 |  | 
 | 	// Description: A more detailed description of the category and its | 
 | 	// importance. | 
 | 	Description string `json:"description,omitempty"` | 
 |  | 
 | 	// Id: The string identifier of the category. | 
 | 	Id string `json:"id,omitempty"` | 
 |  | 
 | 	// ManualDescription: A description for the manual audits in the | 
 | 	// category. | 
 | 	ManualDescription string `json:"manualDescription,omitempty"` | 
 |  | 
 | 	// Score: The overall score of the category, the weighted average of all | 
 | 	// its audits. | 
 | 	// (The category's score, can be null.) | 
 | 	Score interface{} `json:"score,omitempty"` | 
 |  | 
 | 	// Title: The human-friendly name of the category. | 
 | 	Title string `json:"title,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "AuditRefs") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "AuditRefs") to include in | 
 | 	// API requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *LighthouseCategoryV5) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod LighthouseCategoryV5 | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // LighthouseResultV5: The Lighthouse result object. | 
 | type LighthouseResultV5 struct { | 
 | 	// Audits: Map of audits in the LHR. | 
 | 	Audits map[string]LighthouseAuditResultV5 `json:"audits,omitempty"` | 
 |  | 
 | 	// Categories: Map of categories in the LHR. | 
 | 	Categories *Categories `json:"categories,omitempty"` | 
 |  | 
 | 	// CategoryGroups: Map of category groups in the LHR. | 
 | 	CategoryGroups map[string]CategoryGroupV5 `json:"categoryGroups,omitempty"` | 
 |  | 
 | 	// ConfigSettings: The configuration settings for this LHR. | 
 | 	ConfigSettings *ConfigSettings `json:"configSettings,omitempty"` | 
 |  | 
 | 	// Environment: Environment settings that were used when making this | 
 | 	// LHR. | 
 | 	Environment *Environment `json:"environment,omitempty"` | 
 |  | 
 | 	// FetchTime: The time that this run was fetched. | 
 | 	FetchTime string `json:"fetchTime,omitempty"` | 
 |  | 
 | 	// FinalUrl: The final resolved url that was audited. | 
 | 	FinalUrl string `json:"finalUrl,omitempty"` | 
 |  | 
 | 	// I18n: The internationalization strings that are required to render | 
 | 	// the LHR. | 
 | 	I18n *I18n `json:"i18n,omitempty"` | 
 |  | 
 | 	// LighthouseVersion: The lighthouse version that was used to generate | 
 | 	// this LHR. | 
 | 	LighthouseVersion string `json:"lighthouseVersion,omitempty"` | 
 |  | 
 | 	// RequestedUrl: The original requested url. | 
 | 	RequestedUrl string `json:"requestedUrl,omitempty"` | 
 |  | 
 | 	// RunWarnings: List of all run warnings in the LHR.  Will always output | 
 | 	// to at least `[]`. | 
 | 	RunWarnings []interface{} `json:"runWarnings,omitempty"` | 
 |  | 
 | 	// RuntimeError: A top-level error message that, if present, indicates a | 
 | 	// serious enough | 
 | 	// problem that this Lighthouse result may need to be discarded. | 
 | 	RuntimeError *RuntimeError `json:"runtimeError,omitempty"` | 
 |  | 
 | 	// StackPacks: The Stack Pack advice strings. | 
 | 	StackPacks []*StackPack `json:"stackPacks,omitempty"` | 
 |  | 
 | 	// Timing: Timing information for this LHR. | 
 | 	Timing *Timing `json:"timing,omitempty"` | 
 |  | 
 | 	// UserAgent: The user agent that was used to run this LHR. | 
 | 	UserAgent string `json:"userAgent,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Audits") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Audits") to include in API | 
 | 	// requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *LighthouseResultV5) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod LighthouseResultV5 | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // PagespeedApiLoadingExperienceV5: The CrUX loading experience object | 
 | // that contains CrUX data breakdowns. | 
 | type PagespeedApiLoadingExperienceV5 struct { | 
 | 	// Id: The url, pattern or origin which the metrics are on. | 
 | 	Id string `json:"id,omitempty"` | 
 |  | 
 | 	// InitialUrl: The requested URL, which may differ from the resolved | 
 | 	// "id". | 
 | 	InitialUrl string `json:"initial_url,omitempty"` | 
 |  | 
 | 	// Metrics: The map of <metrics, data>. | 
 | 	Metrics map[string]UserPageLoadMetricV5 `json:"metrics,omitempty"` | 
 |  | 
 | 	// OriginFallback: True if the result is an origin fallback from a page, | 
 | 	// false otherwise. | 
 | 	OriginFallback bool `json:"origin_fallback,omitempty"` | 
 |  | 
 | 	// OverallCategory: The human readable speed "category" of the id. | 
 | 	OverallCategory string `json:"overall_category,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Id") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Id") to include in API | 
 | 	// requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *PagespeedApiLoadingExperienceV5) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod PagespeedApiLoadingExperienceV5 | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // PagespeedApiPagespeedResponseV5: The Pagespeed API response object. | 
 | type PagespeedApiPagespeedResponseV5 struct { | 
 | 	// AnalysisUTCTimestamp: The UTC timestamp of this analysis. | 
 | 	AnalysisUTCTimestamp string `json:"analysisUTCTimestamp,omitempty"` | 
 |  | 
 | 	// CaptchaResult: The captcha verify result | 
 | 	CaptchaResult string `json:"captchaResult,omitempty"` | 
 |  | 
 | 	// Id: Canonicalized and final URL for the document, after following | 
 | 	// page | 
 | 	// redirects (if any). | 
 | 	Id string `json:"id,omitempty"` | 
 |  | 
 | 	// Kind: Kind of result. | 
 | 	Kind string `json:"kind,omitempty"` | 
 |  | 
 | 	// LighthouseResult: Lighthouse response for the audit url as an object. | 
 | 	LighthouseResult *LighthouseResultV5 `json:"lighthouseResult,omitempty"` | 
 |  | 
 | 	// LoadingExperience: Metrics of end users' page loading experience. | 
 | 	LoadingExperience *PagespeedApiLoadingExperienceV5 `json:"loadingExperience,omitempty"` | 
 |  | 
 | 	// OriginLoadingExperience: Metrics of the aggregated page loading | 
 | 	// experience of the origin | 
 | 	OriginLoadingExperience *PagespeedApiLoadingExperienceV5 `json:"originLoadingExperience,omitempty"` | 
 |  | 
 | 	// Version: The version of PageSpeed used to generate these results. | 
 | 	Version *PagespeedVersion `json:"version,omitempty"` | 
 |  | 
 | 	// ServerResponse contains the HTTP response code and headers from the | 
 | 	// server. | 
 | 	googleapi.ServerResponse `json:"-"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. | 
 | 	// "AnalysisUTCTimestamp") to unconditionally include in API requests. | 
 | 	// By default, fields with empty values are omitted from API requests. | 
 | 	// However, any non-pointer, non-interface field appearing in | 
 | 	// ForceSendFields will be sent to the server regardless of whether the | 
 | 	// field is empty or not. This may be used to include empty fields in | 
 | 	// Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "AnalysisUTCTimestamp") to | 
 | 	// include in API requests with the JSON null value. By default, fields | 
 | 	// with empty values are omitted from API requests. However, any field | 
 | 	// with an empty value appearing in NullFields will be sent to the | 
 | 	// server as null. It is an error if a field in this list has a | 
 | 	// non-empty value. This may be used to include null fields in Patch | 
 | 	// requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *PagespeedApiPagespeedResponseV5) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod PagespeedApiPagespeedResponseV5 | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // PagespeedVersion: The Pagespeed Version object. | 
 | type PagespeedVersion struct { | 
 | 	// Major: The major version number of PageSpeed used to generate these | 
 | 	// results. | 
 | 	Major string `json:"major,omitempty"` | 
 |  | 
 | 	// Minor: The minor version number of PageSpeed used to generate these | 
 | 	// results. | 
 | 	Minor string `json:"minor,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Major") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Major") to include in API | 
 | 	// requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *PagespeedVersion) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod PagespeedVersion | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // RendererFormattedStrings: Message holding the formatted strings used | 
 | // in the renderer. | 
 | type RendererFormattedStrings struct { | 
 | 	// AuditGroupExpandTooltip: The tooltip text on an expandable chevron | 
 | 	// icon. | 
 | 	AuditGroupExpandTooltip string `json:"auditGroupExpandTooltip,omitempty"` | 
 |  | 
 | 	// CrcInitialNavigation: The label for the initial request in a critical | 
 | 	// request chain. | 
 | 	CrcInitialNavigation string `json:"crcInitialNavigation,omitempty"` | 
 |  | 
 | 	// CrcLongestDurationLabel: The label for values shown in the summary of | 
 | 	// critical request chains. | 
 | 	CrcLongestDurationLabel string `json:"crcLongestDurationLabel,omitempty"` | 
 |  | 
 | 	// ErrorLabel: The label shown next to an audit or metric that has had | 
 | 	// an error. | 
 | 	ErrorLabel string `json:"errorLabel,omitempty"` | 
 |  | 
 | 	// ErrorMissingAuditInfo: The error string shown next to an erroring | 
 | 	// audit. | 
 | 	ErrorMissingAuditInfo string `json:"errorMissingAuditInfo,omitempty"` | 
 |  | 
 | 	// LabDataTitle: The title of the lab data performance category. | 
 | 	LabDataTitle string `json:"labDataTitle,omitempty"` | 
 |  | 
 | 	// LsPerformanceCategoryDescription: The disclaimer shown under | 
 | 	// performance explaning that the network can | 
 | 	// vary. | 
 | 	LsPerformanceCategoryDescription string `json:"lsPerformanceCategoryDescription,omitempty"` | 
 |  | 
 | 	// ManualAuditsGroupTitle: The heading shown above a list of audits that | 
 | 	// were not computerd in the | 
 | 	// run. | 
 | 	ManualAuditsGroupTitle string `json:"manualAuditsGroupTitle,omitempty"` | 
 |  | 
 | 	// NotApplicableAuditsGroupTitle: The heading shown above a list of | 
 | 	// audits that do not apply to a page. | 
 | 	NotApplicableAuditsGroupTitle string `json:"notApplicableAuditsGroupTitle,omitempty"` | 
 |  | 
 | 	// OpportunityResourceColumnLabel: The heading for the estimated page | 
 | 	// load savings opportunity of an | 
 | 	// audit. | 
 | 	OpportunityResourceColumnLabel string `json:"opportunityResourceColumnLabel,omitempty"` | 
 |  | 
 | 	// OpportunitySavingsColumnLabel: The heading for the estimated page | 
 | 	// load savings of opportunity audits. | 
 | 	OpportunitySavingsColumnLabel string `json:"opportunitySavingsColumnLabel,omitempty"` | 
 |  | 
 | 	// PassedAuditsGroupTitle: The heading that is shown above a list of | 
 | 	// audits that are passing. | 
 | 	PassedAuditsGroupTitle string `json:"passedAuditsGroupTitle,omitempty"` | 
 |  | 
 | 	// ScorescaleLabel: The label that explains the score gauges scale | 
 | 	// (0-49, 50-89, 90-100). | 
 | 	ScorescaleLabel string `json:"scorescaleLabel,omitempty"` | 
 |  | 
 | 	// ToplevelWarningsMessage: The label shown preceding important warnings | 
 | 	// that may have invalidated | 
 | 	// an entire report. | 
 | 	ToplevelWarningsMessage string `json:"toplevelWarningsMessage,omitempty"` | 
 |  | 
 | 	// VarianceDisclaimer: The disclaimer shown below a performance metric | 
 | 	// value. | 
 | 	VarianceDisclaimer string `json:"varianceDisclaimer,omitempty"` | 
 |  | 
 | 	// WarningHeader: The label shown above a bulleted list of warnings. | 
 | 	WarningHeader string `json:"warningHeader,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. | 
 | 	// "AuditGroupExpandTooltip") to unconditionally include in API | 
 | 	// requests. By default, fields with empty values are omitted from API | 
 | 	// requests. However, any non-pointer, non-interface field appearing in | 
 | 	// ForceSendFields will be sent to the server regardless of whether the | 
 | 	// field is empty or not. This may be used to include empty fields in | 
 | 	// Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "AuditGroupExpandTooltip") | 
 | 	// to include in API requests with the JSON null value. By default, | 
 | 	// fields with empty values are omitted from API requests. However, any | 
 | 	// field with an empty value appearing in NullFields will be sent to the | 
 | 	// server as null. It is an error if a field in this list has a | 
 | 	// non-empty value. This may be used to include null fields in Patch | 
 | 	// requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *RendererFormattedStrings) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod RendererFormattedStrings | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // RuntimeError: Message containing a runtime error config. | 
 | type RuntimeError struct { | 
 | 	// Code: The enumerated Lighthouse Error code. | 
 | 	Code string `json:"code,omitempty"` | 
 |  | 
 | 	// Message: A human readable message explaining the error code. | 
 | 	Message string `json:"message,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Code") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Code") to include in API | 
 | 	// requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *RuntimeError) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod RuntimeError | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // StackPack: Message containing Stack Pack information. | 
 | type StackPack struct { | 
 | 	// Descriptions: The stack pack advice strings. | 
 | 	Descriptions map[string]string `json:"descriptions,omitempty"` | 
 |  | 
 | 	// IconDataURL: The stack pack icon data uri. | 
 | 	IconDataURL string `json:"iconDataURL,omitempty"` | 
 |  | 
 | 	// Id: The stack pack id. | 
 | 	Id string `json:"id,omitempty"` | 
 |  | 
 | 	// Title: The stack pack title. | 
 | 	Title string `json:"title,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Descriptions") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Descriptions") to include | 
 | 	// in API requests with the JSON null value. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any field with | 
 | 	// an empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *StackPack) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod StackPack | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // Timing: Message containing the performance timing data for the | 
 | // Lighthouse run. | 
 | type Timing struct { | 
 | 	// Total: The total duration of Lighthouse's run. | 
 | 	Total float64 `json:"total,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Total") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Total") to include in API | 
 | 	// requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *Timing) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod Timing | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | func (s *Timing) UnmarshalJSON(data []byte) error { | 
 | 	type NoMethod Timing | 
 | 	var s1 struct { | 
 | 		Total gensupport.JSONFloat64 `json:"total"` | 
 | 		*NoMethod | 
 | 	} | 
 | 	s1.NoMethod = (*NoMethod)(s) | 
 | 	if err := json.Unmarshal(data, &s1); err != nil { | 
 | 		return err | 
 | 	} | 
 | 	s.Total = float64(s1.Total) | 
 | 	return nil | 
 | } | 
 |  | 
 | // UserPageLoadMetricV5: A CrUX metric object for a single metric and | 
 | // form factor. | 
 | type UserPageLoadMetricV5 struct { | 
 | 	// Category: The category of the specific time metric. | 
 | 	Category string `json:"category,omitempty"` | 
 |  | 
 | 	// Distributions: Metric distributions. Proportions should sum up to 1. | 
 | 	Distributions []*Bucket `json:"distributions,omitempty"` | 
 |  | 
 | 	// FormFactor: Identifies the form factor of the metric being collected. | 
 | 	FormFactor string `json:"formFactor,omitempty"` | 
 |  | 
 | 	// Median: The median number of the metric, in millisecond. | 
 | 	Median int64 `json:"median,omitempty"` | 
 |  | 
 | 	// MetricId: Identifies the type of the metric. | 
 | 	MetricId string `json:"metricId,omitempty"` | 
 |  | 
 | 	// Percentile: We use this field to store certain percentile value for | 
 | 	// this metric. | 
 | 	// For v4, this field contains pc50. | 
 | 	// For v5, this field contains pc90. | 
 | 	Percentile int64 `json:"percentile,omitempty"` | 
 |  | 
 | 	// ForceSendFields is a list of field names (e.g. "Category") to | 
 | 	// unconditionally include in API requests. By default, fields with | 
 | 	// empty values are omitted from API requests. However, any non-pointer, | 
 | 	// non-interface field appearing in ForceSendFields will be sent to the | 
 | 	// server regardless of whether the field is empty or not. This may be | 
 | 	// used to include empty fields in Patch requests. | 
 | 	ForceSendFields []string `json:"-"` | 
 |  | 
 | 	// NullFields is a list of field names (e.g. "Category") to include in | 
 | 	// API requests with the JSON null value. By default, fields with empty | 
 | 	// values are omitted from API requests. However, any field with an | 
 | 	// empty value appearing in NullFields will be sent to the server as | 
 | 	// null. It is an error if a field in this list has a non-empty value. | 
 | 	// This may be used to include null fields in Patch requests. | 
 | 	NullFields []string `json:"-"` | 
 | } | 
 |  | 
 | func (s *UserPageLoadMetricV5) MarshalJSON() ([]byte, error) { | 
 | 	type NoMethod UserPageLoadMetricV5 | 
 | 	raw := NoMethod(*s) | 
 | 	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
 | } | 
 |  | 
 | // method id "pagespeedonline.pagespeedapi.runpagespeed": | 
 |  | 
 | type PagespeedapiRunpagespeedCall struct { | 
 | 	s            *Service | 
 | 	urlParams_   gensupport.URLParams | 
 | 	ifNoneMatch_ string | 
 | 	ctx_         context.Context | 
 | 	header_      http.Header | 
 | } | 
 |  | 
 | // Runpagespeed: Runs PageSpeed analysis on the page at the specified | 
 | // URL, and returns | 
 | // PageSpeed scores, a list of suggestions to make that page faster, and | 
 | // other | 
 | // information. | 
 | func (r *PagespeedapiService) Runpagespeed() *PagespeedapiRunpagespeedCall { | 
 | 	c := &PagespeedapiRunpagespeedCall{s: r.s, urlParams_: make(gensupport.URLParams)} | 
 | 	return c | 
 | } | 
 |  | 
 | // CaptchaToken sets the optional parameter "captchaToken": The captcha | 
 | // token passed when filling out a captcha. | 
 | func (c *PagespeedapiRunpagespeedCall) CaptchaToken(captchaToken string) *PagespeedapiRunpagespeedCall { | 
 | 	c.urlParams_.Set("captchaToken", captchaToken) | 
 | 	return c | 
 | } | 
 |  | 
 | // Category sets the optional parameter "category": A Lighthouse | 
 | // category to run; if none are given, only Performance category | 
 | // will be run | 
 | // | 
 | // Possible values: | 
 | //   "CATEGORY_UNSPECIFIED" | 
 | //   "ACCESSIBILITY" | 
 | //   "BEST_PRACTICES" | 
 | //   "PERFORMANCE" | 
 | //   "PWA" | 
 | //   "SEO" | 
 | func (c *PagespeedapiRunpagespeedCall) Category(category ...string) *PagespeedapiRunpagespeedCall { | 
 | 	c.urlParams_.SetMulti("category", append([]string{}, category...)) | 
 | 	return c | 
 | } | 
 |  | 
 | // Locale sets the optional parameter "locale": The locale used to | 
 | // localize formatted results | 
 | func (c *PagespeedapiRunpagespeedCall) Locale(locale string) *PagespeedapiRunpagespeedCall { | 
 | 	c.urlParams_.Set("locale", locale) | 
 | 	return c | 
 | } | 
 |  | 
 | // Strategy sets the optional parameter "strategy": The analysis | 
 | // strategy (desktop or mobile) to use, and desktop is the | 
 | // default | 
 | // | 
 | // Possible values: | 
 | //   "STRATEGY_UNSPECIFIED" | 
 | //   "DESKTOP" | 
 | //   "MOBILE" | 
 | func (c *PagespeedapiRunpagespeedCall) Strategy(strategy string) *PagespeedapiRunpagespeedCall { | 
 | 	c.urlParams_.Set("strategy", strategy) | 
 | 	return c | 
 | } | 
 |  | 
 | // Url sets the optional parameter "url": The URL to fetch and analyze | 
 | func (c *PagespeedapiRunpagespeedCall) Url(url string) *PagespeedapiRunpagespeedCall { | 
 | 	c.urlParams_.Set("url", url) | 
 | 	return c | 
 | } | 
 |  | 
 | // UtmCampaign sets the optional parameter "utm_campaign": Campaign name | 
 | // for analytics. | 
 | func (c *PagespeedapiRunpagespeedCall) UtmCampaign(utmCampaign string) *PagespeedapiRunpagespeedCall { | 
 | 	c.urlParams_.Set("utm_campaign", utmCampaign) | 
 | 	return c | 
 | } | 
 |  | 
 | // UtmSource sets the optional parameter "utm_source": Campaign source | 
 | // for analytics. | 
 | func (c *PagespeedapiRunpagespeedCall) UtmSource(utmSource string) *PagespeedapiRunpagespeedCall { | 
 | 	c.urlParams_.Set("utm_source", utmSource) | 
 | 	return c | 
 | } | 
 |  | 
 | // Fields allows partial responses to be retrieved. See | 
 | // https://developers.google.com/gdata/docs/2.0/basics#PartialResponse | 
 | // for more information. | 
 | func (c *PagespeedapiRunpagespeedCall) Fields(s ...googleapi.Field) *PagespeedapiRunpagespeedCall { | 
 | 	c.urlParams_.Set("fields", googleapi.CombineFields(s)) | 
 | 	return c | 
 | } | 
 |  | 
 | // IfNoneMatch sets the optional parameter which makes the operation | 
 | // fail if the object's ETag matches the given value. This is useful for | 
 | // getting updates only after the object has changed since the last | 
 | // request. Use googleapi.IsNotModified to check whether the response | 
 | // error from Do is the result of In-None-Match. | 
 | func (c *PagespeedapiRunpagespeedCall) IfNoneMatch(entityTag string) *PagespeedapiRunpagespeedCall { | 
 | 	c.ifNoneMatch_ = entityTag | 
 | 	return c | 
 | } | 
 |  | 
 | // Context sets the context to be used in this call's Do method. Any | 
 | // pending HTTP request will be aborted if the provided context is | 
 | // canceled. | 
 | func (c *PagespeedapiRunpagespeedCall) Context(ctx context.Context) *PagespeedapiRunpagespeedCall { | 
 | 	c.ctx_ = ctx | 
 | 	return c | 
 | } | 
 |  | 
 | // Header returns an http.Header that can be modified by the caller to | 
 | // add HTTP headers to the request. | 
 | func (c *PagespeedapiRunpagespeedCall) Header() http.Header { | 
 | 	if c.header_ == nil { | 
 | 		c.header_ = make(http.Header) | 
 | 	} | 
 | 	return c.header_ | 
 | } | 
 |  | 
 | func (c *PagespeedapiRunpagespeedCall) doRequest(alt string) (*http.Response, error) { | 
 | 	reqHeaders := make(http.Header) | 
 | 	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20200610") | 
 | 	for k, v := range c.header_ { | 
 | 		reqHeaders[k] = v | 
 | 	} | 
 | 	reqHeaders.Set("User-Agent", c.s.userAgent()) | 
 | 	if c.ifNoneMatch_ != "" { | 
 | 		reqHeaders.Set("If-None-Match", c.ifNoneMatch_) | 
 | 	} | 
 | 	var body io.Reader = nil | 
 | 	c.urlParams_.Set("alt", alt) | 
 | 	c.urlParams_.Set("prettyPrint", "false") | 
 | 	urls := googleapi.ResolveRelative(c.s.BasePath, "pagespeedonline/v5/runPagespeed") | 
 | 	urls += "?" + c.urlParams_.Encode() | 
 | 	req, err := http.NewRequest("GET", urls, body) | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	req.Header = reqHeaders | 
 | 	return gensupport.SendRequest(c.ctx_, c.s.client, req) | 
 | } | 
 |  | 
 | // Do executes the "pagespeedonline.pagespeedapi.runpagespeed" call. | 
 | // Exactly one of *PagespeedApiPagespeedResponseV5 or error will be | 
 | // non-nil. Any non-2xx status code is an error. Response headers are in | 
 | // either *PagespeedApiPagespeedResponseV5.ServerResponse.Header or (if | 
 | // a response was returned at all) in error.(*googleapi.Error).Header. | 
 | // Use googleapi.IsNotModified to check whether the returned error was | 
 | // because http.StatusNotModified was returned. | 
 | func (c *PagespeedapiRunpagespeedCall) Do(opts ...googleapi.CallOption) (*PagespeedApiPagespeedResponseV5, error) { | 
 | 	gensupport.SetOptions(c.urlParams_, opts...) | 
 | 	res, err := c.doRequest("json") | 
 | 	if res != nil && res.StatusCode == http.StatusNotModified { | 
 | 		if res.Body != nil { | 
 | 			res.Body.Close() | 
 | 		} | 
 | 		return nil, &googleapi.Error{ | 
 | 			Code:   res.StatusCode, | 
 | 			Header: res.Header, | 
 | 		} | 
 | 	} | 
 | 	if err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	defer googleapi.CloseBody(res) | 
 | 	if err := googleapi.CheckResponse(res); err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	ret := &PagespeedApiPagespeedResponseV5{ | 
 | 		ServerResponse: googleapi.ServerResponse{ | 
 | 			Header:         res.Header, | 
 | 			HTTPStatusCode: res.StatusCode, | 
 | 		}, | 
 | 	} | 
 | 	target := &ret | 
 | 	if err := gensupport.DecodeResponse(target, res); err != nil { | 
 | 		return nil, err | 
 | 	} | 
 | 	return ret, nil | 
 | 	// { | 
 | 	//   "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.", | 
 | 	//   "flatPath": "pagespeedonline/v5/runPagespeed", | 
 | 	//   "httpMethod": "GET", | 
 | 	//   "id": "pagespeedonline.pagespeedapi.runpagespeed", | 
 | 	//   "parameterOrder": [], | 
 | 	//   "parameters": { | 
 | 	//     "captchaToken": { | 
 | 	//       "description": "The captcha token passed when filling out a captcha.", | 
 | 	//       "location": "query", | 
 | 	//       "type": "string" | 
 | 	//     }, | 
 | 	//     "category": { | 
 | 	//       "description": "A Lighthouse category to run; if none are given, only Performance category\nwill be run", | 
 | 	//       "enum": [ | 
 | 	//         "CATEGORY_UNSPECIFIED", | 
 | 	//         "ACCESSIBILITY", | 
 | 	//         "BEST_PRACTICES", | 
 | 	//         "PERFORMANCE", | 
 | 	//         "PWA", | 
 | 	//         "SEO" | 
 | 	//       ], | 
 | 	//       "location": "query", | 
 | 	//       "repeated": true, | 
 | 	//       "type": "string" | 
 | 	//     }, | 
 | 	//     "locale": { | 
 | 	//       "description": "The locale used to localize formatted results", | 
 | 	//       "location": "query", | 
 | 	//       "type": "string" | 
 | 	//     }, | 
 | 	//     "strategy": { | 
 | 	//       "description": "The analysis strategy (desktop or mobile) to use, and desktop is the\ndefault", | 
 | 	//       "enum": [ | 
 | 	//         "STRATEGY_UNSPECIFIED", | 
 | 	//         "DESKTOP", | 
 | 	//         "MOBILE" | 
 | 	//       ], | 
 | 	//       "location": "query", | 
 | 	//       "type": "string" | 
 | 	//     }, | 
 | 	//     "url": { | 
 | 	//       "description": "The URL to fetch and analyze", | 
 | 	//       "location": "query", | 
 | 	//       "type": "string" | 
 | 	//     }, | 
 | 	//     "utm_campaign": { | 
 | 	//       "description": "Campaign name for analytics.", | 
 | 	//       "location": "query", | 
 | 	//       "type": "string" | 
 | 	//     }, | 
 | 	//     "utm_source": { | 
 | 	//       "description": "Campaign source for analytics.", | 
 | 	//       "location": "query", | 
 | 	//       "type": "string" | 
 | 	//     } | 
 | 	//   }, | 
 | 	//   "path": "pagespeedonline/v5/runPagespeed", | 
 | 	//   "response": { | 
 | 	//     "$ref": "PagespeedApiPagespeedResponseV5" | 
 | 	//   }, | 
 | 	//   "scopes": [ | 
 | 	//     "openid" | 
 | 	//   ] | 
 | 	// } | 
 |  | 
 | } |