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