// Copyright 2024 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/ // // # Library status // // These client libraries are officially supported by Google. However, this // library is considered complete and is in maintenance mode. This means // that we will address critical bugs and security issues but will not add // any new features. // // When possible, we recommend using our newer // [Cloud Client Libraries for Go](https://pkg.go.dev/cloud.google.com/go) // that are still actively being worked and iterated on. // // # 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 [google.golang.org/api/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 [google.golang.org/api/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 [google.golang.org/api/option.WithTokenSource]: // // config := &oauth2.Config{...} // // ... // token, err := config.Exchange(ctx, ...) // analyticsreportingService, err := analyticsreporting.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token))) // // See [google.golang.org/api/option.ClientOption] 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" internal "google.golang.org/api/internal" 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 var _ = internal.Version const apiId = "analyticsreporting:v4" const apiName = "analyticsreporting" const apiVersion = "v4" const basePath = "https://analyticsreporting.googleapis.com/" const basePathTemplate = "https://analyticsreporting.UNIVERSE_DOMAIN/" const mtlsBasePath = "https://analyticsreporting.mtls.googleapis.com/" // OAuth2 scopes used by this API. const ( // View and manage your Google Analytics data AnalyticsScope = "https://www.googleapis.com/auth/analytics" // See and download 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 := internaloption.WithDefaultScopes( "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)) opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate)) opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath)) opts = append(opts, internaloption.EnableNewAuthLibrary()) 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Activity) MarshalJSON() ([]byte, error) { type NoMethod Activity return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Cohort) MarshalJSON() ([]byte, error) { type NoMethod Cohort return gensupport.MarshalJSON(NoMethod(*s), 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#WebVersusAppViews) 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *CohortGroup) MarshalJSON() ([]byte, error) { type NoMethod CohortGroup return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *ColumnHeader) MarshalJSON() ([]byte, error) { type NoMethod ColumnHeader return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *CustomDimension) MarshalJSON() ([]byte, error) { type NoMethod CustomDimension return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *DateRange) MarshalJSON() ([]byte, error) { type NoMethod DateRange return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *DateRangeValues) MarshalJSON() ([]byte, error) { type NoMethod DateRangeValues return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Dimension) MarshalJSON() ([]byte, error) { type NoMethod Dimension return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *DimensionFilter) MarshalJSON() ([]byte, error) { type NoMethod DimensionFilter return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *DimensionFilterClause) MarshalJSON() ([]byte, error) { type NoMethod DimensionFilterClause return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *DynamicSegment) MarshalJSON() ([]byte, error) { type NoMethod DynamicSegment return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *EcommerceData) MarshalJSON() ([]byte, error) { type NoMethod EcommerceData return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *EventData) MarshalJSON() ([]byte, error) { type NoMethod EventData return gensupport.MarshalJSON(NoMethod(*s), 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#analytics_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-quotas#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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *GetReportsRequest) MarshalJSON() ([]byte, error) { type NoMethod GetReportsRequest return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *GetReportsResponse) MarshalJSON() ([]byte, error) { type NoMethod GetReportsResponse return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *GoalData) MarshalJSON() ([]byte, error) { type NoMethod GoalData return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *GoalSetData) MarshalJSON() ([]byte, error) { type NoMethod GoalSetData return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Metric) MarshalJSON() ([]byte, error) { type NoMethod Metric return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *MetricFilter) MarshalJSON() ([]byte, error) { type NoMethod MetricFilter return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *MetricFilterClause) MarshalJSON() ([]byte, error) { type NoMethod MetricFilterClause return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *MetricHeader) MarshalJSON() ([]byte, error) { type NoMethod MetricHeader return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *MetricHeaderEntry) MarshalJSON() ([]byte, error) { type NoMethod MetricHeaderEntry return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *OrFiltersForSegment) MarshalJSON() ([]byte, error) { type NoMethod OrFiltersForSegment return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *OrderBy) MarshalJSON() ([]byte, error) { type NoMethod OrderBy return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *PageviewData) MarshalJSON() ([]byte, error) { type NoMethod PageviewData return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Pivot) MarshalJSON() ([]byte, error) { type NoMethod Pivot return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *PivotHeader) MarshalJSON() ([]byte, error) { type NoMethod PivotHeader return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *PivotHeaderEntry) MarshalJSON() ([]byte, error) { type NoMethod PivotHeaderEntry return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *PivotValueRegion) MarshalJSON() ([]byte, error) { type NoMethod PivotValueRegion return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *ProductData) MarshalJSON() ([]byte, error) { type NoMethod ProductData return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Report) MarshalJSON() ([]byte, error) { type NoMethod Report return gensupport.MarshalJSON(NoMethod(*s), 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"` // EmptyReason: If empty reason is specified, the report is empty for this // reason. EmptyReason string `json:"emptyReason,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), this 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), this 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *ReportData) MarshalJSON() ([]byte, error) { type NoMethod ReportData return gensupport.MarshalJSON(NoMethod(*s), 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/devguides/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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *ReportRequest) MarshalJSON() ([]byte, error) { type NoMethod ReportRequest return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *ReportRow) MarshalJSON() ([]byte, error) { type NoMethod ReportRow return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *ResourceQuotasRemaining) MarshalJSON() ([]byte, error) { type NoMethod ResourceQuotasRemaining return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *ScreenviewData) MarshalJSON() ([]byte, error) { type NoMethod ScreenviewData return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SearchUserActivityRequest) MarshalJSON() ([]byte, error) { type NoMethod SearchUserActivityRequest return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SearchUserActivityResponse) MarshalJSON() ([]byte, error) { type NoMethod SearchUserActivityResponse return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *Segment) MarshalJSON() ([]byte, error) { type NoMethod Segment return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SegmentDefinition) MarshalJSON() ([]byte, error) { type NoMethod SegmentDefinition return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SegmentDimensionFilter) MarshalJSON() ([]byte, error) { type NoMethod SegmentDimensionFilter return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SegmentFilter) MarshalJSON() ([]byte, error) { type NoMethod SegmentFilter return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SegmentFilterClause) MarshalJSON() ([]byte, error) { type NoMethod SegmentFilterClause return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SegmentMetricFilter) MarshalJSON() ([]byte, error) { type NoMethod SegmentMetricFilter return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SegmentSequenceStep) MarshalJSON() ([]byte, error) { type NoMethod SegmentSequenceStep return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are omitted from API // requests. See https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields // for more details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SequenceSegment) MarshalJSON() ([]byte, error) { type NoMethod SequenceSegment return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *SimpleSegment) MarshalJSON() ([]byte, error) { type NoMethod SimpleSegment return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *TransactionData) MarshalJSON() ([]byte, error) { type NoMethod TransactionData return gensupport.MarshalJSON(NoMethod(*s), 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 or default values are // omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *User) MarshalJSON() ([]byte, error) { type NoMethod User return gensupport.MarshalJSON(NoMethod(*s), 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 or // default values are omitted from API requests. See // https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more // details. 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. See // https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details. NullFields []string `json:"-"` } func (s *UserActivitySession) MarshalJSON() ([]byte, error) { type NoMethod UserActivitySession return gensupport.MarshalJSON(NoMethod(*s), s.ForceSendFields, s.NullFields) } 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 // details. 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. func (c *ReportsBatchGetCall) Context(ctx context.Context) *ReportsBatchGetCall { c.ctx_ = ctx return c } // Header returns a http.Header that can be modified by the caller to add // 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 := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_) var body io.Reader = nil body, err := googleapi.WithoutDataWrapper.JSONReader(c.getreportsrequest) if err != nil { return nil, err } 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. // 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, gensupport.WrapError(&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, gensupport.WrapError(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 } 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 // details. 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. func (c *UserActivitySearchCall) Context(ctx context.Context) *UserActivitySearchCall { c.ctx_ = ctx return c } // Header returns a http.Header that can be modified by the caller to add // 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 := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_) var body io.Reader = nil body, err := googleapi.WithoutDataWrapper.JSONReader(c.searchuseractivityrequest) if err != nil { return nil, err } 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. // 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, gensupport.WrapError(&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, gensupport.WrapError(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 } // 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) 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 } }