// Package doubleclickbidmanager provides access to the DoubleClick Bid Manager API.
//
// See https://developers.google.com/bid-manager/
//
// Usage example:
//
//   import "google.golang.org/api/doubleclickbidmanager/v1"
//   ...
//   doubleclickbidmanagerService, err := doubleclickbidmanager.New(oauthHttpClient)
package doubleclickbidmanager // import "google.golang.org/api/doubleclickbidmanager/v1"

import (
	"bytes"
	"encoding/json"
	"errors"
	"fmt"
	context "golang.org/x/net/context"
	ctxhttp "golang.org/x/net/context/ctxhttp"
	gensupport "google.golang.org/api/gensupport"
	googleapi "google.golang.org/api/googleapi"
	"io"
	"net/http"
	"net/url"
	"strconv"
	"strings"
)

// Always reference these packages, just in case the auto-generated code
// below doesn't.
var _ = bytes.NewBuffer
var _ = strconv.Itoa
var _ = fmt.Sprintf
var _ = json.NewDecoder
var _ = io.Copy
var _ = url.Parse
var _ = gensupport.MarshalJSON
var _ = googleapi.Version
var _ = errors.New
var _ = strings.Replace
var _ = context.Canceled
var _ = ctxhttp.Do

const apiId = "doubleclickbidmanager:v1"
const apiName = "doubleclickbidmanager"
const apiVersion = "v1"
const basePath = "https://www.googleapis.com/doubleclickbidmanager/v1/"

// OAuth2 scopes used by this API.
const (
	// View and manage your reports in DoubleClick Bid Manager
	DoubleclickbidmanagerScope = "https://www.googleapis.com/auth/doubleclickbidmanager"
)

func New(client *http.Client) (*Service, error) {
	if client == nil {
		return nil, errors.New("client is nil")
	}
	s := &Service{client: client, BasePath: basePath}
	s.Lineitems = NewLineitemsService(s)
	s.Queries = NewQueriesService(s)
	s.Reports = NewReportsService(s)
	s.Sdf = NewSdfService(s)
	return s, nil
}

type Service struct {
	client    *http.Client
	BasePath  string // API endpoint base URL
	UserAgent string // optional additional User-Agent fragment

	Lineitems *LineitemsService

	Queries *QueriesService

	Reports *ReportsService

	Sdf *SdfService
}

func (s *Service) userAgent() string {
	if s.UserAgent == "" {
		return googleapi.UserAgent
	}
	return googleapi.UserAgent + " " + s.UserAgent
}

func NewLineitemsService(s *Service) *LineitemsService {
	rs := &LineitemsService{s: s}
	return rs
}

type LineitemsService struct {
	s *Service
}

func NewQueriesService(s *Service) *QueriesService {
	rs := &QueriesService{s: s}
	return rs
}

type QueriesService struct {
	s *Service
}

func NewReportsService(s *Service) *ReportsService {
	rs := &ReportsService{s: s}
	return rs
}

type ReportsService struct {
	s *Service
}

func NewSdfService(s *Service) *SdfService {
	rs := &SdfService{s: s}
	return rs
}

type SdfService struct {
	s *Service
}

// DownloadLineItemsRequest: Request to fetch stored line items.
type DownloadLineItemsRequest struct {
	// FileSpec: File specification (column names, types, order) in which
	// the line items will be returned. Default to EWF.
	//
	// Possible values:
	//   "EWF"
	FileSpec string `json:"fileSpec,omitempty"`

	// FilterIds: Ids of the specified filter type used to filter line items
	// to fetch. If omitted, all the line items will be returned.
	FilterIds googleapi.Int64s `json:"filterIds,omitempty"`

	// FilterType: Filter type used to filter line items to fetch.
	//
	// Possible values:
	//   "ADVERTISER_ID"
	//   "INSERTION_ORDER_ID"
	//   "LINE_ITEM_ID"
	FilterType string `json:"filterType,omitempty"`

	// Format: Format in which the line items will be returned. Default to
	// CSV.
	//
	// Possible values:
	//   "CSV"
	Format string `json:"format,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FileSpec") 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. "FileSpec") 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 *DownloadLineItemsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod DownloadLineItemsRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DownloadLineItemsResponse: Download line items response.
type DownloadLineItemsResponse struct {
	// LineItems: Retrieved line items in CSV format. For more information
	// about file formats, see  Entity Write File Format.
	LineItems string `json:"lineItems,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "LineItems") 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. "LineItems") 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 *DownloadLineItemsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod DownloadLineItemsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DownloadRequest: Request to fetch stored insertion orders, line
// items, TrueView ad groups and ads.
type DownloadRequest struct {
	// FileTypes: File types that will be returned.
	//
	// Possible values:
	//   "AD"
	//   "AD_GROUP"
	//   "CAMPAIGN"
	//   "INSERTION_ORDER"
	//   "LINE_ITEM"
	FileTypes []string `json:"fileTypes,omitempty"`

	// FilterIds: The IDs of the specified filter type. This is used to
	// filter entities to fetch. At least one ID must be specified. Only one
	// ID is allowed for the ADVERTISER_ID filter type. For
	// INSERTION_ORDER_ID or LINE_ITEM_ID filter types, all IDs must be from
	// the same Advertiser.
	FilterIds googleapi.Int64s `json:"filterIds,omitempty"`

	// FilterType: Filter type used to filter line items to fetch.
	//
	// Possible values:
	//   "ADVERTISER_ID"
	//   "CAMPAIGN_ID"
	//   "INSERTION_ORDER_ID"
	//   "LINE_ITEM_ID"
	FilterType string `json:"filterType,omitempty"`

	// Version: SDF Version (column names, types, order) in which the
	// entities will be returned. Default to 3.
	Version string `json:"version,omitempty"`

	// ForceSendFields is a list of field names (e.g. "FileTypes") 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. "FileTypes") 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 *DownloadRequest) MarshalJSON() ([]byte, error) {
	type NoMethod DownloadRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// DownloadResponse: Download response.
type DownloadResponse struct {
	// AdGroups: Retrieved ad groups in SDF format.
	AdGroups string `json:"adGroups,omitempty"`

	// Ads: Retrieved ads in SDF format.
	Ads string `json:"ads,omitempty"`

	// Campaigns: Retrieved campaigns in SDF format.
	Campaigns string `json:"campaigns,omitempty"`

	// InsertionOrders: Retrieved insertion orders in SDF format.
	InsertionOrders string `json:"insertionOrders,omitempty"`

	// LineItems: Retrieved line items in SDF format.
	LineItems string `json:"lineItems,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "AdGroups") 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. "AdGroups") 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 *DownloadResponse) MarshalJSON() ([]byte, error) {
	type NoMethod DownloadResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// FilterPair: Filter used to match traffic data in your report.
type FilterPair struct {
	// Type: Filter type.
	//
	// Possible values:
	//   "FILTER_ACTIVE_VIEW_EXPECTED_VIEWABILITY"
	//   "FILTER_ACTIVITY_ID"
	//   "FILTER_ADVERTISER"
	//   "FILTER_ADVERTISER_CURRENCY"
	//   "FILTER_ADVERTISER_TIMEZONE"
	//   "FILTER_AD_POSITION"
	//   "FILTER_AGE"
	//   "FILTER_BRANDSAFE_CHANNEL_ID"
	//   "FILTER_BROWSER"
	//   "FILTER_BUDGET_SEGMENT_DESCRIPTION"
	//   "FILTER_CAMPAIGN_DAILY_FREQUENCY"
	//   "FILTER_CARRIER"
	//   "FILTER_CHANNEL_ID"
	//   "FILTER_CITY"
	//   "FILTER_COMPANION_CREATIVE_ID"
	//   "FILTER_CONVERSION_DELAY"
	//   "FILTER_COUNTRY"
	//   "FILTER_CREATIVE_HEIGHT"
	//   "FILTER_CREATIVE_ID"
	//   "FILTER_CREATIVE_SIZE"
	//   "FILTER_CREATIVE_TYPE"
	//   "FILTER_CREATIVE_WIDTH"
	//   "FILTER_DATA_PROVIDER"
	//   "FILTER_DATE"
	//   "FILTER_DAY_OF_WEEK"
	//   "FILTER_DFP_ORDER_ID"
	//   "FILTER_DMA"
	//   "FILTER_EXCHANGE_ID"
	//   "FILTER_FLOODLIGHT_PIXEL_ID"
	//   "FILTER_GENDER"
	//   "FILTER_INSERTION_ORDER"
	//   "FILTER_INVENTORY_FORMAT"
	//   "FILTER_INVENTORY_SOURCE"
	//   "FILTER_INVENTORY_SOURCE_TYPE"
	//   "FILTER_KEYWORD"
	//   "FILTER_LINE_ITEM"
	//   "FILTER_LINE_ITEM_DAILY_FREQUENCY"
	//   "FILTER_LINE_ITEM_LIFETIME_FREQUENCY"
	//   "FILTER_LINE_ITEM_TYPE"
	//   "FILTER_MEDIA_PLAN"
	//   "FILTER_MOBILE_DEVICE_MAKE"
	//   "FILTER_MOBILE_DEVICE_MAKE_MODEL"
	//   "FILTER_MOBILE_DEVICE_TYPE"
	//   "FILTER_MOBILE_GEO"
	//   "FILTER_MONTH"
	//   "FILTER_MRAID_SUPPORT"
	//   "FILTER_NIELSEN_AGE"
	//   "FILTER_NIELSEN_COUNTRY_CODE"
	//   "FILTER_NIELSEN_DEVICE_ID"
	//   "FILTER_NIELSEN_GENDER"
	//   "FILTER_NOT_SUPPORTED"
	//   "FILTER_ORDER_ID"
	//   "FILTER_OS"
	//   "FILTER_PAGE_CATEGORY"
	//   "FILTER_PAGE_LAYOUT"
	//   "FILTER_PARTNER"
	//   "FILTER_PARTNER_CURRENCY"
	//   "FILTER_PUBLIC_INVENTORY"
	//   "FILTER_QUARTER"
	//   "FILTER_REGION"
	//   "FILTER_REGULAR_CHANNEL_ID"
	//   "FILTER_SITE_ID"
	//   "FILTER_SITE_LANGUAGE"
	//   "FILTER_SKIPPABLE_SUPPORT"
	//   "FILTER_TARGETED_USER_LIST"
	//   "FILTER_TIME_OF_DAY"
	//   "FILTER_TRUEVIEW_AD_GROUP_AD_ID"
	//   "FILTER_TRUEVIEW_AD_GROUP_ID"
	//   "FILTER_TRUEVIEW_AGE"
	//   "FILTER_TRUEVIEW_CATEGORY"
	//   "FILTER_TRUEVIEW_CITY"
	//   "FILTER_TRUEVIEW_CONVERSION_TYPE"
	//   "FILTER_TRUEVIEW_COUNTRY"
	//   "FILTER_TRUEVIEW_CUSTOM_AFFINITY"
	//   "FILTER_TRUEVIEW_DMA"
	//   "FILTER_TRUEVIEW_GENDER"
	//   "FILTER_TRUEVIEW_IAR_AGE"
	//   "FILTER_TRUEVIEW_IAR_CATEGORY"
	//   "FILTER_TRUEVIEW_IAR_CITY"
	//   "FILTER_TRUEVIEW_IAR_COUNTRY"
	//   "FILTER_TRUEVIEW_IAR_GENDER"
	//   "FILTER_TRUEVIEW_IAR_INTEREST"
	//   "FILTER_TRUEVIEW_IAR_LANGUAGE"
	//   "FILTER_TRUEVIEW_IAR_PARENTAL_STATUS"
	//   "FILTER_TRUEVIEW_IAR_REGION"
	//   "FILTER_TRUEVIEW_IAR_REMARKETING_LIST"
	//   "FILTER_TRUEVIEW_IAR_TIME_OF_DAY"
	//   "FILTER_TRUEVIEW_IAR_YOUTUBE_CHANNEL"
	//   "FILTER_TRUEVIEW_IAR_YOUTUBE_VIDEO"
	//   "FILTER_TRUEVIEW_IAR_ZIPCODE"
	//   "FILTER_TRUEVIEW_INTEREST"
	//   "FILTER_TRUEVIEW_KEYWORD"
	//   "FILTER_TRUEVIEW_PARENTAL_STATUS"
	//   "FILTER_TRUEVIEW_PLACEMENT"
	//   "FILTER_TRUEVIEW_REGION"
	//   "FILTER_TRUEVIEW_REMARKETING_LIST"
	//   "FILTER_TRUEVIEW_URL"
	//   "FILTER_TRUEVIEW_ZIPCODE"
	//   "FILTER_UNKNOWN"
	//   "FILTER_USER_LIST"
	//   "FILTER_USER_LIST_FIRST_PARTY"
	//   "FILTER_USER_LIST_THIRD_PARTY"
	//   "FILTER_VIDEO_AD_POSITION_IN_STREAM"
	//   "FILTER_VIDEO_COMPANION_SIZE"
	//   "FILTER_VIDEO_COMPANION_TYPE"
	//   "FILTER_VIDEO_CREATIVE_DURATION"
	//   "FILTER_VIDEO_CREATIVE_DURATION_SKIPPABLE"
	//   "FILTER_VIDEO_DURATION_SECONDS"
	//   "FILTER_VIDEO_FORMAT_SUPPORT"
	//   "FILTER_VIDEO_INVENTORY_TYPE"
	//   "FILTER_VIDEO_PLAYER_SIZE"
	//   "FILTER_VIDEO_RATING_TIER"
	//   "FILTER_VIDEO_SKIPPABLE_SUPPORT"
	//   "FILTER_VIDEO_VPAID_SUPPORT"
	//   "FILTER_WEEK"
	//   "FILTER_YEAR"
	//   "FILTER_YOUTUBE_VERTICAL"
	//   "FILTER_ZIP_CODE"
	Type string `json:"type,omitempty"`

	// Value: Filter value.
	Value string `json:"value,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 *FilterPair) MarshalJSON() ([]byte, error) {
	type NoMethod FilterPair
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ListQueriesResponse: List queries response.
type ListQueriesResponse struct {
	// Kind: Identifies what kind of resource this is. Value: the fixed
	// string "doubleclickbidmanager#listQueriesResponse".
	Kind string `json:"kind,omitempty"`

	// Queries: Retrieved queries.
	Queries []*Query `json:"queries,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Kind") 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. "Kind") 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 *ListQueriesResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListQueriesResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ListReportsResponse: List reports response.
type ListReportsResponse struct {
	// Kind: Identifies what kind of resource this is. Value: the fixed
	// string "doubleclickbidmanager#listReportsResponse".
	Kind string `json:"kind,omitempty"`

	// Reports: Retrieved reports.
	Reports []*Report `json:"reports,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Kind") 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. "Kind") 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 *ListReportsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod ListReportsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// Parameters: Parameters of a query or report.
type Parameters struct {
	// Filters: Filters used to match traffic data in your report.
	Filters []*FilterPair `json:"filters,omitempty"`

	// GroupBys: Data is grouped by the filters listed in this field.
	//
	// Possible values:
	//   "FILTER_ACTIVE_VIEW_EXPECTED_VIEWABILITY"
	//   "FILTER_ACTIVITY_ID"
	//   "FILTER_ADVERTISER"
	//   "FILTER_ADVERTISER_CURRENCY"
	//   "FILTER_ADVERTISER_TIMEZONE"
	//   "FILTER_AD_POSITION"
	//   "FILTER_AGE"
	//   "FILTER_BRANDSAFE_CHANNEL_ID"
	//   "FILTER_BROWSER"
	//   "FILTER_BUDGET_SEGMENT_DESCRIPTION"
	//   "FILTER_CAMPAIGN_DAILY_FREQUENCY"
	//   "FILTER_CARRIER"
	//   "FILTER_CHANNEL_ID"
	//   "FILTER_CITY"
	//   "FILTER_COMPANION_CREATIVE_ID"
	//   "FILTER_CONVERSION_DELAY"
	//   "FILTER_COUNTRY"
	//   "FILTER_CREATIVE_HEIGHT"
	//   "FILTER_CREATIVE_ID"
	//   "FILTER_CREATIVE_SIZE"
	//   "FILTER_CREATIVE_TYPE"
	//   "FILTER_CREATIVE_WIDTH"
	//   "FILTER_DATA_PROVIDER"
	//   "FILTER_DATE"
	//   "FILTER_DAY_OF_WEEK"
	//   "FILTER_DFP_ORDER_ID"
	//   "FILTER_DMA"
	//   "FILTER_EXCHANGE_ID"
	//   "FILTER_FLOODLIGHT_PIXEL_ID"
	//   "FILTER_GENDER"
	//   "FILTER_INSERTION_ORDER"
	//   "FILTER_INVENTORY_FORMAT"
	//   "FILTER_INVENTORY_SOURCE"
	//   "FILTER_INVENTORY_SOURCE_TYPE"
	//   "FILTER_KEYWORD"
	//   "FILTER_LINE_ITEM"
	//   "FILTER_LINE_ITEM_DAILY_FREQUENCY"
	//   "FILTER_LINE_ITEM_LIFETIME_FREQUENCY"
	//   "FILTER_LINE_ITEM_TYPE"
	//   "FILTER_MEDIA_PLAN"
	//   "FILTER_MOBILE_DEVICE_MAKE"
	//   "FILTER_MOBILE_DEVICE_MAKE_MODEL"
	//   "FILTER_MOBILE_DEVICE_TYPE"
	//   "FILTER_MOBILE_GEO"
	//   "FILTER_MONTH"
	//   "FILTER_MRAID_SUPPORT"
	//   "FILTER_NIELSEN_AGE"
	//   "FILTER_NIELSEN_COUNTRY_CODE"
	//   "FILTER_NIELSEN_DEVICE_ID"
	//   "FILTER_NIELSEN_GENDER"
	//   "FILTER_NOT_SUPPORTED"
	//   "FILTER_ORDER_ID"
	//   "FILTER_OS"
	//   "FILTER_PAGE_CATEGORY"
	//   "FILTER_PAGE_LAYOUT"
	//   "FILTER_PARTNER"
	//   "FILTER_PARTNER_CURRENCY"
	//   "FILTER_PUBLIC_INVENTORY"
	//   "FILTER_QUARTER"
	//   "FILTER_REGION"
	//   "FILTER_REGULAR_CHANNEL_ID"
	//   "FILTER_SITE_ID"
	//   "FILTER_SITE_LANGUAGE"
	//   "FILTER_SKIPPABLE_SUPPORT"
	//   "FILTER_TARGETED_USER_LIST"
	//   "FILTER_TIME_OF_DAY"
	//   "FILTER_TRUEVIEW_AD_GROUP_AD_ID"
	//   "FILTER_TRUEVIEW_AD_GROUP_ID"
	//   "FILTER_TRUEVIEW_AGE"
	//   "FILTER_TRUEVIEW_CATEGORY"
	//   "FILTER_TRUEVIEW_CITY"
	//   "FILTER_TRUEVIEW_CONVERSION_TYPE"
	//   "FILTER_TRUEVIEW_COUNTRY"
	//   "FILTER_TRUEVIEW_CUSTOM_AFFINITY"
	//   "FILTER_TRUEVIEW_DMA"
	//   "FILTER_TRUEVIEW_GENDER"
	//   "FILTER_TRUEVIEW_IAR_AGE"
	//   "FILTER_TRUEVIEW_IAR_CATEGORY"
	//   "FILTER_TRUEVIEW_IAR_CITY"
	//   "FILTER_TRUEVIEW_IAR_COUNTRY"
	//   "FILTER_TRUEVIEW_IAR_GENDER"
	//   "FILTER_TRUEVIEW_IAR_INTEREST"
	//   "FILTER_TRUEVIEW_IAR_LANGUAGE"
	//   "FILTER_TRUEVIEW_IAR_PARENTAL_STATUS"
	//   "FILTER_TRUEVIEW_IAR_REGION"
	//   "FILTER_TRUEVIEW_IAR_REMARKETING_LIST"
	//   "FILTER_TRUEVIEW_IAR_TIME_OF_DAY"
	//   "FILTER_TRUEVIEW_IAR_YOUTUBE_CHANNEL"
	//   "FILTER_TRUEVIEW_IAR_YOUTUBE_VIDEO"
	//   "FILTER_TRUEVIEW_IAR_ZIPCODE"
	//   "FILTER_TRUEVIEW_INTEREST"
	//   "FILTER_TRUEVIEW_KEYWORD"
	//   "FILTER_TRUEVIEW_PARENTAL_STATUS"
	//   "FILTER_TRUEVIEW_PLACEMENT"
	//   "FILTER_TRUEVIEW_REGION"
	//   "FILTER_TRUEVIEW_REMARKETING_LIST"
	//   "FILTER_TRUEVIEW_URL"
	//   "FILTER_TRUEVIEW_ZIPCODE"
	//   "FILTER_UNKNOWN"
	//   "FILTER_USER_LIST"
	//   "FILTER_USER_LIST_FIRST_PARTY"
	//   "FILTER_USER_LIST_THIRD_PARTY"
	//   "FILTER_VIDEO_AD_POSITION_IN_STREAM"
	//   "FILTER_VIDEO_COMPANION_SIZE"
	//   "FILTER_VIDEO_COMPANION_TYPE"
	//   "FILTER_VIDEO_CREATIVE_DURATION"
	//   "FILTER_VIDEO_CREATIVE_DURATION_SKIPPABLE"
	//   "FILTER_VIDEO_DURATION_SECONDS"
	//   "FILTER_VIDEO_FORMAT_SUPPORT"
	//   "FILTER_VIDEO_INVENTORY_TYPE"
	//   "FILTER_VIDEO_PLAYER_SIZE"
	//   "FILTER_VIDEO_RATING_TIER"
	//   "FILTER_VIDEO_SKIPPABLE_SUPPORT"
	//   "FILTER_VIDEO_VPAID_SUPPORT"
	//   "FILTER_WEEK"
	//   "FILTER_YEAR"
	//   "FILTER_YOUTUBE_VERTICAL"
	//   "FILTER_ZIP_CODE"
	GroupBys []string `json:"groupBys,omitempty"`

	// IncludeInviteData: Whether to include data from Invite Media.
	IncludeInviteData bool `json:"includeInviteData,omitempty"`

	// Metrics: Metrics to include as columns in your report.
	//
	// Possible values:
	//   "METRIC_ACTIVE_VIEW_AUDIBLE_VISIBLE_ON_COMPLETE_IMPRESSIONS"
	//   "METRIC_ACTIVE_VIEW_AVERAGE_VIEWABLE_TIME"
	//   "METRIC_ACTIVE_VIEW_DISTRIBUTION_UNMEASURABLE"
	//   "METRIC_ACTIVE_VIEW_DISTRIBUTION_UNVIEWABLE"
	//   "METRIC_ACTIVE_VIEW_DISTRIBUTION_VIEWABLE"
	//   "METRIC_ACTIVE_VIEW_ELIGIBLE_IMPRESSIONS"
	//   "METRIC_ACTIVE_VIEW_MEASURABLE_IMPRESSIONS"
	//   "METRIC_ACTIVE_VIEW_PCT_MEASURABLE_IMPRESSIONS"
	//   "METRIC_ACTIVE_VIEW_PCT_VIEWABLE_IMPRESSIONS"
	//   "METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_AT_START"
	//   "METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_FIRST_QUAR"
	//   "METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_ON_COMPLETE"
	//   "METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_SECOND_QUAR"
	//   "METRIC_ACTIVE_VIEW_PERCENT_AUDIBLE_VISIBLE_THIRD_QUAR"
	//   "METRIC_ACTIVE_VIEW_PERCENT_VIEWABLE_FOR_TIME_THRESHOLD"
	//   "METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_AT_START"
	//   "METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_FIRST_QUAR"
	//   "METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_ON_COMPLETE"
	//   "METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_SECOND_QUAR"
	//   "METRIC_ACTIVE_VIEW_PERCENT_VISIBLE_THIRD_QUAR"
	//   "METRIC_ACTIVE_VIEW_UNMEASURABLE_IMPRESSIONS"
	//   "METRIC_ACTIVE_VIEW_UNVIEWABLE_IMPRESSIONS"
	//   "METRIC_ACTIVE_VIEW_VIEWABLE_FOR_TIME_THRESHOLD"
	//   "METRIC_ACTIVE_VIEW_VIEWABLE_IMPRESSIONS"
	//   "METRIC_BID_REQUESTS"
	//   "METRIC_BILLABLE_COST_ADVERTISER"
	//   "METRIC_BILLABLE_COST_PARTNER"
	//   "METRIC_BILLABLE_COST_USD"
	//   "METRIC_CLICKS"
	//   "METRIC_CLICK_TO_POST_CLICK_CONVERSION_RATE"
	//   "METRIC_COMSCORE_VCE_AUDIENCE_AVG_FREQUENCY"
	//   "METRIC_COMSCORE_VCE_AUDIENCE_IMPRESSIONS"
	//   "METRIC_COMSCORE_VCE_AUDIENCE_IMPRESSIONS_SHARE"
	//   "METRIC_COMSCORE_VCE_AUDIENCE_REACH_PCT"
	//   "METRIC_COMSCORE_VCE_AUDIENCE_SHARE_PCT"
	//   "METRIC_COMSCORE_VCE_GROSS_RATING_POINTS"
	//   "METRIC_COMSCORE_VCE_POPULATION"
	//   "METRIC_COMSCORE_VCE_UNIQUE_AUDIENCE"
	//   "METRIC_CONVERSIONS_PER_MILLE"
	//   "METRIC_COOKIE_REACH_AVERAGE_IMPRESSION_FREQUENCY"
	//   "METRIC_COOKIE_REACH_IMPRESSION_REACH"
	//   "METRIC_CPM_FEE1_ADVERTISER"
	//   "METRIC_CPM_FEE1_PARTNER"
	//   "METRIC_CPM_FEE1_USD"
	//   "METRIC_CPM_FEE2_ADVERTISER"
	//   "METRIC_CPM_FEE2_PARTNER"
	//   "METRIC_CPM_FEE2_USD"
	//   "METRIC_CPM_FEE3_ADVERTISER"
	//   "METRIC_CPM_FEE3_PARTNER"
	//   "METRIC_CPM_FEE3_USD"
	//   "METRIC_CPM_FEE4_ADVERTISER"
	//   "METRIC_CPM_FEE4_PARTNER"
	//   "METRIC_CPM_FEE4_USD"
	//   "METRIC_CPM_FEE5_ADVERTISER"
	//   "METRIC_CPM_FEE5_PARTNER"
	//   "METRIC_CPM_FEE5_USD"
	//   "METRIC_CTR"
	//   "METRIC_DATA_COST_ADVERTISER"
	//   "METRIC_DATA_COST_PARTNER"
	//   "METRIC_DATA_COST_USD"
	//   "METRIC_FEE10_ADVERTISER"
	//   "METRIC_FEE10_PARTNER"
	//   "METRIC_FEE10_USD"
	//   "METRIC_FEE11_ADVERTISER"
	//   "METRIC_FEE11_PARTNER"
	//   "METRIC_FEE11_USD"
	//   "METRIC_FEE12_ADVERTISER"
	//   "METRIC_FEE12_PARTNER"
	//   "METRIC_FEE12_USD"
	//   "METRIC_FEE13_ADVERTISER"
	//   "METRIC_FEE13_PARTNER"
	//   "METRIC_FEE13_USD"
	//   "METRIC_FEE14_ADVERTISER"
	//   "METRIC_FEE14_PARTNER"
	//   "METRIC_FEE14_USD"
	//   "METRIC_FEE15_ADVERTISER"
	//   "METRIC_FEE15_PARTNER"
	//   "METRIC_FEE15_USD"
	//   "METRIC_FEE16_ADVERTISER"
	//   "METRIC_FEE16_PARTNER"
	//   "METRIC_FEE16_USD"
	//   "METRIC_FEE17_ADVERTISER"
	//   "METRIC_FEE17_PARTNER"
	//   "METRIC_FEE17_USD"
	//   "METRIC_FEE18_ADVERTISER"
	//   "METRIC_FEE18_PARTNER"
	//   "METRIC_FEE18_USD"
	//   "METRIC_FEE19_ADVERTISER"
	//   "METRIC_FEE19_PARTNER"
	//   "METRIC_FEE19_USD"
	//   "METRIC_FEE20_ADVERTISER"
	//   "METRIC_FEE20_PARTNER"
	//   "METRIC_FEE20_USD"
	//   "METRIC_FEE21_ADVERTISER"
	//   "METRIC_FEE21_PARTNER"
	//   "METRIC_FEE21_USD"
	//   "METRIC_FEE22_ADVERTISER"
	//   "METRIC_FEE22_PARTNER"
	//   "METRIC_FEE22_USD"
	//   "METRIC_FEE2_ADVERTISER"
	//   "METRIC_FEE2_PARTNER"
	//   "METRIC_FEE2_USD"
	//   "METRIC_FEE3_ADVERTISER"
	//   "METRIC_FEE3_PARTNER"
	//   "METRIC_FEE3_USD"
	//   "METRIC_FEE4_ADVERTISER"
	//   "METRIC_FEE4_PARTNER"
	//   "METRIC_FEE4_USD"
	//   "METRIC_FEE5_ADVERTISER"
	//   "METRIC_FEE5_PARTNER"
	//   "METRIC_FEE5_USD"
	//   "METRIC_FEE6_ADVERTISER"
	//   "METRIC_FEE6_PARTNER"
	//   "METRIC_FEE6_USD"
	//   "METRIC_FEE7_ADVERTISER"
	//   "METRIC_FEE7_PARTNER"
	//   "METRIC_FEE7_USD"
	//   "METRIC_FEE8_ADVERTISER"
	//   "METRIC_FEE8_PARTNER"
	//   "METRIC_FEE8_USD"
	//   "METRIC_FEE9_ADVERTISER"
	//   "METRIC_FEE9_PARTNER"
	//   "METRIC_FEE9_USD"
	//   "METRIC_IMPRESSIONS"
	//   "METRIC_IMPRESSIONS_TO_CONVERSION_RATE"
	//   "METRIC_LAST_CLICKS"
	//   "METRIC_LAST_IMPRESSIONS"
	//   "METRIC_MEDIA_COST_ADVERTISER"
	//   "METRIC_MEDIA_COST_ECPAPC_ADVERTISER"
	//   "METRIC_MEDIA_COST_ECPAPC_PARTNER"
	//   "METRIC_MEDIA_COST_ECPAPC_USD"
	//   "METRIC_MEDIA_COST_ECPAPV_ADVERTISER"
	//   "METRIC_MEDIA_COST_ECPAPV_PARTNER"
	//   "METRIC_MEDIA_COST_ECPAPV_USD"
	//   "METRIC_MEDIA_COST_ECPA_ADVERTISER"
	//   "METRIC_MEDIA_COST_ECPA_PARTNER"
	//   "METRIC_MEDIA_COST_ECPA_USD"
	//   "METRIC_MEDIA_COST_ECPCV_ADVERTISER"
	//   "METRIC_MEDIA_COST_ECPCV_PARTNER"
	//   "METRIC_MEDIA_COST_ECPCV_USD"
	//   "METRIC_MEDIA_COST_ECPC_ADVERTISER"
	//   "METRIC_MEDIA_COST_ECPC_PARTNER"
	//   "METRIC_MEDIA_COST_ECPC_USD"
	//   "METRIC_MEDIA_COST_ECPM_ADVERTISER"
	//   "METRIC_MEDIA_COST_ECPM_PARTNER"
	//   "METRIC_MEDIA_COST_ECPM_USD"
	//   "METRIC_MEDIA_COST_PARTNER"
	//   "METRIC_MEDIA_COST_USD"
	//   "METRIC_MEDIA_COST_VIEWABLE_ECPM_ADVERTISER"
	//   "METRIC_MEDIA_COST_VIEWABLE_ECPM_PARTNER"
	//   "METRIC_MEDIA_COST_VIEWABLE_ECPM_USD"
	//   "METRIC_MEDIA_FEE1_ADVERTISER"
	//   "METRIC_MEDIA_FEE1_PARTNER"
	//   "METRIC_MEDIA_FEE1_USD"
	//   "METRIC_MEDIA_FEE2_ADVERTISER"
	//   "METRIC_MEDIA_FEE2_PARTNER"
	//   "METRIC_MEDIA_FEE2_USD"
	//   "METRIC_MEDIA_FEE3_ADVERTISER"
	//   "METRIC_MEDIA_FEE3_PARTNER"
	//   "METRIC_MEDIA_FEE3_USD"
	//   "METRIC_MEDIA_FEE4_ADVERTISER"
	//   "METRIC_MEDIA_FEE4_PARTNER"
	//   "METRIC_MEDIA_FEE4_USD"
	//   "METRIC_MEDIA_FEE5_ADVERTISER"
	//   "METRIC_MEDIA_FEE5_PARTNER"
	//   "METRIC_MEDIA_FEE5_USD"
	//   "METRIC_PIXEL_LOADS"
	//   "METRIC_PLATFORM_FEE_ADVERTISER"
	//   "METRIC_PLATFORM_FEE_PARTNER"
	//   "METRIC_PLATFORM_FEE_USD"
	//   "METRIC_POST_CLICK_DFA_REVENUE"
	//   "METRIC_POST_VIEW_DFA_REVENUE"
	//   "METRIC_PROFIT_ADVERTISER"
	//   "METRIC_PROFIT_ECPAPC_ADVERTISER"
	//   "METRIC_PROFIT_ECPAPC_PARTNER"
	//   "METRIC_PROFIT_ECPAPC_USD"
	//   "METRIC_PROFIT_ECPAPV_ADVERTISER"
	//   "METRIC_PROFIT_ECPAPV_PARTNER"
	//   "METRIC_PROFIT_ECPAPV_USD"
	//   "METRIC_PROFIT_ECPA_ADVERTISER"
	//   "METRIC_PROFIT_ECPA_PARTNER"
	//   "METRIC_PROFIT_ECPA_USD"
	//   "METRIC_PROFIT_ECPC_ADVERTISER"
	//   "METRIC_PROFIT_ECPC_PARTNER"
	//   "METRIC_PROFIT_ECPC_USD"
	//   "METRIC_PROFIT_ECPM_ADVERTISER"
	//   "METRIC_PROFIT_ECPM_PARTNER"
	//   "METRIC_PROFIT_ECPM_USD"
	//   "METRIC_PROFIT_MARGIN"
	//   "METRIC_PROFIT_PARTNER"
	//   "METRIC_PROFIT_USD"
	//   "METRIC_PROFIT_VIEWABLE_ECPM_ADVERTISER"
	//   "METRIC_PROFIT_VIEWABLE_ECPM_PARTNER"
	//   "METRIC_PROFIT_VIEWABLE_ECPM_USD"
	//   "METRIC_REACH_COOKIE_FREQUENCY"
	//   "METRIC_REACH_COOKIE_REACH"
	//   "METRIC_REVENUE_ADVERTISER"
	//   "METRIC_REVENUE_ECPAPC_ADVERTISER"
	//   "METRIC_REVENUE_ECPAPC_PARTNER"
	//   "METRIC_REVENUE_ECPAPC_USD"
	//   "METRIC_REVENUE_ECPAPV_ADVERTISER"
	//   "METRIC_REVENUE_ECPAPV_PARTNER"
	//   "METRIC_REVENUE_ECPAPV_USD"
	//   "METRIC_REVENUE_ECPA_ADVERTISER"
	//   "METRIC_REVENUE_ECPA_PARTNER"
	//   "METRIC_REVENUE_ECPA_USD"
	//   "METRIC_REVENUE_ECPCV_ADVERTISER"
	//   "METRIC_REVENUE_ECPCV_PARTNER"
	//   "METRIC_REVENUE_ECPCV_USD"
	//   "METRIC_REVENUE_ECPC_ADVERTISER"
	//   "METRIC_REVENUE_ECPC_PARTNER"
	//   "METRIC_REVENUE_ECPC_USD"
	//   "METRIC_REVENUE_ECPIAVC_ADVERTISER"
	//   "METRIC_REVENUE_ECPM_ADVERTISER"
	//   "METRIC_REVENUE_ECPM_PARTNER"
	//   "METRIC_REVENUE_ECPM_USD"
	//   "METRIC_REVENUE_PARTNER"
	//   "METRIC_REVENUE_USD"
	//   "METRIC_REVENUE_VIEWABLE_ECPM_ADVERTISER"
	//   "METRIC_REVENUE_VIEWABLE_ECPM_PARTNER"
	//   "METRIC_REVENUE_VIEWABLE_ECPM_USD"
	//   "METRIC_RICH_MEDIA_VIDEO_COMPLETIONS"
	//   "METRIC_RICH_MEDIA_VIDEO_FIRST_QUARTILE_COMPLETES"
	//   "METRIC_RICH_MEDIA_VIDEO_FULL_SCREENS"
	//   "METRIC_RICH_MEDIA_VIDEO_MIDPOINTS"
	//   "METRIC_RICH_MEDIA_VIDEO_MUTES"
	//   "METRIC_RICH_MEDIA_VIDEO_PAUSES"
	//   "METRIC_RICH_MEDIA_VIDEO_PLAYS"
	//   "METRIC_RICH_MEDIA_VIDEO_SKIPS"
	//   "METRIC_RICH_MEDIA_VIDEO_THIRD_QUARTILE_COMPLETES"
	//   "METRIC_TEA_TRUEVIEW_IMPRESSIONS"
	//   "METRIC_TEA_TRUEVIEW_UNIQUE_COOKIES"
	//   "METRIC_TEA_TRUEVIEW_UNIQUE_PEOPLE"
	//   "METRIC_TOTAL_CONVERSIONS"
	//   "METRIC_TOTAL_MEDIA_COST_ADVERTISER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPAPC_ADVERTISER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPAPC_PARTNER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPAPC_USD"
	//   "METRIC_TOTAL_MEDIA_COST_ECPAPV_ADVERTISER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPAPV_PARTNER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPAPV_USD"
	//   "METRIC_TOTAL_MEDIA_COST_ECPA_ADVERTISER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPA_PARTNER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPA_USD"
	//   "METRIC_TOTAL_MEDIA_COST_ECPCV_ADVERTISER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPCV_PARTNER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPCV_USD"
	//   "METRIC_TOTAL_MEDIA_COST_ECPC_ADVERTISER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPC_PARTNER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPC_USD"
	//   "METRIC_TOTAL_MEDIA_COST_ECPM_ADVERTISER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPM_PARTNER"
	//   "METRIC_TOTAL_MEDIA_COST_ECPM_USD"
	//   "METRIC_TOTAL_MEDIA_COST_PARTNER"
	//   "METRIC_TOTAL_MEDIA_COST_USD"
	//   "METRIC_TOTAL_MEDIA_COST_VIEWABLE_ECPM_ADVERTISER"
	//   "METRIC_TOTAL_MEDIA_COST_VIEWABLE_ECPM_PARTNER"
	//   "METRIC_TOTAL_MEDIA_COST_VIEWABLE_ECPM_USD"
	//   "METRIC_TRUEVIEW_AVERAGE_CPE_ADVERTISER"
	//   "METRIC_TRUEVIEW_AVERAGE_CPE_PARTNER"
	//   "METRIC_TRUEVIEW_AVERAGE_CPE_USD"
	//   "METRIC_TRUEVIEW_CONVERSION_COST_MANY_PER_VIEW_ADVERTISER"
	//   "METRIC_TRUEVIEW_CONVERSION_COST_MANY_PER_VIEW_PARTNER"
	//   "METRIC_TRUEVIEW_CONVERSION_COST_MANY_PER_VIEW_USD"
	//   "METRIC_TRUEVIEW_CONVERSION_COST_ONE_PER_VIEW_ADVERTISER"
	//   "METRIC_TRUEVIEW_CONVERSION_COST_ONE_PER_VIEW_PARTNER"
	//   "METRIC_TRUEVIEW_CONVERSION_COST_ONE_PER_VIEW_USD"
	//   "METRIC_TRUEVIEW_CONVERSION_MANY_PER_VIEW"
	//   "METRIC_TRUEVIEW_CONVERSION_ONE_PER_VIEW"
	//   "METRIC_TRUEVIEW_CONVERSION_RATE_ONE_PER_VIEW"
	//   "METRIC_TRUEVIEW_CONVERSION_VALUE_MANY_PER_VIEW_ADVERTISER"
	//   "METRIC_TRUEVIEW_CONVERSION_VALUE_MANY_PER_VIEW_PARTNER"
	//   "METRIC_TRUEVIEW_CONVERSION_VALUE_MANY_PER_VIEW_USD"
	//   "METRIC_TRUEVIEW_CONVERSION_VALUE_ONE_PER_VIEW_ADVERTISER"
	//   "METRIC_TRUEVIEW_CONVERSION_VALUE_ONE_PER_VIEW_PARTNER"
	//   "METRIC_TRUEVIEW_CONVERSION_VALUE_ONE_PER_VIEW_USD"
	//   "METRIC_TRUEVIEW_COST_CONVERSION_MANY_PER_VIEW_RATIO"
	//   "METRIC_TRUEVIEW_COST_CONVERSION_ONE_PER_VIEW_RATIO"
	//   "METRIC_TRUEVIEW_CPV_ADVERTISER"
	//   "METRIC_TRUEVIEW_CPV_PARTNER"
	//   "METRIC_TRUEVIEW_CPV_USD"
	//   "METRIC_TRUEVIEW_EARNED_LIKES"
	//   "METRIC_TRUEVIEW_EARNED_PLAYLIST_ADDITIONS"
	//   "METRIC_TRUEVIEW_EARNED_SHARES"
	//   "METRIC_TRUEVIEW_EARNED_SUBSCRIBERS"
	//   "METRIC_TRUEVIEW_EARNED_VIEWS"
	//   "METRIC_TRUEVIEW_ENGAGEMENTS"
	//   "METRIC_TRUEVIEW_ENGAGEMENT_RATE"
	//   "METRIC_TRUEVIEW_IMPRESSION_SHARE"
	//   "METRIC_TRUEVIEW_LOST_IS_BUDGET"
	//   "METRIC_TRUEVIEW_LOST_IS_RANK"
	//   "METRIC_TRUEVIEW_TOTAL_CONVERSION_VALUE"
	//   "METRIC_TRUEVIEW_TOTAL_CONVERSION_VALUES_ADVERTISER"
	//   "METRIC_TRUEVIEW_TOTAL_CONVERSION_VALUES_PARTNER"
	//   "METRIC_TRUEVIEW_TOTAL_CONVERSION_VALUES_USD"
	//   "METRIC_TRUEVIEW_UNIQUE_VIEWERS"
	//   "METRIC_TRUEVIEW_VALUE_CONVERSION_MANY_PER_VIEW_RATIO"
	//   "METRIC_TRUEVIEW_VALUE_CONVERSION_ONE_PER_VIEW_RATIO"
	//   "METRIC_TRUEVIEW_VIEWS"
	//   "METRIC_TRUEVIEW_VIEW_RATE"
	//   "METRIC_TRUEVIEW_VIEW_THROUGH_CONVERSION"
	//   "METRIC_UNIQUE_VISITORS_COOKIES"
	//   "METRIC_UNKNOWN"
	//   "METRIC_VIDEO_COMPANION_CLICKS"
	//   "METRIC_VIDEO_COMPANION_IMPRESSIONS"
	//   "METRIC_VIDEO_COMPLETION_RATE"
	//   "METRIC_VIEWABLE_BID_REQUESTS"
	Metrics []string `json:"metrics,omitempty"`

	// Type: Report type.
	//
	// Possible values:
	//   "TYPE_ACTIVE_GRP"
	//   "TYPE_AUDIENCE_COMPOSITION"
	//   "TYPE_AUDIENCE_PERFORMANCE"
	//   "TYPE_CLIENT_SAFE"
	//   "TYPE_COMSCORE_VCE"
	//   "TYPE_CROSS_FEE"
	//   "TYPE_CROSS_PARTNER"
	//   "TYPE_CROSS_PARTNER_THIRD_PARTY_DATA_PROVIDER"
	//   "TYPE_ESTIMATED_CONVERSION"
	//   "TYPE_FEE"
	//   "TYPE_GENERAL"
	//   "TYPE_INVENTORY_AVAILABILITY"
	//   "TYPE_KEYWORD"
	//   "TYPE_LINEAR_TV_SEARCH_LIFT"
	//   "TYPE_NIELSEN_AUDIENCE_PROFILE"
	//   "TYPE_NIELSEN_DAILY_REACH_BUILD"
	//   "TYPE_NIELSEN_ONLINE_GLOBAL_MARKET"
	//   "TYPE_NIELSEN_SITE"
	//   "TYPE_NOT_SUPPORTED"
	//   "TYPE_ORDER_ID"
	//   "TYPE_PAGE_CATEGORY"
	//   "TYPE_PETRA_NIELSEN_AUDIENCE_PROFILE"
	//   "TYPE_PETRA_NIELSEN_DAILY_REACH_BUILD"
	//   "TYPE_PETRA_NIELSEN_ONLINE_GLOBAL_MARKET"
	//   "TYPE_PIXEL_LOAD"
	//   "TYPE_REACH_AND_FREQUENCY"
	//   "TYPE_REACH_AUDIENCE"
	//   "TYPE_THIRD_PARTY_DATA_PROVIDER"
	//   "TYPE_TRUEVIEW"
	//   "TYPE_TRUEVIEW_IAR"
	//   "TYPE_VERIFICATION"
	//   "TYPE_YOUTUBE_VERTICAL"
	Type string `json:"type,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 *Parameters) MarshalJSON() ([]byte, error) {
	type NoMethod Parameters
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// Query: Represents a query.
type Query struct {
	// Kind: Identifies what kind of resource this is. Value: the fixed
	// string "doubleclickbidmanager#query".
	Kind string `json:"kind,omitempty"`

	// Metadata: Query metadata.
	Metadata *QueryMetadata `json:"metadata,omitempty"`

	// Params: Query parameters.
	Params *Parameters `json:"params,omitempty"`

	// QueryId: Query ID.
	QueryId int64 `json:"queryId,omitempty,string"`

	// ReportDataEndTimeMs: The ending time for the data that is shown in
	// the report. Note, reportDataEndTimeMs is required if
	// metadata.dataRange is CUSTOM_DATES and ignored otherwise.
	ReportDataEndTimeMs int64 `json:"reportDataEndTimeMs,omitempty,string"`

	// ReportDataStartTimeMs: The starting time for the data that is shown
	// in the report. Note, reportDataStartTimeMs is required if
	// metadata.dataRange is CUSTOM_DATES and ignored otherwise.
	ReportDataStartTimeMs int64 `json:"reportDataStartTimeMs,omitempty,string"`

	// Schedule: Information on how often and when to run a query.
	Schedule *QuerySchedule `json:"schedule,omitempty"`

	// TimezoneCode: Canonical timezone code for report data time. Defaults
	// to America/New_York.
	TimezoneCode string `json:"timezoneCode,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "Kind") 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. "Kind") 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 *Query) MarshalJSON() ([]byte, error) {
	type NoMethod Query
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QueryMetadata: Query metadata.
type QueryMetadata struct {
	// DataRange: Range of report data.
	//
	// Possible values:
	//   "ALL_TIME"
	//   "CURRENT_DAY"
	//   "CUSTOM_DATES"
	//   "LAST_14_DAYS"
	//   "LAST_30_DAYS"
	//   "LAST_365_DAYS"
	//   "LAST_7_DAYS"
	//   "LAST_90_DAYS"
	//   "MONTH_TO_DATE"
	//   "PREVIOUS_DAY"
	//   "PREVIOUS_HALF_MONTH"
	//   "PREVIOUS_MONTH"
	//   "PREVIOUS_QUARTER"
	//   "PREVIOUS_WEEK"
	//   "PREVIOUS_YEAR"
	//   "QUARTER_TO_DATE"
	//   "TYPE_NOT_SUPPORTED"
	//   "WEEK_TO_DATE"
	//   "YEAR_TO_DATE"
	DataRange string `json:"dataRange,omitempty"`

	// Format: Format of the generated report.
	//
	// Possible values:
	//   "CSV"
	//   "EXCEL_CSV"
	//   "XLSX"
	Format string `json:"format,omitempty"`

	// GoogleCloudStoragePathForLatestReport: The path to the location in
	// Google Cloud Storage where the latest report is stored.
	GoogleCloudStoragePathForLatestReport string `json:"googleCloudStoragePathForLatestReport,omitempty"`

	// GoogleDrivePathForLatestReport: The path in Google Drive for the
	// latest report.
	GoogleDrivePathForLatestReport string `json:"googleDrivePathForLatestReport,omitempty"`

	// LatestReportRunTimeMs: The time when the latest report started to
	// run.
	LatestReportRunTimeMs int64 `json:"latestReportRunTimeMs,omitempty,string"`

	// Locale: Locale of the generated reports. Valid values are cs CZECH de
	// GERMAN en ENGLISH es SPANISH fr FRENCH it ITALIAN ja JAPANESE ko
	// KOREAN pl POLISH pt-BR BRAZILIAN_PORTUGUESE ru RUSSIAN tr TURKISH uk
	// UKRAINIAN zh-CN CHINA_CHINESE zh-TW TAIWAN_CHINESE
	//
	// An locale string not in the list above will generate reports in
	// English.
	Locale string `json:"locale,omitempty"`

	// ReportCount: Number of reports that have been generated for the
	// query.
	ReportCount int64 `json:"reportCount,omitempty"`

	// Running: Whether the latest report is currently running.
	Running bool `json:"running,omitempty"`

	// SendNotification: Whether to send an email notification when a report
	// is ready. Default to false.
	SendNotification bool `json:"sendNotification,omitempty"`

	// ShareEmailAddress: List of email addresses which are sent email
	// notifications when the report is finished. Separate from
	// sendNotification.
	ShareEmailAddress []string `json:"shareEmailAddress,omitempty"`

	// Title: Query title. It is used to name the reports generated from
	// this query.
	Title string `json:"title,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataRange") 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. "DataRange") 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 *QueryMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod QueryMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// QuerySchedule: Information on how frequently and when to run a query.
type QuerySchedule struct {
	// EndTimeMs: Datetime to periodically run the query until.
	EndTimeMs int64 `json:"endTimeMs,omitempty,string"`

	// Frequency: How often the query is run.
	//
	// Possible values:
	//   "DAILY"
	//   "MONTHLY"
	//   "ONE_TIME"
	//   "QUARTERLY"
	//   "SEMI_MONTHLY"
	//   "WEEKLY"
	Frequency string `json:"frequency,omitempty"`

	// NextRunMinuteOfDay: Time of day at which a new report will be
	// generated, represented as minutes past midnight. Range is 0 to 1439.
	// Only applies to scheduled reports.
	NextRunMinuteOfDay int64 `json:"nextRunMinuteOfDay,omitempty"`

	// NextRunTimezoneCode: Canonical timezone code for report generation
	// time. Defaults to America/New_York.
	NextRunTimezoneCode string `json:"nextRunTimezoneCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "EndTimeMs") 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. "EndTimeMs") 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 *QuerySchedule) MarshalJSON() ([]byte, error) {
	type NoMethod QuerySchedule
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// Report: Represents a report.
type Report struct {
	// Key: Key used to identify a report.
	Key *ReportKey `json:"key,omitempty"`

	// Metadata: Report metadata.
	Metadata *ReportMetadata `json:"metadata,omitempty"`

	// Params: Report parameters.
	Params *Parameters `json:"params,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Key") 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. "Key") 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)
}

// ReportFailure: An explanation of a report failure.
type ReportFailure struct {
	// ErrorCode: Error code that shows why the report was not created.
	//
	// Possible values:
	//   "AUTHENTICATION_ERROR"
	//   "DEPRECATED_REPORTING_INVALID_QUERY"
	//   "REPORTING_BUCKET_NOT_FOUND"
	//   "REPORTING_CREATE_BUCKET_FAILED"
	//   "REPORTING_DELETE_BUCKET_FAILED"
	//   "REPORTING_FATAL_ERROR"
	//   "REPORTING_ILLEGAL_FILENAME"
	//   "REPORTING_IMCOMPATIBLE_METRICS"
	//   "REPORTING_INVALID_QUERY_MISSING_PARTNER_AND_ADVERTISER_FILTERS"
	//   "REPORTING_INVALID_QUERY_TITLE_MISSING"
	//   "REPORTING_INVALID_QUERY_TOO_MANY_UNFILTERED_LARGE_GROUP_BYS"
	//   "REPORTING_QUERY_NOT_FOUND"
	//   "REPORTING_TRANSIENT_ERROR"
	//   "REPORTING_UPDATE_BUCKET_PERMISSION_FAILED"
	//   "REPORTING_WRITE_BUCKET_OBJECT_FAILED"
	//   "SERVER_ERROR"
	//   "UNAUTHORIZED_API_ACCESS"
	//   "VALIDATION_ERROR"
	ErrorCode string `json:"errorCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ErrorCode") 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. "ErrorCode") 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 *ReportFailure) MarshalJSON() ([]byte, error) {
	type NoMethod ReportFailure
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ReportKey: Key used to identify a report.
type ReportKey struct {
	// QueryId: Query ID.
	QueryId int64 `json:"queryId,omitempty,string"`

	// ReportId: Report ID.
	ReportId int64 `json:"reportId,omitempty,string"`

	// ForceSendFields is a list of field names (e.g. "QueryId") 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. "QueryId") 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 *ReportKey) MarshalJSON() ([]byte, error) {
	type NoMethod ReportKey
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ReportMetadata: Report metadata.
type ReportMetadata struct {
	// GoogleCloudStoragePath: The path to the location in Google Cloud
	// Storage where the report is stored.
	GoogleCloudStoragePath string `json:"googleCloudStoragePath,omitempty"`

	// ReportDataEndTimeMs: The ending time for the data that is shown in
	// the report.
	ReportDataEndTimeMs int64 `json:"reportDataEndTimeMs,omitempty,string"`

	// ReportDataStartTimeMs: The starting time for the data that is shown
	// in the report.
	ReportDataStartTimeMs int64 `json:"reportDataStartTimeMs,omitempty,string"`

	// Status: Report status.
	Status *ReportStatus `json:"status,omitempty"`

	// ForceSendFields is a list of field names (e.g.
	// "GoogleCloudStoragePath") 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. "GoogleCloudStoragePath")
	// 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 *ReportMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod ReportMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// ReportStatus: Report status.
type ReportStatus struct {
	// Failure: If the report failed, this records the cause.
	Failure *ReportFailure `json:"failure,omitempty"`

	// FinishTimeMs: The time when this report either completed successfully
	// or failed.
	FinishTimeMs int64 `json:"finishTimeMs,omitempty,string"`

	// Format: The file type of the report.
	//
	// Possible values:
	//   "CSV"
	//   "EXCEL_CSV"
	//   "XLSX"
	Format string `json:"format,omitempty"`

	// State: The state of the report.
	//
	// Possible values:
	//   "DONE"
	//   "FAILED"
	//   "RUNNING"
	State string `json:"state,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Failure") 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. "Failure") 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 *ReportStatus) MarshalJSON() ([]byte, error) {
	type NoMethod ReportStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RowStatus: Represents the upload status of a row in the request.
type RowStatus struct {
	// Changed: Whether the stored entity is changed as a result of upload.
	Changed bool `json:"changed,omitempty"`

	// EntityId: Entity Id.
	EntityId int64 `json:"entityId,omitempty,string"`

	// EntityName: Entity name.
	EntityName string `json:"entityName,omitempty"`

	// Errors: Reasons why the entity can't be uploaded.
	Errors []string `json:"errors,omitempty"`

	// Persisted: Whether the entity is persisted.
	Persisted bool `json:"persisted,omitempty"`

	// RowNumber: Row number.
	RowNumber int64 `json:"rowNumber,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Changed") 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. "Changed") 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 *RowStatus) MarshalJSON() ([]byte, error) {
	type NoMethod RowStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// RunQueryRequest: Request to run a stored query to generate a report.
type RunQueryRequest struct {
	// DataRange: Report data range used to generate the report.
	//
	// Possible values:
	//   "ALL_TIME"
	//   "CURRENT_DAY"
	//   "CUSTOM_DATES"
	//   "LAST_14_DAYS"
	//   "LAST_30_DAYS"
	//   "LAST_365_DAYS"
	//   "LAST_7_DAYS"
	//   "LAST_90_DAYS"
	//   "MONTH_TO_DATE"
	//   "PREVIOUS_DAY"
	//   "PREVIOUS_HALF_MONTH"
	//   "PREVIOUS_MONTH"
	//   "PREVIOUS_QUARTER"
	//   "PREVIOUS_WEEK"
	//   "PREVIOUS_YEAR"
	//   "QUARTER_TO_DATE"
	//   "TYPE_NOT_SUPPORTED"
	//   "WEEK_TO_DATE"
	//   "YEAR_TO_DATE"
	DataRange string `json:"dataRange,omitempty"`

	// ReportDataEndTimeMs: The ending time for the data that is shown in
	// the report. Note, reportDataEndTimeMs is required if dataRange is
	// CUSTOM_DATES and ignored otherwise.
	ReportDataEndTimeMs int64 `json:"reportDataEndTimeMs,omitempty,string"`

	// ReportDataStartTimeMs: The starting time for the data that is shown
	// in the report. Note, reportDataStartTimeMs is required if dataRange
	// is CUSTOM_DATES and ignored otherwise.
	ReportDataStartTimeMs int64 `json:"reportDataStartTimeMs,omitempty,string"`

	// TimezoneCode: Canonical timezone code for report data time. Defaults
	// to America/New_York.
	TimezoneCode string `json:"timezoneCode,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DataRange") 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. "DataRange") 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 *RunQueryRequest) MarshalJSON() ([]byte, error) {
	type NoMethod RunQueryRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// UploadLineItemsRequest: Request to upload line items.
type UploadLineItemsRequest struct {
	// DryRun: Set to true to get upload status without actually persisting
	// the line items.
	DryRun bool `json:"dryRun,omitempty"`

	// Format: Format the line items are in. Default to CSV.
	//
	// Possible values:
	//   "CSV"
	Format string `json:"format,omitempty"`

	// LineItems: Line items in CSV to upload. Refer to  Entity Write File
	// Format for more information on file format.
	LineItems string `json:"lineItems,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DryRun") 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. "DryRun") 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 *UploadLineItemsRequest) MarshalJSON() ([]byte, error) {
	type NoMethod UploadLineItemsRequest
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// UploadLineItemsResponse: Upload line items response.
type UploadLineItemsResponse struct {
	// UploadStatus: Status of upload.
	UploadStatus *UploadStatus `json:"uploadStatus,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "UploadStatus") 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. "UploadStatus") 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 *UploadLineItemsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod UploadLineItemsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// UploadStatus: Represents the status of upload.
type UploadStatus struct {
	// Errors: Reasons why upload can't be completed.
	Errors []string `json:"errors,omitempty"`

	// RowStatus: Per-row upload status.
	RowStatus []*RowStatus `json:"rowStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "Errors") 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. "Errors") 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 *UploadStatus) MarshalJSON() ([]byte, error) {
	type NoMethod UploadStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// method id "doubleclickbidmanager.lineitems.downloadlineitems":

type LineitemsDownloadlineitemsCall struct {
	s                        *Service
	downloadlineitemsrequest *DownloadLineItemsRequest
	urlParams_               gensupport.URLParams
	ctx_                     context.Context
	header_                  http.Header
}

// Downloadlineitems: Retrieves line items in CSV format. TrueView line
// items are not supported.
func (r *LineitemsService) Downloadlineitems(downloadlineitemsrequest *DownloadLineItemsRequest) *LineitemsDownloadlineitemsCall {
	c := &LineitemsDownloadlineitemsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.downloadlineitemsrequest = downloadlineitemsrequest
	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 *LineitemsDownloadlineitemsCall) Fields(s ...googleapi.Field) *LineitemsDownloadlineitemsCall {
	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 *LineitemsDownloadlineitemsCall) Context(ctx context.Context) *LineitemsDownloadlineitemsCall {
	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 *LineitemsDownloadlineitemsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *LineitemsDownloadlineitemsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	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.downloadlineitemsrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "lineitems/downloadlineitems")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("POST", urls, body)
	req.Header = reqHeaders
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.lineitems.downloadlineitems" call.
// Exactly one of *DownloadLineItemsResponse or error will be non-nil.
// Any non-2xx status code is an error. Response headers are in either
// *DownloadLineItemsResponse.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 *LineitemsDownloadlineitemsCall) Do(opts ...googleapi.CallOption) (*DownloadLineItemsResponse, 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 := &DownloadLineItemsResponse{
		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": "Retrieves line items in CSV format. TrueView line items are not supported.",
	//   "httpMethod": "POST",
	//   "id": "doubleclickbidmanager.lineitems.downloadlineitems",
	//   "path": "lineitems/downloadlineitems",
	//   "request": {
	//     "$ref": "DownloadLineItemsRequest"
	//   },
	//   "response": {
	//     "$ref": "DownloadLineItemsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}

// method id "doubleclickbidmanager.lineitems.uploadlineitems":

type LineitemsUploadlineitemsCall struct {
	s                      *Service
	uploadlineitemsrequest *UploadLineItemsRequest
	urlParams_             gensupport.URLParams
	ctx_                   context.Context
	header_                http.Header
}

// Uploadlineitems: Uploads line items in CSV format. TrueView line
// items are not supported.
func (r *LineitemsService) Uploadlineitems(uploadlineitemsrequest *UploadLineItemsRequest) *LineitemsUploadlineitemsCall {
	c := &LineitemsUploadlineitemsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.uploadlineitemsrequest = uploadlineitemsrequest
	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 *LineitemsUploadlineitemsCall) Fields(s ...googleapi.Field) *LineitemsUploadlineitemsCall {
	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 *LineitemsUploadlineitemsCall) Context(ctx context.Context) *LineitemsUploadlineitemsCall {
	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 *LineitemsUploadlineitemsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *LineitemsUploadlineitemsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	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.uploadlineitemsrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "lineitems/uploadlineitems")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("POST", urls, body)
	req.Header = reqHeaders
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.lineitems.uploadlineitems" call.
// Exactly one of *UploadLineItemsResponse or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *UploadLineItemsResponse.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 *LineitemsUploadlineitemsCall) Do(opts ...googleapi.CallOption) (*UploadLineItemsResponse, 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 := &UploadLineItemsResponse{
		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": "Uploads line items in CSV format. TrueView line items are not supported.",
	//   "httpMethod": "POST",
	//   "id": "doubleclickbidmanager.lineitems.uploadlineitems",
	//   "path": "lineitems/uploadlineitems",
	//   "request": {
	//     "$ref": "UploadLineItemsRequest"
	//   },
	//   "response": {
	//     "$ref": "UploadLineItemsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}

// method id "doubleclickbidmanager.queries.createquery":

type QueriesCreatequeryCall struct {
	s          *Service
	query      *Query
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Createquery: Creates a query.
func (r *QueriesService) Createquery(query *Query) *QueriesCreatequeryCall {
	c := &QueriesCreatequeryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.query = query
	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 *QueriesCreatequeryCall) Fields(s ...googleapi.Field) *QueriesCreatequeryCall {
	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 *QueriesCreatequeryCall) Context(ctx context.Context) *QueriesCreatequeryCall {
	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 *QueriesCreatequeryCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *QueriesCreatequeryCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	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.query)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "query")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("POST", urls, body)
	req.Header = reqHeaders
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.queries.createquery" call.
// Exactly one of *Query or error will be non-nil. Any non-2xx status
// code is an error. Response headers are in either
// *Query.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 *QueriesCreatequeryCall) Do(opts ...googleapi.CallOption) (*Query, 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 := &Query{
		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": "Creates a query.",
	//   "httpMethod": "POST",
	//   "id": "doubleclickbidmanager.queries.createquery",
	//   "path": "query",
	//   "request": {
	//     "$ref": "Query"
	//   },
	//   "response": {
	//     "$ref": "Query"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}

// method id "doubleclickbidmanager.queries.deletequery":

type QueriesDeletequeryCall struct {
	s          *Service
	queryId    int64
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Deletequery: Deletes a stored query as well as the associated stored
// reports.
func (r *QueriesService) Deletequery(queryId int64) *QueriesDeletequeryCall {
	c := &QueriesDeletequeryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.queryId = queryId
	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 *QueriesDeletequeryCall) Fields(s ...googleapi.Field) *QueriesDeletequeryCall {
	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 *QueriesDeletequeryCall) Context(ctx context.Context) *QueriesDeletequeryCall {
	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 *QueriesDeletequeryCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *QueriesDeletequeryCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "query/{queryId}")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("DELETE", urls, body)
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"queryId": strconv.FormatInt(c.queryId, 10),
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.queries.deletequery" call.
func (c *QueriesDeletequeryCall) Do(opts ...googleapi.CallOption) error {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if err != nil {
		return err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return err
	}
	return nil
	// {
	//   "description": "Deletes a stored query as well as the associated stored reports.",
	//   "httpMethod": "DELETE",
	//   "id": "doubleclickbidmanager.queries.deletequery",
	//   "parameterOrder": [
	//     "queryId"
	//   ],
	//   "parameters": {
	//     "queryId": {
	//       "description": "Query ID to delete.",
	//       "format": "int64",
	//       "location": "path",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "query/{queryId}",
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}

// method id "doubleclickbidmanager.queries.getquery":

type QueriesGetqueryCall struct {
	s            *Service
	queryId      int64
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Getquery: Retrieves a stored query.
func (r *QueriesService) Getquery(queryId int64) *QueriesGetqueryCall {
	c := &QueriesGetqueryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.queryId = queryId
	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 *QueriesGetqueryCall) Fields(s ...googleapi.Field) *QueriesGetqueryCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *QueriesGetqueryCall) IfNoneMatch(entityTag string) *QueriesGetqueryCall {
	c.ifNoneMatch_ = entityTag
	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 *QueriesGetqueryCall) Context(ctx context.Context) *QueriesGetqueryCall {
	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 *QueriesGetqueryCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *QueriesGetqueryCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "query/{queryId}")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("GET", urls, body)
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"queryId": strconv.FormatInt(c.queryId, 10),
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.queries.getquery" call.
// Exactly one of *Query or error will be non-nil. Any non-2xx status
// code is an error. Response headers are in either
// *Query.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 *QueriesGetqueryCall) Do(opts ...googleapi.CallOption) (*Query, 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 := &Query{
		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": "Retrieves a stored query.",
	//   "httpMethod": "GET",
	//   "id": "doubleclickbidmanager.queries.getquery",
	//   "parameterOrder": [
	//     "queryId"
	//   ],
	//   "parameters": {
	//     "queryId": {
	//       "description": "Query ID to retrieve.",
	//       "format": "int64",
	//       "location": "path",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "query/{queryId}",
	//   "response": {
	//     "$ref": "Query"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}

// method id "doubleclickbidmanager.queries.listqueries":

type QueriesListqueriesCall struct {
	s            *Service
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Listqueries: Retrieves stored queries.
func (r *QueriesService) Listqueries() *QueriesListqueriesCall {
	c := &QueriesListqueriesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	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 *QueriesListqueriesCall) Fields(s ...googleapi.Field) *QueriesListqueriesCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *QueriesListqueriesCall) IfNoneMatch(entityTag string) *QueriesListqueriesCall {
	c.ifNoneMatch_ = entityTag
	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 *QueriesListqueriesCall) Context(ctx context.Context) *QueriesListqueriesCall {
	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 *QueriesListqueriesCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *QueriesListqueriesCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "queries")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("GET", urls, body)
	req.Header = reqHeaders
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.queries.listqueries" call.
// Exactly one of *ListQueriesResponse or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *ListQueriesResponse.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 *QueriesListqueriesCall) Do(opts ...googleapi.CallOption) (*ListQueriesResponse, 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 := &ListQueriesResponse{
		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": "Retrieves stored queries.",
	//   "httpMethod": "GET",
	//   "id": "doubleclickbidmanager.queries.listqueries",
	//   "path": "queries",
	//   "response": {
	//     "$ref": "ListQueriesResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}

// method id "doubleclickbidmanager.queries.runquery":

type QueriesRunqueryCall struct {
	s               *Service
	queryId         int64
	runqueryrequest *RunQueryRequest
	urlParams_      gensupport.URLParams
	ctx_            context.Context
	header_         http.Header
}

// Runquery: Runs a stored query to generate a report.
func (r *QueriesService) Runquery(queryId int64, runqueryrequest *RunQueryRequest) *QueriesRunqueryCall {
	c := &QueriesRunqueryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.queryId = queryId
	c.runqueryrequest = runqueryrequest
	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 *QueriesRunqueryCall) Fields(s ...googleapi.Field) *QueriesRunqueryCall {
	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 *QueriesRunqueryCall) Context(ctx context.Context) *QueriesRunqueryCall {
	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 *QueriesRunqueryCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *QueriesRunqueryCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	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.runqueryrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "query/{queryId}")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("POST", urls, body)
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"queryId": strconv.FormatInt(c.queryId, 10),
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.queries.runquery" call.
func (c *QueriesRunqueryCall) Do(opts ...googleapi.CallOption) error {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if err != nil {
		return err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return err
	}
	return nil
	// {
	//   "description": "Runs a stored query to generate a report.",
	//   "httpMethod": "POST",
	//   "id": "doubleclickbidmanager.queries.runquery",
	//   "parameterOrder": [
	//     "queryId"
	//   ],
	//   "parameters": {
	//     "queryId": {
	//       "description": "Query ID to run.",
	//       "format": "int64",
	//       "location": "path",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "query/{queryId}",
	//   "request": {
	//     "$ref": "RunQueryRequest"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}

// method id "doubleclickbidmanager.reports.listreports":

type ReportsListreportsCall struct {
	s            *Service
	queryId      int64
	urlParams_   gensupport.URLParams
	ifNoneMatch_ string
	ctx_         context.Context
	header_      http.Header
}

// Listreports: Retrieves stored reports.
func (r *ReportsService) Listreports(queryId int64) *ReportsListreportsCall {
	c := &ReportsListreportsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.queryId = queryId
	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 *ReportsListreportsCall) Fields(s ...googleapi.Field) *ReportsListreportsCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the optional parameter which makes the operation
// fail if the object's ETag matches the given value. This is useful for
// getting updates only after the object has changed since the last
// request. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *ReportsListreportsCall) IfNoneMatch(entityTag string) *ReportsListreportsCall {
	c.ifNoneMatch_ = entityTag
	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 *ReportsListreportsCall) Context(ctx context.Context) *ReportsListreportsCall {
	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 *ReportsListreportsCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *ReportsListreportsCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	if c.ifNoneMatch_ != "" {
		reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
	}
	var body io.Reader = nil
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "queries/{queryId}/reports")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("GET", urls, body)
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"queryId": strconv.FormatInt(c.queryId, 10),
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.reports.listreports" call.
// Exactly one of *ListReportsResponse or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *ListReportsResponse.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 *ReportsListreportsCall) Do(opts ...googleapi.CallOption) (*ListReportsResponse, 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 := &ListReportsResponse{
		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": "Retrieves stored reports.",
	//   "httpMethod": "GET",
	//   "id": "doubleclickbidmanager.reports.listreports",
	//   "parameterOrder": [
	//     "queryId"
	//   ],
	//   "parameters": {
	//     "queryId": {
	//       "description": "Query ID with which the reports are associated.",
	//       "format": "int64",
	//       "location": "path",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "queries/{queryId}/reports",
	//   "response": {
	//     "$ref": "ListReportsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}

// method id "doubleclickbidmanager.sdf.download":

type SdfDownloadCall struct {
	s               *Service
	downloadrequest *DownloadRequest
	urlParams_      gensupport.URLParams
	ctx_            context.Context
	header_         http.Header
}

// Download: Retrieves entities in SDF format.
func (r *SdfService) Download(downloadrequest *DownloadRequest) *SdfDownloadCall {
	c := &SdfDownloadCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.downloadrequest = downloadrequest
	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 *SdfDownloadCall) Fields(s ...googleapi.Field) *SdfDownloadCall {
	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 *SdfDownloadCall) Context(ctx context.Context) *SdfDownloadCall {
	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 *SdfDownloadCall) Header() http.Header {
	if c.header_ == nil {
		c.header_ = make(http.Header)
	}
	return c.header_
}

func (c *SdfDownloadCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	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.downloadrequest)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	urls := googleapi.ResolveRelative(c.s.BasePath, "sdf/download")
	urls += "?" + c.urlParams_.Encode()
	req, _ := http.NewRequest("POST", urls, body)
	req.Header = reqHeaders
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "doubleclickbidmanager.sdf.download" call.
// Exactly one of *DownloadResponse or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *DownloadResponse.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 *SdfDownloadCall) Do(opts ...googleapi.CallOption) (*DownloadResponse, 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 := &DownloadResponse{
		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": "Retrieves entities in SDF format.",
	//   "httpMethod": "POST",
	//   "id": "doubleclickbidmanager.sdf.download",
	//   "path": "sdf/download",
	//   "request": {
	//     "$ref": "DownloadRequest"
	//   },
	//   "response": {
	//     "$ref": "DownloadResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/doubleclickbidmanager"
	//   ]
	// }

}