1// Copyright 2021 Google LLC.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// Code generated file. DO NOT EDIT.
6
7// Package chromeuxreport provides access to the Chrome UX Report API.
8//
9// For product documentation, see: https://developers.google.com/web/tools/chrome-user-experience-report/api/reference
10//
11// Creating a client
12//
13// Usage example:
14//
15//   import "google.golang.org/api/chromeuxreport/v1"
16//   ...
17//   ctx := context.Background()
18//   chromeuxreportService, err := chromeuxreport.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//   chromeuxreportService, err := chromeuxreport.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//   chromeuxreportService, err := chromeuxreport.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
36//
37// See https://godoc.org/google.golang.org/api/option/ for details on options.
38package chromeuxreport // import "google.golang.org/api/chromeuxreport/v1"
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 = "chromeuxreport:v1"
75const apiName = "chromeuxreport"
76const apiVersion = "v1"
77const basePath = "https://chromeuxreport.googleapis.com/"
78const mtlsBasePath = "https://chromeuxreport.mtls.googleapis.com/"
79
80// NewService creates a new Service.
81func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) {
82	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
83	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
84	client, endpoint, err := htransport.NewClient(ctx, opts...)
85	if err != nil {
86		return nil, err
87	}
88	s, err := New(client)
89	if err != nil {
90		return nil, err
91	}
92	if endpoint != "" {
93		s.BasePath = endpoint
94	}
95	return s, nil
96}
97
98// New creates a new Service. It uses the provided http.Client for requests.
99//
100// Deprecated: please use NewService instead.
101// To provide a custom HTTP client, use option.WithHTTPClient.
102// If you are using google.golang.org/api/googleapis/transport.APIKey, use option.WithAPIKey with NewService instead.
103func New(client *http.Client) (*Service, error) {
104	if client == nil {
105		return nil, errors.New("client is nil")
106	}
107	s := &Service{client: client, BasePath: basePath}
108	s.Records = NewRecordsService(s)
109	return s, nil
110}
111
112type Service struct {
113	client    *http.Client
114	BasePath  string // API endpoint base URL
115	UserAgent string // optional additional User-Agent fragment
116
117	Records *RecordsService
118}
119
120func (s *Service) userAgent() string {
121	if s.UserAgent == "" {
122		return googleapi.UserAgent
123	}
124	return googleapi.UserAgent + " " + s.UserAgent
125}
126
127func NewRecordsService(s *Service) *RecordsService {
128	rs := &RecordsService{s: s}
129	return rs
130}
131
132type RecordsService struct {
133	s *Service
134}
135
136// Bin: A bin is a discrete portion of data spanning from start to end,
137// or if no end is given, then from start to +inf. A bin's start and end
138// values are given in the value type of the metric it represents. For
139// example, "first contentful paint" is measured in milliseconds and
140// exposed as ints, therefore its metric bins will use int32s for its
141// start and end types. However, "cumulative layout shift" is measured
142// in unitless decimals and is exposed as a decimal encoded as a string,
143// therefore its metric bins will use strings for its value type.
144type Bin struct {
145	// Density: The proportion of users that experienced this bin's value
146	// for the given metric.
147	Density float64 `json:"density,omitempty"`
148
149	// End: End is the end of the data bin. If end is not populated, then
150	// the bin has no end and is valid from start to +inf.
151	End interface{} `json:"end,omitempty"`
152
153	// Start: Start is the beginning of the data bin.
154	Start interface{} `json:"start,omitempty"`
155
156	// ForceSendFields is a list of field names (e.g. "Density") to
157	// unconditionally include in API requests. By default, fields with
158	// empty or default values are omitted from API requests. However, any
159	// non-pointer, non-interface field appearing in ForceSendFields will be
160	// sent to the server regardless of whether the field is empty or not.
161	// This may be used to include empty fields in Patch requests.
162	ForceSendFields []string `json:"-"`
163
164	// NullFields is a list of field names (e.g. "Density") to include in
165	// API requests with the JSON null value. By default, fields with empty
166	// values are omitted from API requests. However, any field with an
167	// empty value appearing in NullFields will be sent to the server as
168	// null. It is an error if a field in this list has a non-empty value.
169	// This may be used to include null fields in Patch requests.
170	NullFields []string `json:"-"`
171}
172
173func (s *Bin) MarshalJSON() ([]byte, error) {
174	type NoMethod Bin
175	raw := NoMethod(*s)
176	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
177}
178
179func (s *Bin) UnmarshalJSON(data []byte) error {
180	type NoMethod Bin
181	var s1 struct {
182		Density gensupport.JSONFloat64 `json:"density"`
183		*NoMethod
184	}
185	s1.NoMethod = (*NoMethod)(s)
186	if err := json.Unmarshal(data, &s1); err != nil {
187		return err
188	}
189	s.Density = float64(s1.Density)
190	return nil
191}
192
193// Key: Key defines all the dimensions that identify this record as
194// unique.
195type Key struct {
196	// EffectiveConnectionType: The effective connection type is the general
197	// connection class that all users experienced for this record. This
198	// field uses the values ["offline", "slow-2G", "2G", "3G", "4G"] as
199	// specified in:
200	// https://wicg.github.io/netinfo/#effective-connection-types If the
201	// effective connection type is unspecified, then aggregated data over
202	// all effective connection types will be returned.
203	EffectiveConnectionType string `json:"effectiveConnectionType,omitempty"`
204
205	// FormFactor: The form factor is the device class that all users used
206	// to access the site for this record. If the form factor is
207	// unspecified, then aggregated data over all form factors will be
208	// returned.
209	//
210	// Possible values:
211	//   "ALL_FORM_FACTORS" - The default value, representing all device
212	// classes.
213	//   "PHONE" - The device class representing a "mobile"/"phone" sized
214	// client.
215	//   "DESKTOP" - The device class representing a "desktop"/"laptop" type
216	// full size client.
217	//   "TABLET" - The device class representing a "tablet" type client.
218	FormFactor string `json:"formFactor,omitempty"`
219
220	// Origin: Origin specifies the origin that this record is for. Note:
221	// When specifying an origin, data for loads under this origin over all
222	// pages are aggregated into origin level user experience data.
223	Origin string `json:"origin,omitempty"`
224
225	// Url: Url specifies a specific url that this record is for. Note: When
226	// specifying a "url" only data for that specific url will be
227	// aggregated.
228	Url string `json:"url,omitempty"`
229
230	// ForceSendFields is a list of field names (e.g.
231	// "EffectiveConnectionType") to unconditionally include in API
232	// requests. By default, fields with empty or default values are omitted
233	// from API requests. However, any non-pointer, non-interface field
234	// appearing in ForceSendFields will be sent to the server regardless of
235	// whether the field is empty or not. This may be used to include empty
236	// fields in Patch requests.
237	ForceSendFields []string `json:"-"`
238
239	// NullFields is a list of field names (e.g. "EffectiveConnectionType")
240	// to include in API requests with the JSON null value. By default,
241	// fields with empty values are omitted from API requests. However, any
242	// field with an empty value appearing in NullFields will be sent to the
243	// server as null. It is an error if a field in this list has a
244	// non-empty value. This may be used to include null fields in Patch
245	// requests.
246	NullFields []string `json:"-"`
247}
248
249func (s *Key) MarshalJSON() ([]byte, error) {
250	type NoMethod Key
251	raw := NoMethod(*s)
252	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
253}
254
255// Metric: A `metric` is a set of user experience data for a single web
256// performance metric, like "first contentful paint". It contains a
257// summary histogram of real world Chrome usage as a series of `bins`.
258type Metric struct {
259	// Histogram: The histogram of user experiences for a metric. The
260	// histogram will have at least one bin and the densities of all bins
261	// will add up to ~1.
262	Histogram []*Bin `json:"histogram,omitempty"`
263
264	// Percentiles: Common useful percentiles of the Metric. The value type
265	// for the percentiles will be the same as the value types given for the
266	// Histogram bins.
267	Percentiles *Percentiles `json:"percentiles,omitempty"`
268
269	// ForceSendFields is a list of field names (e.g. "Histogram") to
270	// unconditionally include in API requests. By default, fields with
271	// empty or default values are omitted from API requests. However, any
272	// non-pointer, non-interface field appearing in ForceSendFields will be
273	// sent to the server regardless of whether the field is empty or not.
274	// This may be used to include empty fields in Patch requests.
275	ForceSendFields []string `json:"-"`
276
277	// NullFields is a list of field names (e.g. "Histogram") to include in
278	// API requests with the JSON null value. By default, fields with empty
279	// values are omitted from API requests. However, any field with an
280	// empty value appearing in NullFields will be sent to the server as
281	// null. It is an error if a field in this list has a non-empty value.
282	// This may be used to include null fields in Patch requests.
283	NullFields []string `json:"-"`
284}
285
286func (s *Metric) MarshalJSON() ([]byte, error) {
287	type NoMethod Metric
288	raw := NoMethod(*s)
289	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
290}
291
292// Percentiles: Percentiles contains synthetic values of a metric at a
293// given statistical percentile. These are used for estimating a
294// metric's value as experienced by a percentage of users out of the
295// total number of users.
296type Percentiles struct {
297	// P75: 75% of users experienced the given metric at or below this
298	// value.
299	P75 interface{} `json:"p75,omitempty"`
300
301	// ForceSendFields is a list of field names (e.g. "P75") to
302	// unconditionally include in API requests. By default, fields with
303	// empty or default values are omitted from API requests. However, any
304	// non-pointer, non-interface field appearing in ForceSendFields will be
305	// sent to the server regardless of whether the field is empty or not.
306	// This may be used to include empty fields in Patch requests.
307	ForceSendFields []string `json:"-"`
308
309	// NullFields is a list of field names (e.g. "P75") to include in API
310	// requests with the JSON null value. By default, fields with empty
311	// values are omitted from API requests. However, any field with an
312	// empty value appearing in NullFields will be sent to the server as
313	// null. It is an error if a field in this list has a non-empty value.
314	// This may be used to include null fields in Patch requests.
315	NullFields []string `json:"-"`
316}
317
318func (s *Percentiles) MarshalJSON() ([]byte, error) {
319	type NoMethod Percentiles
320	raw := NoMethod(*s)
321	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
322}
323
324// QueryRequest: Request payload sent by a physical web client. This
325// request includes all necessary context to load a particular user
326// experience record.
327type QueryRequest struct {
328	// EffectiveConnectionType: The effective connection type is a query
329	// dimension that specifies the effective network class that the
330	// record's data should belong to. This field uses the values
331	// ["offline", "slow-2G", "2G", "3G", "4G"] as specified in:
332	// https://wicg.github.io/netinfo/#effective-connection-types Note: If
333	// no effective connection type is specified, then a special record with
334	// aggregated data over all effective connection types will be returned.
335	EffectiveConnectionType string `json:"effectiveConnectionType,omitempty"`
336
337	// FormFactor: The form factor is a query dimension that specifies the
338	// device class that the record's data should belong to. Note: If no
339	// form factor is specified, then a special record with aggregated data
340	// over all form factors will be returned.
341	//
342	// Possible values:
343	//   "ALL_FORM_FACTORS" - The default value, representing all device
344	// classes.
345	//   "PHONE" - The device class representing a "mobile"/"phone" sized
346	// client.
347	//   "DESKTOP" - The device class representing a "desktop"/"laptop" type
348	// full size client.
349	//   "TABLET" - The device class representing a "tablet" type client.
350	FormFactor string `json:"formFactor,omitempty"`
351
352	// Metrics: The metrics that should be included in the response. If none
353	// are specified then any metrics found will be returned. Allowed
354	// values: ["first_contentful_paint", "first_input_delay",
355	// "largest_contentful_paint", "cumulative_layout_shift",
356	// "experimental_uncapped_cumulative_layout_shift"]
357	Metrics []string `json:"metrics,omitempty"`
358
359	// Origin: The url pattern "origin" refers to a url pattern that is the
360	// origin of a website. Examples: "https://example.com",
361	// "https://cloud.google.com"
362	Origin string `json:"origin,omitempty"`
363
364	// Url: The url pattern "url" refers to a url pattern that is any
365	// arbitrary url. Examples: "https://example.com/",
366	// "https://cloud.google.com/why-google-cloud/"
367	Url string `json:"url,omitempty"`
368
369	// ForceSendFields is a list of field names (e.g.
370	// "EffectiveConnectionType") to unconditionally include in API
371	// requests. By default, fields with empty or default values are omitted
372	// from API requests. However, any non-pointer, non-interface field
373	// appearing in ForceSendFields will be sent to the server regardless of
374	// whether the field is empty or not. This may be used to include empty
375	// fields in Patch requests.
376	ForceSendFields []string `json:"-"`
377
378	// NullFields is a list of field names (e.g. "EffectiveConnectionType")
379	// to include in API requests with the JSON null value. By default,
380	// fields with empty values are omitted from API requests. However, any
381	// field with an empty value appearing in NullFields will be sent to the
382	// server as null. It is an error if a field in this list has a
383	// non-empty value. This may be used to include null fields in Patch
384	// requests.
385	NullFields []string `json:"-"`
386}
387
388func (s *QueryRequest) MarshalJSON() ([]byte, error) {
389	type NoMethod QueryRequest
390	raw := NoMethod(*s)
391	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
392}
393
394// QueryResponse: Response payload sent back to a physical web client.
395// This response contains the record found based on the identiers
396// present in a `QueryRequest`. The returned response will have a
397// record, and sometimes details on normalization actions taken on the
398// request that were necessary to make the request successful.
399type QueryResponse struct {
400	// Record: The record that was found.
401	Record *Record `json:"record,omitempty"`
402
403	// UrlNormalizationDetails: These are details about automated
404	// normalization actions that were taken in order to make the requested
405	// `url_pattern` valid.
406	UrlNormalizationDetails *UrlNormalization `json:"urlNormalizationDetails,omitempty"`
407
408	// ServerResponse contains the HTTP response code and headers from the
409	// server.
410	googleapi.ServerResponse `json:"-"`
411
412	// ForceSendFields is a list of field names (e.g. "Record") to
413	// unconditionally include in API requests. By default, fields with
414	// empty or default values are omitted from API requests. However, any
415	// non-pointer, non-interface field appearing in ForceSendFields will be
416	// sent to the server regardless of whether the field is empty or not.
417	// This may be used to include empty fields in Patch requests.
418	ForceSendFields []string `json:"-"`
419
420	// NullFields is a list of field names (e.g. "Record") to include in API
421	// requests with the JSON null value. By default, fields with empty
422	// values are omitted from API requests. However, any field with an
423	// empty value appearing in NullFields will be sent to the server as
424	// null. It is an error if a field in this list has a non-empty value.
425	// This may be used to include null fields in Patch requests.
426	NullFields []string `json:"-"`
427}
428
429func (s *QueryResponse) MarshalJSON() ([]byte, error) {
430	type NoMethod QueryResponse
431	raw := NoMethod(*s)
432	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
433}
434
435// Record: Record is a single Chrome UX report data record. It contains
436// use experience statistics for a single url pattern and set of
437// dimensions.
438type Record struct {
439	// Key: Key defines all of the unique querying parameters needed to look
440	// up a user experience record.
441	Key *Key `json:"key,omitempty"`
442
443	// Metrics: Metrics is the map of user experience data available for the
444	// record defined in the key field. Metrics are keyed on the metric
445	// name. Allowed key values: ["first_contentful_paint",
446	// "first_input_delay", "largest_contentful_paint",
447	// "cumulative_layout_shift"]
448	Metrics map[string]Metric `json:"metrics,omitempty"`
449
450	// ForceSendFields is a list of field names (e.g. "Key") to
451	// unconditionally include in API requests. By default, fields with
452	// empty or default values are omitted from API requests. However, any
453	// non-pointer, non-interface field appearing in ForceSendFields will be
454	// sent to the server regardless of whether the field is empty or not.
455	// This may be used to include empty fields in Patch requests.
456	ForceSendFields []string `json:"-"`
457
458	// NullFields is a list of field names (e.g. "Key") to include in API
459	// requests with the JSON null value. By default, fields with empty
460	// values are omitted from API requests. However, any field with an
461	// empty value appearing in NullFields will be sent to the server as
462	// null. It is an error if a field in this list has a non-empty value.
463	// This may be used to include null fields in Patch requests.
464	NullFields []string `json:"-"`
465}
466
467func (s *Record) MarshalJSON() ([]byte, error) {
468	type NoMethod Record
469	raw := NoMethod(*s)
470	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
471}
472
473// UrlNormalization: Object representing the normalization actions taken
474// to normalize a url to achieve a higher chance of successful lookup.
475// These are simple automated changes that are taken when looking up the
476// provided `url_patten` would be known to fail. Complex actions like
477// following redirects are not handled.
478type UrlNormalization struct {
479	// NormalizedUrl: The URL after any normalization actions. This is a
480	// valid user experience URL that could reasonably be looked up.
481	NormalizedUrl string `json:"normalizedUrl,omitempty"`
482
483	// OriginalUrl: The original requested URL prior to any normalization
484	// actions.
485	OriginalUrl string `json:"originalUrl,omitempty"`
486
487	// ForceSendFields is a list of field names (e.g. "NormalizedUrl") to
488	// unconditionally include in API requests. By default, fields with
489	// empty or default values are omitted from API requests. However, any
490	// non-pointer, non-interface field appearing in ForceSendFields will be
491	// sent to the server regardless of whether the field is empty or not.
492	// This may be used to include empty fields in Patch requests.
493	ForceSendFields []string `json:"-"`
494
495	// NullFields is a list of field names (e.g. "NormalizedUrl") to include
496	// in API requests with the JSON null value. By default, fields with
497	// empty values are omitted from API requests. However, any field with
498	// an empty value appearing in NullFields will be sent to the server as
499	// null. It is an error if a field in this list has a non-empty value.
500	// This may be used to include null fields in Patch requests.
501	NullFields []string `json:"-"`
502}
503
504func (s *UrlNormalization) MarshalJSON() ([]byte, error) {
505	type NoMethod UrlNormalization
506	raw := NoMethod(*s)
507	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
508}
509
510// method id "chromeuxreport.records.queryRecord":
511
512type RecordsQueryRecordCall struct {
513	s            *Service
514	queryrequest *QueryRequest
515	urlParams_   gensupport.URLParams
516	ctx_         context.Context
517	header_      http.Header
518}
519
520// QueryRecord: Queries the Chrome User Experience for a single `record`
521// for a given site. Returns a `record` that contains one or more
522// `metrics` corresponding to performance data about the requested site.
523func (r *RecordsService) QueryRecord(queryrequest *QueryRequest) *RecordsQueryRecordCall {
524	c := &RecordsQueryRecordCall{s: r.s, urlParams_: make(gensupport.URLParams)}
525	c.queryrequest = queryrequest
526	return c
527}
528
529// Fields allows partial responses to be retrieved. See
530// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
531// for more information.
532func (c *RecordsQueryRecordCall) Fields(s ...googleapi.Field) *RecordsQueryRecordCall {
533	c.urlParams_.Set("fields", googleapi.CombineFields(s))
534	return c
535}
536
537// Context sets the context to be used in this call's Do method. Any
538// pending HTTP request will be aborted if the provided context is
539// canceled.
540func (c *RecordsQueryRecordCall) Context(ctx context.Context) *RecordsQueryRecordCall {
541	c.ctx_ = ctx
542	return c
543}
544
545// Header returns an http.Header that can be modified by the caller to
546// add HTTP headers to the request.
547func (c *RecordsQueryRecordCall) Header() http.Header {
548	if c.header_ == nil {
549		c.header_ = make(http.Header)
550	}
551	return c.header_
552}
553
554func (c *RecordsQueryRecordCall) doRequest(alt string) (*http.Response, error) {
555	reqHeaders := make(http.Header)
556	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/20210830")
557	for k, v := range c.header_ {
558		reqHeaders[k] = v
559	}
560	reqHeaders.Set("User-Agent", c.s.userAgent())
561	var body io.Reader = nil
562	body, err := googleapi.WithoutDataWrapper.JSONReader(c.queryrequest)
563	if err != nil {
564		return nil, err
565	}
566	reqHeaders.Set("Content-Type", "application/json")
567	c.urlParams_.Set("alt", alt)
568	c.urlParams_.Set("prettyPrint", "false")
569	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/records:queryRecord")
570	urls += "?" + c.urlParams_.Encode()
571	req, err := http.NewRequest("POST", urls, body)
572	if err != nil {
573		return nil, err
574	}
575	req.Header = reqHeaders
576	return gensupport.SendRequest(c.ctx_, c.s.client, req)
577}
578
579// Do executes the "chromeuxreport.records.queryRecord" call.
580// Exactly one of *QueryResponse or error will be non-nil. Any non-2xx
581// status code is an error. Response headers are in either
582// *QueryResponse.ServerResponse.Header or (if a response was returned
583// at all) in error.(*googleapi.Error).Header. Use
584// googleapi.IsNotModified to check whether the returned error was
585// because http.StatusNotModified was returned.
586func (c *RecordsQueryRecordCall) Do(opts ...googleapi.CallOption) (*QueryResponse, error) {
587	gensupport.SetOptions(c.urlParams_, opts...)
588	res, err := c.doRequest("json")
589	if res != nil && res.StatusCode == http.StatusNotModified {
590		if res.Body != nil {
591			res.Body.Close()
592		}
593		return nil, &googleapi.Error{
594			Code:   res.StatusCode,
595			Header: res.Header,
596		}
597	}
598	if err != nil {
599		return nil, err
600	}
601	defer googleapi.CloseBody(res)
602	if err := googleapi.CheckResponse(res); err != nil {
603		return nil, err
604	}
605	ret := &QueryResponse{
606		ServerResponse: googleapi.ServerResponse{
607			Header:         res.Header,
608			HTTPStatusCode: res.StatusCode,
609		},
610	}
611	target := &ret
612	if err := gensupport.DecodeResponse(target, res); err != nil {
613		return nil, err
614	}
615	return ret, nil
616	// {
617	//   "description": "Queries the Chrome User Experience for a single `record` for a given site. Returns a `record` that contains one or more `metrics` corresponding to performance data about the requested site.",
618	//   "flatPath": "v1/records:queryRecord",
619	//   "httpMethod": "POST",
620	//   "id": "chromeuxreport.records.queryRecord",
621	//   "parameterOrder": [],
622	//   "parameters": {},
623	//   "path": "v1/records:queryRecord",
624	//   "request": {
625	//     "$ref": "QueryRequest"
626	//   },
627	//   "response": {
628	//     "$ref": "QueryResponse"
629	//   }
630	// }
631
632}
633