|  | // 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 analyticsreporting provides access to the Analytics Reporting API. | 
|  | // | 
|  | // For product documentation, see: https://developers.google.com/analytics/devguides/reporting/core/v4/ | 
|  | // | 
|  | // Creating a client | 
|  | // | 
|  | // Usage example: | 
|  | // | 
|  | //   import "google.golang.org/api/analyticsreporting/v4" | 
|  | //   ... | 
|  | //   ctx := context.Background() | 
|  | //   analyticsreportingService, err := analyticsreporting.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 | 
|  | // | 
|  | // By default, all available scopes (see "Constants") are used to authenticate. To restrict scopes, use option.WithScopes: | 
|  | // | 
|  | //   analyticsreportingService, err := analyticsreporting.NewService(ctx, option.WithScopes(analyticsreporting.AnalyticsReadonlyScope)) | 
|  | // | 
|  | // To use an API key for authentication (note: some APIs do not support API keys), use option.WithAPIKey: | 
|  | // | 
|  | //   analyticsreportingService, err := analyticsreporting.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, ...) | 
|  | //   analyticsreportingService, err := analyticsreporting.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token))) | 
|  | // | 
|  | // See https://godoc.org/google.golang.org/api/option/ for details on options. | 
|  | package analyticsreporting // import "google.golang.org/api/analyticsreporting/v4" | 
|  |  | 
|  | 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 = "analyticsreporting:v4" | 
|  | const apiName = "analyticsreporting" | 
|  | const apiVersion = "v4" | 
|  | const basePath = "https://analyticsreporting.googleapis.com/" | 
|  |  | 
|  | // OAuth2 scopes used by this API. | 
|  | const ( | 
|  | // View and manage your Google Analytics data | 
|  | AnalyticsScope = "https://www.googleapis.com/auth/analytics" | 
|  |  | 
|  | // View your Google Analytics data | 
|  | AnalyticsReadonlyScope = "https://www.googleapis.com/auth/analytics.readonly" | 
|  | ) | 
|  |  | 
|  | // NewService creates a new Service. | 
|  | func NewService(ctx context.Context, opts ...option.ClientOption) (*Service, error) { | 
|  | scopesOption := option.WithScopes( | 
|  | "https://www.googleapis.com/auth/analytics", | 
|  | "https://www.googleapis.com/auth/analytics.readonly", | 
|  | ) | 
|  | // 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.Reports = NewReportsService(s) | 
|  | s.UserActivity = NewUserActivityService(s) | 
|  | return s, nil | 
|  | } | 
|  |  | 
|  | type Service struct { | 
|  | client    *http.Client | 
|  | BasePath  string // API endpoint base URL | 
|  | UserAgent string // optional additional User-Agent fragment | 
|  |  | 
|  | Reports *ReportsService | 
|  |  | 
|  | UserActivity *UserActivityService | 
|  | } | 
|  |  | 
|  | func (s *Service) userAgent() string { | 
|  | if s.UserAgent == "" { | 
|  | return googleapi.UserAgent | 
|  | } | 
|  | return googleapi.UserAgent + " " + s.UserAgent | 
|  | } | 
|  |  | 
|  | func NewReportsService(s *Service) *ReportsService { | 
|  | rs := &ReportsService{s: s} | 
|  | return rs | 
|  | } | 
|  |  | 
|  | type ReportsService struct { | 
|  | s *Service | 
|  | } | 
|  |  | 
|  | func NewUserActivityService(s *Service) *UserActivityService { | 
|  | rs := &UserActivityService{s: s} | 
|  | return rs | 
|  | } | 
|  |  | 
|  | type UserActivityService struct { | 
|  | s *Service | 
|  | } | 
|  |  | 
|  | // Activity: An Activity represents data for an activity of a user. Note | 
|  | // that an | 
|  | // Activity is different from a hit. | 
|  | // A hit might result in multiple Activity's. For example, if a | 
|  | // hit | 
|  | // includes a transaction and a goal completion, there will be | 
|  | // two | 
|  | // Activity protos for this hit, one for ECOMMERCE and one for | 
|  | // GOAL. | 
|  | // Conversely, multiple hits can also construct one Activity. In | 
|  | // classic | 
|  | // e-commerce, data for one transaction might be sent through multiple | 
|  | // hits. | 
|  | // These hits will be merged into one ECOMMERCE Activity. | 
|  | type Activity struct { | 
|  | // ActivityTime: Timestamp of the activity. If activities for a visit | 
|  | // cross midnight and | 
|  | // occur in two separate dates, then two sessions (one per date) | 
|  | // share the session identifier. | 
|  | // For example, say session ID 113472 has activity within 2019-08-20, | 
|  | // and | 
|  | // session ID 243742 has activity within 2019-08-25 and 2019-08-26. | 
|  | // Session ID | 
|  | // 113472 is one session, and session ID 243742 is two sessions. | 
|  | ActivityTime string `json:"activityTime,omitempty"` | 
|  |  | 
|  | // ActivityType: Type of this activity. | 
|  | // | 
|  | // Possible values: | 
|  | //   "ACTIVITY_TYPE_UNSPECIFIED" - ActivityType will never have this | 
|  | // value in the response. Using this type in | 
|  | // the request will result in an error. | 
|  | //   "PAGEVIEW" - Used when the activity resulted out of a visitor | 
|  | // viewing a page. | 
|  | //   "SCREENVIEW" - Used when the activity resulted out of a visitor | 
|  | // using an application on a | 
|  | // mobile device. | 
|  | //   "GOAL" - Used to denote that a goal type activity. | 
|  | //   "ECOMMERCE" - An e-commerce transaction was performed by the | 
|  | // visitor on the page. | 
|  | //   "EVENT" - Used when the activity is an event. | 
|  | ActivityType string `json:"activityType,omitempty"` | 
|  |  | 
|  | // Appview: This will be set if `activity_type` equals `SCREEN_VIEW`. | 
|  | Appview *ScreenviewData `json:"appview,omitempty"` | 
|  |  | 
|  | // Campaign: For manual campaign tracking, it is the value of the | 
|  | // utm_campaign campaign | 
|  | // tracking parameter. For AdWords autotagging, it is the name(s) of | 
|  | // the | 
|  | // online ad campaign(s) you use for the property. If you use neither, | 
|  | // its | 
|  | // value is (not set). | 
|  | Campaign string `json:"campaign,omitempty"` | 
|  |  | 
|  | // ChannelGrouping: The Channel Group associated with an end user's | 
|  | // session for this View | 
|  | // (defined by the View's Channel Groupings). | 
|  | ChannelGrouping string `json:"channelGrouping,omitempty"` | 
|  |  | 
|  | // CustomDimension: A list of all custom dimensions associated with this | 
|  | // activity. | 
|  | CustomDimension []*CustomDimension `json:"customDimension,omitempty"` | 
|  |  | 
|  | // Ecommerce: This will be set if `activity_type` equals `ECOMMERCE`. | 
|  | Ecommerce *EcommerceData `json:"ecommerce,omitempty"` | 
|  |  | 
|  | // Event: This field contains all the details pertaining to an event and | 
|  | // will be | 
|  | // set if `activity_type` equals `EVENT`. | 
|  | Event *EventData `json:"event,omitempty"` | 
|  |  | 
|  | // Goals: This field contains a list of all the goals that were reached | 
|  | // in this | 
|  | // activity when `activity_type` equals `GOAL`. | 
|  | Goals *GoalSetData `json:"goals,omitempty"` | 
|  |  | 
|  | // Hostname: The hostname from which the tracking request was made. | 
|  | Hostname string `json:"hostname,omitempty"` | 
|  |  | 
|  | // Keyword: For manual campaign tracking, it is the value of the | 
|  | // utm_term campaign | 
|  | // tracking parameter. For AdWords traffic, it contains the best | 
|  | // matching | 
|  | // targeting criteria. For the display network, where multiple | 
|  | // targeting | 
|  | // criteria could have caused the ad to show up, it returns the best | 
|  | // matching | 
|  | // targeting criteria as selected by Ads. This could be display_keyword, | 
|  | // site | 
|  | // placement, boomuserlist, user_interest, age, or gender. Otherwise its | 
|  | // value | 
|  | // is (not set). | 
|  | Keyword string `json:"keyword,omitempty"` | 
|  |  | 
|  | // LandingPagePath: The first page in users' sessions, or the landing | 
|  | // page. | 
|  | LandingPagePath string `json:"landingPagePath,omitempty"` | 
|  |  | 
|  | // Medium: The type of referrals. For manual campaign tracking, it is | 
|  | // the value of the | 
|  | // utm_medium campaign tracking parameter. For AdWords autotagging, it | 
|  | // is cpc. | 
|  | // If users came from a search engine detected by Google Analytics, it | 
|  | // is | 
|  | // organic. If the referrer is not a search engine, it is referral. If | 
|  | // users | 
|  | // came directly to the property and document.referrer is empty, its | 
|  | // value is | 
|  | // (none). | 
|  | Medium string `json:"medium,omitempty"` | 
|  |  | 
|  | // Pageview: This will be set if `activity_type` equals `PAGEVIEW`. This | 
|  | // field | 
|  | // contains all the details about the visitor and the page that was | 
|  | // visited. | 
|  | Pageview *PageviewData `json:"pageview,omitempty"` | 
|  |  | 
|  | // Source: The source of referrals. For manual campaign tracking, it is | 
|  | // the value of | 
|  | // the utm_source campaign tracking parameter. For AdWords autotagging, | 
|  | // it is | 
|  | // google. If you use neither, it is the domain of the source | 
|  | // (e.g., document.referrer) referring the users. It may also contain a | 
|  | // port | 
|  | // address. If users arrived without a referrer, its value is (direct). | 
|  | Source string `json:"source,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "ActivityTime") 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. "ActivityTime") 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 *Activity) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod Activity | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // Cohort: Defines a cohort. A cohort is a group of users who share a | 
|  | // common | 
|  | // characteristic. For example, all users with the same acquisition | 
|  | // date | 
|  | // belong to the same cohort. | 
|  | type Cohort struct { | 
|  | // DateRange: This is used for `FIRST_VISIT_DATE` cohort, the cohort | 
|  | // selects users | 
|  | // whose first visit date is between start date and end date defined in | 
|  | // the | 
|  | // DateRange. The date ranges should be aligned for cohort requests. If | 
|  | // the | 
|  | // request contains `ga:cohortNthDay` it should be exactly one day | 
|  | // long, | 
|  | // if `ga:cohortNthWeek` it should be aligned to the week boundary | 
|  | // (starting | 
|  | // at Sunday and ending Saturday), and for `ga:cohortNthMonth` the date | 
|  | // range | 
|  | // should be aligned to the month (starting at the first and ending on | 
|  | // the | 
|  | // last day of the month). | 
|  | // For LTV requests there are no such restrictions. | 
|  | // You do not need to supply a date range for | 
|  | // the | 
|  | // `reportsRequest.dateRanges` field. | 
|  | DateRange *DateRange `json:"dateRange,omitempty"` | 
|  |  | 
|  | // Name: A unique name for the cohort. If not defined name will be | 
|  | // auto-generated | 
|  | // with values cohort_[1234...]. | 
|  | Name string `json:"name,omitempty"` | 
|  |  | 
|  | // Type: Type of the cohort. The only supported type as of now | 
|  | // is | 
|  | // `FIRST_VISIT_DATE`. If this field is unspecified the cohort is | 
|  | // treated | 
|  | // as `FIRST_VISIT_DATE` type cohort. | 
|  | // | 
|  | // Possible values: | 
|  | //   "UNSPECIFIED_COHORT_TYPE" - If unspecified it's treated as | 
|  | // `FIRST_VISIT_DATE`. | 
|  | //   "FIRST_VISIT_DATE" - Cohorts that are selected based on first visit | 
|  | // date. | 
|  | Type string `json:"type,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "DateRange") 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. "DateRange") 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 *Cohort) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod Cohort | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // CohortGroup: Defines a cohort group. | 
|  | // For example: | 
|  | // | 
|  | //     "cohortGroup": { | 
|  | //       "cohorts": [{ | 
|  | //         "name": "cohort 1", | 
|  | //         "type": "FIRST_VISIT_DATE", | 
|  | //         "dateRange": { "startDate": "2015-08-01", "endDate": | 
|  | // "2015-08-01" } | 
|  | //       },{ | 
|  | //         "name": "cohort 2" | 
|  | //          "type": "FIRST_VISIT_DATE" | 
|  | //          "dateRange": { "startDate": "2015-07-01", "endDate": | 
|  | // "2015-07-01" } | 
|  | //       }] | 
|  | //     } | 
|  | type CohortGroup struct { | 
|  | // Cohorts: The definition for the cohort. | 
|  | Cohorts []*Cohort `json:"cohorts,omitempty"` | 
|  |  | 
|  | // LifetimeValue: Enable Life Time Value (LTV).  LTV measures lifetime | 
|  | // value for users | 
|  | // acquired through different channels. | 
|  | // Please see: | 
|  | // [Cohort | 
|  | // Analysis](https://support.google.com/analytics/answer/6074676) | 
|  | // and | 
|  | // [Lifetime | 
|  | // Value](https://support.google.com/analytics/answer/6182550) | 
|  | // If the value of lifetimeValue is false: | 
|  | // | 
|  | // - The metric values are similar to the values in the web interface | 
|  | // cohort | 
|  | //   report. | 
|  | // - The cohort definition date ranges must be aligned to the calendar | 
|  | // week | 
|  | //   and month. i.e. while requesting `ga:cohortNthWeek` the `startDate` | 
|  | // in | 
|  | //   the cohort definition should be a Sunday and the `endDate` should | 
|  | // be the | 
|  | //   following Saturday, and for `ga:cohortNthMonth`, the `startDate` | 
|  | //   should be the 1st of the month and `endDate` should be the last | 
|  | // day | 
|  | //   of the month. | 
|  | // | 
|  | // When the lifetimeValue is true: | 
|  | // | 
|  | // - The metric values will correspond to the values in the web | 
|  | // interface | 
|  | //   LifeTime value report. | 
|  | // - The Lifetime Value report shows you how user value (Revenue) and | 
|  | //   engagement (Appviews, Goal Completions, Sessions, and Session | 
|  | // Duration) | 
|  | //   grow during the 90 days after a user is acquired. | 
|  | // - The metrics are calculated as a cumulative average per user per the | 
|  | // time | 
|  | //   increment. | 
|  | // - The cohort definition date ranges need not be aligned to the | 
|  | // calendar | 
|  | //   week and month boundaries. | 
|  | // - The `viewId` must be an | 
|  | //   [app view | 
|  | // | 
|  | // ID](https://support.google.com/analytics/answer/2649553#WebVersusAppVi | 
|  | // ews) | 
|  | LifetimeValue bool `json:"lifetimeValue,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Cohorts") 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. "Cohorts") 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 *CohortGroup) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod CohortGroup | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // ColumnHeader: Column headers. | 
|  | type ColumnHeader struct { | 
|  | // Dimensions: The dimension names in the response. | 
|  | Dimensions []string `json:"dimensions,omitempty"` | 
|  |  | 
|  | // MetricHeader: Metric headers for the metrics in the response. | 
|  | MetricHeader *MetricHeader `json:"metricHeader,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Dimensions") 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. "Dimensions") 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 *ColumnHeader) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod ColumnHeader | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // CustomDimension: Custom dimension. | 
|  | type CustomDimension struct { | 
|  | // Index: Slot number of custom dimension. | 
|  | Index int64 `json:"index,omitempty"` | 
|  |  | 
|  | // Value: Value of the custom dimension. Default value (i.e. empty | 
|  | // string) indicates | 
|  | // clearing sesion/visitor scope custom dimension value. | 
|  | Value string `json:"value,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Index") 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. "Index") 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 *CustomDimension) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod CustomDimension | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // DateRange: A contiguous set of days: startDate, startDate + 1 day, | 
|  | // ..., endDate. | 
|  | // The start and end dates are specified | 
|  | // in | 
|  | // [ISO8601](https://en.wikipedia.org/wiki/ISO_8601) date format | 
|  | // `YYYY-MM-DD`. | 
|  | type DateRange struct { | 
|  | // EndDate: The end date for the query in the format `YYYY-MM-DD`. | 
|  | EndDate string `json:"endDate,omitempty"` | 
|  |  | 
|  | // StartDate: The start date for the query in the format `YYYY-MM-DD`. | 
|  | StartDate string `json:"startDate,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "EndDate") 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. "EndDate") 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 *DateRange) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod DateRange | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // DateRangeValues: Used to return a list of metrics for a single | 
|  | // DateRange / dimension | 
|  | // combination | 
|  | type DateRangeValues struct { | 
|  | // PivotValueRegions: The values of each pivot region. | 
|  | PivotValueRegions []*PivotValueRegion `json:"pivotValueRegions,omitempty"` | 
|  |  | 
|  | // Values: Each value corresponds to each Metric in the request. | 
|  | Values []string `json:"values,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "PivotValueRegions") | 
|  | // 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. "PivotValueRegions") 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 *DateRangeValues) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod DateRangeValues | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // Dimension: | 
|  | // [Dimensions](https://support.google.com/analytics/answer/1033861) | 
|  | // are attributes of your data. For example, the dimension | 
|  | // `ga:city` | 
|  | // indicates the city, for example, "Paris" or "New York", from which | 
|  | // a session originates. | 
|  | type Dimension struct { | 
|  | // HistogramBuckets: If non-empty, we place dimension values into | 
|  | // buckets after string to | 
|  | // int64. Dimension values that are not the string representation of | 
|  | // an | 
|  | // integral value will be converted to zero.  The bucket values have to | 
|  | // be in | 
|  | // increasing order.  Each bucket is closed on the lower end, and open | 
|  | // on the | 
|  | // upper end. The "first" bucket includes all values less than the | 
|  | // first | 
|  | // boundary, the "last" bucket includes all values up to infinity. | 
|  | // Dimension | 
|  | // values that fall in a bucket get transformed to a new dimension | 
|  | // value. For | 
|  | // example, if one gives a list of "0, 1, 3, 4, 7", then we return | 
|  | // the | 
|  | // following buckets: | 
|  | // | 
|  | // - bucket #1: values < 0, dimension value "<0" | 
|  | // - bucket #2: values in [0,1), dimension value "0" | 
|  | // - bucket #3: values in [1,3), dimension value "1-2" | 
|  | // - bucket #4: values in [3,4), dimension value "3" | 
|  | // - bucket #5: values in [4,7), dimension value "4-6" | 
|  | // - bucket #6: values >= 7, dimension value "7+" | 
|  | // | 
|  | // NOTE: If you are applying histogram mutation on any dimension, and | 
|  | // using | 
|  | // that dimension in sort, you will want to use the sort | 
|  | // type | 
|  | // `HISTOGRAM_BUCKET` for that purpose. Without that the dimension | 
|  | // values | 
|  | // will be sorted according to dictionary | 
|  | // (lexicographic) order. For example the ascending dictionary order | 
|  | // is: | 
|  | // | 
|  | //    "<50", "1001+", "121-1000", "50-120" | 
|  | // | 
|  | // And the ascending `HISTOGRAM_BUCKET` order is: | 
|  | // | 
|  | //    "<50", "50-120", "121-1000", "1001+" | 
|  | // | 
|  | // The client has to explicitly request "orderType": | 
|  | // "HISTOGRAM_BUCKET" | 
|  | // for a histogram-mutated dimension. | 
|  | HistogramBuckets googleapi.Int64s `json:"histogramBuckets,omitempty"` | 
|  |  | 
|  | // Name: Name of the dimension to fetch, for example `ga:browser`. | 
|  | Name string `json:"name,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "HistogramBuckets") 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. "HistogramBuckets") 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 *Dimension) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod Dimension | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // DimensionFilter: Dimension filter specifies the filtering options on | 
|  | // a dimension. | 
|  | type DimensionFilter struct { | 
|  | // CaseSensitive: Should the match be case sensitive? Default is false. | 
|  | CaseSensitive bool `json:"caseSensitive,omitempty"` | 
|  |  | 
|  | // DimensionName: The dimension to filter on. A DimensionFilter must | 
|  | // contain a dimension. | 
|  | DimensionName string `json:"dimensionName,omitempty"` | 
|  |  | 
|  | // Expressions: Strings or regular expression to match against. Only the | 
|  | // first value of | 
|  | // the list is used for comparison unless the operator is `IN_LIST`. | 
|  | // If `IN_LIST` operator, then the entire list is used to filter | 
|  | // the | 
|  | // dimensions as explained in the description of the `IN_LIST` operator. | 
|  | Expressions []string `json:"expressions,omitempty"` | 
|  |  | 
|  | // Not: Logical `NOT` operator. If this boolean is set to true, then the | 
|  | // matching | 
|  | // dimension values will be excluded in the report. The default is | 
|  | // false. | 
|  | Not bool `json:"not,omitempty"` | 
|  |  | 
|  | // Operator: How to match the dimension to the expression. The default | 
|  | // is REGEXP. | 
|  | // | 
|  | // Possible values: | 
|  | //   "OPERATOR_UNSPECIFIED" - If the match type is unspecified, it is | 
|  | // treated as a `REGEXP`. | 
|  | //   "REGEXP" - The match expression is treated as a regular expression. | 
|  | // All match types | 
|  | // are not treated as regular expressions. | 
|  | //   "BEGINS_WITH" - Matches the value which begin with the match | 
|  | // expression provided. | 
|  | //   "ENDS_WITH" - Matches the values which end with the match | 
|  | // expression provided. | 
|  | //   "PARTIAL" - Substring match. | 
|  | //   "EXACT" - The value should match the match expression entirely. | 
|  | //   "NUMERIC_EQUAL" - Integer comparison filters. | 
|  | // case sensitivity is ignored for these and the expression | 
|  | // is assumed to be a string representing an integer. | 
|  | // Failure conditions: | 
|  | // | 
|  | // - If expression is not a valid int64, the client should expect | 
|  | //   an error. | 
|  | // - Input dimensions that are not valid int64 values will never match | 
|  | // the | 
|  | //   filter. | 
|  | //   "NUMERIC_GREATER_THAN" - Checks if the dimension is numerically | 
|  | // greater than the match | 
|  | // expression. Read the description for `NUMERIC_EQUALS` for | 
|  | // restrictions. | 
|  | //   "NUMERIC_LESS_THAN" - Checks if the dimension is numerically less | 
|  | // than the match expression. | 
|  | // Read the description for `NUMERIC_EQUALS` for restrictions. | 
|  | //   "IN_LIST" - This option is used to specify a dimension filter whose | 
|  | // expression can | 
|  | // take any value from a selected list of values. This helps | 
|  | // avoiding | 
|  | // evaluating multiple exact match dimension filters which are OR'ed | 
|  | // for | 
|  | // every single response row. For example: | 
|  | // | 
|  | //     expressions: ["A", "B", "C"] | 
|  | // | 
|  | // Any response row whose dimension has it is value as A, B or C, | 
|  | // matches | 
|  | // this DimensionFilter. | 
|  | Operator string `json:"operator,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "CaseSensitive") 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. "CaseSensitive") 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 *DimensionFilter) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod DimensionFilter | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // DimensionFilterClause: A group of dimension filters. Set the operator | 
|  | // value to specify how | 
|  | // the filters are logically combined. | 
|  | type DimensionFilterClause struct { | 
|  | // Filters: The repeated set of filters. They are logically combined | 
|  | // based on the | 
|  | // operator specified. | 
|  | Filters []*DimensionFilter `json:"filters,omitempty"` | 
|  |  | 
|  | // Operator: The operator for combining multiple dimension filters. If | 
|  | // unspecified, it | 
|  | // is treated as an `OR`. | 
|  | // | 
|  | // Possible values: | 
|  | //   "OPERATOR_UNSPECIFIED" - Unspecified operator. It is treated as an | 
|  | // `OR`. | 
|  | //   "OR" - The logical `OR` operator. | 
|  | //   "AND" - The logical `AND` operator. | 
|  | Operator string `json:"operator,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Filters") 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. "Filters") 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 *DimensionFilterClause) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod DimensionFilterClause | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // DynamicSegment: Dynamic segment definition for defining the segment | 
|  | // within the request. | 
|  | // A segment can select users, sessions or both. | 
|  | type DynamicSegment struct { | 
|  | // Name: The name of the dynamic segment. | 
|  | Name string `json:"name,omitempty"` | 
|  |  | 
|  | // SessionSegment: Session Segment to select sessions to include in the | 
|  | // segment. | 
|  | SessionSegment *SegmentDefinition `json:"sessionSegment,omitempty"` | 
|  |  | 
|  | // UserSegment: User Segment to select users to include in the segment. | 
|  | UserSegment *SegmentDefinition `json:"userSegment,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Name") 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. "Name") 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 *DynamicSegment) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod DynamicSegment | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // EcommerceData: E-commerce details associated with the user activity. | 
|  | type EcommerceData struct { | 
|  | // ActionType: Action associated with this e-commerce action. | 
|  | // | 
|  | // Possible values: | 
|  | //   "UNKNOWN" - Action type is not known. | 
|  | //   "CLICK" - Click through of product lists. | 
|  | //   "DETAILS_VIEW" - Product detail views. | 
|  | //   "ADD_TO_CART" - Add product(s) to cart. | 
|  | //   "REMOVE_FROM_CART" - Remove product(s) from cart. | 
|  | //   "CHECKOUT" - Check out. | 
|  | //   "PAYMENT" - Completed purchase. | 
|  | //   "REFUND" - Refund of purchase. | 
|  | //   "CHECKOUT_OPTION" - Checkout options. | 
|  | ActionType string `json:"actionType,omitempty"` | 
|  |  | 
|  | // EcommerceType: The type of this e-commerce activity. | 
|  | // | 
|  | // Possible values: | 
|  | //   "ECOMMERCE_TYPE_UNSPECIFIED" - Used when the e-commerce activity | 
|  | // type is unspecified. | 
|  | //   "CLASSIC" - Used when activity has classic (non-enhanced) | 
|  | // e-commerce information. | 
|  | //   "ENHANCED" - Used when activity has enhanced e-commerce | 
|  | // information. | 
|  | EcommerceType string `json:"ecommerceType,omitempty"` | 
|  |  | 
|  | // Products: Details of the products in this transaction. | 
|  | Products []*ProductData `json:"products,omitempty"` | 
|  |  | 
|  | // Transaction: Transaction details of this e-commerce action. | 
|  | Transaction *TransactionData `json:"transaction,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "ActionType") 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. "ActionType") 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 *EcommerceData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod EcommerceData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // EventData: Represents all the details pertaining to an event. | 
|  | type EventData struct { | 
|  | // EventAction: Type of interaction with the object. Eg: 'play'. | 
|  | EventAction string `json:"eventAction,omitempty"` | 
|  |  | 
|  | // EventCategory: The object on the page that was interacted with. Eg: | 
|  | // 'Video'. | 
|  | EventCategory string `json:"eventCategory,omitempty"` | 
|  |  | 
|  | // EventCount: Number of such events in this activity. | 
|  | EventCount int64 `json:"eventCount,omitempty,string"` | 
|  |  | 
|  | // EventLabel: Label attached with the event. | 
|  | EventLabel string `json:"eventLabel,omitempty"` | 
|  |  | 
|  | // EventValue: Numeric value associated with the event. | 
|  | EventValue int64 `json:"eventValue,omitempty,string"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "EventAction") 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. "EventAction") 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 *EventData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod EventData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // GetReportsRequest: The batch request containing multiple report | 
|  | // request. | 
|  | type GetReportsRequest struct { | 
|  | // ReportRequests: Requests, each request will have a separate | 
|  | // response. | 
|  | // There can be a maximum of 5 requests. All requests should have the | 
|  | // same | 
|  | // `dateRanges`, `viewId`, `segments`, `samplingLevel`, and | 
|  | // `cohortGroup`. | 
|  | ReportRequests []*ReportRequest `json:"reportRequests,omitempty"` | 
|  |  | 
|  | // UseResourceQuotas: Enables | 
|  | // [resource | 
|  | // based | 
|  | // quotas](/analytics/devguides/reporting/core/v4/limits-quotas#ana | 
|  | // lytics_reporting_api_v4), | 
|  | // (defaults to `False`). If this field is set to `True` the | 
|  | // per view (profile) quotas are governed by the computational | 
|  | // cost of the request. Note that using cost based quotas will | 
|  | // higher enable sampling rates. (10 Million for `SMALL`, | 
|  | // 100M for `LARGE`. See the | 
|  | // [limits and | 
|  | // quotas | 
|  | // documentation](/analytics/devguides/reporting/core/v4/limits-qu | 
|  | // otas#analytics_reporting_api_v4) | 
|  | // for details. | 
|  | UseResourceQuotas bool `json:"useResourceQuotas,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "ReportRequests") 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. "ReportRequests") 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 *GetReportsRequest) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod GetReportsRequest | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // GetReportsResponse: The main response class which holds the reports | 
|  | // from the Reporting API | 
|  | // `batchGet` call. | 
|  | type GetReportsResponse struct { | 
|  | // QueryCost: The amount of resource quota tokens deducted to execute | 
|  | // the query. Includes | 
|  | // all responses. | 
|  | QueryCost int64 `json:"queryCost,omitempty"` | 
|  |  | 
|  | // Reports: Responses corresponding to each of the request. | 
|  | Reports []*Report `json:"reports,omitempty"` | 
|  |  | 
|  | // ResourceQuotasRemaining: The amount of resource quota remaining for | 
|  | // the property. | 
|  | ResourceQuotasRemaining *ResourceQuotasRemaining `json:"resourceQuotasRemaining,omitempty"` | 
|  |  | 
|  | // ServerResponse contains the HTTP response code and headers from the | 
|  | // server. | 
|  | googleapi.ServerResponse `json:"-"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "QueryCost") 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. "QueryCost") 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 *GetReportsResponse) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod GetReportsResponse | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // GoalData: Represents all the details pertaining to a goal. | 
|  | type GoalData struct { | 
|  | // GoalCompletionLocation: URL of the page where this goal was | 
|  | // completed. | 
|  | GoalCompletionLocation string `json:"goalCompletionLocation,omitempty"` | 
|  |  | 
|  | // GoalCompletions: Total number of goal completions in this activity. | 
|  | GoalCompletions int64 `json:"goalCompletions,omitempty,string"` | 
|  |  | 
|  | // GoalIndex: This identifies the goal as configured for the profile. | 
|  | GoalIndex int64 `json:"goalIndex,omitempty"` | 
|  |  | 
|  | // GoalName: Name of the goal. | 
|  | GoalName string `json:"goalName,omitempty"` | 
|  |  | 
|  | // GoalPreviousStep1: URL of the page one step prior to the goal | 
|  | // completion. | 
|  | GoalPreviousStep1 string `json:"goalPreviousStep1,omitempty"` | 
|  |  | 
|  | // GoalPreviousStep2: URL of the page two steps prior to the goal | 
|  | // completion. | 
|  | GoalPreviousStep2 string `json:"goalPreviousStep2,omitempty"` | 
|  |  | 
|  | // GoalPreviousStep3: URL of the page three steps prior to the goal | 
|  | // completion. | 
|  | GoalPreviousStep3 string `json:"goalPreviousStep3,omitempty"` | 
|  |  | 
|  | // GoalValue: Value in this goal. | 
|  | GoalValue float64 `json:"goalValue,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. | 
|  | // "GoalCompletionLocation") 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. "GoalCompletionLocation") | 
|  | // 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 *GoalData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod GoalData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | func (s *GoalData) UnmarshalJSON(data []byte) error { | 
|  | type NoMethod GoalData | 
|  | var s1 struct { | 
|  | GoalValue gensupport.JSONFloat64 `json:"goalValue"` | 
|  | *NoMethod | 
|  | } | 
|  | s1.NoMethod = (*NoMethod)(s) | 
|  | if err := json.Unmarshal(data, &s1); err != nil { | 
|  | return err | 
|  | } | 
|  | s.GoalValue = float64(s1.GoalValue) | 
|  | return nil | 
|  | } | 
|  |  | 
|  | // GoalSetData: Represents a set of goals that were reached in an | 
|  | // activity. | 
|  | type GoalSetData struct { | 
|  | // Goals: All the goals that were reached in the current activity. | 
|  | Goals []*GoalData `json:"goals,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Goals") 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. "Goals") 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 *GoalSetData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod GoalSetData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // Metric: | 
|  | // [Metrics](https://support.google.com/analytics/answer/1033861) | 
|  | // are the quantitative measurements. For example, the metric | 
|  | // `ga:users` | 
|  | // indicates the total number of users for the requested time period. | 
|  | type Metric struct { | 
|  | // Alias: An alias for the metric expression is an alternate name for | 
|  | // the | 
|  | // expression. The alias can be used for filtering and sorting. This | 
|  | // field | 
|  | // is optional and is useful if the expression is not a single metric | 
|  | // but | 
|  | // a complex expression which cannot be used in filtering and | 
|  | // sorting. | 
|  | // The alias is also used in the response column header. | 
|  | Alias string `json:"alias,omitempty"` | 
|  |  | 
|  | // Expression: A metric expression in the request. An expression is | 
|  | // constructed from one | 
|  | // or more metrics and numbers. Accepted operators include: Plus (+), | 
|  | // Minus | 
|  | // (-), Negation (Unary -), Divided by (/), Multiplied by (*), | 
|  | // Parenthesis, | 
|  | // Positive cardinal numbers (0-9), can include decimals and is limited | 
|  | // to | 
|  | // 1024 characters. Example `ga:totalRefunds/ga:users`, in most cases | 
|  | // the | 
|  | // metric expression is just a single metric name like | 
|  | // `ga:users`. | 
|  | // Adding mixed `MetricType` (E.g., `CURRENCY` + `PERCENTAGE`) | 
|  | // metrics | 
|  | // will result in unexpected results. | 
|  | Expression string `json:"expression,omitempty"` | 
|  |  | 
|  | // FormattingType: Specifies how the metric expression should be | 
|  | // formatted, for example | 
|  | // `INTEGER`. | 
|  | // | 
|  | // Possible values: | 
|  | //   "METRIC_TYPE_UNSPECIFIED" - Metric type is unspecified. | 
|  | //   "INTEGER" - Integer metric. | 
|  | //   "FLOAT" - Float metric. | 
|  | //   "CURRENCY" - Currency metric. | 
|  | //   "PERCENT" - Percentage metric. | 
|  | //   "TIME" - Time metric in `HH:MM:SS` format. | 
|  | FormattingType string `json:"formattingType,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Alias") 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. "Alias") 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 *Metric) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod Metric | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // MetricFilter: MetricFilter specifies the filter on a metric. | 
|  | type MetricFilter struct { | 
|  | // ComparisonValue: The value to compare against. | 
|  | ComparisonValue string `json:"comparisonValue,omitempty"` | 
|  |  | 
|  | // MetricName: The metric that will be filtered on. A metricFilter must | 
|  | // contain a metric | 
|  | // name. A metric name can be an alias earlier defined as a metric or it | 
|  | // can | 
|  | // also be a metric expression. | 
|  | MetricName string `json:"metricName,omitempty"` | 
|  |  | 
|  | // Not: Logical `NOT` operator. If this boolean is set to true, then the | 
|  | // matching | 
|  | // metric values will be excluded in the report. The default is false. | 
|  | Not bool `json:"not,omitempty"` | 
|  |  | 
|  | // Operator: Is the metric `EQUAL`, `LESS_THAN` or `GREATER_THAN` | 
|  | // the | 
|  | // comparisonValue, the default is `EQUAL`. If the operator | 
|  | // is | 
|  | // `IS_MISSING`, checks if the metric is missing and would ignore | 
|  | // the | 
|  | // comparisonValue. | 
|  | // | 
|  | // Possible values: | 
|  | //   "OPERATOR_UNSPECIFIED" - If the operator is not specified, it is | 
|  | // treated as `EQUAL`. | 
|  | //   "EQUAL" - Should the value of the metric be exactly equal to the | 
|  | // comparison value. | 
|  | //   "LESS_THAN" - Should the value of the metric be less than to the | 
|  | // comparison value. | 
|  | //   "GREATER_THAN" - Should the value of the metric be greater than to | 
|  | // the comparison value. | 
|  | //   "IS_MISSING" - Validates if the metric is missing. | 
|  | // Doesn't take comparisonValue into account. | 
|  | Operator string `json:"operator,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "ComparisonValue") 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. "ComparisonValue") 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 *MetricFilter) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod MetricFilter | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // MetricFilterClause: Represents a group of metric filters. | 
|  | // Set the operator value to specify how the filters are logically | 
|  | // combined. | 
|  | type MetricFilterClause struct { | 
|  | // Filters: The repeated set of filters. They are logically combined | 
|  | // based on the | 
|  | // operator specified. | 
|  | Filters []*MetricFilter `json:"filters,omitempty"` | 
|  |  | 
|  | // Operator: The operator for combining multiple metric filters. If | 
|  | // unspecified, it is | 
|  | // treated as an `OR`. | 
|  | // | 
|  | // Possible values: | 
|  | //   "OPERATOR_UNSPECIFIED" - Unspecified operator. It is treated as an | 
|  | // `OR`. | 
|  | //   "OR" - The logical `OR` operator. | 
|  | //   "AND" - The logical `AND` operator. | 
|  | Operator string `json:"operator,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Filters") 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. "Filters") 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 *MetricFilterClause) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod MetricFilterClause | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // MetricHeader: The headers for the metrics. | 
|  | type MetricHeader struct { | 
|  | // MetricHeaderEntries: Headers for the metrics in the response. | 
|  | MetricHeaderEntries []*MetricHeaderEntry `json:"metricHeaderEntries,omitempty"` | 
|  |  | 
|  | // PivotHeaders: Headers for the pivots in the response. | 
|  | PivotHeaders []*PivotHeader `json:"pivotHeaders,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "MetricHeaderEntries") | 
|  | // 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. "MetricHeaderEntries") 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 *MetricHeader) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod MetricHeader | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // MetricHeaderEntry: Header for the metrics. | 
|  | type MetricHeaderEntry struct { | 
|  | // Name: The name of the header. | 
|  | Name string `json:"name,omitempty"` | 
|  |  | 
|  | // Type: The type of the metric, for example `INTEGER`. | 
|  | // | 
|  | // Possible values: | 
|  | //   "METRIC_TYPE_UNSPECIFIED" - Metric type is unspecified. | 
|  | //   "INTEGER" - Integer metric. | 
|  | //   "FLOAT" - Float metric. | 
|  | //   "CURRENCY" - Currency metric. | 
|  | //   "PERCENT" - Percentage metric. | 
|  | //   "TIME" - Time metric in `HH:MM:SS` format. | 
|  | Type string `json:"type,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Name") 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. "Name") 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 *MetricHeaderEntry) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod MetricHeaderEntry | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // OrFiltersForSegment: A list of segment filters in the `OR` group are | 
|  | // combined with the logical OR | 
|  | // operator. | 
|  | type OrFiltersForSegment struct { | 
|  | // SegmentFilterClauses: List of segment filters to be combined with a | 
|  | // `OR` operator. | 
|  | SegmentFilterClauses []*SegmentFilterClause `json:"segmentFilterClauses,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. | 
|  | // "SegmentFilterClauses") 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. "SegmentFilterClauses") 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 *OrFiltersForSegment) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod OrFiltersForSegment | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // OrderBy: Specifies the sorting options. | 
|  | type OrderBy struct { | 
|  | // FieldName: The field which to sort by. The default sort order is | 
|  | // ascending. Example: | 
|  | // `ga:browser`. | 
|  | // Note, that you can only specify one field for sort here. For | 
|  | // example, | 
|  | // `ga:browser, ga:city` is not valid. | 
|  | FieldName string `json:"fieldName,omitempty"` | 
|  |  | 
|  | // OrderType: The order type. The default orderType is `VALUE`. | 
|  | // | 
|  | // Possible values: | 
|  | //   "ORDER_TYPE_UNSPECIFIED" - Unspecified order type will be treated | 
|  | // as sort based on value. | 
|  | //   "VALUE" - The sort order is based on the value of the chosen | 
|  | // column; looks only at | 
|  | // the first date range. | 
|  | //   "DELTA" - The sort order is based on the difference of the values | 
|  | // of the chosen | 
|  | // column between the first two date ranges.  Usable only if there | 
|  | // are | 
|  | // exactly two date ranges. | 
|  | //   "SMART" - The sort order is based on weighted value of the chosen | 
|  | // column.  If | 
|  | // column has n/d format, then weighted value of this ratio will | 
|  | // be `(n + totals.n)/(d + totals.d)` Usable only for metrics | 
|  | // that | 
|  | // represent ratios. | 
|  | //   "HISTOGRAM_BUCKET" - Histogram order type is applicable only to | 
|  | // dimension columns with | 
|  | // non-empty histogram-buckets. | 
|  | //   "DIMENSION_AS_INTEGER" - If the dimensions are fixed length | 
|  | // numbers, ordinary sort would just | 
|  | // work fine. `DIMENSION_AS_INTEGER` can be used if the dimensions | 
|  | // are | 
|  | // variable length numbers. | 
|  | OrderType string `json:"orderType,omitempty"` | 
|  |  | 
|  | // SortOrder: The sorting order for the field. | 
|  | // | 
|  | // Possible values: | 
|  | //   "SORT_ORDER_UNSPECIFIED" - If the sort order is unspecified, the | 
|  | // default is ascending. | 
|  | //   "ASCENDING" - Ascending sort. The field will be sorted in an | 
|  | // ascending manner. | 
|  | //   "DESCENDING" - Descending sort. The field will be sorted in a | 
|  | // descending manner. | 
|  | SortOrder string `json:"sortOrder,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "FieldName") 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. "FieldName") 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 *OrderBy) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod OrderBy | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // PageviewData: Represents details collected when the visitor views a | 
|  | // page. | 
|  | type PageviewData struct { | 
|  | // PagePath: The URL of the page that the visitor viewed. | 
|  | PagePath string `json:"pagePath,omitempty"` | 
|  |  | 
|  | // PageTitle: The title of the page that the visitor viewed. | 
|  | PageTitle string `json:"pageTitle,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "PagePath") 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. "PagePath") 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 *PageviewData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod PageviewData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // Pivot: The Pivot describes the pivot section in the request. | 
|  | // The Pivot helps rearrange the information in the table for certain | 
|  | // reports | 
|  | // by pivoting your data on a second dimension. | 
|  | type Pivot struct { | 
|  | // DimensionFilterClauses: DimensionFilterClauses are logically combined | 
|  | // with an `AND` operator: only | 
|  | // data that is included by all these DimensionFilterClauses contributes | 
|  | // to | 
|  | // the values in this pivot region. Dimension filters can be used to | 
|  | // restrict | 
|  | // the columns shown in the pivot region. For example if you | 
|  | // have | 
|  | // `ga:browser` as the requested dimension in the pivot region, and | 
|  | // you | 
|  | // specify key filters to restrict `ga:browser` to only "IE" or | 
|  | // "Firefox", | 
|  | // then only those two browsers would show up as columns. | 
|  | DimensionFilterClauses []*DimensionFilterClause `json:"dimensionFilterClauses,omitempty"` | 
|  |  | 
|  | // Dimensions: A list of dimensions to show as pivot columns. A Pivot | 
|  | // can have a maximum | 
|  | // of 4 dimensions. Pivot dimensions are part of the restriction on | 
|  | // the | 
|  | // total number of dimensions allowed in the request. | 
|  | Dimensions []*Dimension `json:"dimensions,omitempty"` | 
|  |  | 
|  | // MaxGroupCount: Specifies the maximum number of groups to return. | 
|  | // The default value is 10, also the maximum value is 1,000. | 
|  | MaxGroupCount int64 `json:"maxGroupCount,omitempty"` | 
|  |  | 
|  | // Metrics: The pivot metrics. Pivot metrics are part of the | 
|  | // restriction on total number of metrics allowed in the request. | 
|  | Metrics []*Metric `json:"metrics,omitempty"` | 
|  |  | 
|  | // StartGroup: If k metrics were requested, then the response will | 
|  | // contain some | 
|  | // data-dependent multiple of k columns in the report.  E.g., if you | 
|  | // pivoted | 
|  | // on the dimension `ga:browser` then you'd get k columns for "Firefox", | 
|  | // k | 
|  | // columns for "IE", k columns for "Chrome", etc. The ordering of the | 
|  | // groups | 
|  | // of columns is determined by descending order of "total" for the first | 
|  | // of | 
|  | // the k values.  Ties are broken by lexicographic ordering of the | 
|  | // first | 
|  | // pivot dimension, then lexicographic ordering of the second | 
|  | // pivot | 
|  | // dimension, and so on.  E.g., if the totals for the first value | 
|  | // for | 
|  | // Firefox, IE, and Chrome were 8, 2, 8, respectively, the order of | 
|  | // columns | 
|  | // would be Chrome, Firefox, IE. | 
|  | // | 
|  | // The following let you choose which of the groups of k columns | 
|  | // are | 
|  | // included in the response. | 
|  | StartGroup int64 `json:"startGroup,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. | 
|  | // "DimensionFilterClauses") 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. "DimensionFilterClauses") | 
|  | // 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 *Pivot) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod Pivot | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // PivotHeader: The headers for each of the pivot sections defined in | 
|  | // the request. | 
|  | type PivotHeader struct { | 
|  | // PivotHeaderEntries: A single pivot section header. | 
|  | PivotHeaderEntries []*PivotHeaderEntry `json:"pivotHeaderEntries,omitempty"` | 
|  |  | 
|  | // TotalPivotGroupsCount: The total number of groups for this pivot. | 
|  | TotalPivotGroupsCount int64 `json:"totalPivotGroupsCount,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "PivotHeaderEntries") | 
|  | // 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. "PivotHeaderEntries") 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 *PivotHeader) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod PivotHeader | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // PivotHeaderEntry: The headers for the each of the metric column | 
|  | // corresponding to the metrics | 
|  | // requested in the pivots section of the response. | 
|  | type PivotHeaderEntry struct { | 
|  | // DimensionNames: The name of the dimensions in the pivot response. | 
|  | DimensionNames []string `json:"dimensionNames,omitempty"` | 
|  |  | 
|  | // DimensionValues: The values for the dimensions in the pivot. | 
|  | DimensionValues []string `json:"dimensionValues,omitempty"` | 
|  |  | 
|  | // Metric: The metric header for the metric in the pivot. | 
|  | Metric *MetricHeaderEntry `json:"metric,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "DimensionNames") 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. "DimensionNames") 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 *PivotHeaderEntry) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod PivotHeaderEntry | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // PivotValueRegion: The metric values in the pivot region. | 
|  | type PivotValueRegion struct { | 
|  | // Values: The values of the metrics in each of the pivot regions. | 
|  | Values []string `json:"values,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Values") 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. "Values") 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 *PivotValueRegion) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod PivotValueRegion | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // ProductData: Details of the products in an e-commerce transaction. | 
|  | type ProductData struct { | 
|  | // ItemRevenue: The total revenue from purchased product items. | 
|  | ItemRevenue float64 `json:"itemRevenue,omitempty"` | 
|  |  | 
|  | // ProductName: The product name, supplied by the e-commerce tracking | 
|  | // application, for | 
|  | // the purchased items. | 
|  | ProductName string `json:"productName,omitempty"` | 
|  |  | 
|  | // ProductQuantity: Total number of this product units in the | 
|  | // transaction. | 
|  | ProductQuantity int64 `json:"productQuantity,omitempty,string"` | 
|  |  | 
|  | // ProductSku: Unique code that represents the product. | 
|  | ProductSku string `json:"productSku,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "ItemRevenue") 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. "ItemRevenue") 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 *ProductData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod ProductData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | func (s *ProductData) UnmarshalJSON(data []byte) error { | 
|  | type NoMethod ProductData | 
|  | var s1 struct { | 
|  | ItemRevenue gensupport.JSONFloat64 `json:"itemRevenue"` | 
|  | *NoMethod | 
|  | } | 
|  | s1.NoMethod = (*NoMethod)(s) | 
|  | if err := json.Unmarshal(data, &s1); err != nil { | 
|  | return err | 
|  | } | 
|  | s.ItemRevenue = float64(s1.ItemRevenue) | 
|  | return nil | 
|  | } | 
|  |  | 
|  | // Report: The data response corresponding to the request. | 
|  | type Report struct { | 
|  | // ColumnHeader: The column headers. | 
|  | ColumnHeader *ColumnHeader `json:"columnHeader,omitempty"` | 
|  |  | 
|  | // Data: Response data. | 
|  | Data *ReportData `json:"data,omitempty"` | 
|  |  | 
|  | // NextPageToken: Page token to retrieve the next page of results in the | 
|  | // list. | 
|  | NextPageToken string `json:"nextPageToken,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "ColumnHeader") 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. "ColumnHeader") 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 *Report) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod Report | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // ReportData: The data part of the report. | 
|  | type ReportData struct { | 
|  | // DataLastRefreshed: The last time the data in the report was | 
|  | // refreshed. All the hits received | 
|  | // before this timestamp are included in the calculation of the report. | 
|  | DataLastRefreshed string `json:"dataLastRefreshed,omitempty"` | 
|  |  | 
|  | // IsDataGolden: Indicates if response to this request is golden or not. | 
|  | // Data is | 
|  | // golden when the exact same request will not produce any new results | 
|  | // if | 
|  | // asked at a later point in time. | 
|  | IsDataGolden bool `json:"isDataGolden,omitempty"` | 
|  |  | 
|  | // Maximums: Minimum and maximum values seen over all matching rows. | 
|  | // These are both | 
|  | // empty when `hideValueRanges` in the request is false, or | 
|  | // when | 
|  | // rowCount is zero. | 
|  | Maximums []*DateRangeValues `json:"maximums,omitempty"` | 
|  |  | 
|  | // Minimums: Minimum and maximum values seen over all matching rows. | 
|  | // These are both | 
|  | // empty when `hideValueRanges` in the request is false, or | 
|  | // when | 
|  | // rowCount is zero. | 
|  | Minimums []*DateRangeValues `json:"minimums,omitempty"` | 
|  |  | 
|  | // RowCount: Total number of matching rows for this query. | 
|  | RowCount int64 `json:"rowCount,omitempty"` | 
|  |  | 
|  | // Rows: There's one ReportRow for every unique combination of | 
|  | // dimensions. | 
|  | Rows []*ReportRow `json:"rows,omitempty"` | 
|  |  | 
|  | // SamplesReadCounts: If the results | 
|  | // are | 
|  | // [sampled](https://support.google.com/analytics/answer/2637192), | 
|  | // th | 
|  | // is returns the total number of samples read, one entry per date | 
|  | // range. | 
|  | // If the results are not sampled this field will not be defined. | 
|  | // See | 
|  | // [developer | 
|  | // guide](/analytics/devguides/reporting/core/v4/basics#sampling) | 
|  | // for details. | 
|  | SamplesReadCounts googleapi.Int64s `json:"samplesReadCounts,omitempty"` | 
|  |  | 
|  | // SamplingSpaceSizes: If the results | 
|  | // are | 
|  | // [sampled](https://support.google.com/analytics/answer/2637192), | 
|  | // th | 
|  | // is returns the total number of | 
|  | // samples present, one entry per date range. If the results are not | 
|  | // sampled | 
|  | // this field will not be defined. See | 
|  | // [developer | 
|  | // guide](/analytics/devguides/reporting/core/v4/basics#sampling) | 
|  | // for details. | 
|  | SamplingSpaceSizes googleapi.Int64s `json:"samplingSpaceSizes,omitempty"` | 
|  |  | 
|  | // Totals: For each requested date range, for the set of all rows that | 
|  | // match | 
|  | // the query, every requested value format gets a total. The total | 
|  | // for a value format is computed by first totaling the | 
|  | // metrics | 
|  | // mentioned in the value format and then evaluating the value | 
|  | // format as a scalar expression.  E.g., The "totals" for | 
|  | // `3 / (ga:sessions + 2)` we compute | 
|  | // `3 / ((sum of all relevant ga:sessions) + 2)`. | 
|  | // Totals are computed before pagination. | 
|  | Totals []*DateRangeValues `json:"totals,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "DataLastRefreshed") | 
|  | // 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. "DataLastRefreshed") 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 *ReportData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod ReportData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // ReportRequest: The main request class which specifies the Reporting | 
|  | // API request. | 
|  | type ReportRequest struct { | 
|  | // CohortGroup: Cohort group associated with this request. If there is a | 
|  | // cohort group | 
|  | // in the request the `ga:cohort` dimension must be present. | 
|  | // Every [ReportRequest](#ReportRequest) within a `batchGet` method | 
|  | // must | 
|  | // contain the same `cohortGroup` definition. | 
|  | CohortGroup *CohortGroup `json:"cohortGroup,omitempty"` | 
|  |  | 
|  | // DateRanges: Date ranges in the request. The request can have a | 
|  | // maximum of 2 date | 
|  | // ranges. The response will contain a set of metric values for | 
|  | // each | 
|  | // combination of the dimensions for each date range in the request. So, | 
|  | // if | 
|  | // there are two date ranges, there will be two set of metric values, | 
|  | // one for | 
|  | // the original date range and one for the second date range. | 
|  | // The `reportRequest.dateRanges` field should not be specified for | 
|  | // cohorts | 
|  | // or Lifetime value requests. | 
|  | // If a date range is not provided, the default date range is | 
|  | // (startDate: | 
|  | // current date - 7 days, endDate: current date - 1 day). | 
|  | // Every | 
|  | // [ReportRequest](#ReportRequest) within a `batchGet` method | 
|  | // must | 
|  | // contain the same `dateRanges` definition. | 
|  | DateRanges []*DateRange `json:"dateRanges,omitempty"` | 
|  |  | 
|  | // DimensionFilterClauses: The dimension filter clauses for filtering | 
|  | // Dimension Values. They are | 
|  | // logically combined with the `AND` operator. Note that filtering | 
|  | // occurs | 
|  | // before any dimensions are aggregated, so that the returned | 
|  | // metrics | 
|  | // represent the total for only the relevant dimensions. | 
|  | DimensionFilterClauses []*DimensionFilterClause `json:"dimensionFilterClauses,omitempty"` | 
|  |  | 
|  | // Dimensions: The dimensions requested. | 
|  | // Requests can have a total of 9 dimensions. | 
|  | Dimensions []*Dimension `json:"dimensions,omitempty"` | 
|  |  | 
|  | // FiltersExpression: Dimension or metric filters that restrict the data | 
|  | // returned for your | 
|  | // request. To use the `filtersExpression`, supply a dimension or metric | 
|  | // on | 
|  | // which to filter, followed by the filter expression. For example, | 
|  | // the | 
|  | // following expression selects `ga:browser` dimension which starts | 
|  | // with | 
|  | // Firefox; `ga:browser=~^Firefox`. For more information on | 
|  | // dimensions | 
|  | // and metric filters, | 
|  | // see | 
|  | // [Filters | 
|  | // reference](https://developers.google.com/analytics/devgui | 
|  | // des/reporting/core/v3/reference#filters). | 
|  | FiltersExpression string `json:"filtersExpression,omitempty"` | 
|  |  | 
|  | // HideTotals: If set to true, hides the total of all metrics for all | 
|  | // the matching rows, | 
|  | // for every date range. The default false and will return the totals. | 
|  | HideTotals bool `json:"hideTotals,omitempty"` | 
|  |  | 
|  | // HideValueRanges: If set to true, hides the minimum and maximum across | 
|  | // all matching rows. | 
|  | // The default is false and the value ranges are returned. | 
|  | HideValueRanges bool `json:"hideValueRanges,omitempty"` | 
|  |  | 
|  | // IncludeEmptyRows: If set to false, the response does not include rows | 
|  | // if all the retrieved | 
|  | // metrics are equal to zero. The default is false which will exclude | 
|  | // these | 
|  | // rows. | 
|  | IncludeEmptyRows bool `json:"includeEmptyRows,omitempty"` | 
|  |  | 
|  | // MetricFilterClauses: The metric filter clauses. They are logically | 
|  | // combined with the `AND` | 
|  | // operator.  Metric filters look at only the first date range and not | 
|  | // the | 
|  | // comparing date range. Note that filtering on metrics occurs after | 
|  | // the | 
|  | // metrics are aggregated. | 
|  | MetricFilterClauses []*MetricFilterClause `json:"metricFilterClauses,omitempty"` | 
|  |  | 
|  | // Metrics: The metrics requested. | 
|  | // Requests must specify at least one metric. Requests can have a | 
|  | // total of 10 metrics. | 
|  | Metrics []*Metric `json:"metrics,omitempty"` | 
|  |  | 
|  | // OrderBys: Sort order on output rows. To compare two rows, the | 
|  | // elements of the | 
|  | // following are applied in order until a difference is found.  All | 
|  | // date | 
|  | // ranges in the output get the same row order. | 
|  | OrderBys []*OrderBy `json:"orderBys,omitempty"` | 
|  |  | 
|  | // PageSize: Page size is for paging and specifies the maximum number of | 
|  | // returned rows. | 
|  | // Page size should be >= 0. A query returns the default of 1,000 | 
|  | // rows. | 
|  | // The Analytics Core Reporting API returns a maximum of 100,000 rows | 
|  | // per | 
|  | // request, no matter how many you ask for. It can also return fewer | 
|  | // rows | 
|  | // than requested, if there aren't as many dimension segments as you | 
|  | // expect. | 
|  | // For instance, there are fewer than 300 possible values for | 
|  | // `ga:country`, | 
|  | // so when segmenting only by country, you can't get more than 300 | 
|  | // rows, | 
|  | // even if you set `pageSize` to a higher value. | 
|  | PageSize int64 `json:"pageSize,omitempty"` | 
|  |  | 
|  | // PageToken: A continuation token to get the next page of the results. | 
|  | // Adding this to | 
|  | // the request will return the rows after the pageToken. The pageToken | 
|  | // should | 
|  | // be the value returned in the nextPageToken parameter in the response | 
|  | // to | 
|  | // the GetReports request. | 
|  | PageToken string `json:"pageToken,omitempty"` | 
|  |  | 
|  | // Pivots: The pivot definitions. Requests can have a maximum of 2 | 
|  | // pivots. | 
|  | Pivots []*Pivot `json:"pivots,omitempty"` | 
|  |  | 
|  | // SamplingLevel: The desired | 
|  | // report | 
|  | // [sample](https://support.google.com/analytics/answer/2637192) | 
|  | // size. | 
|  | // If the the `samplingLevel` field is unspecified the `DEFAULT` | 
|  | // sampling | 
|  | // level is used. Every [ReportRequest](#ReportRequest) within | 
|  | // a | 
|  | // `batchGet` method must contain the same `samplingLevel` definition. | 
|  | // See | 
|  | // [developer | 
|  | // guide](/analytics/devguides/reporting/core/v4/basics#sampling) | 
|  | //  for details. | 
|  | // | 
|  | // Possible values: | 
|  | //   "SAMPLING_UNSPECIFIED" - If the `samplingLevel` field is | 
|  | // unspecified the `DEFAULT` sampling level | 
|  | // is used. | 
|  | //   "DEFAULT" - Returns response with a sample size that balances speed | 
|  | // and | 
|  | // accuracy. | 
|  | //   "SMALL" - It returns a fast response with a smaller sampling size. | 
|  | //   "LARGE" - Returns a more accurate response using a large sampling | 
|  | // size. But this | 
|  | // may result in response being slower. | 
|  | SamplingLevel string `json:"samplingLevel,omitempty"` | 
|  |  | 
|  | // Segments: Segment the data returned for the request. A segment | 
|  | // definition helps look | 
|  | // at a subset of the segment request. A request can contain up to | 
|  | // four | 
|  | // segments. Every [ReportRequest](#ReportRequest) within a | 
|  | // `batchGet` method must contain the same `segments` definition. | 
|  | // Requests | 
|  | // with segments must have the `ga:segment` dimension. | 
|  | Segments []*Segment `json:"segments,omitempty"` | 
|  |  | 
|  | // ViewId: The Analytics | 
|  | // [view ID](https://support.google.com/analytics/answer/1009618) | 
|  | // from which to retrieve data. Every | 
|  | // [ReportRequest](#ReportRequest) | 
|  | // within a `batchGet` method must contain the same `viewId`. | 
|  | ViewId string `json:"viewId,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "CohortGroup") 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. "CohortGroup") 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 *ReportRequest) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod ReportRequest | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // ReportRow: A row in the report. | 
|  | type ReportRow struct { | 
|  | // Dimensions: List of requested dimensions. | 
|  | Dimensions []string `json:"dimensions,omitempty"` | 
|  |  | 
|  | // Metrics: List of metrics for each requested DateRange. | 
|  | Metrics []*DateRangeValues `json:"metrics,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Dimensions") 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. "Dimensions") 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 *ReportRow) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod ReportRow | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // ResourceQuotasRemaining: The resource quota tokens remaining for the | 
|  | // property after the request is | 
|  | // completed. | 
|  | type ResourceQuotasRemaining struct { | 
|  | // DailyQuotaTokensRemaining: Daily resource quota remaining remaining. | 
|  | DailyQuotaTokensRemaining int64 `json:"dailyQuotaTokensRemaining,omitempty"` | 
|  |  | 
|  | // HourlyQuotaTokensRemaining: Hourly resource quota tokens remaining. | 
|  | HourlyQuotaTokensRemaining int64 `json:"hourlyQuotaTokensRemaining,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. | 
|  | // "DailyQuotaTokensRemaining") 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. | 
|  | // "DailyQuotaTokensRemaining") 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 *ResourceQuotasRemaining) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod ResourceQuotasRemaining | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | type ScreenviewData struct { | 
|  | // AppName: The application name. | 
|  | AppName string `json:"appName,omitempty"` | 
|  |  | 
|  | // MobileDeviceBranding: Mobile manufacturer or branded name. Eg: | 
|  | // "Google", "Apple" etc. | 
|  | MobileDeviceBranding string `json:"mobileDeviceBranding,omitempty"` | 
|  |  | 
|  | // MobileDeviceModel: Mobile device model. Eg: "Pixel", "iPhone" etc. | 
|  | MobileDeviceModel string `json:"mobileDeviceModel,omitempty"` | 
|  |  | 
|  | // ScreenName: The name of the screen. | 
|  | ScreenName string `json:"screenName,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "AppName") 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. "AppName") 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 *ScreenviewData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod ScreenviewData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SearchUserActivityRequest: The request to fetch User Report from | 
|  | // Reporting API `userActivity:get` call. | 
|  | type SearchUserActivityRequest struct { | 
|  | // ActivityTypes: Set of all activity types being requested. Only | 
|  | // acvities matching these | 
|  | // types will be returned in the response. If empty, all activies will | 
|  | // be | 
|  | // returned. | 
|  | // | 
|  | // Possible values: | 
|  | //   "ACTIVITY_TYPE_UNSPECIFIED" - ActivityType will never have this | 
|  | // value in the response. Using this type in | 
|  | // the request will result in an error. | 
|  | //   "PAGEVIEW" - Used when the activity resulted out of a visitor | 
|  | // viewing a page. | 
|  | //   "SCREENVIEW" - Used when the activity resulted out of a visitor | 
|  | // using an application on a | 
|  | // mobile device. | 
|  | //   "GOAL" - Used to denote that a goal type activity. | 
|  | //   "ECOMMERCE" - An e-commerce transaction was performed by the | 
|  | // visitor on the page. | 
|  | //   "EVENT" - Used when the activity is an event. | 
|  | ActivityTypes []string `json:"activityTypes,omitempty"` | 
|  |  | 
|  | // DateRange: Date range for which to retrieve the user activity. If a | 
|  | // date range is not | 
|  | // provided, the default date range is (startDate: current date - 7 | 
|  | // days, | 
|  | // endDate: current date - 1 day). | 
|  | DateRange *DateRange `json:"dateRange,omitempty"` | 
|  |  | 
|  | // PageSize: Page size is for paging and specifies the maximum number of | 
|  | // returned rows. | 
|  | // Page size should be > 0. If the value is 0 or if the field isn't | 
|  | // specified, | 
|  | // the request returns the default of 1000 rows per page. | 
|  | PageSize int64 `json:"pageSize,omitempty"` | 
|  |  | 
|  | // PageToken: A continuation token to get the next page of the results. | 
|  | // Adding this to | 
|  | // the request will return the rows after the pageToken. The pageToken | 
|  | // should | 
|  | // be the value returned in the nextPageToken parameter in the response | 
|  | // to | 
|  | // the [SearchUserActivityRequest](#SearchUserActivityRequest) request. | 
|  | PageToken string `json:"pageToken,omitempty"` | 
|  |  | 
|  | // User: Required. Unique user Id to query for. | 
|  | // Every | 
|  | // [SearchUserActivityRequest](#SearchUserActivityRequest) must contain | 
|  | // this | 
|  | // field. | 
|  | User *User `json:"user,omitempty"` | 
|  |  | 
|  | // ViewId: Required. The Analytics | 
|  | // [view ID](https://support.google.com/analytics/answer/1009618) | 
|  | // from which to retrieve data. | 
|  | // Every | 
|  | // [SearchUserActivityRequest](#SearchUserActivityRequest) must contain | 
|  | // the | 
|  | // `viewId`. | 
|  | ViewId string `json:"viewId,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "ActivityTypes") 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. "ActivityTypes") 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 *SearchUserActivityRequest) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SearchUserActivityRequest | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SearchUserActivityResponse: The response from `userActivity:get` | 
|  | // call. | 
|  | type SearchUserActivityResponse struct { | 
|  | // NextPageToken: This token should be passed | 
|  | // to | 
|  | // [SearchUserActivityRequest](#SearchUserActivityRequest) to retrieve | 
|  | // the | 
|  | // next page. | 
|  | NextPageToken string `json:"nextPageToken,omitempty"` | 
|  |  | 
|  | // SampleRate: This field represents the | 
|  | // [sampling rate](https://support.google.com/analytics/answer/2637192) | 
|  | // for | 
|  | // the given request and is a number between 0.0 to 1.0. See | 
|  | // [developer | 
|  | // guide](/analytics/devguides/reporting/core/v4/basics#sampling) | 
|  | // for details. | 
|  | SampleRate float64 `json:"sampleRate,omitempty"` | 
|  |  | 
|  | // Sessions: Each record represents a session (device details, duration, | 
|  | // etc). | 
|  | Sessions []*UserActivitySession `json:"sessions,omitempty"` | 
|  |  | 
|  | // TotalRows: Total rows returned by this query (across different | 
|  | // pages). | 
|  | TotalRows int64 `json:"totalRows,omitempty"` | 
|  |  | 
|  | // ServerResponse contains the HTTP response code and headers from the | 
|  | // server. | 
|  | googleapi.ServerResponse `json:"-"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "NextPageToken") 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. "NextPageToken") 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 *SearchUserActivityResponse) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SearchUserActivityResponse | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | func (s *SearchUserActivityResponse) UnmarshalJSON(data []byte) error { | 
|  | type NoMethod SearchUserActivityResponse | 
|  | var s1 struct { | 
|  | SampleRate gensupport.JSONFloat64 `json:"sampleRate"` | 
|  | *NoMethod | 
|  | } | 
|  | s1.NoMethod = (*NoMethod)(s) | 
|  | if err := json.Unmarshal(data, &s1); err != nil { | 
|  | return err | 
|  | } | 
|  | s.SampleRate = float64(s1.SampleRate) | 
|  | return nil | 
|  | } | 
|  |  | 
|  | // Segment: The segment definition, if the report needs to be | 
|  | // segmented. | 
|  | // A Segment is a subset of the Analytics data. For example, of the | 
|  | // entire | 
|  | // set of users, one Segment might be users from a particular country or | 
|  | // city. | 
|  | type Segment struct { | 
|  | // DynamicSegment: A dynamic segment definition in the request. | 
|  | DynamicSegment *DynamicSegment `json:"dynamicSegment,omitempty"` | 
|  |  | 
|  | // SegmentId: The segment ID of a built-in or custom segment, for | 
|  | // example `gaid::-3`. | 
|  | SegmentId string `json:"segmentId,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "DynamicSegment") 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. "DynamicSegment") 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 *Segment) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod Segment | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SegmentDefinition: SegmentDefinition defines the segment to be a set | 
|  | // of SegmentFilters which | 
|  | // are combined together with a logical `AND` operation. | 
|  | type SegmentDefinition struct { | 
|  | // SegmentFilters: A segment is defined by a set of segment filters | 
|  | // which are combined | 
|  | // together with a logical `AND` operation. | 
|  | SegmentFilters []*SegmentFilter `json:"segmentFilters,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "SegmentFilters") 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. "SegmentFilters") 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 *SegmentDefinition) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SegmentDefinition | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SegmentDimensionFilter: Dimension filter specifies the filtering | 
|  | // options on a dimension. | 
|  | type SegmentDimensionFilter struct { | 
|  | // CaseSensitive: Should the match be case sensitive, ignored for | 
|  | // `IN_LIST` operator. | 
|  | CaseSensitive bool `json:"caseSensitive,omitempty"` | 
|  |  | 
|  | // DimensionName: Name of the dimension for which the filter is being | 
|  | // applied. | 
|  | DimensionName string `json:"dimensionName,omitempty"` | 
|  |  | 
|  | // Expressions: The list of expressions, only the first element is used | 
|  | // for all operators | 
|  | Expressions []string `json:"expressions,omitempty"` | 
|  |  | 
|  | // MaxComparisonValue: Maximum comparison values for `BETWEEN` match | 
|  | // type. | 
|  | MaxComparisonValue string `json:"maxComparisonValue,omitempty"` | 
|  |  | 
|  | // MinComparisonValue: Minimum comparison values for `BETWEEN` match | 
|  | // type. | 
|  | MinComparisonValue string `json:"minComparisonValue,omitempty"` | 
|  |  | 
|  | // Operator: The operator to use to match the dimension with the | 
|  | // expressions. | 
|  | // | 
|  | // Possible values: | 
|  | //   "OPERATOR_UNSPECIFIED" - If the match type is unspecified, it is | 
|  | // treated as a REGEXP. | 
|  | //   "REGEXP" - The match expression is treated as a regular expression. | 
|  | // All other match | 
|  | // types are not treated as regular expressions. | 
|  | //   "BEGINS_WITH" - Matches the values which begin with the match | 
|  | // expression provided. | 
|  | //   "ENDS_WITH" - Matches the values which end with the match | 
|  | // expression provided. | 
|  | //   "PARTIAL" - Substring match. | 
|  | //   "EXACT" - The value should match the match expression entirely. | 
|  | //   "IN_LIST" - This option is used to specify a dimension filter whose | 
|  | // expression can | 
|  | // take any value from a selected list of values. This helps | 
|  | // avoiding | 
|  | // evaluating multiple exact match dimension filters which are OR'ed | 
|  | // for | 
|  | // every single response row. For example: | 
|  | // | 
|  | //     expressions: ["A", "B", "C"] | 
|  | // | 
|  | // Any response row whose dimension has it is value as A, B or C, | 
|  | // matches | 
|  | // this DimensionFilter. | 
|  | //   "NUMERIC_LESS_THAN" - Integer comparison filters. | 
|  | // case sensitivity is ignored for these and the expression | 
|  | // is assumed to be a string representing an integer. | 
|  | // Failure conditions: | 
|  | // | 
|  | // - if expression is not a valid int64, the client should expect | 
|  | //   an error. | 
|  | // - input dimensions that are not valid int64 values will never match | 
|  | // the | 
|  | //   filter. | 
|  | // | 
|  | // Checks if the dimension is numerically less than the match | 
|  | // expression. | 
|  | //   "NUMERIC_GREATER_THAN" - Checks if the dimension is numerically | 
|  | // greater than the match | 
|  | // expression. | 
|  | //   "NUMERIC_BETWEEN" - Checks if the dimension is numerically between | 
|  | // the minimum and maximum | 
|  | // of the match expression, boundaries excluded. | 
|  | Operator string `json:"operator,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "CaseSensitive") 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. "CaseSensitive") 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 *SegmentDimensionFilter) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SegmentDimensionFilter | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SegmentFilter: SegmentFilter defines the segment to be either a | 
|  | // simple or a sequence | 
|  | // segment. A simple segment condition contains dimension and metric | 
|  | // conditions | 
|  | // to select the sessions or users. A sequence segment condition can be | 
|  | // used to | 
|  | // select users or sessions based on sequential conditions. | 
|  | type SegmentFilter struct { | 
|  | // Not: If true, match the complement of simple or sequence segment. | 
|  | // For example, to match all visits not from "New York", we can define | 
|  | // the | 
|  | // segment as follows: | 
|  | // | 
|  | //       "sessionSegment": { | 
|  | //         "segmentFilters": [{ | 
|  | //           "simpleSegment" :{ | 
|  | //             "orFiltersForSegment": [{ | 
|  | //               "segmentFilterClauses":[{ | 
|  | //                 "dimensionFilter": { | 
|  | //                   "dimensionName": "ga:city", | 
|  | //                   "expressions": ["New York"] | 
|  | //                 } | 
|  | //               }] | 
|  | //             }] | 
|  | //           }, | 
|  | //           "not": "True" | 
|  | //         }] | 
|  | //       }, | 
|  | Not bool `json:"not,omitempty"` | 
|  |  | 
|  | // SequenceSegment: Sequence conditions consist of one or more steps, | 
|  | // where each step is | 
|  | // defined by one or more dimension/metric conditions. Multiple steps | 
|  | // can | 
|  | // be combined with special sequence operators. | 
|  | SequenceSegment *SequenceSegment `json:"sequenceSegment,omitempty"` | 
|  |  | 
|  | // SimpleSegment: A Simple segment conditions consist of one or more | 
|  | // dimension/metric | 
|  | // conditions that can be combined | 
|  | SimpleSegment *SimpleSegment `json:"simpleSegment,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Not") 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. "Not") 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 *SegmentFilter) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SegmentFilter | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SegmentFilterClause: Filter Clause to be used in a segment | 
|  | // definition, can be wither a metric or | 
|  | // a dimension filter. | 
|  | type SegmentFilterClause struct { | 
|  | // DimensionFilter: Dimension Filter for the segment definition. | 
|  | DimensionFilter *SegmentDimensionFilter `json:"dimensionFilter,omitempty"` | 
|  |  | 
|  | // MetricFilter: Metric Filter for the segment definition. | 
|  | MetricFilter *SegmentMetricFilter `json:"metricFilter,omitempty"` | 
|  |  | 
|  | // Not: Matches the complement (`!`) of the filter. | 
|  | Not bool `json:"not,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "DimensionFilter") 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. "DimensionFilter") 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 *SegmentFilterClause) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SegmentFilterClause | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SegmentMetricFilter: Metric filter to be used in a segment filter | 
|  | // clause. | 
|  | type SegmentMetricFilter struct { | 
|  | // ComparisonValue: The value to compare against. If the operator is | 
|  | // `BETWEEN`, this value is | 
|  | // treated as minimum comparison value. | 
|  | ComparisonValue string `json:"comparisonValue,omitempty"` | 
|  |  | 
|  | // MaxComparisonValue: Max comparison value is only used for `BETWEEN` | 
|  | // operator. | 
|  | MaxComparisonValue string `json:"maxComparisonValue,omitempty"` | 
|  |  | 
|  | // MetricName: The metric that will be filtered on. A `metricFilter` | 
|  | // must contain a | 
|  | // metric name. | 
|  | MetricName string `json:"metricName,omitempty"` | 
|  |  | 
|  | // Operator: Specifies is the operation to perform to compare the | 
|  | // metric. The default | 
|  | // is `EQUAL`. | 
|  | // | 
|  | // Possible values: | 
|  | //   "UNSPECIFIED_OPERATOR" - Unspecified operator is treated as | 
|  | // `LESS_THAN` operator. | 
|  | //   "LESS_THAN" - Checks if the metric value is less than comparison | 
|  | // value. | 
|  | //   "GREATER_THAN" - Checks if the metric value is greater than | 
|  | // comparison value. | 
|  | //   "EQUAL" - Equals operator. | 
|  | //   "BETWEEN" - For between operator, both the minimum and maximum are | 
|  | // exclusive. | 
|  | // We will use `LT` and `GT` for comparison. | 
|  | Operator string `json:"operator,omitempty"` | 
|  |  | 
|  | // Scope: Scope for a metric defines the level at which that metric is | 
|  | // defined.  The | 
|  | // specified metric scope must be equal to or greater than its primary | 
|  | // scope | 
|  | // as defined in the data model. The primary scope is defined by if | 
|  | // the | 
|  | // segment is selecting users or sessions. | 
|  | // | 
|  | // Possible values: | 
|  | //   "UNSPECIFIED_SCOPE" - If the scope is unspecified, it defaults to | 
|  | // the condition scope, | 
|  | // `USER` or `SESSION` depending on if the segment is trying to | 
|  | // choose | 
|  | // users or sessions. | 
|  | //   "PRODUCT" - Product scope. | 
|  | //   "HIT" - Hit scope. | 
|  | //   "SESSION" - Session scope. | 
|  | //   "USER" - User scope. | 
|  | Scope string `json:"scope,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "ComparisonValue") 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. "ComparisonValue") 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 *SegmentMetricFilter) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SegmentMetricFilter | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SegmentSequenceStep: A segment sequence definition. | 
|  | type SegmentSequenceStep struct { | 
|  | // MatchType: Specifies if the step immediately precedes or can be any | 
|  | // time before the | 
|  | // next step. | 
|  | // | 
|  | // Possible values: | 
|  | //   "UNSPECIFIED_MATCH_TYPE" - Unspecified match type is treated as | 
|  | // precedes. | 
|  | //   "PRECEDES" - Operator indicates that the previous step precedes the | 
|  | // next step. | 
|  | //   "IMMEDIATELY_PRECEDES" - Operator indicates that the previous step | 
|  | // immediately precedes the next | 
|  | // step. | 
|  | MatchType string `json:"matchType,omitempty"` | 
|  |  | 
|  | // OrFiltersForSegment: A sequence is specified with a list of Or | 
|  | // grouped filters which are | 
|  | // combined with `AND` operator. | 
|  | OrFiltersForSegment []*OrFiltersForSegment `json:"orFiltersForSegment,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "MatchType") 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. "MatchType") 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 *SegmentSequenceStep) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SegmentSequenceStep | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SequenceSegment: Sequence conditions consist of one or more steps, | 
|  | // where each step is defined | 
|  | // by one or more dimension/metric conditions. Multiple steps can be | 
|  | // combined | 
|  | // with special sequence operators. | 
|  | type SequenceSegment struct { | 
|  | // FirstStepShouldMatchFirstHit: If set, first step condition must match | 
|  | // the first hit of the visitor (in | 
|  | // the date range). | 
|  | FirstStepShouldMatchFirstHit bool `json:"firstStepShouldMatchFirstHit,omitempty"` | 
|  |  | 
|  | // SegmentSequenceSteps: The list of steps in the sequence. | 
|  | SegmentSequenceSteps []*SegmentSequenceStep `json:"segmentSequenceSteps,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. | 
|  | // "FirstStepShouldMatchFirstHit") 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. | 
|  | // "FirstStepShouldMatchFirstHit") 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 *SequenceSegment) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SequenceSegment | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // SimpleSegment: A Simple segment conditions consist of one or more | 
|  | // dimension/metric | 
|  | // conditions that can be combined. | 
|  | type SimpleSegment struct { | 
|  | // OrFiltersForSegment: A list of segment filters groups which are | 
|  | // combined with logical `AND` | 
|  | // operator. | 
|  | OrFiltersForSegment []*OrFiltersForSegment `json:"orFiltersForSegment,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "OrFiltersForSegment") | 
|  | // 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. "OrFiltersForSegment") 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 *SimpleSegment) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod SimpleSegment | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // TransactionData: Represents details collected when the visitor | 
|  | // performs a transaction on the | 
|  | // page. | 
|  | type TransactionData struct { | 
|  | // TransactionId: The transaction ID, supplied by the e-commerce | 
|  | // tracking method, for the | 
|  | // purchase in the shopping cart. | 
|  | TransactionId string `json:"transactionId,omitempty"` | 
|  |  | 
|  | // TransactionRevenue: The total sale revenue (excluding shipping and | 
|  | // tax) of the transaction. | 
|  | TransactionRevenue float64 `json:"transactionRevenue,omitempty"` | 
|  |  | 
|  | // TransactionShipping: Total cost of shipping. | 
|  | TransactionShipping float64 `json:"transactionShipping,omitempty"` | 
|  |  | 
|  | // TransactionTax: Total tax for the transaction. | 
|  | TransactionTax float64 `json:"transactionTax,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "TransactionId") 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. "TransactionId") 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 *TransactionData) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod TransactionData | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | func (s *TransactionData) UnmarshalJSON(data []byte) error { | 
|  | type NoMethod TransactionData | 
|  | var s1 struct { | 
|  | TransactionRevenue  gensupport.JSONFloat64 `json:"transactionRevenue"` | 
|  | TransactionShipping gensupport.JSONFloat64 `json:"transactionShipping"` | 
|  | TransactionTax      gensupport.JSONFloat64 `json:"transactionTax"` | 
|  | *NoMethod | 
|  | } | 
|  | s1.NoMethod = (*NoMethod)(s) | 
|  | if err := json.Unmarshal(data, &s1); err != nil { | 
|  | return err | 
|  | } | 
|  | s.TransactionRevenue = float64(s1.TransactionRevenue) | 
|  | s.TransactionShipping = float64(s1.TransactionShipping) | 
|  | s.TransactionTax = float64(s1.TransactionTax) | 
|  | return nil | 
|  | } | 
|  |  | 
|  | // User: Contains information to identify a particular user uniquely. | 
|  | type User struct { | 
|  | // Type: Type of the user in the request. The field `userId` is | 
|  | // associated with this | 
|  | // type. | 
|  | // | 
|  | // Possible values: | 
|  | //   "USER_ID_TYPE_UNSPECIFIED" - When the User Id Type is not | 
|  | // specified, the default type used will be | 
|  | // CLIENT_ID. | 
|  | //   "USER_ID" - A single user, like a signed-in user account, that may | 
|  | // interact with | 
|  | // content across one or more devices and / or browser instances. | 
|  | //   "CLIENT_ID" - Analytics assigned client_id. | 
|  | Type string `json:"type,omitempty"` | 
|  |  | 
|  | // UserId: Unique Id of the user for which the data is being requested. | 
|  | UserId string `json:"userId,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Type") 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. "Type") 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 *User) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod User | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // UserActivitySession: This represents a user session performed on a | 
|  | // specific device at a certain | 
|  | // time over a period of time. | 
|  | type UserActivitySession struct { | 
|  | // Activities: Represents a detailed view into each of the activity in | 
|  | // this session. | 
|  | Activities []*Activity `json:"activities,omitempty"` | 
|  |  | 
|  | // DataSource: The data source of a hit. By default, hits sent from | 
|  | // analytics.js are | 
|  | // reported as "web" and hits sent from the mobile SDKs are reported as | 
|  | // "app". | 
|  | // These values can be overridden in the Measurement Protocol. | 
|  | DataSource string `json:"dataSource,omitempty"` | 
|  |  | 
|  | // DeviceCategory: The type of device used: "mobile", "tablet" etc. | 
|  | DeviceCategory string `json:"deviceCategory,omitempty"` | 
|  |  | 
|  | // Platform: Platform on which the activity happened: "android", "ios" | 
|  | // etc. | 
|  | Platform string `json:"platform,omitempty"` | 
|  |  | 
|  | // SessionDate: Date of this session in ISO-8601 format. | 
|  | SessionDate string `json:"sessionDate,omitempty"` | 
|  |  | 
|  | // SessionId: Unique ID of the session. | 
|  | SessionId string `json:"sessionId,omitempty"` | 
|  |  | 
|  | // ForceSendFields is a list of field names (e.g. "Activities") 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. "Activities") 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 *UserActivitySession) MarshalJSON() ([]byte, error) { | 
|  | type NoMethod UserActivitySession | 
|  | raw := NoMethod(*s) | 
|  | return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields) | 
|  | } | 
|  |  | 
|  | // method id "analyticsreporting.reports.batchGet": | 
|  |  | 
|  | type ReportsBatchGetCall struct { | 
|  | s                 *Service | 
|  | getreportsrequest *GetReportsRequest | 
|  | urlParams_        gensupport.URLParams | 
|  | ctx_              context.Context | 
|  | header_           http.Header | 
|  | } | 
|  |  | 
|  | // BatchGet: Returns the Analytics data. | 
|  | func (r *ReportsService) BatchGet(getreportsrequest *GetReportsRequest) *ReportsBatchGetCall { | 
|  | c := &ReportsBatchGetCall{s: r.s, urlParams_: make(gensupport.URLParams)} | 
|  | c.getreportsrequest = getreportsrequest | 
|  | 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 *ReportsBatchGetCall) Fields(s ...googleapi.Field) *ReportsBatchGetCall { | 
|  | c.urlParams_.Set("fields", googleapi.CombineFields(s)) | 
|  | 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 *ReportsBatchGetCall) Context(ctx context.Context) *ReportsBatchGetCall { | 
|  | 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 *ReportsBatchGetCall) Header() http.Header { | 
|  | if c.header_ == nil { | 
|  | c.header_ = make(http.Header) | 
|  | } | 
|  | return c.header_ | 
|  | } | 
|  |  | 
|  | func (c *ReportsBatchGetCall) 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()) | 
|  | var body io.Reader = nil | 
|  | body, err := googleapi.WithoutDataWrapper.JSONReader(c.getreportsrequest) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | reqHeaders.Set("Content-Type", "application/json") | 
|  | c.urlParams_.Set("alt", alt) | 
|  | c.urlParams_.Set("prettyPrint", "false") | 
|  | urls := googleapi.ResolveRelative(c.s.BasePath, "v4/reports:batchGet") | 
|  | urls += "?" + c.urlParams_.Encode() | 
|  | req, err := http.NewRequest("POST", urls, body) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | req.Header = reqHeaders | 
|  | return gensupport.SendRequest(c.ctx_, c.s.client, req) | 
|  | } | 
|  |  | 
|  | // Do executes the "analyticsreporting.reports.batchGet" call. | 
|  | // Exactly one of *GetReportsResponse or error will be non-nil. Any | 
|  | // non-2xx status code is an error. Response headers are in either | 
|  | // *GetReportsResponse.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 *ReportsBatchGetCall) Do(opts ...googleapi.CallOption) (*GetReportsResponse, 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 := &GetReportsResponse{ | 
|  | 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": "Returns the Analytics data.", | 
|  | //   "flatPath": "v4/reports:batchGet", | 
|  | //   "httpMethod": "POST", | 
|  | //   "id": "analyticsreporting.reports.batchGet", | 
|  | //   "parameterOrder": [], | 
|  | //   "parameters": {}, | 
|  | //   "path": "v4/reports:batchGet", | 
|  | //   "request": { | 
|  | //     "$ref": "GetReportsRequest" | 
|  | //   }, | 
|  | //   "response": { | 
|  | //     "$ref": "GetReportsResponse" | 
|  | //   }, | 
|  | //   "scopes": [ | 
|  | //     "https://www.googleapis.com/auth/analytics", | 
|  | //     "https://www.googleapis.com/auth/analytics.readonly" | 
|  | //   ] | 
|  | // } | 
|  |  | 
|  | } | 
|  |  | 
|  | // method id "analyticsreporting.userActivity.search": | 
|  |  | 
|  | type UserActivitySearchCall struct { | 
|  | s                         *Service | 
|  | searchuseractivityrequest *SearchUserActivityRequest | 
|  | urlParams_                gensupport.URLParams | 
|  | ctx_                      context.Context | 
|  | header_                   http.Header | 
|  | } | 
|  |  | 
|  | // Search: Returns User Activity data. | 
|  | func (r *UserActivityService) Search(searchuseractivityrequest *SearchUserActivityRequest) *UserActivitySearchCall { | 
|  | c := &UserActivitySearchCall{s: r.s, urlParams_: make(gensupport.URLParams)} | 
|  | c.searchuseractivityrequest = searchuseractivityrequest | 
|  | 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 *UserActivitySearchCall) Fields(s ...googleapi.Field) *UserActivitySearchCall { | 
|  | c.urlParams_.Set("fields", googleapi.CombineFields(s)) | 
|  | 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 *UserActivitySearchCall) Context(ctx context.Context) *UserActivitySearchCall { | 
|  | 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 *UserActivitySearchCall) Header() http.Header { | 
|  | if c.header_ == nil { | 
|  | c.header_ = make(http.Header) | 
|  | } | 
|  | return c.header_ | 
|  | } | 
|  |  | 
|  | func (c *UserActivitySearchCall) 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()) | 
|  | var body io.Reader = nil | 
|  | body, err := googleapi.WithoutDataWrapper.JSONReader(c.searchuseractivityrequest) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | reqHeaders.Set("Content-Type", "application/json") | 
|  | c.urlParams_.Set("alt", alt) | 
|  | c.urlParams_.Set("prettyPrint", "false") | 
|  | urls := googleapi.ResolveRelative(c.s.BasePath, "v4/userActivity:search") | 
|  | urls += "?" + c.urlParams_.Encode() | 
|  | req, err := http.NewRequest("POST", urls, body) | 
|  | if err != nil { | 
|  | return nil, err | 
|  | } | 
|  | req.Header = reqHeaders | 
|  | return gensupport.SendRequest(c.ctx_, c.s.client, req) | 
|  | } | 
|  |  | 
|  | // Do executes the "analyticsreporting.userActivity.search" call. | 
|  | // Exactly one of *SearchUserActivityResponse or error will be non-nil. | 
|  | // Any non-2xx status code is an error. Response headers are in either | 
|  | // *SearchUserActivityResponse.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 *UserActivitySearchCall) Do(opts ...googleapi.CallOption) (*SearchUserActivityResponse, 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 := &SearchUserActivityResponse{ | 
|  | 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": "Returns User Activity data.", | 
|  | //   "flatPath": "v4/userActivity:search", | 
|  | //   "httpMethod": "POST", | 
|  | //   "id": "analyticsreporting.userActivity.search", | 
|  | //   "parameterOrder": [], | 
|  | //   "parameters": {}, | 
|  | //   "path": "v4/userActivity:search", | 
|  | //   "request": { | 
|  | //     "$ref": "SearchUserActivityRequest" | 
|  | //   }, | 
|  | //   "response": { | 
|  | //     "$ref": "SearchUserActivityResponse" | 
|  | //   }, | 
|  | //   "scopes": [ | 
|  | //     "https://www.googleapis.com/auth/analytics", | 
|  | //     "https://www.googleapis.com/auth/analytics.readonly" | 
|  | //   ] | 
|  | // } | 
|  |  | 
|  | } | 
|  |  | 
|  | // Pages invokes f for each page of results. | 
|  | // A non-nil error returned from f will halt the iteration. | 
|  | // The provided context supersedes any context provided to the Context method. | 
|  | func (c *UserActivitySearchCall) Pages(ctx context.Context, f func(*SearchUserActivityResponse) error) error { | 
|  | c.ctx_ = ctx | 
|  | defer func(pt string) { c.searchuseractivityrequest.PageToken = pt }(c.searchuseractivityrequest.PageToken) // reset paging to original point | 
|  | for { | 
|  | x, err := c.Do() | 
|  | if err != nil { | 
|  | return err | 
|  | } | 
|  | if err := f(x); err != nil { | 
|  | return err | 
|  | } | 
|  | if x.NextPageToken == "" { | 
|  | return nil | 
|  | } | 
|  | c.searchuseractivityrequest.PageToken = x.NextPageToken | 
|  | } | 
|  | } |