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